`
文章列表
当java虚拟机启动的时候,会启动很多内部的线程,这些线程主要在thread.cpp里的create_vm方法体里实现 而在thread.cpp里主要起了2个线程来处理信号相关的 JvmtiExport::enter_live_phase(); // Signal Dispatcher needs to be started before VMInit event is posted os::signal_init(); // Start Attach Listener if +StartAttachListener or it can't be started lazi ...
在我们常用的Jstack, Jmap 用于分析java虚拟机的状态的工具,通过起另一个虚拟机通过运行sun.tools包下的java文件,去跟踪另一个虚拟机的状态。 如果让你设计一个跟踪另一个进程的方法,你也通常会考虑这几种常用的方式。 第 ...
proc 的文件系统是linux 里面常用的基于内存的文件系统。linux的内核版本 2.6.18 重要的struct: struct proc_dir_entry {unsigned int low_ino;unsigned short namelen;const char *name;mode_t mode;nlink_t nlink;uid_t uid;gid_t gid;loff_t size;struct inode_operations * proc_iops;const struct file_operations * proc_fops;get_info_t *get_inf ...
为什么学习 感谢你高中的语文老师吧,是他,教会弄读书的乐趣;感谢管理大师彼得·德鲁克吧,是他教会你时间管理、自我管理的意识,同时也是他教会你广读书籍来提升自己(他老人家每年都要学习新的技术,一直到老还 ...
ACM牛人给的新手建议 ACM进阶 一位高手的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功. 训练过ACM等程序设计竞赛的人在算法上有较大的优势,这就说明当你编程能力提高之后,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来。 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用 ...
无论在Linux下,还是win下,修改vim配置文件尽量修改自己用户主目录下的.vimrc(在win中是_vimrc)在Ubuntu下使用sudo apt-get install vim-full将vim更新成完整版(不一定非得完整版的吧?)第二步,在当前用户的主目录下新建文件.vimrc,内容如下: """"""""""""""""""""""""&quo ...
读JavaAPI源代码——整数和字符串间的转换 如果让您亲自动手来来写一个Integer中的toString()方法和parseInt()方法,您会怎么写? 请您先动手写toString()方法。 我对于toString()的思路: 1.首先需要得到这个Integer数值的位数,所以肯定有一个getIntegerSize()的private方法 2.然后要把这个Integer数值转化为一个字符数组,所以也要有一个getChars()的private方法 3.最后只要把这个字符数组转化为字符串返回即可 在编写完我们的代码,再确定对于现在自己的实力,已经没有再做优化的可能之后 ...
Java中的位移运算符   移位运算符就是在二进制的基础上对数字进行平移。   我们知道,Java中byte、short和char类型在进行计算时都是先将其转换为int类型,同样在进行移位运算时也不例外。它们移位后的结果也都会变成int类型。由于int类型为32位的(1),所以对于byte、short、char和int进行移位时,规定实际移动的次数最多是31位,如果超过31,则按n = n % 32来计算,也就是说移位33次和移位1次得到的结果相同。移动long型的数值时(long是64位的),规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。您可以亲自动手 ...
DOS功能调用 作者:来源:互联网 AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀   01 键盘输入并回显   AL=输入字符 02 显示输出 DL=输出字符   03 异步通迅输入   AL=输入数据 04 异步通迅输出 DL=输出数据   05 ...
1. 确认oprofile 是否被编译进内核,是模块方式还是别的方式 cat /boot/config-2.6.18-128.el5 |grep OPROFILE 2. 配置中错误 ./configure checking dynamic linker characteristics... GNU/Linuxld.so checking how to hardcode library paths into programs... immediatechecking for ld... /usr/bin/ld -m elf_x86_64 checking for kernel OPr ...
Tmpfs是linux 系统中基于内存/交换分区作的文件系统,与ramdisk不同的是,ramdisk是作为块设备,基于ext的文件系统,所以不可绕过的是page cache的内存复制,具体可以参考前面写的关于ramdisk, 对tmpfs来说就是直接操作内存做为文件系统的,而不是基于块设备的。 如何绕过page cache,实际上很简单,只要直接在setup文件系统的时候,设置自己的file的const struct file_operations,让我们来看tmpfs是如何实现的。 在linux 2.6.18中tmpfs的源码主要在 shmem.c文件中 1.定义tmpfs的文件系统 ...
更详细的内容参考我的另一篇: 网上交易安全之九阳神功-使用JAVA调用U盾进行客户认证的total solution 需要解决的问题: 1.Servlet如何读客户端的认证 很多网上的朋友都说 “我用X509Certificate[]certs = (X509Certificate[]) request .getAttribute("javax.servlet.request.X509Certificate"); 得到的证书是个null” 几乎没有答案,这边给出解决方案 a.客户端访问这个servlet,客户端和放这个servlet的j2eeapp必 ...
一、通过用户名和密码来进行认证的弊病 我们有一个网站,为了保证用户在线交易传输数据的安全性,我们会启用一个HTTPS/SSL: 但是,对于一些网上银行或者是网购来说,黑客特别喜欢攻击这样的网站, 有一种攻击手法叫MIMAT(中间者攻击), 伪造SSL证书,让客户端的HTTP流,流到他那边去, 然后再进一步用暴力破解,来破解你HTTP传输时的密码。 一、改进的交易流程 我们假设密码已经被MIM拿到了,拿到就拿到呗,大家知道工商银行网上转贴划款时除了输入用户名和密码外,还会在点”下一步”时,跳出一个页面,让你插上你的U盾,然后再送一下交易密码的过程吧? 这个就是”电子签名认证 ...
page cache在linuxvfs 中是比较重要的一层,其功能就不详细介绍了。主要介绍了几个关键性函数,容易帮助了解page cache里的整体逻辑和流程 先看一下page 的结构体 /* * Each physical page in the system has a struct page associated with * it to keep track of whatever it is we are using the page for at the * moment. Note that we have no way to track which tasks a ...
在产品中使用了ramdisk, 看了一部分的源码,分析和共享一下。内核源码2.6.18 安装ramdisk ramdisk 在linux里面被认为是个内存的块设备,通常以rm0,rm1... 挂在dev下,首先需要格式化块设备成linux的文件系统,然后在将想使用的目录mount 到dev/rm0...下,这样操作目录,在目录里操作文件就在内存里。 ramdisk是一个块设备,需要格式化成linux能认识的文件系统(ext2,ext3),那么对ramdisk的 IO的操作 ,就绕不过page cache,也就是无意中多了一次内存复制。 通常在linux中,由于块设备的随机读写是急剧降低性 ...
Global site tag (gtag.js) - Google Analytics