编程一句话的事

VxWorks
1 Browser是Tornado提供的一个查看目标系统信息的软件。
2 打开Browser之后,目标机端会自动生成一个叫作"tSpyTask"的任务。
3 如果在调试过程中看到内存占用数量不断增长,就可以断定出现了内存泄露的状况。
4 在开发调试中,Shell总是作为目标机的输入和输出终端,用户可以通过Shell在主机端输入命令,也可以在Shell窗口中看到目标机输出的内容。
5 Shell的功能-下载程序模块,控制程序的执行,执行系统中的函数。
6 Shell的功能-获取目标机的运行信息,解释C、C++、tcl语言。
7 Shell的功能-运算表达式,执行脚本命令。
8 访问文件系统所使用的操作依然是访问I/O系统的7个入口函数-create,open,read,write,ioctl,close,remove。
9 应用程序在访问设备A上的文件时,系统首先会在文件描述符表中找到dosFs注册的入口函数,通过dosFs访问文件。
10 通常,用户不需要任何其他的操作就可以直接访问所有内存空间。
Linux
1 在具体文件的上层,Linux提供了虚拟文件系统VFS来统一它们的行为。
2 Linux下对文件编程可以使用两类函数:Linux操作系统文件API,C语言I/O库函数。
3 创建文件-
int create(const char* filename, mode_t mode);
4 打开-
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
5 读写-
int read(int fd,const void *buf, size_t length);
int write(int fd,const void *buf,size_t length);
6 定位-
int lseed(int fd, offset_t offset, int whence);
7 关闭-
int close(int fd);
ProC
1 宿主语言为C,嵌入SQL语句的C语言叫Pro*C。
2 也可以嵌入PL/SQL块,以改进性能,减少网络传输开销。
3 使开发的应用程序具有管理系统资源使用(如内存分配)、SQL语句执行和指示器能力、还可以使用窗口和鼠标技术。
4 提高了应用程序的执行速度,因为它把SQL语句翻译成相应的Oracle库函数调用。
5 声明SQL变量
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR password[20];
EXEC SQL END DECLARE SECTION;
6 SQL通讯区声明
EXEC SQL INCLUDE sqlca;
7 C函数声明,错误处理
void sqlerror();
8 错误处理语句
EXEC SQL WHENEVER SQLERROR DO sqlerror();
9 连接到Oracle数据库
EXEC SQL CONNECT:username IDENTIFIED BY:password;
10 查询语句
EXEC SQL SELECT ENAME,SAL,COMMINTO:emp_name, :salary,:commission
FROM EMP
WHERE EMPNO=:emp_number;
C#_程序集
1 通过反射我们可以知道一个未知类型的类型信息。
2 程序集是任何.NET Framework应用程序的基本构造块。
3 在生成简单的C#应用程序时,Visual Studio 创建一个单个可移植可执行文件形式的程序集,明确地说就是一个EXE或DLL。
4 程序集包含描述它们自己的内部版本号和它们包含的所有数据和对象类型的详细信息的元数据。
5 程序集仅在需要时才加载,如果不使用程序集,则不会加载。
6 程序集可以包含一个或多个模块。
7 计划较大的项目时,可以让各个开发员负责单独的模块,并通过组合所有模块来创建单个程序集。
8 程序集作为.exe或.dll文件实现。
9 通过将程序集放在全局程序集缓存中,可在多个应用程序之间共享程序集。
10 要将程序集放在全局程序集缓存中,必须对程序集进行强命名。
防火墙
1 防火墙主要由服务访问规则、验证工具、包过滤和应用网关四个部分组成。
2 防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件,该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
3 在网络中,防火墙指将内部网和公众访问网(如Internet)分开的方法。
4 防火墙可视为一种IP封包过滤器,运作在底层的TCP/IP协议堆栈上。
5 可以以枚举的方式,只允许符合特定规则的封包通过,其余的禁止穿越。
6 也能从较宽松的角度制定防火墙规则,只要封包不符合任何一项“否定规则”就予以放行。
7 应用层防火墙运作在TCP/IP的应用层,可以拦截进出某应用程序的所有封包。
8 XML防火墙是一种新形态的应用层防火墙。
9 TCP/IP端口 135-139 是Microsoft Windows的网上邻居所使用。
10 防火墙的硬件体系结构经历了通用CPU架构、ASIC架构和网络处理器架构。
11 防火墙配置有三种:Dual-homed方式,Screened-host方式,Screened-subnet方式。
12 天底下的防火墙至少都会说两个词:Yes或No。
Linux下C编程
1 Makefile是一个按格式书写的g++语句文件。
2 Makefile是g++和shell语句**。
3 Make是一种控制编译或重复编译的软件工具,它自动决定一个程序中哪些文件需要重新编译,并重新运行指定的命令。
4 文件名为Makefile或makefile。
5 Makefile的规则格式:
目标(target) : 依赖(prerequiries)
<tab>命令(command)
6 一个最简单的Makefile
all:
g++ hello.cpp -o hello.exe
7 多个Target的编译
all: $(target1)$(target2)
8 调用子文件夹中的Makefile
subsystem:
cd subdir && make
9 GDB单步调试,命令格式
gdb ./program_name
gdb core_name ./program_name
10 GDB单步调试,常用子命令
break <line_num> - 设置断点
continue - 继续执行直到下个断点
step - 单步跳入
next - 单步跳过
print - 打印值
quit - 退出
Oracle
1 段和它的所有盘区都存储在一个表空间中。
2 在最好的粒度层次上,Oracle将数据存储在数据块中(也称为逻辑块、Oracle块或页)。
3 表空间是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。
4 盘区是数据库存储空间分配的一个逻辑单位,它由连续数据块组成。
5 数据块是Oracle管理数据文件中存储空间的单位,为数据库使用的I/O的最小单位。
6 当一段中间所有空间已完全使用时,Oracle为该段分配一个新的范围。
7 USER表空间供一般用户使用,RBS表空间供回滚段使用;一个表空间只能属于一个数据库。
8 段包含表空间中一种指定类型的逻辑存储结构。
9 段的类型:数据段,索引段,回滚段,临时段。
10 回滚段是由DBA建立,用于临时存储要撤销的信息,这些信息用于生成读一致性数据库信息,在数据库恢复时使用,回滚未提交的事务。
C#
1 如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。
2 应用程序结构分为应用程序域-程序集-模块-类型-成员几个层次。
3 公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。
4 反射提供了封装程序集、模块和类型的对象。
5 可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。
6 使用反射,可以使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。
7 使用反射,可以使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。
8 System.Reflection Emit命名空间的类提供了一种特殊形式的反射,可以在运行时构造类型。
9 装配件是.Net应用程序执行的最小单位,编译出来的dll、exe都是装配件。
10 system.reflection.assembly提供了三种方法:Load, LoadFrom, LoadWithPartialName。
Java_Struts 2
1 struts.xml文件用于定义Action类、Action的返回值对应的视图资源,以及命名空间信息等。
2 通过它ActionProxy才知道调用哪个Action去处理当前的请求,并且知道Action处理完后返回到哪个JSP文件去显示。
3 <action name="login" class=" com.examp.ch17.LoginAction">
定义Action类: login
4 <result name="success">success.jsp</result>
登录成功后的转发页面
5 <result name="input">login.jsp</result>
输入错误信息后的转发页面
6 对于3,有:
用户在浏览器中输入 http://localhost:8080/...login.action时,服务器将调用com.examp.ch17.LoginAction类。
Pro*C编程
1 嵌入式SQL语句从功能上分为-可执行的SQL语句,指示语句。
2 可执行的SQL语句同ORACLE数据库进行交互,并将结果返回到SQLLIB或用户变量。
3 在Pro*C源程序中需要执行SQL语句的部位,在SQL语句前加入"EXEC SQL",在SQL语句后用分号结尾。
4 C语言宿主变量同交互式SQL进行数据传输,只需要在C变量前加冒号。
5 ARRAYLEN - 在PL/SQL中使用主机数组变量用。
6 BEGIN DECLARE SECTION - 开始声明宿主变量。
7 END DECLARE SECTION - 结束声明宿主变量。
8 DECLARE - 命名Oracle schema objects。
9 INCLUDE - 包含Oracle Pro*C/C++相关文件。
10 TYPE-定义数据类型,VAR-声明变量类型,WHENEVER-捕获Oracle错误,定义错误处理方法。
Pro*C编程
1 为将Pro*C程序编译成可执行程序,必须经过Oracle预编译程序预编译成c/cpp源程序。
2 然后由系统c/c++编译器编译成可执行程序。
3 Pro*C预编译程序是${ORACLE_HOME}/bin/proc。
4 Pro*C 预编译主要功能将C语言中嵌入的SQL语句转换成高质量的C语言源码。
5 通过SQL通讯区域(SQLCA)和WHENEVER DO语句的结合,可更简单的捕获和处理数据库错误、警告。
Java_Struts 2
1 请求被提交给三层过滤器进行过滤,先是ActionContextCleanup过滤器,接着是其他过滤器如SiteMesh,最后是FilterDispatcher过滤器。
2 FilterDispatcher过滤器对请求进行分类处理,FilterDispatcher在查询ActionMapper时,看该请求是否请求某一个Action,如果是,把请求交给ActionProxy;如果用户请求静态资源,直接把相关资源返回。
3 Configuration Manager 查询struts.xml文件,找到要调用的Action类,并取出该Action的属性,如name、namespace、method等。
4 根据请求的Action类创建ActionProxy实例,在创建ActionProxy实例时会创建一个ActionInvocation实例,然后ActionInvocation会根据配置文件加载与所请求Action相关的Interceptors(拦截器)。
5 所有的Interceptors按照配置时的先后顺序依次对请求进行处理,然后才是Action类的execute方法处理请求;接着根据struts.xml找到要返回的result。
Oracle
1 查看系统被锁的事务时间
select * from v$locked_object;
2 以archivelog方式运行oracle
init ora
log_archive_start=true
RESTART DATABASE
3 获取有哪些用户在使用数据库
select username from v$session;
4 怎样获得数据库的SID
select name from v$database;
也可以直接查看init.ora文件
5 在Oracle服务器上通过SQLPLUS查看本机IP地址
select sys_context('userenv','ip_address') from dual;
6 Oracle安装完成后的初始口令
internal/oracle
sys/change_on_install
system/manager
scott/tiger
sysman/oem_temp
7 ORACLE9I AS WEB CACHE的初始默认用户和密码
administrator/administrator
8 oracle 8.0.5 怎么创建数据库
用orainst,如果有motif界面,可以用orainst/m
9 oracle 8.1.7 怎么创建数据库
dbassist
10 oracle 9i 怎么创建数据库
dbca
C#委托
1 委托是提供对具有特定返回类型和参数列表的方法的一般引用的引用类型。
2 在本质上和C/C++中的函数指针相似;不同在于委托是完全面向对象的-它们既封装方法又封装对象实例。
3 多线程编程中使用委托来指定启动一个线程时调用的方法;委托在异步编程中也用作回调函数。
4 在C#事件模型中委托得到了广泛的应用,它们指明处理给定事件的方法。
5 委托的声明方式和方法的声明方式相似,只是声明语句中包括的是delegate关键字。
6 多播委托是指引用多个方法的委托;当调用委托时,它连续调用每个方法。
通信技术_软件无线电
1 软件无线电-以一个通用、标准、模块化的硬件平台为依托,通过软件编程来实现通信的各种功能。
2 软件无线电(SWR)减少了模拟环节,数字化处理(A/D,D/A)尽量靠近天线。
3 理想的软件无线电是全部可软件编程的,全部可编程包括可编程射频波段、信道接入方式、信道调制。
4 SWR就是宽带模数及数模变换器、大量专用/通用处理器、数字信号处理器构成尽可能靠近射频天线的一个硬件平台。
5 通过可编程数字滤波器对信道进行分离;利用数字信号处理技术在数字信号处理器上通过软件编程实现频段的选择,实现不同的信道调制方式及选择。
6 短波软件无线电主要有三种实现结构-射频全频段数字化采样,中频数字化采样结构,虚拟无线电结构。
7 虚拟无线电利用工作站的强大计算能力取代DSP来完成所有数字信号处理。
8 开源软件无线电是一个对学习,构建和部署软件定义无线电系统的免费软件工具包。
移动通信技术_动态信道分配
1 DCA是动态信道分配的简称,其作用是通过信道质量准则和业务量参数对信道资源进行优化配置。
2 DCA的测量由UTRAN执行,并由UE向UTRAN报告测量结果。
3 为了使空闲模式下的DCA测量最小化,应区分两种情况:与TD-SCDMA系统建立连接时的初始 DCA测量和连接模式下的DCA测量。
4 为了提高系统容量、减少干扰、更有效利用有限的信道资源,蜂窝移动通信系统普遍采用信道分配技术。
5 信道分配有固定信道分配(FCA)、动态信道分配(DCA)、混合信道分配(HCA)。
6 TD-SCDMA系统采用RNC集中控制的DCA。
7 信道动态分配分为2个阶段:第一阶段是呼叫接入的信道选择,采用慢速DCA;第二阶段是呼叫接入后为保证业务传输质量而进行的信道重选,采用快速DCA。
8 RNC根据各相邻小区占用的时隙,计算或测量时隙的干扰情况,动态地在RNC所管辖的各小区间、工作载波间及上下行链路之间进行时隙分配。
移动通信技术_智能天线
1 采用天线阵列,根据信号的空间特性,能够自适应调整加权值,以调制其方向圆图,形成多个自适应波束,达到抑制干扰、提取信号目的的天线。
2 智能天线是一种安装在基站现场的双向天线,通过一组带有可编程电子相位关系的固定天线单元获取方向性,并可以同时获取基站和移动台之间各个链路的方向特性。
3 智能天线的两种类型:交换波束天线,适应阵列。
4 交换波束使用许多窄波束天线,每个指向一个微有不同的方向,以此覆盖整个120度扇区;当扇区内的移动用户移动时,系统内的智能天线从一个天线变换到另一个天线。
5 波束转换天线具有有限数目的、固定的、预定义的方向图,通过阵列天线技术在同一信道中利用多个波束同时给多个用户发送不同的信号。
6 波束转换天线,对于移动用户,基站选择不同的对应波束,使接收的信号强度最大。
7 如果用户信号不在固定波束中心,当使用者在波束边缘而干扰信号在波束中央,接收效果最差;与自适应天线阵比较,波束转换天线不能实现最佳的信号接收。
8 自适应天线阵是一个由天线阵和实时自适应信号接收处理器所组成的一个反馈控制系统。
9 自适应天线阵利用反馈控制方法自动调准天线阵的方向图,使它在干扰方向形成零陷,将干扰信号抵消,并使有用信号得到加强。
10 通常采用4-16天线阵元结构,相邻阵元间距一般取为接收信号中心频率波长的1/2。
C#
1 在C#中指针的使用被认为是“不安全”代码。
2 使用指针的理由:获取好的性能,使C#代码和非.NET代码兼容,偶然可能需要让用户访问内存地址比如调试。
3 C#不允许引用类型有显式的指针,String或数组例外。
4 使用unsafe关键字:
using System; public class PointerDemo
{
public unsafe static void Main()
{
int I=4;
int* pI=&I;
*pI=2;
Console.WriteLine("Value of I is {0}",I);
}
}
5 编译包含不安全代码的程序,必须明确告诉编译器程序包含不安全代码,在命令行编译需要指定/unsafe选项。
6 当对象存放在堆中时,它们在程序的生命周期内可能不会位于固定的内存位置;垃圾收集器会把对象在内存中移动。
7 fixed关键字可以在执行一个代码块时将引用类型实例在内存中的位置固定住;fixed代码块的使用会降低性能。
8 使用指针和stackalloc关键字,可以定义存储在栈中的临时的一维数组,提高代码的性能,代价是没有了越界检查的功能。
9 栈数组使用stackalloc关键字声明,而不是用new关键字。
C#_属性标志
1 属性标志是一种标记,它向C#编译器提供有关代码元素的额外信息。
2 可以通过反射在运行时访问元数据,或者通过其他读取元数据的工具访问。
3 属性标志要求的任何输入参数放在属性标志名后面的圆括号中。
4 当Conditional属性标志用于方法时,编译器将在编译方法前进行条件判断。
5 反射可以展示和程序的代码元素相关的属性标志所包含的元数据。
6 Assembly类封装一个成为程序集的可复用的、可版本化的和自描述的实体。
Java_Struts 2
1 Action是Struts 2的业务控制器,它们调用模型层进行业务逻辑的处理并且根据处理结果返回相应的字符串,以此决定调用哪一个视图去显示。
2 Action的实现类是一个普通的Java类,它和Servlet API相脱离,消除了和Web容器的耦合,使Action类成为一个独立的请求处理模块。
3 Struts 2 框架提供了向Action对象中存、取数据的机制,这个机制要求Action类的每一个属性都要有getter和setter方法。
4 Struts 2 框架也提供了获取JSP表单数据以及向JSP页面设置数据的机制。
5 Action接口定义了一些静态常量,用它们代表一个字符串。
6 Action接口常量:
SUCCESS-当表单数据被成功处理时,
NONE-表单数据被成功处理,但是不需要返回任何JSP页面时,
ERROR-在处理表单数据时发生错误,需要返回一个错误页面时,
INPUT-当表单填写不完整或者不符合格式要求时,
LOGIN-当填写表单的用户还没有登录,而只有登录的用户才能填写该表单,需要返回一个登录界面让该用户登录时。
7 ActionSupport是一个更常用的接口,它是对6个其他接口的集成。
8 Struts 2 框架的Action类可以通过ActionContext去获得Servlet API。
9 一个拦截器就相当于一个独立的功能模块,当某个Action需要该功能时,可以在配置文件为该Action类设置这个拦截器,不需要时,在配置文件中取消即可。
10 可以使用Struts 2内建的拦截器,也可以使用自己定义的拦截器。
汇编语言
1 我们在基于一个计算机硬件系统编程的时候,必须得知道这个系统中的内存地址空间分配情况。
2 8086内存地址空间分配分为三个部分-各类ROM地址空间,显存地址空间,主存储器地址空间。
3 从0-9FFFF单元读,读取的是主存;写A0000-BFFFF,是向显存写;向C0000-FFFFF写无效。
4 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。
5 8086CPU有14个寄存器-AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。
6 8086CPU所有寄存器都是16位的。
7 AX,BX,CX,DX称为通用寄存器。
8 8086的上一代8080、8085,是8位机。
9 8086CPU有20位地址总线,寻址能力1MB。
10 基础地址+偏移地址=物理地址,
段地址*16+偏移地址=物理地址
汇编语言
1 8086一个段的最大长度为64KB。
2 8086CPU有四个段寄存器-CS,DS,SS,ES。
3 8086中,设CS的内容为M,IP的内容为N,CPU将从内存M*16+N单元开始,读取一条指令并执行。
4 8086加电启动或复位后CS和IP被设置为CS=F000H,IP=FFFFH,即此时从内存FFFF0单元读取指令执行。
5 能够改变CS、IP的内容的指令被统称为转移指令。
6 jmp 2AE3:3,执行后,CS=2AE3H, IP=0003H。
7 jmp ax, 执行前,ax=1000H, CS=2000H, IP=0003H
执行后,ax=1000H, CS=2000H, IP=1000H
8 Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
9 Debug命令共20多个,和汇编语言学习密切相关的有6个:R-查看和改变寄存器的内容,D-查看内存中的内容,E-改写内存中的内容,U-将内存中的机器指令翻译成汇编指令,T-执行一条机器指令,A-以汇编指令的格式在内存中写入一条机器指令。
10 DS通常用来存放要访问数据的段地址。
AutoCAD三维图形数据提取方法研究
1 ACIS是一个基于面向对象技术的三维几何造型引擎。
2 ACIS可以向应用程序提供一个包括曲线、曲面和实体造型的统一开发环境。
3 许多著名的CAD/CAM系统都是以ACIS作为造型内核,如AutoCAD, Mechanical Desktop, CADKEY, Bravo等。
4 有两种ACIS存储文件格式:标准的ACIS文本文件(.SAT),标准的ACIS二进制文件(.SAB)。
5 实体是ACIS中最基本的对象,它由C++中的ENTITY类实现;所有的高级ACIS模型对象都继承于ENTITY类。
6 ACIS模型由几何,拓扑,属性构成。
7 ACIS的拓扑包括:体-BODY, 块-LUMP, 壳-SHELL, 子壳-SUBSHELL, 面-FACE, 环-LOOP,线框-WIRE, 公共边-COEDGE, 边-EDGE, 顶点-VERTEX。
8 STA采用完全开放的文件格式,数据以纯文本的形式存储,并以空格和回车分隔。
9 STA文件头共三行,由一系列整数、字体串、双精度数和实数组成。
10 实体记录紧接着文件头,每条实体记录都由索引号(可选)、实体类型标识符、实体数据和终止符组成。
A*算法
1 搜索区域划分为方形网格;搜索区域构成一个二维数组,数组的每一个元素是网格的一个方块。
2 方块被标记为可通过的和不可通过的。
3 路径被描述为从A到B我们经过的方块的**。
4 在A*寻路算法中,我们通过从点A开始,检查相邻方格的方式,向外扩展直到找到目标。
5 从点A开始,并且把它作为待处理点存入一个“开启列表”。
6 寻找起点周围所有可到达或者可通过的方格,跳过无法通过地形的方格,也把它们加入开启列表。
7 为所有这些方格保存点A作为“父方格”。
8 从开启列表中删除点A,把它加入到一个“关闭列表”;列表中保存所有不需要再次检查的方格。
9 接着选择开启列表中的临近方格,大致重复前面的过程。

