自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(323)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 使用AOP统计方法的执行时间

1.  需求背景 性能调优阶段,需要找出执行时间比较长的方法,针对这些方法进行调优。 2.  可行方案一种是传统的在每个方法前后获取System.currentMis(),然后得到方法的执行时间。这种方式的缺点是方法多会写很多耦合代码,而且不可重用,测试完需要删掉。 另一种使用AOP监控方法的前后点,监控方法的执行时间,比较优雅且无侵入。可行的方案之一是使用...

2017-06-08 21:26:35 670

原创 Thread.join用法

Thread.join(): 用来让主线程等待子线程执行完毕再执行下面的操作。顾名思义,join会让子线程加入MainThread. 适用场景:主线程需要等子线程执行完毕后,再执行下一步操作。比如:主线程需要统计子线程的执行时间,或需要统计子线程的执行结果等。 join() 的作用是等待该线程终止,即该线程存活的时候一直等待,等待线程死亡,好残忍 。。JDK的源...

2017-04-10 20:38:40 236

原创 线上故障排查----高内存占用

1.  找出占内存比较大的内存的PID(使用top命令)比如找出PID为8763 2.  查看当前Java进程创建的活跃对象数目和占用内存大小jmap -histo:live $pid > jmap.log 比如查看24102进程的存活对象:jmap -histo:live 24102 | more例如:$ /usr/java/default/bin/...

2017-04-10 20:31:13 335

原创 Java类加载机制---类的初始化和卸载

类的初始化,包括生成对象的初始化和类的静态块的实例化。 初始化触发的时机: 类被直接引用(主动引用)的时候。 主动引用主动引用的情形有:1. 使用new关健字实例化对象2. 使用类的静态变量3. 使用类的静态方法4. 使用反射机制调用上述操作5. 程序入口 (调用main方法)  初始化顺序是:静态块 ---> 非静态块 ---&g...

2016-12-09 14:25:39 404

原创 Java类加载机制

类的加载属于Java中的JVM的底层工作。 类加载包括类的生命周期中加载、连接、初始化三个阶段。在加载阶段,JVM在做什么工作?简单地说,就是找到需要加载的类并把类的信息加载到jvm的方法区,然后在堆区实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。 当执行Class中的下列代码的时候,会做下面的事情:User user = new U...

2016-12-03 23:43:01 101

原创 反射机制之---Class对象

Java中的类对象也属于基本部分,类对象即是Class信息对象,当类加载器(ClassLoader)加载类信息的时候,生成Class对象,Class对象是Java对象的模板,每个Java对象都是基于Class信息生成新的对象。 众所周知,Class信息存在方法区(Method Area),或者称为永久代(Perm区),Class对象生成后和其他Java对象一样,也存放在堆(Heap)里...

2016-12-01 23:59:45 146

原创 反射机制之---概念

