自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 关于linux中消息队列的使用

以前对于linux消息队列有过大概的了解,在《uinx高级系统编程》这本书里面提到过。但是具体使用不是很了解,最近再熟悉appserver和tws的框架,这里面使用了linux的消息队列,于是乎进行了系统的了解。消息队列如下int msgget(key_t key, int msgflg);int msgctl(int msqid, int cmd, struct msqid_ds *buf

2017-05-12 11:43:50 3611

原创 cmake命令

#编译方法,进入 build 目录#[root@six build]# cmake ../;make#[root@six build]# ../bin/test2; ../bin/test1;cmake_minimum_required(VERSION 3.1.0)PROJECT(TEST_UMSA)SET(CMAKE_C_COMPILER g++)SET(CMAK

2017-03-16 11:29:37 437

原创 go语言学习(3)-协程

协程其实这个在很久以前就出现过,现在在一些的脚本语言(比如说lua,python)已经开始支持。

2017-03-13 23:33:20 3929

原创 go语言学习(2)-数据类型

最近在用go语言写一个项目,好久没有更新了,所以顺便写点东西,go语言中类型分为基本类型和引用类型。基本类型这里先不进行讨论。说一下引用类型,go语言的引用类型有3种:切片,map,隧道。他们是都是引用对象,引用对象跟指针类似,但是只能够通过make()内置函数进行实例化而且make()内置函数只能用来实例化引用对象。现在进行一一说明。切片:切片可以理解为不定长数组,可以动态进行数组的扩充。例

2016-12-21 11:21:40 648

原创 nginx使用记录

以前认为前端使用nginx一定能够实现负载均衡,但是我进入了一个理解误区。如果你的服务是属于IO密集型的话,这个时候,这个时候如果你的后端部署多台服务,通过前端nginx进行分配。确切的说他降低了你的tps,nginx此时充当的是容错功能(部署多台)。业务密集型的服务,通过nginx才有可能提高tps。nginx是一个神奇的东西,需要好好学习一下。

2016-11-01 09:33:13 563

原创 stl读书笔记(2)- 模板特例化

本来这个不属于stl中的一个内容,但是我是stl中看到了这个。所以特此说出来,我不知道stl中在拷贝数据的时候,为什么要区分POD(plain old data)。我个人觉得应该是都可以的。神马叫做模板特例化,举个简单的例子:template 14 class CTest 15 { 16 public: 17 void Print() 18 { 19

2016-10-11 11:56:53 308

原创 stl读书笔记(1)-内存分配

现在主流使用的stl分为很多版本,基本上尊重stl业界统一标准。我们使用的是sgi_stl。侯杰在《stl源码剖析》这本书中说明stl的六大组件:具体结构我不想细说,主要想说一下空间分配器(allocator)。这个是stl各个组件的基础。stl的类模板参数一般都会有个参数指定空间分配类。例如:templateclass vector{....};allocator实现位

2016-10-07 22:34:03 343

原创 go语言学习道路(插曲)-一个疑惑的问题

最近写go语言程序的时候,发现了一个问题。先看代码:// MusicPlay project main.gopackage mainimport ( "fmt")type Cat interface { Meow()}type Tabby struct{}func (*Tabby) Meow() { fmt.Println("meow") }func GetACat(

2016-09-20 12:39:24 770

原创 读书笔记(1)-前言

用了stl四五年了,但是一直感觉只是粗略的了解如何使用,对里面细节问题不很了解,最近出了一个问题,于是乎有了了解stl源码的想法,对于stl的源码剖析首当其从推荐的是孙鑫的《stl源码剖析》(虽然此书stl的版本已经很老了)但不失为一个学习的范本,书中针对的sgi_stl源码进行剖析,所以我们需要下载sgi_stl源码,阅读源码的工具也要选择合适的。综上所述,准备工作:stl源码剖析 +

2016-09-19 11:00:34 1155

原创 C++构造函数和析构函数能否继承

前段时间,一个同事问了一个问题,C++类中的构造函数派生的子类能否继承?

2016-09-15 11:07:14 11546 5

原创 自己挖的坑,跪着也填完

最近监控服务svr_monitor.ums,出了一个问题,此问题无比蛋疼,内存不断增大。但是在测试服务器上面无法重现这次问题,于是乎使用gdb调试,发现了stl的map调用clear()函数后,内存还保留存在。猜想会不会因为这个使得内存不断增大?转念一想,不对,数据量是固定的,所以不可能无穷真大。使用gdb打印map的数据,发现了大量相同的key,数量达到了1000w左右,这才是内存不断上涨的

2016-09-08 10:01:44 666

原创 go语言学习道路1-学习前

确切的说从去年开始就知道go语言的存在,那个时候只是知道他这个名字的存在。具体感兴趣是今年的8月份跟一个同事的交流。于是开始进行学习,go语言可以说就是针对服务器开发的语言(暂时还没有看到google提供基于GUI开发方面的包,未来不排除会提供),具有余下的优势:1:编译性的语言,这个相对于脚本性语言效率的优势2:GC机制,这个又有了高级语言的优势,不用担心内存泄露。(GC机制是需要消耗资

2016-09-05 17:08:06 753

原创 最近开发的心得1

最近进行项目开发,出现了几个问题:1.在调用mysql_ping()返回失败,错误码为"2006,MySQL server has gone away",发现mysql超时断开连接,但是mysql_ping()函数的作用就是重连mysql,为什么出现这种情况了,网上查看了一下资料,才发现mysql_ping()重连必须调用mysql_options()设置,代码如下:char cValue

2016-08-09 22:26:37 395

原创 服务器压力测试心得

最近完成了一个服务器框架, 于是测试的他的qps,发现了一个奇怪的问题,测试出来qps只有3w/s,与前面说的10w/s,有很大的差距。使用trace命令打印出glibc函数调用信息,发现了大部分的时间程序处于锁等待状态,我开始怀疑认为是内部使用锁占用太多时间。于是乎改为无锁队列。(关于无锁队列已经记录).修改完毕后,发现了如下几个问题:1:业务处理线程消耗大量的CPU时间,因为采用了轮询,一

2016-07-07 17:46:04 11485 1

原创 关于无锁队列的使用

前段时间无意中想到了无锁队列,于是实现之,实现代码如下:templatebool CUnlockQue::Push(T0 &tValue, int nWaitTime){ struct timespec TimeWait; //已经有足够多的push操作向列队不同位置写入数据 while (0 >= AtomDec(m_nAbleWriteCount, 1)) { AtomAdd

2016-06-11 22:49:28 1407 1

原创 2016三月份总结

最近写了服务器框架,但是感觉有些问题,以下为补充。1.关于业务处理线程这一块,需要补充按hash分配,按权重分配。2.是否应该屏蔽业务层网络连接,只是简简单单的收发包。3.epoll类处理是否需要使用SessionId防止粘包。综上所述,需要修改。hadoop可能暂时需要停一下,以后再捡起来。

2016-04-12 15:27:06 542

原创 关于linux中so链接a

这段由于工作需要,做成链接库文件给别人调用,但是只想提供一个so文件,于是实现在so文件中链接.a文件,写了一个测试程序,编译脚本如下:g++ -fPIC hello.cpp -c -o hello.oar rcs libhello.a hello.og++ -fPIC -shared -o libhello_s.so hello_s.cpp -L. -lhellog++ -o

2016-03-01 12:55:34 2170

原创 关于stl中map使用体会

对于stl中的map以前一直以为他的key除了需要重载如何判断找到一个选项了,他是这样处理的: 如果一个查找的Key既不小于当前Key也不大于当前Key,则认为找到当前项,伪代码如下:if (!(Key1 { // 找到该项}所以只需要重载运算符号

2015-12-03 10:01:22 420

原创 编译libgd

最近由于项目需要jpg进行压缩,查了相关资料,发现php的代码中使用了压缩图片使用libgd库,于是下载进行编译,因为历史问题,需要编译成32位的库,这个可就把我搞死了,他的源码中有cmake和automake方式,直接编译成的属于64位平台。于是我在cmake命令上面直接加上了如下命令:SET(CMAKE_CXX_FLAGS "-g -m32 -w -std=gnu++98"编译的时

2015-10-20 11:26:57 3168

原创 2015年10月12日小计

国庆放完假一直在忙着写个CGI程序,刚开始的时候,我以为这个东西会很简单,就是update数据到数据库,但是也是让我整了好几天,整完东西后,有些东西我这里想总结一下。我们获取CGI输入时通过getenv()获取环境变量,下面是几个常用的参数:getenv("REMOTE_ADDR")获取对端IP地址getenv("REQUEST_METHOD")获取请求方法,如“GET","POST"

2015-10-12 09:52:37 369

原创 TCP协议以及套接字方面的总结(1)

最近写了一个测试程序,对于TCP方面协议以及套接字接口方面的调用有了更进一步的认识。特此记录下来。对于监听套接字,它会有一个监听队列。调用listen函数设置,众所周知,TCP连接需要三次握手,握手成功后,会添加到这个队列中,所以我们要通过accpet函数及时取出来,如果队列处于满状态,这个时候在调用connect函数,服务端会处于等待状态,连接超时。所以我得测试程序并发1000个连接,会出现

2015-09-21 09:30:34 834

原创 关于码率和帧率的理解

最近需要做视频流方面的服务器,对码率和帧率进行了一定的理解码率:这个有点类似于采样率,表示单位时间内处理数据,以bit为单位。个人理解,在服务器发送数据时,怎么控制这个发送的的单位数据量。计算公式: SendBytes = (time(NULL) - LastElaspedTime) * 码率(固定码率)帧率:这个就是每秒钟显示的帧数,这个我觉得发送暂时好像没有神马(可能我还没有用到)

2015-04-29 11:54:24 1065

原创 svn服务器搭建

最近搭建了一个svn服务器,这里特别记录一下,方便以后查阅:svn客户端选择大众话的“乌龟”,当初本来想选择visual svn server。发现这个不是很好用,于是乎选择linux下的subversion。subversion安装这里就不说明, 我说一下这个subversion的配置1.安装subversion后,我们要创建一个仓库,比如:我当前目录为svn. 创建一个仓库 civil

2015-04-10 17:48:26 223

原创 关于内存对齐

关于数据内存对齐,网上有很多数据。以前我漏掉了一部分,现在我记录一下:结构体中偏移:struct Test{int a;short b;char sz[2];};struct Test2{short b;int a;char sz[2];};sizeof(Test1) = 8, sizeof(Test2)=12;默认情况下Test对齐的力

2015-03-14 08:24:00 279

原创 关于逻辑坐标,设备坐标。分辨率变了之后,窗口如何布局

最近学习android开发,发现它这里面有个sp,dp坐标的概念。具体是神马定义,具体会写一篇文章说明。我联想到windows中UI布局。关于这个问题,特此记录下来。1. windows坐标分为逻辑坐标和设备坐标,GDI函数一般选得都是逻辑坐标。(设备无关性)。屏幕显示会转换时内部会转换为设备坐标。windows中有8种坐标模式,默认情况为MM_TEXT,逻辑坐标与设备坐标是1:1。我们一般选

2015-01-07 07:16:35 373

原创 linux中进程之间通信

关于linux进程通信有很多种类实现,比如管道,队列,共享内存。说一下自己的体会

2014-12-29 23:58:55 303

原创 关于linux中socket阻塞与非阻塞

关于linux中socket阻塞与非阻塞,网上有很多。这里我只说说我个人的体会:INT send(...INT nSendSize)函数:阻塞:如果内核缓冲区有足够大的缓冲区(>= nSendSize),直接数据拷贝,如果非阻塞:如果缓冲区不够( recv ()这里省略

2014-11-26 07:04:17 933

原创 关于socket

socket分为阻塞和非阻塞,一般

2014-11-18 20:44:12 204

原创 简单的内存池

对于服务器开发,经常需要数据靠

2014-11-13 05:43:21 337

原创 makfile简单书写

如果用linux开发中,不可能不知道makefile,这里简单的介绍一下我的makfile。CC = g++CFLAG = -gstabs+ -c TARGET = ServerOBJ = EventTaskManger.o HttpSocket.o main.o AppServer.o XMLDocument.oLIB_OBJ = ArgAnalyser.o Event.

2014-11-08 17:20:53 467

原创 如何检测到USB热拔插

最近在写一个程序,需要检测到USB

2014-07-27 23:08:16 1424

原创 随便想想

最近有点迷茫,发现写程序真的越来越li'bu'cong'x

2014-07-09 23:32:03 266

原创 HID_USB通信

经过这一段时间的摸索,自己xie'l

2014-06-30 07:10:11 876 1

原创 USB-HID相关笔记

HID是是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。HID设备一般只有两种传输中

2014-06-22 23:16:01 758

原创 linux 下eclipse编译release版本的so文件

最近用eclipse编译了release版本的so文件,发现尽然程序运行时竟然导出函数不对。但是debug版本的文件又是正确的。用了半个小时问题得到解决。要设置一下工程配置。问题得到解决。

2012-10-18 09:41:07 736

原创 引导扇区

看了于谦的书,一直想写个操作系统玩玩。代码写了一部分。现在开始总结一下。启动pc的时候,这个时候bios处于控制权。 它将第0个磁道第0个扇区加载到地址0x7c00处, 这个叫做引导扇区。但是记住这个扇区一定要0xaa55结尾。代码如下:org 0x7c00jmp LABEL_START%include "Include/Func.inc"LoadName db 'LOAD

2012-07-11 17:47:21 1034

原创 JNIEnv 指针使用一二

最近写的那个dll给java调用出了一个问题。发生了内存溢出。仔细查看了一下。用来JNIEnv中的ReleaseByteArrayElements(). 和 GetByteArrayElements()问题。查了相关问题。原来是参数使用了错误。ReleaseByteArrayElements 最后一个参数如果是JNI_COMMIT.这是更新java内存。但是在本地堆中没有释放。所以出现了内存泄露。

2012-06-25 15:05:48 327

原创 java如何调用dll

我是一个C/C++程序辕,最近突然写个dll给java调用。查了相关的资料,基本上实现了。现在总结一下。package com.vision.io;import java.io.FileOutputStream;import java.io.OutputStream;import java.io.IOException;import java.io.FileNotFoun

2012-06-20 09:32:51 362

空空如也

空空如也

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

TA关注的人

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