编程思想

scala 编程思想 --数据

我怕爱的太早我们不能终老 提交于 2020-02-05 10:39:12
package com.test2 import scala.util.Try object Zipper { def main(args: Array[String]): Unit = { //zip进行数据压缩 val left = Vector("a","b","c","d") val right = Vector("q","r","s","t") println(left.zip(right)) println(left.zip(Range(0,4))) println(left.zipWithIndex) //zipMap case class Person(name:String,ID:Int) val names = Vector("Bob","Jill","Jim") val IDs = Vector(1731,9234,8378) names.zip(IDs).map{case(n,id)=>Person(n,id)} //scala中case的用法 val bools = List(true,false) for(bool<-bools){ bool match { case true=>println("heads") case false=>println("tails") case _=>println("somthing other than heads

Java编程思想学习笔记(13)

房东的猫 提交于 2020-01-29 03:58:27
Java编程思想学习笔记(13) 字符串 不可变String String对象是不可变的。查看JDK文档你就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。而最初的 String对象则丝亳未动。 public class Immutable { public static String upcase(String s) { return s.toUpperCase(); } public static void main(String[] args) { String q = "howdy"; print(q); // howdy String qq = upcase(q); print(qq); // HOWDY print(q); // howdy } } 当把q传给upcaseo方法时,实际传递的是引用的一个拷贝。其实,每当把String对象作为方法 的参数时,都会复制一份引用,而该引用所指的对象其实一直待在单一的物理位置上,从未动过。 回到upcaseO的定义,传人其中的引用有了名字S,只有upcase()运行的时候,局部引用S才存在。一且upcase()运行结束,s就消失了。当然了,upcase()的返回值,其实只是最终结果的引用。这足以说明

JAVA编程思想——分析阅读

点点圈 提交于 2020-01-21 12:37:51
需要源码、JDK1.6 、编码风格参考阿里java规约 7/12开始 有点意识到自己喜欢理论大而泛的模糊知识的学习,而不喜欢实践和细节的打磨,是因为粗心浮躁导致的么? cron表达式使用 设计能力、领域建模能力 其他: 海明威的硬币:老人与海 工具准备: java编程思想电子版 别人整理的思维导图 前言 适用范围:Java SE5/6 版本。 Java的设计目标是:为程序员减少复杂性,缩短代码的开发时间,跨平台复用。 学习方法:一模式或一节点就进入一练习,思维与实践并行,现学现卖。 每当我认为我已经理解了并发编程时,又会有新的奇山峻岭等待这我去征服。——作者都花了好几个月写并发这一篇章并发出这样的感慨,我们又有什么理由妄自菲薄呢。 绪论 学习语言时:需要在头脑中创建一个模型,以加强对这种语言的深入理解;如果遇到了疑问,就将它反馈到头脑的模型中并推断出答案。 疑问:模型是什么意思?java略图?宏语言是什么? A:模型指的是思维导图。有个一整个的概念。 按照人类学习语言的方式。? 一、对象导论 1 知识 人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。类型即指所抽象的是什么,也可以说用的是什么类型的语言。Java,C ,汇编,Python等。其中想C或者汇编要基于计算机的结构来求解问题,面向过程;而Java 等面向对象的语言是基于问题来求解,面向对象。 面向对象的5个基本特性

Java编程思想学习笔记(9)

◇◆丶佛笑我妖孽 提交于 2020-01-19 03:49:55
Java编程思想学习笔记(9) 抽象类与抽象方法 首先先看例子,之前的一系列乐器的例子,把基类Instrument声明为抽象类。 UML图: abstract class Instrument { private int i; // Storage allocated for each //抽象方法,不能有“{}” public abstract void play(Note n); public String what() { return "Instrument"; } public abstract void adjust(); } public class Brass extends Instrument{ public void play(Note n) { print("Brass.play() " + n); } public void adjust() { print("Brass.adjust()"); } } public class Percussion extends Instrument{ public void play(Note n) { print("Percussion.play() " + n); } public String what() { return "Percussion"; } public void adjust() {} }

PHP编程思想

若如初见. 提交于 2020-01-18 22:20:03
1、类的成员变量都设置为 private,不要设置为 public,需要访问时尽量用 get 和 set 方法去访问变量值; 2、Yii 框架的事件、行为多用,降低耦合性; 3、基础的表结构不要轻易拓展,涉及多方面使用,最好多建一个表去实现你的功能; 4、MVC中 M 很重要,业务中设计数据结构非常重要,宁愿久但必须慎重; 5、胖 model,瘦 controller; 6、类的功能无非就是自给或者外给,自给就是自身内部定义、实例其他类,外给就是把其他类从外部赋予、注入自身,依赖注入就是把类所需要依赖的东西从外部注入。依赖注入 == 依赖 + 注入,依赖就是我有一些功能要依赖别人(需要),注入就是从外部注射进去(手段); 7、依赖注入会从最底层开始实例,如果数量很多的依赖会导致混乱,需要DI,跟类的反射机制有关; 8、反射机制很强大; http://www.digpage.com/index.html 来源: https://www.cnblogs.com/linguoguo/p/6793168.html

学习《Java编程思想》第二天

自作多情 提交于 2020-01-17 01:53:40
1.6 继承 1.6.1 “是一个”与“像是一个”关系 继承时只覆盖基类的方法,因此导出类和基类是完全相同的类型,因为它们具有完全相同的接口。结果可以用一个导出类对象来完全替代一个基类对象。通常被称为 替代原则 。 有时在导出类型中添加了新的接口元素,这样也就扩展了接口,这个新的类型仍然可以替代基类,但是基类无法访问新添加的方法。 1.7 伴随多态的可互换对象 把一个对象不当作它所属的特定类型来对待,而是将其当作其基类的对象来对待。因此人们可以编写出不依赖于特定类型的代码。 面向对象程序设计语音使用了后期绑定的概念,当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查,但是并不知道将被执行的确切代码。 为了执行后期绑定,Java使用一小段特殊的代码来替代绝对地址调用,这段代码使用在对象中存储的信息来计算方法体的地址,这样,根据这一小段代码的内容,每一个对象都可以具有不同的行为表现。当向一个对象发送信息时,该对象就能够知道对这条消息应该做些什么。 例如: 创建方法: void doSomething(Shape shape){ shape.erase(); shape.draw(); } 调用这个方法: Circle circle = new Circle(); Triangle triangle = new

java编程思想-java中的并发(三)

僤鯓⒐⒋嵵緔 提交于 2020-01-14 12:13:09
三、终结任务 1. 在阻塞时终结 线程状态 一个线程可以处于以下四种状态之一: 1)新建(new):当线程被创建时,他只会短暂的处于这种状态。此时,他已经分配了必须的系统资源,并执行了初始化。此刻线程已经有资格获得CPU时间了,之后调度器将把这个线程转变为可运行zhuang't状态或阻塞状态。 2)就绪(Runnable):在这种状态下,只要调度器把时间片分配给线程,线程就可以运行。也就是说,在任意时刻,线程可以运行也可以不运行。只要调度器能分配时间片给线程,他就可以运行,这不同于死亡和阻塞状态。 3)阻塞(Blocked):线程能够运行,但是某个条件阻止他的运行。当线程处于阻塞状态时,调度器将忽略线程,不会分配给线程任何CPU时间。直到线程重新进入就绪状态,他才可能执行操作。 4)死亡(Dead):处于死亡或终止状态的线程将是不可调度的,并且再也不会得到CPU时间,它的任务已结束,或不再是可运行的。任务死亡的通常方式是从run()方法返回,但是任务的线程还可以被中断。 进入阻塞状态 一个任务进入阻塞状态,可能有如下原因: 1)通过调用sleep()使任务进入休眠状态,在这种情况下,任务在指定的时间内不会运行。 2)调用wait()使线程挂起,直到线程得到了notify()或notifyAll()消息(或者concurrent类库中等价的signal()或signalAll()消息

读《java编程思想》8-多态

落花浮王杯 提交于 2020-01-14 09:59:34
多态的作用是消除类型之间的耦合关系。(依赖于父类,减少子类耦合) 多态也称为动态绑定、后期绑定或者运行时绑定。 1、什么是多态 (1)将一个”方法调用“同一个”方法主体“关联起来称为绑定。 (2)在程序执行前进行绑定(比如编译时),叫前期绑定, C语言属于前期绑定。 (3)在运行时根据对象的类型进行绑定,叫做后期绑定或动态绑定,即为多态,java中除了static方法和final方法(private方法属于final)之外,其他方法都是后期绑定。即 static方法和final方法没有多态。 (4)任何域访问操作都将由编译器解析,属于前期绑定。即 直接访问成员变量没有多态。注意:这里是指的是通过“点”访问成员变量没有多态,如果调用被覆写过的方法(发生多态),方法内访问的成员变量,则访问的是当前方法体所属类的成员变量。即也发生了多态。 2、通常对象的清理由GC负责,如果有某些资源,需要手动清理,那么新增dispose方法,清理顺序和 初始化顺序完全相反即可。 如果对象成员对象存在共享(如:被当做构造参数传入,增加了引用数量),则需要记录引用计数,每次使用则引用加1,如果引用变为0才允许清理。 3、构造器类似static方法,不具备多态性。但在构造器内调用方法,存在多态,如果调用的是被覆盖的方法。则动态绑定到子类的方法,此时子类还没有被构造,因此即使代码中成员变量有初始化值

Java编程思想---枚举类型

孤街醉人 提交于 2020-01-13 00:16:28
Java编程思想—枚举类型 基本enum特性 调用enum的values()方法,可以遍历enum实例,values方法返回enum实例数组,而且该数组中的元素严格保持在enum中声明时的顺序 public enum Shrubbery { GROUND, CRAWLING, HANGING } public class EnumClass { public static void main(String[] args) { for (Shrubbery s : Shrubbery.values()) { // ordinal方法返回一个int值 这是每个enum实例在声明时的次序 从 0 开始 System.out.println(s + "orginal " + s.ordinal()); System.out.println("_________________"); // enum类实现了Comparable接口 所以具有compareTo方法 System.out.println(s.compareTo(Shrubbery.CRAWLING ) + ""); System.out.println("_________________"); // 可以用 == 来比较enum实例 编译器会自动提供equal和hashcode方法 System.out.println(s =

Java编程思想学习笔记(10)

心已入冬 提交于 2020-01-01 18:14:32
Java编程思想学习笔记(10) 内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类。 创建内部类 例子: public class Outer { class Inner_1{ private int i = 1; public int value(){ return i; } } class Inner_2{ private String string; Inner_2(String s){ string = s; } String getString(){ return string; } } public void get(String s){ Inner_1 inner_1 = new Inner_1(); Inner_2 inner_2 = new Inner_2(s); System.out.println(inner_2.getString()); } public static void main(String[] args) { Outer outer = new Outer(); outer.get("Hello"); } } 创建内部类的方式很简单,就是把类的定义放置于外围类的里面。 当我们在get方法中使用内部类的时候,与使用普通类没什么区别。 更加典型的方法,外部类有一个方法,该方法返回一个指向内部类的引用。 public class