- 博客(71)
- 资源 (10)
- 收藏
- 关注

原创 netty源码分析-客户端启动
最近的开发工作中使用到了netty,对比jdk原生的NIO写法,netty简单了很多,而且性能也是很不错,就对netty如何做到的比较感兴趣,就开始对源码进行了研究和学习。这也是我第一次比较系统的学习一种优秀框架的源代码,为了加强记忆和梳理逻辑,对这次源代码的分析做一下记录。 源代码的分析首先从下载源码开始,进入到netty的github复制地址,在git上执行git clo...
2018-08-08 22:15:29
692
原创 Jenkins使用pipeline脚本做自动化部署
项目中使用到了Jenkins打包自动发版的功能,经过几天的研究和测试终于解决。pipeline包含五个步骤,soanr监测如果出现不符合设置的规则,会自动中断,可以在sonar服务器上查看代码的问题。其中是否自动发版还可以根参数进行控制,构建结果如下:整个创建过程和pipeline脚本如下:创建任务名称,并选择流水线,点击确认完成任务的创建 配置刚创建的任务选项。 在general中添加对该项目的描述 勾选 This project is paramet...
2021-09-07 16:46:12
1800
原创 redis在java中的使用和出现的异常情况
最近项目中使用了redis数据库,由于不熟悉中间出现了很多情况,在解决过程中往往会因为解决一个地方造成好几处的错误,为了加深印象,一一记录一下。项目一开始使用的redis是别的同事安装好的,并不知道版本号,而且找不到配置文件,因为项目赶时间我们就仓促的选择了一个jedis.jar(2.1)版本和commons-pool.jar(1.6),这两个jar包在网上也很好搜到,后来根据实际情况将red
2021-09-07 16:14:34
852
原创 nginx日志切割
nginx的性能很好就是日志不给力,不能按照每天记录一个,所有的日志都在一个文件下,达到一定大小才分割,这样对于进行每天日志的分析很麻烦,nginx自身没有这种功能只能自己写个简单的shell脚本来处理这个问题脚本内容log_path=/usr/local/nginx/logs #指定日志文件要保存位置mv ${log_path}/access.log ${log_path
2021-09-07 16:13:52
171
原创 Strust2 拦截器处理返回自定义json格式数据
在使用struts2的项目中,有时需要拦截器返回自定义json格式的数据,步骤如下:1.使用json-plugin插件,2 在需要拦截的action类里声明一个要展示为json的对象,并配有set和get方法如下3 写一个异常处理拦截器,并且在该拦截器里使用反射调用该处理类的set方法,图如下:4 在struts.xml文件中配置处理拦截器,
2016-08-31 16:40:48
2869
原创 tomcat jvm性能调优
一直在学习和研究jvm的内存分布和垃圾回收算法及各种垃圾回收器,学过之后决定动手实践一下真实的运用到项目上。服务器信息:4核,8G内存,阿里云服务器tomcat7 ,jdk8,真实运行的项目,测试的地址包含数据库查询和网络访问压测工具:siege优化前使用tomcat对jvm内存和垃圾回收器默认设置,仅加了打印gc回收日志的信息配置,在catalina.sh最上面配置,
2016-08-02 14:38:00
4172
原创 html5 读取本地文件说明和实例
HTML5为我们提供了一种与本地文件系统交互的标准方式:File Api。HTML5访问本地文件系统时,需要先获取File对象句柄,怎么获取文件引用句柄呢?选择文件首先检测一下当前浏览器是否支持File Api:function isSupportFileApi() { if(window.File && window.Fil
2016-07-28 14:44:42
3888
原创 lucene5.5根据现有分词器改造做同义词分词器
lucene5之后版本有了较大的改动,现将lucene5的同义词分词器改造代码和方式,记录一下功能加测试的类一共6个,一一介绍一下1 同义词分词器类SameWordAnalyzer2 同义词过滤器类SameWordFilter3 根据词语获取同义词引擎接口SameWordEngine4 同义词引擎接口实现类SameWordEngineImpl5 分词器分词分析工具类 Ana
2016-04-01 09:37:21
838
原创 编写工具展示lucene分词内部分析过程
此代码工具可以展示:对应的语汇单元还有多个属性没有在代码中展示,可查看包org.apache.lucene.analysis.tokenattributes里所有的attributepackage com.liu.lucene.pro;import java.io.IOException;import java.io.Reader;import org.ap
2016-03-31 17:53:59
496
原创 lucene5.5创建索引和检索
lucene5.5 使用了java的NIO2.0,以前创建directory使用file换成了使用path,获取path的简单方法file.toPath(),上代码package com.liu.lucene.pro;import java.io.File;import java.io.FileReader;import java.io.IOException;
2016-03-31 17:41:28
3413
原创 nginx日志切割
nginx的性能很好就是日志不给力,不能按照每天记录一个,所有的日志都在一个文件下,达到一定大小才分割,这样对于进行每天日志的分析很麻烦,nginx自身没有这种功能只能自己写个简单的shell脚本来处理这个问题脚本内容log_path=/usr/local/nginx/logs #指定日志文件要保存位置mv ${log_path}/access.log ${log_pa
2016-03-29 10:23:56
357
原创 使用nginx做反向代理,后端tomcat日志获取真实ip解决方案
项目中使用了nginx和tomcat,tomcat的访问日志需要记录访问用户的真实ip而不是nginx的ip地址,通过查看tomcat的文档和nginx文档解决方案和思路如下1 我使用的是tomcat7,查看tomcat7的文档发现文档中介绍了如何获取真实ip,tomcat支持获取前端自定义的hearder在访问日志里打印出来,文档内容如下2 在前端的ngi
2016-03-25 14:43:25
649
原创 centsos 使用命令行发送邮件
1 执行命令行 which mail2 从上面的命令看,系统已经安装了mail,对些我们还需要设置一下mail,让它使用外面的邮箱进行发邮件。设置文件是 /etc/mail.rc3 我使用的是126邮件,所以设置mail使用126代理发邮件只需要在 /etc/mail.rc 最后添加两行即可,如下虽然我们设置了linux使用客户端用126的发邮
2016-03-15 10:20:21
1316
转载 javascript 获取滚动条高度+常用js页面宽度与高度
/******************** * 取窗口滚动条高度 ******************/function getScrollTop(){ var scrollTop=0; if(document.documentElement&&document.documentElement.scrollTop) { scroll
2016-03-02 11:05:39
491
转载 Java IO和Java NIO在文件拷贝上的性能差异分析
1. 在JAVA传统的IO系统中,读取磁盘文件数据的过程如下:以FileInputStream类为例,该类有一个read(byte b[])方法,byte b[]是我们要存储读取到用户空间的缓冲区。参看read(byte b[])方法的源码,可知,它会在内部再调用readBytes(b, 0, b.length)方法,而且readBytes(b, 0, b.le
2016-01-25 11:36:50
698
原创 使用ScheduledExecutorService周期性的定时任务
从j2se的api文档上查看ScheduledExecutorService的方法都是推迟一段时间然后相隔一段时间之后再去执行,没有想Timer定时器一样的可以在定点时间执行的api,如果也想像Timer那样定时执行就需要对ScheduledExecutorService的方法传入参数处理一下,下面是个人使用ScheduledExecutorService做的每天凌晨3点做的定时执行任务demon
2015-12-16 21:40:08
947
原创 maven 遇到failOnMissingWebXml有关问题解决方法
使用maven创建项目时有时在pom.xml的war处出现failOnMissingWebXml的错误,根据错误提示的原因可以知道项目是web项目,打包时打成war包。如果项目里没有web.xml,在项目里添加一个web.xml,刷新一下项目,就应该没有错误,如果还有请看下面的介绍 如果你的项目在 /src/main/webapp/WEB-INF 下有web.xml,但是仍然还是报这个错误
2015-12-08 14:50:32
48461
2
原创 如何从官网下载最新的jdk API
Java最新官网JDK API文档下载连接及查找方式 连接地址:http://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downloads-2133158.html查找方式:1 进入java官网选择Java SE,选择Downloads ,如下路径 2 进入到如下界面
2015-12-07 15:32:58
1685
1
原创 pom.xml里使用了一系列的版本的框架,配置一个版本属性,让使用版本的都引用这个属性
在pom.xml定义properties标签 UTF-8 4.2.3.RELEASE 以上内容就改成了 org.springframework spring-core ${spring.version} org.springframework spring-aop ${spring.version}确实很清
2015-12-04 16:02:30
3528
原创 maven打包去掉测试的部分pom.xml配置
[...] org.apache.maven.plugins maven-surefire-plugin 2.19 true [...]查看连接
2015-12-04 15:58:40
1295
原创 解决git上down到elipse上有时不能运行
有时从git上下载到elipse上的代码,不能运行,甚至不是java项目,里面的pom.xml也不能运行,解决方案1 在eclipse里选中当下来的项目,右键点击properties -> Project Facets,根据需要选择Facet,这样项目里面就会有jre的环境了2 选择之后项目一般会报错,需要修改项目的jre的版本 properties -> Java Compile
2015-12-04 15:56:11
539
转载 visualvm监控jvm及远程jvm监控方法
VisualVM是Sun的一个OpenJDK项目,其目的在于为Java应用创建一个整套的问题解决工具。它集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。 Java开发人员可以使用 VisualVM创建必要信息的日志,系统管理人员可用来监控及控制J
2015-12-01 14:03:15
788
转载 jvm参数调优,及参数配置
JAVA_OPTS='-server -Xms2560m -Xmx2560m -Xmn768m -XX:PermSize=128m -XX:MaxPermSize=256m -Xss256k -XX:ParallelGCThreads=6 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:MaxTenuringThreshold=5 -XX:Survi
2015-12-01 09:29:45
655
原创 Linux系统下安装ngnix
1 安装nginx需要依赖的安装包 --1 zlib安装包 下载zlib-1.2.8.tar.gz 安装 安装步骤:1 解压文件 tar zxvf zlib-1.2.8.tar.gz 2 进入zlib-1.2.8执行./configure 3 执行 make 命令编译 4 执行 make install 安装 --2 openssl安装包 下载 open
2015-12-01 09:06:57
1006
原创 Ngnix 负载均衡简单搭建
配置文件内容如下#user nobody;worker_processes 1; #pid logs/nginx.pid; events { worker_connections 1024;} http { include mime.types; default_type app
2015-12-01 09:03:12
785
转载 在RedHat 6.3下安装MySQL-server-5.6.13-1.el6.x86_64.rpm
首先下载下面三个文件:MySQL-client-5.6.13-1.el6.x86_64.rpmMySQL-devel-5.6.13-1.el6.x86_64.rpmMySQL-server-5.6.13-1.el6.x86_64.rpm然后使用root账号登陆,进行安装:1. 安装server、devel、client:1. 安装server、devel、client:rp
2015-12-01 08:55:34
857
原创 下载并安装redis数据库
1 到http://redis.io/download 官网下下载最新稳定的redis2 下载的redis安装包移动到要安装的位置3 解压安装包 tar zxvf redis-3.0.5.tar.gz4 进入解压后的安装目录 执行命令 make5 进入安装目录下的src目录 执行redis-server启动redis服务6 进入安装目录下的src目录 执行redis-cli启动
2015-12-01 08:48:12
371
原创 linux下安装java
1 下载linux的安装文件jdk-8u60-linux-x64.tar.gz2 将安装文件移动到要安装的目录3 解压安装的文件 命令:tar zxvf jdk-8u60-linux-x64.tar.gz4 配置环境变量,修改/etc/profile文件,在最后面添加语句export JAVA_HOME=/usr/local/javaexport JRE_HOME=${JAVA
2015-12-01 08:41:36
318
原创 redis安装在以服务形式安装在linux上
centos6.x下让redis以服务方式运行1.从官网下载redis-2.8.9.tar.gz之后,将redis解压在/usr/local下,目录是redis-2.8.9,然后按照官网给出的办法安装redis即可。2.安装完在redis-2.8.9目录下执行src/redis-server然后在另一个shell窗口执行src/redis-cli,可以正确运行。但是我们显然想将
2015-12-01 08:36:49
535
转载 jedispool 连 redis 高并发卡死 解决方案
java端在使用jedispool 连接redis的时候,在高并发的时候经常卡死,或报连接异常,JedisConnectionException,或者getResource 异常等各种问题在使用jedispool 的时候一定要注意两点1。 在获取 jedisPool和jedis的时候加上线程同步,保证不要创建过多的jedispool 和 jedis2。 用完Jedis实例后
2015-11-25 11:26:45
25486
1
原创 使用dwr3.0实现服务端向浏览器做消息推送,做滚动评论或弹幕效果,而且根据视频id做推送消息拦截功能
最近项目要实现视频播放时做弹幕和评论滚动,使用flash做sockt编程不会,就想到使用服务器消息推送做,翻找资料发现使用html5的websocket可以实现,但是ie8是不支持websocket的,最终确定使用dwr3做消息推送,普通的dwr3做消息推送会把消息推送到所有打开的页面,这样针对某一个视频的评论就会弹出到其他的视频中去,实现每个视频弹出各自的评论,就需要做dwr3的消息推送做过滤处
2015-06-17 18:29:19
1603
转载 JS生成二维码
JS生成二维码 这个例子网上很多,貌似没有logo,我在原有版本上加入了LOGO,(先感谢下作者~~)将下面的HTML代码复制下来,然后下载代码中指定的JS文件,并按规则引入,即可进行测试;js.rar 包含了所用到的所有JS,图片需要自己定位,二维码demo 一、jquery-1.10.js (这个版本可以随意更换试试,小弟没有做JQ的版
2015-06-16 14:39:22
1154
转载 web缓存
Expires / Cache-Control / Last-Modified / If-Modified-Since / ETag / If-None-Match 的区别以及使用详解为了演示体现缓存的作用,先删除所有的浏览器缓存,然后以如下四种方式访问baidu网站,期间使用Pagetest作为测试软件,这是一个搭配IE使用的软件,功能上类似HttpWatch,不过它
2015-05-20 17:06:57
354
原创 根据浏览器请求判断客户来自Pc端还是移动端 源代码
package com.jovision;import javax.servlet.http.HttpServletRequest; public class HttpRequestDeviceUtils { /**Wap网关Via头信息中特有的描述信息*/ private static String mobileGateWayHeaders[]=new
2015-05-07 16:27:21
1255
原创 使用图片的base64编码字符串压缩图片代码
package com;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.io.File;import java.io.InputStream;import javax.imageio.ImageIO
2015-04-20 16:55:21
3599
原创 使用JSONObject类转换字符串含有集合类型的属性 JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.Tes
解决方法:如果转换的类中有集合,可以先定义Map classMap = new HashMap();在classMap中put你要转换的类中的集合名,像classMap.put("data", VideoStatusData.class);然后在toBean()的时候把参数加上, 像:VideoNormalData vd1 = (VideoNormalData) JSONObjec
2015-04-14 15:56:47
3259
原创 java 使用tcp协议发送json串获取服务器返回的json
package api.basic;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.InetSocketAddress;import java.net.S
2015-04-14 15:44:48
6839
原创 javaMail 发送邮件代码
package com;import java.util.Properties;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.
2015-04-10 08:14:42
510
原创 使用java发送https的请求
package api.basic;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.security.cert.CertificateException;import java.util.Map;import javax.ne
2015-04-09 15:16:40
782
ABPlayerHTML5是一个在HTML5下的弹幕播放器(同步显示视频于评论)实现
2015-06-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人