JAVA-and-J2EE

通过dns解析获取域名的ip地址

星期二, 十二月 4th, 2012 | JAVA-and-J2EE | 没有评论

可以通过域名获取域名解析的ip地址,java版本,通过java的本地dns解析,如果本地设置了host的解析地址将会和真实ip地址有出入:

获取www.qq.com的ip地址如下:
ipv4:222.73.78.166
ipv4:222.73.78.171
ipv4:222.73.78.181
ipv4:101.226.42.62
ipv4:101.226.49.101
ipv4:115.236.139.153
ipv4:180.153.210.43

code如下:
› Continue reading

Tags: ,

常用常用正则表达式集锦

星期一, 十月 29th, 2012 | JAVA-and-J2EE, linux, php | 没有评论

此处记录下,以后方便查找.

1.匹配中文字符

[\u4e00-\u9fa5]

2.匹配双字节字符(包括汉字)

[^\x00-\xff]

3.匹配空白行

\n\s*\r

4.匹配E-mail地址

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

5.匹配网站URL地址

[a-zA-z]+://[^\s]*

6.匹配国内电话号码

\d{3}-\d{8}|\d{4}-\d{7}

7.匹配腾讯QQ号码

[1-9][0-9]{4,}

› Continue reading

Tags: , , , ,

java生成唯一ID,相对唯一(15位和32位)的简单实现

星期三, 八月 8th, 2012 | algorithm-learn, JAVA-and-J2EE | 没有评论

好久没有写文章了,在oschina上看到的,感觉挺不错,摘录代码如下:
实际上更多的是根据自己的需求去实现一种不重复的主键,这里只要提供思路,以供借鉴之用.
32位生成方式
› Continue reading

Tags: , ,

Linux下JDK多版本配置和不同tomcat使用不同的JDK

星期日, 七月 1st, 2012 | JAVA-and-J2EE, linux | 没有评论

要在原有linux系统的java版本为jdk7的系统上安装jira,真是让人头疼.
原因:1.jira 不支持jdk7,值支持到jdk6 (写本文的时候)
这要会引发标题的问题(Linux下JDK多版本配置和不同tomcat使用不同的JDK)
废话不说了.

1.安装jdk6
下载 jdk-6u32-linux-i586.bin,执行解压即可,移动到自己的目录 /usr/local/webserver/jdk1.6.0_32
2.配置 .bash_profile 文件

#cd 
#vi .bash_profile
添加内容
JAVA_OTH_HOME=/usr/local/webserver/jdk1.6.0_32
JRE=$JAVA_OTH_HOME/jre
PATH=$JAVA_OTH_HOME/bin:$JRE/bin:$PATH:$HOME/bin
CLASSPATH=.:$JAVA_OTH_HOME/bin/tools.jar:$JAVA_OTH_HOME/lib/dt.jar
export JAVA_OTH_HOME JRE CLASSPATH PATH

3.修改tomcat配置bin下启动文件
# cd /usr/local/webserver/apache-tomcat-6.0.35/bin
#vi catalina.sh
在开始或者你想加的地方加上
JAVA_HOME=$JAVA_OTH_HOME
更多的分配内存能配置也在此处加(不讲)

4.修改端口配置文件
#cd /usr/local/webserver/apache-tomcat-6.0.35/conf
#vi server.xml
修改 8005,8080,8443,8009
启动 tomca即可 ,可以看到使用的
Using CATALINA_BASE: /usr/local/webserver/apache-tomcat-6.0.35
Using CATALINA_HOME: /usr/local/webserver/apache-tomcat-6.0.35
Using CATALINA_TMPDIR: /usr/local/webserver/apache-tomcat-6.0.35/temp
Using JRE_HOME: /usr/local/webserver/jdk1.6.0_32
Using CLASSPATH: /usr/local/webserver/apache-tomcat-6.0.35/bin/bootstrap.jar
搞定~

Tags: , ,

Eclipse之java was started but returned exit code 1报错并退出的解决方法

星期三, 四月 4th, 2012 | JAVA-and-J2EE | 3 Comments

今天正在用eclipse处理程序的时候突然报了个java was started but returned exit code 1,提示后就退出了,上网查询修改eclipse.ini即可.
本人环境为win7的64位系统,jdk为1.6.0_20:
解决之法:(安装目录eclipse.ini文件)
1.修改最大内存数-Xmx384m 为 -Xmx1024m (本人情况为因为最大内存过小)

2.按照1如果还不行,再配置
-vm
C:\Java\JDK\1.6\bin\javaw.exe
-vmargs
注意点:-vm 都分别各占一行,且此配置要在-vmargs上面

