- 浏览: 175792 次
- 性别:
- 来自: 杭州
最新评论
-
lgh1992314:
String.intern()在全局常量池1.8在native ...
Java 内存模型 -
lgh1992314:
try with resource
Java GC的过程 -
lgh1992314:
JDK8 HotSpot 方法区在MetaSpace
Java 内存模型 -
空城回转:
永洁童心 写道最后的图中,在afterload_1步骤中,op ...
栈帧、局部变量表、操作数栈 -
永洁童心:
最后的图中,在afterload_1步骤中,operand s ...
栈帧、局部变量表、操作数栈
文章列表
https://blog.csdn.net/u012410733/article/details/72773095
做项目被log4j的输出格式化参数搞烦了,索性把API的相关部分大致翻译一下,原文参见http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html
摘自:http://blog.csdn.net/guoquanyou/article/details/5689652
参数
说明
例子
%c
列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间
log4j配置文件参数举例
输出显示媒介
假设当前logge ...
除了yield,其他方法都有阻塞效果,所以必须处理InterruptedException,因此在多线程任务中最好实现中断策略。
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常 比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY
还是使用上一篇文章中生成的四个证书文件,以Tomcat 为运行环境来部署支持SSL的CXF应用。
首先在Tomcat的conf目录中找到server.xml文件,需要在该文件中加上SSL配置,如下
<Connector SSLEnabled="true"
acceptCount="100"
algorithm="SunX509"
disableUploadTimeout="true"
enableLookups="false" ...
上一篇讲了如何使用UsernameToken的方式来安全访问CXF,这篇将讲解使用证书的签名和加密技术来达到安全访问的目的。
1.证书的签名和加密的原理
在CXF官网关于WS-SECURITY的章节中首先介绍了,签名和加密的原理,图和文字很形象,就不再多说了。
下面附上本文中使用的生成证书的代码:
1. 生成别名和密码为 "serverkey"/"myPassword"的服务端证书,别名都使用小写(在keystore中存储的别名都是小写字符), 并保存在server-keystore.jks中(改证书用来服务端解密)
keytoo ...
CXF涉及安全方面主要有三个途径:
最简单的方式是使用Http Basic Auth,就是WSS4J的UsernameToken实现方式,优点是简单易用,缺点是每次都会在MESSAGE里面传密码,安全性低。
Transport level(传输层内)的实现Https。CXF samples里面有一个例子wsdl_first_https, 很详细的讲了怎么使用。
对MESSAGE进行加密和签名(encryption and signing),请参考官方教程。
先来看第一种实现方式,按照上一篇教程中的内容先配置好,然后根据下面顺序进行修改
1. 修改服务端spring配置文件
...
1.定义SEI
package com.demo.cxf.helloword;
import java.util.List;
import javax.jws.Oneway;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService(targetNamespace="com.demo.cxf.helloword")
public interface HelloWord {
String sayHello( ...
虽然Thread.stop和suspend等方法提供了线程终止的机制,但由于存在一些严重的缺陷,因此应该避免使用。可以说Java并没有提供任何机制来安全地终止线程。但它提供了中断(Interrupt),这时一种协作机制,能够使一个线程终止另 ...
Executor基于生产者-消费者模式,提交任务(Runnable)的操作相当于生产者(生成待完成的工作单元),执行任务的线程相当于消费者(执行完这些工作单元)。每当看到下面这种形式的代码时:
new Thread(runnable).start()
并且你 ...
http的本质还是socket,所以底层传输的还是字节流(不要深究到二进制层面),既然是字节流,那么肯定会涉及到编码和解码.
乱码的原因大家肯定都知道,也很简单,那就是编码和解码的格式不一致
。
既然知道了根源,那么 ...
1.定义
将抽象和实现解耦,使得两者可以独立地变化
2.例子
定义看不明白?没关系,我将通过下面这个例子来阐述桥梁的概念。
小时候我们都用蜡笔画画,一盒蜡笔12种颜色。一开始我都是用最小号的蜡笔画个太阳公公、月亮婆婆足够了。后来开始画一些抽象派的作品,就得换中号的了,要不然画个背景都要描半天,好一盒中号的也是12种颜色。再后来我开始转向豪放派,中号就有些捉襟见肘了,只好换大号的了,好一盒大号的也只有12种颜色。你看,像我这样不太出名的画家就需要36种画笔,哇,太麻烦了。但是据我观察,另一些比我出名的画家倒是没有这么多笔,他们只有几把刷子和一些颜料,这样就解决了蜡笔的“种类爆炸 ...
1.定义
使用共享对象可有效地支持大量的细粒度的对象。
是对象池技术的重要实现方式。
2.享元模式的使用场景
系统中存在大量的相似对象。
细粒度的对象都具备较接近的外部状态,而且内部状态与环境无关,也就是说对象没有特定身份。
需要缓冲池的场景。
请看例子程序,学生和学校的关系:
package _22FlyweightPattern;
/**
* 班级类
*/
public class School {
// 学校id
private int id;
// 学校名称
private String schoolName;
// ...
1.定义
给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。
属于行为类模式。
2.解释器模式的使用场景
重复发生的问题可以使用解释器模式:比如根据用户输入的公式进行加减乘除四则运算,但是他们输入的公式每次都不同,有时是a+b-c*d,有时是a*b+c-d,等等等等个,公式千变万化,但是都是由加减乘除四个非终结符来连接的,这时我们就可以使用解释器模式。
一个简单语法需要解释的场景:你看看下面给出的例子,非终结表达式,文法规则越多,复杂度越高,而且类间还要进行递归调用。因此解释器模式一般用来解析比较标准的字符集,例如sql语法分析,不过该 ...
1.定义
当一个对象内在状态改变时,允许其改变行为,这个对象看起来像改变了其类。
状态模式的核心是封装。
2.要解决的问题-过多的if-else状态判断
对象如何在每一种状态下表现出不同的行为?在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状体(if else(或switch case)语句的增多或者修改)可能会引起很大的修改,而程序的可读性,扩展性也会变得很弱。维护也会很麻烦。 ...