C/C++
拙_言
Oracle 10g OCPIBM Certified Systems Expert MAIL:xcl_168aliyun.com
展开
-
稀疏文件(sparse-files)生成汇总
稀疏文件文件这个东东,最开始知道是在学Oracle temp表空间。因为 Oracle 临时表空间的数据文件ls和du出来,大小不一致,后来才知道,这东东是稀疏文件的特性。 这玩意主要是先跟系统把整个文件大小空间申请下来,然后再在需要时把数据向里面填。 好处是一次性分配连续空间,避免了硬盘碎片。 坏处是,后续文件扩展有可能没有相应的空间, 结果向临时表空间文件放数据,就有可能会发现硬盘空间原创 2014-01-01 22:56:01 · 5655 阅读 · 0 评论 -
测试专用,跨平台批量生成指定大小及个数的文件(非稀疏文件)
最近有点不爽,心里不痛快,一个东东搞了很久了还没搞好,耐心都快弄没了,火大。不提这个了,写了个批量生成目录文件和指定大小的文件的东西用于测试分享下。顺便看了下稀疏文件相关的东东,这个在另一篇了。效果大致如下 :功能没得什么说的,直接附上代码:/*************************************************Author:原创 2014-01-01 21:00:15 · 1625 阅读 · 0 评论 -
OTL的使用
OTL可通过odbc,数据库本身的连接库如oci,与数据库进行交互,跨平台,跨数据库,api使用方便且仅只是个头文件,我一直都使用这个。 OTL的官网是:http://otl.sourceforge.net/ 里面例子文档什么的都相当全。 以OTL连接Oracle 11g为例,说明下在VS中的使用方式: 1. VS 编译环境设置 a. 在工程项目中引原创 2014-03-16 17:05:46 · 3650 阅读 · 2 评论 -
SQLite编程相关
SQLite开源,代码简单,功能足够强大,使用非常广泛,在这 整理下C/C++对SQLite数据库编程相关的一些知识。 一。 SQLite建库建表 二。 VS环境下,32位程序使用SQLite的方法 三。 64位环境下SQLite的使用方法 VS版本为: VS2012 SQLite版本: 3080401 一。 SQLite建库建表原创 2014-03-16 16:33:00 · 2117 阅读 · 0 评论 -
协程基础_context系列函数
最近想看看协程,对这个的具体实现不太了解,查了下,协程最常规的做法就是基于makecontext,getcontext,swapcontext这类函数在用户空间切换用户上下文。所以在这通过例子代码尽量把context相关的函数弄清楚先。#include #include #include static ucontext_t uctx_main, uctx_func1, uctx_f原创 2014-10-09 21:10:58 · 2621 阅读 · 0 评论 -
协程库的一些笔记
因为协程的好处,所以协程库现在有好多libtask,boost::coroutine,libco...... libtask很不错,以后或许会用。 boost我个人基本很少用。 腾讯的libco自己用汇编实现了swapcontext函数,不明觉厉(libtask也有ASM)。而且把epoll整合在了里面。 微信后台就用到了它.在chinaunix.net上的一个帖子中就说到了这个。原创 2014-10-13 17:07:10 · 3577 阅读 · 2 评论 -
网络编程(10)基于epoll的服务器实现
关于epoll的相关知识我不就写了,只把我弄的例子写下,我整的这个epoll服务器其实就只是把man epoll中举得那个例子给做完善了。主要参考了man epoll和百度百科中关于epoll的介绍来实现的。原创 2014-02-16 23:21:21 · 2489 阅读 · 0 评论 -
写了个快速打包项目源码至pdf文件的工具
为了能痛快看代码,写了个把项目工程打包到一个pdf文件中的程序。没啥特别的,但好用而且速度快。运行一下,源码随时带走看。并且依文件分了目录标签,加上了行号,非常方便。如果对默认设置不满意,像文件字体大小,一页行数都可自由设定。 反正我下了开源项目后,将其打包pdf后放在Kindle里看蛮爽的. 运行后生成的pdf效果如下:原创 2015-09-10 23:43:26 · 1341 阅读 · 0 评论 -
PDF开源库libharu的折腾之旅
最近入手了一台Kindle,想在上面看代码.发现直接放上去看不了。好吧,就准备写个批量将代码文件自动转成带目录标签的PDF文件的程序。找到了libharu这个开源库,准备开用,没想到要用起来真不容易。下面是折腾记录。 开发环境: Vs Express 2015 版本相关工程下载 从github下载libharu https://github.com/li原创 2015-09-05 20:28:35 · 8697 阅读 · 4 评论 -
网络编程(6)单进程多线程并发服务器实现
相比前面的fork方式的多进程服务器,用线程方式,更轻量级。最少用fork时,需要将内存映像,描述符等都要从父进程复制到子进程中,会占用大量的资源而多线程方式都在一个进程内,就无需占用这些资源,但同步也是个问题,而且一个线程挂了,可能会影响到进程中的其它线程。 多线程并发的原理就是 当accept 成功连接一个客户端后,把与这个客户端的交互丢到新线程去处理它。 服务端代码:原创 2014-02-15 18:25:07 · 2145 阅读 · 0 评论 -
网络编程(4)select函数实现I/O多路复用服务器
我按理解整了个基于select模式的单进程并发服务器,并写了个简单的测试程序测了下,虽然离实用还差得远,但用来练习select够用了。至于如何实现的细节,代码注释算比较清楚,就不多弄了。一。服务器部份单进程并发服务器代码: /*************************************************Author: xiongchuanliangDescription: I/O复用(异步阻塞)原创 2014-02-14 22:32:35 · 2754 阅读 · 0 评论 -
DLL的创建,调用与DLL劫持
DLL平时经常用到,不过没系统整理过,刚好最近在读>,就做了些小例子,把关于DLL的部份整理了下.内容包含下列几部份:一。 DLL创建 a. __declspec(dllexport) 关键字导出函数 b. DEF文件方式导出函数名或仅导出函数序号二。DLL调用 a. 静态方式调用 b. 动态方式调用 c. 仅函数序号方式的调用三。如何劫持DLL一。 DLL创建原创 2014-01-11 19:18:42 · 3054 阅读 · 0 评论 -
网络编程(7)字节序对跨平台数据传输的影响
关于字节序对跨平台数据传输的作用。我分下面几个方面整理了下,知识点应当算比较全了。一。从服务端发送整数到客户端为例,看看字节序的应用。二。什么是字节序?三。什么是网络字节序四。如何确定本机的大小端一。从服务端发送整数到客户端为例,看看字节序的应用。 服务端代码节选://发送整数 //调用 send_num(sClien原创 2014-02-15 19:44:43 · 3028 阅读 · 1 评论 -
网络编程(1)跨平台的Socket同步阻塞工作模式例子
同步阻塞是很经典的一种模式,也常是学习Socket编程的人弄的第一个例子。在这种模式下,Socket设置为阻塞模式,当程序中的Socket没有完成I/O操作时,进程或线程会进入等待状态,直到操作完成或发生例外中止。优点在于,占用的资源会很少,一旦返回,肯定有数据。 缺点在于,程序会一直等在那,不能做其他操作。不适合应用于有大量连接的服务器上。 我在实现这个模式时,为了方便对比Windo原创 2014-02-13 22:43:56 · 6063 阅读 · 0 评论 -
网络编程(2)Socket同步非阻塞工作模式
同步非阻塞模式比前面说的那个同步阻塞模式要高些,虽然高得有限.在这种模式下,send或recv函数会设为MSG_DONTWAIT,即非阻塞,即便没有值,就略过继续做后面的事。比如有多个socket时,可以去查看其他socket有没有可以接收的数据。然后再反复检查前面的执行情况,直到有数据为止。这种模式优点是不阻塞了,但消耗的系统资源太多,因为它要不停的去检查,做了很多没有必要的调用。原创 2014-02-13 23:20:15 · 1898 阅读 · 0 评论 -
网络编程(3)学习多路复用(I/O)函数select
在看I/O复用时看到了select()函数,说它可以让程序同时监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。光这一句话发现这东东不太好理解,只好做了两个例子来帮助理解这个。先从函数原型及参数等入手:int select(nfds, readfds, writefds, exceptfds, timeout)原创 2014-02-14 18:59:57 · 2585 阅读 · 0 评论 -
网络编程(8)自定义网络通讯协议
C/C++网络通讯真正要用起来,不但要写一个好的网络服务器,还要定好一套通讯协议才能真正实用。通讯协议业界目前除了用开源的如XMPP以外,基本上都是自定义一套通讯协议,自已负责封包,拆包。为什么要自己定义协议包呢?一个原因是因为真正的业务逻辑往往都是复杂的,不会是很单纯的字符串或数字。再参考前面写的网络编程(7)字节序对跨平台数据传输的影响>>就应当知道,通讯时网络传输是以字节为单位的。这原创 2014-02-16 01:14:15 · 5477 阅读 · 0 评论 -
网络编程(5)多进程并发服务器
多进程并发服务器基本流程是,accept接收一个客户端连接,就创建一个子进程来处理它,即一个子进程对应一个客户端。简单说就是 父进程负责接收请求,子进程负责处理请求。整理代码如下:/*************************************************Author: xiongchuanliangDescription: 多进程并发服务器,服务端原创 2014-02-15 01:04:27 · 2720 阅读 · 0 评论 -
网络编程(9)内存对齐对跨平台通讯的影响
内存对齐存在的意义之一是为了减少访问次数,通过以空间换效率的方式提高性能。其特性在相同平台的网络通讯中是没有影响的。 但在跨平台中传输结构体(或联合)时,则这个特性有可能会影响到数据的准确性。原因之一是自定义网络通讯协议包通常都是定义成struct的形式, 而struct会自动内存对齐,这会造成结构体成员间有"空洞",传给其它平台后,其它平台弄不清楚原平台是按什么方式对齐的,只会按自己的方式解包。原创 2014-02-16 02:23:25 · 3590 阅读 · 0 评论 -
整理下Base64相关的东西(OpenSSL/GO...)
Base64在不同语言对接时,其实是有些小坑的,之前有碰过。首先Base64的是啥? 阮一峰有一篇写得很赞的文章说得很明白。然后是怎么编码?我用OpenSSL写了个Base64解编码实现:/* 用openssl来做Base64加解密. Author: xcl Date:2015-9-17*/#include #include #include #include原创 2015-09-19 23:13:37 · 3258 阅读 · 0 评论