容器(docker)中运行java需关注的几个小问题
简介
- container: 资源隔离、平台无关, 限制cpu、mem等资源
- Java: 平台无关、Write once, run anywhere、WORA
java不知道自己运行在container里,以为它看到的资源都能用。结果:java工作在资源充足的
原创文章,转载请注明: 转载自九乐棋牌本文链接地址: 容器(docker)中运行java需关注的几个小问题
java不知道自己运行在container里,以为它看到的资源都能用。结果:java工作在资源充足的
原创文章,转载请注明: 转载自九乐棋牌本文链接地址: 容器(docker)中运行java需关注的几个小问题
JVM中有这样一段注释:
// The base-class, PlatformEvent, is platform-specific while the ParkEvent is // platform-independent. PlatformEvent provides park(), unpark(), etc., and // is abstract -- that is, a PlatformEvent should never be instantiated except // as part of a ParkEvent. // Equivalently we could have defined a platform-independent base-class that // exported Allocate(), Release(), etc. The platform-specific class would extend // that base-class, adding park(), unpark(), etc. // // A word of caution: The JVM uses 2 very similar constructs: // 1. ParkEvent are used for Java-level "monitor" synchronization. // 2. Parkers are used by JSR166-JUC park-unpark. // // We'll want to eventually merge these redundant facilities and use ParkEvent.
原创文章,转载请注明: 转载自九乐棋牌本文链接地址: JAVA互斥锁(synchronized&Lock):行为分析及源码
有时候有很多问题只有在线上或者预发环境才能发现,而线上又不能Debug,所以线上问题定位就只能看日志,系统状态和Dump线程,本文只是简单的介绍一些常用的工具,帮助定位线上问题。
原创文章,转载请注明: 转载自九乐棋牌本文链接地址: 线上性能问题初步排查方法
作为UNIX/Linux下使用广泛的调试器,gdb不仅提供了丰富的命令,还引入了对脚本的支持:一种是对已存在的脚本语言支持,比如python,用户可以直接书写python脚本,由gdb调用python解释器执行;另一种是命令脚本(www.html-guide.command file),用户可以在脚本中书写gdb已经提供的或者自定义的gdb命令,再由gdb执行。在这篇文章里,我会介绍一下如何写gdb的命令脚本。
阅读全文
原创文章,转载请注明: 转载自九乐棋牌本文链接地址: 如何写gdb命令脚本
在apache-tomcat官方文档:如何让tomcat启动更快 里面提到了一些启动时的优化项,其中一项是关于随机数生成时,采用的“熵源”(entropy source)的策略。
他提到tomcat7的session id的生成主要通过java.security.SecureRandom
生成随机数来实现,随机数算法使用的是”SHA1PRNG”
private String secureRandomAlgorithm = "SHA1PRNG";
在sun/oracle的jdk里,这个算法的提供者在底层依赖到操作系统提供的随机数据,在linux上,与之相关的是/dev/random
和/dev/urandom
,对于这两个设备块的描述以前也见过讨论随机数的文章,wiki中有比较详细的描述,摘抄过来,先看/dev/random
:
在读取时,/dev/random设备会返回小于熵池噪声总数的随机字节。/dev/random可生成高随机性的公钥或一次性密码本。若熵池空了,对/dev/random的读操作将会被阻塞,直到收集到了足够的环境噪声为止
原创文章,转载请注明: 转载自九乐棋牌本文链接地址: JVM上的随机数与熵池策略
我是一名普通的软件工程师,不是什么技术大牛。这篇文章所提到的“七种武器”只是我这些年工作经验的一点体会和感悟,如果有错误的地方,还请大家指正。
(一)C语言
作为一名C程序员,熟练掌握C语言是最基本的一项技能。关于如何学好C语言,以及C语言话题的讨论,网上有很多经典的文章,我就不一一列举了。在这里,我只想谈一点我个人的体会:刚毕业时,我来到一家比较大的软件公司工作,而公司的工作模式是每个人只负责一个小???。这样工作两年后,我自认为我的C语言水平已经很高了。后来,我来到现在这家公司。由于工作需要,接触的东西也多了,开源项目也了解一些,才发现自己的C语言能力太一般了:原来宏可以这样写,指针可以这样用…等等。现在我在写代码时,常?;嵯耄赫飧鲂形荂语言规范定义的吗?如果是,是C89还是C99?我现在用的编译器支持吗?如果不是C语言规范定义的,那么在程序运行的这个平台,行为是确定的吗?所以我建议大家平时可以多想想这些问题,查查资料,相信一定会对C语言有更深的理解。
原创文章,转载请注明: 转载自九乐棋牌本文链接地址: UNIX/Linux C 程序员需要掌握的七种武器