模块XXXX可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86(32位)x64(64位)版本兼容。

摘要: 最近自己在编写ActiveX控件。遇到的麻烦事不少。今天遇到了这个问题“模块XXXX可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86(32位)x64(64位)版本兼容。”。在网上找了很多,都是说放置在syswow文件里用这个文件夹里的regsvr32.ex... 阅读全文
posted @ 2014-04-24 16:15 钢少 阅读(5633) 评论(0) 推荐(0) 编辑

Epoll为我们带来了什么

摘要: libevent中用到的,epoll是Linux下多路复用IO接口select/poll的增强版本。网上找到的介绍资料,无法标明来源。Q:网络服务器的瓶颈在哪?A:IO效率。在大家苦苦的为在线人数的增长而导致的系统资源吃紧上的问题正在发愁的时候,Linux2.6内核中提供的SystemEpoll为我们提供了一套完美的解决方案。传统的select以及poll的效率会因为在线人数的线形递增而导致呈二次乃至三次方的下降,这些直接导致了网络服务器可以支持的人数有了个比较明显的限制。自从Linux提供了/dev/epoll的设备以及后来2.6内核中对/dev/epoll设备的访问的封装(SystemEp 阅读全文
posted @ 2014-02-10 11:00 钢少 阅读(259) 评论(0) 推荐(0) 编辑

C内存管理相关内容--取自高质量C++&C编程指南

摘要: 1.内存分配方式内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。2.常见的内存错误及其对策 发生内存错误是件非 阅读全文
posted @ 2013-12-10 17:28 钢少 阅读(185) 评论(0) 推荐(0) 编辑

公司系统简介

摘要: 系统app_m1p运行过程:客户端:将要调用的命令和参数打包,通过tcp发送到消息队列中。等待返回服务端: 1.初始化消息队列,共享内存。 2.将函数注册,就是把函数的调用名等东西写入共享内存中,等待调用。 3.服务端在消息队列中取出一条请求,拆分出来,在共享内存中取出相应的函数,并调用之。 4.返回数据直接打包,再写入消息队列中。ps: 该系统中并没有考虑进程或者是线程中的并行。主要是因为作为运营系统,主要面向的是营业厅这样的场所,用户量不是很大。而且每个函数的处理时间都不会很长。当前使用gearman的系统运行过程:客户端:将要调用的命令和参数打包,通过tcp发送到gearman客户端。等 阅读全文
posted @ 2013-12-10 15:30 钢少 阅读(323) 评论(0) 推荐(0) 编辑

数据架构高可用-腾讯微信学习笔记

摘要: 1.大系统小做 仅仅把模块变得更为清晰,这在海量系统设计开发中是不够的,还需要再物理环境上进行分离部署,出现问题的时候可以快速发现,并且在最快的情况下解决掉。(在盛华这边,我们的后台进程根据功能分为几个,wsafe,wyw,wcx等)。每个进程负责不同的功能,这样在出现问题的时候根据出现的错误就能定位到我们的进程中,从而解决问题。但由于在这边业务不是很大,所以所有的进程都运行在同一台机器上,但是当我们的业务很大的时候可以把各个进程分离出来运行在独立的机器上,有更好的容错性。 将不同的应用逻辑物理分割独立出来,把关键的逻辑混搭在一起,用户注册登录、LBS逻辑、摇一摇逻辑、漂流瓶逻辑、... 阅读全文
posted @ 2013-12-10 15:28 钢少 阅读(876) 评论(0) 推荐(0) 编辑

C语言学习笔记

摘要: C语言学习笔记一.关键字static的作用作用有三:1.在函数体内,被声明为静态的变量在这一函数被调用的过程中维持其值不变。2.在模块内(但在函数体外),被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其他函数访问,它是一个本地的全局变量。3.在模块内,一个被声明为静态的函数只可以被这一模块内的其他函数调用,即这个函数被限制在声明它的本地范围内。二.如何用C编写死循环1.while(1){}2.for(;;){}3.Loop: ... goto Loop; 三.如何访问特定位置的内存eg.一个整型变量的绝对地址0x67a9,请将其值设为0xaa55 int* ptr; ... 阅读全文
posted @ 2013-12-10 15:27 钢少 阅读(166) 评论(0) 推荐(0) 编辑

线程同步的方式和机制

摘要: 线程同步的方式和机制 临界区、互斥区、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。2、互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时... 阅读全文
posted @ 2013-12-10 15:26 钢少 阅读(158) 评论(0) 推荐(0) 编辑

编程珠玑学习笔记

摘要: 编程珠玑学习笔记1.在整数的存储方面有时候可以采取位图和位向量来表示。例如我们可以将集合{1,2,3,5,8,13}存储在下面的这个字符串中:01110100100001000000.集合中表示数字的各个位设置为1,而其他的位全部设为0.给定了表示文件中整数集合的位图数据结构后,我们可以将编写程序的过程分为3个自然阶段。第一个阶段关闭所有的位,将集合初始化为空集。第二个阶段读取文件中的每个整数,并打开相应的位,建立该集合。第三个阶段检查每个位,如果某个位是1,就写出相应的整数,从而创建已排序的输出文件。这样输出的文件就已排好序。2.将n个元素旋转i个位置。例如n=8,i=3,那么向量abcde 阅读全文
posted @ 2013-12-10 15:25 钢少 阅读(235) 评论(0) 推荐(0) 编辑

Linus:利用二级指针删除单向链表

摘要: Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding。下面是Linus的教学原文及翻译——“At the opposite end of the spectrum, I actually wish more people understood the really core low-level kind of coding. Not big, complex stuff like the lockless name lookup, but si 阅读全文
posted @ 2013-12-09 16:54 钢少 阅读(243) 评论(0) 推荐(0) 编辑

C语言的谜题

摘要: 本篇文章《C语言的谜题》展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且我也相信有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题,希望你能更了解C语言。如果你不看答案,不知道是否有把握回答各个谜题?让我们来试试。1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?123456789101112#include #include int main() {while(1){fprintf(stdout,"hello-std-out");fprintf(stderr,"hello-std-err");sleep( 阅读全文
posted @ 2013-12-09 15:40 钢少 阅读(180) 评论(0) 推荐(0) 编辑