阳光十六阴天八,多云十一日暮四,乌云压顶五点六,雪天落雨同日暮。
天气
光圈
ISO
快门
晴天
F16
125
1/125
F16
500
1/500
F11
250
1/1000
阴天
F8
多云
F11
日暮 / 雪天 / 雨天
F4
乌云
F5.6
完整光圈值 F1, F1.4, F2, F2.8, F4, F5.6, F8, F11, F16, F22, F32, F44, F64
界定光线阳光灿烂 (F16) = 影子黑,...
原链接:
https://blog.csdn.net/lywstuding/article/details/121117136
[toc]
1. C 语言,C++ 的诞生
这一段和 Java 毫无关系,感觉是作者拿来凑字数的,可以跳过。
Java 的诞生离不开 C 语言和 C++,C++ 是在 C 语言的基础上改造的,后来 Sun 公司又对 C++ 进行改写,产生了 Java。也可以说 Java 源自于 C 和 C++。
1956 年 FORTRAM 的诞生1956 年,美国计算机科学家约翰・巴克斯带领团队开发出了世界上第一个高级编程语言 FORTRAN。
FORTRAN 语言是世界上...
Java一门编程语言,这个没啥好说的。
JVMJava Virtual Machine 虚拟机
例如:
Sun Classic VM
JDK 1.0 提供的虚拟机
Exact VM
JDK 1.2 引入,被 HotSpot 替代
HotSpot VM
JDK 1.2 引入
JDK 1.3 之后默认的虚拟机
OpenSDK 的默认虚拟机
JRockit
BEA 公司,被 Oracle 收购
起特性被引入到 OpenSDK 所使用的 HotSpot
可以说现在 OpenSDK 使用的 jvm 其实是两者的合体
J9
IBM 家的虚拟机
JRE
Java Runti...
JVM 内存模型
虚拟机栈
每个线程都有私有的栈
栈帧
每个方法会创建一个栈帧
包含
局部变量表
操作数栈
方法出口
…
StackOverflowError
本地方法栈
虚拟机的 Native 方法所用的栈
PC 寄存器
线程的程序计数器
堆
堆内存
所有线程共享部分
包含所有对象和数组(所有指针型变量?)
GC 的对象
方法区
物理位置也属于堆
包含
存储类的信息
常量池
方法数据
方法代码
PermGen 永久代
jdk 1.7 HotSpot 特有,jdk 1.8 移除
方法区的具体实现
jdk 7 中,存储在永久代的部分数据就已经转移到了J...
Serial GC
单线程收集器
需要暂停其他工作线
Client 模式
Serial Old GC
Serial 老年代版本,Client 版本
其他功能
搭配Parallel Scavenge收集器使用。
做为 CMS 收集器的后备方案,当 CMS 出现 Concurrent Mode Failure 时使用。
做为 G1 的 fullGC 收集器。这也是我们在使用 G1 的时候需要注意的,G1 应该尽量杜绝FullGC。否则就会退化为串行 GC。
ParNew GC
Serial 收集器的多线程版本,其他参数方式都一样
XX:parallelGCThr...
前几天看文章,看到了一篇文章给了一份 jvm7 的启动调优参数。可以学习下 JVM7 的一些特性。
1java -server -Xms2G -Xmx2G -XX:MaxPermSize=256M -Xss256K -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+UseAdaptiveSizePolicy -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:../logs/gc.log -XX:+PrintTenuringDi...
乐观锁
并发控制概念
OCC
适合写入少,回滚成本低于锁的场景
本质没有锁,靠自身校验来实现”锁的效果“
事务写入数据后,提供时间戳或者类似的凭证
通过凭证检查数据是否被修改
被修改,回滚事务
无修改,提交事务
不足
读取独占的资源可能造成死锁
悲观锁
并发控制概念
PCC
适合写入多,回滚成本高于锁的场景
先竞争获取锁,获得锁只能才能写入数据,写完数据释放锁
不足
容易造成死锁
加锁会有效率消耗
自旋锁
技术方案
现成执行忙循环
占用时间长会导致资源消耗
CAS
默认 10 次
-XX:PreBlockSpin 修改
可重入锁
递归...
Maven 常见的配置文件由以下几部分:
proxy
mirror
repository
server
profiles
其中 proxy 就是代理服务,这一点暂时不管。
idrepository 和 mirror 和 server 都拥有一个字段是 id。这里的 id 就单纯的用来标识一个 server 的唯一的标识字段。
我一开始以为类似 central, thirdparty 是固定的字段,后面理解开来,应该只是属于常用的 id,并没有固定的含义。
profilesprofiles 可以认为是配置,其 id 是标识配置的唯一 id (和 server 无关)。
可以认为为了方便...
[toc]
命令行
ls / ls2
delete
set
get
stat
节点持久类型1234567PERSISTENT // 持久节点,一旦创建成功不会被删除,除非客户端主动发起删除请求PERSISTENT_SEQUENTIAL // 持久顺序节点,会在用户路径后面拼接一个不会重复的自增数字后缀,其他同上EPHEMERAL // 临时节点,当创建该节点的客户端链接断开后自动被删除EPHEMERAL_SEQUENTIAL // 临时顺序节点,基本同上,也是增加一个数字后缀CONTAINER // 容器节点,一旦子节点被删除完就会被服务端删除PERSISTE...
5. 实验结果总结从以上的实验来看,可以总结处以下几点:
在少低数据量的处理场景中(size <= 1000),stream 的处理效率是不如传统的 iterator 外部迭代器处理速度快的,但是实际上这些处理任务本身运行时间都低于毫秒,这点效率的差距对普通业务几乎没有影响,反而 stream 可以使得代码更加简洁;
在大数据量(szie > 10000)时,stream 的处理效率会高于 iterator,特别是使用了并行流,在cpu恰好将线程分配到多个核心的条件下(当然parallel stream 底层使用的是 JVM 的 ForkJoinPool,这东西分...