- 浏览: 14819 次
- 性别:
- 来自: 南京
最新评论
文章列表
线上应用经常会出现OutOfMemoryError错误,档案引起原因多种多样,包括堆内存溢出(Java Heap Space)、方法区持久代内存溢出(Permanet Space)以及本文需要说道的Native操作本地内存出现的内存溢出问题。要说明这个问题,就先要说明Native函数库是怎样操作内存空间的。
NIO中的Native函数库
在JDK1.4中新加入了NIO类,引入一种基于渠道与缓冲区的I/O方式,它可以通过本机Native函数库直接分配本机内存,然后通过一个存储在Java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作。所以由Native函数库引起的OOM ...
本文主要记录下给予python的nginx日志统计过程,主要原因是最近系统经常遭到未知程序的疯狂爬数据,虽然做了防爬机制,但是还是必须要找出是哪些IP访问次数比较多。想到的办法就是通过分析ngxin日志,从而找出这些IP排行即可。具体方案的操作步骤包括:
ngxin日志每日切割功能;
设置ngxin的日志格式;
编写python代码在每日切割之前统计下access.log中的IP访问次数并将统计结果录入MongoDB;
编写web查询MongoDB进行统计。
下面按照每个步骤详细说明。
在线上环境中我们是采用了tomcat作为Web服务器,它的处理性能直接关系到用户体验,在平时的工作和学习中,归纳出以下6种调优经验。
1. 服务器资源
服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。
(1) 对于高 ...
在剖析该问题前请看如下代码
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.length() == 1) {
hex = '0' + hex;
}
ret += ...
1. ByteArrayOutputStream
在实例化的时候会创建一个byte
类型的数组缓冲区,默认
32
个字节,可以无限增长。可以将内存中的对象读到该数组中。其中
write()
方法负责往数组中写数据。
实例化时的代码:
/**
* Creates a new byte array output stream. The buffer capacity is
* initially 32 bytes, though its size increases if necessary.
*/
public ByteAr ...
<!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> ...
设计模式(三)——原型模式
- 博客分类:
- 设计模式
今天主要说说原型模式prototype,原型模式最基本的理解就是复制一份对象实例,它也是一种创建型模式。一般情况是我们新建一个原型对象类,然后对该对象进行复制,重新修饰中就可以当作新对象使用了。这在处理比较复杂的对象时是非常高效的,因为使用的是已经存在实例化的对象。
一般采用原型模式的原型对象都需要实现Cloneable接口,实现方式就是使用clone()方法。
/**
* 原型模式——浅复制
* @author xiAoT
*
*/
public class Prototype implements Cloneable {
@Override
prote ...
写单例模式,总是让我想起孔乙己写“茴香豆”的茴的四种写法,虽然感觉他比较迂腐,但是在说到单例模式时,却也是忍不住的要说单例模式也有好几种写法,这样算来,自己也算迂腐了。不过不管怎样,既然是做技术的,多掌握一点也是比较好的,同时也将积累的分享给大家,大家各凭所好吧。
在说“茴”字之前,需要先说下什么是“茴香豆”,也就是我们的单例模式。单例模式就是让一个对象只产生一个实例,并且对外提供一个全局的方法对其进行调用,通常来说方法名都使使用getInstance()。
再来说说,单例模式的整体架构。
(1)私有的构造函数
(2)私有的静态实例,该实例禁止外部访问。
(3)一个公有的静 ...
面向对象设计原则总结来讲包含六大基本原则,即开闭原则、里氏代换原则、合成复用原则、接口隔离原则、迪米特法则和依赖倒转原则。
掌握这六大基本设计原则的精髓,才能真正为以后的设计模式的学习做好铺垫,才能 ...
今天发现,原来JS是原生支持checkbox框的,有个属性indeterminate,其值为true/false,当为true时,checkbox就显示为绿色方块心的checkbox框。但是,该属性不能直接写在html标签里,必须使用js来赋值才行。
同时,可惜的是,该属性不支持firefox,看来在firefox下只能用图片代替了。。。
用例图
用例图主要用于系统的初期进行系统需求分析,用于描述系统有哪些功能,从用户的角度观察系统应支持哪些功能,帮助分析人员理解系统的行为,同时也可以帮助测试人员了解系统有哪些功能,便于编写测试用例。
一个系统中可以有多个用例图,每个用例图可以用来表示其中一个模块应有的功能。
用例图主要包括参与者、用例、系统边界、通信关联
四种组成部分。
参与者是指与系统发生交互的人或者其它系统或者其它模块。
用例是指系统应该提供的服务。
系统边界,用于圈定系统所处子系统的范围。
通信关联描述了参与者与用例之间的交互关系。
UML每一个视图针对团队中的不同受众
1. 系统的用例视图面向最终用户和测试人员;
2. 系统的逻辑试图面向分析人员和设计人员;
3. 系统的组件试图面向系统集成人员和编程人员;
4. 系统的部署视图面向系统和网络工程师;
UML建模过程
1. 需求分析——用例图;
2. 系统分析:分析业务规则——状态图;
3. 系统分析:分析业务流程——活动图;
4. 系统设计:设计静态结构——类图和包图;
5. 系统设计:类被调用关系——序列图;
6. 系统设计:用户调用类的过程——协作图;
7. 系统架构——组件图和部署图。
有时你在办公室里浏览乱七八糟的网站(反正跟工作无关就是啦),突然老板进来了,那么这枚叫做PanicButton的Chrome扩展就可以帮到你了,点击它之后即可隐藏所有标签页,为了保险起见你甚至可以设置一个安全页,比如说是你们公司的网站或是内部协作平台之类的,在隐藏那些标签页的同时让这个安全网页跳出来,证明你心系工作:
这个扩展也支持快捷键启动,那样就更加的迅雷不及掩耳盗铃之势了。作者甚至心细到为你设计了一个恢复密码,只有输入对了密码才能恢复之前浏览的网页,否则老板永远不知道你在做啥。
当然当然,最后的最后你还需要将这个扩展的按钮隐藏起来,让别人不知道你在玩这套把戏。
我怀疑这枚 ...