- 浏览: 79238 次
- 性别:
- 来自: 成都
最新评论
-
北极光之吻:
...
Java多线程状态图 -
deyami:
”问题就来了,假如线程A刚执行完第一步,CPU时间耗尽,线程B ...
双检锁(Double-checked Locking) -
wzb56:
package cn.fsf.thread;
public ...
双检锁(Double-checked Locking) -
wzb56:
package cn.fsf.thread;public cl ...
双检锁(Double-checked Locking) -
wolfcame:
嗯 谢谢你的意见~
双检锁(Double-checked Locking)
文章列表
关系代数运算与SQL语句
- 博客分类:
- sql
一、传统的集合运算与S Q L 语句实现
传统的集合运算包括四种运算:并(∪)、交(∩)、差(—)、广义笛卡尔积(X)。
<!--[if !supportLists]-->(一) <!--[endif]-->并运算(Union)
(1)
class FileUtils{
/**
* remove the target file or directory.
* @param src the full path of the target file
* @return true if the file or directory is successfully removed; false otherwise.
*/
static void rm(String src) {
rm(src, null);
}
...
1,使用jps查找出java进程的pid,如3707
2,使用top -p 3707观察进程情况,然后Shift+h,显示该进程的所有线程。
3,找出CPU消耗较多的线程id,如3720,将3720转换为16进制0x7d0,注意是小写哦
4,使用jstack 3707 | grep -A 10 0x7d0 来查询出具体的线程状态。
通过这些线程状态便可基本定位问题之所在。
Java虚拟机参数备忘录
- 博客分类:
- J2SE
java启动参数共分为三类;其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;
堆设置
-Xms<size>-Xmx<size>设置虚拟机可用内存堆的初始、最大值,缺省单位为字节,该大小为1024的整数倍并且要大于1MB,可用k(K)或m(M)为单位来设置较大的内存数。初始堆大小为2MB。对于运行系统,为避免GC在运行时频繁调整 ...
消除冗长PO代码利器-lombok
- 博客分类:
- 代码生成工具
项目名称:Lombok
项目主页:http://projectlombok.org/index.html
通过引入Annotation的方式,在编译器将自动为目标类生成Setter Getter toString equal hashCode等方法;极大的减少了po对象的类的内容量。
1
2
3
0
*
1
1
2
2
0
1
=
5
1
4
3
3
6
规则:把前面矩阵的第i行与后面矩阵的第j列对应元素相乘再相加,放到结果矩阵的第(i,j)这个位置上。
5=1*1+2*2
1=1*1+2*0
4=1*2+2*1
3=3*1+0*2
依此类推~
freemarker的用法
- 博客分类:
- freemarker
Tips:
以#开头的指令是freemarker的内置指令,用户自动的的指令以@开头
Freemarker区分大小写
指令之间有包裹内容时需要结束标记,没有内容时不需要结束标记<#if condition> xxx </#if> <#include "/file"> ;与内置指令不同用户自定义指令以@开头,并且在没有包裹内容时,需要增加'/'标记,如<@myDirection condition />
Freemarker指令列表大全 点我
Freemarker内置变量大全 点我 ,访问内置变量使用'.' ...
servlet的请求处理机制
看两幅图片,介绍了servlet与传统CGI对于请求的处理机制的不同,servlet容器对于每个request都启动一个单独的线程来处理,相比于启动一个进程来说,更加高效。
默认情况下容器对每个servlet只创建一个实例来处理所有请求
glassfish 命令行常用命令
- 博客分类:
- server
Glassfish是速度很快的一个J2EE容器,其不仅有WEB的控制台界面,还有命令行工具,下面是一些常用命令。
启动、关闭
asadmin start-domain
asadmin stop-domain
asadmin restart-domain
部署
asadmin deploy *.war
asadmin undeploy *.war
查看
asadmin list-domains
asadmin list-applications
git可用于代码版本的管理,与CVS,SVN一起是最为流行的代码版本管理工具,在这里记录下最为常用的一些命令,以备后续查看:
帮助命令
git --help
git help reomote/push
初始化一个本地仓库
git init
配置本地用户名邮箱,用于登录远程仓库时的身份
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
查看本地关联的所有远程仓库
git remote -v
添加远程仓库
gir remote add ...
patch用于对文件的版本管理,进行补丁的管理,是个很方便的工具,具体用法这里就不再详述了,网上的教程很多。
这里需要提及的一个方面就是,在patch的时候,如果设计到了多个系统,比如windows和linux系统,比如diff出来的补丁文件是unix格式,而original文件是windows格式,在将补丁打到original文件的时候就有可能失败,需要统一两个文件的格式为unix格式或者windows格式才行。
按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。
创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或对象怎样交互和怎样分配职责进行描述。
创建型模式用来处理对象的创建过程,主要包含以下5种设计模式:
工厂方法模式(Factory Method Pattern)
抽象工厂模式(Abstract Factory Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
单例模式(Singleton Pattern)
结构型模式用来处理类或者对象的组合,主要包含以下7 ...
/**
*
*/
package cn.fsf.annotation;
/**
* this class shows that how to write a proper hashCode()
*
* @author FSF
*
*/
public class HashCodeExample {
private boolean aBoolean = true;
private byte aByte = 1;
private char aChar = 'd';
private int aInt = 10;
private long ...
HashSet是Set接口的一个具体实现类之一,它内部采用哈希算法,专门为快速查找而设计,它不允许插入重复的值,需要注意的问题是,存入HashSet的对象必须定义hashCode和equals方法。
下面我们来谈谈HashSet如何判定两个对象是否重复。
HashSet内部使用HashMap来保存对象,将需要存入的对象比如T a,以key的形式存入HashMap中,这可以从代码中看到:
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
首先,说下HashMap内部是使用数组进行存储的,数组里 ...