- 浏览: 211655 次
- 性别:
- 来自: 深圳
最新评论
-
totzc:
厉害了。算法永不过时
笛卡尔积算法的Java实现 -
calosteward:
感谢博主对二维码的介绍。________________tag ...
二维条形码 -
butata:
哈哈 在这看到谢工
在eclipse中配置tomcat,不用经常重启Tomcat -
cfanllm:
xiemingmei 写道jisuanjixuezi 写道你好 ...
Memcached GetAndTouch延长过期时间用法 -
xiemingmei:
jisuanjixuezi 写道你好 我用了Memcache ...
Memcached GetAndTouch延长过期时间用法
文章列表
SVG矢量图指可伸缩矢量图形 (Scalable Vector Graphics),.svg也是该类文件的后缀名。
源码是xml格式的,可以直接编辑。
如下图:
该图的XML代码:
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="150">
<defs>
<pattern id="pattern1" patternUnits="userSpaceOnUse" ...
输入的参数,必须经过转码才能输出到页面上,如果不经转换而原样直接输出到页面上,则会产生XSS漏洞。
比如:在输入框,输入姓名“张三confirm(123)”
如果直接在页面上输出的话,就会弹窗显示123,其实就是执行了用户设定的js操作了,这就产生了xss漏洞。
xss漏洞很好预防,只要在参数输出时转码就行了。
预防方式,只要输出时做处理:
(1)jstl:<c:out value="${name}" escapeXml="true"/>
(2)EL: ${fn:escapeXml(param)}
(3)工具类:org.apache. ...
TEA(Tiny Encryption Algorithm)是一种分组加密算法,它的实现非常简单,通常只需要很精短的几行代码。
应用领域
(1)客户端桌面程序或手机程序与服务端接口交互,可以使用TEA来进行加密,保证传输信息的私密性。
如:OICQ的数据安全采用了TEA算法,QQ通讯也大量使用了TEA算法。
(2)存储在本地的用户私密信息,可以采用TEA加密算法。
如:QQ存储在本地的msg信息等。
附QQ使用TEA的情况,从网上转载的:
QQ是如何利用TEA进行加密的?
TEA算法被广泛应用于QQ的数据加密中,QQ采用16轮的TEA算法加密,在这时采取16轮加密时而不采取标准的32 ...
(1) URLEncoder.encode()输入什么字符集?
@Deprecated
public static String encode(String s)
调用这行代码:encode(s, dfltEncName);
dfltEncName = AccessController.doPrivileged(
new GetPropertyAction("file.encoding")
);
输出来以后得到utf-8
(2)String.getBytes()使用的什么字符集?
public byte[] getBytes() ...
本地文件数据库sqlite,
特性:
1. ACID事务
2. 零配置 – 无需安装和管理配置
3.储存在单一磁盘文件中的一个完整的数据库
4.数据库文件可以在不同字节顺序的机器间自由的共享
5.支持数据库大小至2TB
6. 足够小, 大致13万行C代码, 4.43M
7. 比一些流行的数据库在大部分普通数据库操作要快
8. 简单, 轻松的API
9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
10. 良好注释的源代码, 并且有着90%以上的测试覆盖率
11. 独立: 没有额外依赖
12. 源码完全的开源, 你可以用于任何用途, 包括出售它
13. 支持多种开发语言,C, P ...
双缓存防止缓存雪崩,原理不难。 并发量非常大的WEB应用可以用上。
http://www.oschina.net/question/12_26514
存在:key1: time,key2: time+n分
原理:get时,如果key1失效,则取key2返回,同时启动线程去刷新key1、key2。
有多个线程来刷新,则需要并发控制,只让一个线程访问数据库。
分布式系统怎么来并发控制? 可用memcached的add方法,如下:
/**防同ID重复提交*/
String preventKey = "unique_id_" + id;
boolean i ...
安全随机数生成方法
方法1:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
System.out.println(random.nextLong());
方法2:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
byte[] seed= random.generateSeed(10);
random.setSeed(seed);
System.out.println(ran ...
XMemcached客户端序列化方式
默认为SerializingTranscoder
见XMemcachedClientBuilder的代码:
Transcoder transcoder = new SerializingTranscoder();
也可使用Kryo序列化, 但有bug, 数据类新老版本不兼容。
最优选Hessian序列化, 数据类新老版本兼容。
Kryo序列化:
(1)Java 数据类中必须拥有无参构造函数;
(2)Java 数据类的字段增、减,无法兼容;
(3)Java 数据类无需实现Serializable接口。
Hession序列化:
(1)Java 数据类中必须拥有无参构造函数;
(2)Java 数据类的字段增、减,可以兼容;
(3)Java 数据类需实现Serializable接口。
选择建议:
(1)Kryo bug比较多,Java数据类无法兼容老版本,在系统快速迭代的互联网企业中,是无法忍受的;
(2)Hessian 序列化的字节量和耗时稍高一点,但尚能接受。
public class Test {
private static DelayQueue<DelayedTask> dq = new DelayQueue<DelayedTask>();
public static void main(String[] arg) throws Exception {
testDelayQueue();
}
static class DelayedTask implements Delayed {
private String title;
private long delayedInSec ...
直接用Get,如下效果:
MemcachedClient xClient = (MemcachedClient) ac.getBean("memcachedClient");
String key ="test_xiemingmei";
xClient.add(key, 60, "Y");
TimeUnit.SECONDS.sleep(60);
System.out.println("60秒后:" + xClient.get(key));
输出:
60秒后:null
使用GetAndTo ...
logback
引用的包介绍
slf4j-api.jar: 日志接口包
jcl-over-slf4.jar: 用来覆盖commons-logging包;
log4j-over-slf4j.jar: 用来覆盖log4j包;
logback-core.jar: 日志实现core包,ConsoleAppender、FileAppender属于core包。
logback-classic.jar: 日志实现classic包,其他appender属于classic包。
登记日志机制,有同步,有异步,一般是同步登记的。
常用的两种都是OutputStreamAppender的子类:
(1)Consol ...
网页的Http请求Referer
场景:
(1)百度搜索结果中有链接,点击链到 http://caipiao.weibo.com/;
(2)http://caipiao.weibo.com/ 中iframe包含了 http://w.aicai.com/;
(3)http://w.aicai.com页面中访问了/getGdIssue.do?lotteryType=sd11x5&time=1386927411500;
(4)cnzz 是按什么来统计PV的,是referer吗 ?
结果:
(1) 按这种方式访问http://caipiao.weibo.com,请求referer是: ...
JS中的变量或对象在做比较时,会先转型,然后再进行比较值或类型。
双等号只会判断两边的变量或对象的值是否相等,先会转化值,只要值相等,则会返回真。
三等号会判断类型和值,如果两边的变量或对象的类型和值都相等,则会返回真。
例子如下:
var check123 = function(){
var t1 = "1";
var t2 = 1;
alert(t1==t2);
alert(t1===t2);
};
check123();
显示:
true--值相等, 先把"1"转换成1, 比较1 ==1, 相等。
fals ...
log4j与logback有什么区别呢?
log4j与logback是同一个作者Ceki开发的,logback性能却比log4j好得多;
所以,正常情况下,请选用logback,同时考虑用logback来替换原来的log4j。
一般情况下,logback不打印出类的方法名,配置如下:
<pattern>%-16(%d{MM-dd HH:mm:ss.SSS}) %-5thread %-5level %logger{1} - %msg%n</pattern>
如果不考虑性能的话,你可以打印出方法名,这样配置:
<pattern>%-16(%d{MM-dd ...