- 博客(80)
- 收藏
- 关注
转载 JMM与happens-before
happens-before是JMM最核心的概念,理解happens-before是理解JMM的关键。一.JMM的设计 首先,让我们先分析一下JMM的设计意图。从JMM的设计者的角度,在设计JMM的时候要考虑一下两个关键因素: 1.程序员对内存模型的使用。程序员希望内存模型易于理解、易于编程。程序员希望基于一个强内存模型来编写代码。 2.编译器和处理器对内存模型的实现。...
2018-07-31 22:17:00
224
转载 ThreadPoolExecutor源码解析
参考链接:https://blog.csdn.net/rebirth_love/article/details/51954836比较实用的RejectedExecutionHandler实现,丢弃最老的任务DiscardOldestPolicy第一部分:ThreadPoolExecutor的继承结构根据上图可以知道,ThreadPoolExecutor是继...
2018-07-31 21:43:00
195
转载 面试问题总结
数据库篇int类型用字符串类型查询是否会走索引准备语句:12345DROPTABLEix_test;CREATETABLEix_test(id_1varchar(20)NOTNULL,PRIMARYKEY(id_1));INSERTINTOix_testVALUES(1),(2),...
2018-07-17 22:27:00
194
转载 多线程死锁的产生以及如何避免死锁
一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃)。某一个时候,一个拿了左筷子,一人拿了右筷...
2018-07-17 08:18:00
129
转载 Java原子类实现原理分析
并发包中的原子类可以解决类似num++这样的复合类操作的原子性问题,相比锁机制,使用原子类更精巧轻量,性能开销更小,下面就一起来分析下原子类的实现机理。悲观的解决方案(阻塞同步) 我们知道,num++看似简单的一个操作,实际上是由1.读取 2.加一 3.写入三步组成的,这是个复合类的操作(所以我们之前提到过的volatile是无法解决num++的原子性问题的),在并发环境下,...
2018-07-16 21:16:00
536
转载 Lua语言模型 与 Redis应用
参考:https://blog.csdn.net/zjf280441589/article/details/52716720从2.6版本起,Redis开始支持Lua 脚本让开发者自己扩展Redis.本篇博客主要介绍了Lua 语言不一样的设计模型(相比于Java/C/C++、JS、PHP), 以及Redis 对 Lua 的扩展, 最后结合 Lua 与 Redis 实...
2018-07-06 21:27:00
130
转载 Netty FixedChannelPool
如今越来越多的应用采用Netty作为服务端高性能异步通讯框架,对于客户端而言,大部分需求只需和服务端建立一条链接收发消息。但如果客户端需要和服务端建立多条链接的例子就比较少了。最简单的实现就是一个for循环,建立多个NioEventLoopGroup与服务端交互。另外还有如果要和多个服务端进行交互又该如何解决。其实Netty从4.0版本就提供了连接池ChannelPool,可以解决...
2018-07-05 22:25:00
356
转载 Jedis源码分析
对于日常开发,Redis由于单线程的并发模型、丰富的数据结构和简单的API,深受广大程序员的喜爱。Redis提供了多种语言的API,像java、c和python等。之前一直都是使用redis,但是没有多redis的API有一个系统的认识。忙里偷闲,撸一下Redis相关的API的实现,现在学习了一下jedis的源码,来分析一下Redis的读写流程。一、Jedis项目结构...
2018-07-05 22:00:00
243
转载 java OutOfMemorry
首先需要明确OOM并不一定会导致程序挂掉,导致服务不可用的是堆内存被耗尽,从而使得主线程直接退出,或者所有工作线程频繁因为OOM异常终止,java分配数组会直接消耗内存,一个对象引用会占用四个字节。堆内存和栈内存耗尽都会导致OOMjvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Heap space(堆区域)、J...
2018-07-01 07:16:00
87
转载 jstack
https://www.cnblogs.com/wuchanming/p/7766994.htmlhttps://www.cnblogs.com/chengJAVA/p/5821218.html转载于:https://www.cnblogs.com/heapStark/p/9226857.html
2018-06-25 23:05:00
80
转载 Finalizer 导致的OOM
本文介绍的是Java里一个内建的概念,Finalizer。你可能对它对数家珍,但也可能从未听闻过,这得看你有没有花时间完整地看过一遍java.lang.Object类了。在java.lang.Object里面就有一个finalize()的方法。这个方法的实现是空的,不过一旦实现了这个方法,就会触发JVM的内部行为,威力和危险并存。如果JVM发现某个类实现了finalize()方法的话...
2018-06-25 22:50:00
522
转载 JVM调优命令-jmap
先执行 echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scopeJVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件。jmap不仅能生成dump文件,还可以查询finalize...
2018-06-25 21:29:00
136
转载 Java类加载机制以及双亲委派模型
一、Java类加载机制1.概述Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初...
2018-06-24 21:10:00
95
转载 BeanPostProcessor
BeanPostProcessor简介BeanPostProcessor是Spring IOC容器给我们提供的一个扩展接口。接口声明如下:public interface BeanPostProcessor { //bean初始化方法调用前被调用 Object postProcessBeforeInitialization(Object bean, Str...
2018-06-24 19:19:00
337
转载 Thrift源码分析(二)-- 协议和编解码
协议和编解码是一个网络应用程序的核心问题之一,客户端和服务器通过约定的协议来传输消息(数据),通过特定的格式来编解码字节流,并转化成业务消息,提供给上层框架调用。Thrift的协议比较简单,它把协议和编解码整合在了一起。抽象类TProtocol定义了协议和编解码的顶层接口。个人感觉采用抽象类而不是接口的方式来定义顶层接口并不好,TProtocol关联了一个TTransport传输对象...
2018-06-23 18:55:00
143
转载 内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类。 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二)。第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。public class OuterClass { private Str...
2018-06-11 21:52:00
90
转载 builder模式实例
package heapStark.blogCode.designPattern.builder;public class BaseBean { private int age; private String name; public int getAge() { return age; } pu...
2018-05-29 21:39:00
130
转载 HTTP、HTTP2.0、SPDY、HTTPS 你应该知道的一些事
参考:https://www.cnblogs.com/wujiaolong/p/5172e1f7e9924644172b64cb2c41fc58.html转载于:https://www.cnblogs.com/heapStark/p/9096944.html
2018-05-27 19:01:00
129
转载 mybatis-PageHelper
分页插件拦截对象转载于:https://www.cnblogs.com/heapStark/p/9033204.html
2018-05-13 20:25:00
76
转载 数据库表结构设计以及数据类型优化
基本原则:更小的通常更好,简单就好,尽量避免null数据类型:整数类型:TINYINT1 字节(-128,127)(0,255)小整数值SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值MEDIUMINT3 字节(-8 388 608,8 388 607)(0...
2018-04-26 21:14:00
151
转载 设计模式 对象结构型 代理模式
设计模式:《JAVA与模式》之代理模式 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的结构 所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式类图如下: 在代理...
2018-02-06 16:03:00
68
转载 设计模式 对象/类结构型 适配器模式
参考:《JAVA与模式》之适配器模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一...
2018-02-06 15:00:00
113
转载 设计模式 创建型 原型模式
原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。原型模式的结构 原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这...
2018-02-03 18:04:00
82
转载 设计模式 创建型 建造模式
建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象(internal representation)。不同的产...
2018-02-03 16:44:00
83
转载 设计模式 创建型 单例模式
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的结构 单例模式的特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。 饿汉式单例类public class EagerSingleton { private st...
2018-02-03 15:48:00
70
转载 设计模式 创建型 抽象工厂模式
参考:《JAVA与模式》之抽象工厂模式场景问题 当要创建的对象过于复杂时,工厂方法会存在问题,单一工厂职责过多,违背了单一职责原则,构建对象的包含的成员变量不方便独立扩展,所以需要构建几个相关的对象工厂。抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构,讲产品进行等级化拆分的目的在与保证单一职责。实质...
2018-02-03 12:41:00
80
转载 设计模式六大原则
设计模式的六大原则1、开闭原则(Open Close Principle)一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。2、里氏代换原则(Liskov Substitution Principle)这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型...
2018-02-03 12:05:00
70
转载 设计模式 创建型 工厂方法模式
工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明: 相信很多人都做过导入导出功能,就拿导出功能来说。有这么一个需求:XX...
2018-02-03 10:48:00
86
转载 设计模式 创建型 简单工厂模式
参考:《JAVA与模式》之简单工厂模式简单工厂模式是对象的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明: 就拿登录功能来说,假如应用系统需要支持多种登录方式如:口令认证、域认证(口令认证通常是去数据库中验证用户,而...
2018-02-03 10:20:00
78
转载 Junit TDD
参考链接:https://www.w3cschool.cn/junit/什么是 JUnit?JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。JUnit 促进了“先测试后编码”的理念,强调建立测试数据的一段代码,可以先测试,然后再应用。这个方法就好比“测试一...
2018-01-31 21:39:00
153
转载 覆盖索引
参考:http://blog.csdn.net/garfielder007/article/details/54295577聚集索引和辅助索引聚集索引(主键索引)—innodb存储引擎是索引组织表,即表中的数据按照主键顺序存放。而聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据聚集索引的叶子节点称为数据页,数据页,数据页...
2018-01-30 20:00:00
71
转载 多列索引 单列索引
参考:https://www.cnblogs.com/dreamworlds/p/5398535.html多列索引的生成:跟一个字段是一样,只是比较方法变了,不理解成字段,理解成一个是一个元素的struct,一个是两个元素的struct,只是比较方法不一样而已,类似带有通配符形式时的索引查询。例如:SELECT * FROM table_name WHERE v LIKE 'A...
2018-01-30 09:46:00
139
转载 JDBC PreparedStatement Statement
参考:预编译语句(Prepared Statements)介绍,以MySQL为例1. 背景本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相关使用。注意:文中的描述与结论基于MySQL 5.7.16以及Connect/J 5.1.42版本。2. 预编译语句是什么通常我们的一条sql在db接收到最终执行完毕返回可以分为...
2018-01-26 16:27:00
162
转载 常用·SQL
select version()show tablesdesc table_nameshow index from tblnameshow global status like '%prepare%'; 显示预编译情况转载于:https://www.cnblogs.com/heapStark/p/8360110.html...
2018-01-26 16:14:00
95
转载 SpringAOP ApectJ 动态代理
参考链接:https://docs.spring.io/spring/docs/4.3.13.RELEASE/spring-framework-reference/htmlsingle/#aophttp://blog.csdn.net/javazejian/article/details/56267036一.AspectJAspectJ是一个java实现的AOP框架,它能够对...
2018-01-26 10:01:00
201
转载 分布式系统之CAP原理
参考链接:http://blog.csdn.net/wireless_com/article/details/79153643CAP是什么?CAP理论,被戏称为[帽子理论]。CAP理论由Eric Brewer在ACM研讨会上提出,而后CAP被奉为分布式领域的重要理论[1]。分布式系统的CAP理论:首先把分布式系统中的三个特性进行了如下归纳:● 一致性(C):...
2018-01-25 16:24:00
263
转载 分布式缓存一致性哈希算法
参考:http://www.cnblogs.com/mikevictor07/p/4458736.html一、简介 关于一致性哈希算法介绍有许多类似文章,需要把一些理论转为为自己的知识,所以有了这篇文章,本文部分实现也参照了原有的一些方法。该算法在分布缓存的主机选择中很常用,详见http://en.wikipedia.org/wiki/Consistent_hashing ...
2018-01-25 16:04:00
235
转载 数据库三范式 无重复列 完全依赖主键 属性不依赖非主属性
参考:http://www.cnblogs.com/xrq730/p/5100442.html细说数据库三范式2.1第一范式(1NF)无重复的列,保证每列的原子性,即每一列的各个属性值之间不能有相同部分,比如地址可以进一步拆分为 国家 省份 城市三列,可以理解为列不可拆分 第一范式(1NF)中数据库表的每一列都是不可分割的基本数据项 同一列中不...
2018-01-23 17:35:00
2913
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人