- 博客(36)
- 收藏
- 关注
原创 java容器-ConcurrentHashMap
文章目录ConcurrentHashMap重要常量四个节点构造方法tableSizeForputinitTablehelpTransfer transfer等扩容机制getConcurrentHashMap本文章源码来自 Java 8,重点是put和get方法及涉及到相关方法重要常量 // map容器的最大容量 private static final int MAXIMU...
2019-07-03 14:46:56
226
1
原创 java.net.HttpURLConnection 踩坑经历
java.net.HttpURLConnection这个是java自带的网络库,接手项目后遇到了两个问题:1.自动静默的重试2.默认进行3XX跳转自动静默的重试这个查阅了一些资料发现,是java类库自带的bug,不过在2006设计者已经出了解决方案,只不过由于要兼容以前版本,并没有修改 java.net.HttpURLConnection 这个库的内部实现,只是增加了一个开关,可以人为选...
2019-06-06 16:19:37
2382
1
原创 maven 替换指定文件属性值
maven 替换指定文件属性值问题由来接到一个需求:组装 http 协议的时候在 header 里面带上 User-agent , 但是 agent 里面需要动态获取当前操作系统、系统架构、当前项目版本和名称。本着最少维护成本的想法,否定了手动维护静态变量的选择,所以只能选择通过现有的技术自动化解决问题。实现步骤在项目的 resources 目录下创建 xx.properties 文件...
2019-02-13 20:25:22
1292
原创 命令启动Junit测试类
命令启动Junit测试类准备hamcrest-core-1.3.jarjunit-4.12.jar必须的两个包运行要有java坏境,然后修改ClASSPATH坏境配置添加上,上面两个包的路径因为我是放在JAVAHOME的lib下面的所以就这么配置了Linuxvim ~/.bashrcexport CLASSPATH=$JAVA_HOME/lib/junit-4.12.jar:...
2018-11-29 17:44:06
1557
原创 java容器-ArrayList
文章目录java集合CollectionArrayListjava集合Collection将一些实用的基本的东西,不会去分析UML图。下面列出一些主要包含关系,淡然集合还有queue队列但不在此处研究List:可以有重复元素的集合、有序(存入和取出的顺序不一定相同)ArrayList:非线程安全、底层是数组的实现,所以方便查询,增删不方便LinkedList:非线程安全、底层是链表实...
2018-11-08 17:48:45
304
原创 java虚拟机-垃圾回收机制
垃圾回收机制如何确定对象已死引用计数法根搜索法垃圾回收算法Mark-Sweep(标记-清除)算法Copying(复制)算法Mark-Compact(标记-整理)算法Generational Collection(分代收集)算法垃圾收集器SerialParNewParallel ScavengeCMSG1如何确定对象已死“死”说的就是没用的对象,那么如何确定已经死亡的对象呢!有下面两个方法引用...
2018-11-07 18:17:40
296
原创 java虚拟机-运行时数据区
运行时数据区图本地方法栈局部变量表操作数栈动态连接方法返回地址异常本地方法栈程序计数器堆图本地方法栈Java虚拟机栈是线程私有的,生命周期跟线程相同。虚拟机栈的栈元素是栈帧,当有一个方法被调用时,代表这个方法的栈帧入栈;当这个方法返回时,其栈帧出栈。(后入先出,相当于弹夹调用就是放入子弹,返回就是发射,下面是图解栈帧及内部结构)局部变量表局部变量表是一组变量值存储空间,用以存储方法...
2018-11-07 16:11:22
247
原创 java虚拟机-虚拟机基本
虚拟机基本什么是java虚拟机概念通俗易懂的理解jvm的生命周期java虚拟机的体系结构类装载器子系统运行时数据区执行引擎本地方法接口什么是java虚拟机我一般是能记例子就不记概念,不过概念还是要贴出来的概念Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。(copy的百度...
2018-11-07 11:57:17
303
原创 RocketMQ集群搭建
RocketMQ集群搭建如果一步步来碰到坑了,可以联系博主qq371850264 换了个新工作,今天架构师突然扔来一个任务,就是搭建消息队列集群,运用的是 rocketmq,因为以前从来没有接触过所以踩了很多坑!环境linux系统 版本CentOS7 rocketmq 4.2.0 jdk 1.8工具因为本着能在本地做的事情,现做了然后一口气传到服务器上所以需要下面两个工...
2018-04-11 19:23:15
960
原创 夯实基础—final关键字
fianl 最终的不可变的final的用法一.修饰类被final修饰后的类,将变得不可继承,通常这个类都会是一个完整的类二.修饰变量修饰变量里面有两种分别是,被final修饰后都不可更改。成员变量和本地变量成员变量被修饰只能在声明的时候赋值或者在构造方法里面赋值。 本地变量被修饰可以随后赋值没有硬性规定。值得注意的是当时引用类型的时候,只是不能修改引用地址,但是可以改变引用类型的值,在修参的时候
2018-01-20 10:58:35
227
原创 夯实基础—static关键字
static 静态的它是Java里面的修饰词,被static修饰的类、方法、变量等等都会在类加载的时候自动在方法区分配一次,此后便不在创建。这说明了被static修饰之后有且只有一个存在,而且调用的时候并不需要对象(也可以用但是不提倡),可以直接用类名来调用。被stati修饰之后,将不会属于任何类的任何一个对象,但是可以被类的所有对象共有。static的五种用法可以自己去尝试来验证我说的到底是否正确
2018-01-20 10:27:32
218
原创 夯实基础—java关键字
这里要介绍的关键字、保留字 一共有53个关键字有简单备注,详细用法都在后续博文中讨论 关键字 备注 访问修饰权限 数量3 public 公共的 protected 受保护的 private 私有的 流程控制 数量12 if 判断语句 else if( ){ }else{ } while 循环语句while(){} do d
2018-01-19 20:23:32
324
原创 设计思想学习—解释器模式
解释器模式解释器模式是最后一个模式了,而且接触到的名词也多,所以会把定义、UML和结构一起列完之后,统一说明理解。 解释器模式(Interpreter):给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。UML 解释模式构成抽象表达式(AbstractExpression):声明一个抽象的解释操作,该接口为抽象语法
2018-01-15 19:55:54
203
原创 设计思想学习—中介者模式
中介者模式 中介者模式(Mediator):用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互。对于定义的理解就好比发短信一样先要经过运营商的服务器(移动、电信等)然后在发到目标的手机上但是运营商有移动、联通、电信等等很多,手机也有无数个品牌,所以这里就抽出了抽象的运营商和手机加上下面的各自的子类就组成了中介者基本的结构
2018-01-12 19:50:05
221
原创 设计思想学习—状态模式
状态模式 状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。这句话我理解起来就是就相当于一个宅男,理了个发穿了个时髦的衣服整个形象都变了,就会给人一种感觉像是变了一个人一样。上次的用的是游戏的例子,这次也用游戏,谁让游戏人物到处都是状态。就好比说等级吧!游戏里面有升级,同样的死亡也有惩罚,当到达一定程度的时候还可能会降级,而随着升降级,人物的基本属
2018-01-11 19:44:14
167
原创 设计思想学习—备忘录模式
备忘录模式 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象回复到原先保存状态。这个定义前面一段话没有理解,我的理解现在暂时就是获得一个对象的内部状态并保存,然后可以选择是否回档了。讲明白点就是现在我们玩单机游戏无赖玩法,存档-做任务或杀BOSS-如果结果不满意-回档重新来,结果满意就存档继续。//人物角色clas
2018-01-10 20:42:57
308
原创 设计思想学习—命令模式
命令模式 命令模式(Command):将请求封装成一个对象,从而使你可以用不同的请求对客户客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。同样的讲一样烤羊肉串的案例,不过说到烤羊肉串不知道你们今天中午有没有玩芝士超人,答到第十题惜败啊!离平分二十万奖金只差一点点。记得第五题是致癌物含量最高的是A火锅B炸鸡C烤羊肉串。毫无疑问答案就是羊肉串了,想必大家都爱吃,不过为了身体着想还是
2018-01-10 20:24:51
235
原创 设计思想学习—职责链模式
职责链模式 职责链模式(Chain of Responsibility):使多个对象都有机会处理求情,从而避免求情的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。职责链也是一个很简单的模式,就像糖葫芦一样穿成一串一个个来,而且组成也很简单就两部分职责链模式构成:抽象处理者(Handler)角色:定义出一个处理请求的接口。具体处理者(C
2018-01-07 19:02:10
257
原创 设计思想学习—迭代器模式
迭代器模式学到现在渐渐的感觉抓到一点点感觉,那就是学习模式的时候先看定义然后,尝试理解它,理解目的不管百度还是查资料也好,这样不管模式有多复杂,但是目的不会变,理解他的思想后就简单很多。 迭代器模式(Iterator ):提供一种方法顺序访问聚合对象中的每个元素,而不是暴露其内部表示。迭代器模式的定义并不难理解就是就是遍历聚合对象中的每个元素,只不过有前提就是了。class HarryPott
2018-01-07 12:39:29
301
原创 设计思想学习—观察者模式
观察者记得以前有个超火的游戏叫做传奇,小时候经常逃学和同学去玩传奇打boss。经常一群人围着一个boss打,boss往哪边走,相应位置的人停止攻击就跑。这就是最基本观察模式了用代码来实现就是:class Hierarch{ //boss名字 private String name; //boss状态 private String state; private
2018-01-05 22:56:19
383
原创 设计思想学习—模版方法模式
模板方法模式不知各位看官有无遇到过一种情况,就是很多方法其实很相似,只是各自业务有点区别,大致上还是一样。而当我看到模版方法模式的时候眼睛一亮,这个可以完美解决问题。其实这个模式并不难,简单来讲就是把相同的抽象出来,运用多态的性质完成不同的事情。看一下大话设计模式里面的代码例子两个人分别抄同样的卷子,然后考试class TestPaperA{ public void testQuestion
2018-01-04 19:35:37
374
原创 设计思想学习—享元模式
享元模式大话设计模式上举得是大量的私人项目,这点很是羡慕,没有私人项目的经验所以只能干瞪眼了喽。享元模式实现相同或者相似对象的重用。也就是说实现相同或者相似对象的代码共享。 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。套用大话设计模式的一段话就是:享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个
2018-01-03 19:13:57
224
原创 设计思想学习—组合模式
组合模式本来这篇是要元旦发出来的,可惜玩的太嗨了,没有时间发,只能抽空看看知识点。祝大家新年新气象,身心健康,心想事成。相信只要玩过电脑的人都对下面的这张图不会陌生 这结构想必大家也都熟悉,就是树状结构其实这也是组合模式的定义 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式对单个对象(叶子对象
2018-01-02 19:55:12
341
原创 设计思想学习—外观模式
外观模式记得有一次,我们一起去了一个别墅轰趴,那时候大家都去玩自己想玩的事情,大厅开灯是必须的,看电影的要去小房间开投影仪幕布,玩游戏的要开电脑或者xbox等等。最后玩的筋疲力尽了还要一个个去把他们关掉,那时候就在想如果有一个按钮关掉或者开启所有多好。直到今天看了外观模式才知道,那个想法就是一个外观模式的思想,把所有开启和关闭的功能全部集中在一个按钮上,我们不需要一个个开启也不需要知道如何开启,只用
2018-01-02 18:58:56
249
原创 设计思想学习—回顾思考
疑惑在短短的半个月中,竟然学习了十种设计模式和六大原则,虽然我的要求是第一次学习,只要能记住个大概有个印象就好。但是不可否认的虽然优乐一些印象,不过不管什么设计模式用到的也就只有抽象、继承、封装和多态,所以难免的会有很多想似的地方。在这么短的时间里面,我并不能完全的理解他们各自的真正的思想,所以看到太多的类似的结构往往会区分不清就如:适配器模式和代理模式这两种的都是加了一层来解决问题,但是这一层的意
2017-12-30 14:05:39
213
原创 设计思想学习—桥接模式
桥接模式一些话 从这篇文章开始要做一些改变,不在一起把定义和一些公式一起放上去然后在去分析,现在一步一步来吧! 感觉看了很多设计模式基本上都是只能知道一些定义构造,而不能理解所以看得越多,问题越多,我将会带着问题去实践去搜索然后再回来拜读。 设计模式我会过一遍、两遍、三遍直到我能理解,在这过程中肯定有很多问题错误,看到的大家也可以指出,大家可以相互交流,相互学习。 转载请说明出处,话不多说来
2017-12-29 20:58:21
232
原创 设计思想学习—代理模式
代理模式 代理模式(Proxy):给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式组成 抽象角色(Abstract):通过接口或抽象类声明真实角色实现的业务方法。 代理角色(Proxy):实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色(Real):实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。U
2017-12-29 17:41:33
368
原创 设计思想学习—适配器模式
适配器模式 适配器模式(Adapter):将类的接口转换为客户希望的另一个接口。适配器模式组成:目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。需要适配的类(Adaptee):需要适配的类或适配者类。适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。 UML图 个人理解 适配器就跟我们现实用的转接头一样,三插想要插
2017-12-27 20:10:01
330
原创 设计思想学习—单例模式
单例模式 单例模式(singleton): 保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式个人感觉是最简单的设计模式,因为他的目的很简单,并且没有用到太多的面对对象的特征,所以很简单。 单例模式主要是为了不要有重复的实例出现。 主要分为了两种: 懒汉 public class Singleton { private static Singleton i
2017-12-25 20:49:30
273
原创 设计思想学习—建造者模式
建造者模式 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式组成抽象建造者(builder):为创建一个产品对象的各个部件指定抽象接口。实际建造者(ConcreteBuilder):实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。指导者(Director):构造一个
2017-12-23 20:21:35
310
原创 设计思想学习—抽象工厂模式
抽象工厂模式 抽象工厂模式(Abstract Factory):为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。抽象工厂模式组成抽象工厂(Creator)角色:这是工厂方法模式的核心,定义了创建产品的方法。与应用系统无关。具体工厂角色必须实现这个接口才能创建对象。具体工厂(Concrete Creator)角色:实现了抽象工厂角色的接口,含有与应用密切相关的逻辑,并且
2017-12-22 20:12:25
406
原创 设计思想学习—原型模式
原型模式 原型模式(Prototype):原型实例指定创建对象的种类,并通过拷贝原型创建新的对象;UML图 原型模式组成客户(Client)角色:客户类提出创建对象的请求。抽象原型(Prototype)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体原型类所需的接口。具体原型(Concrete Prototype)角色:被复制的对象。此角色需要实现抽象的原型角色
2017-12-22 09:53:22
233
原创 设计思想学习—装饰者模式
装饰者模式 Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 UML图 装饰者包含四个基本类抽象构件角色(Component):给出一个抽象接口,以规范准备接收附加责任的对象。具体构件角色(Concrete Component):定义将要接收附加责任的类。装饰角色(Decorator):持有一个构件(Compon
2017-12-20 21:59:25
774
原创 设计思想学习—策略模式
策略模式首先来看一下定义 策略模式(Strategy):定义一组算法,将每个算法都封装起来,并且使他们之间可以互换策略模式主要有三点组成抽象策略角色: 策略类,通常由一个接口或者抽象类实现。具体策略角色:包装了相关的算法和行为。环境角色:持有一个策略类的引用,最终给客户端调用。举个栗子: 我中午想吃好吃的,但可以吃的东西有很多种:烤鸭、龙虾、帝王蟹,但是不管吃啥,都是吃,所有就有了抽
2017-12-18 16:35:36
265
原创 设计思想学习之六大原则
六大原则开闭原则接口隔离原则迪米特法则依赖倒置原则里氏替换原则单一职责原则这六种原则相信网上一找一大堆,所以我也就不写一些公共的定义或者一些书面语,我只谈谈自己的学习理解。开闭原则 开闭原则(Open Close Principle):对扩展开放,对修改关闭很通俗易懂的一个原则,我的理解就是想要扩展功能就加新的类新的代码,以前老的代码不要去修改。可以想想一下类似电脑内存条,内容不
2017-12-16 17:19:18
361
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人