延伸阅读:eclipse.ini文件的说明(http://wiki.eclipse.org/Eclipse.ini)
异常图片截图记录:
› Continue reading

Tags: , ,

apache,nginx反向代理出现内网ip解决方法

星期四, 二月 23rd, 2012 | JAVA-and-J2EE, linux | 没有评论

apache中设置如下反向代理后端的tomcat出现
request.getServerName();获取到的主机名称就会是localhost,解决这个

<VirtualHost *:80>
    ServerAdmin service@i5a6.com
    DocumentRoot /usr/local/apache/htdocs
    ServerName i5a6.com
    ServerAlias *.i5a6.com
     DirectoryIndex  index.html  index.html.var  index.jsp
     ProxyPass / http://localhost:8080/
     ProxyPassReverse / http://localhost:8080/
     ErrorLog "logs/hscode-error.log"
     CustomLog "logs/hscode-access.log" common
</VirtualHost>

在httpd.conf 文件中增加:
ProxyPreserveHost On 即可

对应的nginx 也有此问题解决之法:
proxy_set_header Host $host;

upstream mytomcat{
 #server 127.0.0.1:8000 weight=3;
 #server 127.0.0.1:8001;
 #server 127.0.0.1:8002;
 server 127.0.0.1:8080;
 }
 
server
{
listen 80;
server_name i5a6.com *.i5a6.com;
index index.html index.htm ;
root /usr/local/data/htdocs/www;
 
location / {
# proxy_set_header Host %host;
# proxy_set_header X-Forwarded-For $remote_addr;
 proxy_pass http://mytomcat;
proxy_set_header Host $host;
 }

Tags: , , , ,

apache反向代理集群,实现负载均衡,编译mod_proxy模块

星期三, 二月 22nd, 2012 | JAVA-and-J2EE, linux | 一条评论

利用apache和tomcat做集群,有好几种方式,另一种见apache tomcat 负载均衡集群和session复制 基于jk
本文是使用代理的模式;
一:查看是否有mod_proxy模块功能
[i5a6]# /usr/local/apache/bin/httpd -l
可以看到是否有mod_proxy的模块,直接去 /usr/local/apache/modules/ 去查看是否有对应的mod_proxy.so,mod_proxy_balancer.so,mod_proxy_http.so,mod_proxy_ajp.so的模块包
二:本人的是vps已经安装好的apache不过没有编译此模块要自己动手编译
[i5a6]# find / -name mod_proxy.c
注释:我是不知道它的安装目录,直接根目录下检索吧,主要是找对应的模块文件夹;
执行结果:/home/cpeasyapache/src/httpd-2.2.17/modules/proxy/mod_proxy.c

[i5a6]# cd /home/cpeasyapache/src/httpd-2.2.17/modules/proxy/
[i5a6]# /usr/local/apache/bin/apxs -c -i mod_proxy.c proxy_util.c

[i5a6]# /usr/local/apache/bin/apxs -c -i mod_proxy_balancer.c

[i5a6]# /usr/local/apache/bin/apxs -c -i mod_proxy_http.c

# 安装proxy_ajp模块
[i5a6]# /usr/local/apache/bin/apxs -c -i mod_proxy_ajp.c ajp_header.c ajp_utils.c ajp_msg.c ajp_link.c

可以去 /usr/local/apache/modules/ 看下生成了对应mod_proxy.so,mod_proxy_balancer.so,mod_proxy_http.so,mod_proxy_ajp.so的包,

三:配置httpd.conf,设置权重和session严格复制等
› Continue reading

Tags: , , , ,

itext的转换pdf的尝试

星期日, 二月 12th, 2012 | JAVA-and-J2EE | 没有评论

今天写了个转换成pdf的文档,做个生成个表格的东东.没有做中文支持的问题,支持中文可以下载扩展包处理.
下载itext的jar包:可以去:http://sourceforge.net/projects/itext/files/ 下载更多版本,目前最新为itext-5.1.3.zip
对应的api文档可以翻阅:itext–api

生成个类似下列表格的图片:

代码如下:
› Continue reading

Tags: , , ,

java中需要转义的正则表达式符号

星期日, 二月 12th, 2012 | JAVA-and-J2EE | 没有评论

special sign 注释 $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,那么 $ 还匹配 \n
或 \r 前面的位置。若要匹配 $ 字符本身,请使用 \$。

( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \)。

零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。

+ 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。

. 匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \。 [ ] 标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 和 \]。

? 零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。

\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配
(。

/ 表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。

^ 匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。

{ } 标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。

| 指出在两个项之间进行选择。若要匹配 | ,请使用 \|

Tags: , ,

apache tomcat 负载均衡集群和session复制 基于jk

星期三, 二月 8th, 2012 | JAVA-and-J2EE | 一条评论

apache服务器和tomcat的连接方法其实有三种:JK、http_proxy和ajp_proxy。
本文主要介绍最为常见的JK。
基于centos5.5 linux下配置:
1.安装tomcat7、apache2.2.22服务器及版本对应的JK
这里需要注意的是JK版本必须与apache服务器版本号对应。apache下载
对应的linux的编译的jk版本可以去 mod_jk.so去下载
注意点:如果你安装的apache是2.0.63版本或者说是2.0.X版本做好选用 mod_jk-1.2.26-httpd-2.0.61.so
如果是最新版2.2.22,可以选用最用mod_jk-1.2.31-httpd-2.2.x.so
,总之不成功的时候自己去试试so,我就实验好多,一开始机器装的是2.0.63的apache让人崩溃的老版本.
下载对应的so文件到apache下的modules目录中.
apache_home表示apache服务器安装目录.
2.配置apache服务器
2.1 httpd.conf文件
apache_home目录下的conf/httpd.conf文件中添加 复杂配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so 
JkWorkersFile conf/workers.properties  
JkMountFile conf/uriworkermap.properties  #加载workers的请求处理分配文件 可以不需要
JkLogFile logs/mod_jk.log #指定jk的日志输出文件 可以不需要
JkLogLevel warn #指定日志级别可以不需要
JkMount /* lbcontroller   #根据需要可以配置多个 设置apache分发器,/*表示apache将所有文件都由分发器lbcontroller 进行分发,你可以自行设置*.jsp,*.do等 
 
 uriworkermap.properties文件,内容如下
/*=lbcontroller                     #所有请求都由controller这个server处理
/jkstatus=status                   #所有包含jkstatus请求的都由status这个server处理
!/*.gif=lbcontroller                   #所有以.gif结尾的请求都不由controller这个server处理,以下几个都是一样的意思
!/*.jpg=lbcontroller
!/*.png=lbcontroller
!/*.css=lbcontroller
!/*.js=lbcontroller
!/*.htm=lbcontroller
!/*.html=lbcontroller

简单配置:apache文件加 Include “/usr/local/apache/conf/mod.conf”
在”/usr/local/apache/conf/目录下创建mod.conf内容:

1
2
3
4
5
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so 
JkWorkersFile conf/workers.properties  
#JkMount /*.jsp lbcontroller
#JkMount /*.do lbcontroller  
JkMount /* lbcontroller   #根据需要可以配置多个 设置apache分发器,/*表示apache将所有文件都由分发器lbcontroller 进行分发,你可以自行设置*.jsp,*.do等

2.2 workers.properties文件
在apache_home下conf目录中新建workers.properties文件,输入以下内容
Xml代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
worker.list=lbcontroller  
 
#Tomcat1实例配置  
worker.tomcat1.host=localhost #此处可以是你的ip地址  
worker.tomcat1.port=8009  
worker.tomcat1.type=ajp13  
#分发权重 值越大负载越大  
worker.tomcat1.lbfactor = 1  
 
#Tomcat2实例配置  
worker.tomcat2.host=localhost #此处可以是你的ip地址   
worker.tomcat2.port=9009  
worker.tomcat2.type=ajp13  
#分发权重 值越大负载越大  
worker.tomcat2.lbfactor = 1  
 
#负载均衡分发控制器  
worker.lbcontroller.type=lb  
worker.lbcontroller.balance_workers=tomcat1,tomcat2  
worker.lbcontroller.sticky_session=True

在这里

1
2
3
4
5
6
7
8
worker.list=lbcontroller  
 内容即为httpd.conf文件中的分发器名称。需要注意的内容是,tomcat实例名称
Xml代码  
worker.tomcat1.host=....  
...  
worker.tomcat2.host=....  
...  
 在这里就是tomcat1和tomcat2必须与之后tomcat中的server.xml中jvmRoute值一致。
更多的work.properties可以参考:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
worker.list=loadbalancer                        #定义负载均衡的名称  
worker.loadbalancer.type=lb                     #定义负载均衡的类型,为lb  
worker.loadbalancer.error_escalation_time=0     #切换错误状态时间  
worker.loadbalancer.max_reply_timeouts=10  
worker.loadbalancer.sticky_session=1            #1代表为true0代表为false。  
#worker.loadbalancer.sticky_session_force=true  
 
worker.loadbalancer.balance_workers=lb1,lb2 #负载均衡的工作者名称  
 
worker.lb1.reference=worker.template    #lb1参考worker.template工作模板  
worker.lb1.host=localhost           #lb1的ip地址  
worker.lb1.port=8009                #lb1端口,这里是ajp端口,不是网站端口  
worker.lb1.activation=A                 #A:active模式 D:sticky模式 S:不使用  
 
worker.lb2.reference=worker.template  
worker.lb2.host=localhost  
worker.lb2.port=9009  
worker.lb2.activation=A  
 
worker.template.type=ajp13                  #上面lb1,lb2参考下面的值worker.template,协议ajp13  
worker.template.socket_connect_timeout=5000 #套接字连接超时为5000毫秒,默认为0  
worker.template.socket_keepalive=true           #开启保持为真,默认为false  
worker.template.ping_mode=A                 #使用cping/cpong模式,有C,P,I,A四个模式。A全选  
worker.template.ping_timeout=10000          #探测cping/cpong超时间默认10000毫秒  
worker.template.connection_pool_minsize=0       #连接池关闭最小时间  
worker.template.connection_pool_timeout=600 #连接池600秒  
worker.template.reply_timeout=300000            #答复超时300000毫秒  
worker.template.recovery_options=3          #重试次数

3.tomcat集群配置
› Continue reading

Tags: , , , ,

Search

相关文章

文章分类

Links

Meta