自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

转载 按位与、或、异或等运算方法

按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;       即:两位同时为“1”,结果才为“1”,否则为0例如:3&5  即 0000 0011 & 0000 0101 = 0000 0001   因此,3&5的值得1。 另,负数按补码形式参加按位与运

2015-11-30 09:16:48 375

转载 阻塞机制下的recv小结

recv是socket编程中最常用的函数之一,在阻塞状态的recv有时候会返回不同的值,而对于错误值也有相应的错误码,分别对应不同的状态,下面是我针对常见的几种网络状态的简单总结。      首先阻塞接收的recv有时候会返回0,这仅在socket被正常关闭时才会发生。      而当拔掉设备网线的时候,recv并不会发生变化,仍然阻塞,如果在这个拔网线阶段,socket被关掉了,后果可能

2015-11-26 13:35:02 305

转载 数组名与数组名的地址

假设我们定义一个数组char a[16]; 那么a与&a分别代表什么呢?它们完全一样吗?      a其实代表的是数组中首元素的地址,即a[0]的地址,&a代表的是整个数组的起始地址。我们做个测试就可以很容易知道。      我们分别测试a  a+1  &a   &a+1这四个值,它们分别为:a0x0012fcc8a+10x001

2015-11-21 00:55:52 642

转载 GCC 提供的原子操作-__sync_fetch_and_add系列

最近编码需要实现多线程环境下的计数器操作,统计相关事件的次数。下面是一些学习心得和体会。不敢妄称原创,基本是学习笔记。遇到相关的引用,我会致谢。    当然我们知道,count++这种操作不是原子的。一个自加操作,本质是分成三步的:     1 从缓存取到寄存器     2 在寄存器加1     3 存入缓存。    由于时序的因素,多个线程操作同一个全局变量,会出现问题。这也

2015-11-17 16:05:29 4238

转载 EPOLL简介

EPOLL事件分发系统可以运转在两种模式下:Edge Triggered (ET)、Level Triggered (LT)。LT是缺省的工作方式,并且同时支持block和no-blocksocket;在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可能性要小一点。传统的selec

2015-11-16 16:05:11 659

转载 linux中fork()函数详解

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来

2015-11-16 14:35:37 220

转载 Linux pipe函数

1. 函数说明pipe(建立管道):1) 头文件 #include2) 定义函数: int pipe(int filedes[2]);3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。              filedes[0]为管道里的读取端              filedes[1]则为管道的写入端。4) 返回值: 

2015-11-16 14:26:41 262

原创 epoll 使用简单例子

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXBUF 1024#define MAXEPOLLSIZE 6553

2015-11-13 13:46:10 435

转载 Mr. Process的一生-Linux内核的社会视角 (2)启动

其实这才应该是这一系列文章的第一节,因为这篇文章讲的是盘古开天地的事。话说Mr. Process是一个现代人,但是,只要是人,总该有个祖先。人们总想知道自己从哪来,然后才可以估摸算一下自己将去向何方。所以咱也要了解一下Linux的世界里人类的起源。图1:从上电到BIOS按下电源开关的那个真实的人就是Linux世界里的上帝,他创造了Linux世界的一切。当

2015-11-13 13:36:28 325

转载 Mr. Process的一生-Linux内核的社会视角 (1)调度

Written by manio (manioster{at)gmail.com)Linux内核是一个无比复杂的系统,要想看清大致的脉络也非易事。其实,可以把运行中的Linux想像成一个人类的社会,当中的进程就是社会中的人。人有生老病死,进程有创建、异常、终止。人有各种各样的财产,进程有对应的地址空间、设备等等。人被各种各样的东西限制着,被人管着,进程也是。内核无比巨大,从哪着手?我想,从

2015-11-13 13:34:36 346

转载 用alarm检测并处理代码执行超时

alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。所需头文件  #include函数原型 

2015-11-13 13:32:20 1123 1

转载 mmap---关于读写文件

mmap函数是unix/linux下的系统调用,来看《Unix Netword programming》卷二12.2节有详细介绍。mmap系统调用并不是完全为了用于共享内存而设计的。它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或系统V的共享内存IPC则纯粹用于共享目的,当然mmap()实现共享内存也是其主要应用之一。         

2015-11-13 13:31:45 3983

转载 进程与线程的一个简单解释---有趣的例子(转)

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。  最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。  1.  计算机的核心是 CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。  2.  假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候

