- 浏览: 523547 次
- 性别:
- 来自: 杭州
最新评论
-
zqjer1:
帮大忙了
SSH连接远程服务器直接执行command时PATH设置不全的一种解决方案 -
ichenwenjin:
解决了我的问题, 3q
Oracle中left join中右表的限制条件 -
yyang11:
grep也可以换成sed:find . -name " ...
一句shell命令搞定代码行数统计 -
yu_duo:
好仔细的文,正愁这问题。很好的解释。
Oracle中left join中右表的限制条件 -
chembo:
读君一博,解我一周愁
Hessian和Java反序列化问题小结
文章列表
今天看了一篇有点小众,但是绝对高级shell应用的文章,牛逼到掉渣。
记录一下链接吧:
你可能不知道的Shell
Java GC log的解读
- 博客分类:
- Effective Java
Java的GC log中,往往有很多名称啊、数字啊,第一次看到时候,总会有点晕头转向的感觉。
今天又Google了一圈,找到两篇比较靠谱的网页记录一下:
HotSpot在PrintHeapAtGC输出的内容的格式
Java Garbage Collection Log messages
引用一下stackoverflow上的那个例子
8109.128: [GC [PSYoungGen: 109884K->14201K(139904K)] 691015K->595332K(1119040K), 0.0454530 secs]
8112.111: [G ...
关于cookie domain中的点前缀
- 博客分类:
- Web应用
今天同事遇到一个问题,大概描述如下:
浏览器已经接收指令,之前在一级域名下存储了相关的信息。这里为了简化问题,假设我们有两个应用A和B,域名分别为:a.b.com和c.a.b.com。(显然B是A的一个子域)。
上面的描述就是: ...
Java范型真的被擦除了吗?
- 博客分类:
- Effective Java
学习范型的第一课就被警告说,范型信息再编译之后是拿不到的,因为已经被擦除掉了。如果不深入研究,这个观点很容易给人以这样的错觉:只要代码里面用了范型的地方,编译之后,是没法拿到这部分信息的!
关于这点的错误之处,可以参考撒伽的这篇文章。 按他的解释是说:
位于声明一侧的,源码里写了什么到运行时就能看到什么; 位于使用一侧的,源码里写什么到运行时都没了。
这里,最根本的原因,还是因为jdk1.5之后,将范型类、方法、属性的信息,都固化到了编译之后的class文件中(具体的例子可以参考上面提高文章中反编译class文件之后拿到的信息),java本身也就有能力通过反射的API来获取这部分信息 ...
Java内部类的可见性问题
- 博客分类:
- Effective Java
关于Java的内部类的可见性问题,平时并未太注意。不过使用时,其实还是应该明确一点:就是关于内部类和他的外部类的可见性问题:private这种修饰符并不能阻止外部类直接访问到内部类中的private属性;反之亦然。
这里直接看代码会更清楚一些:
public class VisibilityTest {
private String outerName;
public String showInnerName(InnerClass innerClass){
// Notice : innerName in InnerClass is &qu ...
Common Sense
学习Java语言的一开始,就被任何一本教科书告知,Java语言是不支持多重继承的。但是可以利用接口完成多重实现。于是这个“事实”就作为一条常识,神一样的存在了。
Why can not?
当被问及这条神律为啥在Java语言中存在时,很多人就说不清楚了。老外的这篇文章说了大家比较公认的一个问题:“钻石问题”。这里,具体的细节请参考上面原文,下面把原文中的一个关键性说明图例摘抄过来:
看到这个图片,大家应该了解了。
这里,从类的继承体系的最上层A开始,所有子类都有一个foo()方法。当D类没有override他的父类(们)的foo()方法时,如果在程序的运行期 ...
今天面试时,突然被面试官问到怎样用shell命令搞定某个文件夹下java代码行数的统计。
想了一下,基本思路就是找到这个文件夹下面的所有java文件,然后每个文件统计一下代码,外层套个for循环,叠加一下结果,就拿到想要的 ...
以下讨论全部针对Mysql数据库:)
通常业务上至少需要两种类型的不重复插入记录的需求:
如果某些关键字段已经在Mysql中存在了,不要重复插入,而是改为更新某些字段。
如果某些关键字段已经在Mysql中存在了,不要 ...
1、关于$
$是个在shell中有多种使用方式的东东。不经常使用时,也是很容易忘记的一个特殊标识符,记录一下比较常用的几种用法:
$# : 获得脚本传入参数的个数。
$? : 获得上面函数或脚本执行之后的返回值(或者叫退出码)。(默认成功执行之后返回0)
$$ : 获得当前所在脚本的进程ID号。(通常会被作为生成唯一标识的一种手段)
$! : 获得最后一个后台进程PID。(通常这个可以用来结合后台任务& 来完成一定时间内运行任务的需求:cmd & (sleep 10; kill -9 $! 2>/dev/null))
$() : 相当于``,也用作 ...
Hessian反序列化问题
众所周知,Hessian框架提供的序列化方式,在性能上要优于Java自己的序列化方式。他将对象序列化,生成的字节数组的数量要相对于Java自带的序列化方式要更简洁。
目前公司的一个项目中,有RPC调用的需要,这里我们使用了公司自己的开源RPC框架Dubbo作为远程调用框架,进行业务方法的调用和对象的序列化。这里,我们没有对Dubbo做出特殊配置,Dubbo在Remoting层组件默认的序列化方式就是采用的Hessian协议处理。但是在真正部署测试时,走到需要远程调用的方式时,报出了一下异常(只截取了最核心的异常堆栈):
Caused by: com.ali ...
Linux下查找某文件夹下某类文件的内容
- 博客分类:
- Linux
今天有个需求:需要查找在某个工程下面的所有js文件和vm文件中是否包含某个特定的关键字$a。
自己最直观的想法,使用find实现。
find . -name "*.js" -or -name "*.vm" | xargs grep "\b$a\b"
这里很容易在-or参数后面忘记再写一次-name参数,我开始就是忘记了,导致语法就有问题,linux不认!
后来请教一位同事时,人家给出了直接grep的解法,相当不错,记录一下:
grep "\b$a\b" --include=\*.{js,v ...
由于种种原因,项目的结构被调整成了ant+maven共同管控的样子(真的好挫)
于是,一个最基本的问题来了,之前写的UT没法跑了。
首先爆出来的是slf4j的问题:
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/l ...
Java多线程常用工具小结
- 博客分类:
- Effective Java
Java多线程问题常用的几种场景(不是全部)通常需要包括如下几个方面:
共享资源的互斥访问(比如:资源初始化过程)。
有限资源的访问控制(比如:数据库连接池会限制只有有限个线程可以同时保持链接)。
多线程 ...
HTTPS相关原理浅析
- 博客分类:
- Web应用
1、HTTPS本身并非协议,而是标准的HTTP协议架在SSL/TLS协议之上的一种结构。(一种不太合适的说法可以认为是两种协议的叠加)。HTTP是工作在OSI7层模型的最上层,就是第7层:Application Layer。而SSL/TLS是工作在第4层:Transport Layer。 ...
Json & JsonP
- 博客分类:
- Web应用
如题,在网上查找JsonP的资料的时候,发现了下面这两篇文章是相当靠谱的:
http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/
http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html
详细的信息直接看上面的两篇文章再好不过了 ...