自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (4)
  • 收藏
  • 关注

原创 给OkHttp Client添加socks代理

Okhttp的使用没有httpClient广泛,网上关于Okhttp设置代理的方法很少,这篇文章完整介绍了需要注意的方方面面。上一篇博客中介绍了socks代理的入口是创建java.net.Socket时传入一个java.net.Porxy对象。 OkHttp client通过OkHttpClient.Builder创建,可以通过定制javax.net.ssl.SSLSocketFactory和

2018-02-07 14:40:13 4984

原创 给HttpClient添加Socks代理

本文描述http client使用socks代理过程中需要注意的几个方面:1,socks5支持用户密码授权;2,支持https;3,支持让代理服务器解析DNS;使用代理创建Socket从原理上来看,不管用什么http客户端(httpclient,okhttp),最终都要转换到java.net.Socket的创建上去,看到代码:package java.net; public

2018-02-07 14:32:28 3037 1

原创 [置顶] 回忆去年用Java破解unity.exe的过程

去年我一同学要我破解unity.exe,然后挂在网上卖点钱花。后来我对破解过程涉及的技术问题痴迷了,再后来... unity.exe是一个windows下的二进制程序,有一个用xml签名的license文件,license文件分几个部分:1,一个CA认证机构的证书(好像是PACE Anti-Piracy):certCA;2,unity机构的证书:certU;3,使用certU签

2013-07-01 17:15:02 811

原创 [置顶] 安全领域的一些概念

对称密钥/非对称密钥/key/ciphersymmetric cipher对称密钥:使用相同的密钥进行加密和解密,速度很快Asymmetric Cipher:非对称密钥:使用公钥加密,私钥解密,速度很慢     key和cipher的区别:可以把cipher看成一台机器,它需要插入一个key才可以工作,可以从一端A插入明文,另一端B输出密文,或者从B插入密文,从A输出明文。      实际

2013-07-01 17:14:52 457

原创 hexo建立github,gitcafe博客并实时同步的要点

用搜索引擎搜索”github 博客”等关键字会出现大量很好的文章教小白一步步搭建。我这里列出一些关键点,希望可以让你少走弯路。这篇博客的markdown源代码在:https://gitcafe.com/cwjcsu/cwjcsu/blob/master/source/_posts/hexo-github-gitcafe.md其他涉及的源码在同一个仓库可以找到。1, 不一定要购买域名很多

2015-10-11 18:57:15 748

原创 [置顶] java-在非安全网络上建立可信任安全的通道(2/3)

在不安全的网络环境下进行密钥交互(1/3,前面那一节),容易遭受中间人攻击,什么是中间人攻击,请google it。 通信的双方必须是相互信任的,在这个基础上再进行密钥协商才是可靠的。那么,如何建立信任关系呢? 我以前的几篇博文介绍了用如何 用  Java编程方式生成CA证书 以及用CA证书签发客户证书。 现在假设,Alice和Bob的证书都是被同一个CA atlas签发的

2013-07-01 17:15:00 539

原创 [置顶] java-在非安全网络上建立可信任安全的通道(1/3)

看到标题,几乎所有人都会想到SSL,但SSL比较重量级,我想做的是只利用java的JCE体系(不是JSSE)在非安全网络环境下建立起一个可信任的、安全的通道。      所以这篇博文包括两个主题:可信任和安全。这一节只考虑如何交互密钥。下一节(2/3)讨论如何建立信任关系,并在可信关系上交换密钥(防止中间人攻击)。      非对称密钥不适合做通道加密,通道加密必然使用对称密钥。既

2013-07-01 17:14:58 503

原创 [置顶] java编程方式用CA给证书进行签名/签发证书

这些代码首先加载CA证书,然后分别用CA给Alice和Bob签发一个证书并保存到resource/目录下面,用jks格式存储。CA证书也是用java编程方式制作的,制作过程请看我的上一篇博客。 public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, Ce

2013-07-01 17:14:56 1145

原创 [置顶] java编程方式生成CA证书

