- 浏览: 55775 次
- 性别:
- 来自: 武汉
最新评论
文章列表
Spring AOP学习
- 博客分类:
- 框架使用
基本概念
目标对象(Target Object):需要被织入横切关注点的对象,即该对象是切入点选择的对象,需要被通知的对象,从而也可称为“被通知对象”;由于Spring AOP 通过代理模式实现,从而这个对象永远是被代理对象,在AOP中表示为“对谁干”。比如Service层的实现类。
连接点(Jointpoint):表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化、方法执行、方法调用、字段调用或处理异常等等,Spring只支持方法执行连接点,在AOP中表示为“在哪里干”。
切入点(Pointcut):选择一组相关连接点的模式,即可以认为连接点的集合,Spring支持 ...
java线程并发库:Java5以后提供在并发编程中很常用的实用工具类,这些工具类在java.util.concurrent包下面。
java.util.concurrent.atomic包
支持在单个变量上解除锁的线程安全编程。可以对基本类型、数组中的基本类型、类中的基本类型等进行操作。
线程池
创建一个只有一个线程的线程池,与单线程一样,但好处是保证池子里有一个线程当线程意外死亡,会自动产生一个替补线程,始终有一个线程存活
ExecutorService threadPool = Executors.newSingleThreadExecu ...
java线程(笔试用)
- 博客分类:
- 经验总结
启动线程两种方式
继承Thread类
new Thread() {
public void run() {
}
}.start();
实现Runnable接口
new Thread(new Runnable() {
public void run() {
}
}).start();
线程互斥
多个线程操作同一个资源(即某个对象),为保证线程在对资源的状态(即对象的成员变量)进行一些非原子性操作后,状态仍然是正确的。
两种方法解决:
加入互斥代码块synchronized (lock){}
方法前加synchr ...
准备工作
确保服务器安装了g++、gcc、jdk,命令如下
g++ --version
gcc --version
java -version
下载apache:http://httpd.apache.org/download.cgi 这里用httpd-2.2.26.tar.gz
下载tomcat:http://tomcat.apache.org/download-70.cgi 这里用apache-tomcat-7.0.50.tar.gz
下载jk:http://tomcat.apache.org/download-connectors.cgi 这里用tomcat-co ...
Eclipse打jar包插件FatJar
- 博客分类:
- 工具使用
Eclipse将web工程打成jar包很容易,但要将java工程打成jar包,不会自动引入第三方的jar文件。可以安装插件FatJar。
下载地址http://sourceforge.net/projects/fjep/files/fatjar/fatjar_0_0_31/
将解压后的net.sf.fjep.fatjar_0.0.31.jar复制到eclipse的plugins目录
重启eclipse
选择工程,右键"Export"。在Other下可以找到"Fat Jar Exporter"选项。
"Next" ...
HAProxy安装及使用
- 博客分类:
- 工具使用
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理。
安装
可以从http://haproxy.1wt.eu/下载安装包。这里下载haproxy-1.4.24.tar.gz
上传haproxy-1.4.24.tar.gz到服务器,比如/home
解压tar zxvf haproxy-1.4.24.tar.gz
查看linux内核uname -a,比如为linux26
安装,进入解压后的目录然后
make TARGET=linux26 PREFIX=/home/haproxy-1.4.24make install PREFIX=/home/ha ...
PowerDesigner常用汇总
- 博客分类:
- 工具使用
新建PhysicalData试图
左侧工作空间上右键"New"—>"Physical Data Model"
弹出框选择"Physical Data",输入"Model name"
配置数据源
工具栏"Database"—>"Configure Connections"—>"Connection Profiles"
配置数据源
导入数据库到视图
工具栏"Database&q ...
Java密码学(7)——安全协议HTTPS
- 博客分类:
- 数据安全
HTTPS协议是网络上最常用的安全协议。HTTPS=HTTP+SSL/TLS。
HTTPS分为单向认证和双向认证:
单向认证服务:服务端提供服务器证书给客户端,客户端单向认证服务端
双向认证服务:服务端提供服务器证书给客户端,客户端提供客 ...
Java密码学(6)——数字证书
- 博客分类:
- 数据安全
概述
消息摘要算法验证数据的完整性,对称加密和非对称加密算法保证了数据的保密性,数字签名算法用于抗否认性服务。
数字证书集合了这些知识:自身带有公钥信息,可以完成加解密操作;带有数字签名,可以鉴别消 ...
Java密码学(5)——数字签名算法
- 博客分类:
- 数据安全
数字签名算法是一种带有密钥的消息摘要算法,数字签名算法=非对称加密算法+消息摘要算法。
数字签名算法能验证数据的完整性、认证数据来源、起到抗否认作用。
数字签名算法包含签名和验签两项操作,遵循“私钥签名,公钥验签”的原则。签名时需要私钥和待签名数据,验签时需要公钥、签名值和待签名数据。
数字签名算法主要包括RSA、DSA、CDSA。
RSA算法
模型分析
代码实现
/**
* RSA私钥签名
* @param data
* @param key
* @return
*/
public static String RSAs ...
Java密码学(4)——非对称加密算法
- 博客分类:
- 数据安全
对称加密的加密密钥和解密解密密钥一致,即加密和解密用同一个密钥。
非对称加密有两个密钥,一个公钥一个私钥,两者成对出现。两者不一样,遵循“公钥加密私钥解密”和“私钥加密公钥解密”的原则。
RSA是常用的非对称加密算法。
RSA算法
模型如下
算法实现
/**
* 初始化RSA密钥对
* @return
*/
public static String[] initRSAKey(){
try {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("R ...
Java密码学(3)——对称加密算法
- 博客分类:
- 数据安全
对称加密算法的加密密钥和解密密钥相同,用密钥对原数据加密得到密文,对密文解密密得到明文,解密算法是加密算法的逆运算。
DES是最具代表性的对称加密算法,DESede是DES算法的变种又称3DES。DES算法有ecb和cbc两种模式。 AES算法作为DES的替代,更安全,性能更好。
DES算法
模型图如下
这里采用单DES的ECB模式用代码实现
/**
* DES ECB模式加解密
* @param key
* @param data
* @param mode 0-加密,1-解密
* @return
*/
pu ...
Java密码学(2)——消息摘要算法
- 博客分类:
- 数据安全
消息摘要算法是为了验证数据的完整性。通过摘要算法可以获得对应的唯一的“消息摘要”或“数字指纹”,但不能通过该“消息摘要”反推出原始值。
3大消息摘要算法:
MD算法:MD2、MD4、MD5
SHA算法:SHA-1、SHA-224、SHA-256、SHA-384、SHA-512
MAC算法:HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384、HmacSHA512
MD5算法
采用commons-codec实现,代码如下
/**
* MD5消息摘要
* @param data
* @return
*/
p ...
Java密码学(1)——Base64算法
- 博客分类:
- 数据安全
最近想总结一下以前用到的密码学知识用java实现,准备汇总成一个系列
初步决定包含以下内容:
传输算法Base64
验证数据完整性:消息摘要算法
对称加密算法
非对称加密算法
带密钥的消息摘要算法:数字签名算法
数字证书
安全协议HTTPS
热身准备
大部分算法可以通过Sun的JDK实现,但有更简单的第三方包可以帮助我们。
我采用的是commons-codec,下载地址http://commons.apache.org/proper/commons-codec/
下载是最新的commons-codec-1.9.jar
使用commons-codec有 ...
Redis的安装使用及通过Java操作Redis
- 博客分类:
- 框架使用
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave( ...