反射机制是Java语言中很重要的特性,是在运行时获知对象信息,并可在运行时操作对象的机制。反射(Reflect), 顾名思义,通过Java对象的Class信息,可以逆向生成对象、探知运行时的对象信息、调用对象方法,一种可以反向作用的机制。 反射的用途:1. 在运行时获取任意对象所属的类对象 Class<?> clazz = Class.forName(Strin...

2016-11-29 00:21:22 109

原创 设计模式之---策略模式

策略模式,顾名思义,是使用不同的策略解决问题的模式,孙悟空有七十二变,孙子兵法有三十六计,这里的七十二变和三十六计里的每一个变法和计谋,都是一种策略。需要当事者根据具体的情形,去做选择变成什么和使用哪一个计谋。 1. 策略模式类图 2. 策略模式的组成:抽象策略基类、策略实现类、调用者。基类中有抽象的算法,实现类实现具体和算法行为,调用者类持有策略接口的引用,可以灵活调...

2016-11-19 01:20:29 241

原创 ThreadLocal 源码分析

ThreadLocal字段意义为线程本地,其实表达不够准确,应该为线程本地变量或线程局部变量更合适一些。ThreadLocal 常用来存储每个线程的私有信息,相当于是线程组的私有变量容器,每个变量值为单一线程私有,不被其他线程共享。ThreadLocal类的方法解析:  protected T initialValue() { return null;...

2016-10-30 00:16:40 95

原创 MySql的事务隔离级别

前言数据库都是有事务的,事务的不同级别,对应数据操作的不同级别安全性。本文以MySql为例介绍一下数据库的事务隔离级别。 事务定义事务是将数据从一种状态改变到另一种状态。事务隔离级别是事务看别的事务修改的数据的可见程度。 事务的可见性脏读:一事务对数据进行了增删改,但未提交,另一事务可以读取到未提交的数据。如果第一个事务这时候回滚了,那么第二个事务就读到了脏数据...

2016-10-26 00:56:15 109

原创 聊聊缓存

缓存在应用中经常可以遇到,大的可以表现为分布式缓存服务和外部的缓存服务应用,小的可以使用应用级的缓存。缓存的主要作用,一是可以加快热点数据访问速度,二是保护后端的数据库不被突然增长的压力压垮,三是减少计算,是以空间换时间的典型应用。 从分类上来说,缓存可以分为外部缓存服务和应用缓存。外部缓存服务可以表现为MemCache、Redis、MongoDB等。应用缓存可以使用Has...

2016-09-29 21:44:58 88

原创 MyBatis 批量操作

       使用MyBatis做数据处理框架时,操作大量数据的插入、更新等耗时的工作时,可以使用批量处理来提高效率,MyBatis的批量处理主要使用foreach标签来实现。         foreach 元素的功能是非常强大的,它允许你指定一个集合,声明可以用在元素体内的集合项和索引变量。它也允许你指定开闭匹配的字符串以及在迭代中间放置分隔符。这个元素是很智能的,因此它不会偶...

2016-09-02 15:24:09 135

原创 软件设计中的心跳机制

       前言       在软件的设计架构中,心跳检测很重要,像在dubbo service、web api invoke中,需要consumer端感知provider端是否存活,不存活则切换调用另一个provider。        一、什么是心跳检测       判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对...

2016-08-17 18:59:09 639

原创 Dubbo与Spring的配合使用

Dubbo是一个服务治理框架,对分布式服务的管理和治理、监控有较好的实现。 本案举例说明Dubbo与Spring的配合使用:1.  Maven引入dubbo的配置<dependency> <groupId>com.alibaba</groupId> <artifactI...

2016-02-21 22:44:21 210

原创 logback异步记录日志

logback支持异步记录日志,这样可加快程序的主流程处理速度,提高接口的qps。logback异步记录日志的原理,也是使用一个缓冲队列,当缓冲数量到一定阀值时,才把日志写到文件里。 下面是配置示例:<?xml version="1.0" encoding="utf-8"?><configuration scan="false"> &l...

2016-01-12 19:57:23 449

原创 Spring 初始化2次的问题

在Spring的使用中,有时初始化一些公共类,比如数据源、常量配置等,这些方法会执行两次,导致程序执行出现异常。 一个解决方法是利用Spring的事件机制,事件机制需要实现ApplicationListener监听器,只要编写一个实现类实现该接口的onApplicationEvent方法,在方法体中初始化应用需要的初始化数据,并做防二次初始化的处理。 此处是一个jedis工厂类的...

2015-11-16 21:28:07 274

原创 使用encode和decode来处理参数传递

在前端与后端,后端与后端的系统交互中,总是会涉及到传递不同的参数,而参数的值不一,有中文也是英文,有字母也有符号,如果不对参数做处理,直接传递,会导致特殊符号不能解析,中文乱码等问题。 对此一个解决方案就是对要传递的参数,做encode和decode处理。encode和decode使用方法:JavaScript:encodeURIComponent(URIString);...

2015-11-16 17:29:31 622

原创 SSH无密码登录Linux服务器

1. 源机器:把公钥copy到目标机器上scp  ~/.ssh/id_rsa.pub [email protected]:/home/test/.ssh  2. 目录机器: 把 id_rsa.pub 重命名为 authorized_keys 文件。sudo mv  id_rsa.pub authorized_keys  3.  目录机器修改目录权限:...

2015-11-06 14:43:27 88

原创 Mongo支持地理索引

1. Geospatial Indexing     MongoDB支持二维空间索引,这是设计时考虑到基于位置的查询。例如“找到离目标位置最近的N条记录”。可以有效地作为附加条件过滤。  2.  Creating the Index  db.places.ensureIndex( { loc : "2d" } )     // 支持平面位置索引或  db.p...

2015-10-31 15:37:15 107

原创 Linux Shell启动多个Tomcat

有时部署项目时使用多个应用服务器做负载均衡,这里使用多个Tomcat做负载。服务器环境: CentOS 6.5Tomcat目录: /usr/localTomcat目录下有tomcat1、tomcat2、tomcat3、tomcat4 四个tomcat实例。tomcat实例的命名规则: tomcat${i} 1.  新建一个shell文件命名为 tomcat.sh#!...

2015-09-20 09:23:41 2567

原创 Linux以服务方式启动单个tomcat

1.  下载tomcatapache-tomcat-8.0.26.tar.gz 2.  传到远程服务器scp Downloads/apache-tomcat-8.0.26.tar.gz [email protected]:/home/wumart 3.  把tomcat移动到/usr/local目录:[wumart@dmallsol10007 lo...

2015-08-27 11:24:16 138

原创 观察者模式和发布/订阅模式的区别

        在事件总线(EventBus)的架构设计中,用到了发布/订阅模式,但发现和观察者模式挺接近,有时容易发生混淆,现试图分清一下他们的关系。         观察者模式的角色为观察者(observer)和主题(subject)对象,observer需要观察subject时,需先到subject里面进行注册(subject对象持有observer对象的集合句柄),然后,当su...

2015-08-02 17:19:16 343

原创 Sonar的安装与设置

Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。 1.  配置数据库...

2015-07-25 17:21:17 172

原创 win7/8使用curl

1.  WIN7/8下要使用curl,需要下载curl-7.20.0-win64-ssl-sspi.zip和Win64OpenSSL_Light-1_0_2d.exe。下载地址: http://curl.haxx.se/download.html请选择不带SSL的版本,否则还需要安装SSL的支持包 2.  可以给Windows增加curl命令的环境变量,增加CURL_HOME...

2015-07-17 23:05:13 147

原创 动态代理之CGLIB

CGLIB 介绍CGLib (Code Generation Library) 是一个强大的,高性能,高质量的Code生成类库。CGLib 可以在运行时扩展Java类与实现Java接口。CGLib 比 Java 的 java.lang.reflect.Proxy 类更强的在于它不仅可以接管接口实现类的方法,还可以接管普通类的方法.CGLib 的底层是Java字节码操作框架 —— A...

2015-07-17 17:35:46 59

原创 同步、异步、阻塞、非阻塞的区别

同步、异步、阻塞、非阻塞这几个概念在并发编程和架构设计中用的比较多,这里小记一下对他们的理解,先阐释一下他们之间的区别: 同步:多个任务或事件必须顺序执行,前一个任务没执行完,后一行任务就不能进行。实现:常见的顺序编程, 串行执行场景:B/S架构的HTTP请求-响应模式、OA流程。 异步:多个任务或事情可以并行执行,任意一个任务的执行不会阻塞另外一个任务的执行。异步调用...

2015-07-15 14:32:55 73

原创 MongoDB 介绍

MongoDB 是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB服务端可运行在Linux、Windows或IOS平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB,64位平台则非常大。 MongoDB 是一个介于关系数据库和非关...

2015-07-14 11:30:36 126

原创 MongoDB常用操作命令

1.   基本操作db.AddUser(username,password)               添加用户db.auth(usrename,password)      设置数据库连接验证db.cloneDataBase(fromhost)       从目标服务器克隆一个数据库db.commandHelp(name)             returns the h...

2015-07-11 17:00:41 84

原创 java模拟post请求

一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。此处用HttpComponents的httpclient来完成使命。import org.apache.http.HttpEntity ;import org.apache.http.HttpResp...

2015-07-11 09:05:55 170

原创 NoSql 数据库的部署方式

一、RedisRedis是一种基于key-value存储格式的nosql数据库,在结构部署上采用了master/slave的方式,其中slave节点起到备份的作用,当master节点出现问题的时候,slave节点可替换成master,从而确保了系统安全稳定的特性。 分布式存储单元:slot(一组key/value存储记录的集合) 一个cluster里面可能会有多个matse...

2015-07-10 21:56:11 327

原创 NoSql 数据库的特性比较

Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。 1. 数据模型作为Key-value型数据库,Redis也提供了键(Key)和值(Value)的映射关系。除了常规的数值或字符串,Redis的键值还可以是以下形式之一:Lists (列表)Sets (集...

2015-07-10 21:48:55 178

win7安装MongoDB服务

1.  下载MongoDB的windows版本:mongodb-win32-x86_64-2008plus-ssl-3.0.4.zip,Linux版本也在这里下载,下载地址: http://www.mongodb.org/downloads 2.  解压MongoDB在D:\server\mongodb, 在D:\server\mongodb下创建db目录和logs目录,用来存数据文件...

2015-07-10 14:23:49 133

Maven的settings.xml配置

settings.xml是Maven的配置文件,下面解释一下其中的配置含义:settings.xml存在于两个地方:1.安装的地方:$M2_HOME/conf/settings.xml2.用户的目录:${user.home}/.m2/settings.xml前者又被叫做全局配置,后者被称为用户配置。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml优先。...

2015-07-09 14:28:04 68

原创 Git排除目录

在Git的版本控制中,有些文件是不需要加入控制的,那我们在提交代码时就需要忽略这些文件,下面讲讲应该怎么给Git配置一些忽略规则。 有三种方法可以忽略掉这些文件,这三种方法都能达到目的,只不过适用情景不一样。 1.  针对单一工程排除文件这种方式会让这个工程的所有修改者在克隆代码的同时,也能克隆到过滤规则,而不用自己再写一份,这就能保证所有修改者应用的都是同一份规则,而不是...

2015-07-06 23:22:51 3217

原创 win7下nginx和php的配置

1.  安装包准备nginx :  从nginx.org下载nginx-1.8.0.zipphp: 从php.net下载php-5.6.10-Win32-VC11-x64.zip, php是免安装文件。RunHiddenConsole: 用于隐藏命令行窗口 2. 配置# java用8080端口做应用服务器,nginx反向代理到这个端口即可php用9000端口作为fa...

2015-07-06 22:58:05 113

原创 Nginx 同一主机部署多个应用

近日有一需求,需要在一台主机上用nginx部署2个php应用,分别是wordpress和wiki,探索了半天,终于部署好了,下面把过程记录下来。1.   在nginx下创建vhosts目录,用以放置vhost文件。mkdir vhosts 2.   修改nginx.conf的配置, 在http节点增加下面内容设置,用来包含vhosts里的配置文件# vhosts files...

2015-07-05 17:19:06 522

原创 php常见错误

1.  kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:900...

2015-07-05 01:07:56 238

原创 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM

CGICGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。FastCGIFastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活...

2015-07-02 15:54:22 69

原创 代理模式之动态代理

从JDK1.3开始,java中引入了动态代理机制,有关的接口和类是InvocationHandler和Proxy,都位于java.lang.reflect包下。InvocationHandler接口只定义了一个抽象方法:        Object invoke(Object proxy, Method method, Object[] args) Proxy类中主要的2个静态方法...

2015-06-30 16:11:31 76

原创 代理模式之静态代理

代理模式:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。比如:代理服务器、产品代理、工商代理、会计代理、房地产中介、职业中介等。 组成:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来...

2015-06-29 13:06:17 63

jsp+JavaBean+Servlet分页

用jsp+JavaBean+Servlet实现的分页,有不足之处请指教

2007-11-21

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

TA关注的人

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