现在位置: 首页 > viscosity发表的所有文章
首先我们来分析一个红黑树: 红黑树的几个特征和性质: 1. 每个结点或者为黑色或者为红色。 2. 根结点为黑色。 3. 每个叶结点(实际上就是NULL指针)都是黑色的。 4. 如果一个结点是红色的,那么它的两个子节点都是黑色的(也就是说,不能有两个相邻的红色结点) 。 5. 对于每个结点,从该结点到其所有子孙叶结点的路径中所包含的黑色结点数量必须相同。 然后我们可以得出几点推论: 1)加入两个兄弟同为黑色,那么他们可以将这个黑色上浮给先祖,知道根节点,而不违背红黑树的第5点 要求;2)在对红黑树进行操作的时候,我们很有可......
阅读全文
  • 01月
  • 03日
综合 ⁄ 共 1432字 评论关闭
    pthread的mutex通常用在多线程的同步当中,至于多进程的同步,一直以为只能使用记录锁和信号量,而这两种机制都需要内核的支持,属于“重量级”部件。也曾经在多进程同步中使用pthread mutex,但前提有两个:mutex能为多个进程所见,使mutex对象驻留在共享内存中;mutex本身不额外使用进程本地的内存,如堆内存。第一个前提容易满足,对于第二个,GCC的pthread实现也满足。但我一直没有注意到的是,pthread mutex标准本身对多进程提供了“可选”支持,只要实现支持、初始化mutex时pthread_mutexattr_t的pshared成员置为PTHREAD_PRO......
阅读全文
  • 08月
  • 02日
综合 ⁄ 共 1984字 评论关闭
      哈哈,一直以为在xml布局文件中对EditText添加 android:maxLength="30";属性是控制EditText字符数的。想当然的以为一个中文占2个字符,一个英文占1个字符。结果的结果当然不是了。 确切的说来android:maxLength="30"是对EditText的字数进行控制的。不管中文还是英文。都是30个字。这下麻烦了,查了整个API就没发现有真正是对字符进行控制的。最后发现只能用自定义的InputFilter来实现。 下面附上源代码:由Jerome_Song提供:http://blog.csdn.net/songzhiyong1121/article/details/8758902 package com.example.inputfilter......
阅读全文
  • 05月
  • 07日
综合 ⁄ 共 3423字 评论关闭
一、Javascript 模块化编程: 1、记的刚开始用JS写代码的时候,都是一个方法一个方法的处理某个事情,比如 function check(){    dosomething..... } 这样写的好处就是方便,什么时候用,什么时候写,但是坏处就是污染了全局空间,很容易出现重复的名字,而且不容易维护。   2、后来想到了用命名空间来解决全局空间的问题,比如 var com={}; var com.do={}; com.do.get=function(){};    这样,方法名字就不会污染全局空间了,而且不同的人写的方法命名空间也会不一样,但是也有一个坏处那就是,每次调用一个方法的时候,都得写老......
阅读全文
  • 04月
  • 01日
综合 ⁄ 共 2521字 评论关闭
1.概述 migration是使用ruby的方法来修改数据库表的结构,相对于直接修改数据库表结构,我们可以有记录的进行数据库表的修改,每次的变更就是一条migration的记录。如果没有migration,如果你手动修改了数据库的表结构,就必须通知其他developer也进行同样的修改。如果已经正式部署在服务器上,必须同时跟踪该服务器上的数据进行同样的更改,如果不记录,则非常容易出错。 migration会自动追踪已经更改未执行、更改执行的记录,只需要新增migration文件,然后执行rake db:migrate就可以了。这样所有的developer就可以更新到最新的......
阅读全文
  • 02月
  • 15日
综合 ⁄ 共 1317字 评论关闭
 {dede:global.cfg_webname/} 网站名称 {dede:global.cfg_description/} 描述 {dede:global.cfg_keywords/} 关键词 {dede:global.cfg_templets_skin/} 相对路径  {dede:arclist flag='h' limit='1,4'}  限制typeid=1和4     <div class='d1arc'><a href="[field:arcurl/]">[field:title/]</a></div>     {/dede:arclist}  {dede:arclist flag='a' row='6' orderby='pubdate'} 特别推荐和时间       <li><span>[field:pubdate function="MyDate('m-d',@me)"/]</span><a href="[field......
阅读全文
  • 02月
  • 10日
综合 ⁄ 共 1891字 评论关闭
【任务描述】目标:fdisk -l只输出物理磁盘的分区信息,过滤掉逻辑卷(如果有的话)的信息。步骤:1、查看源码包# rpm -qf `which fdisk`  #查看fdisk命令属于哪个安装包。util-linux-ng-2.17.2-12.4.el6.x86_642、下载源码包去上文提供的站点下载util-linux-ng的源码包3、安装源码包# rpm -ivh util-linux-ng-2.17.2-12.4.el6.src.rpm4、分析此源码包内包含许多补丁,执行rpmbuild -ba util-linux-ng.spec时,第一步会将这些补丁打上。我以前修改源码包,直接将源代码减压出来,编辑完源代码后打包,最后rpmbuild -ba *.spec搞定的......
阅读全文
  • 02月
  • 03日
综合 ⁄ 共 262字 评论关闭
1、 cat /proc/${pid}/status 2、pstree -p ${pid} 3、top -p ${pid} 再按H   或者直接输入 top -bH -d 3 -p  ${pid} top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。 4、ps xH 手册中说:H Show threads as if they were processes 这样可以查看所有存在的线程。 5、ps -mp <PID> 手册中说:m Show threads after processes 这样可以查看一个进程起的线程数。
阅读全文
  • 01月
  • 18日
综合 ⁄ 共 1189字 评论关闭
C、C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 。而在C++中则可以使用模板 技术定义一个函数,比如: template <class T> int getArrayLen(T& array) { return (sizeof(array) / sizeof(array[0])); } 这样对于不同类型的数 组......
阅读全文
  • 12月
  • 20日
综合 ⁄ 共 888字 评论关闭
一、PHP加速器介绍         PHP加速器是一个为了提高PHP执行效率,从而缓存起PHP的操作码,这样PHP后面执行就不用解析转换了,可以直接调用PHP操作码,这样速度上就提高了不少。  Apache中使用mod_php的请求、响应执行流程: 1、Apache接收请求。 2、Apache传递请求给mod_php。 3、mod_php定位磁盘文件,并加载到内存中。 4、mod_php编译源代码成为opcode树。 5、mod_php执行opcode树。        PHP加速器相应的就是第四步,它的目的就是防止PHP每次请求都重复编译PHP代码,因为在高访问量的网站上,大量的编译往往没有执行速......
阅读全文
  • 11月
  • 14日
综合 ⁄ 共 871字 评论关闭
                   bash shell脚本执行方法总结 bash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限。 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: cd /data/shell   ./hello.sh./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的......
阅读全文
  • 11月
  • 10日
综合 ⁄ 共 11564字 评论关闭
expdp使用   使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此使用EXPDP工具时,,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用DIRECTORY对象权限。 首先得建DIRECTORY:   SQL> conn /as sysdba   SQL> CREATE OR REPLACE DIRECTORY directory_name AS 'directory_path';         同样可以更改directory的os路径   SQL> GRANT read,write ON DIRECTORY directory_name TOusername;         查询directory目录         SQL> selec......
阅读全文