- 浏览: 275732 次
- 性别:
- 来自: 北京
最新评论
-
arther8888:
niedj 写道请问,关于CachedThreadPool的方 ...
Java并发包中的几种ExecutorService -
Lyleluo:
深圳java群 397083120 求职,学习全包,外加小美女 ...
Java数组初始化 -
happyzjj:
楼主讲的很详细,不过关于CachedThreadPool我试的 ...
Java并发包中的几种ExecutorService -
niedj:
请问,关于CachedThreadPool的方式,楼主是否自己 ...
Java并发包中的几种ExecutorService -
garyzhang2681:
2.实现Runnable接口有试过t1.start(); t1 ...
Java多线程笔记1——多线程两种实现方式
文章列表
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 ...