下面是java编程方式生成CA证书的代码,使用的是BC的provider。生成CA证书与生成普通证书的区别是:1,生成CA证书时,issuer和subject一致;2,在ContentSigner.build()的时候(签名的时候)使用的是与待签名公钥相应的私钥。下面代码,CA生成以后把私钥和证书一起以一个key entry的方式存入一个jks文件。 static { Sec

2013-07-01 17:14:54 1052

原创 [置顶] Project Euler Problem 80-高精度开方-牛顿逼近法

It is well known that if the square root of a natural number is not an integer, then it is irrational. The decimal expansion of such square roots is infinite without any repeating pattern at all.The

2013-07-01 17:14:50 733

原创 netty做Pipe一端快一端慢时防止内存溢出进行的操作

前段时间用netty3.x做了一个pipe的功能,读的速度很快,写的速度很慢,结果读总是把内存耗光(来不及写写到pipe的另一端),后面解决了这个问题。原来的pipe的代码: public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { inboundChan

2013-07-01 17:14:45 1710

原创 JGroups TCP 发现机制解读

jgroups创建一个channel需要创建一个协议栈,协议栈的底层是传输协议,如果使用TCP的话,它的发现机制和心跳是怎么实现的呢? 首先,TCP启动的时候会启动一个SocketServer bind到一个特定的地址然后accept:ConnectionAcceptor。jgroups会给每个TCP socketServer创建一个ConnectionMapTCPConnection>,

2013-07-01 17:14:43 1084

原创 为什么InputStream.read()读取一个byte确返回一个int呢?

问题1:为什么InputStream.read()读取一个byte却返回一个int呢?InputStream.read()返回一个unsigned byte [0 - 255],而java里面没有这个类型,所以用int接收。byte的范围是[-128,127],所以如果read()返回的数在[128,255]的范围内时,则表示负数,即 (byte)128=-128 (byt

2013-07-01 17:14:41 887

原创 Java系统时钟几个值得思考的问题

System.currentTimeMillis()是依赖于系统时钟的,也就是说,如果你把自己的系统时钟更改了,这个函数的返回会立即生效,变成更改后的值;System.nanoTime()主要用于记录一个时间段的长度,或者说一个超时,在这个过程中,你更改系统时钟也不会影响。两个方法的精度一个是毫秒,一个是纳秒,但都是不靠普的(有些系统的时间粒度是10ms),nanoTime()的调用也会消

2013-07-01 17:14:39 710

原创 Class.getResourceAsStream

Class.getResourceAsStream("abc.properties")方法:1,如果使用“/”开头则从类路径根目录寻找资源;2,没有“/”开头,则选择相对路径,即当前class同包下面找;ClassLoader.getResourceAsStream("abc.properties"):1,不能用“/”开头,只能从根目录寻找。2,根据不同ClassLoader实现也不一

2013-07-01 17:14:37 497

原创 logback的SizeBasedTriggeringPolicy和TimeBasedRollingPolicy联合使用问题

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> /var/log/testglog /var/log/test.%d{yyyy-MM-dd}.log 30 10MB %-15d{y

2013-07-01 17:14:35 5885 1

原创 Linux机器克隆后需要修改的网络配置

假设原来的机器是两块网卡,eth0和eth1,克隆以后,MAC也是两块,MAC地址与原来的分别都不一样,但由于系统的一些网络配置没有更新,导致克隆机器的网络启动不了,比如会抛出异常:Bringing up interface eth0: pcnet32 device eth0 does not seepresent, delaying initialization. 或者用ifconf

2013-07-01 17:14:33 1014

原创 Linux 下VIM去掉在windows下编辑的文本文件里面回车符号

用VIM打开windows下面创建的文件会出现^M字符,它表示一个回车符,(windows下编辑器敲击回车键,键入\r和\n,表示回车和换行,linux下只会有换行符\n)下面的方式可以去掉所有回车符::%s/^M//g其中,^M不是输入^和M,而是输入:1,Ctr+V;2,回车//g替换成空字符

2013-07-01 17:14:31 1123

原创 Java包装类Integer比较

1,用符号==比较两个对象,意味着比较他们是否是统一个对象。2,代码Integer b = 1; 自动装箱,通过javap可以看出起始会调用:     invokestatic #16; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;       即调用Integer.valueOf(int)3,代码int a =

2013-07-01 17:14:28 711

原创 Future机制用于并发编程时的死锁检测

Netty源码里面有个类:DeadLockProofWorker,源码如下:  public static final ThreadLocal PARENT = new ThreadLocal(); public static void start(final Executor parent, final Runnable runnable) { if (p

2013-07-01 17:14:26 915

原创 WIN7下面 ARP攻击的检测与处理/静态ARP设置

win7下防止ARP攻击:你需要知道你的网关,通常就是路由器的物理地址(MAC)1,管理员权限运行cmd;2,arp -a     查看当前ARP项,注意网关的物理地址,如果与实际的不符,那么你肯定无法上网,此时你遭受了ARP攻击。3,运行 netsh i i show in     将显示你的所有网卡的索引号Idx,比如,我的本地连接的idx是11:    4

2013-07-01 17:14:24 998

原创 java-在非安全网络上建立可信任安全的通道(3/3)

这篇博文的前两节(1/3,2/3)已经介绍了如何在不安全网络环境下面相互认证双方的身份(建立信任的连接),以及在此基础上进行可靠的密钥协商(DH算法)。       这一节将介绍如何使用协商好的密钥对通道上流淌的数据进行加密。我将使用AES作为对称密钥的算法,密钥强度:128位。这个过程可以简单概括成下面两个步骤: 利用协商好的key创建一个可以用于加密和解密的Aes Cipher;

2013-07-01 17:14:22 480

原创 linux document viewer 中文乱码、方块

1,cp 一个windows上的所有中文字体到linux机器:   copy   C:\WINDOWS\Fonts\所有中文字体文件 =>/usr/share/fonts/2,删除下面的字体:(最好先备份)sudo rm /etc/fonts/conf.d/49-sansserif.conf

2013-07-01 17:14:20 971

原创 opensuse 上面运行eclipse崩溃的问题

应该很少有人在opensuse上面开发java吧,如果有的话,几乎都会遇到一个很蛋疼等问题,就是eclipse没法工作,点一个什么菜单就崩溃了。你可以通过更改参数MALLOC_CHECK_为0解决:export MALLOC_CHECK_=0或者这样启动eclipse: MALLOC_CHECK_=0  ./eclipse MALLOC_CHECK_有四种设定,即:MAL

2013-07-01 17:14:18 658

原创 泛型类里面获取到泛型的类型

下面的代码可以让你在抽象的泛型类里面获取到泛型的类型abstract class A { Class clazz; void doGetClass() { Type genType = this.getClass().getGenericSuperclass(); Type[] params = ((ParameterizedType)

2013-07-01 17:14:16 859

原创 车羊问题的一种简洁证明

在csdn上看到一篇关于车羊问题的文章(http://blog.csdn.net/naturebe/article/details/7272232),我编了个程序证明了结论,然后给出了一种简洁的数学证明。如下:   车羊问题(Car and Goats problem)又叫蒙提霍尔问题(Monty Hall Problem)或三门问题。这个问题来源于美国电视娱乐节目Let’s Make a D

2013-07-01 17:14:13 856

原创 First JNI

http://hi.baidu.com/fwmf/blog/item/849c1cf7ece36c3a730eecee.htmlubuntu 11.04:cd to a dir:1,vim HelloWorld.java:public class HelloWorld { private native void print(); publi

2013-07-01 17:14:11 884

原创 LInux 压缩解压命令

linux下解压命令大全.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar z

2013-07-01 17:14:09 488

原创 Java在并发环境下设置唯一标识

使用hashcode static final ConcurrentMap allObjects = new ConcurrentHashMap(); private static Integer allocateId(Object obj) { Integer id = Integer.valueOf(System.identityHashCode(obj)

2013-07-01 17:14:07 1140

原创 tomcat配置https连接

1.首先用jdk自带的工具keytool生成一个"服务器证书"a.命令行进入$JAVA_HOME/bin目录($JAVA_HOME为jdk的安装目录)b.输入:keytool -genkey -alias tomcat -keyalg RSA -keystore C:\tomcat.keyc.提示输入密码,使用Tomcat的默认值changeitd.输入相关信息后确认(中国国码:86)e

2013-07-01 17:14:04 489

原创 位图排序算法的一个实践

适应场景:1,输入的数据限制在相对较小的范围内;2,数据没有重复;3,对于每条记录而言,除了单一整数外,没有任何其他相关联的数据。2,要求输入:一个最多包含n个正整数的文件F1,每个数小于n(n=1000000),而且整数没有重复;输出:包含按升序排列的整数列表的文件F2;约束:不超过1M的内存空间,运行时间10秒以内。3,实现概要可以用一个20位长度的0,1字符串来表示所有元素

2013-07-01 17:14:02 326

原创 快速获取[0,n]之间的k个不同的随机顺序的随机整数

如果生成位于0到n-1之间的k个不重复的随机顺序的整数呢?/** * 随机抽取[0,n)之前的k个不同的数并随机排序,(k<=n) * * @param n * @param k * @return 随机排序的数组,长度为k */ public static int[] getRandomArray(int n, int k) { if (k

2013-07-01 17:14:00 855

原创 Project Euler Problem 76-整数分拆

It is possible to write five as a sum in exactly six different ways:4 + 13 + 23 + 1 + 12 + 2 + 12 + 1 + 1 + 11 + 1 + 1 + 1 + 1How many different ways can one hundred be written as a sum of at

2013-07-01 17:13:58 514

原创 Project Euler Problem 75

It turns out that 12 cm is the smallest length of wire that can be bent to form an integer sided right angle triangle in exactly one way, but there are many more examples.12 cm: (3,4,5)24 cm: (6,8,

2013-07-01 17:13:56 517

原创 用Java模拟Http请求

1),利用httpclient4.× 写一个http的客户端,模拟浏览器请求,public void post(List payload) throws Exception{ HttpPost post = new HttpPost(uri); HttpEntity result = null; try {

2013-07-01 17:13:54 471

原创 Ubuntu在系统栏 给应用程序添加提示图标

系统栏解除限制Ubuntu 11.X对顶部面板右上角的通知区域(系统托盘)采用了白名单制度,只有支持 Indicators 并位于白名单的部分程序才会被显示在系统托盘中,目前支持的程序有:'JavaEmbeddedFrame', 'Wine', 'scp-dbus-service',。安装 dconf-tools:   sudo apt-get install dconf-tools在终端中

2013-07-01 17:13:52 771

原创 Fix the Package System is Broken error in Ubuntu

当有包冲突时,ubuntu更新会出现  Package System is Broken error的异常,解决方法:http://www.liberiangeek.net/2010/11/fix-package-system-broken-error-ubuntu-10-0410-10-maverick-meerkat/简要描述:通过 Synaptic Package Manager.找到B

2013-07-01 17:13:50 922

原创 二分搜索专题2-在有序二维数组中搜索一个元素

1,设二维数组p的每行每列都按照下标递增的顺序递增。用数学语言描述如下:p满足(1),对任意的x1,x2,y,如果x1(2),对任意的x,y1,y2, 如果y12,问题:给定满足1的数组p和一个整数k,求是否存在x0,y0使得p(x0,y0)=k?3,算法分析:(1),穷举法,遍历二维数组,复杂度O(n*n),这个方法的代码我就不写了。(2),二分搜索,复杂度为O(n*lgn),遍历每

2013-07-01 17:13:47 597

原创 二分搜索专题1-在非递减数组中寻找满足A[i]=i的i

在javaeye上看到了一个二分搜索相关的提问http://www.iteye.com/topic/1118606,我设计了一个简洁高效的算法,这里贴出来:题目:对于一个非递减数组A,存在A[i]=i,求o(lgn)的算法找出i,分析:1,对于任意的j和i,如果j>i则A[j]>=A[i]; 2,假设所求的解是I,即A[I]=I,则对任意的j,如果A[j]>j,可以得到I利用2可以得到下

2013-07-01 17:13:45 860

原创 ubuntu 更改默认的分辨率

我安装完ubuntu11.04后,分辨率是1024×768,不好看,而且从System Setting -> Monitors 进行设置也无法调上去,后面在网上看到一篇博客:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=346103后,修改分辨率成功.上文作者写出了自己的探索过程,我就直接写出最简单的设置方法吧:主要过程:1),选好自

2013-07-01 17:13:43 1171

Java RSA,MD5 string,MD5 File,DES,ELGamal算法实现+RSA数字签名

虽然贵,但是是我几个星期的心血结晶。RSA、MD5 字符串、MD5文件、DES、ELGamal等加密算法实现,以及RSA模拟数字签名过程(工程Crypto和RSASignature),全部用GUI展现(NetBean6.5的Swing库),要求JDK1.5+,读者可以直接运行dist目录下的jar文件,一目了然。

2009-05-24

软件设计师历年真题与详解(1990-2006)

软件设计师历年真题与详解chm版,1990-2006,内容全面,非常清晰,使用方便,

2009-01-11

Java MD5算法

用Java实现的MD5加密算法,public String getMD5ofStr(String inbuf) 函数输入要加密的字符串,输出加密后的字符串

2008-10-08

Structs控制器的UML图

是structs源代码中控制器部分的类图,很详细

2007-12-09

空空如也

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

TA关注的人

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