自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 qmake - 快速生成makefile

最近开发需要增加新的功能模块,需要增加一些代码文件,还有原先比较集中存放的代码文件现在稍微细分了一点,所以代码文件数量略增加了几个。起初都是手工维护的makefile,有变动时调整比较麻烦。auto* 系列工具笔者也用过,但实在觉得不符合面向人类的设计:)。想到以前使用过QT,决定用qmake来代替手工维护。简介qmake是Qt框架库附带的一个工具,是一个协助简化跨平台开发

2017-12-26 11:26:43 1209

原创 使用Redis协议构建网络服务

引言关于服务,这是一个比较抽象的概念,意在为使用者做事,达到使用者的某些需求。当然我们在此讨论的是网络服务,通常我们可以将其定义为一个运行在操作系统上的一个程序,使用者通过网络与其进行交互并能得到想要的信息。协议在编写网络服务程序中,其中最重要的一个环节是约定好相互通信的内容格式,也就是我们常说的网络通讯协议。协议设计的好坏很大程度上会影响系统的灵活性、可拓展性、维护性等等。关

2017-12-15 11:50:20 722

原创 C++ 获取CPU ID的方法

见如下代码,经过验证,是可行的。static const char* cpuId(void){ unsigned long s1 = 0; unsigned long s2 = 0; unsigned long s3 = 0; unsigned long s4 = 0; __asm { mov eax,00h

2017-12-08 10:11:49 7508 2

原创 Linux 文件压缩与解压

文件格式压缩解压tartar cvf FileName.tar Files(打包)tar xvf FileName.tar(打包)gzgzip Filesgunzip FileName.gzgzip -d FileName.gztar.gztar zc

2017-12-06 09:51:06 10673

原创 Linux 网卡操作

查看网卡ifconfig -a启用网卡ifup eth0禁用网卡ifdown eth0更改IP地址例如修改此网卡vi /etc/sysconfig/network-scripts/ifcfg-eth0修改参数完毕后需要重启网络服务,可以使用下面两种方式service network restart/etc/init.d/network restart

2017-12-06 09:49:14 11160

原创 RPM包操作

RPM 安装命令:rpm -i 需要安装的包文件名举例如下:rpm -i example.rpm 安装 example.rpm 包;rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安

2017-12-06 09:46:44 11479

原创 Oracle 数据库启动与停止

启动su - oracle sqlplus /nolog conn /as sysdba startup exit lsnrctl start exit 停止su - oracle sqlplus /nolog conn /as sysdba shutdown immediate exit lsnrctl stop exit

2017-12-06 09:43:49 11466

原创 快速理解大小端

什么是大端,什么是小端所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。通俗点:对于数字0x1234,按大端模式在内存中排列是 0x12, 0x34;按小端模式在内存中排列是0x34,0x12。另外:1.什么是高位:按照 个十百千万 顺

2017-12-04 10:38:22 8585

原创 Makefile.am 介绍

1.概念Makefile.am是比Makefile更高层次的规则只需要指定要生成什么目标,依赖于什么文件,和要安装到什么目录。automake会根据Makefile.am来自动生成Makefile.in 。2.基本语法Makefile.am文件bin_PROGRAMS = xxxbin_PROGRAMS 表示指定要生成的可执行应用程序文件,这表示可执行文件在安装时需

2017-12-04 10:13:44 9465

原创 Linux 下 make 构建过程

1.准备源代码目录结构,目录名为test包含的文件如下:test/src/tcpsocket.htest/src/tcpsocket.cpptest/main.cpp2.autoscan运行 autoscan , 自动创建两个文件(autoscan.log configure.scan)修改configure.scan的文件名为configure.in

2017-12-04 10:11:44 8315

原创 C++ 互斥量的封装

头文件mutex.h#ifndef MUTEX_H#define MUTEX_H#ifdef WIN32typedef void* HANDLE;#else#include #endifclass Mutex{public: Mutex(void); ~Mutex(void); void lock(void); void unlock

2017-12-01 15:34:01 34184

原创 C++ 线程的封装

贡献自己写的部分代码,希望能帮助到有需要的人。代码可以在Windows/Linux下运行,可以作为一个基础类。头文件#ifndef THREAD_H#define THREAD_Hclass ThreadPrivate;class Thread{public: typedef unsigned long long tid_t; Thread

2017-12-01 15:26:44 36349 3

原创 libevent 多线程实现高并发

当你看到这篇文章时,想必你对libevent已经有了足够的了解,笔者在此就不多做描述了,直接进入正题。1.起因最近在做Redis中间件,目标实现集群管理、分布式数据处理、高性能。由于在某些情况下,单个节点的Redis性能可能无法满足需求,并且单个机器的内存大小是受限制的。如果采用中间件的方式管理多个Redis实例,不仅可以避免单点机器内存不够用的情况,也能使性能得到大幅提升。经过R

2017-12-01 11:23:16 39165 4

原创 Oracle 11g 安装

1.创建oracle组和oracle用户创建用于安装和维护 Oracle 11g软件的 Linux 组和用户帐户。用户帐户将称为 oracle,而组将称为 oinstall(用于软件安装) 和 dba(用于数据库管理)。#groupadd oinstall#groupadd dba#useradd -m -g oinstall -G dba oracle -p or

2017-11-30 09:47:18 11212

原创 Windows 下编译 OpenSSL

编译准备1.编译器(我用的VS2010)2.ActivePerl3.openssl-1.0.1s步骤1.进入VS2010控制台模式开始菜单->所有程序->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio命令提示(2010),然后进入到openssl源码目录。2.在当前命令窗口执行

2017-11-28 17:20:23 135025

原创 Linux epoll 用法

前言早期linux网络编程中,很长一段时间用的是 select 来监听事件。在linux 2.6内核中,已经有了一种新的机制,即epoll。和 select 模型对比,epoll 最大的好处在于它不会随着监听的文件描述符数目的增长而降低效率。因为在内核中的 select 实现中,它是采用轮询来处理的,轮询的文件描述符数目越多,自然耗时越多。并且在linux/posix_types.h 头文

2017-11-28 17:17:55 136215

原创 Oracle中间件 - 不安全SQL拦截

1.概述众所周知,不安全的SQL语句的执行将会给企业带来一定的损失。例如drop表操作、执行update、delete不带where条件的这种语法,都会造成严重的数据损失。有些情况是人为,还有些是工作人员疏忽引起的等等,但不管是那种行为,都有必要进行一定的防范。在应用层及环境不做变动的情况下,采取中间件的方式是比较合理的解决方案。也就是说使用者的使用方式还是跟以前一样,只是我们在应用层和数据库

2017-11-22 10:31:51 107597

原创 SQL Server 中间件

简介在开发完Oracle中间件后,软件已成功上线使用并趋向稳定成熟。它主要以SQL审计、数据库访问控制、防范异常SQL攻击、保护敏感数据等为主,并能极大减少数据库攻击行为和违法操作,提高数据库安全,保护企业内部数据的合法使用。软件上线后,有其他企业也对我们的产品感兴趣,但他们用的数据库是SQLServer,于是开始新的研究工作:用现有Oracle中间件的产品功能框架去支持SQLServer。因

2017-06-30 14:44:47 40031 1

原创 基于 Oracle 中间件的 SQL 审计

前言我们目前开发的Oracle中间件目前主要的功能点是数据包转发、状态审计(客户端、SQL、表、事务等)、读写分离这些功能。其中审计功能中的SQL审计我们是基于SQL语句的特征码来进行审计的,例如审计SQL执行次数、耗费的时间、影响的行数、是否出现过错误等等这些指标。其中SQL语句中的值是没有参与审计的,现在我们做的就是加强这一块的审计,将SQL语句中所包含的值也参与审计,审计规则可以动态配置

2017-01-12 10:26:00 1811 1

原创 Oracle 负载均衡解决方案

一般我们在数据库中的操作无非不就是增删改查这四个基本操作,最终数据库和磁盘文件打交道也就是读写操作。如果采用传统的一台服务器去运作,可能会在读写高峰时会出现一些无法预知的问题。这些我们或许可以通过优化应用代码结构,采用缓存技术等等,这些都在一定程度上是可以减少数据库服务器的负载。但是, 如果我们能将数据库读写操作分离开来,那就是优化了整个架构的基石部分,带来的效果是可想而知的。假设我们

2016-12-15 15:16:36 10321

原创 Oracle 数据库监控

前言Oracle数据库历史悠久,自身性能非常出色,因此有非常多的基于Oracle数据库的应用程序,支撑着各行各业的各种业务。在遇到性能问题时,虽然可以找到非常好的DBA进行数据库后端的性能优化,但如果能了解应用做出合适的建议,则可以更上一层楼;在互联网蓬勃发展的今天,有一些老的应用程序可能需要做一些架构上的调整,以适应新的业务需求和访问量,这里就需要能够迅速地了解一个应用是如何与Oracle数

2016-11-16 15:16:47 11355 4

原创 Redis 通讯协议分析

1.协议简介Redis的客户端与服务端采用一种叫做 RESP(REdis Serialization Protocol) 的网络通信协议交换数据。 这种协议采用明文传输,易读也易解析。Redis客户端采用此协议格式来对服务端发送不同的命令,服务端会根据具体的操作而返回具体的答复。客户端和服务端采用的是简单的请求-响应模型进行通信的。2.协议格式协议的第一个字符就表示当前包的类型

2016-11-11 16:32:21 96302

原创 大规模Redis集群解决方案

1.为什么要使用Redis集群一般的,为了提升网站及其他网络应用的响应能力,会将经常访问的数据进行缓存起来,而不是直接从后端数据库里面进行读取。而目前市场上,Redis则是Cache的一个很好的解决方案,使用和部署很简单,性能也非常不错。但由于它是单线程单实例的服务,在数据量达到很大时处理上就会显得力不从心。基本上一个大型网站应用,经常访问的一些数据是很大的,几十G甚至百G都是很正常的,在这种

2016-11-11 15:44:41 35106

原创 用libevent实现httpserver

最近工作中需要实现一些审计功能,软件是服务器端程序,对于展示来说,在浏览器上能直接查看可能是最直接最友好的方式了,libevent中提供了http模块,正好我们的软件也依赖这个,所以决定用它来实现一个httpserver,用来展示相关数据。不多说,直接上代码表示这个工作流程#include #include #include bool start

2016-07-08 16:20:37 59614 3

原创 Oracle:TNS数据传输协议-进阶篇

工作流程前面介绍了TNS协议数据包的基础结构,在对最基础的通信包结构有了一定了解后,有必要对整体工作流程有一定的认识。下面是一个应用程序到Oracle数据库的流程图。从图中可以看出,我们研究的TNS数据传输协议是在Oracle Net这一层。 上层可以使用OCI、JDBC、.NET接口去访问数据库。在这里有个比较复杂的地方就是:我们通过抓包对比了OCI和

2016-07-08 15:52:34 28754 1

原创 Oracle:TNS数据传输协议-基础篇

简介TNS协议是ORACLE服务端和客户端通讯的协议。目前有许多版本,并且大部分向下兼容。我们主要在Oracle 11g的版本上研究客户端和服务端之间的传输协议。网络上关于TNS协议的介绍资料比较少,毕竟它不是开源的数据库,但研究的人还是有不少。在目前所有的可学习资源中,oracle的jdbc驱动无疑是研究TNS协议的最佳选择,通过反编译出来的java代码,可以清楚的看到整个调用流程。该工

2016-06-20 16:38:20 54878

空空如也

空空如也

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

TA关注的人

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