`
文章列表
1.概述     PL/SQL(Procedural Language/Structured Query Language)是Oracle对标准数据库语言SQL的过程化扩充,它将数据库技术和过程化程序设计语言联系起来,是一种应用开发语言,可使用循环,分支处理数据,将SQL的数据操纵功能与过程化语言数据处理功能结合起来。 PL/SQL的使用,使SQL成为一种高级程序设计语言,支持高级语言的块操作,条件判断,循环语句,嵌套等,与数据库核心的数据类型集成,使SQL 的程序设计效率更高。(更加详细的介绍,大家可以Google一下)     PL/SQL程序主要分为两大类:匿名程序和命名程序。下面先讲 ...
7.交互系统的调度算法 时间片轮转调度算法(Round-Robin Scheduling)     时间片轮换调度算法是最古老、最简单、最公平并且使用最广泛的调度算法之一。每个进程被分配一段时间间隔,叫做时间片(quantum)。进程在这个时 ...
    如果计算机支持多道程序设计,那么它会经常碰到多个进程或者线程在同一时刻竞争CPU。只要当两个进程同时进入就绪状态,这种情况就会发生。但是CPU只有一个,那么这时候就需要做一个选择:到底接下来该选择哪个进程运行。操作系统做这个选择的部分就叫做调度器(scheduler),而使用到的算法叫做调度算法(scheduling algorithm)。     很多对进程调度使用的东西对于线程调度同样适用。如果线程是内核管理的线程,那么调度的单位就是线程,而不管这个线程属于哪个进程。     1.调度简介     在以前还是批处理系统的时候,调度算法非常简单:无非是运行磁带上下一个作业(job ...
1.JavaScript的变量类型   JavaScript的变量分为基本类型和引用类型.基本数据类型是直接存在栈空间的简单数据段,这种类型直接将值保存在内存的某个位置.引用数据类型存储的是指向实际存储于堆内存中的对象的地址.   JavaScript中的基本数据类型共有五种:Number,Null,Undefined,Boolean和String.需要注意的是,js中的String是基本数据类型.
    12.互斥量(mutex)     当信号量(Semaphore)的计数功能不再需要,信号量简化之后就成为一种新的变量互斥量(mutex)。互斥量在处理共享资源和代码之间的互斥访问方面非常有用。互斥量实现起来简单高效,这一点对于用户空间的线程库非常有用。     互斥是那种只有两种状态,但每次只能处在其中一种状态的变量。这两种状态分别是锁定和非锁定状态。因此,只需要一个比特就能表示互斥量的两种状态,例如,0代表非锁定和1表示锁定。互斥量有两个相关的操作:mutex_lock和mutex_unlock。     mutex_lock:当线程需要进入临界区时,它调用mutex_l ...
通过VMWare安装了一个FreeBSD虚拟机,想着说用XShell远程连接上去,但是总是出现下列错误: error: PAM: authentication error for root 查了一下资料,默认情况下,FreeBSD上的sshd是不允许root通过ssh远程登录到服务器上。只需要在/etc/ssh/sshd_config文件中添加下列配置: PermitRootLogin yes PasswordAuthentication yes AllowUsers root 试了一下,问题解决。
    7.实现进程互斥的几种方案之——TSL指令     前面介绍了几种方案,都是通过软件的方式实现互斥,下面的这种方式需要借助硬件设计的帮助来实现互斥。这一点在多CPU电脑的设计中尤其普遍。这种方案需要引进一条指令: TSL RX,LOCK     这条指令的含义是,读取内存单元LOCK中的内容到寄存器RX中,并且为内存单元LOCK重新设置一个非0值。TSL指令的操作被设计为不可分的,也就是说,整个读写操作都完成之前,其他进程是没办法访问LOCK这个内存单元的。这一点是通过锁定内存总线(lock memory bus)来实现的。     前面我们提到了禁用中断的方式。这 ...
    很多时候,进程需要和其他的进程进行通信。比如shell中的管道命令:ps -ef | grep nginx,一个命令的输出,作为另一个进程的输入,这就是进程间通信(Interprocess Communication)。     进程间通信主要需要解决三个问题:     1.一个进程如何给另一个进程传递信息     2.如何确保进程之间不互相干扰、妨碍     3.当进程间出现依赖关系时,该如何处理。     尽管这里讨论的是进程之间的通信,但其实对于线程来说,他们之间的通信需要解决后两个问题。由于多个线程处在相同的进程,因此也处在同一个地址空间中,所以第一个问题自然很好解决。 ...
Ubuntu11.10安装node.js,报错提示Could not autodetect OpenSSL support,但是检查了一下,发现,系统是已经安装了openssl这个包的。最后发现其实问题出在缺少libssl-dev包,于是:   sudo apt-get install libssl-dev 并且,查资料的过程中,发现很多类似的与ssl缺少包有关的问题似乎都和这个包有关,因此,装完系统最好是确认一下这个包是否缺少。  
 3.查询中null的处理         null的匹配非常有意思:null不仅仅会匹配到指定键的值确实等于null的文档,并且还会匹配到查询所制定键不存在的文档。例如,插入下面这三个文档: > db.users.insert({"name":"Tom",&q ...
1.find()查询         在之前的学习中没我们其实已经很多次的接触过find()查询。基本上来说,find查询是比较简单明了的。find()的第一个参数决定了需要查询的文档的特征,如果该参数为空,则查询结果会匹配一个集合中所有的文档。例如: db.coll.find({}); db.coll.find();         如果要查询姓名为张三的人: db.coll.find({"name":"张三"});         如果要查询姓名为张三,年龄30岁的人的信息: db.coll.find({" ...
问题:假设有一个数组x[],有n个元素,并且每一个都大于零;称x[0]+x[1]+x[2]+...+x[i]为前置和,而x[j]+x[j+1]+...+x[n-1]为后置和。试编写一个程序,求出x[]中有多少组前置和后置和。 思路:设置两个索引变脸indexHead和indexTail,一个从前往后扫描,一个从后往前扫描。并且使用两个变量记录当前的前置和和后置和,并通过比较他们的值来决定移动哪个索引变量。直接看代码吧。 #include <stdio.h> int countHeadTailNum(const int a[], int n) { int ind ...
1.删除字符串中的指定字符 /*将字符串s中出现的字符c删除*/ void squeeze(char s[],int c) { int i,j; for (i = 0, j = 0; s[i] != '\0'; i++) { if (s[i] != c) { s[j++] = s[i]; } } s[j] = '\0'; //这一条语句千万不能忘记,字符串的结束标记 } 2.字符串连接 /*字符串连接:将字符串t加到s的末尾(覆盖掉字符串s末尾的'\0')*/ void strcat(char s[],char t[]) { ...
   1.CachedThreadPool     CachedThreadPool首先会按照需要创建足够多的线程来执行任务(Task)。随着程序执行的过程,有的线程执行完了任务,可以被重新循环使用时,才不再创建新的线程来执行任务。我们采用《Thinking In Java》中的例子来分析。     首先,任务定义如下(实现了Runnable接口,并且复写了run方法):   package net.jerryblog.concurrent; public class LiftOff implements Runnable{ protected int countDow ...
        问题1:讲一个十进制数字的字符串表示转换成对应的整数。举例:将“1234”转换成整数1234. /*将字符串s转换成相应的整数*/ int atoi(char s[]) { int i; int n = 0; for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i) { n = 10 * n + (s[i] - '0'); } return n; }           问题2:将一个十六进制数的字符串表示形式转换成对应的整数。所谓的十六进制数的字符串形式是指字符串只包含'0 ...
Global site tag (gtag.js) - Google Analytics