自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

原创 分布式的那些事

1、分布式的基本概念:http://blog.jobbole.com/95588/2、分布式系统的一致性探讨:http://blog.jobbole.com/95618/3、关于分布式事务、两阶段提交协议、三阶提交协议:http://blog.jobbole.com/95632/ 通过文章3能够明白两阶段提交协议、三阶提交协议是解决什么问题(分布式事务是避免数据不一致,两阶段/三阶段提...

2015-12-22 15:30:35 146

原创 IaaS,PaaS和SaaS

参考资料:http://www.fallhunter.com/p/10628http://cloud.51cto.com/art/201107/278903_all.htmhttp://blog.csdn.net/mashangyou/article/details/23459511 http://www.zhihu.com/question/32326748 个人的理...

2015-12-01 19:59:41 342

原创 加密解密

一、消息摘要消息摘要(Message Digest):它是一个唯一对应一个消息或文本的固定长度的值。消息摘要算法(MD5 SHA MAC)用于校验两份数据文件是否是同一个,内容是否有发生改变。 消息摘要算法的特点:① 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。② 消息摘要看起来是“随机的”。这些比特看上去是胡乱的杂凑在一起的。③ 一般地,只要输入的消...

2015-04-21 11:22:42 166

原创 Spring事务

Spring事务配置的五种方式见http://www.blogjava.net/robbie/archive/2009/04/05/264003.htmlSpring事务传播特性实例解析http://blog.csdn.net/liovey/article/details/14149137Spring 事务管理全解析http://www.cnblogs.com/kelin1314/ar...

2015-01-13 20:03:09 96

原创 CPU个数理解

首先有三个概念:物理CPU、逻辑CPU、CPU核数一个物理CPU上有多个CPU核,如果采用了intel的超线程技术(HT), 就会再多出一倍的cpu核出来一般情况下,逻辑cpu数=物理CPU*cpu核数如果采用了超线程技术,则正常逻辑cpu数=物理CPU*cpu核数*2top然后1看到的cpu个数以及java中的Runtime.getRuntime().available...

2014-08-27 19:53:43 150

原创 MapReduce

一、例子如果想统计下过去10年计算机论文出现最多的几个单词,看看大家都在研究些什么,那收集好论文后,该怎么办呢?方法一:我可以写一个小程序,把所有论文按顺序遍历一遍,统计每一个遇到的单词的出现次数,最后就可以知道哪几个单词最热门了。这种方法在数据集比较小时,是非常有效的,而且实现最简单,用来解决这个问题很合适。方法二:写一个多线程程序,并发遍历论文。这个问题理论上是可以高度并发的,因为统计一...

2014-04-03 20:48:21 255

原创 长连接

 长连接应该翻译为keep-alive connection,或者是 persistent connection,而不是我们直译为Long Connection,否则你在英文文档中不好查到这方面的资料的,以下是维基百科针对长连接的说明:    http://en.wikipedia.org/wiki/HTTP_persistent_connection    以下是我的部分翻译:     HTT...

2014-03-25 09:58:14 387

原创 一致性 hash 算法( consistent hashing )

转http://blog.csdn.net/sparkliang/article/details/5279393 consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cach...

2013-12-10 13:45:31 74

原创 自定义log4j的Appender

编写自定义appender 的 步骤 1. 扩展 AppenderSkeleton 抽象类。如果是通过流方式实现读写数据的话,自定一定appender可以从WriterAppender继承,这样只需要把我们自己的 OutputStream连接到WriterAppender.qw上就可以了。更方便快捷。2. 指定您的 appender 是否需要 layout。这个由requiresLayo...

2013-11-26 09:23:35 338

原创 性能测试的主要概念和计算公式

 原文见http://www.ha97.com/5095.html本人的理解;性能测试首先要设置一个并发数(U_concurrent),其代表了实际请求服务器时有多少个用户在同时访问。这些并发用户是这样子访问的:用户之间是相互独立,没有关系的每个用户对服务器发送请求,收到服务器响应后(这段时间是T_response),等待一段时间(T_think),这段时间是模拟实际用户访问...

2013-11-26 09:23:09 162

原创 资料整理

1、手工编写例子:http://blog.csdn.net/qyongkang/article/details/6090497eclipse引入btrace jar包2、btrace例子:http://inter12.iteye.com/blog/1759882输出方法参数值、方法返回值方法执行时间期望的到一个method哪几行被执行了3、BTrace实现原理的...

2013-11-25 16:08:18 95

原创 MDC和NDC

org.apache.log4j   Class MDCjava.lang.Object org.apache.log4j.MDCpublic class MDCextends java.lang.ObjectThe MDC class is similar to the NDC  class except that it is based ...

2013-11-25 16:08:01 227

原创 log4j MDC NDC应用场景

