关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别

sun.jnu.encoding 影响文件名的创建,而 file.encoding 则影响到文件内容。

所以说,在我们使用 Java 处理中文文件的时候,如果发现文件的中文内容没有乱码,而文件的中文名发生乱码,我们就应当多考虑一下 sun.jnu.encoding 和 file.encoding 的区别了。

支持中文文件目录的 org.apache.tools.zip.* 打包解压缩中文文件夹都没有问题的。但有的时候打包后的中文文件名会出现乱码,这是为什么呢?查看 org.apache.tools.zip.ZipOutputStream 的 API 会发现关于其 getEncoding() 方法的说明:“The encoding to use for filenames and the file comment.”,将以下语句执行一下:

org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new java.io.FileOutputStream("D:/temp/testfile.zip")); 
System.out.println("out.getEncoding()=" + out.getEncoding());

执行结果如下:

out.getEncoding()=null

问题就在这里了。在 org.apache.tools.zip.ZipOutputStream 创建好以后,手工设置一下:

out.setEncoding(System.getProperty("sun.jnu.encoding"));

发现打包后中文名可以正常显示了。
参考一:http://stackoverflow.com/questions/1066845/what-exactly-is-sun-jnu-encoding【stackoverflow 关于 sun.jnu.encoding 的解答】,
参考二:http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/org/apache/tools/zip/ZipOutputStream.html【ZipOutputStream 的 API】,
参考三:http://massapi.com/source/apache-ant-1.8.2/src/main/org/apache/tools/zip/ZipOutputStream.java.html【ZipOutputStream 的源代码】。

来源:http://blog.csdn.net/defonds/article/details/7044750

|

再议数据库军规

上一篇《58到家数据库30条军规解读》引发了广泛的讨论,某些军规部分同学有疑惑,补充一文说明。
 
军规:必须使用UTF8字符集
和DBA负责人确认后,纠正为“新库默认使用utf8mb4字符集”。
这点感谢网友的提醒,utf8mb4是utf8的超集,emoji表情以及部分不常见汉字在utf8下会表现为乱码,故需要升级至utf8mb4。
默认使用这个字符集的原因是:“标准,万国码,无需转码,无乱码风险”,并不“节省空间”。

一个潜在坑:阿里云上RDS服务如果要从utf8升级为utf8mb4,需要重启实例,所以58到家并没有把所有的数据库升级成这个字符集,而是“新库默认使用utf8mb4字符集”。

Read the rest of this entry »

58到家数据库30条军规解读

主题 数据库
军规适用场景 : 并发量大、数据量大的互联网业务
军规 :介绍内容
解读 :讲解原因 , 解读比军规更重要

一、基础规范

( 1 ) 必须使用 InnoDB 存储引擎

解读:支持事务、行级锁、并发性能更好、 CPU 及内存缓存页优化使得资源利用率更高

( 2 )必须使用 UTF8 字符集

解读:万国码,无需转码,无乱码风险,节省空间

Read the rest of this entry »

JVM参数详解

首先来看看JVM参数的设置形式:

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

这里有几个问题:

1. 各个参数的含义什么?
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

Read the rest of this entry »

Linux下自动删除n天前日志

linux是一个很能自动产生文件的系统,日志、邮件、备份等。虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情。不用你去每天惦记着是否需要清理日志,不用每天收到硬盘空间不足的报警短信,想好好休息的话,让我们把这个事情交给机器定时去执行吧。

Read the rest of this entry »

MAC下下如何查看环境变量

查看所有的变量:

$ printenv
PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/calios/.cabal/bin:/Applications/ghc-7.8.4.app/Contents/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/calios/.cabal/bin:/Applications/ghc-7.8.4.app/Contents/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/calios/.cabal/bin:/Applications/ghc-7.8.4.app/Contents/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
ZSH=/Users/calios/.oh-my-zsh

Read the rest of this entry »

Linux的bg和fg命令简单介绍

我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务。
假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示(方括号中的是作业号):

代码如下:

[1]+ Stopped /root/bin/rsync.sh

Read the rest of this entry »

| |

MySql数字函数大全

MySql数字函数大全

abs(N)
返回N的绝对值 

mysql> select ABS(2);
-> 2
mysql> select ABS(-32);
-> 32

floor(N)
返回不大于N的最大整数值 

mysql> select FLOOR(1.23);
-> 1
mysql> select FLOOR(-1.23);
-> -2

Read the rest of this entry »

|

mysql的时间格式化函数

总结一下mysql的时间格式化函数。

DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中:

