posts - 72, comments - 66, trackbacks - 0, articles - 0

通过/etc/init.d/iptables status命令查询是否有打开80端口,如果没有可通过两种方式处理:
1.修改vi /etc/sysconfig/iptables命令添加使防火墙开放80端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
2.关闭防火墙
/etc/init.d/iptables stop 
#start 开启 
#restart 重启

posted @ 2008-11-25 17:44 Fingki.li 阅读(662) | 评论 (0)编辑 收藏

Backup to Script:
首先切换到postgres用户:
liqingfeng@liqingfeng:~$ su postgres
口令: 输入密码
postgres@liqingfeng:/home/liqingfeng$
然后输入backup命令:
pg_dump -U[username] -d -f[way of script file] [database name]
例如:pg_dump -Upostgres -d -f/home/liqingfeng/test.sql testdb
这样数据库testdb将以sql脚本形式backup到/home/liqingfeng/test.sql中。
Restore from Script:
还是首先要切换到postgres用户下,输入命令:
psql -U[username] -d[database name] -f[way to an existing script file]
例如:
psql -Upostgres -dtestdb -f/home/liqingfeng/test.sql






posted @ 2008-11-25 10:13 Fingki.li 阅读(3712) | 评论 (0)编辑 收藏

当进行大并发的压力测试时,经常会出现如下Exception:Too many open files.
查阅资料,google baidu.
首先感谢demo的评论,使我对这个问题有了新的认识。
经过再次查找,发现这个问题的出现原因是system对打开files数量的限制问题。
用 ulimit -a 命令可以查看当前所有资源限制
fingki@ubuntu:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15863
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15863
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
fingki@ubuntu:~$
可以看出,对open files的限制数是1024,我们可以通过修改这个值来增加可以打开的文件数。
最简单的修改方式就是用ulimit -n 命令,
比如我打算将其改为2048,用 ulimit -n 2048.
当你把open files的值增大到一定程度,你的Too many open files就不会再出现了。

而对于tcp_fin_timeout,是合tcp连接相关的,当你有大量tcp连接时,或许有些性能改善;
tcp_fin_timeout,默认情况下,win为4 min,linux为60 sec.
可以把其相应设置短一些,以增加系统性能。

in Windows

  1. Run regedit to start the Registry Editor
  2. Locate the following key: HKEY_LOCAL_MACHINE"System"CurrentControlSet"Services"tcpip"Parameters
  3. Add a new value named TcpTimedWaitDelay asa decimal and set the desired timeout in seconds (30-300)
  4. Reboot

in Linux

  1. Update the configuration value by running (30 seconds used in the example)
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
  2. Restart the networking component, for example by running
    /etc/init.d/networking restart  or  service network restart
在linux下,经常会有权限问题使设置不能成功,尽管你用了sudo。
解决办法就是先 su root,在root用户下来执行操作,这样就ok了。
再有就是可能忘记root密码了,那就 sudo passwd root,来设置一个新密码。

根据进一步的研究发现:服务器默认情况下对进程的处理也是有限制的,要想server处理更多用户进程就需要调整相应参数。
这里面有两个文件要特别注意,
一个是    /etc/security/limits.conf
另一个    /etc/sysctl.conf

当我们用ulimit -a命令可以查看 open files(默认为1024)和max user processes(默认也为1024),
所以默认情况下这个server只允许同时打开1024个文件,处理1024个用户进程,
若要 临时 改变这两个参数值,可以使用 ulimit -n 10240 ,ulimit -u 10240,
若要 长久 改变这两个参数值,就要修改/ect/security/limits.conf,在文件中加上两行:
* - nofile 102400
* - nproc 102400

而对于大量使用tcp连接的应用来说,也需要对/etc/sysctl.conf中的参数进行相应优化:
net/ipv4/ip_always_defrag = 1
net.ipv4.ip_local_port_range = 1024    65000
net.ipv4.tcp_max_syn_backlog = 102400
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
上面是我根据我的需求的一些参数调整,你可以根据你的需求来调整相应参数值。
然后执行 sysctl -p命令可立即生效。sysctl -a可查看参数值。

参考 :http://www.javaeye.com/topic/65175

posted @ 2008-10-22 19:13 Fingki.li 阅读(5824) | 评论 (7)编辑 收藏


