- 浏览: 25838 次
- 性别:
- 来自: 广州
文章列表
感觉iteye的博客文章编辑器不好用,所以搬到CSDN试试.
呵呵,感觉好像也没人关注我的博客....发这个似乎没什么用.
Java是一门原生支持多线程的语言,要开启一个线程很容易,使用如下代码
new Thread(new Runnable() {
@Override
public void run() {
//do something
}
}).start();
这是我能想到的启动线程的最简单的代码,语义明确.但是要优雅得关闭该线程通常却很难.
API中有Thread.stop()这个方法.但是由于各种原因该方法已经被标记为Deprecated所以一定不要使用该方法停止线程运行.正确的方法是使用Thread.isInterrupted()和Thr ...
1.不可避免的编码转换.
计算机只能保存和理解二进制字节,而文字实际上是一种图形,所以要使用一种编码方法将图形转换为对应的二进制字节.在Java中这种编码为Unicode,使用16个二进制位表示一个字符,包含基本所有语言的任何 ...
ajax的盛行,使javascript成为前端开发人员的宠儿.现今js已经可以通过nodejs在服务器运行.本文将通过对一段代码的逐渐改进来展示如何让程序员使用javascript快乐得进行非阻塞异步编程.nodejs和mongodb的具体安装和使用方法请参考文章最后的参考文献列表.
Hello,Node !
nodejs是编程就绪的,任何功能都要通过编程实现.这和Tomcat,ApacheHTTP等运行就绪服务不同,后者安装后可以直接运行就可以通过浏览器访问.而nodejs起码要有如下代码.
var http = require('http'); ...
本文翻译自http://1wt.eu/articles/2006_lb/
鉴于本人英语水平翻译的或许令人费解,请有兴趣的读者参照原文阅读.
原文似乎写于2006年,最后一部分提到的有关keep-alive的内容或许稍显过时.现今大量越来越多的应用开始使用长连接服务,非阻塞IO和异步处理使维护连接的消耗变的很小了已经.所以还是要根据具体应用,来使用文章最后提供的调试技巧.
起初,WEB应用的内容大部分是静态的,可以快速地传递给用户。用户主要是在阅读,点击超链接地频率低。现在,用户会停留在WEB应用几十分钟或数小时,频繁地点击超链接,服务器要作非常多的处理工作。用户或频繁地访问那些 ...
NIO是Java提供的非阻塞I/O API.
非阻塞的意义在于可以使用一个线程对大量的数据连接进行处理,非常适用于"短数据长连接"的应用场景,例如即时通讯软件.
在一个阻塞C/S系统中,服务器要为每一个客户连接开启一个线程阻塞等待客户端发送的消息.若使用非阻塞技术,服务器可以使用一个线程对连接进行轮询,无须阻塞等待.这大大减少了内存资源的浪费,也避免了服务器在客户线程中不断切换带来的CPU消耗,服务器对CPU的有效使用率大大提高.
其核心概念包括Channel,Selector,SelectionKey,Buffer.
Channel是I/O通道,可以向其注册S ...
Spring中Bean继承注意事项
- 博客分类:
- JavaWeb
今天在排除项目错误的时候发现,Spring的Bean继承并不是所有的属性都可以继承自parent的.
depends on, autowire mode, dependency check, singleton, scope, lazy init.
上述这些属性,全部都不从parent继承,而使用child自己的设置,如果不设置将采用默认值,跟parent无关.
常见的攻击方式及基本防护方法
1.cookie篡改.可以对cookie进行加密签名.应尽量避免在cookie中保存重要数据.
2.跨站脚本攻击.在接受请求或者返回生成的html页面时对内容进行转译.
3.SQL注入攻击.在程序代码中写SQL语句时使用占位符绑定的方式添加参数.决不能使用字符串连接方式生成SQL语句执行.
4.跨站点请求伪造.对于应用中的所有重要业务请求添加鉴权令牌.例如为页面表单添令牌的隐藏域,随表单提交.
可以使用JSP自定义标签来实现简单的代码模板.
自定义标签可以通过传统的继承TagSupport或SimpleTagSupport并实现相关方法,然后声明使用tag描述符进行声明.
这里要说的是一种更加简单的方式,TagFiles.
Tag File其实就是一个JSP页面,只是把扩展名由.jsp变成了.tag,并放置在指定的目录下.
TagFile中不能使用page指令,作为替代可以使用tag指令,在tag指令中声明pageEncoding来指定文件编码,这尤为重要.
attribute指令用来指定调用tag可以使用的参数.
例如<v:table model=" ...
重用代码的目标是什么?(我们为什么要重用代码)
答:避免重复发明轮子,有大量的已经写好的功能可以调用.这也是OO(面向对象的目标)
什么样的代码是可以复用的代码?
1.接口良好的.(利于用户阅读和使用)
1).类的接口应该展现一致的抽象层次.
public class
EmpolyeeContainer extends LinkedList{
public void addEmpolyee(Empolyee e);//1
public void removeEmpolyee(Empolyee
e); ...
1.堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可 ...
最近阅读了一些有关缓存的资料,主要是两个ehcache和memcached.由于都没有使用过,所以在此只是对收集的资料进行一些总结.
1.性能比较
ehcache和memcached的性能都很强.有些资料显示ehcache的性能数百倍于memcached.由于自己没有使用过,所以没有具体感受.不过memcached被很多大型网站使用,可见其性能已经相当强劲.
2.持久化
memcached是纯内存型缓存,但是可以使用第三方模块进行磁盘或者数据库的缓存持久化.
ehcache则原生支持将缓存持久化到磁盘,在缓存服务器重启的时候会自动将磁盘的内容读入内存.当内存使用超过设置值时会自动将缓存 ...
Guava是Google的Java核心库,基于Java5+.
Guava由
com.google.common.annotations
com.google.common.base
com.google.common.base.internal
com.google.common.collect
com.google.common.io
com.google.common.net
com.google.common.primitives
com.google.common.util.concurrent
这些包组成.其中base包中提供了一些与commo ...
最近上司部署了个研究防盗链的任务.经过多方搜索找到使用mod_perl实现防盗链的文章,但是整个安装配置过程阻碍甚多.故作此文以为梳理.
首先是依赖模块的安装.
1.安装ApacheHttpServer2.2(这是废话)
2.安装Perl5.8.*.或Perl5.12.*
3.使用PerlPPM安装mod_perl,命令如下
对于Perl5.8
ppm install http://theoryx5.uwinnipeg.ca/ppms/mod_perl.ppd
对于Per5.12
ppm install http://cpan.uwinnipeg.ca/PPM ...
近日工作中发现对Hibernate一些概念模糊.故望此文可以帮助我理顺思路.写了一个简单的Demo做测试.两个实体
public class Type {
private int id;
private String name;
private Set books;
//省略getter,setter等方法,下同
}
public class Book implements Serializable {
private int id;
private String name;
...