java cpu 100% 无响应

占用cpu高的线程的堆栈如下:

gdb 跟进发现:线程在函数Dependencies::find_finalizable_subclass(Klass*) 中,应该有一个循环,不断地调用函数Klass::subklass()

 

解决办法:

The fix was simple – disable CMS class unloading options when -Xnoclassgc or -XX:-ClassUnloading are specified.

参考资料:

https://blogs.oracle.com/poonam/entry/jvm_hang_with_cms_collector

 

想阅读jvm源码吗? https://blogs.oracle.com/sundararajan/entry/so_you_want_to_read

docker容器中的crond中的任务如何获取环境变量

  1. 我们可以通过docker create时的-e选项设置环境变量
  2. crond会清空环境变量
  3. 如何设置一个cron中能够看到的环境变量呢?

 

解决办法:

  1. 指定一个自定义的SHELL ,该shell参考一下自定义的环境变量文件

参考:

  1. http://stackoverflow.com/questions/27771781/how-can-i-access-docker-set-environment-variables-from-a-cron-job

linux 之 /proc/$pid/environ

我们知道 linux的 /proc 是一个虚拟的文件系统,而 /proc/$pid/ 下的文件也应该能反映进程的实时状态,但是 /proc/$pid/environ 并不能反映进程实时的环境变量,比如,这里不能体现setenv() 产生的变化,为什么呢?

  1. 这个是故意为之还是无意为之?
  2. 如果是故意为之,那么,为什么这么设计?

下面有一篇文章,分析的比较细致,但是没有给出任何的结论:https://codywu2010.wordpress.com/2014/09/14/procfs-environ-explained-in-depth-1/

数据库原理名词之候选码,超级码,主码,主属性

若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为(超级码)候选码。

例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是(超级码)候选码。
简单的说,候选码(超级码)就是可以被选为主码的属性或属性组。

当一个关系有N个属性或属性组可以唯一标识时,则说明该关系有N个候选码,可以选定其中一个作为主码。

主属性就是包含在任何候选码中的属性;非主属性就是不包含在任何候选码中的属性。

bash glob star

不经意间:

时,漏copy了一些文件,嗯,隐藏文件漏掉了

默认情况下,bash中扩展 * 的时候是不包含隐藏文件的,可以通过设置:

来使得 * 可以包含隐藏文件。

可能你已经习惯了* 不包含隐藏文件,于是 shopt -s dotglob 可能也就是临时用用而已,用完了最好修改回来,有点儿麻烦,那么,copy全部文件的正确姿势是什么呢?

是的,放在圆括号中执行(这样会启动一个子shell)