无他,唯手熟尔
B~树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树 (Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂
PL/SQL进阶----例外处理 ORACLE将例外分为预定义例外,非预定义例外和自定义例外三种。 预定义例外用于处理常见的ORACLE错误 非预定义例外用于处理预定义例外不能处理的例外 自定义例外用于处理与ORACLE错误无关的其他情况 A>例外传递 如果不处理例外会出现什么情况: 案例,编写一个过程,可接收雇员的编号,如果雇员的编号不存在 ---例外案例
pl/sql进阶:控制结构 在任何计算机语言(C, JAVA, PASCAL )都有各种控制语句(条件语句,循环语句,顺序控制结构…)在 pl/sql 中也存在这样的控制结构。 1)if 语句 2)循环语句 3)控制语句—goto 和 null >>条件分支语句 pl/sql中提供了三种条件分支语句 if -- then, if--then--else,
PL/SQL的进阶----编写分页过程 介绍 分页是任何一个网站(bbs,网上商城, blog)都会使用到的技术,因此学习 pl/sql 编程开发就一定要掌握该技术。 ①无返回值的存储过程 古人云:欲速则不达。首先是掌握最简单的存储过程,无返回值的存储过程: 案例:现在有一张表,字段有“书号,书名,出版社”。请编写一个存储过程,可以向book表添加书,要求通过JAVA程序调
cursor 1. declare eg: declare c1 cursor for ....(sql select salary from employees;) declare <游标名> cursor for <select语句>; 2. open eg: open c1; open <游标名>
pl/sql 基础---定义并使用变量! 在编写 pl/sql 程序时,可以定义变量和常量;在pl/sql 程序中包括有: ①标量类型 (scalar) ②复合类型 (composite) ③参照类型 (reference) ④lob (large object) >标量(scalar)-- 常用类型 在编写 pl/sql 块时,如果要使用变量,需在定义部
Windows操作系统堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配
关键字:概念, 前缀表达式, 前缀记法, 中缀表达式, 中缀记法, 波兰式, 后缀表达式, 后缀记法, 逆波兰式 它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。 举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表达式3 4
遍历方案 从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作: ⑴访问结点本身(N), ⑵遍历该结点的左子树(L), ⑶遍历该结点的右子树(R)。 以上三种操作有六种执行次序: NLR、LNR、LRN、NRL、RNL、RLN。 注意:
iSCSI技术以其低廉的构建技术和优秀的存储性能,博得了很多CIO和存储管理员的喜爱,目前陆续进入企业应用领域,推动了企业的存储环境向集中式转变。虽然,目前对于iSCSI应该在什么样的环境中使用还存在着诸多争议,但是iSCSI的前途是光明的,在未来的存储世界中,iSCSI一定会占据重要的席位。 在存储的世界里,有各种各样的名词和术语,常见的有 SCSI, FC, DAS, NAS,
server.c:从客户端读字符,然后将每个字符转换为大写并回送给客户端。 client.c:从命令行参数中获得一个字符串发给服务器,然后接收服务器返回的字符串并打印。 others... 1.该例子不仅功能简单,而且简单到几乎没有什么错误处理,我们知道,系统调用不能保证每次都成功,必须进行出错处理,这样一方面可以保证程序逻辑正常,另一方面可以迅速得到故障信息。 为使
服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回。 数据传输的过程: 建立连接后
socket这个词可以表示很多概念: 在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接。socket本身有“插座”的意思,因此用来描述网络连接的一对一关系。 TCP/IP协议
问题:如果发送端发送的速度较快,接收端接收到数据后处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据, TCP协议通过''滑动窗口(SlidingWindow)''机制解决这一问题。 1. 发送端发起连接,声明最大段尺寸是1460,初始
<1>建立连接的过程: 1. 客户端发出段1,SYN位表示连接请求。序号是1000,这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺序,也可以发现丢包的情况,另外,规定SYN位和FIN
如果系统管理员希望添加一个用户以后,让该用户第一次登录以后自己设置自己的密码,那么就要使得用户的初始密码或者空密码立刻过期,强制用户第一次登录后立刻修改密码。 为了强制用户第一次登录时设置一个新密码,请按照下面的指示来做,但是需要的注意的时候如果用户是通过SSH远程登录进去的,那么该方法是不能生效的。 1. 锁定用户密码 - 如果用户不存在,用useradd添加用户,但是
1.分类 2. CIDR(Classless Interdomain Routing) 子网掩码 IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。 3.私有IP 如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址,
/* linkedlist.h */ #ifndef LINKEDLIST_H #define LINKEDLIST_H typedef struct node *link; struct node { unsigned char item; link next;}; link make_node(unsigned char item);void
#!/bin/bash a=1 while [ $a -le 5 ] do b=1 while [ $b -le $a ] do echo -n $b let b++ done let a++ echo done -------------------------------------
linux下多进程、多线程编程 linux下进程 (一) 理解Linux下进程的结构 Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,其实学过汇编语言的人一定知道,一般的CPU象I386,都有上述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那
1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可
const限定符和指针结合起来常见的情况: const int *a; int const *a; 这两种写法是一样的, a是一个指向const int型的指针, a所指向的内存单元不可改写, 所以(*a)++是不允许的, 但a可以改写, 所以a++是允许的. int* const a; a是一个指向int型的const指针, *a是可以改写的, 但a不允许改写.
[摘抄自"百度运维团队技术博客"] 等级与能力 T4需要具备什么样的能力? 你熟练掌握运维基础技能么? 如(仅举例): SSH的原理是什么?如何保证安全性?什么是非对称加密?什么是中间人攻击?SSH是如何避免中间人攻击的?这个特性对传输正确性有哪些影响?known_hosts和中间人攻击是什么关系?为什么里面写的密钥和我写到远程的公钥不一致?这个密钥又是什么?会有什么影响? 你了
字符串操作函数 程序按功能划分可分为数值运算、符号处理和I/O操作三类,符号处理程序占相当大的比例,符号处理程序无处不在,编译器、浏览器、Office套件等程序的主要功能都是符号处理。无论多复杂的符号处理都是由各种基本的字符串操作组成的,这里简单介绍如何用C语言的库函数做字符串初始化、取长度、拷贝、连接、比较、搜索等基本操作。 1.初始化字符串 #include <stri
先看一个例子: int a[10]; int *pa = $a[0]; pa++; 首先指针pa指向a[0]的地址,注意后缀运算符的优先级高于单目运算符,所以是取a[0]的地址,而不是取a的地址。然后pa++让pa指向下一个元素(也就是a[1]),由于pa是int *指针,一个int型元素占4个字节,所以pa++使pa所指向的地址加4,注意不是加1。 从前面的例子我们发现,地址的具体
LVS-DR 注意:图里面 "客户IP->路由器", "路由器-> 调度器" 里面的 "D_IP" 应该写错了,应该是 172.1.1.254 架构简图 简略配置 DIRECTOR ROUTE 架构! 【client】 ip 【router】 ip iptables \-> iptables -t nat
注意:图里面 "客户IP->路由器", "路由器-> 调度器" 里面的 "D_IP" 应该写错了,应该是 172.1.1.254 简略实验的架构图: 实验配置要点 【client】 1>--> ip 【router】 1>-->ip 2>-->iptables
字符串长度 shell>echo ${#string} shell>expr length $string shell>expr "$string" : '.*' 匹配字符串开头的子串长度 expr match "$string" '$substring' $substring 是一个正则表达式. expr "$string" : '$substri
mysql目前支持的引擎种类以及比较: 【分析待续】
*************************************************************************************************************************** mysql体系结构: 由:连接池组件、管理服务和工具组件、sql接口组件、查询分析器组件、优化器组件、缓冲组件、插件式存储
limits.conf的工作原理: limits.conf的后端是这样工作的:limits.conf是 pam_limits.so的配置文件,然后/etc/pam.d/下的应用程序 调用pam_***.so模块。譬如说,当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模
#------------------------------------------------------------------------- # 强烈注意, 在赋值的的时候, 等号前后一定不要有空格. # 如果出现空格会怎么样? # "VARIABLE =value" # ^ #% 脚本将尝试运行一个"VARIABLE" 的命
1.已经在生产环境中跑的apache!如何屏蔽! 屏蔽apache的版本信息! 一定程度上可以防止黑客的攻击效率! 因为有时候系统没有来得及升级,而低版本的出现了漏洞! shell> curl -I URL ///这样会看到它系统的版本信息! 配置: /usr/local/apache2/conf//httpd.conf =>Include conf/extr
专有命令[ ( 左中括号, 特殊字符). 这个命令与test命令等价, 并且出于效率上的考虑, 这是一个内建命令. 这个命令把它的参数作为比较表达式或者作为文件测试, 并且根据比较的结 果来返回一个退出状态码(0 表示真, 1表示假). if test condition-true结构与if [ condition-true ] 完全相同. 左中括号,[ , 是 调用test命令的标
files----> keep.data nokeep.data keepalive.output shell> yum install -y gnuplot ///gnuplot--->画图软件! shell> ab -k -g /tmp/test/keep.data -n 10000 -c 10000 http://10.1.1.235/t
Eval! shell> a=abc shell> b=def shell> $a=ghi ///Wrong ! $a-->only as right value! shell> eval $a=nice /// Right! shell> echo $abc nice shell>eval "string" ///eval 会和
Generate_array! while read a; do arr[x++]="${a}"; done < ip_list.txt #arr[x]-->form -->"20 192.168.0.1" ip_list.txt: 20 192.168.0.1 10 192.168.0.2 30 192.168.0.3 F
Notice , the argument of your configuring the PHP! They are "/usr/src/php-5.3.10/ext [extend]" here! such as:libxml! shell> lsbcmath libxml ... and other modules list -------------
vim /boot/grub/grub.conf method1: timeout=5-------->timeout=0 //// no grub view when starting the system.(my new idea) method2: add a line:
#!/bin/bash #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
top \---->enter:"d" ---------> Change delay from 3.0 to: 2 ///将刷新时间从 3.0 s 改成 2.0s ! 3.0s 是它的全局的系统默认设置! \---->enter:"1" --------->如果有多个CPU [cpu(0),cpu(1)..],会分开显示cpu的信息! 再按
#include <stdio.h> #include <stdlib.h> int main(void) { while(malloc(siezof(int))); return 0; } malloc并不负责把分配的内存空间清零! 需要free释放! 简单的malloc&free实现:
读《世界是平的》有感! 计算机改变了世界,我是多么期待这个世界是真 "平" 的,这一切,又是多么地不现实! Rip it up ! 路漫漫,吾将上下而求索 ……