NDC ( Nested Diagnostic Context )和 MDC ( Mapped Diagnostic Context )是 log4j 种非常有用的两个类,它们用于存储应用程序的上下文信息( context infomation ),从而便于在 log 中使用这些上下文信息。 NDC的实现是用hashtable来存储每个线程的stack信息,这个stack是每个线程可以设...

2013-11-25 16:07:32 171

原创 HashMap的非线程安全

在平时开发中,我们经常采用HashMap来作为本地缓存的一种实现方式,将一些如系统变量等数据量比较少的参数保存在HashMap中,并将其作 为单例类的一个属性。在系统运行中,使用到这些缓存数据,都可以直接从该单例中获取该属性集合。但是,最近发现,HashMap并不是线程安全的,如果你 的单例类没有做代码同步或对象锁的控制,就可能出现异常。 首先看下在多线程的访问下,非现场安全的HashMap的表...

2013-11-25 16:06:55 131

原创 计算线上机器tps的方法

1) 二八法若80%的访问量集中在20%的时间里,可用此分析方法,其图形就是一个正态分布图,如下。具体计算公式为:     tps = (24小时的PV值*80%)/(24*3600*20%)举例有,假如中文站每日的访问量为500万,其中19:00-23:40,访问量为400万,其余时间段的访问量很平坦,而且其余时间段的总访问量为100万,那么就可以用二八法,其计算公式为 ...

2013-11-25 16:05:42 501

原创 apache虚拟主机

"虚拟主机"是指在一个机器上运行多个网站(比如:www.company1.com和www.company2.com)。如果每个网站拥有不同的IP地址,则虚拟主机可以是"基于IP"的;如果只有一个IP地址,也可以是"基于主机名"。基于IP的虚拟主机使用连接的IP地址来决定相应的虚拟主机。这样,你就需要为每个虚拟主机分配一个独立的IP地址。而基于域名的虚拟主机是根据客户端提交的HTTP头中标识主...

2013-10-30 20:45:17 78

原创 (转)解析WEB开发编码问题

