摘要:Top 20 Java Libries Used by Github's Most Popular Java Projects:
阅读全文
摘要:http://www.onjava.com/pub/a/onjava/2001/05/30/optimization.htmlComparing the performance of LinkedLists and ArrayLists (and Vectors) (Page last update...
阅读全文
摘要:1.前言在阅读研究线程池的源码之前,一直感觉线程池是一个框架中最高深的技术。研究后才发现,线程池的实现是如此精巧。本文从技术角度分析了线程池的本质原理和组成,同时分析了JDK、Jetty6、Jetty8、Tomcat的源码实现,对于想了解线程池本质、更好的使用线程池或者定制实现自己的线程池的业务场景...
阅读全文
摘要:本文是结合项目中使用Log4j总结的最佳实践,非转载。网上可以找到的是这一篇《Log4j最佳实践》。本来Log4j使用是非常简单的,无需多介绍其用法,这只是在小型项目中;但在大型的项目中使用log4j不太一样。大型项目非常依赖日志,因为解决线上问题必须依靠log,依靠大量的日志!线上出现问题往往不能...
阅读全文
摘要:What is a memory model, anyway?In multiprocessor systems, processors generally have one or more layers of memory cache, which improves performance both by speeding access to data (because the data is closer to the processor) and reducing traffic on the shared memory bus (because many memory operatio
阅读全文
摘要:在上篇《非阻塞同步算法与CAS(Compare and Swap)无锁算法》中讲到在Java中long赋值不是原子操作,因为先写32位,再写后32位,分两步操作,而AtomicLong赋值是原子操作,为什么?为什么volatile能替代简单的锁,却不能保证原子性?这里面涉及volatile,是java中的一个我觉得这个词在Java规范中从未被解释清楚的神奇关键词,在Sun的JDK官方文档是这样形容volatile的:The Java programming language provides a second mechanism, volatile fields, that is more c
阅读全文
摘要:OSGi模块化框架是很早就出来的一个插件化框架,最早Eclipse用它而出名,但这些年也没有大热虽然OSGi已经发布了版本1到版本5。现在用的最多的,也是本文讲述基于的是Equinox的OSGi实现,同时也是Eclipse核心,Spring Dynamic Module也是基于Equinox。OSGi框架为java系统提供了一个通用的容器,该系统中的 bundle,无需停止系统,即可实现 bund...
阅读全文
摘要:锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用户态的锁虽然避免了这些问题,但是其实它们只是在没有真实的竞争时才有效。Java在JDK1.5之前都是靠synchronized关键字保证同步的,这种通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪
阅读全文
摘要:单链表的Java实现首先参考wiki上的单链表说明,单链表每个节点包含数据和指向链表中下一个节点的指针或引用。然后看代码import java.lang.*;public class SinglyLinkeList{ Node start; public SinnglyLinkedList() { this.start=null; } public void addFront(Object newData) { Node cache = this.start; //store a reference to the current st...
阅读全文
摘要:最近设计和实现了一个JAVA的RESTful API的后台业务系统架构,主要基于Java平台。设计要求是: 性能:平均响应时间(RESTful API)小于2s(平均负载的情况下),并发访问200个以上。 可用性:99%,87.6小时每年宕机时间 伸缩性:允许负载均衡集群水平扩展web server和application server。保留半年的历史数据。可以扩展。 ...
阅读全文
摘要:Spring Security是J2EE领域使用最广泛的权限框架,支持HTTP BASIC, DIGEST, X509, LDAP, FORM-AUTHENTICATION, OPENID, CAS, RMI, JAAS, JOSSO, OPENNMS, GRAIS....关于其详尽的说明,请参考Spring Security官方网页。但它默认的表table比较少,默认只有用户和角色,还有一个group,不能满足RBAC的最高要求,通过扩展User - Role - Resource - Authority,我们可以实现用户,角色,资源,权限和相互关系的7张表,实现对权限的最灵活配置。常见的S
阅读全文
摘要:用Java的大网站很多(LinkedIn,淘宝),当然用LAMP(PHP+MySQL)的更多(Facebook是把PHP转成C++编译的,也算),用ASP.NET也有一些(如Stackoverflow,CSDN,京东)。其实高并发的大网站架构和具体的语言没有啥大关系。针对高可用、可扩展的、高可伸缩性的、异步、解耦、面向服务的、分而治之的架构设计才是关键。操作层面来说,分布式文件系统、异步消息系统、分布式缓存系统、数据库的水平垂直分割分库分区分表甚至NoSql、反向代理、CDN、负载均衡设计、高可靠性异步消息队列,Hadoop,等等,这些都是和语言没有关系的,统称“分布式系统架构”。当然,语言和
阅读全文
摘要:具体背景就不说了,可以网上搜索相关知识,或者直接看Sping MailSender的官坊网页。这里就直接实战了(Java实现异步发送电子邮件,包含中文无乱码)。Maven: com.sun.mail javax.mail 1.5.0 ApplicationContext.xml: smtp true ...
阅读全文
摘要:Mac下做Java开发还是很方便的,不用像.NET开发一样在Parallel Desktop里面安装Windows虚拟机,Mac下面默认已经安装了JDK。当然,你如果要安装JDK7,请先阅读:http://www.oracle.com/technetwork/java/javase/downloads/jdk-for-mac-readme-1564562.html然后下载Eclipse,Eclipse64位在Mac下的也是用Objective C写的。Eclipse Indigo Mac 64位版本 下载地址:http://www.eclipse.org/downloads/packages/
阅读全文
摘要:本文内容:20个最常见的JAVA面试问题(附答案)13个单例模式JAVA面试问题(附答案)说说JVM和垃圾收集是如何工作的(附答案)说说如何避免JAVA线程死锁(附答案)Java中HashSet和HashMap的区别(附答案)Java面试中和Collection有关的10个问题(附答案)Java面试中和Spring相关的10个问题(附答案)30个C/C++/Java面试中的常见算法问题Stackoverflow中回复超过20的算法问题面试攻略微软面试技术题(附答案)20个最常见的JAVA面试问题(附答案)1. What is immutable object? Can you write im
阅读全文
摘要:今天把Spring MVC的Java网站部署到CentOS上,并且设置了https/ssl 8443端口,然后用IBM Rational AppScan进行安全扫描,发现一个漏洞:Insecure HTTP Methods Enabled. 原因是Tomcat支持的http命令中包含DELETE、OPTIONS、PUT、HEAD和TRACE这五条命令。
阅读全文
摘要:上一篇说到《Spring MVC防御CSRF、XSS和SQL注入攻击》,今天说说SessionID带来的漏洞攻击问题。首先,什么是Session Fixation攻击和Session Hijacking攻击问题? 说来话长,非常具体的解释查看我这个pdf文件:《Session Fixation Vulnerability in Web-based Applications》。为什么会注意到这个问题?其实原来也知道session劫持的问题,但没有注意,这几天用IBM Ration AppScan扫描了web漏洞,发现一个严重的Session Fixation漏洞:"会话标识未更新....
阅读全文
摘要:本文说一下SpringMVC如何防御CSRF(Cross-site request forgery跨站请求伪造)和XSS(Cross site script跨站脚本攻击)。
阅读全文
摘要:本文讲述如何在CentOS R6上安装和配置Tomcat7....
阅读全文