%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%M 月名字(January……December)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)

%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)

%W 星期名字(Sunday……Saturday)
%a 缩写的星期名字(Sun……Sat)

Read the rest of this entry »

MySQL浮点类型总结

MySQL支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值。

与整数类型一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器。例如,语句FLOAT (5,2)规定显示的值不会超过5位数字,小数点后面带有2位数字。看下面的示范举例:

mysql> insert into data values (876.90);
Query OK, 1 row affected (0.03 sec)

mysql> insert into data values (-5.2);
Query OK, 1 row affected (0.03 sec)

mysql> insert into data values (-12345.789);
ERROR 1264 (22003): Out of range value for column ‘price’ at row 1

mysql> insert into data values (-1234.789);
ERROR 1264 (22003): Out of range value for column ‘price’ at row 1

Read the rest of this entry »

mysql表结构修改

增加字段:

ALTER TABLE table_name ADD field_name field_type;

//增加一个新列

alter table t2 add d timestamp;
alter table infos add ex tinyint not null default ‘0’;

Read the rest of this entry »

nohup命令总结

用途:
LINUX命令用法,不挂断地运行命令。   

语法:

nohup Command [ Arg ... ] [ & ]  

描述:
nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。   
Read the rest of this entry »

nohup命令及其输出文件

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。

该命令的一般形式为:

nohup command &

示例:

ls xxx 1>out.txt 2>&1
nohup /mnt/Nand3/H2000G >/dev/null 2>&1 &

Read the rest of this entry »

关于Linux重定向

0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。

在一般使用时,默认的是标准输出,既1,当我们需要特殊用途时,可以使用其他标号。例如,将某个程序的错误信息输出到log文件中:

./program 2 > log

这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。另外,也可以实现0,1,2之间的重定向:

2>&1

将错误信息重定向到标准输出。

Read the rest of this entry »

|

一般汽车油箱容量是多少升?

一般汽车油箱容量是多少升?很多人都不知道这个问题的答案,下面一起来看看相关内容。

汽车油箱容量是如何设定

大体按汽车加满油后可行驶500公里左右为限,油耗大的油箱就大油耗小的油箱就小。

Read the rest of this entry »

python中的类型转换

int(x [,base ])
将x转换为一个整数

long(x [,base ])
将x转换为一个长整数

float(x )
将x转换到一个浮点数

str(x )
将对象 x 转换为字符串

Read the rest of this entry »

wget命令小结

wget是Linux最常用的下载命令, 一般使用只需要记住以下两个命令即可:

# wget http://www.linuxsense.org/xxxx/xxx.tar.gz

或者使用-c参数, 可以断点续传, 如果不小心终止了, 可以继续使用命令接着下载,如下所示:

# wget -c http://www.linuxsense.org/xxxx/xxx.tar.gz

Read the rest of this entry »

nginx默认日志格式总结

Nginx中日志文件的格式在nginx.conf中定义,其默认格式如下:

#vim /usr/local/nginx/conf/nginx.conf
log_format access '$remote_addr – $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' ' "$http_user_agent" $http_x_forwarded_for';

Read the rest of this entry »

|

【Android】@+id与@id的区别

在进行Android开发的时候,必然要涉及到对控件的设计和操作。控件在layout文件当中进行定义的时候,一般会为其定义android:id属性来唯一标识这个控件。比如,对于一个文本控件TextView,我们可以为其定义android:id=”@+id/textView1″。而当我们有另外一个文本控件,我们对其进行布局的时候,可以通过相对布局将其放置在前一个文本控件的右侧,例如android:layout_toRightOf=”@id/textView1″。 Read the rest of this entry »

如何查看tomcat的版本号

进入tomcat的bin目录,里边有个version.sh,直接运行一下:

[darkmi@web11 bin]$ ./version.sh
Using CATALINA_BASE:   /opt/tomcat-8
Using CATALINA_HOME:   /opt/tomcat-8
Using CATALINA_TMPDIR: /opt/tomcat-8/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /opt/tomcat-8/bin/bootstrap.jar:/opt/tomcat-8/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.37
Server built:   Sep 1 2016 10:01:52 UTC
Server number:  8.0.37.0
OS Name:        Linux
OS Version:     2.6.32-573.3.1.el6.x86_64
Architecture:   amd64
JVM Version:    1.8.0_102-b14
JVM Vendor:     Oracle Corporation

中结果可以看到tomcat的版本,当然还能看到其他的一些系统信息。

如果是windows的话,执行 ./version.bat 即可。

第 2 页,共 66 页12345...102030...最旧 »