# Java开发
# 开发框架
- Spring
- Hibernate
- Struts
提供了组织良好的Java、JSP和Action类。 - Play
主要用于开发需要统一内容创建的应用程序。 - Google web Toolkit
轻松地开发和调试Ajax应用程序。Java开发人员更喜欢这个框架来编写复杂的应用程序。它的一些特性包括书签、跨浏览器可移植性、历史记录和管理 - Grails
为内容管理系统、Restful web服务和电子商务网站创建健壮的、可伸缩的应用程序。Java Spring、Hibernate、quartz、EE容器和SiteMesh等其他Java技术相协调 - Blade
2015年推出的Java Blade以简单和轻量级著称。这个框架最大的亮点是它能够快速创建web应用程序的能力。 - JavaServer Faces
由Oracle开发的,可用于创建企业应用程序、本机应用程序和web应用程序开发。它具有将表示层与应用程序代码轻松连接起来的优势。 - Vaadin
用于精简Java开发的优秀平台。你可以使用它来获得自定义的web开发服务。此框架的一大优点是能够保证服务器和浏览器之间的顺畅通信。
# 参数配置
JVM
JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k"
-server:一定要作为第一个参数,在多个CPU时性能佳-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些-Xms128m表示JVM Heap(堆内存)最小尺寸128MB,初始分配慎用最小限制选项Xms,PermSize已节约系统资源。
-Xmx:java heap最大值,使用的最大内存-Xmx512m表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
Xms&Xmx
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一-XX:PermSize:设定内存的永久保存区域-XX:PermSize=64MB最小尺寸,初始分配
-XX:MaxPermSize:设定最大内存的永久保存区域-XX:MaxPermSize=256MB最大允许分配尺寸,按需分配- 过小会导致:
java.lang.OutOfMemoryError: PermGen space - MaxPermSize缺省值和-server -client选项相关。
-server选项下默认MaxPermSize为64m-client选项下默认MaxPermSize为32m
PermSize和MaxPermSize
指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
-XX:MaxNewSize:-Xss:每个线程的Stack大小,这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.+XX:AggressiveHeap: 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。-verbose:gc现实垃圾收集信息-Xloggc:gc.log指定垃圾收集日志文件-XX:+UseParNewGC:缩短minor收集的时间-XX:+UseConcMarkSweepGC:缩短major收集的时间
-XX:+UseConcMarkSweepGC
此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。
# 错误收集
# Initial heap size set to a larger value than the maximum heap size
初始堆大小设置为大于最大堆大小的值,调整java虚拟机的内存配置
# License
// 生成私钥,storepass为密钥库开启密码,keypass为私钥密码
// CN——Common Name(姓名),OU——组织单位,U——组织名称,L——所在城市之类,ST——省份,C——国家
keytool -genkeypair -keysize 1024 -validity 3650 -alias "privateKey" -keystore "privateKeys.keystore" -storepass "123456" -keypass "654321" -dname "CN=ht, OU=ht, O=ht, L=SH, ST=SH, C=CN"
// 利用私钥生成证书,以便生成公钥,所以一个证书里面就一个私钥信息
keytool -exportcert -alias "privateKey" -keystore "privateKeys.keystore" -storepass "123456" -file "certfile.cer"
// 利用证书生成公钥,对外发布。
keytool -import -alias "publicCert" -file "certfile.cer" -keystore "publicCerts.keystore" -storepass "123456"
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# keytool
缺省值
- -alias "mykey"
- -keyalg "DSA"(SHA256withDSA)
- -keysize 1024
- -validity 90
- -keystore 用户宿主目录中名为 .keystore 的文件
- -file 读时为标准输入,写时为标准输出
keytool -genkey -alias <别名> -keyalg RSA -keystore <keystore文件名称> -keysize 2048
1
1)genkey指令,用于生成私钥
2)alias指令,可以为私钥指定一个别名
3)keyalg指令,算法,一般都是用RSA,非对称加密
- RSA默认的签名算法是 SHA256withDSA
4)keystore指令,设置生成出来的keystore文件的路径
5)keysize指令,加密长度,目前以2048为佳,一般情况下都用2048位
6、证书条目的删除:
keytool -delete -alias shuany(指定需删除的别名) -keystore yushan.keystore -storepass 123456
1
- 7、证书条目口令的修改:
keytool -keypasswd -alias yushan(需要修改密码的别名) -keypass yushan(原始密码) -new 123456(别名的新密码) -keystore e:\yushan.keystore -storepass 123456
1
- 8、keystore口令的修改:
keytool -storepasswd -keystore e:\yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)
1
- 9、修改keystore中别名为yushan的信息
keytool -selfcert -alias yushan -keypass yushan -keystore e:\yushan.keystore -storepass 123456 -dname "cn=yushan,ou=yushan,o=yushan,c=us"
1
- 转换密钥库类型:JKS 转 PKCS12
keytool -importkeystore -srckeystore /Users/wu/java-key.keystore -destkeystore /Users/wu/java-key.keystore -srcstoretype jks -deststoretype pkcs12
// 反过来也可以
keytool -importkeystore -srckeystore /Users/wu/java-key.keystore -destkeystore /Users/wu/java-key.keystore -srcstoretype pkcs12 -deststoretype jks
1
2
3
2
3
# 常用指令
| 命令 | 含义 |
|---|---|
| -certreq | 生成证书请求 |
| -changealias | 更改条目的别名 |
| -delete | 删除条目 |
| -exportcert | 导出证书 |
| -genkeypair | 生成密钥对 |
| -genseckey | 生成密钥 |
| -gencert | 根据证书请求生成证书 |
| -importcert | 导入证书或证书链 |
| -importpass | 导入口令 |
| -importkeystore | 从其他密钥库导入一个或所有条目 |
| -keypasswd | 更改条目的密钥口令 |
| -list | 列出密钥库中的条目 |
| -printcert | 打印证书内容 |
| -printcertreq | 打印证书请求的内容 |
| -printcrl | 打印 CRL 文件的内容 |
| -storepasswd | 更改密钥库的存储口令 |