删除目录下所有的 .svn .git 隐藏子目录

使用SVN 1.6 之前版本 checkout出来的代码,在本地每个文件夹下都有个 .svn ,可利用这个命令来删除

Linux

Windows(需要在批处理文件中执行)

对于Git的目录也可以如此操作:

Linux

Windows(需要在批处理文件中执行)

WordPress 报告 “建立数据库连接时出错” 的问题

使用 WordPress 构筑的 Blog 最近总是会报告 “建立数据库连接时出错” ,查看 Apache 的日志得到如下信息

在日志的最后得到类似如下的内容

这个 “MySQL server has gone away” 有些莫名奇妙,MySql 怎么会无缘无故的没有了呢。
于是查看系统日志

看到如下的输出

可以明显看到,是由于系统内存不足,导致了 Linux 系统自带的 OOM Killer 动作。执行

可以看到,实际的内存已经严重不足了,这台机器只配置了512M内存,跑一阵子之后,系统的剩余内存不足 10MB的样子了。

没办法,花钱加内存到1G。悲剧的是,还是会死掉,具体解决办法可以查看
Ubuntu 12.04下安装配置Worker工作模式的Apache 支持PHP
Ubuntu 12.04 Apache2 安装 PHP-FPM 增强 PHP5-CGI 的功能

通过限制DefaultMaxClassProcessCount 的数量来限制php5-cgi 的数量来避免太多的并发进程耗尽资源。

Android 4.2.2 API 17 Content Provider 报错 SecurityException: Permission Denial: opening provider

两个APK 通过Content Provider 来共享数据,在Android 4.2.2 API 17  之前都是正常的,但是到Android 4.2.2 API 17  上面就会报告异常类似如下的异常信息

在AndroidManifest.xml中原来的定义如下

并且没有定义 android:targetSdkVersion

查找了很多地方,最终发现原因

具体的网页在 http://developer.android.com/about/versions/android-4.2.html

因此修改为如下即可 也就是增加 android:exported="true"

Ubuntu 开机自动开启数字小键盘

每一次登录Ubuntu的时候小键盘都是关着的。可是每次又得输入密码,所以还是得手动打开数字键,亮了Numlock的灯。

Ubuntu 13.04 下面执行如下操作

编辑文件

在文件最后增加

Ubuntu 13.10 下面执行如下操作

编辑文件

在文件最后增加

Ubuntu 16.04 LTS 下面执行如下操作
创建文件

在文件最后增加

Ubuntu 13.10 运行VirtualBox虚拟机编译出现错误提示运行"/etc/init.d/vboxdrv setup"的问题

运行虚拟机提示:

之后提示:

在终端下运行:

提示信息

提示有错误,查看了一下错误日志

内容如下

根据提示应该是没有找到对应的源文件,查看了一下系统版本号:

在进入/usr/src里发现果然没有对应的版本号头文件。

解决方法:

解决Eclipse中SVN 信息不显示的问题

Eclipse  中使用 svn 插件,原本正常,未作任何更改,最近几天突然eclipse 中查看文件时,文件后面的 版本号 、 文件的状态图标 等等都不见了。以为有插件冲突,卸载了好多其他的相关的插件,不行,卸载了SVN插件重新安装也不行。

检查插件都在,更新,提交等操作都能正常使用,唯独看不到状态了。

经过一番查找,找到问题解决办法。

Windows ,Linux 中

打开 : windows ->preferences->General->Appearance->Lable Decorations  勾选其中的 SVN 项即可

Mac

打开 : preferences->General->Appearance->Lable Decorations  勾选其中的 SVN 项即可

mvn报错:No goals have been specified for this build

选择【Run As】-【Maven build】的时候,报:

eclipse安装的maven插件是m2eclipse,在控制台使用命令mvn compile并未报错。后在pom.xml文件<build>标签后面加上

即可。

其实使用命令行时就已经指定了phase,而使用m2eclipse的【Run As】-【Maven build】时并未为其指定goal或phase,所以才报这个错误。

Struts2 使用execAndWait 在 Action 中调用 getText 报告 java.lang.NullPointerException

使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getText的时候报告异常

查询了很多评论,最终找到原因跟解决方案,具体解释在 http://stackoverflow.com/questions/16692658/execandwait-interceptor-not-redirecting-to-success-page-after-waiting

  1. execAndWait causes the action to be executed in a new thread.
  2. Since ActionContext is ThreadLocal, the new thread will not get the values stored in the parent thread version of ActionContext. Every thread has a unique version of ActionContext
  3. getText() will throw a NPE when it tries to execute in the new thread because it depends onActionContext

简单解释一下,就是说

execAndWait 会导致执行的Action 在另外一个线程中被执行,而getText 依赖 ActionContext ,他从 ActionContext 中获得当前的Locale 从而根据语言的不同加载不同的文字,可是,由于ActionContext 是ThreadLocal 的,而execAndWait 新开线程的时候并没有把父线程的ActionContext 传递给子线程 结果导致在新开的子线程中的ActionContext中的数据都是null ,因此出现异常信息就不足为怪了。

解决方法为

To fix this, you need to copy the parent threads ActionContext into the execAndWait thread. You can do this by extending the BackgroundProcess class, implementing the beforeInvocation()and afterInvocation() methods, and extending ExecuteAndWaitInterceptor, implementing the getNewBackgroundProcess() method.

代码例子如下,注意,原文中作者的代码存在多线程同步问题,具体体现在

被调用的时候,得到的 context 为null ,导致注入失败。

因此需要重载两个类,来解决这个问题
ExecAndWaitInterceptorEx.java

ActionInvocationEx.class

写完之后,在struts.xml 中配置一下拦截器,覆盖掉默认的拦截器,下面是我的配置例子