一、并发编程的挑战 1、上下文切换 (1)上下文切换的问题 在处理器上提供了强大的并行性就使得程序的并发成为了可能。处理器通过给不同的线程分配不同的时间片以实现线程执行的自动调度和切换,实现了程序并行的假象。 在单线程中:线程保存串行的执行,线程间的上下文切换不会造成很大的性能开销。 而在多线程中: Read More
posted @ 2017-07-09 17:16 奋斗超云 Views(373) Comments(0) Diggs(0) Edit
1、什么是内存模型,为什么需要它? (1)内存模型的发展背景 近几年计算性能通过重排序实现了很大的提升,而且处理器也越来越朝着多核处理器发展以实现硬件的并行性。随着处理器的不断强大,编译器也在不断的改进:通过指令重排序来实现优化执行,使用成熟的全局寄存器分配 算法。这些都使得线程在内存内的操作更趋于复杂,如果没有正确的同步机制下,内存间的操作呈现乱序执行,从而不能保证计算结果的正确性。... Read More
posted @ 2017-07-09 11:36 奋斗超云 Views(366) Comments(0) Diggs(0) Edit
一、垂直应用架构拆分 在应用架构的演进过程中,垂直应用架构因为开发便捷,学习成本低,对于实现业务功能的增删改查提供了高效的开发支持,有利于前期业务高速发展的的快速实现。但是随着系统业务功能的不断扩展和系统代码的的不断攀 升业务模块与模块之间的高耦合度、核心业务的稳定性、根据市场的需求应用前端需要针对不同的业务场景实现不同的有针对性的修改这时候传统的垂直应用架构就满足不了需求,因而需要引... Read More
posted @ 2017-07-08 19:54 奋斗超云 Views(7361) Comments(0) Diggs(0) Edit
《Java并发编程实战》和《Java并发编程的艺术》 Executor框架小结 1、在线程中如何执行任务 (1)任务执行目标: 在正常负载情况下,服务器应用程序要表现出良好的吞吐率和快速的响应性。在负载过载的情况下,应用程序的性能应该是逐渐减低的,而不是直接失败。 要实现高吞吐率和快速的响应,就应该选择清晰的任务边界和明确的任务执行策略。 (2)任务... Read More
posted @ 2017-07-04 21:37 奋斗超云 Views(3828) Comments(0) Diggs(0) Edit
1、设计线程安全类的过程 设计线程安全类的过程就是设计对象状态并发访问下线程间的协同机制(在不破坏对象状态变量的不变性条件的前提下)。 (1)构建线程安全类的三个基本要素: 1)找出构成对象状态的所有变量;(确定状态变量的类型(共享、可变的、不可变的),针对不同类型的状态变量采用不同的并发访问策略) 2)找出约束对象状态变量的不变性条件;(不变性条件本质上就... Read More
posted @ 2017-07-03 15:43 奋斗超云 Views(288) Comments(0) Diggs(0) Edit
1、线程安全的本质和线程安全的定义 (1)线程安全的本质 并发环境中,当多个线程同时操作对象状态时,如果没有统一的状态访问同步或者协同机制,不同的线程调度方式和不同的线程执行次序就会产生不同的不正确的结果。要确保获得最后正确的结果就需要对线程访问对象状态 的操作上进行同步或者协同,使多个线程无论在什么样的调度方式和线程执行顺序的情况中,都能产生正确的结果。 线程安全的本质就对(对象)状态的访问操... Read More
posted @ 2017-07-02 22:43 奋斗超云 Views(247) Comments(0) Diggs(0) Edit
1、计算机物理内存结构(物理内存结构决定了虚拟机内存结构) 由于处理器和主存储设备在运算速度上不上同一个数量级上,因此处理器和主存储器之间不得不增设一层高速缓存,将部分在主存储设备的运算放在高速缓存内,从而使得内存的相关运算速度跟上处理器的运算速度不至 于限制处理器的处理速度。实际工作中,处理器要操作的数据先从主存储内存内读取到高速缓存内,然后再在高速缓存内进行运算,最后再... Read More
posted @ 2017-06-25 17:51 奋斗超云 Views(246) Comments(0) Diggs(0) Edit
一、泛型的本质 泛型是参数化类型的应用,操作的数据类型不限定于特定类型,可以根据实际需要设置不同的数据类型,以实现代码复用。 二、Java泛型 Java 泛型是Java1.5新增的特性,JVM并不支持。 实现原理:Java源代码里面类型提供实现泛型功能,而编译后Class文件类型就变成原生类型(即类型被擦除掉),而在引用处插入强制类型转换以实现JVM对泛型的支持。本质是Java泛型只是Java... Read More
posted @ 2017-06-25 12:51 奋斗超云 Views(1986) Comments(1) Diggs(0) Edit
Class文件二进制字符流通过类加载器和虚拟机加载到内存(方法区)完成在内存上的布局和初始化后,虚拟机字节码执行引擎就可以执行相关代码实现程序所定义的功能。虚拟机执行引擎执行的对象是方法(均特指非本地方法),方法是 着一个程序所定义的一个功能的载体,实现预定的业务功能或者特定的功能等。虚拟机执行引擎就是执行程序方法的一个引擎,一个类的信息通过方法承载了它所担负的功能职责,程序的执行就是... Read More
posted @ 2017-06-22 22:39 奋斗超云 Views(483) Comments(0) Diggs(0) Edit
1、Java语言的特性 Java代码经过编译器编译成Class文件(字节码)后,就需要虚拟机将其加载到内存里面执行字节码所定义的代码实现程序开发设定的功能。 Java语言中类型的加载、连接(验证、准备、解析)、初始化都是在程序运行期间内完成的与C++不同(C++在编译期就需要进行连接),这样也使得Java语言更具灵活性。 2、虚拟机类加载的过程 (1)虚拟机什么时候进行类的加载(类... Read More
posted @ 2017-06-21 22:15 奋斗超云 Views(1022) Comments(0) Diggs(0) Edit