存档

‘技术’ 分类的存档

linux下mysql编码配置

2013年5月6日 3 条评论

1 修改/etc/mysql/my.cnf配置文件 增加default-character-set=utf8

配置文件如下

[client]
port		= 3306
socket		= /var/run/mysqld/mysqld.sock
default-character-set=utf8
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0
[mysqld]
#
# * Basic Settings
#
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci

2 重启mysql

sudo service mysql restart

分类: linux, mysql 标签: , , , ,

What is my ip address

2013年5月4日 没有评论

Linux下查看ip地址方法:curl ifconfig.me

ranger@ranger:~$ curl ifconfig.me
125.39.9.173

更多结果可查看http://ifconfig.me/

分类: linux 标签:

linux中设置alias永久生效

2013年4月23日 1 条评论

alias 设置别名
语法为:
例如 alias log=’cd /apache-tomcat/logs’
这样执行log就可以快速切换到存放tomcat日志的目录
因此,别名可以减少很多的输入,提高工作效率
但是当关闭终端后别名都会失效,
那是因为没有将它写死到文件中

下面就开始改写文件
我的系统是ubuntu 12.04,在home目录下有一个隐藏文件 : .bashrc
打开该文件
javaranger@ubuntu:~$ ls -a 可以查看到
打开该文件
javaranger@ubuntu:~$ sudo gedit ./.bashrc
文档偏后部分有如下
# some more ls aliases
alias ll=’ls -alF’
alias la=’ls -A’
alias l=’ls -CF’
alias tomcat=’cd ~/tomcat/bin’
alias log=’cd /apache-tomcat/logs’

其中最后一个log是我新添加的,所以你们有什么自己定义的alias可以写在这里
改写完成保存退出
执行 source ~/.bashrc
javaranger@ubuntu:~$ source ~/.bashrc
你的alias 别名就永久生效了

分类: linux 标签: , ,

100个常用的linux命令

2013年4月10日 9 条评论

1,echo “aa” > test.txt 和 echo “bb” >> test.txt //>将原文件清空,并且内容写入到文件中,>>将内容放到文件的尾部
2,chmod go+w -R /home/zhangy //给组用户和其他用户添加写的权限
3,tar -tzvf test.tar.gz //列出归档内容
4,du -ah //查看文件列表大小
5,du -sh //查看所有文件的大小总和
6,echo ’1+2′|bc -l //数学运算
7,uname -a //查看linux内核等的一些信息
8,badblocks -s /dev/sda //坏道扫描时显示进度
9,time command //查看命令的运行时间
10,ls -lrt //按时间的倒序排序
11,rsync -P //同步时显示进度
12.history -c //清楚历史命令
13,cd - //返回上次目录
14,tree //显示目录树
15,umount -n /mnt/hda2 //强制卸载
16,echo ~/ //显示用户的home目录
17,echo $[5*5] //算术运算
18,echo $((5*5)) //算术运算
19,eval ls;ps aux|grep httpd //这二个命令都能执行
20,free -m //有MB为单位显示内存
21,uptime //显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载 阅读全文…

分类: linux 标签: ,

Java方法不应超过15行

2013年3月20日 没有评论

大多数人都会说,方法不能太长,但也不能定死,要具体问题具体分析。再追问一下,有人会说,不超过200行,100行,50行,30行都有。另有人说,面向对象风格的可以短些,面向过程风格的可以长些。也有人说,一个方法不超过一屏幕就行(姑且不论显示器大小,字体大小和分辨率问题)。

先摘录一段Martin Fowler《重构》P110-P111 中的一段话:

人们有时会问我,一个函数多长才合适?在我看来,长度不是问题,关键在于函数名称和函数本体之间的语义距离(semantic distance)。如果提炼动作(extracting)可以强化代码的清晰度,那就去做,就算函数名称比提炼出来的代码还长也无所谓。

说了直白点,函数名是干什么,函数体是怎么干。当2者不是那么能容易分辨出来时,就需要提炼出函数来,让代码更好懂。

既然大师都说了,长度不是问题了吗,那干吗还要追究函数长度规范呢?
其实大师讲的是对于懂得编程之道的人而言,不用关心长度,因为小函数是必然的结果。但在开发实践中,适当的函数长度限制值,可以给予我们警示,为什么这个方法写长了?哪里不对劲了?
对于这个问题我的回答是:Java函数不应超过15行。
为什么定这个数呢?
一方面,这个是基于多年开发实践的总结。15行其实已经是一个比较宽松的标准,开发人员稍加培训就可以实际贯彻,而符合这个标准的函数也能达到良好的可读性。

另一方面,这是基于对函数复杂度和代码行数之间关联关系的认识。
我采用一个简单的数学公式:

