自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

自由理想的足迹

只要功夫深,铁杆磨成针

  • 博客(40)
  • 资源 (10)
  • 收藏
  • 关注

转载 索引图像处理的一些心得

来自:http://bbs.csdn.net/topics/110048102感谢laviewpbt的分享。总结:索引图像像素点存放的是调色板中的下标,颜色不容易失真,存储文件小的优势。索引图像对于反色,颜色平衡,去色,颜色替代非常方便,直接修改调色板即可。但是索引图像在滤镜,通道混合,透明叠加,旋转,缩放等通过对指定区域像素操作产生新像素值的的方法效果比较差;这种情况下例如旋转锯齿,其实

2015-03-25 23:17:14 7222 2

原创 颜色基本概念和颜色位移

颜色的基本概念:RGB中0x000000是黑色,0xffffff是白色; Alpha当0x00时候是完全透明的,0xff是完全不透明的。颜色的深度,就是一个像素用多少位来表示,一般图像为8位深度,也就是2(^8) = 256种颜色。如果图像深度为24位,那就是2(^24)=16777216种颜色称之为真彩色。虽然颜色的深度为8位,但是也不是说R只有8种,G只有8种,B只有4种颜色,也不是说

2015-03-25 08:39:23 2880

转载 CRC计算方法与实例

来自:http://www.baiheee.com/Documents/090107/090107122214.htmCRC冗余循环校验,传输的帧或者序列为n位,生成冗余码多项式为2(^k)+...+1,用n左移k位作为被除数,用模2运算(加法进位的舍弃,减法是制造商和减数相加得到被减数,其实减法可以用异或运算得到商)被除数除以生成多项式的数,得到余数,将余数放到被除数的n位,得到kn序列数据

2015-03-24 23:44:23 25300

原创 MD5算法使用简析

总结:MD5算法是对一定的输入内容计算消息摘要,文件MD5算法是对整个文件的内容以二进制方式读取对内容进行分组筛选计算消息摘要。简单的复制一个文件并不能再计算并不能改变MD5值,因为文件内部的二进制内容并没有改变。MD5可以校验一个文件在传输的过程中是否被改变了,他人改变,或者自己开发的上传下载程序本身改变了传输的内容。MD5因为是非可逆的,因此可以在密码存取中直接存放MD5值。MD5是不够安

2015-03-23 08:29:35 784

原创 多线程多进程同步技术的选择

1.多对一,包含了一个资源队列: 多个线程一个资源(一个资源队列), 可以用互斥量(或临界区或只有一个资源的信号量)+事件对象(条件变量)来实现对该资源(资源队列)的同步高效访问;同一个进程下windows下用临界区效率比较高,其它内核对象要1000都CPU周期调度时间;linux下没有必要用在进程间的就限定在同一个进程中也可以有效提高性能。使用情景:异步读取线程,异步网络接收数据

2015-03-23 00:07:42 1429

转载 C++多线程实例-信号量

windows下的信号量:使用信号量内核对象进行线程同步主要会用到 CreateSemaphore()、OpenSemaphore()、ReleaseSemaphore()、 WaitForSingleObject()和WaitForMultipleObjects(),CloseHandle()关闭信号量等函数。其中,CreateSemaphore()用来 创建一个信号量内核对象,其函

2015-03-23 00:01:49 4252

原创 C++多线程实例之临界区同步

临界区的特点:非内核对象,只能在window下使用,linux下不能使用;只能在同一进程内的线程间使用,速度快。互斥量特点:互斥量是内核对象,可以用于进程内也可以在进程间互斥,速度相对互斥量慢点,也可以解决某进程意外终止所造成的“遗弃”问题。临界区和互斥量都是只能互斥,不能同步,因为它们都有“线程所有权”,一旦拥有可以进行多次锁定。可以通过内核对象(linux下是条件变量)设置无信号阻

2015-03-22 09:51:54 3444

原创 C++多线程实例之互斥量同步

要点:将互斥量 + 条件变量/事件对象封装为了一个类CMutexLock,该类同时支持windows和linux下的互斥量同步。对熟悉windows和linux下面的多线程开发很有帮助。下面的代码可以直接在VS2008,2010中编译通过,linux下也是没问题的。如果你觉得写得不错也可以直接移植到你的代码库中,比较适合多线程中采用生产者-消费者这样的场景,比如子线程读取和解析文件生产给其它线程用

