- 博客(61)
- 资源 (13)
- 问答 (1)
- 收藏
- 关注
原创 Protobuf学习笔记
Protobuf简介Protobuf是谷歌开源的一个序列化框架,支持跨语言,高性能等特性,在用于网络传输进行序列化的场景下使用广泛。它具有以下优点:性能好,效率高代码生成机制,数据解析类自动生成支持向后兼容和向前兼容支持多种编程语言(java,c++,python)这里学习的基于proto3版本,与proto2有稍许区别。Protobuf编译学习Proto...
2018-05-12 13:34:03 529
原创 Linux下安装MySQL5.7版本
下载MySQL我是从CSDN上下载的32位的版本,可以参考下,实例如图: 安装解压tar包注意:解压tar包和解压tar.gz包的方式是有区别的。解压tar包通过命令[root@promote install]# tar xvf xxx.tar而解压tar.gz包则要通过[root@promote install]# tar xzvf xxx.tar...
2018-05-12 13:32:32 558
原创 Linux性能调优方法总结(二)
上一章节Linux性能调优方法总结(一)讲述了如何对Linux的网络进行调优,本章节讲述如何对磁盘进行调优。磁盘子系统的调优磁盘在LAMP架构中扮演着重要的角色,静态文件、模板和代码都来自磁盘,组成数据库的数据表和索引也来自磁盘,对磁盘的许多调优(尤其是对数据库)集中于避免磁盘访问,因为磁盘访问的延迟相当高,因此,花一些时间对磁盘硬件进行优化是有意义的。首先要做的是,确保在文件...
2018-05-12 13:31:20 3160 1
原创 Linux性能调优方法总结(一)
网络性能调优大多数Linux发行版都定义了适当的缓冲区和其他TCP参数,可以通过修改这些参数来分配更多的内存,从而改进网络性能。设置内核参数的方法是通过proc接口,也就是通过读写/proc中的值。幸运的是,sysctl可以读取/etc/sysctl.conf中的值并根据需要填充/proc,这样就能够更轻松地管理这些参数。下面展示了在互联网服务器上应用于Internet服务器的一些比较...
2018-05-12 13:30:12 7875 1
原创 FastDFS 5.0.8搭建步骤
卸载旧版本kill掉原来的进程删除原来的安装目录删除原来的配置文件。在/etc目录下删除脚本,在/usr/local/bin目录下和/usr/bin目录下安装环境本篇是将tracker和storage安装在同一台服务器上,同时在该服务器上安装nginx。安装FastDFS上传安装包到/usr/local/fdfs/目录下,包括的包如下:fastdf...
2018-05-12 13:28:17 738 2
原创 从Java内存模型讲双重检查锁原理
什么是双重检查锁?双重检查锁(Double-Check Locking),顾名思义,通过两次检查,并基于加锁机制,实现某个功能。 要理解什么是双重检查锁,我们从常见的单例模式说起。看第一个例子: 上图中的单例模式一看就知道存在线程问题,如果两个线程:线程A和线程B,同时访问该类,线程A访问到第6行,在还没有实例化完成的时候,线程B访问到第5行,此时也会判断到instance=nul...
2018-05-12 13:26:08 224
原创 Log4j2实现加载不同模块的配置文件
在有的场景下,会出现各个业务模块独立配置自己的log4j2.xml配置文件。如果是单个log4j2.xml,只需要放到classes目录下即可自动加载,如果是多个分散在不同目录下的配置文件怎么办呢?实现方法主要有两步: - 将log4j2升级到2.11版本; - 获取到这些配置文件; - 将这些配置文件加载到环境变量中。将log4j2升级到2.11版本据我所知,最新的log4...
2018-05-10 21:05:18 4538
原创 Disruptor系列1:初识Disruptor
通过这篇文章来记录和分享对Disruptor的初步了解认识Disruptor框架。Disruptor是什么?Disruptor是一个高性能的异步处理框架,或者可以认为是线程间通信的高效低延时的内存消息组件,它最大特点是高性能,其LMAX架构可以获得每秒6百万订单,用1微秒的延迟获得吞吐量为100K+。 它是如何实现高性能的呢?它由于JDK内置的队列有什么区别呢?JDK内置内存...
2018-05-10 09:34:45 2594
原创 Native函数库导致OOM的触发原理
线上应用经常会出现OutOfMemoryError错误,档案引起原因多种多样,包括堆内存溢出(Java Heap Space)、方法区持久代内存溢出(Permanet Space)以及本文需要说道的Native操作本地内存出现的内存溢出问题。要说明这个问题,就先要说明Native函数库是怎样操作内存空间的。NIO中的Native函数库在JDK1.4中新加入了NIO类,引入一种基于渠道与缓...
2014-12-12 12:57:00 515
原创 Nginx日志统计方案全过程
本文主要记录下给予python的nginx日志统计过程,主要原因是最近系统经常遭到未知程序的疯狂爬数据,虽然做了防爬机制,但是还是必须要找出是哪些IP访问次数比较多。想到的办法就是通过分析ngxin日志,从而找出这些IP排行即可。具体方案的操作步骤包括:ngxin日志每日切割功能;设置ngxin的日志格式;编写python代码在每日切割之前统计下access.log中的IP访问次数...
2014-11-29 13:17:12 356
原创 提升tomcat服务器性能的六条经验
在线上环境中我们是采用了tomcat作为Web服务器,它的处理性能直接关系到用户体验,在平时的工作和学习中,归纳出以下6种调优经验。1. 服务器资源服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。(1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。(2)内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:M...
2014-11-26 12:13:49 272
原创 [转]java中byte转换int时为何与0xff进行与运算
在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[ i ] & 0xFF); if (hex.leng...
2012-01-19 14:29:29 83
Java I/O 深入学习( 二)之数组类输入输出流
1. ByteArrayOutputStream在实例化的时候会创建一个byte类型的数组缓冲区,默认32个字节,可以无限增长。可以将内存中的对象读到该数组中。其中write()方法负责往数组中写数据。实例化时的代码:/** * Creates a new byte array output stream. The buffer capacity...
2012-01-18 15:21:37 133
Java I/O 深入学习(一)
<!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDr...
2012-01-18 14:45:35 92
设计模式(三)——原型模式
今天主要说说原型模式prototype,原型模式最基本的理解就是复制一份对象实例,它也是一种创建型模式。一般情况是我们新建一个原型对象类,然后对该对象进行复制,重新修饰中就可以当作新对象使用了。这在处理比较复杂的对象时是非常高效的,因为使用的是已经存在实例化的对象。一般采用原型模式的原型对象都需要实现Cloneable接口,实现方式就是使用clone()方法。/** * 原型模式...
2011-12-29 19:57:29 90
设计模式(二)——单例模式
写单例模式,总是让我想起孔乙己写“茴香豆”的茴的四种写法,虽然感觉他比较迂腐,但是在说到单例模式时,却也是忍不住的要说单例模式也有好几种写法,这样算来,自己也算迂腐了。不过不管怎样,既然是做技术的,多掌握一点也是比较好的,同时也将积累的分享给大家,大家各凭所好吧。 在说“茴”字之前,需要先说下什么是“茴香豆”,也就是我们的单例模式。单例模式就是让一个对象只产生一个实例,并且对外提供一个全局...
2011-12-26 16:24:41 79
设计模式(一)——面向对象原则
面向对象设计原则总结来讲包含六大基本原则,即开闭原则、里氏代换原则、合成复用原则、接口隔离原则、迪米特法则和依赖倒转原则。 掌握这六大基本设计原则的精髓,才能真正为以后的设计模式的学习做好铺垫,才能整理理解面向对象开发设计的原理,能够实现代码复用、开发可扩展、可重用的高质量代码。 开闭原则,即面向扩展开放,面向修改封闭,也就是说系统支持扩展,但是不支持修改。为什么这么说?在开发阶段...
2011-12-23 15:28:58 89
js原生支持checkbox框半选状态
今天发现,原来JS是原生支持checkbox框的,有个属性indeterminate,其值为true/false,当为true时,checkbox就显示为绿色方块心的checkbox框。但是,该属性不能直接写在html标签里,必须使用js来赋值才行。同时,可惜的是,该属性不支持firefox,看来在firefox下只能用图片代替了。。。...
2011-12-22 20:39:57 416
UML学习笔记(三)——用例图
用例图用例图主要用于系统的初期进行系统需求分析,用于描述系统有哪些功能,从用户的角度观察系统应支持哪些功能,帮助分析人员理解系统的行为,同时也可以帮助测试人员了解系统有哪些功能,便于编写测试用例。一个系统中可以有多个用例图,每个用例图可以用来表示其中一个模块应有的功能。用例图主要包括参与者、用例、系统边界、通信关联四种组成部分。参与者是指与系统发生交互的人或者其它系统或者其...
2011-12-20 20:56:40 176
UML学习笔记(二)
UML每一个视图针对团队中的不同受众1. 系统的用例视图面向最终用户和测试人员;2. 系统的逻辑试图面向分析人员和设计人员;3. 系统的组件试图面向系统集成人员和编程人员;4. 系统的部署视图面向系统和网络工程师; UML建模过程1. 需求分析——用例图;2. 系统分析:分析业务规则——状态图;3. 系统分析:分析业务流程——活动图;4. 系统设计:设计静态...
2011-12-20 20:31:42 86
UML学习笔记(一)
UML图可以归纳为静态建模和动态建模两大类。静态建模主要包括 1. 用例图,主要坐拥是描述需求; 2. 静态图,包括类图、对象图和包图,主要作用是描述类的结构; 3. 实现图,包括组件图、部署图,主要作用是描述软件结构;动态建模主要包括 1. 行为图,包括状态图、活动图,主要作用是描述动态建模; 2. 交互图,包括序列图、协作图,主要描述交...
2011-12-17 13:21:37 103
Redis V4.0 最新版中文命令参考学习手册
2017-11-15
ElasticSearch JAVA开发手册
2017-11-15
Servlet3.1规范(最终版)
2017-09-18
求教关于多任务并发执行的问题
2010-10-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人