设置Linux最大文件描述符的数量

今天组员在配置Jenkins,实然发现了很多Java File Exception,说too many files open. 我们马上联想到一定是达到了Linux的最大文件描述符数量的上限了。

Google了一下就知道了如何修改。首先这个设置分为两级,即System Level和Shell Level。

System Level设置

用下面的命令查看一下,

然后用root权限修改/etc/sysctl.conf里的fs.file-max的值。CentOS 6的默认值是6百多万,一定是Shell Level太小了。

Shell Level设置

查看shell level能打开的数量用limit -n(bash: ulimit -n), 我们得到的结果是1024,确实太小。

要通过修改/etc/security/limits.conf文件,重新设置这个值。

在最后加上两句,

*是指对所有用户。

我得写一笔–解决的第一个Oracle DB的问题

在服务器上安装了Oracle DB XE 11g release 2, 开始运行一切正常,但突然有一天,不行了。SQL Developer说连接找不到,到了服务器上,运行

得到的状态是“No listener”, “Connection Refused”.

为啥呢?后来才发现是因为我安装了Jenkins, 这个万恶的东西,把很多目录的权限给改了。其中之一就是Oracle在/var/tmp目录下文件的权限。

修改成777就行了。

好了,一切正常了!

 

使用JPDA进行Java程序的Debug

最近遇到一个很有趣的问题。程序在Eclipse开发状态下运行正常,但运行打包好的程序就有错误。然后我突然发现,竟不知道如何脱离Eclipse对一个Java程序做Debug,得找一个Java世界里的GDB。

其实是有的,那就是JPDA(Java Platform Debugger Architecture)–Java平台调试体系结构,IBM developerWorks上面有比较详细的介绍(请搜索“深入Java调试体系”),大概的结构也分几层,有Debuggee(被调试者),Debugger(调试者)等角色。

那如何进行调试呢?

还是举个小例子。有如下程序:

这是一死循环,不停的在打“Hello,World!”。

打包成一个test.jar, 然后用如下命令行启动。

好吧,你看到了一些JVM的参数。是的,加上-Xrunjdwp,JVM在启动test.jar时,会启动一个调试的Agent。后面具体参数的意思是:

启动之后,你会看到,

这是说Debuggee已经在准备Debugger的到来了。

Debugger连接

Debugger是谁?Eclipse是个不错的选择。如何建立连接?很容易,Let’s step by step.

  1. 选择Run->Debug Configurations…
  2. 选中“Remote Java Application”右击选择New。
  3. 然后填写Name,Host,Port,ConnectionType选择“Standard (Socket Attach)”。
  4. 点击“Debug”后,你会发现到不到源码,程序的执行也暂停了。
  5. 如果有源码的话,点击加载源码。
  6. 然后就可以加断点Debug了。

好了,这就完成了Java的程序的远程调试。当然没有源码也是可以调的,只是不那么直观。总之,很酷! 😛

JavaScript里的变量作用域

JavaScript的确有很多和C-like编程语言不一样的地方,就比如简章的变量作用域。让写惯了C++/Java的我很不习惯。

C/C++/Java里的变量作用域被称为block scope, 也就是块作用域。但JavaScript里可不一样,它的作用域称为function scope-函数域。简单点说,就是变量不管在哪声明,在整个函数范围内是可见的。

举个例子先:

怎么样,是不是有点别扭?j, k在for block之外,在function block之内就可以被访问。

那如果是下面这个函数呢,

这个也是正确的,它等价于:

简单的说,就是变量像是被提到函数开始的地方声明,这被称为hoisting(informally).

所以JavaScript不能像C/C++/Java那样,在使用变量时才就近声明该变量,反而应该为了避免这种默认提前声明所产生的误解,自己手动把变量声明写到函数开始的地方。唉,不爽! 😥

XHTML学习总结

一切都要从头学起啊!(还记得大一时学习HTML的样子,那叫一个认真啊! :oops:)

XHTML就是HTML和XML的结合物,要求了更加严格的语法,比如:

  • XHTML元素必须被正确地嵌套。
  • XHTML元素必须被关闭。
  • 标签名必须是小字字母。
  • XHTML文档必须拥有根元素。
当然还有更多规则:
  • 属性名称必须小写。
  • 属性值必须加引号。
  • 属性不能简写。
  • 用Id属性代替name属性(这个不知道有啥用。 :?:)
  • XHTML DTD定义了强制使用的HTML元素。
XHTML的文件类型声明,也就是
在XHTML文档中,文档类型声明一定要位于首行!存在三种XHTML的文档类型,即:
  • STRICT(严格类型)
  • TRANSITIONAL(过渡类型)
  • FRAMESET(框架类型)
对应的DTD分别是:
Strict
Transitional
Frameset

Web开发,我来啦!

虽然很突然,但还是来了,公司的下一个产品终于跳到Web上了。做了桌面客户端这么久了,真想换换风格,去看看Web的开发是怎么样做的。

可现在心里极度的没底,好多的新技术要学啊,前端后端要学习一堆。

不过俺不怕,相信自己一定可以的!!!

哈哈,Web开发,我来啦! 🙂