2015-03-21 22:39:02 5096

转载 线程属性pthread_attr_t和多线程常用函数

一、线程属性pthread_attr_t简介 来自:http://blog.csdn.net/hudashi/article/details/7709413本文编辑整理自:http://hi.baidu.com/7828058/blog/item/256e16decd1a385e94ee3784.htmlhttp://www.ibm.com/developerworks/cn/

2015-03-21 10:46:05 1822

原创 多进程和多线程的选择

一、多进程和多线程的基本概念"进程是资源分配的最小单位,线程是CPU调度的最小单位"凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身; 所有由用户启动的进程都是用户进程。 在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。进程是操作系统进行资源分配的单位,进程拥有进程空间里面的文件句柄,堆内存,全

2015-03-17 08:32:39 1238

原创 多线程原理、线程安全函数和多线程程序需要注意的问题

一、多线程使用情景:1.用户需要同时得到多个反馈,例如下载过程中进度条改变,读取文件的时候显示结果。2.提高程序执行性能,提高CPU使用效率,。多线程的主要是需要处理大量的IO操作或者处理的情况需要花大量的时间等等,比如读写文件,网络数据接收,视频图像的采集,处理显示保存等操作缓慢的情形和需大幅度的提高性能的程序中使用。但也不是都使用多线程,因为多线程过多的线程一般

2015-03-17 08:13:40 11649

原创 多进程和多进程间通信

一、进程空间和多进程父子关系:进程是分配资源的最小单位(进程内存空间)。fork后,子进程会复制父进程的task_struct结构;并为子进程的堆栈分配物理页(开始只是标记为只读的),延迟到当父或子线程尝试写这些区域,内核才为需要修改的那片内存拷贝副本。二、进程间通信方式:1. 共享内存(share memory),信号量(semaphore/sɛməˌfɔr/)。

2015-03-17 07:55:18 5338

原创 进程间线程间的同步锁原理和种类

同步锁的基本概念:锁基本都是内核对象,用于控制多线程间多进程间的同步访问。我们知道进程间的同步操作都是要借助内核来完成的,和同一个进程中的线程同步只需要在用户模式下是有很大差别的,当然,对于进程安全的,对于线程肯定也是 安全的,但在用户模式下的线程同步所需消耗的代价相对于通过内核完成的同步是很小的。所以不要利用进程同步的方式来进行同一进程中线程的同步。同步锁的种类:互斥量和条件

2015-03-16 23:47:30 6255

转载 对左值和右值的理解

来自:http://blog.csdn.net/ccskyer/article/details/6097999今天在CSDN上看到一个关于左值和右值讨论贴,顺便说下自己的理解左值:必须要有明确的名字来代表这个值;右值:如果没有明确的名字来代表这个值,那么这个就是只能是右值;举例:int a=1;a,a=2,++a都可以是左值;而1,a++就不能作为左值,只能是右

2015-03-16 08:15:28 1100

原创 C++常量成员常量返回值详解

