10 2018 档案

摘要:双重分发(Double Dispatch) 什么是双重分发? 谈起面向对象的程序设计时,常说起的面向对象的「多态」,其中关于多态,经常有一个说法是「父类引用指向子类对象」。 这种父类的引用指向子类对象的写法类似下面这种: 另一种常用的形式是 那上面的keeper调用两次say的时候,会输出什么内容呢 阅读全文
posted @ 2018-10-27 00:51 如.若 阅读(535) 评论(0) 推荐(1)
摘要:在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件。第二段编译是把.class转换成机器指令的过程。 第一段编译就是javac命令。 在第二编译阶段,JVM 通过解释字节码将其翻译成对应的机器指令,逐条 阅读全文
posted @ 2018-10-07 10:48 如.若 阅读(587) 评论(1) 推荐(1)
摘要:什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因此, 阅读全文
posted @ 2018-10-07 10:34 如.若 阅读(207) 评论(0) 推荐(0)
摘要:互斥同步 互斥同步(Mutual Exclusion & Synchronization)是常见的一种并发正确性保证手段。同步是指子啊多个线程并发访问共享数据时,保证共享数据在同一时刻只能被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critial Sectio 阅读全文
posted @ 2018-10-06 23:09 如.若 阅读(342) 评论(0) 推荐(0)
摘要:虚拟机设计团队把类加载阶段张的”通过一个类的全限定名来获取此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为”类加载器”。类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限定于类加载阶段。对于任意 阅读全文
posted @ 2018-10-06 22:49 如.若 阅读(213) 评论(0) 推荐(0)
摘要:如下图所示,JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。 加载 加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取, 阅读全文
posted @ 2018-10-06 22:33 如.若 阅读(244) 评论(0) 推荐(0)
摘要:JVM(Java虚拟机)是一个抽象的计算模型。就如同一台真实的机器,它有自己的指令集和执行引擎,可以在运行时操控内存区域。目的是为构建在其上运行的应用程序提供一个运行环境。JVM可以解读指令代码并与底层进行交互:包括操作系统平台和执行指令并管理资源的硬件体系结构。本文主要对JVM进行概述,并介绍Ja 阅读全文
posted @ 2018-10-06 22:17 如.若 阅读(414) 评论(0) 推荐(0)
摘要:Spring与线程安全 Spring作为一个IOC/DI容器,帮助我们管理了许许多多的“bean”。但其实,Spring并没有保证这些对象的线程安全,需要由开发者自己编写解决线程安全问题的代码。 Spring对每个bean提供了一个scope属性来表示该bean的作用域。它是bean的生命周期。例如 阅读全文
posted @ 2018-10-03 13:25 如.若 阅读(376) 评论(0) 推荐(0)
摘要:正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarri 阅读全文
posted @ 2018-10-03 13:21 如.若 阅读(2137) 评论(0) 推荐(0)
摘要:Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictionary) 哈希表(Hashtable) 属性(Properties) 以上这些类是传统遗留的,在J 阅读全文
posted @ 2018-10-02 11:52 如.若 阅读(155) 评论(0) 推荐(0)
摘要:List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现ArrayList、LinkedList和Vector之间的关系和区别。 List List 是一个接口,它继承于Collection的接口。它代表着有序的队列。当我们讨论List的时候,一般都和 阅读全文
posted @ 2018-10-02 11:12 如.若 阅读(2255) 评论(0) 推荐(0)
摘要:在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。 通过引入一个新的对象来实现对真实对象的操作或者将新的对象作为真实对 阅读全文
posted @ 2018-10-02 10:40 如.若 阅读(204) 评论(0) 推荐(0)
摘要:第一步:通过以下两种方式之一来打开慢查询功能 (1)方式一:通过修改mysql的my.cnf文件 如果是5.0或5.1等版本需要增加以下选项: 如果是5.5版本以上可以增加如下选项: 但是以上修改mysql配置文件的方式需要重启mysql,这也是它的缺点。 (2)方式二:通过依次执行mysql的如下 阅读全文
posted @ 2018-10-02 10:29 如.若 阅读(826) 评论(0) 推荐(0)
摘要:我们知道创建一个String类型的变量一般有以下两种方法: 那么为什么会存在这两种创建方式呢,它们在内存中的表现形式各有什么区别? 方法1: 解析:用""创建的a,b两个字符串,==和equals比较返回都为true,这是因为a,b都指向了方法区的同一个字符串。所以,当同样的一个字符串用""重复创建 阅读全文
posted @ 2018-10-01 19:45 如.若 阅读(290) 评论(0) 推荐(0)
摘要:什么是幂等性? 一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求。而写服务就不能重复请求,如果因为超时或者网络故障等原因被调用服务并没有返回成功的响应,服务调用方就认为是失败了,但很有可能的是已经成功了,如果继续重复请求写服务,如转账类的服务,可能会造成严重的后果。所以 阅读全文
posted @ 2018-10-01 13:33 如.若 阅读(419) 评论(0) 推荐(0)
摘要:分布式事务 分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考 阅读全文
posted @ 2018-10-01 13:24 如.若 阅读(15261) 评论(3) 推荐(0)
摘要:动态代理在我们工作当中应用相当广泛,如Srping AOP就是动态代理的在开源框架的比较出名的应用。动态代理有两种试:一是通过JDK自带的API实现动态代理,二是通过别的字节码框架实现,如cglib。需要注意的是JDK只能针对接口实现动态代理,不能代理普通类,使用具有局限性。而cglib可以代理接口 阅读全文
posted @ 2018-10-01 00:27 如.若 阅读(736) 评论(0) 推荐(0)
摘要:代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展 阅读全文
posted @ 2018-10-01 00:09 如.若 阅读(255) 评论(0) 推荐(0)