2015-11-13 13:31:13 496

转载 c socket 单线程多用户并发

使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。1. 程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组。2. 首先生成一个叫sock_fd的socket描述符,用于监听端口。3. 将sock_fd和数

2015-11-13 13:30:40 554

转载 SQL查询重复数据和清除重复数据

选择重复,消除重复和选择出序列 有例表:emp emp_no   name    age         001           Tom      17         002           Sun       14         003           Tom      15         004           Tom      16 要求: 

2015-11-13 13:30:07 388

原创 Solaris 10 x86环境下安装gcc

1.   系统环境准备a.    由于系统默认的shell使用不太方便,所以将系统shell更改为bash。#which bash          usr/bin/bash# usermod   -s   /usr/bin/bash rootb.    建立系统 .profile文件:      # cp   /etc/skel/local.profile /.pro

2015-11-13 13:29:41 332

转载 非阻塞Connect对于select时应注意问题

对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后必须调用bind绑定到一个指定的地址,然后调用int listen(int sockfd, int backlog);进行监听。此时服务器socket允许客户端进行连接,backlog提示没被acce

2015-11-13 13:29:03 501

转载 PowerDesigner使用教程 —— 概念数据模型

一、概念数据模型概述    概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。    通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系 (Relation

2015-11-13 13:27:58 331

转载 Oracle用户、权限、角色管理

Oracle 权限设置一、权限分类:系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理:1、系统权限分类:DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。RESOURCE:拥有Resource权限的用户只可以创建实

2015-11-13 13:27:25 238

原创 linux IP 设置

修改ip地址即时生效:# ifconfig eth0 192.168.1.102 netmask 255.255.255.0启动生效:修改/etc/sysconfig/network-scripts/ifcfg-eth0加入IPADDR=192.168.1.102NETMASK=255.255.255.0修改default gateway即时生效:# r

2015-11-13 13:26:31 277

转载 Linux软件包管理

Linux中的软件包,常见的格式包括有rpm,deb,tar,gz,tgz,zip,bz2等。几乎每个linux软件都会提供tar的格式 的软件包,因为这种格式的软件包任何版本的linux都支持,deb可用alien工具转换成tgz或 rpm方式。bz2可用bunzip2解包即可。一、RPM文件的安装RPM 是RedHat Package Manager(RedHat软件包管理工具)的

2015-11-13 13:25:58 239

转载 Netstat 状态分析

Netstat 状态分析Netstat状态分类用netstat -an命令查看!再stat下面有一些英文,简单说一下这些英文具体都代表什么:LISTEN:(Listening for a connection.)侦听来自远方的TCP端口的连接请求SYN-SENT:(Active; sent SYN. Waiting for a matching connection req

2015-11-13 13:25:27 471

转载 ORACLE中的DUAL表详解 (转)

1、DUAL表的用途Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中--查看当前连接用户SQL> select user from dual;USER------------------------------SYSTEM--查看当前日期、时间SQL> select sysdate from dual;SYSDAT

2015-11-13 13:21:43 236

原创 otl编译方法

g++  main.cpp -o demo -I/$(ORACLE_HOME)/rdbms/demo-I/$(ORACLE_HOME)/rdbms/public-L/$(ORACLE_HOME)/lib32-lclntsh 可以输入$echo $ORACLE_HOME查看ORACLE_HOME目录如/export/home/o

2015-11-13 13:21:06 374

转载 OTL之Oracle开发总结

关于OTL,网上介绍的也不少,但看来看去也只是官方的那些文档。OTL很好用,结合官方提供的一些例子,多多尝试才能领悟。经过一个月左右的项目开发,对OTL也有些了解,在这里总结一下,希望对刚接触OTL的新手有所帮助。其中有些地方,比如对网络异常的处理,可是费了我两天的时间才解决的,我那个汗哪。废话少说,开始正题:一、开始前的准备工作在使用OTL进行编程之前,要首先确定使用的Oralc

2015-11-13 13:20:32 262

转载 Linux环境进程间通信(五): 共享内存(上)

采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,

2015-11-13 13:19:44 346 1

转载 SQL列出库里面的所有表名和字段名

总结一些工作中用到或碰到的SQL语句,希望能与大家分享,同时也希望大家能提供更多的精妙SQL语句.....复制表格:在查询分析器里输入:select * into newtablename from oldtablename删除表格:在查询分析器里输入:truncate table yourtable查看库里所有表:select  *  from tab

2015-11-13 13:18:37 1127

原创 windows下创建线程函数CreateThread

#include #include #include  long c = 0;ULONG __stdcall t(void *t)//返回值必须是这个类型{ printf("%d\n", t); _InterlockedIncrement(&c);return 0;}int main(){for (int i

2015-11-13 13:17:49 364

转载 LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol

学习VC++时经常会遇到链接错误LNK2001,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使 人不明其所以然。产生LNK2001错误的原因:一个是由于编码错误导致的LNK2001,在这不想详细说.另一个由于编译和链接的设置而造成的 LNK2001.最经常发生的是:"LIBCD.lib(wincrt0.obj) : error LNK2001:

2015-11-13 13:17:02 953

转载 solaris snoop 抓包

solaris自带snoop抓包工具,抓所有数据流snoop -d   e1000g0 -x54 -ta ip tcp port 8000抓网卡是e1000g0端口是8000的包# snoopUsing device /dev/pcn0 (promiscuous mode)192.168.8.18 -> 192.168.255.255NBTNS Query Request for

2015-11-13 13:16:18 962

转载 常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-8

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-8      ANSI字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件      Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的是这种字符串,常被定义为typedef unsigned short wcha

2015-11-13 13:15:42 488

转载 iconv函数

iconv函数中:参数cd是用iconv_open调用返回的转码句柄;参数inbuf指向需要转码的缓冲区;参数inbytesleft是inbuf所保存的需要转码的字节数;参数outbuf存放转码结果;参数outbytesleft存放outbuf空间的大小。如果调用成功,iconv返回转换的字节数(不可逆转调用的字节数,可逆转调用的字节数不包括在内)。否则返回-1,并

2015-11-13 13:15:10 986

转载 汉字编码问题

由于常常要和汉字处理打交道,因此,我常常受到汉字编码问题的困扰。在不断的打击与坚持中,也积累了一点汉字编码方面的经验,想和大家一起分享。一、汉字编码的种类    汉字编码中现在主要用到的有三类,包括GBK,GB2312和Big5。    1、GB2312又称国标码,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。它是一个简化字的编码规范,当然

2015-11-13 13:14:07 310

原创 oracle里的TRUNC函数

1.TRUNC(for dates)  TRUNC函数为指定元素而截去的日期值。  其具体的语法格式如下:  TRUNC(date[,fmt])  其中:  date 一个日期值  fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去  下面是该函数的使用情况:  TRUNC(TO_DATE('24-Nov-19

2015-11-13 13:13:25 248

转载 Oracle常用的命令如何查看表的结构

以下的文章主要是介绍Oracle常用的命令中如何查看表的结构.EDITDATA 表名;修改表字段:Alter table 表名 modify(字段名 类型 约束);alter table test modify (addd varchar2(10) null); alter table 表名 add(字段名 类型 约束);alter table te

2015-11-13 13:12:51 836

转载 (Oracle)rownum用法详解

(Oracle)rownum用法详解对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。(1) rownum 对于等于某值的查询条件如果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生表中第二条学生

2015-11-13 13:12:23 299

转载 oracle sql常用语句

一、ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>c

2015-11-13 13:11:32 329

转载 oracle触发器

触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。功能:1、 允许/限制对表的修改2、 自动生成派生列,比如自增字段3、 强制数据一致性4、 提供审计和日志记录5、 防止无效的事务处理6、 启用复杂的业务逻辑开始create trigger biufer_employees_department_id b

2015-11-13 13:10:50 278

转载 oracle临时表的用法总结

oracle临时表的用法总结 关键字:基本概念,原理临时表的特点,什么时候用  前段时间,新公司的面试官问了一个问题,临时表的作用,以前我们用缓存中间数据时候,都是自己建一个临时表。其实oracle本身在这方面就已经考虑很全了,除非有些高级应用,我再考虑自己创建临时表。由于本人对临时表的了解不是很多,于是回来搜集下这方面的资料,弥补下这块的不足。

2015-11-13 13:06:43 260

转载 vi查找替换

在vi中使用的查找替换方法一、利用 :s 命令可以实现字符串的替换。具体的用法包括::s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

2015-11-13 13:04:52 214

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除