方法复杂度 >= 代码行数^2 (该公式参考于 gerald m. weinberg 《质量·软件·管理(第1卷)——系统思维》)

以下为了简化,只以最低增长方式,平方数进行计算。
以一个函数的行数,从1行到20行为例,见下图:

java

当函数行数到达10行以上,函数复杂度就开始大幅度攀升。
当代码行数达到20行时(复杂度400),其复杂度已经是14行时(复杂度 196)的2倍。
因此我将代码规范定在15行。

下面我们运行此公式,来分析一下提炼小函数的好处。
例如,有1个100行的函数,分解为11(含自身)个10行的函数。
原复杂度= 100^2=10000。
分解后复杂度= 11×(10^2)= 1100。
分解后的复杂几乎是分解前的 1/9,几乎降低了1个数量级。这就解释了为什么长方法分解之后,可维护性大幅度提高。

也就无怪乎有同学表示维护1000行以上的函数,有种生不如死的感受。

 

分类: java, 项目管理 标签:

Tomcat内存溢出的原因

2013年3月19日 没有评论

在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:

1.OutOfMemoryError: Java heap space

2.OutOfMemoryError: PermGen space

3.OutOfMemoryError:unable to create new native thread.

tomcat

对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms, -Xmx, -XX:PermSize, -XX:MaxPermSize),最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。

第一种:是堆溢出。

在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。没有内存泄露的情况下,调整-Xms,-Xmx参数可以解决。

-Xms:初始堆大小

-Xmx:最大堆大小

但堆的大小受下面三方面影响:

1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G~2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试 1612M,64为操作系统对内存无限制。)

2.系统的可用虚拟内存限制;

3.系统的可用物理内存限制。

堆的大小可以使用 java -Xmx***M version 命令来测试。支持的话会出现jdk的版本号,不支持会报错。

-Xms, -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m 阅读全文…

分类: java, jvm 标签: , ,

位、字节、字符、汉字的关系

2013年3月16日 没有评论

1 bit 二进制数据
1 byte = 8 bit
1 字母 = 1 byte = 8 bit
1 汉字 = 2 byte = 16 bit
1. bit:位
一个二进制数据0或1,是1bit;

2. byte:字节
1 byte = 8 bit

3. 一个英文字符占一个字节;
1 字母 = 1 byte = 8 bit

4. 一个汉字占2个字节;
1 汉字 = 2 byte = 16 bit

5. 标点符号
A>. 汉字输入状态下,默认为全角输入方式;
B>. 英文输入状态下,默认为半角输入方式;

C>. 全角输入方式下,标点符号占2字节;
D>. 半角输入方式下,标点符号占1字节;

故:汉字输入状态下的字符,占2个字节 (但不排除,自己更改了默认设置);
英文输入状态下的字符,占1个字节 (但不排除,自己更改了默认设置);

 

老美在发明电脑时,肯定以自己的英文字母-即他们自认为的字符为最小的存储计量单位,于是也就有了不规范的1字符=1byte, 岂不知还有我们伟大的汉字计量单位,NND,一个汉字也是一个字符,我们的1汉字字符就等于2byte,后来,他们可能意识到这个尴尬的问题,于是又标榜为:一个字母为一个标准字符,去球吧,谁整天没事说个字符还“标准字符”,所以啊,个人认为:字符,不能用于标准的计量单位。

分类: java 标签: , , ,

google code 提交代码 svn 报错 405 Method Not Allowed

2013年3月12日 没有评论

Google Code允许用户以Http协议Update代码,但Commit时必须以Https协议。

所以在SVN目录下利用Relocate功能将SVN协议从Http改为Https后就可以了。

gd-logo

分类: java 标签: ,

Jetty 9 正式版发布!!!

2013年3月9日 没有评论

jetty

Jetty 9 正式版来了!!!版本标签:Jetty 9.0.0.v20130308

Jetty 9 支持 SPDY 和 WebSocket。

下载地址:

http://download.eclipse.org/jetty/stable-9/dist/
Maven:

http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.eclipse.jetty%22%20AND%20v%3A%229.0.0..v20130308%22

<groupId>org.eclipse.jetty</groupId>
<version>9.0.0.v20130308</version>

Jetty 9.x 特性:

Completely overhauled I/O layer
Servlet API 3.0
JSP 2.2
SPDY/3
WebSocket (RFC-6455)
移植到 Jetty 9.x 的要求: 阅读全文…

分类: 应用服务器 标签: ,

HttpServletResponse的addHeader与setHeader区别

2013年3月8日 没有评论

setHeader(name,value) :如果Header中没有定义则添加,如果已定义则用新的value替换原用value值。

addHeader(name,value) :如果Header中没有定义则添加,如果已定义则原有value不改变。

分类: java 标签: , ,