在技术支持中碰到最多的应该就是编码问题,有必要做一个详细的分析以巩固自己,再来对他人有所帮助。  乱码一般出现在:1.写在jsp文件中的中文变成乱码2.页面的中文都变成乱码3.后台通过request.getParameter()乱码(注意 getQueryString()和getParameter()在编码方面是有区别的,getQueryString()方法应用服务器是...

2013-10-17 15:45:29 183

原创 ubuntu13.04安装与配置

 ubuntu版本:14.04 LTS(64位)在Ubuntu命令端手工挂载U盘/移动硬盘如果Ubuntu因为图形桌面损坏进不去,要重装Ubuntu格式化硬盘,所以需要先备份系统中的重要文件。但是进不去图形桌面,要通过命令端手工mount 移动硬盘。进入命令端的方式Ctrl+Alt+F4.剩下的见http://www.2cto.com/os/201206/136214.html制作...

2013-08-02 19:03:52 234

原创 关于进程与线程的简单解释

原文见http://www.iteye.com/news/27645进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1.  计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2.  假定工厂的电力有限,一次只能供给一个车间使用。也就是说,...

2013-07-29 23:25:14 79

原创 tech note

1、Java Web快速开发平台 WebBuilder 使用WebBuilder可开发ERP、OA、CRM、HR、MIS以及电信、银行、政府、企业等各行业的企业级应用系统,帮助信息化管理系统的快速构建。http://www.putdb.com/http://www.iteye.com/news/28104-webbuilder_68_release2、GenMyModel:可生...

2013-07-29 23:23:53 233

原创 javassist 学习笔记

转http://zhxing.iteye.com/blog/1703305 介绍:www.javassist.org/ javassist、ASM 对比1、javassist是基于源码级别的API比基于字节码的ASM简单。2、基于javassist开发,不需要了解字节码的一些知识,而且其封装的一些工具类可以简单实现一些高级功能。比如HotSwaper。3、ASM比...

2013-07-24 22:16:03 120

原创 动态代理方案性能对比

转:http://code.alibabatech.com/blog/experience_1054/dynamic_proxy_performance.html 因服务框架需要用动态代理生成客户端接口的stub,所以做了一下性能评测,动态代理工具比较成熟的产品有:JDK自带的,ASM,CGLIB(基于ASM包装),JAVAASSIST,使用的版本分别为:JDK-1.6.0_18-b07...

2013-07-24 22:14:39 89

原创 大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中 将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联...

2013-05-20 16:13:36 54

原创 防钓鱼逻辑

我们的生活越来越离不开互联网了,越来越喜欢网购了。可是在网购的过程中,我们时不时的都会听说,某某人被钓鱼了,某某人的账号信息被到用了。作为程序员的我,回溯最近的几个年头,也有好些次差点被这些互联网上的链接给骗了。故事1: 有一天,一QQ qun里的兄弟, 发了一链接(这个链接和QQ空间的链接好相似),然后说:“这个QQ空间里面有很多的xxxx”.一时兴起的同学立即点开,然后弹出的页面,和QQ空间的...

2013-03-27 10:52:47 334

原创 Spring注解入门

1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: Java代码  public class UserManagerImpl implements UserManager {      private UserDao userDao;      public void setUserDao(UserDao userDao)...

2013-03-21 19:40:02 102

原创 开源框架

1.消息中间件-metaqhttp://baike.corp.taobao.com/index.php/Metamorphosis-User-Guide2.分布式 key/value 存储-tairhttp://tair.taobao.org/3.分布式服务框架dubbohttp://code.alibabatech.com/wiki/display/dubbo/User+Guide#User...

2013-03-13 19:24:21 90

原创 linux常用命令

进程查看和退出 ps –aux | more //全部查看 ps –ef | grep javal //查看所有java的进程 kill -9 3306 //强制杀掉进程号3306 删除单个文件:rm 文件夹:rm -rf  dir -r是遍历删除 -f是强制删除 find . -name 'log' -exec rm -rf '{}' \;  查看当前目录下的文件夹大小d...

2013-03-11 18:43:49 80

原创 Java对象的生命周期

要理解java对象的生命周期,我们需要要明白两个问题,1、java是怎么分配内存的 ,2、java是怎么回收内存的。喜欢java的人,往往因为它的内存自动管理机制,不喜欢java的人,往往也是因为它的内存自动管理。我属于前者,这几年的coding经验让我认识到,要写好java程序,理解java的内存管理机制是多么的重要。任何语言,内存管理无外乎分配和回收,在C中我们可以用malloc动态申请内存,...

2013-02-27 20:18:29 108

原创 CGlib

温故了一个cglib和asm,找到几篇写得比较好,介绍得比较清楚的文章:    1、CGlib简单介绍,访问地址:http://www.blogjava.net/stone2083/archive/2008/03/16/186615.html,从简单的示例到不同业务场景的变化,一步步让读者明白,为什么要使用cglib以及哪种场景下需要使用cglib;    2、cglib源码学习交流,访问地址:h...

2013-02-05 14:16:46 124

原创 RMI与RPC的区别

远程对象方法调用并不是新概念,远程过程调用 (RPC-remote procedure call) 已经使用很多年了。远程过程调用被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。即 RPC 支持多种语言,而 RMI(Remote Method Invocation)只支持 Java 写的应用程序。   另外 RMI 调用远程对象方法,允许方法返回 Java 对象以...

2013-02-05 13:57:47 140

原创 代理实现

代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或...

2013-02-05 13:48:19 70

原创 apache rewrite,正向代理、反向代理

原文见:http://www.itlearner.com/article/3747 [导读 ]modrewite 将URL定向到另一个目录或文件,而地址栏URL不变,网页内容为新地址内容。 http://www.test.com/a/b 显示 http://www.test.com/test/的内容,URL地址还保持为 www.test.com/a/b根据下面操作自己可以更加灵活......

2012-12-28 15:19:36 771

原创 Java序列化的机制和原理

原文见http://developer.51cto.com/art/200908/147650.htm 有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。Java序列化算法透析Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是...

2012-12-11 13:48:17 70

原创 JVM性能调优

原文:http://zhaohe162.blog.163.com/blog/static/382167972011101325527323/一、引言       本文的读者是技术支持人员。阅读本文后,你将理解jboss的启动脚本文件(run.sh)中有一系列的JVM配置参数的含义,以及如何调整它们,从而使得MegaEyes中心管理服务器的性能...

2012-12-10 14:21:29 78

原创 (转)Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm...

在开始介绍之前,先介绍几篇写的比较详细的博客,咱们不求最精,一定最全,最省事。 http://blog.csdn.net/fenglibing/article/details/6411924 一、jstatd 启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099。 实例:jstatd -J-Djava.security.policy=my....

2012-12-09 19:03:34 128

原创 (转)使用 Eclipse Memory Analyzer 进行堆转储文件分析

概述 对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据。 通常内存泄露分析被认为是一件很有难度...

2012-12-09 17:16:55 110

原创 (转)一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

前言在平时开发、测试过程中、甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题。我们需要找造成OutOfMemoryError原因。一般有两种情况:1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定解决方案;2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足...

2012-12-09 17:03:14 99

原创 MYSQL分库分表总结

单库单表单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。 单库多表随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间所有的读写操作只能等...

2012-12-06 16:18:25 52

原创 (转)slf4j的包使用说明

http://www.slf4j.org/全称:Simple Logging Facade for Java 简单日志门面(Facade)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。 Logging API实现既可以选择直接实现SLF4J接口的loging APIs如: logback、SimpleL...

2012-10-25 23:08:16 119

原创 CSRF

   CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思。   举个CSRF攻击的例子:我们登录bbs论坛后修改个人资料,论坛服务器更新个人资料的url是www.bbs.com/save.do?user=xx&password=xx&birthday=xxx。当然要修改个人资料的前提是此用户要先登录,...

2012-10-17 20:04:05 80

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除