- 博客(216)
- 资源 (34)
- 收藏
- 关注

原创 JVM初探- 使用堆外内存减少Full GC
使用堆外内存减少Full GC - JVM大部分主流互联网企业线上Server JVM选用了CMS收集器(如Taobao、LinkedIn、Vdian), 虽然CMS可与用户线程并发GC以降低STW时间, 但它也并非十分完美, 尤其是当出现Concurrent Mode Failure由并行GC转入串行时, 将导致非常长时间的Stop The World
2017-01-13 11:00:40
17312
3

原创 JVM初探- 内存分配、GC原理与垃圾收集器
JVM初探- 内存分配、GC原理与垃圾收集器 JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收. 除了在概念上可简单认为new时分配外, 我们着重介绍后面的3个步骤:VM内存分配策略: 对象内存主要分配在新生代Eden区, 如果启用了本地线程分配缓冲, 则优先在TLAB上分配, 少数情况能会直接分配在
2016-12-30 20:45:21
12414
16

原创 JVM初探 -JVM内存模型
JVM是每个Java开发每天都会接触到的东西, 其相关知识也应该是每个人都要深入了解的. 但接触了很多人发现: 或了解片面或知识体系陈旧. 因此最近抽时间研读了几本评价较高的JVM入门书籍, 算是总结于此. 本系列博客的主体来自 深入理解Java虚拟机(第二版) 和 实战Java虚拟机 两部书, 部分内容参考 HotSpot实战 和 深入理解计算机系
2016-12-02 18:47:48
53428
5
原创 简洁的Java8
再次回到阿里, 感觉变化好大: 一是服务资源Docker化, 最牛逼的阿里DB团队竟然把DB放到了容器中, 还放到了线上环境; 二是全集团Java8(记得离开时还是1.6、1.5, 甚至还有1.4), 在外面创业公司都还停留在1.7的时代, 阿里竟率先使用了Java8, 而且还做了高性能的定制, 因此阿里人也就有机会在生产环境体验到Java8如丝般的顺滑流畅. 而本篇就从对Java8影响最大的`Stream`开始说起
2017-07-09 18:17:20
7319
原创 迭代器模式
迭代器模式: 提供一种方法顺序访问聚合对象(如List、Set)内的每个元素, 而又不暴露聚合对象的内部实现. - 可复用面向对象软件的基础
2017-02-23 13:20:04
5444
原创 备忘录模式
备忘录模式标签 : Java与设计模式 备忘录模式: 在不破坏封装性的前提下, 捕获一个对象的内部状态( or 拷贝), 并在该对象之外保存这个状态, 这样以后就可 将该对象恢复到原先保存的状态. (图片来源: 设计模式: 可复用面向对象软件的基础) 将保存细节封装在Memento中, 后面即使修改了保存细节也不会影响客户端.模式实现案例: 游戏进度保存在攻击Boss前,
2017-02-17 14:34:09
3097
2
原创 岁月划过生命线(2016 年终总结 -季度之星)
年假结束, 明天就要回到杭州, 回到我fighting的战场. 回首过去的2016, 放纵了许多, 但也收获了很多: n个项目、n个框架、第一个季度之星、头像第一次登上优快云以及第一个年度超越预期的KPI…
2017-02-04 13:57:54
6693
3
原创 责任链模式
责任链模式将能够处理某一类请求的对象串成一条链, 请求沿链传递, 链上的对象逐个判断是否有能力处理该请求. 使多个对象都有机会处理请求, 从而避免请求发送者和接收者之间的耦合关系. 优势: 发出请求的客户端并不知道链上的哪个对象最终处理该请求, 这使得系统可以在不影响客户端的前
2016-12-23 21:57:16
2798
6
原创 Touch 方法&属性 映射工具
Touch 方法&属性 映射工具(0.5 版本) 原先需要测试一个接口(如Dubbo、DAO), 或为线上留后门, 需要写大量的Web层(Api、Servlet或Controller)代码并在浏览器触发, 进而调用到实际想要执行的方法或想查看的属性, 而有了Touch后, 你可以专注于业务功能的实现, 而不需要再书写这些跟业务无关的触发代码.
2016-12-16 17:49:14
2576
1
原创 策略模式
Java与设计模式: 定义一系列的算法, 将其一个个封装起来, 并使它们可相互替换, 使得算法可独立于使用它的客户而变化. 策略模式对应于解决某一问题的一个算法族, 允许用户从该算法族中任选一个算法解决该问题, 同时可以方便的更换算法或者增加新的算法. 并由客户端决定调用哪个算法. 核心: 分离算法, 选择实现
2016-12-09 18:47:02
3264
3
原创 状态模式
允许一个对象在其内部状态改变时改变其行为, 其对象看起来像是改变了其类. 解决系统中复杂对象的状态流转以及不同状态下的行为封装问题.(来源: 设计模式:可复用面向对象软件的基础)
2016-11-25 19:08:30
4375
3
原创 岁月划过生命线(16.02 ~ 10 -提前转正)
10月9号收到了提前转正通知后就想写些总结, 总结在微店的一年里见过的人、读过的书、做过的事儿, 不然怕很多有意思的细节以后都忘了. 但一直找借口迟迟懒得动笔, 这篇总结断断续续竟写了一个月…
2016-11-18 18:09:39
7425
26
原创 Maven 核心原理
Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖、打包), Maven很多核心的功能反而没用上.
2016-11-05 11:18:38
45788
10
原创 模板方法模式
定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变一个算法的结构的前提下重定义该算法的某些特定步骤. 处理某个流程的骨架代码已经具备, 但其中某节点的具体实现暂不确定, 此时可采用模板方法, 将该节点的代码实现转移给子类完成.
2016-10-16 16:18:54
4081
2
原创 命令模式
在对象的结构和创建问题都解决了之后,就剩下对象的行为问题了: 如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高. 行为型模式共有11个可供研究,它们分别是:命令模式、解释器模式、访问者模式、模板方法模式、观察者模式、状态模式、策略模式、责任链模式、中介者模式、备忘录模式、迭代器模式.正文- 命令模式
2016-10-10 07:28:10
5693
2
原创 Lua语言模型 与 Redis应用
从 2.6版本 起, Redis 开始支持 Lua 脚本 让开发者自己扩展 Redis. 本篇博客主要介绍了 Lua 语言不一样的设计模型(相比于Java/C/C++、JS、PHP), 以及 Redis 对 Lua 的扩展, 最后结合 Lua 与 Redis 实现了一个支持过期时间的分布式锁. 我们希望这篇博客的读者朋友可以在读完这篇文字之后, 体会到 Lua 这门语言不一样的设计哲学, 以及 更加得心应手的使用
2016-10-01 10:01:46
18834
2
原创 享元模式
享元模式标签 : Java与设计模式 内存属于稀缺资源, 不能随便浪费. 如果有很多相同/相似的对象, 我们可以通过享元节省内存.内部状态 vs. 外部状态 享元模式(Flyweight): 运用共享技术有效地重用大量细粒度的对象.享元对象能做到共享的关键是区分了内部状态和外部状态: 在享元对象内部并且不会随环境改变而改变的共享部分, 可称之为享元对象的内部状态.而随环境改变而改变
2016-09-20 07:47:07
5339
2
原创 外观模式
外观模式标签 : Java与设计模式 外观模式: 又称门面模式: 外观Facade为子系统的一组接口提供一个一致界面,使得这组子系统易于使用(通过引入一个新的外观角色降低原系统复杂度,同时降低客户类与子系统的耦合度). 图片来源: 设计模式: 可复用面向对象软件的基础.实现案例需求: 租房有过自己找房租房经历的同学能够体会得到找房是件很痛苦的事, 不光要挨个小区跑而且还要跟(二
2016-09-03 06:53:14
4446
1
原创 组合模式
组合模式标签 : Java与设计模式 组合模式: 将对象组合成树形结构以表示‘部分-整体’的层次结构, 使得用户对单个对象和组合对象的使用具有一致性.解析 组合模式描述了如何将容器和叶子节点进行递归组合, 使用户在使用时可一致的对待容器和叶子, 为处理树形结构提供了完美的解决方案.当容器对象的指定方法被调用时, 将遍历整个树形结构, 并执行调用. 整个过程递归处理. (图片来源: 设计
2016-09-02 06:18:25
2338
1
原创 中介者模式
中介者模式标签 : Java与设计模式面向对象设计鼓励将行为分布到各个对象中, 这种分布可能会导致对象间有许多连接. 在最坏的情况下, 每一个对象都需要知道其他所有对象. 虽然将一个系统分割成许多对象可增强可复用性, 但是对象间相互连接的激增又会降低其可复用性. 大量的连接关系使得一个对象不可能在没有其他对象的协助下工作(系统表现为一个不可分割的整体), 此时再对系统行为进行任何较大改动就十分困
2016-08-29 09:07:46
2963
3
原创 装饰者模式
装饰者模式(Decorator): 又称包装器(Wrapper), 可以动态地为一个对象添加一些额外的职责. 就增加功能来说, 装饰者模式是一种用于替代继承的技术, 他无须通过增加子类继承就能扩展对象的已有功能, 而是使用对象的关联关系代替继承关系 , 更加灵活, 同时还可避免类型体系的快速膨胀.
2016-08-28 08:17:52
3056
2
原创 网络与RPC
网络与RPC标签 : Java基础 Java为网络编程提供的java.net包封装了底层通信细节, 包含了大量的基础组件以及TCP/UDP协议的编程接口, 使得开发者可以专注于解决问题, 而不用关注通信细节.基础组件java.net包下包含如下网络基础组件:InetAddress 代表一个IP地址,提供了获取IP地址、主机名、域名,以及测试IP地址是否可达等方法; Inet4Address
2016-08-15 13:00:13
7453
2
原创 Redis与Java - 实践
Redis与Java - 实践标签 : Java与NoSQLTransaction Redis事务(transaction)是一组命令的集合,同命令一样也是Redis的最小执行单位, Redis保证一个事务内的命令执行不被其他命令影响.`MULTI` SADD user:1:following 2 SADD user:2:follower 1`EXEC`vs. RDBMS
2016-07-26 10:08:37
8983
1
原创 Redis与Java - 数据结构
Redis与Java标签 : Java与NoSQL Redis(REmote DIctionary Server) is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures suc
2016-07-23 08:02:38
9146
原创 Spring MVC 实践 - Component
Spring MVC 实践标签 : Java与WebConverter Spring MVC的数据绑定并非没有任何限制, 有案例表明: Spring在如何正确绑定数据方面是杂乱无章的. 比如: Spring总是试图用默认的语言区域将日期输入绑定到java.util.Data, 如果想要使用不同的日期格式(format),就需要Converter的协助.Spring提供了Converter接口来
2016-07-05 15:26:36
5843
1
原创 Spring MVC 实践 - Base
Spring MVC 实践标签 : Java与WebSpring Web MVC Spring-Web-MVC是一种基于请求驱动的轻量级Web-MVC设计模式框架, Spring MVC使用MVC架构思想, 对Web层进行职责解耦,使用请求-响应模型将数据、业务与视图进行分离, 简化开发.MVCMVC(模型-视图-控制器)是一个以设计界面应用程序为基础的架构模式,通过分离模型-视图-控制器在应
2016-07-05 14:47:48
8136
1
原创 Memcached - In Action
Memcached标签 : Java与NoSQLWith Java比较知名的Java Memcached客户端有三款:Java-Memcached-Client、XMemcached以及Spymemcached, 其中以XMemcached性能最好, 且维护较稳定/版本较新:<dependency> <groupId>com.googlecode.xmemcached</groupId>
2016-06-14 21:30:58
4942
1
原创 Memcached - Base
Memcached标签 : Java与NoSQL 在程序的实现中, 经常会忽略程序的运行时间. 即使采用类似的实现方法, 有时候运行速度也会相差很多. 大多数情况下, 这一速度上的差异是由数据访问速度的差异所导致的.– 松本行弘<代码的未来> Memcached is an in-memory key-value store for small chunks of arbitrary da
2016-06-13 17:35:28
2763
原创 Nginx - 代理、缓存
Nginx标签 : nginx代理代理服务可简单的分为正向代理和反向代理:正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上, 然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源
2016-05-25 20:24:50
18553
原创 Nginx - 配置
Nginx标签 : nginxNginx nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev. For a long time, it has been ru
2016-05-25 07:30:52
19098
原创 CSS简单使用
CSS简单使用标签 : 前端技术 CSS(Cascading Style Sheet : 层叠样式表单)用来定义网页显示效果. 可以解决HTML代码对样式定义的重复,提高后期样式代码的可维护性,并增强网页的显示效果. 即:CSS将网页内容与显示样式分离,增强了显示功能.CSS与HTML结合CSS与HTML结合的方式有四种:style属性: 在每个HTML标签上均有一个style属性, 将样
2016-05-15 20:37:44
4866
原创 Servlet - Upload、Download、Async、动态注册
Upload、Download、Async标签 : Java与WebUpload-上传 随着3.0版本的发布,文件上传终于成为Servlet规范的一项内置特性,不再依赖于像Commons FileUpload之类组件,因此在服务端进行文件上传编程变得不费吹灰之力.客户端要上传文件, 必须利用multipart/form-data设置HTML表单的enctype属性,且method必须为POST
2016-05-11 07:47:27
9749
1
原创 Servlet - Listener、Filter、Decorator
Listener、Filter、Decorator标签 : Java与WebListener-监听器Listener为在Java Web中进行事件驱动编程提供了一整套事件类和监听器接口.Listener监听的事件源分为ServletContext/HttpSession/ServletRequest三个级别:ServletContext级别 Listener 场景 ServletConte
2016-05-08 11:17:48
7470
1
原创 Servlet - 会话跟踪
会话跟踪标签 : Java与Web会话跟踪 HTTP本身是“无状态”协议,它不保存连接交互信息,一次响应完成之后即连接断开,下一次请求需要重新建立连接,服务器不记录上次连接的内容.因此如果判断两次连接是否是同一用户, 就需要使用会话跟踪技术来解决.常见的会话跟踪技术有如下几种:URL重写: 在URL结尾附加会话ID标识,服务器通过会话ID识别不同用户.隐藏表单域: 将会话ID埋入HTML表单隐
2016-05-03 10:51:24
13998
2
原创 HTML简单使用
HTML简单使用标签 : 前端技术HTML HTML(Hypertext Marked Language), 即超文本标记语言,能够独立于各种操作系统平台(如UNIX/Linux/Windows等)进行信息展示.HTML由WEB发明者Tim Berners-Lee和同事Daniel W.Connolly于1990年创立. 所谓超文本:是因为它可以加入图片/声音/动画/视频等内容(超越了文本
2016-04-27 17:04:43
2624
原创 Servlet - 基础
Servlet - 基础标签 : Java与WebHTTP协议 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器(Browser)和万维网服务器(WebServer)之间互相通信的规则.其主要特点可简单概括如下: 1) 简单快速: 客户端向服务器请求服务时,只需传送请求方法和路径, 因此使得HTTP服务器的程序规模小,通信速度
2016-04-26 07:18:10
13456
2
原创 Spring 实践 -拾遗
Spring 实践标签: Java与设计模式Junit集成前面多次用到@RunWith与@ContextConfiguration,在测试类添加这两个注解,程序就会自动加载Spring配置并初始化Spring容器,方便Junit与Spring集成测试.使用这个功能需要在pom.xml中添加如下依赖:pom.xml<dependency> <groupId>org.springframew
2016-03-12 08:52:13
5469
2
原创 Spring 实践 -IoC
Spring 实践标签: Java与设计模式Spring简介 Spring是分层的JavaSE/EE Full-Stack轻量级开源框架.以IoC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)为内核, 取代EJB的臃肿/低效/脱离现实. 主页http://spring.io/ IoC与DIIOC:
2016-03-09 07:43:58
4958
2
原创 Spring 实践 -AOP
Spring 实践标签: Java与设计模式AOP引介AOP(Aspect Oriented Programing)面向切面编程采用横向抽取机制,以取代传统的纵向继承体系的重复性代码(如性能监控/事务管理/安全检查/缓存实现等). 横向抽取代码复用: 基于代理技术,在不修改原来代码的前提下,对原有方法进行增强.Spring AOP 历史1.2开始, Spring开始支持AOP技术(Sprin
2016-03-07 08:32:50
5666
1
原创 MyBatis 实践 -动态SQL/关联查询
MyBatis 实践标签: Java与存储动态SQL动态SQL提供了对SQL语句的灵活操作,通过表达式进行判断,对SQL进行拼接/组装.if对查询条件进行判断,如果输入参数不为空才进行查询条件的拼接.mapper<select id="selectUser" resultType="com.fq.domain.User" parameterType="com.fq.domain.User">
2016-02-28 19:39:49
7577
3
epoll封装与测试代码
2015-03-11
Socket 类封装 改进版
2015-03-09
est_for_shutdown_and_close源代码
2015-03-09
test_for_shutdown_and_close
2015-03-09
Socket-类封装
2015-02-28
echoServer定长包与添加报头版本
2015-02-27
基于多进程的P2P聊天程序
2015-02-27
echoserver多进程版
2015-02-26
ShmFifo源代码(C++版)
2015-02-10
shmfifo源代码(C语言版)
2015-02-10
C++ 标准模版库
2013-10-20
codeblocks12.10汉化包
2013-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人