当前搜索:

[置顶] TCP协议-个人笔记

我们最常用的应用层协议http都是依赖传输层tcp协议完成的。 同时很多client-server模式的软件(中间件)大都使用tcp通信,因此详细的了解tcp通信裨益极大。 首先对网络模型先进行一个介绍。 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层7层网络模型大家已经熟知。 ...
阅读(20) 评论(0)

[置顶] Redis客户端Jedis源码阅读及连接池分析

0.起因 自己负责的项目redis服务端连接数明显高于实际访问量,很多空闲连接没有释放;Jedis对象和连接的对应关系?连接池的复用是复用了jedis对象,还是只保存连接?总总疑惑,让我开始了jedis的源码阅读。所幸最后都搞明白了,在这里写明白分享给大家。 我相信很多刚入门的同学一定想了解连...
阅读(202) 评论(0)

[置顶] apache-common-pool2源码分析

基础概念apache-common-pool2是一个对象池管理框架,任何需要对象池这种概念的都可以利用这个框架来实现,例如redis的客户端jedis和dbcp都是基于common-pool2实现的。本文是common-pool2的源码分析,在讲源码前我先阐述一下基本对象池的基本概念吧。现在jav...
阅读(323) 评论(0)

[置顶] Java线程池使用与原理

线程池是什么?我们可以利用java很容易创建一个新线程,同时操作系统创建一个线程也是一笔不小的开销。所以基于线程的复用,就提出了线程池的概念,我们使用线程池创建出若干个线程,执行完一个任务后,该线程会存在一段时间(用户可以设定空闲线程的存活时间,后面会介绍),等到新任务来的时候就直接复用这个空闲线...
阅读(2494) 评论(7)

[置顶] 一篇文章了解mvc框架工作流程

动机argo是58同城开源出来的一个基于java的轻量级mvc框架。这个框架是其13年开源出来源代码,但接下来就没有维护了,但58内部好像还一直维护沿用wf(argo内部称呼)。 但阅读这款轻量级框架源码对于我们理解mvc框架运行原理还是有很大裨益的。其代码量不是很大,这也是我读的第一个开源框架...
阅读(3035) 评论(3)

HashMap

注意事项 数组+链表/红黑树来存储数据 链表长度为8(默认)时,转化为红黑树,加快查询速度。 数组下标是 (n-1)&hash,n表示数组长度,hash表示key的hash值 构造参数 无参:数组长度和扩容因子采用默认(16,0.75) 单参:指定数组大小(向上...
阅读(14) 评论(0)

java线程不安全类 SimpleDateFormat

不安全在什么地方? 前段时间在做系统数据清洗过程中,因为用到多线程及simpeldateformat,一开始没注意,遇到了线程安全问题,就在此描述解决办法。 // Called from Format after creating a FieldDelegate private S...
阅读(65) 评论(0)

红黑树

红黑树是什么红黑树是一种树形数据结构,它的节点值的大小是按照左节点<父节点<右节点 这种顺序排列的。所有在搜索红黑树的值时,其复杂度是Olg(n)。如果有一组数据1,2,3,4,5,6,7按照这种顺序插入到树中,会导致所有的数据都在右节点上,这时候去这个树中搜索数据时,其复杂度依然是n...
阅读(69) 评论(0)

模板方法模式

定义&示例HeadFirst定义:在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。其实就是将一些算法、业务步骤封装到一个方法中,使用者直接调用该模板方法,这样保证该步骤不会出错,减轻调用方压力。老规矩先放一...
阅读(233) 评论(0)

命令模式

命令模式就是将方法(运算业务逻辑代码)进行封装,并将该方法传递给执行者,执行者不关心所执行的命令(业务代码)是如何实现的。 java的线程池就是命令模式的一个体现。1.示例deom说明 demo源码 demo中我使用的场景是遥控器要控制家里的电器设备。遥控器RemoteController的...
阅读(387) 评论(0)

单例模式

单例模式其实是一个很简单的设计模式,其作用就是为了让某一个类的全局实例只有一个。 我认为这个模式在oop上思想的增加是很少的。但这个模式却是对多线程安全认知的一个很好的例子。这是我代码的demo单例github demo其实我代码中的注释也写的很明白了。 能保证线程安全的单例大概有三种写法。第...
阅读(258) 评论(0)

工厂模式

工厂模式中大概可分为三种:简单工厂,工厂方法,抽象工厂。 工厂模式的优点是让代码之家的依赖关系变少,降低项目耦合。简单工厂简单工厂可以说并不是一种设计模式,只是一种代码风格。 这是我写的一个简单工厂的例子简单工厂demo 这个工厂用来获取物品对象,利用多态实现这一个功能,如果代码中需要很多n...
阅读(332) 评论(0)

装饰者模式

定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案示例说明这是我github上的代码示代码talk is cheap,show your code 所以读者直接参考我github上的代码,我这里虚构了一个常见游戏场景,不同角色有自己的能力值,里面的武器也都有相应的能...
阅读(274) 评论(0)

观察者模式

定义定了了对象之间的一对多依赖,这样依赖,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新在具体实现中,开发者可以自己定义一整套观察者框架,也可以利用java提供的api实现这个模式自定义实现观察者模式观察者模式主要在解耦方面有巨大的作用,开发者可以自己实现整个观察者模式框架,一般会实现...
阅读(335) 评论(1)

策略模式

定义首先给出《Head First设计模式》中的定义:策略模式定义了算法族,分别封装起来,让他们之间可以相互替代,此模式让算法的变化独立于使用算法的客户。这个定义还是很到位的,总的来说策略模式会让代码复用率很高,并且让代码更加规整简洁。像我实例代码中使用了游戏中常用的一个场景,我定义了一个抽象类P...
阅读(203) 评论(0)

MySQL慢SQL优化-如何分析性能瓶颈

优化慢SQL首先得知道瓶颈在哪,本文主要介绍慢SQL性能瓶颈分析。本文就以前段时间参加的一个SQL优化活动为例。 mysql命令行或者一些可视化工具在sql执行时间的精度比较低,尤其是命令行只显示到10ms,所以需要打开mysql的执行时间监听 set profiling = 1;然后使用sho...
阅读(472) 评论(0)

消息队列ActiveMQ的安装与使用

(一)介绍消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等...
阅读(320) 评论(0)

linux(ubuntu)下搭建nginx,tomcat负载均衡环境搭建

随着用户访问量增加以及单台服务器处理能力瓶颈,集群可以很好的解决这个问题,集群也可以保证在单台服务器宕机系统也可以正常运行。负载均衡就是让一个集群(多台机器处理相同的业务)的机器的使用率尽可能平均。比较常用场景:一是web服务器集群,例如用户访问了www.yasin.ac.cn这个网站,通过负载均...
阅读(1134) 评论(0)

代理模式-Java动态代理的实现及应用

Java动态代理其实写日常业务代码是不常用的,但在框架层一起RPC框架的客户端是非常常见及重要的。spring的核心思想aop的底层原理实现就使用到了java的动态代理技术。 使用代理可以实现对象的远程调用以及aop的实现。 java的动态代理的实现,主要依赖InvoctionHandler(...
阅读(333) 评论(0)

java常用的log系统

项目中log系统必不可少的一个组件,其用户无需赘述。 java日志系统一般会分为接口层和实现层,例如common-logging和slf4j等 1.java的日志系统,常用的common-logging.jar这个类似是log系统接口规约,log4j则是具体的实现工具。当然logging可以脱...
阅读(428) 评论(0)
    个人资料
    持之以恒
    等级:
    访问量: 8万+
    积分: 1405
    排名: 3万+
    最新评论