- 浏览: 145146 次
- 性别:
- 来自: 洛阳
最新评论
-
widiots:
遇上你这种代码,StringBuilder 比窦娥还冤。你这测 ...
java 字符串拼接方法性能大比拼 -
Velly_zheng:
大神,666 !请问有没有上百万数据往指定模板中写数据的代 ...
使用POI读取100万行excel -
xiongshunli:
大神,请问下如何从table中取这些数据呢,这只是存起来,不去 ...
使用POI读取100万行excel -
g_man1990:
1和2应该是差不多的,还有append("[&quo ...
java 字符串拼接方法性能大比拼 -
sp42:
应该用java7自动关闭资源啦
我的新的开源项目happyhttp上线了
文章列表
happyxml
项目地址:https://github.com/yuancihang/happyxml
简介:短小精悍的xml操作封装, 只有几百行代码. 支持注解绑定到对象
happyjdbc
项目地址:https://github.com/yuancihang/happyjdbc
简介:简化jdbc操作,提供更现代化的api, 支持分库分表
happyhttp
项目地址:https://github.com/yuancihang/happyhttp
简介:简单而强大的http client 库
============================== ...
对比版本netty4.1 , jetty9.3
1.socket连接处理
jetty 使用AbstractConnector.Acceptor来处理连接, 线程数=Math.max(1, Math.min(4,cores/8)), 但是自己不new线程而是从共享的QueuedThreadPool中拿线程来执行
netty 使用一个单独的NioEventLoopGroup来处理。 NioEventLoopGroup是一个Selector线程池, 其中每个NioEventLoop都表示一个Selector线程。
默认会初始化(cores*2)个N ...
如何将资源消耗定位到进程
- 博客分类:
- linux
1. 按CPU消耗给进程排序
top
按P排序
2. 按内存消耗给进程排序
top
按M排序
3. 按TCP连接数消耗给进程排序
netstat -anltp|grep ESTABLISHED|awk -F" " '{a[$7]++}END{for(i in a)print i,a[i]}' |sort -n -k 2 -t ' ' -r
4. 按文件描述符个数消耗给进程排序
lsof|sed '1d'|awk -F" " '{a[$1]++;b[$1]=$2;c[$1]=$3}END{for(i in ...
1. 采集CPU数据,每隔2秒采集一次,采集500次。缺点是不知道哪个进程造成的CPU消耗
vmstat -n 2 500 > cpu.txt &
2. 采集网卡数据。每隔2秒采集一次,采集500次
sar -n DEV 2 500|grep eth0 > net.txt &
3. 采集内存数据。每隔5秒采集一次,采集200次。JAVA内存一般变化频率不大,采集间隔过小意义不大
该命令优点是可以看到JAVA进程内部内存的详细分配情况,缺点是看不到直接内存(堆外内存)
jstat -gc ${java_pid} 5000 ...
目录下所有jar拼接classpath脚本
- 博客分类:
- script
windows:
set MY_HOME=%~dp0
@setlocal EnableExtensions EnableDelayedExpansion
set CLASSWORLDS_JAR=.
for /F %%i in ('dir /a-d/b/s ..\lib\*.jar') do set CLASSWORLDS_JAR=!CLASSWORLDS_JAR!;%%i
echo %CLASSWORLDS_JAR%
linux:
MY_HOME=$(cd "$(dirname $0)/../";pwd )
echo $MY_HOME
...
新的开源项目happyxml
- 博客分类:
- java
happyxml
项目地址:https://github.com/yuancihang/happyxml
短小精悍的xml操作封装, 只有几百行代码. 支持注解绑定到对象
public static void sampleQuery() {
Dom root = Dom.parse(Paths.get("src/main/resources", "person.xml").toAbsolutePath());
System.out.println(root.childText("firstname" ...
新的开源项目happyjdbc
- 博客分类:
- java
happyjdbc
项目地址:https://github.com/yuancihang/happyjdbc
简化jdbc操作,提供更现代化的api, 支持分库分表
public class DataExample {
public static void main(String[] args) throws SQLException {
DataAccess.getInstance().addDataSource("local", buildDataSource());
sampleShare();
}
priva ...
happyhttp 简单而强大的http client 库
项目地址:https://github.com/yuancihang/happyhttp
public static void sampleGet(){
String text = HttpBuilder.newGet("http://www.xxx.com/").execute().getBodyAsText();
System.err.println(text);
}
public static void samplePost(){
HttpRespons ...
protobuf通信消息设计技巧备忘
- 博客分类:
- java
1. 有一个全局的ProtobufMessage, 所有的requestXXX, responseXXX都作为他的一个可选属性, 这样简单粗暴的避免了需要二次序列化反序列化的恶心问题
2. 有一个CommonMessage作为他的一个字段,用来存放公共字段。变相解决了reuqest消息和response消息的继承问题
3. 这样之后对于wireshark抓包后,反序列化以及格式化为JSON极其便利
syntax = "proto3";
option java_package = "com.example.foo";
option j ...
appsecret与accessToken生成
- 博客分类:
- java
apache oltu:
accessToken=md5(UUID.randomUUID().toString())
refreshToken=md5(UUID.randomUUID().toString())
tomcat:
sessinid : SecureRandom SHA1PRNG
java:
private static String genKEY(String algorithm) throws NoSuchAlgorithmException{
KeyGenerator kg = KeyGenerat ...
eclipse 搜索所有非注释中文
- 博客分类:
- eclipse
项目需要多语言支持,需要把代码中写死的中文抽出来,由于注释中的中文也非常多,所以在搜索的时候要排除注释中的中文。
代码中的字符串与注释中的字符串最大的区别是 代码中的字符串都是以双引号开始的,所以只要在正则表达式中使用双引号即可轻松排除掉注释,不论是多行注释/***/还是单行注释//.
最终正则表达式:"[ \w\_【】\[\]]*[\u4e00-\u9fa5]+
为了加快搜索速度可以使用eclipse的局部搜选,
1. 先选中一个工程或者目录
2. 在scope区域选中selected resources
这样就不会在整个workspace搜索了。
...
使用POI读取100万行excel
- 博客分类:
- java
poi 的usermodel api读取大数据量excel会导致OOM,可以使用eventmodel api来处理这种excel.
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import o ...
Protostuff序列化与反序列化
- 博客分类:
- java
发现一个好东西Protostuff, 据说可以不写proto文件来把对象序列化成二进制格式,用了一下果然好使。
public class Protostuff {
@SuppressWarnings("unchecked")
public static <T> byte[] serial(T obj) {
Class<T> clazz = (Class<T>) obj.getClass();
// RuntimeSchema会缓存类信息,不用自己实现缓存了,爽
Sc ...
mysql5.7解压之后是没有data目录的
1. 初始化data目录
mysqld --initialize --user=mysql --console
执行后生成data目录 同时生成三个数据库 information_schema,mysql 和performance_schema
2.修改root密码
启动服务器 mysqld --skip-grant-tables --console
mysql 不带没密码登录
use mysql;
update user set authentication_string=password('123456') ...
java 字符串拼接方法性能大比拼
- 博客分类:
- java
由于在实际项目中经常会打log,这 就要用到字符串拼接, 本文测试了JAVA中的四种字符串拼接方法的性能。
1.使用“+”拼接字符串
public static String f1(String p1, String p2, String p3){
return "["+p1+"]["+p2+"]["+p3+"]";
}
2.使用StringBuilder拼接字符串
public static String f2(String p1, String p2, String p3){
...