1 每条边都有方向-有向图,反之则为无向图。
2 在有向图中,通常将边称作弧,含箭头一端为弧头,另一端为弧尾,记作<vi,vj>。
3 若有向图有n个顶点,则最多有n(n-1)条弧,又将具有n(n-1)条弧的有向图称作有向完全图。
4 以顶点v为弧尾的弧的数目称作顶点v的出度,以顶点v为弧头的弧的数目称作顶点v的入度。
5 具有n个顶点的有向图可以用一个n*n的方形矩阵表示,假设该矩阵的名称为M,则当<vi,vj>是该有向图中的一条弧时,M[i,j]=1;否则M[i,j]=0。
6 具有n个顶点的无向图也可以用一个n*n的方形矩阵表示;假设该矩阵的名称为M,则当(vi,vj)是该无向图中的一条边时,M[i,j]=M[j,1]=1,否则M[i,j]=M[j,i]=0。
7 常见的图遍历方式有两种:深度优先遍历,广度优先遍历。
8 深度优先遍历的思想类似于数的先序遍历。
9 深度优先遍历-从某个顶点v出发,访问该顶点,然后依次从v的未被访问的邻接点出发继续深度优先遍历图中的其余顶点,直至图中所有与v有路径相通的顶点都被访问完为止。
10 图的广度优先遍历-从顶点v出发,访问v之后,依次访问v的所有未被访问过的邻接点,然后再访问每个邻接点的邻接点,且访问顺序应保持先被访问的顶点其邻接点也优先被访问,直到图中的所有顶点都被访问为止。
C#聊天程序
1 新建一个Windows应用程序,命名为ChatServer。
2 在窗体上添加一个ListBox,用于显示客户端的用户的一些信息。
3 TcpListener类提供一些简单方法,用于在阻止同步模式下侦听和接受传入连接请求。
4 listener=new TcpListener(listenport);
listener.Start();
5 TcpListener类的AcceptSocket方法返回可用于发送和接收数据的Socket。
6 Socket s=listener.AcceptSocket();
7 当一个连接被建立后,每个客户端被赋予一个属于他自己的套接字。
8 服务器端接收来自客户端的以ASCII码给出的字符串,其中包含一个"|"分隔符,字符串中"|"以前的部分就是具体的命令,包括CONN、CHAT、PRIV、GONE。
9 CONN命令建立一个新的客户端连接,将现有的用户列表发送给新用户并告知其他用户有一个新用户加入。
10 CHAR 命令将新的信息发送给所有用户,PRIV命令将悄悄话发送给某个用户,GONE命令从用户列表中除去一个已离开的用户并告知其他的用户某某已经离开了。
C#
1 C#中的委托可以把一个方法作为参数代入另一个方法。
2 C#中的事件是一种特殊的委托。
3 重载是方法的名称相同,参数或参数类型不同,进行多次重载以适应不同的需要;override 是进行基类中函数的重写。
4 索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取。
5 当一个类包含了数组和**成员时,索引器将大大简化对数组或**成员的存取操作。
6 索引器的定义:
[修饰符] 数据类型 this[索引类型 index]
7 索引器类型表示该索引器使用哪一类型的索引来存取数组或**元素,可以是整数,可以是字符串。
8 索引器的使用:对象名[索引]。
9 接口索引器与类索引器有两个区别:接口索引器不使用修饰符,接口索引器只包含访问器get或set,没有实现语句。
DirectX版本
1 DirectX 是一个用途广泛的API,它包含Direct Graphics(Direct 3D + Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件。
2 没有DirectX 4.0,直接出的5.0。
3 5.0版本对Direct 3D做出了很大的改动,加入了雾化效果、Alpha混合等3D特效,还加入了S3的纹理压缩技术。
4 DirectX 6.0 中加入了双线性过滤、三线性过滤等优化3D图像质量的技术。
5 DirectX 7.0 最大的特色是支持T&L,中文名称-坐标转换和光源。
6 在T&L问世之前,位置转换和灯光都需要CPU来计算;使用了T&L后,这两种计算用显示卡的GPU来计算。
7 DirectX 8.0 引入了“像素渲染”,同时具备像素渲染引擎与顶点渲染引擎,反映在特效上就是动态光影效果。
8 DirectX 9中PS(Pixel Shader)单元的渲染精度已达到浮点精度,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。
俄罗斯方块程序设计
1 实现各个方块的产生,包括形状和颜色等信息。
2 实现各个方块的上下左右移动和旋转的功能。
3 实现消行的功能。
4 还有时间和得分统计,开始、暂停、结束等功能。
5 每个确定的方块都与正方形的某种特定排列方式相对应。
6 编写Block类,它有以下成员:BlockType属性,方块类型的枚举**,构造函数。
7 编写PathGradientBrush类,它通过渐变填充GraphicsPath对象的内部。
扫雷算法
1 随机布雷模块-在该模块中,我们要随机的布置地雷。
2 布雷面板可以用二维int数组表示,某位置为地雷,用-1表示,不是地雷,用0表示。
3 读入3个参数:布雷面板的行数r,列数c,地雷数n。(地雷最大密度为75%)
4 计算该二维数组中不是地雷的位置周围的8个位置总共有多少个地雷,将这一数字存储在该位置。
5 获取用户输入坐标后,若该坐标位置是地雷(值为-1),程序结束,用户排雷失败。
6 若该坐标位置存储的数字大于0小于等于8,则将该位置排开,然后重新输出一遍布雷面板。
7 若该坐标位置存储的数字等于0(该位置不是地雷,该位置周围的8个位置也没有地雷,该位置还未被用户排开),则找该位置的周围8个位置,将其排开。
C#设计模式
1 合成/聚合复用原则(CARP)经常又叫做合成复用原则,就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分。
2 要尽量使用合成/聚合,尽量不要使用继承。
3 迪米特法则又叫最少知识原则,它是说,一个对象应当对其它对象有尽可能少的了解。
4 工厂模式专门负责将大量有共同接口的类实例化。
5 工厂模式可以动态决定将哪一个类实例化。
6 工厂模式有以下:简单工厂,工厂方法,抽象工厂。
7 简单工厂根据提供给它的数据,返回几个可能类中的一个类的实例。
8 工厂方法模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
9 单例模式-单例类只能有一个实例,单例类必须自己创建自己的唯一实例,单例类必须给所有其它对象提供这一实例。
10 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
Oracle监听器配置
1 监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。
2 本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器等。
3 配置Oracle 服务器端与客户端都可以在图形化Oracle网络管理器(Oracle Net Manager)里完成。
4 开始,程序,Oracle-OraHome92/Configuration and Migration Tools/Net Manager,启动网络管理器。
5 在Linux/Unix下,利用netmgr命令来启动Oracle网络管理器。
6 没有监听器,看服务器的监听器启动没有,另外检查客户端IP地址或端口填写是否正确。
7 监听程序无法启动专用服务器进程,是没有启动Oracle实例服务。
8 操作超时,主要跟网络有关;先检查客户端与服务端的网络是否畅通,再检查两端的防火墙是否阻挡了连接。
9 无法处理服务名,检查输入的服务名与配置的服务名是否一致,另外注意生成的本地服务名文件里每项服务的首行服务名称前不能有空格。
10 启动监听服务提示找不到路径,查看注册表HKLM/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListen er项。
Oracle监听器配置
1 监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。
2 本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器等。
3 配置Oracle 服务器端与客户端都可以在图形化Oracle网络管理器(Oracle Net Manager)里完成。
4 开始,程序,Oracle-OraHome92/Configuration and Migration Tools/Net Manager,启动网络管理器。
5 在Linux/Unix下,利用netmgr命令来启动Oracle网络管理器。
6 没有监听器,看服务器的监听器启动没有,另外检查客户端IP地址或端口填写是否正确。
7 监听程序无法启动专用服务器进程,是没有启动Oracle实例服务。
8 操作超时,主要跟网络有关;先检查客户端与服务端的网络是否畅通,再检查两端的防火墙是否阻挡了连接。
9 无法处理服务名,检查输入的服务名与配置的服务名是否一致,另外注意生成的本地服务名文件里每项服务的首行服务名称前不能有空格。
10 启动监听服务提示找不到路径,查看注册表HKLM/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListen er项。
Oracle数据库的启动过程
1 Oracle 数据库启动到nomount状态-Oracle首先寻找参数文件,根据参数文件中的设置,创建实例,分配内存,启动后台进程。
2 查找参数文件顺序:spfile[SID].ora, spfile.ora, init[SID].ora; 没找到则报错,启动不了Instance。
3 启动该状态后可能通过show parameter 查看相关参数;但不能访问DB的结构信息,如select * from v$database。
4 启动数据库到mount状态-Oracle根据参数文件获得控制文件的位置,读取并锁定控制文件;
5 在4中,需要计算mount id并记录在控制文件中,然后开始启动心跳,每三秒更新一次控制文件。
6 同时该过程也需要口令文件,默认是在$ORACLE_HOME/dbs目录下,缺省名称为:orapw<sid>;如果不存在则查找orapw文件,两者都不存在则报错。
7 启动数据库到open状态-在这一步骤中,数据库控制文件中记录的数据文件、日志文件的位置信息、检查点信息等找到相关文件,然后进行检查点及完整性检查,检查完毕后打开数据库,锁定数据文件。
8 该阶段检查包括两项-检查数据文件头中的检查点计数是否与控制文件中的检查点计数一致;
9 检查数据文件头的开始SCN和控制文件中记录该文件的结束SCN是否一致。
10 在数据库出现问题时,警报日志中记录了完整的错误过程和错误号,当出现故障时,应优先检查alert<sid>.log。
C#线程池
1 当CLR初始化时,其线程池中不含有线程。
2 当应用程序要创建线程来执行任务时,该应用程序应请求线程池线程来执行任务。
3 线程池知道后将创建一个初始线程;任务完成后,该线程不会自行销毁,它会以挂起状态返回线程池。
4 如果应用程序再次向线程池发出请求,那么这个挂起的线程将激活并执行任务。
5 线程池提供四种功能-异步调用方法,以一定的时间间隔调用方法,当单个内核对象得到信号通知时调用方法,当异步I/O请求结束时调用方法。
6 要排队线程池任务,可以使用System.Threading命名空间中定义的ThreadPool类。
7 您编写的回调方法必须与System.Threading.WaitCallback委托类型相匹配。
8 获取线程池的最大线程数和维护的最小空闲线程数:
int maxThreadNum,portThreadNum;
int minThreadNum;
ThreadPool.GetMaxThreads(out maxThreadNum, out portThreadNum);
ThreadPool.GetMinThreads(out minThreadNum, out portThreadNum);
9 启动一个任务
ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc1),x);
C++深拷贝与浅拷贝
1 普通类型的对象,它们之间的复制是简单的;类对象则不同,类对象内部结构一般较为复杂。
2 相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。
3 拷贝构造函数,函数的名称必须和类名称一致,它的唯一一个参数是本类型的一个引用变量,该参数是const类型;类X的拷贝构造函数的形式为X(X& x)。
4 以下情况会调用拷贝构造函数:一个对象以值传递的方式传入函数体,一个对象以值传递的方式从函数返回,一个对象需要通过另外一个对象进行初始化。
5 如果在类中没有显式地声明一个拷贝构造函数,编译器将自动生成一个默认的拷贝构造函数,该函数完成对象之间的位拷贝,位拷贝也称浅拷贝。
6 某些状况下,类内成员变量需要动态开辟堆内存,如果位拷贝-也就是把对象里的值完全复制给另一个对象,如A=B;如果B中有一个成员变量指针已经申请了内存,那A中的那个成员变量也指向同一块内存;这就出现问题,当B把内存释放了,A内的指针就是野指针。
7 深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程时,资源重新分配,这个过程就是深拷贝,没有重新分配资源就是浅拷贝。
Oracle
1 Oracle具有甲骨文的意思,为全球第二大软件公司。
2 关系数据库-Relational Database-RDB。
3 1984年10月,Oracle发布第4版,1985年发布5.0版。
4 1998.9,发布Oracle 8i;i代表Internet;Oracle 8i为第一个完整整合了本地Java运行时环境的数据库。
5 2001.6,发布Oracle 9i,它包括了数据库服务器,应用服务器,网络开发工具套件。
6 2004,推出Oracle 10g, g代表"grid,网格"。
7 数据库需要解决的问题-数据冗余,数据管理,数据独立性,数据控制;数据控制又包括-数据并发控制,数据恢复,数据完整性,数据安全性。
8 每一个运行的Oracle数据库与一个Oracle实例(Instance)相联系。
9 一个Oracle实例为存取和控制一数据库的软件机制。
10 Instance=内存分配 + 一组后台进程。
Oracle
1 如果把Oracle比做一部汽车,Instance相当于汽车的发动机,启动Oracle前应先启动Instance。
2 每一次在数据库服务器上启动一数据库时,称为系统全局区(SGA)的一内存区被分配,有一个或多个Oracle进程被启动。
3 该SGA和Oracle进程的结合称为一个Oracle数据库实例。
4 在Oracle中,首先是实例启动,然后由实例装配数据库;在松耦合系统中,单个数据库可被多个实例装配,即多个实例共享同一物理数据库。
5 Oracle在内存中存储下列信息:执行的程序代码,连接的会话信息,程序执行期间所需数据和共享的信息,存储在外存储上的缓冲信息。
6 Oracle具有下列基本的内存结构:软件代码区,系统全局区SGA-包括数据库缓冲存储区、日志缓冲区、共享池,程序全局区PGA-包括栈区和数据区,排序区。
7 每一个Oracle数据库由数据文件、日志文件、控制文件和其它信息文件组成。
8 数据文件的特征:一个数据文件仅与一个数据库联系,一旦建立、数据文件不能改变大小,一个表空间由一个或多个数据文件组成。
9 为减少磁盘输出总数,数据文件中的数据在需要时可以读取并存储在Oracle内存储区中,然后由Oracle后台进程DBWR决定如何将其写入到相应的数据文件。
10 一个数据库一个控制文件,它记录数据库的物理结构,它包含有:数据库名,数据库数据文件和日志文件的名字和位置,数据库建立日期。
Oracle
1 如果把Oracle比做一部汽车,Instance相当于汽车的发动机,启动Oracle前应先启动Instance。
2 每一次在数据库服务器上启动一数据库时,称为系统全局区(SGA)的一内存区被分配,有一个或多个Oracle进程被启动。
3 该SGA和Oracle进程的结合称为一个Oracle数据库实例。
4 在Oracle中,首先是实例启动,然后由实例装配数据库;在松耦合系统中,单个数据库可被多个实例装配,即多个实例共享同一物理数据库。
5 Oracle在内存中存储下列信息:执行的程序代码,连接的会话信息,程序执行期间所需数据和共享的信息,存储在外存储上的缓冲信息。
6 Oracle具有下列基本的内存结构:软件代码区,系统全局区SGA-包括数据库缓冲存储区、日志缓冲区、共享池,程序全局区PGA-包括栈区和数据区,排序区。
7 每一个Oracle数据库由数据文件、日志文件、控制文件和其它信息文件组成。
8 数据文件的特征:一个数据文件仅与一个数据库联系,一旦建立、数据文件不能改变大小,一个表空间由一个或多个数据文件组成。
9 为减少磁盘输出总数,数据文件中的数据在需要时可以读取并存储在Oracle内存储区中,然后由Oracle后台进程DBWR决定如何将其写入到相应的数据文件。
10 一个数据库一个控制文件,它记录数据库的物理结构,它包含有:数据库名,数据库数据文件和日志文件的名字和位置,数据库建立日期。
排序
1 排序的目的是将一组无序的记录序列调整为有序。
2 可分为内部排序和外部排序;整个排序过程不需要访问外存为内部排序;若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。
3 内部排序的过程是一个逐步扩大记录的有序序列长度的过程。
4 内部排序有五类:插入排序,选择排序,交换排序,归并排序,分配排序。
5 插入排序主要包括直接插入排序和希尔排序;选择排序主要包括直接选择排序和堆排序;交换排序主要包括气(冒)泡排序和快速排序。
6 假设在待排序的文件中,存在两个或两个以上的记录具有相同的关键字,在用某种排序法排序后,若这些相同关键字的元素的相对次序仍然不变,则这种排序方法是稳定的。
7 冒泡,插入,基数,归并属于稳定排序;选择,快速,希尔,堆,属于不稳定。
8 若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间为O(1),则称为就地排序。
9 冒泡排序优点-稳定;缺点-慢,每次只能移动相邻两个数据。
10 选择排序原理-每一趟从待排序的数据元素中选出最小(或最大)的一个,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
Oracle
1 数据库逻辑结构包含表空间、段、范围、数据块、模式对象。
2 一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间。
3 Oracle分为系统表空间和非系统表空间,每一个Oracle数据库包含一个名为SYSTEM的系统表空间。
4 Oracle通过段、范围和数据块可更细地控制磁盘空间的使用。
5 每一个数据库用户对应一个模式。
6 Oracle进程分为两类-服务器进程和后台进程。
7 重要的后台进程:DBWR-负责将数据的更改由缓冲区写到数据文件,LGWR-负责将日志缓冲区写到日志文件,SMON-检查数据库的一致性,PMON(Process Monitor)-用户进程失败时、进程监控程序实现进程恢复,CKPT-在数据缓存永久写入数据库时,负责更新数据库的控制文件中的状态信息。
C#元数据
1 元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件(PE)或存储在内存中的程序进行描述。
2 将代码编译为PE文件时,便会将元数据插入到该文件的一部分中,而将代码转换为Microsoft 中间语言(MSIL)并将其插入到该文件的另一部分中。
3 在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。
4 当执行代码时,运行库将元数据加载到内存中,并引用它来发现有关代码的类、成员、继承等信息。
5 元数据存储以下信息:程序集的说明,类型的说明,属性。
6 程序集的说明:标识(名称,版本,区域性,公钥),导出的类型,该程序集所依赖的其他程序集,运行所需的安全权限。
7 对于一种更简单的编程模型来说,元数据是关键,该模型不再需要接口定义语言(IDL)文件、头文件或任何外部组件引用方法。
8 元数据允许.NET语言自动以非特定语言的方式对其自身进行描述。
9 通过使用属性,可以对元数据进行扩展。
IL汇编
1 IL拥有各种高级特性,它知道什么是泛型,什么是类和方法,什么是继承,什么是字符串等。
2 MSIL-微软中间语言。
3 执行MSIL命令和函数由3个步骤完成-把命令操作数和函数参数压入栈(ld命令),执行命令或者调用函数,从栈中读取结果值(st命令)。
4 .entrypoint指令定义程序的入口点,该函数在程序启动的时候由.NET运行库调用。
5 .maxstack定义函数代码所用堆栈的最大深度。
6 ldstr命令把一个字符串常量装入堆栈。
7 ldc.i4.n把一个32位的常量装入堆栈。
8 stloc.n把一个从堆栈中返回的值存入第n个局部变量。
9 ldlen把数组的长度装入堆栈。
10 blt.s label 跳转到label。 
古老的8085汇编器 看看先贤们在古老的年代(作于1988年)所写的古老的8085汇编器(BTW:8085是intel的8位的微处理器,比8086/8088还要古老),明显的2遍扫描的处理方式,将汇编语言转换为机器语言,输出文件为.lst和.hex文件。 代码结构简洁,有效文件仅有6个,容易研读和分析,研读时候需要找到8085的datasheet,以便分析每条指令的意义和程序的汇编过程。 asm80 |-- [Apr 21 1988] Makefile |-- [Apr 21 1988] README |-- [Apr 21 1988] as81.c |-- [Apr 21 1988] as82.c |-- [Apr 21 1988] as83.c |-- [Apr 21 1988] as85.c |-- [Apr 21 1988] asm.c |-- [Apr 21 1988] asm.h |-- [Apr 21 1988] asm80.1 `-- [Apr 21 1988] asm80.doc 0 directories, 10 files 代码包含有3个压缩文件 -rw-r--r-- 1 root root 25362 Dec 4 2001 asm80.tar.Z -rw-r--r-- 1 root root 16795 Oct 7 23:57 asm80.tar.gz -rw-r--r-- 1 root root 21523 Oct 18 12:56 asm80-121018.tar.gz 其中的asm80.tar.Z是原封不动的原始的代码用Linux环境下的编译器稍微做改动放可编译通过 解压方式: tar zxvf asm80.tar.Z 其中的asm80.tar.gz是稍微做改动可在Linux环境下的编译器编译通过的代码包,改动点只有一处, 位于asm.h文件的15行,改动如下(原有的代码注释保留,改动后的放在其下面。): //#define putback(c) ((c) != '\0' && --sptr < sbuf && abort()) #define putback(c) ((c) != '\0' && --sptr < sbuf && ({abort();0;})) //snallie@tom.com, Sun Oct 7 22:38:47 CST 2012 编译过程如下 [root@localhost dd]# tar zxf asm80.tar.gz [root@localhost dd]# cd asm80 [root@localhost asm80]# make cc -O -c -o asm.o asm.c cc -O -c -o as81.o as81.c cc -O -c -o as82.o as82.c cc -O -c -o as83.o as83.c cc -O -c -o as85.o as85.c cc -O asm.o as81.o as82.o as83.o as85.o -o asm80 使用asm80 汇编a.asm,生成a.lst以及a.hex [root@localhost asm80]# ./asm80 -l a.asm Total bytes assembled = A20D [root@localhost asm80]# more a.lst a.asm KSE cross assembler for the 8080 page 1 1 ; 2 ; a.asm , a 8080 asm source file 3 ; snallie@tom.com 4 ; Sun Oct 7 22:38:47 CST 2012 5 ; 0100 6 org 100H 0100 7 start: 0100 160A 8 mvi d, 0AH 0102 0E0B 9 mvi c, 0bH 0104 3E00 10 mvi a, 0 0106 CD00A2 11 call subRoutine 0109 00 12 nop 010A C30E01 13 jmp exit 010D 00 14 nop 010E 15 exit: 010E 76 16 hlt 17 A200 18 org 0a200H A200 19 subRoutine: A200 80 20 add b A201 81 21 add c A202 00 22 nop A203 C9 23 Ret 24 A204 25 bufByte: A204 01 26 db 1 A205 27 bufWord: A205 01000200 28 dw 1,2,3,4 A209 03000400 A20D 29 End start ^L a.asm Symbol table dump Page 1 bufbyte = A204 bufword = A205 start = 0100 exit = 010E subroutine = A200 ^L [root@localhost asm80]# more a.hex :0F010000160A0E0B3E00CD00A200C30E010076C2 :0DA20000808100C90101000200030004007C :00000000 [root@localhost asm80]# 其中的asm80-121018.tar.gz对代码做了加大改动,并加入的测试的用例及研读的注释,增加的若干的伪指令。 这个编译器的指令表为对指令名按字典序排序的,需要增加新的伪指令是要注意,加入新指令后仍然要保持按字典序排序。 === 古老的经典代码,让你温故而知新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值