1、Scp 很好用的远程文件安全传输命令
   命令格式:scp [-r] 源文件路径 目标文件路径
             源文件路径:username@hostname:文件路径 For example:fingki2@192.168.0.2:test/a.txt (如果是本地可直接写相应路径)
             目标文件路径:username@hostname:文件路径 For example:fingki3@192.168.0.3:test/a.txt (如果是本地可直接写相应路径)
             -r:如果是传目录 就要加上这个参数
             要求:远程机器必须打开22端口
2、ssh 很好的linux服务器登录命令 secure shell
    简易命令格式:ssh username@hostname 然后输入密码即可进入系统。
    有时你会遇到如下问题:
The authenticity of host '172.0.x.xxx (172.0.x.xxx)' can't be established.
RSA key fingerprint is 1f:c9:78:0a:ce:e2:e5:10:2c:b5:f4:33:19:fa:be:ec.
Are you sure you want to continue connecting (yes/no)?

    如果你是第一次在这台机器上使用ssh命令,输入yes回车后,就可以输入密码登录了。
    如果输入yes后仍有问题,你可以到 ~/.ssh/下找到文件known_hosts,清除文件里面的内容,重试即可。

3、vi列模式编辑:

  用命令打开文本:vim test.txt
  按 Esc 取消当前模式,
  按Ctrl + v 进入这种模式,
  将光标移到指定列位置,
  然后按方向键选定指定列,进行编辑(删除等)

4. 批量删除
如:删除所有名字包含test的文件
find ./ -name *test* | xargs rm -f

posted @ 2008-09-18 17:31 Fingki.li 阅读(1821) | 评论 (0)编辑 收藏

前两天一个朋友问我,为什么要写blog?
是呀,为什么要写blog呢?为什么大家都在写blog呢?
我来说说我的想法吧。
最开始的时候,我纯粹是跟风,大家都在写blog,自己也就想玩玩,随便申请了一个,然后写几篇不相干的东西,然后忘记了;
后来,工作中经常遇到一些技术问题,想把它记录下来,想到了blog这种方式,很不错,很方便,所以又开始找个相关的blog,开始写;
再后来,发现有好多的问题都是在别人的blog中找到的答案,很羡慕,很感激,于是也开始把自己的一些经验拿出来和大家分享;
慢慢的,当发现自己的文章也曾帮助过别人时,感觉很高兴;于是,工作不是很忙时,就会写一些东西和大家分享;
我是blog的受益者,我也是blog的贡献者!正是blog,使我们可以互补技术上的缺点,分享工作中的经验,让我们更快的进步!
于是有感于blog: 是分享,是共同进步!

posted @ 2008-09-07 23:05 Fingki.li 阅读(1416) | 评论 (2)编辑 收藏

About Exception:
An invalid XML character (Unicode: 0x0) was found in the element content of the document.

问题描述:
当我们用
byte[] info ;
DocumentHelper.parseText(new String(info));
将一个字节数组转成字符串再转成Document(XML格式)时,常常会遇到上述异常。
特别是当字符串有加、解密,或编码等情况时。

原因:
从异常来看,很明显是因为字节数组中存在 Unicode: 0x0,而这个字节在Xml中被认为是非法字符。