/*总结:1.常量数据成员,形式:const Type m_tData;1)常量数据成员,需要在构造函数列表中给出,构造函数中可以用常量赋值,也可以实例化的时候赋值。2)赋值函数中不能赋值,起到保护常量数据成员的作用,和友元作用相反。2.常量成员函数,形式:type funname(type1 arg1,type2 arg2,...) const1)常量成员函数,不能修

2015-03-15 17:26:37 3900

原创 异步事件回调机制原理探索

自定义的异步事件回调机制:可以在自己的应用程序中,先注册事件和事件对应的回调函数(回调函数可以是函数指针法,虚函数方法的方式);自己程序中每帧检测事件是否发生或者条件是否满足,满足的时候就进入回调函数。如果这样的检查是在同一个线程中那么就是同步的延迟调用,如果是在子线程中就是异步调用,但是这样的性能还是比较差的,除非不得以,否则还是用OS的异步回调机制性能高。OS层面的异步事件回调机制

2015-03-15 12:58:02 7498 2

原创 建立性能的数学模型-调节参数以提高性能

示例:高速数据采集卡的设计,在硬件和软件瓶颈下,改进了软件瓶颈,采用了一次传输的数据量合理的大(太大块可能会导致内存分配失败),那么传输速度越快。是一种类似二次函数的最高点实现了性能的优化。经验:一次IO传输更多的数据块比多次读取少量数据有更好的性能。参考文章中的创新点:http://www.go-gddq.com/down/2012-03/12031720065032.p

2015-03-15 12:43:31 1056

转载 简单内存泄漏检测方法 解决 Detected memory leaks! 问题

jackyhwei 发布于 2011-11-14 09:41 点击: 次 来自:hi.baidu.com/cr0_3关于内存泄漏检测,有一个Visual Leak Detector ,按照它的介绍的确很不错,可以直接具体到代码行指出内存泄漏,但是个人使用了一下,发现debug的速度太慢了,不知道是不是我个人程序的问题.......像上面的泄漏,我用CrtSetBreak

2015-03-14 11:58:04 982

原创 图片动画美术资源的优化-可大量的优化IO/内存/CPU/GPU性能

一、图片贴图纹理的优化压缩http://www.58player.com/blog-2533-66464.html1.           图片分类合并: 成plist大图文件减少内存,常驻的plist和公共的plist可以进入游戏就加载;特定界面的plist可以打开时候加载,如果太大卡顿那么进入场景时候加载,离开场景时候释放。因为Opengl是以2的整数幂申请图片纹理内存的,所以用pli

2015-03-14 10:52:21 2691

原创 GPU性能的优化

研究有限:以后持续补充思路:优化贴图动画资源,常用的纹理常驻GPU显存中,使用批量渲染,编写高效的Shader分担计算任务和合理利用上GPU.提高重用,减少加载和运算:使用Ccbatchsprite, cccreatureatals维护同一份纹理数据和暂留在GPU中的方法,可以有效的提高性能。尽量用序列帧代替骨骼动画帧, 用光照纹理代替实时光照。用HLSL语言来

2015-03-14 10:27:41 1409

原创 内存性能的优化

思路:少申请内存,优化资源使得总体更少的内存,高效的利用和管理内存,内存还需要常驻内存不需要马上释放。一、内存的申请频繁申请的内存:因为堆内存申请比较耗时,对于频繁需要申请内存的对象,用内存池获取,避免每次向操作系统申请堆资源,可以有效的提高申请内存的时间。非频繁的申请内存:采用传统的malloc,new的方式申请内存,不用了马上释放。二、优化资源总体使用更少的内存资源

2015-03-14 09:48:50 981

原创 CPU计算逻辑性能的优化

尽量不让每帧都更新。重点关注每帧都更新的函数,频繁调用的函数。重点关注大型的函数,算法效率复杂的函数,优化算法。需要注意一些细节的开销。一、用回调或观察者来代替每帧update对于一些界面信息的更新,尽量用回调的机制来实现,而不是每帧update的方式来实现。能够设计为回调的,能够设计为观察者模式的,都应该设计为回调为观察者。而不是用蛮力的每帧检查。

2015-03-13 23:55:51 1620

原创 IO性能的优化

一、加载前1.预读取,避免后面一下子读取任务太多:使用预先读取,分步读取,避免内存峰值突然上升。二、加载时2.异步加载,最有效的提高读取性能:使用多线程,异步加载,可以有效的提高读取资源的速度。3.使用内存文件映射,建立映射避免内核缓存,更快的读取速度当读取的数据较大时,可以使用内存文件映射,windows中用CreateFileMapping系列函数,

2015-03-13 23:11:19 1820

转载 OC内存管理模型

OC三种内存管理模式:1.       MRC: ManualRetain-Release手动持有释放,OC本身的引用计数alloc/new/copy/mutablecopy release/autorelease。2.       ARC: Automatic Reference Counting自动引用计数:Xcode的ProjectSetting中,设置Objective-C

2015-03-13 22:54:01 1866

原创 内存管理经验

一、内存管理原理:内存堆内存,为了获得更自由控制内存的使用时间和空间:控制生命期提高内存效率,更大空间;也付出了相比栈更多时间空间效率风险代价:相比栈舍弃编译器自动控制生命,产生更多碎片导致缓慢,分配效率因需要算法导致低下的代价,也导致了内存泄露容易dump机器的风险。二、内存管理问题:申请问题:空指针,未初始化指针数组变量。使用问题:空指针,越界指针,栈失效指针,野指针,

2015-03-11 08:40:41 935

原创 UML类图箭头含义

线-小箭头,中间的线区分:->关联 :类中使用了对方的指针,或者引用--->依赖 :函数参数中使用了对方,指针方式或者引用方式,可以相互依赖。菱形-线-小箭头,开始端的菱形区分:实心菱形-组合:菱形方拥有实线方的对象成员,这个成员单独存在没有意义,需要负责这个对象的生命期。空心菱形-聚合: 菱形方拥有实线方的对象成员,这个成员单独存在也是有意义的,或者是个单例,不负责对

2015-03-11 08:33:26 4411

原创 C++文件读取操作详解

一、文件打开的方式和默认选项// 附加到末尾,原来的数据不变ios::app Opens an output file for appending.// 文件打开后定位到文件尾,ios:app就包含有此属性ios::ate Opens an existing file (either input or output) and seeks the end.//附加到末尾原来的数据

2015-03-11 00:01:45 9054

原创 setup factory打包工具的使用

setup factory优点:支持大于2G的安装包打包(Inno Setup,NSIS不支持)。缺点:原来的界面控件不能在基础上修改,只能自定义custom的对话框,但是脚本都需要自己编写,比较繁琐,只能参考用户文档和google揣摩了,下面是自己实际项目弄的一些脚本内容,以供参考。1.自定义界面,然后编写脚本OnPreload脚本: -- These actions are

2015-03-10 23:32:07 4357 1

原创 MD5算法使用简述

总结:文件的MD5算法是用二进制方式读取的文件内容(不经过任何翻译处理)作为输入的,具体运算时候会对输入进行分组筛选,四轮循环运算,得到4个unsigned long的整型,然后将存储中的小端模式翻转作为正确的一个个字符串输出。

2015-03-10 23:13:46 1149

原创 windows下文本文件读取和二进制文件读写的区别

一、写    二进制方式写,当遇到整型和浮点数时是以小端模式的整个十六进制值写入到文件中(和内存中一样),当遇到ascii字符和utf-16(unicode)类型的字符时候是用该编码的key值(unicode 16字节时候不作为小端模式而是书写模式存储)写入到文件中(和内存中一样)。    文本方式写,文本方式会根据当前程序使用的编码方式,将所有整型/浮点数/字符,都当做字符一个个映射到编

2015-03-10 08:31:48 7219 2

原创 C/C++快速读写磁盘数据的方法-块读取/异步/优化分析算法/内存文件映射的原理和使用

快速读写磁盘数据的方法:1.一下子将数据读取到内存的(无论是文本还是二进制),而不是一行行的读取。2.异步的IO,创建多线程,或者使用重叠IO,IO复用,异步的事件回调通知机制(可以用事件对象,信号驱动来实现)。3.使用内存文件映射, window是CreateFileMapping,MapViewOfFile,UnmapViewOfFile,CloseHandle;linux是用

2015-03-08 18:18:00 14645 8

原创 网络通信客户端模块的编写

参考文章:http://yjtjh.blog.51cto.com/1060831/2941191.设置socket选项/tcp建立和释放连接的状态CLOSE_TIME,TIME_WAITE/recv,send的异常处理// socket提供活保功能,也就是心跳SO_KEEPALIVESO_KEEPALIVE_VALS// 马上重新使用端口建立连接,避免WAIT_TIME

2015-03-07 08:42:57 1574

转载 断点续传的原理

编程中对HTTP报文添加属性即可:发送断点续传报文内容:RANGE: bytes=2000070- 1. 发送代码:httpConnection.setRequestProperty("RANGE","bytes=2000070"); 服务器返回断点续传报文内容:206 Content-Length=106786028 Content-Range=bytes 2

2015-03-07 08:42:47 1371

转载 位操作基础篇之位操作全面总结

位操作基础篇之位操作全面总结分类: C/C++/C#基础2012-03-19 09:34 42471人阅读 评论(128) 收藏 举报CC++位操作判断奇偶-交换两数-变换符号求绝对值-位操作压缩空间位操作趣味应用位操作笔试面试目录(?)[+]Title:       位操作基础篇之位操作全面总结Author:     MoreWindowsE-mail: 

2015-03-05 07:57:18 786

转载 计算机数值中的乘法除法原理

乘法:被分解为左移累加。除法:被分解为右移累减去,减法可以转换为加法。浮点数的运算:S x 2(^F) x M浮点数是原码表示法,S符号位,F阶码 + 127, M尾数舍弃前面的1(如果FF阶码用的表示法是偏移码(无符号整型表示,并不是书本说的移码,阶码加减运算的时候,应该用了寄存器处理,不是移码运算,因为位数都不够)。浮点数加减:阶码对齐; 尾数加减,处理溢出,规格化即可

2015-03-05 07:55:05 12999 1

转载 同步异步/阻塞非阻塞 和 5种linux网络通信模型

本文整理转自:http://blog.csdn.net/hguisu/article/details/7453390会阻塞的函数:connect, accept,send/recv/sendto/recvfrom等读写函数.不会阻塞的函数:bind, listen,socket, closesocket.linux网络通信模型有:阻塞IO模型(同步),非阻塞IO模型(拷贝同步),I

2015-03-04 23:28:40 2109

原创 windows上的5种网络通信模型示例代码

一些好设计的经验:linux网络:高性能网络编程IO复用和Epoll高效率之处-遍历的集合更小空间换时间/水平触发和边缘触发主动返回。反应堆的设计模式-避免C风格的一个应用逻辑都需要处理多个对象而是用OO设计模式方式分离。windows网络:select模型,WSAAsyncSelect模型,WSAEventSelect模型,重叠Overlapped IO模

2015-03-03 22:57:43 8816

原创 TCP/IP收发缓存_MSS/MTU算法机制_状态图_连接建立和断开之上的socket函数需要注意的问题

一、客户端socket函数:// 1. socket 请求前要先加载socket驱动库,指定协议族,socket类型,具体协议。SOCKET sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  if(INVALID_SOCKET == sClient) {  printf("Get Socket Error: IN

2015-03-03 22:52:12 1645

原创 TCP建立和释放原理和需要注意的问题

I.TCP报文:各个段位说明:    源端口和目的端口:  各占 2 字节.端口是传输层与应用层的服务接口.传输层的复用和分用功能都要通过端口才能实现    序号: 占 4 字节.TCP 连接中传送的数据流中的每一个字节都编上一个序号.序号字段的值则指的是本报文段所发送的数据的第一个字节的序号    确认号:  占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的

2015-03-03 22:48:55 2360

原创 网络数据的传递

/*网络之间整数,浮点数,非数值信息的传递:1.基本缓存整数传递:写入应用缓存会放到协议缓存时候:memcpy读入字符信息。布尔类型byte类型直接写入。整型:htonshtonlhtonll转换大小端后写入。读取应用缓存来自协议缓存时候:memcpy截取字符串的数据。类型转换:布尔Byte直接读取整型:多字节组成需要转换ntoh

2015-03-03 22:41:27 1008

VisualAssist.X_10.9.2333

Visual Assist X For Visual Studio, 番茄助手支持VS2019 VS2017 VS2015 VS2012 VS2010. 亲测可用,欢迎评论

2020-05-31

Python学习文档

Python学习文档

2018-10-04

C++ 11 学习总结文档

c++特性11 学习 总结文档,对特性查询很有帮助,欢迎下载

2018-10-04

Unreal Engine 4 Game Development in 24 Hours

Unreal Engine 4 Game Development in 24 Hours英文版本,欢迎下载。

2018-10-03

CC++黑色星期五计算方法

C C++黑色星期五代码,逻辑严谨,代码清晰的实现,VC Linux下代码可以直接运行;欢迎下载切磋。

2013-03-12

Linux帮助文档用户指南手册

Linux帮助文档 用户指南 linux/unix用户手册,新手管理员指南;必备文档,chm格式。

2011-04-11

C/C++语言帮助文档

C/C++ 帮助文档 参考文档 ,包含C函数库,C++标准模板库,chm格式易于查询,C/C++程序员手册

2011-04-11

MFC最详细的帮助文档

MFC详细的帮助文档,内涵win32 API 函数,MFC详细类库;VC开发人员的详细文档。

2011-03-08

linux帮助文档linux.chm

linux帮助文档;全面了解最流行的linux版本特征;详解linux操作系统;对初学者很有帮助哦。

2010-11-26

空空如也

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

TA关注的人

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