昨天登上vps想给系统做下update,哪知道中美网络连接那么差,升到一半断线了,后来没在意,又重新升级。看到有安装kernal相关的软件包,于是就reboot。然后悲剧发生了,vps就启动不了了。最后重装系统,记住这次教训,以后做update一定要开screen!!!还好数据库在12月23日备份过一次,但是也丢了一篇文章和几条评论。。。
Linux下消息队列学习(1)
消息队列是进程间通讯的一种方法,一开始我以为消息队列是类似一个管道,一头连接一个进程、一头连接另一个进程,只能由这两个进程来进行互相的读写。其实这是错的,消息队列是系统层面的,它不属于某两个进程,它是由系统维护的一个链表结构。对消息队列的读写就是一个对链表的操作,默认是在链表的一端写数据,另一端读数据(先进先出),进程也可以取指定某种消息类型的消息。
在一个进程里创建了消息队列,且是可读可写的,那么系统中的所有进程都可以对它进行读写操作。
1、打开或创建一个消息队列
原型:int msgget(key_t key, int msgflg);
参数:
1)key :消息队列的key值。
2)msgflg:
IPC_CREAT:如果key对应的消息队列对象不存在,则创建;否则则进行打开操作,返回0。
IPC_EXCL:如果key对应的消息队列对象不存在,则返回-1;否则则进行打开操作,返回0。
权限控制:0666表示可读可写,和上面的IPC_CREAT做逻辑或操作。
返回值:
成功返回,创建的或打开的消息队列的id。
失败返回-1。
例子程序:test1.c
#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <stdio.h> int main(void) { int msgid; printf("this is test1!\n"); msgid = msgget(1001, 0666|IPC_CREAT); printf("msgid = %d\n", msgid); return 0; }
oracle spool命令
spool是sqlplus的内置命令,作用是将数据库中的字段导出为文本,一般都是通过shell脚本来实现。
举例:test.sh
#! /bin/sh sqlplus -s scott/tiger<<EOF set head off set linesize 20000 set echo off set feedback off set pagesize 0 set termout off set trimout on set trimspool on spool /home/test.txt select empno || '|' || ename || '|' || job || '|' || mgr || '|' || hiredate || '|' || sal || '|' || comm || '|' || deptno from emp; spool off exit; EOF
spool常用的设置:
set head off:输出域标题,缺省为on
set linesize 20000:linesize可以设置的大点,防止一行长度不够
set echo off:显示sqlplus中的每个sql命令本身,缺省为on
set feedback off:回显本次sql命令处理的记录条数,缺省为on
set pagesize 0:输出每页行数,缺省为24,为了避免分页,可设定为0
set termout off:显示脚本中的命令的执行结果,缺省为on
set trimout on:去除标准输出每行的拖尾空格,缺省为off
set trimspool on:去除重定向(spool)输出每行的拖尾空格,缺省为off
参考资料:
http://wallimn.iteye.com/blog/472182
http://wenku.baidu.com/link?url=UaJq13FHgH87D5wITX0zcS4XxB6GkPec8mkNIuDP5hWiPvmhk2L-5sEOgECU2xRAfosPnwh3bgPpPmHNTICtE1qxsTuxPaI4ktuu9EVQNcG
11月16日
第一次参加公司拓展
昨天周六,公司组织员工拓展,早上7点公司集中,9点就开到了青浦淀山湖旁的一个拓展基地。
活动场地是一块大草坪,所有人员分成6个小组PK。上午做了一个活动:翻牌,教练把26张牌放在距离起点5米远的草地上,一人只能翻一张牌,翻牌的顺序是从红1、黑1一直到红K、黑K,如果翻出来的不是目前需要的牌还要扣回去。看哪个小组先把牌翻完。
中午吃完饭后,女同事去玩一些小游戏,男同事在做搭竹竿的游戏,游戏规则是:在两颗树之间系上一根绳子,作为障碍物,给了每个小组5根毛竹和绳子,需要在规定的时间内搭出一个架子可以让人翻越树上的绳子。并且毛竹和人都不能触碰到树上的绳子。
最后一个项目是使用简单的乐曲,去奏一个乐章。通过拓展,加深了同事之间的沟通,了解同事在工作之外的其它方面,另外团队协作也受到了锻炼。
公司提供早饭、中饭,拓展活动结束后还有点心提供,很用心。
SQL中and和or优先级
优先规则
求值顺序 | |
1 | 算术运算 |
2 | 连字操作 |
3 | 比较操作 |
4 | IS [NOT] NULL, LIKE, [NOT] IN |
5 | [NOT] BETWEEN |
6 | NOT 逻辑条件 |
7 | AND 逻辑条件 |
8 | OR 逻辑条件 |
使用圆括号改变优先规则
如果不带括号,where条件中and和or共存时,会以or来分割
在emp表中查询,薪水大于1500,部门号为10或者奖金大于0的记录:
select * from emp where sal >1500 and deptno = 10 or comm > 0;
上面一句结果会和预期不符,因为or优先级比and低,所以where后的条件分为sal >1500 and deptno = 10(条件一)或者comm > 0(条件二)。
遇到这种情况需要加括号:
select * from emp where sal >1500 and (deptno = 10 or comm > 0);
参考资料:
http://blog.163.com/xiaosanshaoli@126/blog/static/2979216320093294392425/
PL/SQL基础学习笔记(2)-游标、存储过程、函数、触发器
–1、游标
–cursor游标,游标是指向一个select语句结果集的指针
declare cursor c is select * from emp; v_emp c%rowtype; begin open c; fetch c into v_emp; dbms_output.put_line(v_emp.ename); close c; end; /
说明:
1)首先声明游标指向一个结果集。
2)定义变量v_emp是游标所指向的结果集的记录类型。
3)open c,打开游标,只有打开游标后,PL/SQL才会执行声明游标的select语句。
4)fatch c into v_emp,把当前游标指向的这条记录放在v_emp变量里面。
fatch执行后游标自动向下移动一行记录。指向下一条记录。
5)用完游标后要close。
继续阅读PL/SQL基础学习笔记(2)-游标、存储过程、函数、触发器
解决xp搜索只能搜注册的文件类型
引用自:
http://support2.microsoft.com/?id=309173
要将 Windows XP 配置为能够搜索所有文件(无论文件类型是什么),请获取最新的 Windows XP Service Pack,然后打开“含有未知扩展名的索引文件类型”选项。
如果您使用该方法,Windows XP 会在所有文件类型中搜索您指定的文本。这可能会影响搜索功能的性能。为此,请按照下列步骤操作:
1.单击“开始”,然后单击“搜索”(或指向“搜索”,然后单击“文件或文件夹”)。
2.单击“改变首选项”,然后单击“使用制作索引服务(使本地搜索更快)”。
3.单击“改变制作索引服务设置(高级)”。请注意,您不必打开索引服务。
4.在工具栏上,单击“显示/隐藏控制台树”。
5.在左窗格中,右键单击“本机索引服务”,然后单击“属性”。
6.在“生成”选项卡上,单击以选中“含有未知扩展名的索引文件”复选框,然后单击“确定”。
7.关闭索引服务控制台。
PL/SQL基础学习笔记
PL SQL是在oracle里面的编程语言,用来写存储过程、触发器、函数等等。
PL SQL语言是SQL的补充。SQL没有分支,没有循环,是第四代编程语言,非过程的,只要求得结果。
PL SQL写程序非常的固定:
[DECLARE]
–声明部分,可选。声明各种变量游标
BEGIN
–执行部分,必须。从这儿开始,程序开始执行
[EXCEPTION]
–异常处理部分,可选。相当于catch到exception时执行的东西
END;
–结束,end后要有分号
–最简单的语句块
begin dbms_output.put_line('Hello World!'); end; /
说明:
1)必须先执行
set serveroutput on;
才能看到输出
2)“/”表示执行,相当于输入了run;
继续阅读PL/SQL基础学习笔记
oracle数据库对象-视图
视图是数据库里的一个对象。视图是一个子查询,或者说就是一张表。视图里的表是虚表。
视图名称一般以vi或v$开头。
–为test_t表创建视图
create view vi_test_t as select id AAAA, no BBBB, t_name CCCC, s_name DDDD, score EEEE from test_t where score > 60;
–查询视图
select * from vi_test_t;
AAAA | BBBB | CCCC | DDDD | EEEE |
2 | 2 | Mary | 李四 | 99 |
3 | 3 | Tom | 王五 | 76 |
。。。以下记录省略
继续阅读oracle数据库对象-视图
SQL union学习
union和union all都是将多个查询的结果集合并到一张表里。union缺省在合并结果集后消除重复项,union all指定在合并结果集后保留重复项。
union默认用第一个字段进行排序,当然也可以在最后一个结果集里用order by子句排序。
把TEST_T表重新改一下:
drop table test_t;
CREATE TABLE
TEST_T
(
ID NUMBER,
NO NUMBER,
T_NAME VARCHAR2(50),
S_NAME VARCHAR2(50),
SCORE NUMBER
);
insert into TEST_T VALUES(1, 1, 'Peter', '张三', 60);
insert into TEST_T VALUES(2, 2, 'Mary', '李四', 99);
insert into TEST_T VALUES(3, 3, 'Tom', '王五', 76);
继续阅读SQL union学习