SCJP_Ch03 Assignments
Leshan Radio Company 有限公司,高功率透电器件 MAXIMUM RATINGS
Symbol PD
T j , TS t g
Max 225
-55 to +150
Unit mW °C
LH8550PLT1G Series
S-LH8550PLT1G Series
3
1 2
SOT–23
COLLECTOR 3
1 BASE
2 EMITTER
Rev.C 1/4
LESHAN RADIO COMPANY, LTD. LH8550PLTIG Series,S-LH8550PLTIG Series
Site and Control Change Requirements; AEC-Q101 Qualified and PPAP Capable
DEVICE MARKING AND ORDERING INFORMATION
Device
Marking
Shipping
(S-)LH8550PLT1G
KIO
0.60
PIN 1. BASE 2. EMITTER 3. COLLECTOR
0.035 0.9
0.079 2.0
0.031 0.8
inches mm
Rev.C 4/4
3000/Tape&Reel
(S-)LH8550PLT3G
KIO
10000/Tape&Reel
(S-)LH8550QLT1G
KIY
3000/Tape&Reel
(S-)LH8550QLT3G
KIY
10000/Tape&Reel
MAXIMUM RATINGS Rating
Collector-Emitter Voltage Collector-Base Voltage Emitter-Base Voltage Collector Current-continuoun
Set UPC 03 Manual-手动优化
设置UPC03的手册
Set UPC 03 Manual
如果出现下图所示情况,需要调整KS 、TG 、TU
解决这个问题有两个方面:
一方面:“P ”的值太大,将“P ”值调小。
根据公式:P= 0.6Tg /(TU*KS),调整参数“KS ”“TU ”.例如:使“P ”调小,我们因该使“KS ”变大(从-0.009 变为-0.010S 视为变大).调整结束之后,保存参数,并检查参数是否好。
二方面:使“I ”值增大,根据公式:I=TG ;调整参数“TG ”。
调整结束之后,保存参数,并检查参数是否好。
560V
420V
VOLAGE
解决这个问题有两个方面:
一方面:“P ”的值太小,将“P ”值调大。
根据公式:P= 0.6Tg /(TU*KS),调整参数“KS ”“TU ”.调整结束之后,保存参数,并检查参数是否好。
二方面:使“I ”值增小,根据公式:I=TG ;调整参数“TG ”。
调整结束之后,保存参数,并检查参数是否好。
380V
315V
AE
VOLAGE TIME。
c++ 03标准
c++ 03标准一、引言C++03是C++编程语言的一个重要版本,它在C++98标准的基础上进行了修订和改进。
这个标准是在2003年通过的,引入了一些新的语言特性和库支持,以提高语言的灵活性和性能。
在本文中,我们将详细探讨C++03标准的各个方面,包括语言特性、库支持和性能提升。
二、语言特性1.模板元编程C++03标准引入了模板元编程的新特性,使得程序员可以在编译期间进行更高效的计算。
通过模板元编程,程序员可以在编译期间生成和优化代码,从而提高运行时的性能。
这种特性在泛型编程和算法设计中非常有用。
2.类型萃取(type traits)类型萃取是C++03标准中引入的一种新特性,它使得程序员可以方便地获取类型的属性。
类型萃取可以在编译期间生成常数、类型别名或模板参数,从而简化代码并提高可读性。
3.异常处理C++03标准改进了异常处理的语法和语义,使得异常处理更加安全和可靠。
例如,C++03引入了异常规格说明符(exception specification)的概念,它允许程序员指定函数可能抛出的异常类型。
这有助于编译器检查异常处理代码的正确性,并提高运行时的稳定性。
4.局部类(local classes)C++03标准允许在函数内部定义类,这种类被称为局部类。
局部类可以访问包含它的函数的局部变量和参数,这使得在函数内部定义辅助类更加方便。
三、库支持1.STL(Standard Template Library)改进C++03标准对STL进行了许多改进和扩展,包括容器的改进和新容器的添加。
例如,C++03引入了unordered_map和unordered_set容器,它们使用哈希表实现,提供快速的插入和查找操作。
此外,STL算法库也得到了一些改进和新算法的添加。
2.IO流库改进C++03标准改进了IO流库的语法和功能,提供了更方便的输入输出操作。
例如,C++03引入了std::wstring_convert类,用于字符编码转换;还引入了std::get_time函数,用于解析日期和时间字符串。
OScodecpp操作系统教程(第3版)教材对应的C++伪代码伪代码
/*------------------------------------------------------------------File: OScode.cpp《操作系统教程》(第3版)教材对应的C++伪代码Contents: OS description code for 《操作系统教程》(第三版)Written by: 李贤 Jan. 2004Modified by: 沈志鹏 Jan. 2004Copyright: Dept. Computer Science, Nanjing University------------------------------------------------------------------*//*------------------------------------------------------------------本代码写作的出发点为:方便用C++作为编程语言的同学学习操作系统,使得阅读代码更加容易,理解内容更加方便;同时,本代码并不完全遵循一切C++风格,编写的主旨主要为提高代码的可读性,根据最容易阅读和理解来写出伪代码;最后,代码中的变量名和操作函数名等与原书代码中所取的相同,因此本代码能与书本的相关上下文流畅地衔接。
------------------------------------------------------------------*//*----------------------Chapter 3 并发进程----------------------*///--------------------------------------------// Page 212 例1: (结果不唯一)购买飞机票问题//--------------------------------------------process Ti {i = 1,2}{{按旅客订票要求找到Aj};int Xi = Aj;if (Xi >= 1){Xi--;Aj = Xi;{输出一张票};}else{输出信息"票已售完"};}//------例1运行情况------T1: X1 = Aj; X1 = m (m > 0) T2: X2 = Aj; X2 = mT2: X2--; Aj = X2; 输出一张票; Aj = m - 1T1: X1--; Aj = X1; 输出一张票; Aj = m - 1//--------------------------------------------// Page 213 例2: (永远等待)内存管理问题//--------------------------------------------procedure borrow(int B){if (B > x){申请进程进入等待队列等主存资源};x = x - B;{修改主存分配表,申请进程获得主存资源};}procedure return(int B){x = x + B;{修改主存分配表};{释放等主存资源的进程};}cobegin{int x = Memory; // Memory为初始内存容量repeat borrow(B);repeat return(B);}coend//--------------------------------------------// Page 215 3.2.1 互斥和临界区//--------------------------------------------// 进程T1的临界区为:X1 = Aj;if (X1 >= 1){X1--;Aj = X1;}// 进程T2的临界区为:X2 = Aj;if (X2 >= 1){X2--;Aj = X2;}//--------------------------------------------// Page 216 重写的售票管理进程//--------------------------------------------shared Ajprocess Ti {i = 1, 2}{int Xi;{按旅客订票要求找到Aj};region Aj do{Xi = Aj;if (Xi >= 1){Xi--;Aj = Xi;{输出一张票};}else{输出票已售完};}}//--------------------------------------------// Page 217 3.2.2 临界区管理的尝试//--------------------------------------------// 尝试1bool inside1 = false; // P1不在其临界区内bool inside2 = false; // P2不在其临界区内cobegin{process P1{while (inside2); // 等待inside1 = true;临界区;inside1 = false;}process P2{while (inside1); // 等待inside2 = true;临界区;inside2 = false;}}coend// 尝试2bool inside1 = false; // P1不在其临界区内bool inside2 = false; // P2不在其临界区内cobegin{process P1{inside1 = true;while (inside2); // 等待临界区;inside1 = false;}process P2{inside2 = true;while (inside1); // 等待临界区;inside2 = false;}}coend//--------------------------------------------// Page 218 3.2.3 实现临界区管理的软件方法//--------------------------------------------// Dekker 算法bool inside[2] = {false, false};int turn = 1 or 2;cobegin{process P1{inside[1] = true;while (inside[2]){if (turn == 2){inside[1] = false;while (turn == 2);inside[1] = true;}}临界区;turn = 2;inside[1] = false;}process P2{inside[2] = true;while (inside[1]){if (turn == 1){inside[2] = false;while (turn == 1);inside[2] = true;}}临界区;turn = 1;inside[2] = false;}}coend//---------- Page 220 Peterson 算法---------bool inside[2] = {false, false};int turn = 1 or 2;cobegin{process P1{inside[1] = true;turn = 2;while (inside[2] && turn == 2); // 等待临界区;inside[1] = false;}process P2{inside[2] = true;turn = 1;while (inside[1] && turn == 1); // 等待临界区;inside[2] = false;}}coend//--------------------------------------------// Page 222 3.2.4 实现临界区管理的硬件设施//--------------------------------------------//-------2.测试并建立指令-------//// Page 221 TS指令的处理过程bool TS(bool x){if (x){x = false;return true;}elsereturn false;}// Page 222 TS指令实现互斥程序bool s = true;process Pi {i = 1, 2, ..., n}{bool pi;do{pi = TS(s);}while (!pi); // 上锁临界区;s = true; // 开锁}//-------3.对换指令-------//// Page 222 对换指令的处理过程void Swap(bool &a, bool &b){bool temp = a;a = b;b = temp;return;}// Page 222 对换指令实现互斥程序bool lock = false;process Pi {i = 1, 2, ..., n}{bool pi = true;do{Swap(lock, pi);}while (pi); // 上锁临界区;lock = false; // 开锁}//--------------------------------------------// Page 223 3.3.1 信号量与PV操作//--------------------------------------------// 生产者-消费者问题int k;typedef item any; // item类型item buffer[k];int in = 0, out = 0;int counter = 0;process producer{while (true) // 无限循环{{produce an item in nextp}; // 生产一个商品if (counter == k) // 缓冲满时,生产者睡眠sleep(producer);buffer[in] = nextp; // 将一个产品放入缓冲区in = (in + 1) % k; // 指针推进counter++; // 缓冲内产品数加1if (counter == 1) // 缓冲为空了,加进一件产品并唤醒消费者wakeup(consumer);}}process consumer{while (true) // 无限循环{if (counter == 0) // 缓冲区空,消费者睡眠sleep(consumer);nextc = buffer[out]; // 取一个产品到nextcout = (out + 1) % k; // 指针推进counter--; // 取走一个产品,计数减1if (counter == k - 1) // 缓冲满了,取走一件产品并唤醒生产者wakeup(producer);{consume the item in nextc}; // 消耗产品}}//--------------------------------------------// Page 225 3.3.2 记录型信号量与PV操作//--------------------------------------------// 1.整型信号量P(s){while (s <= 0);s--;}V(s){s++;}// 2.记录型信号量 Page 226typedef struct // semaphore结构类型定义{int value;list<process> queue;}semaphore;procedure P(semaphore s){s.value--; // 把信号量减去1if (s.value < 0) // 若信号量小于0,则执行P(s)的进程调用W(s.queue)进行W(s.queue); // 自我封锁,被置成等待信号量s的状态,进入信号量队列queue}procedure V(semaphore s){s.value++; // 把信号量加1if (s.value <= 0) // 若信号量小于等于0,则调用R(s.queue)从信号量s队列R(s.queue); // queue中释放一个等待信号量s的进程并置成就绪态}// 3.二元信号量 Page 227typedef struct{int value; // 0 or 1list<process> queue;}semaphore;procedure BP(semaphore s){if (s.value == 1)s.value = 0;elseW(s.queue);}procedure BV(semaphore s){if (s.queue is empty)s.value = 1;elseR(s.queue);}//--------------------------------------------// Page 227 3.3.3 用记录型信号量实现互斥//--------------------------------------------// 一般形式semaphore mutex;mutex.value = 1;cobegin{...process Pi{...P(mutex);临界区;V(mutex);...}...}coend// 记录型信号量和PV操作解决飞机票问题(程序1)int A[m];semaphore mutex;mutex.value = 1;cobegin{process Pi{int Xi;L1: {按旅客订票要求找到A[j]};P(mutex);Xi = A[j];if (Xi >= 1){Xi--;A[j] = Xi;V(mutex);{输出一张票};}else{V(mutex);{输出"票已售完"};}goto L1;}}coend// 程序2int A[m];semaphore s[m];for (int j = 0; j < m; j++)s[j].value = 1;cobegin{process Pi{int Xi;L1: {按旅客订票要求找到A[j]};P(s[j]);Xi = A[j];if (Xi >= 1){Xi--;A[j] = Xi;V(s[j]);{输出一张票};}else{V(s[j]);{输出"票已售完"};}goto L1;}}coend//--------------------------------------------// Page 229 哲学家吃通心面问题//--------------------------------------------semaphore fork[5];for (int i = 0; i < 5; i++)fork[i] = 1;cobegin{process Pi // i = 0, 1, 2, 3, 4{L1: {思考};P(fork[i]);P(fork[i + 1] % 5);{吃通心面};V(fork[i]);V(fork[i + 1] % 5);goto L1;}}coend//----------------------------------------------------// Page 230 3.3.4 记录型信号量解决生产者-消费者问题//----------------------------------------------------// 单生产者-单消费者int B;semaphore empty; // 可以使用的空缓冲区数semaphore full; // 缓冲区内可以使用的产品数empty.value = 1; // 缓冲区内允许放入一件产品full.value = 0; // 缓冲区内没有产品cobegin{process producer{L1: {Produce a product};P(empty);B = product;V(full);goto L1;}process consumer{L2: P(full);Product = B;V(empty);{Consume a product};goto L2;}}coend// m个生产者和n个消费者共享k件产品的缓冲器item B[k];semaphore empty; empty.value = k; // 可以使用的空缓冲区数semaphore full; full.value = 0; // 缓冲区内可以使用的产品数semaphore mutex; mutex.value = 1; // 互斥信号量int in = 0; // 放入缓冲区指针int out = 0; // 取出缓冲区指针cobegin{process producer_i{L1: {Produce a product};P(empty);P(mutex);B[in] = product;in = (in + 1) % k;V(mutex);V(full);goto L1;}process consumer_j{L2: P(full);P(mutex);Product = B[out];out = (out + 1) % k;V(mutex);V(empty);{Consume a product};goto L2;}}coend//--------------------------------------------// Page 232 父母子女苹果桔子消费问题//--------------------------------------------int plate;semaphore sp; // 盘子里可以放几个水果semaphore sg1; // 盘子里有桔子semaphore sg2; // 盘子里有苹果sp.value = 1; // 盘子里允许放入一个水果sg1.value = 0; // 盘子里没有桔子sg2.value = 0; // 盘子里没有苹果cobegin{process father{L1: {削一个苹果};P(sp);{把苹果放入plate};V(sg2);goto L1;}process mother{L2: {剥一个桔子};P(sp);{把桔子放入plate};V(sg1);goto L2;}process son{L3: P(sg1);{从plate中取桔子};V(sp);{吃桔子};goto L3;}process daughter{L4: P(sg2);{从plate中取苹果};V(sp);{吃苹果};goto L4;}}coend//-----------------------------------------------// Page 234 3.3.5 记录型信号量解决读者-写者问题//-----------------------------------------------int rc = 0; // 读进程计数semaphore W, mutex;W.value = 1;mutex.value = 1;procedure read{P(mutex);rc++;if (rc == 1)P(W);V(mutex);读文件;P(mutex);rc--;if (rc == 0)V(W);V(mutex);}procedure write{P(W);写文件;V(W);}process reader_i{read;}process writer_j{write;}cobegin{process reader_i;process writer_j;}coend//--------------------------------------------// Page 235 3.3.6 记录型信号量解决理发师问题//--------------------------------------------int waiting = 0; // 等候理发的顾客数int CHAIRS; // 为顾客准备的椅子数semaphore customers, barbers, mutex;customers.value = 0;barbers.value = 0;mutex.value = 0;procedure barber{while (true){P(customers); // 理完一人,还有顾客吗?若无顾客,理发师睡眠P(mutex); // 进程互斥waiting--; // 等候顾客数少一个V(barbers); // 理发师去为一个顾客理发V(mutex); // 开放临界区cut_hair(); // 正在理发}}procedure customer{P(mutex); // 进程互斥if (waiting < CHAIRS) // 看看有没有空椅子{waiting++; // 等候顾客数加1V(customers); // 必要的话唤醒理发师V(mutex); // 开放临界区P(barbers); // 理发师忙,顾客坐下等待get_haircut(); // 一个顾客坐下理发}elseV(mutex); // 人满了,走吧!}process Barber // 只有一位理发师{barber;}process Customer_i // 顾客{customer;}cobegin{process Barber;process Customer_i;}coend//--------------------------------------------// Page 237 3.4 管程//--------------------------------------------// 管程形式MONITOR <管程名><管程变量说明>define <(能被其他模块引用的)过程名列表>use <(要引用的模块外定义的)过程名列表>procedure <过程名>(<形式参数表>){<过程体>;}...procedure <过程名>(<形式参数表>){<过程体>;}init{<管程的局部数据初始化语句>;}// Page 239 管程MONITOR SSUbool busy;condition nobusy;define require, return;use wait, signal;procedure require{if (busy) // 调用进程加入等待队列wait(nobusy);busy = true;}procedure return{busy = false;signal(nobusy); // 从等待队列中释放进程}init{busy = false;}//--------------------------------------------// Page 241 3.4.2 Hoare方法实现管程//--------------------------------------------// Page 241 数据结构和操作过程typedef struct{semaphore mutex; // 进程调用管程过程前使用的互斥信号量semaphore next; // 发出signal的进程挂起自己的信号量int next_count; // 在next上等待的进程数}interf;procedure wait(semaphore x_sem, int x_count, interf IM){x_count++;if (IM.next_count > 0)V(IM.next);elseV(IM.mutex);P(x_sem);x_count--;}procedure signal(semahpore x_sem, int x_count, interf IM){if (x_count > 0){IM.next_count++;V(x_sem);P(IM.next);IM.next_count--;}}// Page 242 调用管程中过程的外部过程组成形式P(IM.mutex);<过程体>;if (IM.next_count > 0)V(IM.next);elseV(IM.mutex);// Page 242 霍尔方法实现哲学家问题// 以下两行为P242的两行说明代码enum {thinking, hungry, eating} state[5];semaphore self[5];MONITOR dining_philosophersenum {thinking, hungry, eating} state[5];semaphore self[5];int s_count[5];define pickup, putdown;use wait, signal;procedure test(int k) // k = 0, 1, ..., 4{if ((state[(k - 1) % 5] != eating) && (state[k] == hungry) && (state[(k + 1) % 5] != eating)){state[k] = eating;signal(self[k], s_count[k], IM);}}procedure pickup(int i) // i = 0, 1, ..., 4{state[i] = hungry;test(i);if (state[i] != eating)wait(self[i], s_count[i], IM);}procedure putdown(int i) // i = 0, 1, ..., 4 {state[i] = thinking;test((i - 1) % 5);test((i + 1) % 5);}init{for (int i = 0; i < 5; i++)state[i] = thinking;}cobegin{process philosopher_i{...P(IM.mutex);dining_philosophers.pickup(i);if (IM.next_count > 0)V(IM.next);elseV(IM.mutex);{吃通心面};...P(IM.mutex);dining_philosophers.putdown(i);if (IM.next_count > 0)V(IM.next);elseV(IM.mutex);...}}coend//--------------------------------------------// Page 244 3.4.3 Hanson方法实现管程//--------------------------------------------typedef struct{condition intsem; // 开放和关闭管程的条件变量int count1; // 等待调用的进程个数int count2; // 调用了管程过程中的过程且不处于等待状态的进程个数}interf;procedure wait(condition s, interf IM){s++;IM.count2--;if (IM.count1 > 0){IM.count1--;IM.count2++;R(IM.intsem);}W(s);}procedure signal(condition s, interf IM){if (s > 0){s--;IM.count2++;R(s);}}procedure check(interf IM){if (IM.count2 == 0)IM.count2++;else{IM.count1++;W(IM.intsem);}}procedure release(interf IM){IM.count2--;if (IM.count2 == 0 && IM.count1 > 0){IM.count1--;IM.count2++;R(IM.intsem);}}// Hanson实现例1: 读者写者问题MONITOR reader_writerint rc, wc;condition R, W;define start_read, end_read, start_write, end_write; use wait, signal, check, release;procedure start_read{check(IM);if (wc > 0)wait(R, IM);rc++;signal(R, IM);release(IM);}procedure end_read{check(IM);rc--;if (rc == 0)signal(W, IM);release(IM);}procedure start_write{check(IM);wc++;if (rc > 0 || wc > 1)wait(W, IM);release(IM);}procedure end_write{check(IM);wc--;if (wc > 0)signal(W, IM);elsesignal(R, IM);release(IM);}init{rc = 0;wc = 0;R = 0;W = 0;}cobegin{process reader{...reader_writer.start_read;...read;...reader_writer.end_read;...}process writer{...reader_writer.start_write;...write;...reader_writer.end_write;...}}coend//--------------------------------------------// Page 248 例2 父母子女水果问题//--------------------------------------------MONITOR FMSDenum FRUIT{apple, orange} plate;bool full;condition SP, SS, SD;define put, get;use wait, signal, check, release;procedure put(FRUIT fruit) // fruit: apple or orange {check(IM);if (full)wait(SP, IM);full = true;plate = fruit;if (fruit == orange)signal(SS, IM);elsesignal(SD, IM);release(IM);}procedure get(FRUIT fruit, FRUIT x) {check(IM);if (!full || plate != fruit){if (fruit == orange)wait(SS, IM);elsewait(SD, IM);}x = plate;full = false;signal(SP, IM);release(IM);}init{full = false;SP = 0;SS = 0;SD = 0;}cobegin{process father{...{准备好苹果};FMSD.put(apple);...}process mother{...{准备好桔子};FMSD.put(orange);...}process son{...FMSD.get(orange, x);{吃取到的桔子};...}process daughter{...FMSD.get(apple, x);{吃取到的苹果};...}}coend//--------------------------------------------// Page 250 例3 生产者消费者问题//--------------------------------------------MONITOR producer_consumeritem B[k]; // 缓冲区个数int in, out; // 存取指针int count; // 缓冲中产品数condition notfull, notempty; // 条件变量define append, take;use wait, signal, check, release;procedure append(item x){check(IM);if (count == k) // 缓冲已满wait(notfull, IM);B[in] = x;in = (in + 1) % k;count++; // 增加一个产品signal(notempty, IM); // 唤醒等待者release(IM);}procedure take(item x){check(IM);if (count == 0)wait(notempty, IM); // 缓冲已空x = B[out];out = (out + 1) % k;count--; // 减少一个产品signal(notfull, IM); // 唤醒等待者release(IM);}init{in = 0;out = 0;count = 0;}cobegin{process producer{item x;produce(x);append(x);}process consumer{item x;take(x);consume(x);}}coend//--------------------------------------------// Page 259 3.5.4 消息传递通信机制//--------------------------------------------typedef struct{int size; // 信箱大小int count; // 现有信件数message letter[n]; // 信箱semaphore S1, S2; // 等信箱和等信件信号量}box;procedure send(box B, message M){int i;if (B.count == B.size)W(B.S1);i = B.count;B.letter[i] = M;B.count = i + 1;R(B.S2);}procedure receive(box B, message x){int i;if (B.count == 0)W(B.S2);B.count--;x = B.letter[0];if (B.count != 0){for (i = 0; i < B.count; i++)B.letter[i] = B.letter[i + 1];}R(B.S1);}int capacity; // 缓冲大小int i;procedure producer{message pmsg;while (true){pmsg = produce; // 生产消息receive(mayproduce, pmsg); // 等待空消息{build message}; // 构造一条消息send(mayconsume, pmsg); // 发送消息}}procedure consumer{message cmsg;while (true){receive(mayconsume, cmsg); // 接受消息{extract message}; // 取消息send(mayproduce, NULL); // 回送空消息consume(cmsg); // 消耗消息}}main() // 主程序{create_mailbox(mayproduce); // 创建信箱create_mailbox(mayconsume);for (int i = 1; i <= capacity; i++)send(mayproduce, NULL); // 发送空消息cobegin{producer;consumer;}coend}//--------------------------------------------// Page 275 3.6.4 死锁 banker's algorithm//--------------------------------------------typedef struct{int resource[m];int available[m];int claim[m];int allocation[m];}state;resource_allocation // 资源分配算法{if (alloc[i, *] + request[*] > claim[i, *]){error}; // 申请量超过最大需求值else{if (request[*] > available[*]){suspend process.};else< define newstate by:allocation[i, *] = allocation[i, *] + request[*];available[*] = available[*] - request[*]; >;if (safe(newstate))< carry out allocation>;else{< restore original state >;< suspend process >;}}}bool safe(state s) // 安全性测试算法{int currentavail[m];set<process> rest;currentavail = available;rest = {all process};possible = true;while (possible){< find a Pk in rest such thatclaim[k, *] - allocation[k, *] <= currentavail; >if (found){currentavail = currentavail + allocation[k, *];rest = rest - [Pk];}elsepossible = false;}safe = rest = NULL;}/*----------------------Chapter 4 存储管理----------------------*///--------------------------------------------// Page 338 4.5.2 5.页面替换策略//--------------------------------------------int A[128][128];for (int j = 0; j < 128; j++)for (int i = 0; i < 128; i++)A[i][j] = 0;int A[128][128];for (int i = 0; i < 128; i++)for (int j = 0; j < 128; j++)A[i][j] = 0;/*---------------------------Chapter 8 分布式操作系统---------------------------*///--------------------------------------------// Page 660 8.3.4 Lamport算法//--------------------------------------------typedef struct{enum {application, reply, release} class; // 消息分申请消息、回答消息和释放消息int source = 1, ..., n; // 发消息进程编号int timestamp; // 消息上加盖的时间戳int clock; // 发消息时的时间戳bool valid; // 取真值时消息有效}message;// 每个进程都定义了下列变量和过程int T = 1; // 逻辑时间,初值为1message applicationstack[n]; // 1, ..., n 来自各进程的申请消息,开始全为无效消息int replycount; // 0, ..., n-1 回答消息计数procedure Apply // 申请资源时调用此过程{int i;message M;M.class = application; // 准备申请消息M.source = me; // me为本进程编号M.timestamp = T; // 填时间戳M.valid = true;T++;applicationstack[me] = M; // 消息也存入自己的消息数组replycount = n - 1; // 拟等待n - 1个进程的发来回答消息for (i = 1; i <= n; i++){M.clock = T;T++;if (i != me)send(M, i); // 申请消息发给进程i,且不等待}waitfor(Replycount = 0); // 等所有回答消息,应为n - 1个for (i = 1; i <= n; i++) // 辨别消息数组中时间戳的先后waitfor(not Applicationstack[i] -> Applicationstack[me]);// 关系"->"表示前者是有效消息,且前者排在后者之前get resource; // 可以使用资源了}procedure Receive(message M) // 进程空闲时,或处于waitfor等待态时才{ // 调用此过程来接受消息message R;T = 1 + max(M.clock, T);switch(M.class){case application:applicationstack[source] = M;R.class = reply;R.source = me;R.clock = T;T++;send(R, resource); // 发回答消息给申请者break;case reply:replycount--;break;case release:applicationstack[source].valid = false;break;}}procedure Release // 释放资源时,调用此过程{int i;message R;R.class = release;R.source = me;R.clock = T;T++;applicationstack[me].valid = false;for (i = 1; i <= n; i++)if (i != me)send(M, i); // 向其他进程发释放消息}//--------------------------------------------// Page 662 G.Ricart算法//--------------------------------------------typedef struct{enum {application, reply} class; // 消息分申请消息、回答消息int source = 1, ..., n; // 发消息进程编号int timestamp; // 消息上加盖的时间戳}message;int T; // 逻辑时间,初值为1int Applicationtime; // 发申请消息时刻bool Replydeffered[n]; // 如果i号进程申请资源,本进程暂不回答, // 则置Replydefered[i]为真,初值为假int Replycount; // 回答消息计数bool Requesting; // 申请资源时取真procedure Apply // 申请资源时调用此过程,执行后即获得资源{message M;M.class = application;M.timestamp = T;M.source = me;applicationtime = T;T++;requesting = true;replycount = n - 1;broadcast(M); // 发广播申请消息waitfor(replycount = 0); // 等待直到replycount = 0}procedure Receive(message M) // 进程空闲时,或处于waitfor等待态时,{ // 才可调用此过程来接受消息switch(M.class){case application:// 接到source的申请消息后,决定要否延迟发回答消息replydeffered[source] = requesting and ((timestamp > applicationtime)or (timestamp = applicationtime and source > me));T = 1 + max(T, timestamp);if (!replydeffered[source])sendreply(source); // 回答消息发给sourcebreak;case reply:replycount--;break;}}procedure Release // 释放资源时,调用此过程{int i;for (i = 1; i <= n; i++){if (replydeffered[i]){replydeffered[i] = false;sendreply(i); // 发释放消息}requesting = false;}}。
μC/OS—Ⅲ在Cortex—M3处理器上的移植
_
2 2 3 编 写 O ~ p C .c .. Sc u
OS
—
c u C C文 件 包 含 了 OS s S k nt ) p —. Ta k t I i 函数 和若 干 (
钩 子 函数 。OS s S k nt ) Ta k t l i 函数 的 作 用 是 在 创 建 任 务 时 ( 初 始 化 任 务 栈 , 返 回 新 的 栈 顶 位 置 。 C OS—II 于 并 / I基 C re o tx—M3的 任 务 栈 结 构 如 图 1所 示 。 其 中 P R、 C、 S P L R1 R R、 、 0五 个 寄 存 器 应 赋 予 正 确 的 初 值 , 其 他 1 而 1个 寄 存 器 的 初 值 无关 重 要 。
_薯t
。 囊 囊
a / c os—II C re I 在 o tx—M3处 理 器 上 的 移 植
李承创 。 陈跃 斌 , 晓丽 , 兵 房 王
( 南 民族 大学 电 气 信 息工 程 学 院 , 明 6 0 3 ) 云 昆 5 0 1
摘 要 :为 了将 u / S—I 移 植 到 C re CO I I otx—M3处 理 器上 , 用 R aViw MDK作 为软件 开发 平 台 , 对 C re —M3处 理 器 选 el e 针 otx 特 性 编 写 了移植 所 需的 C语 言和 汇 编语 言 源代码 , 验 证 了移 植 的 正确 性 。移植 后 的 u / s—II 够稳 定 运行 于 C r x 并 co I能 ot e
控 制 器 作 为 硬 件 实 验 平 台 , 编 译 环 境 采 用 Re l e 而 aViw
专用集成电路Assignment+3
Assignment 3ing HSPICE and TSMC 0.18 µm CMOS technology model with 1.8 V power supply, plotthe subthreshold current I DSUB versus V BS, and the saturation current I DSAT versus V BS for an NMOS device with W=400 nm and L=200 nm. Specify the range for V BS as 0 to –2.0 V.Explain the results.Vgs=Vds=0.2VVgs=1.8V,Vds=14V从上面两个图可以看出,随着|V BS|的增大,I D在减小.原因可能是一部分V GS用来去抵消V BS,所以用来产生感生沟道的电压变小,导致导电沟道变窄,所以漏极电流会变小.代码1:(截止区)* SPICE INPUT FILE: Bsim3demol5.sp ID-VBS.param supply=1.8 *set value of Vdd.lib 'c:\synopsys\Hspice_D-2010.03-SP1\mm018.l' TT * set 0.18um library.opt scale=0.1u * set lambda*.model nch NMOS level=49mn drainn gaten Gnd bodyn nch l=2 w=4 ad=20 pd=4 as=20 ps=4Vdd Vdd 0 'Supply'Vdsn drainn 0 0.2Vgsn gaten 0 0.2Vbsn bodyn Gnd 'Supply'.dc Vbsn 0 -2.0 -0.05.print dc I1(mn).end代码1:(饱和区)* SPICE INPUT FILE: Bsim3demol5.sp ID-VBS.param supply=1.8 *set value of Vdd.lib 'c:\synopsys\Hspice_D-2010.03-SP1\mm018.l' TT * set 0.18um library.opt scale=0.1u * set lambda*.model nch NMOS level=49mn drainn gaten Gnd bodyn nch l=2 w=4 ad=20 pd=4 as=20 ps=4Vdd Vdd 0 'Supply'Vdsn drainn 0 14Vgsn gaten 0 1.8Vbsn bodyn Gnd 'Supply'.dc Vbsn 0 -2.0 -0.05.print dc I1(mn).ending HSPICE and TSMC 0.18 um CMOS technology model with 1.8 V power supply, plotlog I DS versus V GS while varying V DS for an NMOS device with L=200 nm, W=800 nm and a PMOS with L=200 nm, W= 2 µm. Which device exhibits more DIBL(Drain-Induced Barrier Lowering)? Why do PMOS transistors typically have a higher V T than NMOS transistors?阈值电压和以下几个因素有关:栅电极材料类型,栅氧化层厚度,衬底掺杂浓度,栅氧化层层中的电荷密度等相关,一般工艺中N/P MOS的栅氧化层厚度tox都是相同的,栅电极材料类型也相同,栅氧化层层中的电荷密度也相同,但是衬底浓度却不一样,NMOS直接做在Psub外延P-epi上面,而PMOS 做在P-epi的NWELL上面,所以NWELL的杂志浓度比P-epi跟大一些,衬底浓度越大,对应MOS管的阈值电压也越大,所以一般PMOS的阈值电压都要比NMOS要更大一些。
7300C Series Manual
1551 S. Harris Court,Anaheim, CA 92806Phone: 714.978.1551 Fax: 714.978.0431Model 7300C Series: Single Head Die Bonders, Manual X-Y-ZLast revised: 09/19/18 - microscopeSeries OverviewApplication and Function:Machines of this series enable die attach by the eutectic with mechanical scrub method.Each of the three primary functions of picking, placing and scrubbing, of both the pre-form and die, are performed with a single tool head. Precise tool motions in all three axes are operator driven by a single lever micro-manipulator, which also triggers switching between vacuum pick-up and scrub sequences. Work piece pick-up and place areas are moved into position alternately by sliding the workholder on the work platform. A delay before scrub can be programmed as needed.Programming and Interface:All machine configuration constants are programmable at the machine panel, prompted by a series of "screens" displayed on an LCD. Input is via a combination of selector switch and tool vertical position, measured by encoder. These values together with sequence status are displayed during bonding.Definitions of Models of this Series7300C Ultrasonic Scrub, Single Collet Eutectic Die Bond MachineValues are programmed for scrub time and ultrasonic power.7312C Motorized Scrub, Single Collet, Hot Gas, Eutectic Die Bond MachineWork is heated locally with a stream of forming gas prior to scrub. Values areprogrammed for scrub velocity, distance, direction and number of cycles.Alternately, manual scrub mode can be chosen.7316C Motorized Scrub, Single Collet Eutectic Die Bond MachineValues are programmed for scrub velocity, distance, direction and number ofcycles.7327C Motorized Scrub, Hexa-Collet Eutectic Die Bond MachineSix different die collets are held on the tool head simultaneously. Advance tosuccessive die collets is by pushbutton switch on the manipulator control.Values are programmed for scrub velocity, distance, direction and number ofcycles.Features Available for this Series-43B:Superimposed Microscope Attached Reference TargetA visual reference is added to the microscope view to aid the precisionplacement of die. Custom reference targets are available on request throughseparate order.-72E:External View TV CameraColor external view TV camera with magnification adjustment within a range of30X to 55X. Flat screen monitor & power supply included.-79:Adjustable Height Work PlatformWork platform with adjustable height for variable package thickness.-81:Adjustable Height Work Platform with Planarity ControlWork platform with adjustable height for variable package thickness and threepoint adjustment control of work surface planarity. (recommended) MechanicalScrub Action:7300CAll others Y axis; programmableultrasonic; 63 kHz nominal; up to 5 Watts; scrub time up to 999 ms.motor driven; cycles up to 50; velocity settings from 1 to 20; stroke from +/-.001” to +/-.020”; settable for forward scrub, rearward scrub or bothBond Force:7300C7312C7316C, 7327C manually adjustable 10 – 130 grams5 – 100 grams10 – 75 gramsBond Tool:DiameterLength fitted die collet1/16” (7300C, 7316C & 7327C)1/8” (7312C and available on special order; 7316C & 7327C) 0.625” (7300C & 7316C)0.750” (7312C)0.4375” (7327C)Tool Heat: adjustable radiant heater w/ steady state control (not available on 7327C) Forming Gas:Flow gauge0 – 10 Standard Cubic Feet per Hour1/8” FNPT fittingsTool Gas:Flow gaugeDeliveryHeat (7312C only)0 – 10 Standard Cubic Feet per Hour1/8” FNPT fittingsswitched by software; regulating valve provided adjustable on Low setting; High setting fixed at maximumX/Y/Z Manipulator:X axisY axisZ axisZ encoder Brakes Balance pivoted motion; 8 : 1 reduction (7:1; 7312C); 0.625” travel (0.704”; 7312C) linear motion; 8 : 1 reduction; 0.625” travelpivoted motion; 3 : 1 reduction (2.6:1; 7312C); 0.688” travel (0.804”; 7312C) 0.001” resolutionY & Z axes; during scrub sequencecounterweighted & sprung; biased away from workWork Elevation: 5.000” nominal above tabletopWork Platform:Height Attachment (standard)***********”belownominalworkelevation (available)****************”aboveto0.531”belowfixedheight bolt onElectrical Software and HardwareProcess Control:West·Bond Part No. 8100 CPU w/ Motorola 68000 microprocessor, 256 KB ofnonvolatile RAMProgram Buffers: 6 total for each of the scrub parameters (10 total; 7300C & 7312C)Display:4-line, 40-character LCDZ encoder:measured down from home positionESD ProtectionProtection against Electrostatic Discharge is implemented by finishing exposed toolassemblies and other moving parts by Electroless Nickel plating, which is conductive; and allexposed painted parts with a powder-coated paint that is dissipative (1 - 10 MΩ).Machine ConfigurationMicroscope:Olympus SZ51-60E (recommended; not included)Illumination:“Luxuray” #10265 (recommended; not included)Die Collet:should be ordered directly from tool manufacturers (not included)Work Holder:workholders are not included, and are priced separately. Quite a large number of previously designed special work holders, both heated and unheated, areavailable for selection from the Work holders Product List on our Website: Thosewith Status of Current can be selected for delivery in the same time span as themachine, while those of Status Available Not Stocked must be orderedseparately. Workholders for new work pieces requiring custom design andfabrication will be quoted upon receipt of drawings and samples: These must beordered on separate purchase orders.TemperatureController:West·Bond K~1200D (recommended; not included)Services RequiredCompressed Air:50 psi, dryregulating valve & pressure gauge providedForming Gas:30 psi, dry; for Tool Hot Gas and Air Puff (7312C only)Vacuum:shop vacuum (3 – 25 in/Hg)Electrical:50-60 Hz, single-phase, either 115 VAC or 230 VAC; selected automatically. Afuse and three-prong power cord connector is provided for 115 VAC: For 230VAC, these must be changed to conform to local requirements.Weights & DimensionsUncrated:51 lbs; w/o platform57 lbs; w/ standard platform67 lbs; w/ adjustable platformCrated:120 lbs; w/ accessories OverallDimensions:WidthDepthHeight 20.12” (21.37”; 7312C)29.05” (29.92” ; 7312C)11.66” w/o microscope (11.69” ; 7312C)Dimensional Drawings Side ViewModel 7300C, 7316C & 7327CModel 7312CModel 7300C, 7316C & 7327CModel 7312C。
CGSS2003 codebook
数据文件变量列表变量名问卷题号变量涵义封页id 1 问卷编号province 2.1 采访地点:省/直辖市county 2.3 采访地点:县/县级市/(市的)区township 2.4 采访地点:街道/镇neighbcm 2.5 采访地点:居委会commtype 3 被访者居住的社区类型sitetype 4 调查所在地属于A. 住户成员sex A2(1) 被访者性别birth A3(1) 被访者出生年份ethnic A4(1) 被访者民族hktype A5(1) 被访者户口性质hksite A6(1) 被访者常住户口所在地act A7(1)被访者目前主要在做什么employ A8(1) 被访者过去三个月中的主要就业状况f_sex A2(2) 被访者父亲性别f_birth A3(2) 被访者父亲出生年份f_ethnic A4(2) 被访者父亲民族f_hktype A5(2) 被访者父亲户口性质f_hksite A6(2) 被访者父亲常住户口所在地f_act A7(2) 被访者父亲目前主要在做什么f_employ A8(2) 被访者父亲过去三个月中的主要就业状况f_livehh A9(2) 被访者父亲是否居住在本户中m_sex A2(3) 被访者母亲性别m_birth A3(3) 被访者母亲出生年份m_ethnic A4(3) 被访者母亲民族m_hktype A5(3) 被访者母亲户口性质m_hksite A6(3) 被访者母亲常住户口所在地m_act A7(3) 被访者母亲目前主要在做什么m_employ A8(3) 被访者母亲过去三个月中的主要就业状况m_livehh A9(3) 被访者母亲是否居住在本户中s_sex A2(4) 被访者配偶性别s_birth A3(4) 被访者配偶出生年份s_ethnic A4(4) 被访者配偶民族s_hktype A5(4) 被访者配偶户口性质s_hksite A6(4) 被访者配偶常住户口所在地s_act A7(4) 被访者配偶目前主要在做什么s_employ A8(4) 被访者配偶过去三个月中的主要就业状况s_livehh A9(4) 被访者配偶是否是居住在本户中变量名问卷题号变量涵义relat05 A1(5) 家庭第5人:与被访者关系sex05 A2(5) 家庭第5人:性别birth05 A3(5) 家庭第5人:出生年份ethnic05 A4(5) 家庭第5人:民族hktype05 A5(5) 家庭第5人:户口性质hksite05 A6(5) 家庭第5人:常住户口所在地act05 A7(5) 家庭第5人:目前主要在做什么employ05 A8(5) 家庭第5人:过去三个月中的主要就业状况relat06 A1(6) 家庭第6人:与被访者关系sex06 A2(6) 家庭第6人:性别birth06 A3(6) 家庭第6人:出生年份ethnic06 A4(6) 家庭第6人:民族hktype06 A5(6) 家庭第6人:户口性质hksite06 A6(6) 家庭第6人:常住户口所在地actvty06 A7(6) 家庭第6人:目前主要在做什么employ06 A8(6) 家庭第6人:过去三个月中的主要就业状况relat07 A1(7) 家庭第7人:与被访者关系sex07 A2(7) 家庭第7人:性别birth07 A3(7) 家庭第7人:出生年份ethnic07 A4(7) 家庭第7人:民族hktype07 A5(7) 家庭第7人:常住户口性质hksite07 A6(7) 家庭第7人:户口所在地act07 A7(7) 家庭第7人:目前主要在做什么employ07 A8(7) 家庭第7人:过去三个月中的主要就业状况relat08 A1(8) 家庭第8人:与被访者关系gender08 A2(8) 家庭第8人:性别yrborn08 A3(8) 家庭第8人:出生年份ethnic08 A4(8) 家庭第8人:民族hktype08 A5(8) 家庭第8人:户口性质hksite08 A6(8) 家庭第8人:常住户口所在地actvty08 A7(8) 家庭第8人:目前主要在做什么employ08 A8(8) 家庭第8人:过去三个月中的主要就业状况relat09 A1(9) 家庭第9人:与被访者关系sex09 A2(9) 家庭第9人:性别birth09 A3(9) 家庭第9人:出生年份ethnic09 A4(9) 家庭第9人:民族hktype09 A5(9) 家庭第9人:户口性质hksite09 A6(9) 家庭第9人:常住户口所在地act09 A7(9) 家庭第9人:目前主要在做什么employ09 A8(9) 家庭第9人:过去三个月中的主要就业状况relat10 A1(10) 家庭第10人:与被访者关系sex10 A2(10) 家庭第10人:性别birth10 A3(10) 家庭第10人:出生年份ethnic10 A4(10) 家庭第10人:民族hktype10 A5(10) 家庭第10人:户口性质hksite10 A6(10) 家庭第10人:常住户口所在地变量名问卷题号变量涵义act10 A7(10) 家庭第10人:目前主要在做什么employ10 A8(10) 家庭第10人:过去三个月中的主要就业状况B. 个人基本情况marital B1 您的婚姻状况是yrwed B2 您结婚的时间是哪一年(指初婚时间)educ B3 您的教育程度:appparty B4a(1) 您是否申请过共产党party B4a(2) 您是否加入过共产党yrparty B4a(3) 您加入共产党的年份是appdemoc B4b(1) 您是否申请过民主党派democ B4b(2) 您是否加入过民主党派yrdemoc B4b(3) 您加入民主党派的年份是wkhrs B5 您每周用于工作的时间大约是frqcustm B6a 在工作中,您与顾客/服务对象打交道的频繁程度是frqclint B6b 在工作中,您与客户/供应商打交道的频繁程度是frqvisit B6c 在工作中,您与各种来客打交道的频繁程度是frqupper B6d 在工作中,您与上级领导打交道的频繁程度是frqlower B6e 在工作中,您与下级同事打交道的频繁程度是frqsame B6f 在工作中,您与平级同事打交道的频繁程度是frqupdep B6g 在工作中,您与上级部门/单位打交道的频繁程度是frqlwdep B6h 在工作中,您与下级部门/单位打交道的频繁程度是frqothr B6i 在工作中,您与其他单位打交道的频繁程度是yrwkunit B7a 您单位或公司成立的时间是industry B7b 您单位或公司所属行业noemp B7c 您单位现有干部、职工的总人数大约是pubmed B8a 您所在单位/公司是否为您提供公费医疗basicmed B8b 您所在单位/公司是否为您提供基本医疗保险supplmed B8c 您所在单位/公司是否为您提供补充医疗保险basicold B8d 您所在单位/公司是否为您提供基本养老保险supplold B8e 您所在单位/公司是否为您提供补充养老保险unempins B8f 您所在单位/公司是否为您提供失业保险housing B8g 您所在单位/公司是否为您提供住房或补贴othrjob B9 除了您刚才所说的主要职业以外,您还从事其他有收入的工作的个数incmonth B10a 上个月,您个人所获得的总收入是incyear B10b 2002年全年的总收入是satisjob B11 总的来说,您对目前的工作是否满意C. 户口变动hkmig C1a(1) 到目前为止,被访者经历过几次户口迁移r2u C1b(1)被访人是否经历过“农转非”rsnr2u C1c(1) 被访人“农转非”的原因f_hkmig C1a(2) 到目前为止,被访者父亲经历过几次户口迁移f_r2u C1b(2) 被访者父亲是否经历过“农转非”f_rsnr2u C1c(2) 被访者父亲“农转非”的原因m_hkmig C1a(3) 到目前为止,被访者母亲经历过几次户口迁移变量名问卷题号变量涵义m_r2u C1b(3) 被访者母亲是否经历过“农转非”m_rsnr2u C1c(3) 被访者母亲“农转非”的原因s_hkmig C1a(4) 到目前为止,被访者配偶经历过几次户口迁移s_r2u C1b(4) 被访者配偶是否经历过“农转非”s_rsnr2u C1c(4) 被访者配偶“农转非”的原因yrmig1 C2a(1) 您本人的户口第1次“异地迁移”的时间outmig1 C2b(1) 您本人的户口第1次“异地迁移”迁出地社区属于inmig1 C2c(1) 您本人的户口第1次“异地迁移”迁入地社区属于rsnmig1 C2d(1) 您本人的户口第1次“异地迁移”原因yrmig2 C2a(2) 您本人的户口第2次“异地迁移”的时间outmig2 C2b(2) 您本人的户口第2次“异地迁移”迁出地社区属于inmig2 C2c(2) 您本人的户口第2次“异地迁移”迁入地社区属于rsnmig2 C2d(2) 您本人的户口第2次“异地迁移”原因yrmig3 C2a(3) 您本人的户口第3次“异地迁移”的时间outmig3 C2b(3) 您本人的户口第3次“异地迁移”迁出地社区属于inmig3 C2c(3) 您本人的户口第3次“异地迁移”迁入地社区属于rsnmig3 C2d(3) 您本人的户口第3次“异地迁移”原因yrmig4 C2a(4) 您本人的户口第4次“异地迁移”的时间outmig4 C2b(4) 您本人的户口第4次“异地迁移”迁出地社区属于inmig4 C2c(4) 您本人的户口第4次“异地迁移”迁入地社区属于rsnmig4 C2d(4) 您本人的户口第4次“异地迁移”原因yrmig5 C2a(5) 您本人的户口第5次“异地迁移”的时间outmig5 C2b(5) 您本人的户口第5次“异地迁移”迁出地社区属于inmig5 C2c(5) 您本人的户口第5次“异地迁移”迁入地社区属于rsnmig5 C2d(5) 您本人的户口第5次“异地迁移”原因D. 家庭情况f_educ D1a(1) 被访者18岁时父亲的教育程度f_poltc D1b(1) 被访者18岁时父亲的政治面貌cco2k_f D1c(1) 被访者18岁时父亲的职业:2000年CSCO编码f_wkunit D1d(1) 被访者18岁时父亲的工作单位性质f_unitrk D1e(1) 被访者18岁时父亲工作单位的主管部门的级别m_educ D1a(2) 被访者18岁时母亲的教育程度m_poltc D1b(2) 被访者18岁时母亲的政治面貌cco2k_m D1c(2) 被访者18岁时母亲的职业:2000年CSCO编码m_unit D1d(2) 被访者18岁时母亲工作单位性质m_unitrk D1e(2) 被访者18岁时母亲工作单位的主管部门的级别s_educ D1a(3) 被访者配偶的教育程度s_poltc D1b(3) 被访者配偶的政治面貌cco2k_s D1c(3) 被访者配偶的职业:2000年CSCO编码s_unit D1d(3) 被访者配偶的工作单位性质s_unitrk D1e(3) 被访者配偶工作单位的主管部门的级别hhtype D1f 被访者的家庭类型hsowner D2 您现住房的产权和租赁情况是whoownhs D3 您现在住房的房产证或购房、租赁合同在谁的名下yrhs D4a 现住房大约建于哪个年代变量名问卷题号变量涵义floorsq D4b(1) 现住房的建筑面积usablesq D4b(2) 现住房的使用面积bedrm D4b(3) 现住房室的个数sitrm D4b(4) 现住房厅的个数bathrm D4b(5) 现住房卫生间的个数valuehs D4c 按当地现在的市场行情,请估计下现住房大约值多少othrhs D5 除了现住房外,您家在别处还拥有几处具有部分或全部产权的住房othrhssq D6 其他各处住房的建筑面积共有多少平方米othrhsvl D7 按当地的市场行情,其他各处住房大约共值多少元hhsize D8 您家共有几口人hhyrinc D9 2002全年家庭各种收入总和basicexp D10a 您家每月基本生活费大约是多少元medexpyr D10b 您家去年全年医疗费大约是多少元notv D11(1) 您家拥有的下列各项耐用消费品的数量:彩电数量noaircon D11(2) 您家拥有的下列各项耐用消费品的数量:空调数量novideoc D11(3) 您家拥有的下列各项耐用消费品的数量:摄像机数量nocomput D11(4) 您家拥有的下列各项耐用消费品的数量:计算机数量nocar D11(5) 您家拥有的下列各项耐用消费品的数量:家用轿车数量nopiano D11(6) 您家拥有的下列各项耐用消费品的数量:钢琴数量soelvl D12 按2002年的收支情况,您家的生活水平在本地大体属于哪个层次classyn D13(1) 您是否认为,根据一般的家庭综合社会经济地位,社会可以划分为“1.上层、2.中上层、3.中层、4.中下层、5.下层”等几个阶层class D13(2) 您家在本地大体属于哪个层次schyn D14(1) 在最近10年中,您的直系亲属中是否有人在上学sponsyn D14(2) 除了国家或地方统一规定的学费以外,您家是否为他们的上学交过赞助费/自费或择校费feeyr1 D14a(1) 第1次:上学赞助费交费时间schrel1 D14b(1) 第1次:交赞助费的上学者与被访者关系schlvl1 D14c(1) 第1次:交上学赞助费的上学者的教育阶段schtype1 D14d(1) 第1次:交上学赞助费的学校类型rsnsch1 D14e(1) 第1次:上学赞助费交费原因fee1 D14f(1)第1次:上学赞助费数额feeyr2 D14a(2) 第2次:上学赞助费交费时间schrel2 D14b(2) 第2次:交赞助费的上学者与被访者关系schlvl2 D14c(2) 第2次:交上学赞助费的上学者的教育阶段schtype2 D14d(2) 第2次:交上学赞助费的学校类型rsnsch2 D14e(2) 第2次:上学赞助费交费原因fee2 D14f(2)第2次:上学赞助费数额feeyr3 D14a(3) 第3次:上学赞助费交费时间schrel3 D14b(3) 第3次:交赞助费的上学者与被访者关系schlvl3 D14c(3) 第3次:交上学赞助费的上学者的教育阶段schtype3 D14d(3) 第3次:交上学赞助费的学校类型rsnsch3 D14e(3) 第3次:上学赞助费交费原因fee3 D14f(3)第3次:上学赞助费数额feeyr4 D14a(4) 第4次:上学赞助费交费时间schrel4 D14b(4) 第4次:交赞助费的上学者与被访者关系schlvl4 D14c(4) 第4次:交上学赞助费的上学者的教育阶段变量名问卷题号变量涵义schtype4 D14d(4) 第4次:交上学赞助费的学校类型rsnsch4 D14e(4) 第4次:上学赞助费交费原因fee4 D14f(4)第4次:上学赞助费数额feeyr5 D14a(5) 第5次:上学赞助费交费时间schrel5 D14b(5) 第5次:交赞助费的上学者与被访者关系schlvl5 D14c(5) 第5次:交上学赞助费的上学者的教育阶段schtype5 D14d(5) 第5次:交上学赞助费的学校类型rsnsch5 D14e(5) 第5次:上学赞助费交费原因fee5 D14f(5)第5次:上学赞助费数额E. 社会交往nodn E1 被访者提出的交往对象全部人名的数目dntopic1 E1a(1) 交往第一人:您与他主要讨论哪方面问题dnwho1 E1b(1) 交往第一人:他是您的什么人dnsex1 E1c(1) 交往第一人:他的性别dnage1 E1d(1) 交往第一人:他的年龄dneduc1 E1e(1) 交往第一人:他的教育程度cco2k_a E1f(1) 交往第一人:他的职业(2000年CSCO编码)dnunit1 E1g(1) 交往第一人:他的工作单位/公司性质dnmanag1 E1h(1) 交往第一人:他在工作中承担的管理工作的级别dnfrq1 E1i(1) 交往第一人:在过去半年内与他聊天或娱乐的频繁程度dntopic2 E1a(2) 交往第二人:您与他主要讨论哪方面问题dnwho2 E1b(2) 交往第二人:他是您的什么人dnsex2 E1c(2) 交往第二人:他的性别dnage2 E1d(2) 交往第二人:他的年龄dneduc2 E1e(2) 交往第二人:他的教育程度cco2k_b E1f(2) 交往第二人:他的职业(2000年CSCO编码)dnunit2 E1g(2) 交往第二人:他的工作单位/公司性质dnmanag2 E1h(2) 交往第二人:他在工作中承担的管理工作的级别dnfrq2 E1i(2) 交往第二人:在过去半年内与他聊天或娱乐的频繁程度dntopic3 E1a(3) 交往第三人:您与他主要讨论哪方面问题dnwho3 E1b(3) 交往第三人:他是您的什么人dnsex3 E1c(3) 交往第三人:他的性别dnage3 E1d(3) 交往第三人:他的年龄dneduc3 E1e(3) 交往第三人:他的教育程度cco2k_c E1f(3) 交往第三人:他的职业(2000年CSCO编码)dnunit3 E1g(3) 交往第三人:他的工作单位/公司性质dnmanag3 E1h(3) 交往第三人:他在工作中承担的管理工作的级别dnfrq3 E1i(3) 交往第三人:在过去半年内与他聊天或娱乐的频繁程度dntopic4 E1a(4) 交往第四人:您与他主要讨论哪方面问题dnwho4 E1b(4) 交往第四人:他是您的什么人dnsex4 E1c(4) 交往第四人:他的性别dnage4 E1d(4) 交往第四人:他的年龄dneduc4 E1e(4) 交往第四人:他的教育程度cco2k_d E1f(4) 交往第四人:他的职业(2000年CSCO编码)dnunit4 E1g(4) 交往第四人:他的工作单位/公司性质变量名问卷题号变量涵义dnmanag4 E1h(4) 交往第四人:他在工作中承担的管理工作的级别dnfrq4 E1i(4) 交往第四人:在过去半年内与他聊天或娱乐的频繁程度dntopic5 E1a(5) 交往第五人:您与他主要讨论哪方面问题dnwho5 E1b(5) 交往第五人:他是您的什么人dnsex5 E1c(5) 交往第五人:他的性别dnage5 E1d(5) 交往第五人:他的年龄dneduc5 E1e(5) 交往第五人:他的教育程度cco2k_c E1f(5) 交往第五人:他的职业(2000年CSCO编码)dnunit5 E1g(5) 交往第五人:他的工作单位/公司性质dnmanag5 E1h(5) 交往第五人:他在工作中承担的管理工作的级别dnfrq5 E1i(5) 交往第五人:在过去半年内与他聊天或娱乐的频繁程度acqu01 E2(01) 本人与第一人相熟程度acqu02 E2(02) 本人与第二人相熟程度acqu12 E2(12) 第一人与第二人相熟程度acqu03 E2(03) 本人与第三人相熟程度acqu13 E2(13) 第一人与第三人相熟程度acqu23 E2(23) 第二人与第三人相熟程度acqu04 E2(04) 本人与第四人相熟程度acqu14 E2(14) 第一人与第四人相熟程度acqu24 E2(24) 第二人与第四人相熟程度acqu34 E2(34) 第三人与第四人相熟程度acqu05 E2(05) 本人与第五人相熟程度acqu15 E2(15) 第一人与第五人相熟程度acqu25 E2(25) 第二人与第五人相熟程度acqu35 E2(35) 第三人与第五人相熟程度acqu45 E2(45) 第四人与第五人相熟程度relative E3(1) 在今年春节期间,以各种方式互相拜年、交往的亲属大概有多少人friend E3(2) 在今年春节期间,以各种方式互相拜年、交往的亲密朋友大概有多少人others E3(3) 在今年春节期间,以各种方式互相拜年、交往的其他人大概有多少人gnwrker E4a(1) 春节拜年者中是否有产业工人gncollege E4a(2) 春节拜年者中是否有大学教师gnmidsch E4a(3) 春节拜年者中是否有中小学教师gndoctor E4a(4) 春节拜年者中是否有医生gnnurse E4a(5) 春节拜年者中是否有护士gncooker E4a(6) 春节拜年者中是否有厨师、炊事员gnwaiter E4a(7) 春节拜年者中是否有饭店餐馆服务员gnsales E4a(8) 春节拜年者中是否有营销人员gnjoblss E4a(9) 春节拜年者中是否有无业人员gnscient E4a(10) 春节拜年者中是否有科学研究人员gnlegal E4a(11) 春节拜年者中是否有法律工作人员gneconom E4a(12) 春节拜年者中是否有经济业务人员gnclerk E4a(13) 春节拜年者中是否有行政办事人员gnengnr E4a(14) 春节拜年者中是否有工程技术人员gngovoff E4a(15) 春节拜年者中是否有政府机关负责人gnptyoff E4a(16) 春节拜年者中是否有党群组织负责人gnhead E4a(17) 春节拜年者中是否有企事业单位负责人变量名问卷题号变量涵义gnnanny E4a(18) 春节拜年者中是否有家庭保姆、计时工gngovorg E4b(1) 春节拜年者中单位是否有党政机关gnindsoe E4b(2) 春节拜年者中单位是否有国有企业gnindsoi E4b(3) 春节拜年者中单位是否有国有事业单位gnindcoe E4b(4) 春节拜年者中单位是否有集体企事业单位gnindioe E4b(5) 春节拜年者中单位是否有个体经营单位gnindpe E4b(6) 春节拜年者中单位是否有私营/民营企事业单位gnindfie E4b(7) 春节拜年者中单位是否有三资企业gnindoth E4b(8) 春节拜年者中单位是否有其它类型F. 教育经历sstart01 F1a(1) 受教育的第1阶段:开始年send01 F1b(1) 受教育的第1阶段:结束年educ01 F1c(1) 受教育的第1阶段:教育程度gradu01 F1d(1) 受教育的第1阶段:是否毕业major01 F1e(1) 受教育的第1阶段:所学专业slevel01 F1f(1) 受教育的第1阶段:学校等级onjob01 F1g(1) 受教育的第1阶段:是否在职学习tuitn01 F1h(1) 受教育的第1阶段:如果是在职学习,学习费用单位负担的比例为多少ssite01 F1i(1) 受教育的第1阶段:上学地点sstart02 F1a(2) 受教育的第2阶段:开始年send02 F1b(2) 受教育的第2阶段:结束年educ02 F1c(2) 受教育的第2阶段:教育程度gradu02 F1d(2) 受教育的第2阶段:是否毕业major02 F1e(2) 受教育的第2阶段:所学专业slevel02 F1f(2) 受教育的第2阶段:学校等级onjob02 F1g(2) 受教育的第2阶段:是否在职学习tuitn02 F1h(2) 受教育的第2阶段:如果是在职学习,学习费用单位负担的比例为多少ssite02 F1i(2) 受教育的第2阶段:上学地点sstart03 F1a(3) 受教育的第3阶段:开始年send03 F1b(3) 受教育的第3阶段:结束年educ03 F1c(3) 受教育的第3阶段:教育程度gradu03 F1d(3) 受教育的第3阶段:是否毕业major03 F1e(3) 受教育的第3阶段:所学专业slevel03 F1f(3) 受教育的第3阶段:学校等级onjob03 F1g(3) 受教育的第3阶段:是否在职学习tuitn03 F1h(3) 受教育的第3阶段:如果是在职学习,学习费用单位负担的比例为多少ssite03 F1i(3) 受教育的第3阶段:上学地点sstart04 F1a(4) 受教育的第4阶段:开始年send04 F1b(4) 受教育的第4阶段:结束年educ04 F1c(4) 受教育的第4阶段:教育程度gradu04 F1d(4) 受教育的第4阶段:是否毕业major04 F1e(4) 受教育的第4阶段:所学专业slevel04 F1f(4) 受教育的第4阶段:学校等级onjob04 F1g(4) 受教育的第4阶段:是否在职学习tuitn04 F1h(4) 受教育的第4阶段:如果是在职学习,学习费用单位负担的比例为多少变量名问卷题号变量涵义ssite04 F1i(4) 受教育的第4阶段:上学地点send05 F1b(5) 受教育的第5阶段:结束年educ05 F1c(5) 受教育的第5阶段:教育程度gradu05 F1d(5) 受教育的第5阶段:是否毕业major05 F1e(5) 受教育的第5阶段:所学专业slevel05 F1f(5) 受教育的第5阶段:学校等级onjob05 F1g(5) 受教育的第5阶段:是否在职学习tuitn05 F1h(5) 受教育的第5阶段:如果是在职学习,学习费用单位负担的比例为多少ssite05 F1i(5) 受教育的第5阶段:上学地点sstart06 F1a(6) 受教育的第6阶段:开始年send06 F1b(6) 受教育的第6阶段:结束年educ06 F1c(6) 受教育的第6阶段:教育程度gradu06 F1d(6) 受教育的第6阶段:是否毕业major06 F1e(6) 受教育的第6阶段:所学专业slevel06 F1f(6) 受教育的第6阶段:学校等级onjob06 F1g(6) 受教育的第6阶段:是否在职学习tuitn06 F1h(6) 受教育的第6阶段:如果是在职学习,学习费用单位负担的比例为多少ssite06 F1i(6) 受教育的第6阶段:上学地点sstart07 F1a(7) 受教育的第7阶段:开始年send07 F1b(7) 受教育的第7阶段:结束年educ07 F1c(7) 受教育的第7阶段:教育程度gradu07 F1d(7) 受教育的第7阶段:是否毕业major07 F1e(7) 受教育的第7阶段:所学专业slevel07 F1f(7) 受教育的第7阶段:学校等级onjob07 F1g(7) 受教育的第7阶段:是否在职学习tuitn07 F1h(7) 受教育的第7阶段:如果是在职学习,学习费用单位负担的比例为多少ssite07 F1i(7) 受教育的第7阶段:上学地点sstart08 F1a(8) 受教育的第8阶段:开始年send08 F1b(8) 受教育的第8阶段:结束年educ08 F1c(8) 受教育的第8阶段:教育程度gradu08 F1d(8) 受教育的第8阶段:是否毕业major08 F1e(8) 受教育的第8阶段:所学专业slevel08 F1f(8) 受教育的第8阶段:学校等级onjob08 F1g(8) 受教育的第8阶段:是否在职学习tuitn08 F1h(8) 受教育的第8阶段:如果是在职学习,学习费用单位负担的比例为多少ssite08 F1i(8) 受教育的第8阶段:上学地点sstart09 F1a(9) 受教育的第9阶段:开始年send09 F1b(9) 受教育的第9阶段:结束年educ09 F1c(9) 受教育的第9阶段:教育程度gradu09 F1d(9) 受教育的第9阶段:是否毕业major09 F1e(9) 受教育的第9阶段:所学专业slevel09 F1f(9) 受教育的第9阶段:学校等级onjob09 F1g(9) 受教育的第9阶段:是否在职学习tuitn09 F1h(9) 受教育的第9阶段:如果是在职学习,学习费用单位负担的比例为多少ssite09 F1i(9) 受教育的第9阶段:上学地点变量名问卷题号变量涵义sstart10 F1a(10) 受教育的第10阶段:开始年educ10 F1c(10) 受教育的第10阶段:教育程度gradu10 F1d(10) 受教育的第10阶段:是否毕业major10 F1e(10) 受教育的第10阶段:所学专业slevel10 F1f(10) 受教育的第10阶段:学校等级onjob10 F1g(10) 受教育的第10阶段:是否在职学习tuitn10 F1h(10) 受教育的第10阶段:如果是在职学习,学习费用单位负担的比例为多少ssite10 F1i(10) 受教育的第10阶段:上学地点certifct F2 您到目前为止,已经获得过哪些主要的专业技术资格证书共多少项certyr1 F2a(1) 第1项资格证书:获得时间certcat1 F2b(1) 第1项资格证书:证书名称certlvl1 F2c(1) 第1项资格证书:证书等级certaut1 F2d(1) 第1项资格证书:认证机构certyr2 F2a(2) 第2项资格证书:获得时间certcat2 F2b(2) 第2项资格证书:证书名称certlvl2 F2c(2) 第2项资格证书:证书等级certaut2 F2d(2) 第2项资格证书:认证机构certyr3 F2a(3) 第3项资格证书:获得时间certcat3 F2b(3) 第3项资格证书:证书名称certlvl3 F2c(3) 第3项资格证书:证书等级certaut3 F2d(3) 第3项资格证书:认证机构noptsch F3 您在党校学习的次数psstart1 F4a(1) 第一次党校学习:开始年份psend1 F4b(1) 第一次党校学习:共学习了多少月psrank1 F4c(1) 第一次党校学习:党校级别psdiplm1 F4d(1) 第一次党校学习:是否学历教育psstart2 F4a(2) 第二次党校学习:开始年份psend2 F4b(2) 第二次党校学习:共学习了多少月psrank2 F4c(2) 第二次党校学习:党校级别psdiplm2 F4d(2) 第二次党校学习:是否学历教育psstart3 F4a(3) 第三次党校学习:开始年份psend3 F4b(3) 第三次党校学习:共学习了多少月psrank3 F4c(3) 第三次党校学习:党校级别psdiplm3 F4d(3) 第三次党校学习:是否学历教育G. 职业经历sentdown G1 您有“上山下乡”的经历吗yrsent G2(1) 您“上山下乡”开始年份yrback G2(2) 您“上山下乡”结束年份army G3 您是否有过参军入伍的经历armyst G4(1) 您在军队时间的开始年份armyend G4(2) 您在军队时间的结束年份wkbefore G5 您过去是否参加过工作ostart01 G6a(1a) 首职:开始年份oend01 G6a(1b) 首职:结束年份变量名问卷题号变量涵义cco2k_01 G6c(1) 首职:职业类别(2000年CSCO编码)mnglvl01 G6d(1) 首职:在工作中是否从事管理工作,如果承担管理工作,属于哪一级别adrank01 G6e(1) 首职:您是否具有国家行政级别prof01 G6f(1) 首职:技术职称wkunit01 G6g(1) 首职:单位性质suplvl01 G6h(1) 首职:工作单位的主管/挂靠部门的级别hsing01 G6i(1) 首职:是否从该单位得到住房或住房补贴pubmed01 G6j(1) 首职:是否从该单位得到医疗保险或公费医疗ostart02 G6a(2a) 第2个职业:开始年份oend02 G6a(2b) 第2个职业:结束年份empsta02 G6b(2) 第2个职业:从业状态cco2k_02 G6c(2) 第2个职业:职业类别(2000年CSCO编码)mnglvl02 G6d(2) 第2个职业:在工作中是否从事管理工作,如果承担管理工作,属于哪一级别adrank02 G6e(2) 第2个职业:您是否具有国家行政级别prof02 G6f(2) 第2个职业:技术职称wkunit02 G6g(2) 第2个职业:单位性质suplvl02 G6h(2) 第2个职业:工作单位的主管/挂靠部门的级别hsing02 G6i(2) 第2个职业:是否从该单位得到住房或住房补贴pubmed02 G6j(2) 第2个职业:是否从该单位得到医疗保险或公费医疗same02 G6k(2) 第2个职业:工作单位是否与前一个工作相同ostart03 G6a(3a) 第3个职业:开始年份oend03 G6a(3b) 第3个职业:结束年份empsta03 G6b(3) 第3个职业:从业状态cco2k_03 G6c(3) 第3个职业:职业类别(2000年CSCO编码)mnglvl03 G6d(3) 第3个职业:在工作中是否从事管理工作,如果承担管理工作,属于哪一级别adrank03 G6e(3) 第3个职业:您是否具有国家行政级别prof03 G6f(3) 第3个职业:技术职称wkunit03 G6g(3) 第3个职业:单位性质suplvl03 G6h(3) 第3个职业:工作单位的主管/挂靠部门的级别hsing03 G6i(3) 第3个职业:是否从该单位得到住房或住房补贴pubmed03 G6j(3) 第3个职业:是否从该单位得到医疗保险或公费医疗same03 G6k(3) 第3个职业:工作单位是否与前一个工作相同ostart04 G6a(4a) 第4个职业:开始年份oend04 G6a(4b) 第4个职业:结束年份empsta04 G6b(4) 第4个职业:从业状态cco2k_04 G6c(4) 第4个职业:职业类别(2000年CSCO编码)mnglvl04 G6d(4) 第4个职业:在工作中是否从事管理工作,如果承担管理工作,属于哪一级别adrank04 G6e(4) 第4个职业:您是否具有国家行政级别prof04 G6f(4) 第4个职业:技术职称wkunit04 G6g(4) 第4个职业:单位性质suplvl04 G6h(4) 第4个职业:工作单位的主管/挂靠部门的级别hsing04 G6i(4) 第4个职业:是否从该单位得到住房或住房补贴pubmed04 G6j(4) 第4个职业:是否从该单位得到医疗保险或公费医疗same04 G6k(4) 第4个职业:工作单位是否与前一个工作相同ostart05 G6a(5a) 第5个职业:开始年份oend05 G6a(5b) 第5个职业:结束年份变量名问卷题号变量涵义empsta05 G6b(5) 第5个职业:从业状态cco2k_05 G6c(5) 第5个职业:职业类别(2000年CSCO编码)mnglvl05 G6d(5) 第5个职业:在工作中是否从事管理工作,如果承担管理工作,属于哪一级别adrank05 G6e(5) 第5个职业:您是否具有国家行政级别prof05 G6f(5) 第5个职业:技术职称wkunit05 G6g(5) 第5个职业:单位性质suplvl05 G6h(5) 第5个职业:工作单位的主管/挂靠部门的级别hsing05 G6i(5) 第5个职业:是否从该单位得到住房或住房补贴pubmed05 G6j(5) 第5个职业:是否从该单位得到医疗保险或公费医疗same05 G6k(5) 第5个职业:工作单位是否与前一个工作相同ostart06 G6a(6a) 第6个职业:开始年份oend06 G6a(6b) 第6个职业:结束年份empsta06 G6b(6) 第6个职业:从业状态cco2k_06 G6c(6) 第6个职业:职业类别(2000年CSCO编码)mnglvl06 G6d(6) 第6个职业:在工作中是否从事管理工作,如果承担管理工作,属于哪一级别adrank06 G6e(6) 第6个职业:您是否具有国家行政级别prof06 G6f(6) 第6个职业:技术职称wkunit06 G6g(6) 第6个职业:单位性质suplvl06 G6h(6) 第6个职业:工作单位的主管/挂靠部门的级别hsing06 G6i(6) 第6个职业:是否从该单位得到住房或住房补贴pubmed06 G6j(6) 第6个职业:是否从该单位得到医疗保险或公费医疗same06 G6k(6) 第6个职业:工作单位是否与前一个工作相同ostart07 G6a(7a) 第7个职业:开始年份oend07 G6a(7b) 第7个职业:结束年份empsta07 G6b(7) 第7个职业:从业状态cco2k_07 G6c(7) 第7个职业:职业类别(2000年CSCO编码)mnglvl07 G6d(7) 第7个职业:在工作中是否从事管理工作,如果承担管理工作,属于哪一级别adrank07 G6e(7) 第7个职业:您是否具有国家行政级别prof07 G6f(7) 第7个职业:技术职称wkunit07 G6g(7) 第7个职业:单位性质suplvl07 G6h(7) 第7个职业:工作单位的主管/挂靠部门的级别hsing07 G6i(7) 第7个职业:是否从该单位得到住房或住房补贴pubmed07 G6j(7) 第7个职业:是否从该单位得到医疗保险或公费医疗same07 G6k(7) 第7个职业:工作单位是否与前一个工作相同ostart08 G6a(8a) 第8个职业:开始年份oend08 G6a(8b) 第8个职业:结束年份empsta08 G6b(8) 第8个职业:从业状态cco2k_08 G6c(8) 第8个职业:职业类别(2000年CSCO编码)mnglvl08 G6d(8) 第8个职业:在工作中是否从事管理工作,如果承担管理工作,属于哪一级别adrank08 G6e(8) 第8个职业:您是否具有国家行政级别prof08 G6f(8) 第8个职业:技术职称wkunit08 G6g(8) 第8个职业:单位性质suplvl08 G6h(8) 第8个职业:工作单位的主管/挂靠部门的级别hsing08 G6i(8) 第8个职业:是否从该单位得到住房或住房补贴pubmed08 G6j(8) 第8个职业:是否从该单位得到医疗保险或公费医疗same08 G6k(8) 第8个职业:工作单位是否与前一个工作相同变量名问卷题号变量涵义ostart09 G6a(9a) 第9个职业:开始年份。
接口CH3-02
4) 段间直接转移 格式:JMP FAR PTR OPR 功能:IP←OPR的段内偏移地址 CS←OPR所在段的段地址 其中OPR在汇编格式中可使用符号地址,如果用数 值表达式则要指定转移目标的偏移地址和段地址。 这也是一种绝对转移指令。
/200609/25
17
【例3.5】 OPR用符号地址表示。 CODE1 SEGMENT … JMP FAR PTR PROG … … CODE1 ENDS CODE2 SEGMENT … PROG:… … CODE2 ENDS
/200609/25
微型计算机原理与接口技术
第3章 80X86指令系统和汇编语言(2)
主 编 副主编
刘彦文 高 爽
张向东 刘 彤
谭 峰
中国林业出版社
3.2.4 串处理指令
数据串可以是存储器中一串字节或一串字。8086对串的处 理提供了五条基本的指令以及配合使用的重复前缀指令。 1. MOVS指令 格式:MOVS 功能:串传送指令,DS:SI指向的字符串传送到ES:DI指向 的内存区域。 2. CMPS指令 格式:CMPS 功能:串比较指令,比较DS:SI和ES:DI指向的两个字 符串,若相同,则ZF=1。
/200609/25
5
综上所述,为了能够实现串操作, 在程序设计时应掌握以下三个要点: (1) 利用方向标志DF设定串操作中地址修改的方向 (用STD或CLD,见3.2.6处理器控制指令)。 (2) 利用DS:SI和ES:DI设定源串和目标串的首地址。 (3) 利用CX设定被处理数据串的字节个数或字个数。
/200609/25
11
1. 无条件转移指令 1) 段内直接短转移 格式:JMP SHORT OPR 功能:IP←(IP)+8位位移量,其中8位位移量是CS段内目标 地址OPR与JMP指令的下一条指令地址之差,为一个有符 号数,只允许在-128~+127字节范围内转移,为相对转移 指令。例如: … JMP SHORT HELLO … … HELLO: …
开放式cpu实验
武汉大学计算机学院计算机科学与技术专业CPU设计实验报告实验名称:开放式实验CPU设计课题名称: 计算机组成原理班级: 计科三班指导教师:徐爱萍组长: 秦贤康(2013301500100) 组员: 王懿晨(201330150099)二零一五年三月目录1 实验环境(王懿晨) (4)1.1 Quartus Ⅱ介绍 (4)1.2 硬件描述语言(VHDL) (5)1.3实验的主要成果 (5)2 实验要求(秦贤康) (7)2. 1 指令格式要求 (7)2. 2 指令流程及微信号序列分析 (8)2.2.1 ADD指令分析 (9)2.2.2 MUL指令分析 (9)2.2.3 SUB指令分析 (9)2.2.4 DIV指令分析 (9)2.2.5 INC指令分析 (10)2.2.6 DEC指令分析 (10)2.2.7 SHL指令分析 (10)2.2.8 SHR指令分析 (10)2.2.9 MOVR指令分析 (11)2.2.10 MOVD指令分析 (11)2.2.11 LDRR指令分析 (11)2.2.12 STRR指令分析 (11)2.2.13 JR指令分析 (11)2.2.14 JRC指令分析 (12)2.2.15 JRZ指令分析 (12)2.2.16 JRNC指令分析 (12)2.2.17 JRNZ指令分析 (12)2.2.18 CLC指令分析 (12)2.2.19 STC指令分析 (12)2.2.20 CMP指令分析 (13)2.2.21 NOP指令分析 (13)3.部件仿真实验 (14)3.1 四个通用寄存器设计与仿真(王懿晨) (14)3.1.1 设计代码 (14)3.1.2 RTL连接图 (20)3.1.3 仿真过程 (20)3.2算术逻辑单元设计与仿真(秦贤康) (21)3.2.1 设计代码 (21)3.2.2 RTL连接图 (26)3.2.3 仿真过程 (27)4. CPU设计(秦贤康) (29)4.1取指设计 (29)4.2 时序节拍设计 (31)4.3指令译码的设计 (35)4.4执行部分设计 (39)4.5存储器部分设计 (42)4.6通用寄存器组设计 (43)4.7寄存器输出设计 (45)4.8顶层实体设计 (46)5. 测试报告 (52)5.1规则文件(王懿晨) (52)5.2测试文件 (53)5.3指令测试(秦贤康) (54)6 实验总结 (63)6.1 秦贤康的小结 (63)6.1.1 实验收获 (63)6.1.2 建议与意见 (63)6.2 王懿晨的小结 (63)6.2.1 实验收获 (63)6.2.2 建议与意见 (64)参考资料 (64)1 实验环境(王懿晨)1.1 Quartus Ⅱ介绍Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、V erilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
ceassignment设备的指定逻辑号及输入输出指令
device assignment command 设备付值命令device control 设备控制device driver 设备驱动程序,设备驱动器device flag 设备标志device for automatic power 自动功率调整器device independence [编程序时]与外部设备无关性,设备独立性device medium control language 设备媒体控制语言device number 设备号device parameter 器件参数,晶体管参数device selector 设备选择器device status word 设备状态字device switching unit 设备开关装置device under test 被测器件devil 风暴,不幸,麻烦devil liquor 废液deviometer 偏差计devitrification 使失去光泽,失透性devitrify 使反玻璃化(透明消失)devolatilization 脱去挥发分dew 露[水];结露Dewar bottle 真空瓶,杜瓦瓶Dewar vacuum flask 杜氏真空瓶Dewar vessel 真空瓶,杜瓦瓶dewater 排水,疏水,脱水dewatered steam 脱水蒸汽dewatering 降地下水,脱水[作用],排水,脱水,失水dewatering bin 脱水装置dewatering pump 脱水泵,抽水泵dewaxing 脱蜡处理dew cell 湿敏元件;道氏电池dew-drop slot 梨形槽(电机的)dew formation 结露dew point 露点dew-point control system 露点控制系统dew-point deficit 温度露点差dew-point depression 露点降低dew-point hygrometer 露点湿度计dew-point indicator 露点计,露点指示器,露点仪dew-point recorder 露点记录器dew-point temperature 露点,露点温度dexterity factor 灵巧因子(在同一操作中用机械手与用手所需时间之比)dextrogyrate 右旋的dextrogyric 右旋的dextrorotary 右旋的dextrorotation 右旋,顺时针反向旋转dextrorotatory 右旋的dextrose 右旋糖,葡萄糖dezincification 脱锌现象,脱锌[作用]DF (decimal fraction)十进制小数,十进制分数DF (degrees of freedom)自由度D.f.(design formula)计算式DF (dissipation factor)功耗因数DFA (damage function analysis)损伤功能分析DFB (distributed feedback)分布反馈DFC (disk file control)磁盘文件控制器DFCS (digital feedwater control system)数字给水控制系统DFD (data flow diagram)数据流程图DFG (diode function generator)二极管函数发生器D flip-flop D触发器,延迟触发器DFR (Dounreay fast reactor)唐瑞快中子[反应]堆DFT (diagnostic function tester)诊断功能测试程序DFT (discrete Fourier transform)离散型傅里叶变换DFW (deaerator feedwater)除氧器给水DG (diesel generator)柴油发电机DG (differential generator)微分发生器DG (diode gate)二极管门DG (double groove)双槽DGCAIES (diesel generation combustion air intake and exhaust system)柴油发电机燃烧、进气与排气系统DGFOSTS (diesel generator fuel oil storage and transfer system)柴油发电机燃料油贮存和输送系统DGS (distance-gain-size)距离—增益—尺寸DH (deaerator heater)除氧加热器DHC (data handling center)数据处理中心DHE (data handling equipment)数据处理装置DHP (delivered horse power)输出功率DHRS (decay heat removal system)衰变热排出系统DHU (data handling unit)数据处理设备DI (data input)数据输入DI (digital input)数字输入DI (disable interrupt)禁止中断DIA (diameter)直径diabase 辉绿岩diabase lining 衬辉绿岩,衬铸石diabasic plaster 辉绿岩灰泥diabatic 非绝热的,受热diabatic flow 非绝热流diabatic two-phase flow 非绝热两相流diacetate 二醋酸盐diacoustic 折射散焦[线];折声的diacritical current 半临界值电流diafilter 渗滤diagnosis 诊断。
ch03-soln
Chapter 3Preferences and UtilitySolutions to Problems3.2 Consider the single-good utility function U(x) = 3x2, with a marginal utility given by MU x= 6x. Plot the utility and marginal utility functions on two separate graphs. Does this utility function satisfy the principle of diminishing marginal utility? Explain.The two graphs are shown below. It can be seen from both graphs that this function does not satisfy the law of diminishing marginal utility. The first figure shows that utility increases with x, and moreover, that it increases at an increasing rate. For example, an increase in x from 2 to 3, increases utility from 12 to 27 (an increase of 15), while an increase in x from 3 to 4 induces an increase in utility from 27 to 48 (an increase of 21).This fact is easier to see in the second figure. The marginal utility is an increasing function of x. Higher values of x imply a greater marginal utility. Therefore this function exhibits increasing marginal utility.U(x) = 3x2MU x = 6x3.4 Consider the utility function U (x , y ) = y √x with the marginal utilities MU x = y/(2√x ) and MU y = √x .a) Does the consumer believe that more is better for each good?b) Do the consumer’s preferences exhibit a diminishing marg inal utility of x ? Is the marginal utility of y diminishing?3.4 a) Since U increases whenever x or y increases, more of each good is better. This is also confirmed by noting that MU x and MU y are both positive for any positive values of x and y . b)Since x MU =x increases (holding y constant), x MU falls. Therefore the marginal utility of xis diminishing. However, y MU =y increases, MU y does not change. Therefore the preferences exhibit a constant, not diminishing, marginal utility of y .3.6 For the following sets of goods draw two indifference curves, U 1 and U 2, with U 2 > U 1. Draw each graph placing the amount of the first good on the horizontal axis.a) Hot dogs and chili (the consumer likes both and has a diminishing marginal rate of substitution of hot dogs for chili)b) Sugar and Sweet’N Low (the consumer likes both and will accept an ounce of Sweet’N Low or an ounce of sugar with equal satisfaction)c) Peanut butter and jelly (the consumer likes exactly 2 ounces of peanut butter for every ounce of jelly)d) Nuts (which the consumer neither likes nor dislikes) and ice cream (which the consumer likes)e) Apples (which the consumer likes) and liver (which the consumer dislikes) a)Hot DogsChiliU 2U 1b)Sweet’N Lowc)Butter2412 U 2d)NutsIce CreamU 1U 2e)ApplesLiverU 1U 23.13 Draw indifference curves to represent the following types of consumer preferences. a) I like both peanut butter and jelly, and always get the same additional satisfaction from an ounce of peanut butter as I do from 2 ounces of jelly. b) I like peanut butter, but neither like nor dislike jelly. c) I like peanut butter, but dislike jelly.d) I like peanut butter and jelly, but I only want 2 ounces of peanut butter for every ounce of jelly.In the following pictures, U 2 > U 1. a)Peanut ButterJelly 1 224 U 2 U 1b)Peanut ButterJellyU 1U 2c)Peanut ButterJellyU 2U 1d)243.15 Consider the utility function U (x , y ) = 3x + y , with MU x = 3 and MU y = 1. a) Is the assumption that more is better satisfied for both goods?b) Does the marginal utility of x diminish, remain constant, or increase as the consumer buys more x ? Explain. c) What is MRS x , y ?d) Is MRS x , y diminishing, constant, or increasing as the consumer substitutes x for y along an indifference curve?e) On a graph with x on the horizontal axis and y on the vertical axis, draw a typicalindifference curve (it need not be exactly to scale, but it needs to reflect accurately whether there is a diminishing MRS x , y ). Also indicate on your graph whether the indifference curve will intersect either or both axes. Label the curve U 1.f ) On the same graph draw a second indifference curve U 2, with U 2 > U 1. a) Yes, the “more is better” assumption is satisfied for both goods since both marginal utilities are always positive. b) The marginal utility of x remains constant at 3 for all values of x .c)3, y x MRS d) The y x MRS , remains constant moving along the indifference curve.e & f) See figure belowXYU 1 U 23.16 Answer all parts of Problem 3.15 for the utility function U (x , y ) = √xy . The marginal utilities are MU x = √y/(2√x ) and MU y = √x/(2√y ). a) Yes, the “more is better” assumption is satisfied for both goods since both marginal utilities are always positive. b) The marginal utility of x diminishes as the consumer buys more x .c) x yx y x y MRS y x =⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫⎝⎛=22, d) As the consumer substitutes x for y , the y x MRS , will diminish.e & f) See figure below. The indifference curves will not intersect either axis.3.17 Answer all parts of Problem 3.15 for the utility function U (x , y ) = xy + x . The marginal utilities are MU x = y + 1 and MU y = x . a) Yes, the “more is better” assumption is satisfied for bot h goods since both marginal utilities are always positive. b) The marginal utility of x remains constant as the consumer buys more x .c) xy MRS y x 1,+=d) As the consumer substitutes x for y , the y x MRS , will diminish.e & f) See figure below. The indifference curves intersect the x -axis, since it is possible that U > 0 even if y = 0.3.18 Answer all parts of Problem 3.15 for the utility function U (x , y ) = x 0.4y 0.6. The marginal utilities are MU x = 0.4 (y 0.6/x 0.6) and MU y = 0.6 (x 0.4/y 0.4). a) Yes, the “more is better” assumption is satisfied for both goods since both marginal utilities are always positive. b) The marginal utility of x diminishes as the consumer buys more x .c) xyy x x y MRS y x 6.04.0)/(6.)/(4.4.04.06.06.0,==d) As the consumer substitutes x for y , the y x MRS , will diminish.e & f) See figure below. The indifference curves do not intersect either axis.3.19 Answer all parts of Problem 3.15 for the utility function U = √x + 2√y . The marginal utilities for x and y are, respectively, MU x = 1/(2√x ) and MU y = 1/√y . a) Yes, the “more is better” assumption is satisfied for both goods since both marginal utilities are always positive. b) The marginal utility of x diminishes as the consumer buys more x .c) x y y x MRS y x 2/1)2/(1,==d) As the consumer substitutes x for y , the y x MRS , will diminish.e & f) See figure below. Since it is possible to have U > 0 if either x = 0 (and y > 0) or y = 0 (and x > 0), the indifference curves intersect both axes.3.20 Answer all parts of Problem 3.15 for the utility function U (x , y ) = x 2 + y 2. The marginal utilities are MU x = 2x and MU y = 2y . a) Yes, the “more is better” assumption is satisfied for bo th goods since both marginal utilities are always positive. b) The marginal utility of x increases as the consumer buys more x .c) yxy x MRS y x ==22,d) As the consumer substitutes x for y , the y x MRS , will increase.e & f) See figure below. Since it is possible to have U > 0 if either x = 0 (and y > 0) or y = 0 (and x > 0), the indifference curves intersect both axes.3.21 Suppose a consumer’s preferences for two goods can be represented by the Cobb–Douglas utility function U = Ax αy β , where A , α, and β are positive constants. The marginal utilities are MU x = αAx α−1y β and MU y = βAx αy β−1. Answer all parts of Problem 3.15 for this utility function. a) Yes, the “more is better” assumption is satisfied for both goods since both margin al utilities are always positive. b) Since we do not know the value of α, only that it is positive, we need to specify three possible cases:When 1<α, the marginal utility of x diminishes as x increases.When 1=α, the marginal utility of x remains constant as x increases. When 1>α, the marginal utility of x increases as x increases.c) xyy Ax y Ax MRS y x βαβαβαβα==--11,d) As the consumer substitutes x for y , the y x MRS , will diminish.e & f) The graph below depicts indifference curves for the case where 1=A and .5.0==βα Thus 5.05.0),(y x y x U =. Regardless, the indifference curves will never intersect either axis.3.22 Suppose a consumer has preferences over two goods that can be represented by the quasi-linear utility function U (x , y ) = 2√x + y . The marginal utilities are MU x = 1/√x and MU y = 1.a) Is the assumption that more is better satisfied for both goods?b) Does the marginal utility of x diminish, remain constant, or increase as the consumer buys more x ? Explain.c) What is the expression for MRS x ,y ?d) Is the MRS x ,y diminishing, constant, or increasing as the consumer substitutes more x for y along an indifference curve?e) On a graph with x on the horizontal axis and y on the vertical axis, draw a typicalindifference curve (it need not be exactly to scale, but it should accurately reflect whether there is a diminishing MRS x ,y ). Indicate on your graph whether the indifference curve will intersect either or both axes.f) Show that the slope of every indifference curve will be the same when x = 4. What is the value of that slope? a)Yes, the “more is better” assumption is satisfied for both goods since both marginal utilities are always positive. b) The marginal utility of x decreases as the consumer buys more x .c) ,x y MRS ==d) As the consumer substitutes x for y , the y x MRS , will diminish. e) Since it is possible to have U > 0 if either x = 0 (and y > 0) or y = 0 (and x > 0), the indifference curves intersect both axes.Besanko & Braeutigam – Microeconomics, 4th edition Solutions ManualCopyright © 2011 John Wiley & Sons, Inc. Chapter 3 - 11f) The slope of a typical indifference curve at some basket ),(y x is the,x y MRS =. At4=x , ,0.5x y MRS ==. Note that this holds regardless of the value of y . Therefore, the slope of any indifference curve at 4=x will be 0.5-.。
一种C程序内存访问缺陷自动化检测方法研究
一种C程序内存访问缺陷自动化检测方法研究杨飏;张焕国;王后珍【期刊名称】《计算机科学》【年(卷),期】2010(037)006【摘要】符号执行是目前较为行之有效的软件缺陷自动化检测方法,计算代价昂贵与程序执行路径爆炸是两个影响其性能的关键问题.提出了一种针对C语言程序内存访问缺陷的符号执行检测方法,该方法可通过自动化构造的测试用例发现程序内部的内存访问缺陷,如缓冲区溢出、跨界访问和指针异常等.使用符号跟踪缓冲区长度的方法,一方面减少了符号变量的数量,另一方面由此精确抽象C语言库中字符串操作函数的行为,解决了符号执行过程间函数调用的步进问题;使用动态切片的方法,裁减路径探索过程中的冗余路径,从而解决在程序内部路径搜索时发生的路径爆炸问题.实验表明,提供的检测方法不但可行,而且验证代价较小,具有较强的实用性.【总页数】5页(P155-158,185)【作者】杨飏;张焕国;王后珍【作者单位】空天信息安全与可信计算教育部重点实验室,武汉,430072;空天信息安全与可信计算教育部重点实验室,武汉,430072;武汉大学计算机学院,武汉,430079;武汉大学软件工程国家重点实验室,武汉,430072;空天信息安全与可信计算教育部重点实验室,武汉,430072【正文语种】中文【中图分类】TP309【相关文献】1.一种改进的Web应用越权漏洞自动化检测方法研究及实现 [J], 李艳华;郝艳;李海威2.一种消除内存访问等待的DSP内存控制设计 [J], 徐如淏;王兵;李宇飞3.一种与平台无关的C程序内存错误检测工具的设计 [J], 欧阳志强4.一种眼镜镜片缺陷自动化检测系统的研究 [J], 姚红兵;平洁;李良湾;顾寄南;曾祥波;马桂殿;郑学良5.一种显示控制器和二维图形处理器通过同一个内存控制器访问内存的架构设计方法 [J], 张慧明; 秦奎因版权原因,仅展示原文概要,查看原文内容请购买。
子程序花指令模糊变换逻辑一致性研究
子程序花指令模糊变换逻辑一致性研究
孙国梓;陈丹伟;蔡强
【期刊名称】《计算机科学》
【年(卷),期】2009(036)008
【摘要】花指令模糊变换是代码模糊变换策略中的一种有效方法.在分析现有花指令加密方法的基础上,提出一种子程序花指令模糊变换方案,并利用形式化方法对其进行描述.通过研究子程序花指令模糊变换各种形式化的定义,推导出若干引理,从"XOR及CMP扩展"、"伪分支构造"、"JNE后加花指令"等3个方面加以形式化的证明,使得经上述子程序花指令模糊变换的程序具有与原程序相同的逻辑性.最后,以代码模糊变换评测标准对该算法的效果进行了详细分析.
【总页数】4页(P89-91,200)
【作者】孙国梓;陈丹伟;蔡强
【作者单位】南京邮电大学计算机学院,南京,210003;南京邮电大学计算机技术研究所,南京,210003;(Missing)
【正文语种】中文
【中图分类】TP311.53
【相关文献】
1.花指令模糊变换逻辑一致性研究 [J], 曹林;孙国梓;王海平;王绍棣
2.子程序花指令加密算法研究 [J], 孙国梓;蔡强;陈丹伟
3.大学教师教学学术与学科学术发展的逻辑一致性研究 [J], 颜建勇;黄珊
4.银行业竞争对关系型贷款影响的理论逻辑一致性研究 [J], 周鸿卫;易蒙;涂超群
5.大学教师教学学术与学科学术发展的逻辑一致性研究 [J], 颜建勇;黄珊;
因版权原因,仅展示原文概要,查看原文内容请购买。
一种使用静态分析的汇编代码缺陷检测方法
一种使用静态分析的汇编代码缺陷检测方法
邱景;苏小红;马培军
【期刊名称】《哈尔滨工业大学学报》
【年(卷),期】2013(045)002
【摘要】针对当前缺乏汇编代码自动化审查工具的情况,对汇编代码人工审查方法进行研究,提出了一种基于静态分析的汇编代码缺陷检测方法.该方法中,在控制流线性化后,运用特征识别处理间接寻址跳转,采用结点克隆处理延迟条件分支,使用调用序列处理存在递归函数的过程间控制流图的构造.在此基础上,实现了ADSP SHARC汇编代码检测工具,并进行了静态分析测试和缺陷检测测试.测试结果表明,该方法可以有效地检测汇编代码中的不可退出点、循环、寄存器、以及内存访问缺陷.
【总页数】7页(P53-59)
【作者】邱景;苏小红;马培军
【作者单位】哈尔滨工业大学计算机科学与技术学院,150001哈尔滨;哈尔滨工业大学计算机科学与技术学院,150001哈尔滨;哈尔滨工业大学计算机科学与技术学院,150001哈尔滨
【正文语种】中文
【中图分类】TP313
【相关文献】
1.一种基于LDA和静态分析的代码功能识别方法 [J], 金靖;李萌;华哲邦;宋怀达;赵俊峰;谢冰
2.一种基于CIL静态分析的C#程序缺陷检测方法 [J], 边攀;梁彬;石文昌
3.一种基于代码静态分析的缓冲区溢出检测算法 [J], 王雅文;姚欣洪;宫云战;杨朝红
4.使用抽象语法树和静态分析的克隆代码自动重构方法 [J], 于冬琦;彭鑫;赵文耘
5.一种面向源代码的整数溢出缺陷静态检测方法 [J], 黄晖;陆余良;刘林涛;赵军因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Chapter 3 Assignments1. Stack and Heap – An OverviewInstance var and object live on heapLocal var live on stack2. Literals, Assignments and Variables2.1 Literal Value for All Primitive TypesPrimitive Integer Literal DecimalTypeOctal 0 ~ 7 int eight = 010nine = 011HexaDecimal 0 ~ f 0x7FFFFFFFlong l = 0xFFFFlFloat Pt. Literal float (32 bit) (must suffix f/F)(double by default)double (64 bit) (d/D)Boolean Literal (true/false) NOT 0/1Character Literal char test = …\u004E‟;(16 bit unsigned int) char b = 982; //intchar c = (char)70000; // castchar d = (char)-98;char c = …\”‟;float f = 3.2; // ERRORString is object, NOT primitive2.2 Assignment Operatora literal integer (e.g. 7) is implicitly an intbyte a = 27; // OK, max for byte is 127byte b = (byte)27; // OK, explicit cast=> applies to char and shortbyte b = 3; byte c = 8;byte d = b + c; // ERROR, …+‟ return intbyte d = (byte)(b + c); // OKPrimitive CastingImplicit cast => put small thing (byte) into bigger (int)=> no need to write code for the caste.g. int a = 100;long b = a;double d = 100L;Explicit cast => put large thing into smaller container => loss precisione.g. float a = 100.01f; int b = (int)a;int x = 3957.22; // ERRORint x = (int)3957.22; // OK, become 3957long l = 56L; byte b = (byte)l; // OKbyte a = (byte)128; // truncate higher order bit, become –128byte b = 3; b += 7; // OK b = (byte)(b + 7); // compile ERRORBMW extends Car Car c = new BMW( ); // OK BMW b = new Car( ); // ERRORVariable Scope 1) Static var 2) Instance var 3) Local var 4) Block varCommon ERROR1) Attempt to access inst. var from static context (typically from main) class Test { int x = 5;public static void main( … ) {x++; } }2) Attempt to access local var for nested method void go( ) { int y = 5; go2( ); }void go2( ) { y++; // ERROR }USE IS-A Test x NOT static3)Attempt to use block var after code block completedf or( … ) {Boolean test = false;}System.out.println(test); // ERROR2.3 Using Var. or Array element that is UninitInstance var => declared at class level=> they are init. to default value when instance created Type Default ValueObject Ref nullbyte, short, int, long 0float, double 0.0boolean falsechar …\u0000‟1)Primitive Instance Variable2)Object Reference, e.g. String3)Array Instance Variable => if NOT init => null=> if init => element => def. val2.4 Local Primitive and Objectlocal var MUST be initcan w/o init if you don‟t use itsometimes compiler can‟t tell for certainint x;if( xxx ) { x = 7; } // ERRORif(date == null) // ERROR, since date even not null, uninit can‟t use dot operator on null referencelocal array => element need not init, will give default value Assigning one ref. val to another- if an object is assigned to another, will pt to same objecti.e. change one will change anotherDimension a = new Dimension(5, 10);Dimension b = a;b.height = 30; // both a and b change to 30- exception is String, which is immuntable3. Passing Variables into Methods3.1 Passing Object Reference Variable=> able to modify3.2 Pass – By – Value Semantics●Java is actually pass – by – value for all var●pass – by – copy – of - var●if obje. ref => pass the bit representing ref.3.3 Passing Primitive Variable=> the value is NOT modifiedshadow an instance var => by declare same nameclass Foo {static int size = 7; WON‟T change itstatic void changeIt(int size) {size = size + 200; actually local varSystem.out.println(size); // 207}public static void main( … ) {Foo f = new Foo( );System.out.println(size); // 7changeIt(size);System.out.println(size); // 7}}class Bar { int barNum = 28; }class Foo {Bar myBar = new Bar( );void changeIt(Bar myBar) {myBar.barNum = 99;System.out.println(myBar.barNum); // 99myBar = new Bar( );myBar.barNum = 420;System.out.println(myBar.barNum); // 420}public static void main(String [ ] args) {Foo f = new Foo( );System.out.println(f.myBar.barNum); // 28f.changeIt(f.myBar);System.out.println(f.myBar.barNum); // 99}}4. Array Declaration, Construction and Initialization4.1 Declaring an Arrayint [ ] key;int key [ ];String [ ][ ][ ] key;String [ ] key [ ];int [5] key; // ERROR, size should not be specified4.2 Constructing an Array int [ ] key; OR int [ ] key = new int[3]; key = new int[3];int [ ] key = new int[ ]; // size missingMulti – dimensional Array => Array of Array int [ ][ ] key = new int[3][ ]; key[0] = new int[2]; key[0][0] = 6; key[0][1] = 7;key[1] = new int[3];key[1][0] = 9; key[1][1] = 8; key[1][2] = 5;4.3 Initializing an ArrayInit. element in loopint [ ] mykey = new key[6];for(int x = 0; x < mykey.length; x++) {mykey[x] = new key( ); }for(key k : mykey) k = new key( );Short Cut Syntax int [ ] key = {6, 7, 8};key[ ] mykey = {new key(“test”), new key(“test2”)}; int [ ][ ] key = {{5, 2, 4, 3}, {9, 2}, {3, 4}};Anonymous Array Creation int [ ] key;key = new int [ ] {4, 7, 2}don‟t even need to assign array to anything => just in time array => parm. passing myfunc(int [ ] myArray)myfunc(new int [ ] {1, 2, 3});Array of Primitiveint [ ] key = new int[5]; byte b = 4; char c = …c‟; short s = 7;key[0] = b;key[1] = c; key[2] = s;DON‟T confuse with length( ) in String element promoted implicitlyArray of Object=> can put the subclass (IS-A test)class Car { }class BMW extends Car { }Car [ ] myCar = { new Car( ), new BMW( ) }If the array is an interface type, element can refer to instance of class that implement the declared interfaceinterface Sporty { }class BMW extends Car implements Sporty { }class Benz { }Sporty [ ] sportCar = new Sporty[3];SportCar[0] = new BMW( ); // OKSportCar[1] = new Benz( ); // ERROR, it doesn‟t implementArray Ref. Assignmentint [ ] splats;int [ ] dats = new int[4];char [ ] letters = new char[5];splats = dats; // OKsplats = letters; // ERRORHonda extends CarCar [ ] cars;Honda [ ] cutCars = new Honda[5];cars = cutCars; // OKBeer [ ] beers = new Beer[99];cars = beers; // ERRORcuteCars = cars; // ERROR, can‟t reverseBox implements FoldableFoldable [ ] folding;Box [ ] box = new Box[3];folding = box; // OKint [ ] blots;int [ ][ ] key = new int[3][ ];blots = key; // ERRORint [ ] blocks = new int[6];blots = blocks; // OKint [ ][ ] book = new int[3][ ];int [ ] numbers = new int[6];int aNum = 7;book[0] = aNum; // ERRORbook[0] = numbers; // OK4.4 Initialization Blocko Init. Block run when the class is first loaded (static init. block) or when instance is created (instance init. block)o Instance init. block run after the call to super( )o the order of init. block mattersclass Init {Init(int x) { System.out.println(“1-arg const”); }Init( ) { System.out.println(“no-arg const”); }static { System.out.println(“1st static init”); }{ System.out.println(“1st instance init”); }static { System.out.println(“2nd static init”; }}new Init( );new Init(7);1st static init2nd static init1st instance initno-arg const1st instance init1-arg const5. Using Wrapper Class and Boxing5.1 OverviewPurpose: 1) to provide mechanism to “wrap” primitive value in object can invoke ine.g. collection2) to provide assortment of utility func for primitive e.g. radix5.2 Creating Wrapper ObjectWrapper object are immuntableInteger i1 = new Integer(42);Integer i2 = new Integer(“42”);Float f1 = new Float(3.14f);Float f1 = new Float(“3.14f”);Character c1 = new Character(…c‟);Boolean b = new Boolean(“false”);if(b) // WONT‟T compile before JAVA 1.4// JAVA 5 => OK => unboxInteger i2 = Integer.valueOf(“101011”, 2);// radix5.3 Using Wrapper Conversion Utilities1) xxxValue( ) => convert wrapper numeric to primitive Integer i2 = new Integer(42);byte b = i2.byteValue( );short s = i2.shortValue( );Float f2 = new Float(3.14f);Short s = f2.shortValue( ); // 3 => truncated, NOT round2) parseXXX( ) => convert string to primitivevalueOf( ) => return newly created wrapped obj. of that type double d4 = Double.parseDouble(“3.14”);// 3.14Double d5 = Double.valueOf(“3.14”);// return new Double long L2 = Long.parseLong(“101010”, 2);// 42Long L3 = Long.valueOf(“101010”, 2);3) toString( ) => give some meaningful representation of object Double d = new Double(“3.14”);d.toString( );Long.toString(254.16); => “fe”4) toXxxString( ) (Binary, Hexadecimal, Octal)String s3 = Integer.toHexString(254);Common Wrapper Conversion Method5.4 AutoboxingBoxing, unboxingBefore Java5: Integer y = new Integer(567);int x = y.intValue( ); // unwrapx++;y = new Integer(x); // re – wrapNEW: y++;Integer y = 567;Integer x = y;System.out.println(y == x); // truey++; since new object System.out.println(y == x); // false==, equal( )equals( ) => test meaningfully equalInteger i1 = 1000;Integer i2 = 1000;i1 == i2 => truei1.equals(i2) => truei1 != i2 => trueif primitive value is same => == return trueclass Boxing {static Integer x;public static void main( … ) {doStuff(x);}static void doStuff(int z) {int z2 = 5;z2 + z <= NullPointerException}}6. Overloadingvoid go(int x)void go(long x)void go(double x)byte b = 5;short s = 5;long l = 5;float f = 5.0f;=> int int long doubleOverloading with Boxing and Var-args1) void go(Integer x)void go(long x)int i = 5;go(i); // long2) void go(int x, int y)void go(byte … x)byte b = 5;go(b, b); // int, int3) void go(Byte x, Byte y)void go(byte … x)byte b = 5;go(b, b); // Byte, Bytevar – args => looserWidening Ref. Valuevoid go(Car c)BMW extends Cargo(bmw) // OK, since BMW IS-A CarNOT valid to widen wrapper class => IS-A testOverloading when Combining Widening and Boxingvoid go(Long x)byte b = 5;go(b); // ERROR => too much for compilervoid go(Object o) {Byte b2 = (Byte)o;}byte b = 5;go(b); // OKOverloading in Combination with Var-Argsvoid wide_vararg(long … x)void box_vararg(Integer … x)int i = 5;wide_vararg(5, 5); // longbox_vararg(5, 5); // IntegerSUMMARYo Primitive widening use …smallest‟ method arg. possibleo used individually, boxing & var-arg are compatible with overloading o CAN‟T widen from one wrapper type to another (IS-A test)o CAN‟T widen and then box (int can‟t become Long)o can box and then widen (int => object via Integer)o can combine var-args with either widening or boxing7. Garbage Collectiono GC is under the control of JVMo Java program can ask JVM to run GC, but not guaranteeo an object is eligible for GC when no more reachable ref to ite.g. nulling the ref myobj = null;SCJP Study Notes: Chapter 3 Assignments e.g. re – assign a ref varStringBuffer s1 = …StringBuffer s2 = …s1 = s2; // s1 is eligible for GCo if obj. return from method NOT eligibleIsland of IsolationPage 11 of 11。