对于一些经过编码或加、解密的字符串中,很容易会出现这个 0x0,
特别是在加、解密中,经常会涉及到字符填充,而填充物通常是 0x0,
需对于0x00-0x20 都会引起一定的问题,又因为这些字符不可见,因此用通常的编辑器进行编辑的时候找不到问题所在。
而在转成String后也觉察不到任何异常。
所以在转成XML格式时要对字符串进行检测:
*  Verify that no character has a hex value greater than 0xFFFD, or less than 0x20.
* Check that the character is not equal to the tab ("t), the newline ("n), the carriage return ("r), or is an invalid XML character below the range of 0x20. If any of these characters occur, an exception is thrown.

pubic void CheckUnicodeString(String value)
    {
    for (int i=0; i < value.Length; ++i) {
        if (value[i] > 0xFFFD)
        {
            throw new Exception("Invalid Unicode");//或者直接替换掉0x0 value[i]='"n';
        }
        else if (value[i] < 0x20 && value[i] != '"t' & value[i] != '"n' & value[i] != '"r')
        {
            throw new Exception("Invalid Xml Characters");//或者直接替换掉0x0 value[i]='"n';
        }
    }

相关资源:
http://msdn.microsoft.com/en-us/library/k1y7hyy9.aspx
http://gceclub.sun.com.cn/developer/technicalArticles/Intl/Supplementary/index_zh_CN.html

posted @ 2008-09-04 15:18 Fingki.li 阅读(12176) | 评论 (0)编辑 收藏

keystore是个密钥存储库,我们经常用他来存储非对称密钥,但有时我们也需要它来存储一些对称密钥。
 public void createKeyStore() {



try {



KeyGenerator keyGen = KeyGenerator.getInstance("DES");







SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");







keyGen.init(56, random);







SecretKey secretKey = keyGen.generateKey();







KeyStore ks = KeyStore.getInstance("jceks");







char password[] = {'c', 'h', 'a', 'n', 'g', 'e','i','t' };







// Create an empty keystore



ks.load(null, password);







KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(secretKey);







ks.setEntry("myKey", skEntry, new KeyStore.PasswordProtection(password));



 



// store away the keystore



java.io.FileOutputStream fos =



new java.io.FileOutputStream("mystore");



ks.store(fos, password);



fos.close();







} catch (NoSuchAlgorithmException nsaex) {



nsaex.printStackTrace(System.err);



} catch (NoSuchProviderException nspex) {



nspex.printStackTrace(System.err);



} catch (KeyStoreException ksex) {



ksex.printStackTrace(System.err);



} catch (CertificateException cex) {



cex.printStackTrace(System.err);



} catch (IOException ioex) {



ioex.printStackTrace(System.err);



}



}







上面的例子是存一个DES密钥。



需要注意的就是这个keystore的类型,必须是jceks,



之前我就是使用默认的jks,导致报错。





posted @ 2008-09-02 10:42 Fingki.li 阅读(787) | 评论 (0)编辑 收藏

以往有听说过“Microsoft Windows、FreeBSD不安全随机数生成器信息泄露漏洞”之类的文章,大都是因为随机函数存在漏洞生成不安全的随机,导致可预测的加密密钥。
About Random
随机数是密码学的一个重要部分,它通常作为初始化向量用于密钥生成中。有许多测试根据数字计算给定数字序列的随机性,它们考虑给定数定在序列中出现的周期,做更细致的测量,包括相同数字或其他重复形式出现的周期。
但统计随机性的要求与加密随机性不同。
一个数字序列在统计上是随机的,但如果攻击者可以推算出数字的序列(通过了解使用的算法和随机种子值),那么加密是变得不安全了。
About Pseudo Random 伪随机数
对于一串随机的数字,最常见的描述就是没有从前一个数字推算出后一个数字的数学方法。最好的随机数是从物理过程中获得的,因为实际物理程才是真正随机的。事实上,一些随机数生成器就是使用硬件设置来实现,如音频输入或二极管。
    从设计上来说,计算机是很确定的,因此不是生成随机数的就好选择。它们通常求助于一个生成统计上随机的数字串的算法。为了确定在该算法中使用的输入值,它们要求用户提供一个种子值,这通常来自于系统时钟、网卡MAC地址以及其他不同的系统参数。
    这些随机数字很适合于计算机游戏中的示例数据或建模物理过程。不过,它们不适合于加密。它的弱点包括以下几点:
●     伪随机数是周期性的。最终将重复数字序列。
●     如果使用相同的种子值,将接收到序列完全一样的“随机”数。因此,随机序列与种子值一样多。
●     随机数可使用逆向工程。运用算法知识,强力攻击会立即猜测到种子值。如果种子值和时间之间有相关性,攻击者将会推算出所有后面的“随机”数。
 
伪随机数是出现许多臭名昭著的攻击的主要原因。破解56 位DES从1997年1月的96 天到1999 年1月的22 小时15 分钟,由于DES使用的伪随机数生成算法导致了这个结果,有一种攻击就是针对赌博应用程序,这种应用程序使用一个随机数种子值来对纸牌进行排序,而洗牌的可能性是有限的。在看完开始的几张牌后,用户可以将当前发的牌与某种可能的洗牌序列匹配,来确定剩下牌的顺序。

另一个著名的例子就是Netscape Navigator 早期版本中的取决于时间的随机数字生成器,它泄露了动态生成的用于加密运用SSL的会话中数据的密钥。
About Random encrypted 加密的随机数
随机数生成是许多加密操作不可分割的组成部分。例如,加密密钥需要尽可能地随机,以便使它们很难被复制。加密随机数生成器必须生成在计算上无法进行推算(低于 p < .05 的概率)的输出;即,任何推算下一个输出位的方法不得具有比随机猜测更高的成功几率。
为了说明一连串的随机数字是加密安全的,必须使得用户不可能通过计算重新生成同样序列的随机数。遗憾的是,运用伪随机数字,可以很容易地重新生成同样的序列。用户需要知道的知识就是伪随机数生成器算法和种子值。
    通过加密保护数据基于加密算法和更为随机的种子值就是本文要提出的方法,一个带加密功能的随机数产生器,可以应用于需要加密随机数的场合.为了构成种子值,需要用不同的值组合成一个系统范围内的种子值。这些值包括调用的应用程序可以提供的位,例如鼠标或键盘动作之间的用户反应时间、象进程ID和线程ID这样的系统和用户数据、系统时钟、系统计数器、自由磁盘集群属和散列的用户环境块。接着使用SHA-1散列这个值,输出用于创建一个随机数据流(用于更新系统种子值)。这可以起作用,是因为散列值生成了看似随机的数据,只改变源文档(种子值)中的一个位,任何两个输出的散列共享它们50%的位,尽管两个输出只有一位之差。当然,从理论上讲,有些过程还是周期性的。例如磁盘搜索时间看似随机的,实际取决于易于确定的因素,可以被推测出来。为了获取更好的随机数生成,可以采用硬件生成器,例如Intel的随机数生成器。
   
说明:
    创建加密安全的随机数需要更多的时间,这意味着如果需要快速地在一个短时间内生成大量随机数(例如百万级的数据)是不适合的。在一个简单测试中,用本文提到的RNG生成一百万个随机数的时间花费差不多是伪随机数生成器所用时间的八倍之多。

相关资源:http://www.xfocus.net/articles/200209/451.html

posted @ 2008-08-28 23:46 Fingki.li 阅读(859) | 评论 (0)编辑 收藏

到目前为止,中国已夺26金啦,中国加油!

posted @ 2008-08-15 23:11 Fingki.li 阅读(233) | 评论 (1)编辑 收藏

在ubuntu-server下安装phppgadmin遇到如下问题,记录如下:
首先安装postgresql很简单,sudo apt-get instatll postgresql
安装完成后,可能需要更改默认用户postgre的密码,这个可以查看我之前的文章。
然后,安装client,我打算使用phppgadmin,
命令行下:sudo apt-get install phppgadmin
完成后,默认同时安装了它所依赖的apache2。
在浏览器中输入:http://localhost,显示 It works.这说明apache2在正常工作。
但输入http://localhost/phppgadmin,显示无法找到该页,
进入 /var/www中查看,只有index.html,所以肯定找不到phpgpadmin,
所以需要做link,
执行:sudo find / -name phppgadmin,查找出phppgadmin的位置,
然后做连接: sudo ln -s /usr/share/phppgadmin phppgadmin
之后再试浏览器中访问http://localhost/phppgadmin,这次可以找到文件了,但提示是否下载php文件。
一同事说遇到过这样问题,说是少个libapache2-mod-php5,查看一下已经安装了。
于是google一番,得知:如果当您浏览PHP网页的时候,浏览器提示您是否下载PHP文件而不是去显示它的时候,就可能是您没有安装libapache2-mod-php5。当您 安装PHP5的时候,它会被默认的安装进去的,如果您不小心的将它遗忘了。您就需要去将它打开,sudo a2enmod php5,然后使用sudo /etc/init.d/apache2 restart来重新启动APACHE。
果然重启apache2后,可以正常访问了。






posted @ 2008-07-31 17:43 Fingki.li 阅读(1371) | 评论 (1)编辑 收藏

仅列出标题
共8页: 上一页 1 2 3 4 5 6 7 8 下一页