- 博客(51)
- 收藏
- 关注
原创 c++与java访问符区别
c++:修饰成员变量和函数(能否在类外访问,继承):public:可以在类外访问private:只能在类中访问,不能被继承protected:不能在类中访问,可以被继承修饰继承(被继承的成员在子类中的权限):public:与父类一样private:privateprotected:protectedjava:修饰成员变量和函数(访问时与所在类
2013-12-29 14:32:38
557
转载 一个简单的游戏服务器框架
最近一段时间不是很忙,就写了一个自己的游戏服务器框架雏形,很多地方还不够完善,但是基本上也算是能够跑起来了。我先从上层结构说起,一直到实现细节吧,想起什么就写什么。第一部分 服务器逻辑服务器这边简单的分为三个部分,客户端的连接首先到达网关服务器,网关这里有个线程用来监听来自与客户端的连接,然后在将这些数据发送到游戏逻辑服务器上,这个逻辑游戏服务器上,数据的交互就是通过与数据服务器进
2013-12-21 17:10:14
699
转载 谈一谈网络编程学习经验(06-08更新)
谈一谈网络编程学习经验陈硕giantchen@gmail.comblog.youkuaiyun.com/Solstice2011-06-06PDF 版下载:https://github.com/downloads/chenshuo/documents/LearningNetworkProgramming.pdf本文谈一谈我在学习网络编程方面的一些个人经验。“网络
2013-12-21 14:11:07
1103
转载 百万用户级游戏服务器架构设计
服务器结构探讨 -- 最简单的结构 所谓服务器结构,也就是如何将服务器各部分合理地安排,以实现最初的功能需求。所以,结构本无所谓正确与错误;当然,优秀的结构更有助于系统的搭建,对系统的可扩展性及可维护性也有更大的帮助。 好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建
2013-12-21 10:54:16
5500
转载 linux下的daemon进程
#include int daemon(int nochdir,int noclose) 在创建精灵进程的时候,往往需要将精灵进程的工作目录修改为"/"根目录 并且将标准输入,输出和错误输出重定向到/dev/null daemon的作用就是当参数nochdir为0时,将根目录修改为工作目录 noclose为0时,做输入,输出以及错误输出重定向到/dev/null
2013-12-20 14:33:22
652
转载 网络协议编写的三层境界
免责声明本文不会涉及到你该使用UDP还是TCP,是FTP还是HTTP,也就是跟P都没有关系。^^ 同时,也不涉及该使用私有协议还是标准协议,还是在标准协议下使用私有协议, 而是会谈及在具体的协议编写的时候,使用哪种编写的方式会更好。由于本人的知识有限,谈及利弊时,主要以使用C++编写服务端时的经验为主,至于同时适不适用于其他语言,就靠童鞋们自己分辨了。 第一层境界:新手入门
2013-12-17 17:30:47
458
转载 makefile 获取指定目录下源文件名称
目的: 得到指定路径下源文件名称集合 依次循环取得各目录下的所有源文件,在各目录下取源文件时过滤不支持的源文件格式, 得到源文件集合(带路径)SOURCES := $(foreach x,${SRC_DIR},\ $(wildcard \ $(addprefix ${x}/*,${SFIX}) ) )例:
2013-12-16 20:52:12
3764
转载 Netstat命令详解
Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用Netstat查一查为什么会出现这些情况了。Ne
2013-12-10 22:42:20
606
转载 C编译器、链接器、加载器详解
C编译器、链接器、加载器详解一、概述C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可加载、可执行代码的过程。过程图解如下: 预处理器:将.c 文件转化成
2013-12-08 17:02:35
848
转载 linux make讲解
三、终于开始make了 make 是个命令,先谈一下,为什么要make? 首先的理由就是,你可以将前面很多gcc的命令行,汇总起来,并且一次确认,多个命令自动运行。我相信很多人说我在忽悠。这就是个“批处理”,就是加上复杂的变量替换,条件执行,也就是个脚本。没错,make首先就是个脚本分析执行的工作。 但make有优势的地方在于依赖的检查。什么是依赖,初学者看GN
2013-12-08 15:38:14
810
原创 gcc使用
1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Comp
2013-12-07 22:58:52
484
转载 Linux编译多个文件
Linux 内核和许多其他自由软件以及开放源码应用程序都是用 C 语言编写并使用 GCC 编译的。 编译C++程序: -c 只编译不连接 g++ file1 -c -o file1.o g++ file2 -c -o file2.o g++ file1.o file.o -o exec g++ -c a.cpp 编译
2013-12-02 19:59:15
731
原创 怎样算得上熟悉TCP/IP编程(协议)
抓包先从熟悉的下手,HTTP,FTP。封装包 自己封装包,和现有协议通信。TCP/IP协议作为一个底层协议,不仅可以编写聊天程序,很多高层协议都是基于TCP/IP编写的。自己造轮子,这样也有助于理解其它协议,比如连接、查询MySQL(用Socekt函数而不是库函数),自己封装一个memched函数库…以前我大学时用perl发送“飞鸽传书”包,经常上课的时候同学们集体收到弹出信息
2013-12-01 20:57:58
4244
转载 评:Linux多线程服务端编程
9.1分,尼玛,坑谁呢。。。。。 看这里,比较客观 http://ar.newsmth.net/thread-c64b61785ba061.html muduo适用于什么环境? muduo的官方一句话自我介绍是:A C++ non-blocking multi-threaded network library for Linux。 在其re
2013-12-01 13:38:12
1320
转载 aio,epoll,libevent,boost::asio解决的问题
这几天一直在做linux大批量数据的解决方案,不断的深入了解了一下aio,epoll,libevent,boost::asio。以前只知道他们都是做异步/非阻塞的,但是具体解决的问题的关键点是什么,通过这几天的深入了解,把他们总结一下:aio是linux2.6以后内核实现的异步IO,或者说他才是真正意义上的异步IO。epoll作为select的linux的替代品,解决了selectfd_s
2013-12-01 10:47:53
1977
转载 Linux线程技术的概念与技术发展
Linux线程技术的概念与技术发展 Linux是一个多用户、多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。在操作系统设计上,从进程(Process)演化出线程(Thread),最主要的目的就是更好地支持多处理器,并且减小(进程/线程)上下文切换的开销。进程和线程的关系
2013-11-27 18:32:10
471
转载 深入Pthread(五):线程属性
深入Pthread(五):线程属性 线程属性相关APIphtread_attr_t attr;int pthread_attr_init(pthread_attr_t* attr);int pthread_attr_destroy(pthread_attr_t* attr);int pthread_attr_getdetachstate(pthread_attr_t*
2013-11-27 18:31:11
429
转载 深入Pthread(四):一次初始化-pthread_once_t
深入Pthread(四):一次初始化-pthread_once_t 用到的API:pthread_once_t once_control = PTHREAD_ONCE_INIT;int pthread_once(pthread_once_t* once_control, void (*init_routine)(void)); 有些事需要一次且仅需要一次执
2013-11-27 18:30:15
431
转载 深入Phtread(三):线程的同步-Condition Variables
深入Phtread(三):线程的同步-Condition Variables 继续昨天的线程同步,条件变量(Condition Variables)是用于线程间,通信共享数据状态改变的机制。简介条件变量的创建和销毁等待条件变量唤醒等待条件变量的线程简介 当线程互斥地访问一些共享的状态时,往往会有些线程需要等到这些状态改变后才应该继续执行。如:有一
2013-11-27 18:29:26
464
转载 深入Phtread(二):线程的同步-Mutex
并行的世界,没有同步,就失去了秩序,就会乱作一团!试想,交通没有红绿灯,生产线产品装配没有一定的顺序... 结果是显而易见的。多个线程也需要同步,否则程序运行起来结果不可预测,这是我们最不能容忍的。交通的同步机制就是红绿灯,Pthread提供了互斥量(mutex)和条件变量(Condition Variables)两种机制去同步线程。不变量,临界区和判定条件互斥量(Mutex)创建
2013-11-27 18:27:42
572
转载 深入Phtread(一):线程的一生
深入Phtread(一):线程的一生 我们每个人都并行地活在这个世界上 ,每一天每个人都干着不同的事情。每个人的人生都是不同的,从出生 -> 活着 -> 死去, 个中滋味,只能自己体味了。我们的线程兄弟也一样,只不过它的环境没有人类社会这么复杂,它的一生,被操作系统控制,被我们程序员控制着!呵呵,想想都觉得这兄弟可怜啊!不过这哥们可不许小瞧了,功能大了去了!具体线程的定义和好处参考
2013-11-27 18:25:42
465
转载 POSIX 多线程程序设计
POSIX 多线程程序设计 Blaise Barney, Lawrence Livermore National Laboratory 目录表 摘要 译者序Pthreads 概述 什么是线程? 什么是Pthreads? 为什么使用Pthreads? 使用线程设计程序 Pthreads API编译多线程程序 线程管理
2013-11-27 18:20:31
488
转载 [译文]程序员能力矩阵 Programmer Competency Matrix
注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。计算机科学 Computer Science 2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments数据结构不知道数组和链表的差异能够解释和使用数组,链表,字典等,并且能够用于实际的编程
2013-11-27 16:45:05
371
转载 file's owner以及outlet与连线的理解
每个xib有一个control,即对应的控制器类,file'ower->identity inspector->custom class指定让哪个类作为该xib的controller.file'ower->connections inspector->outlets:绑定的输出口file'ower->connections inspector->actions:绑定的操作.
2013-11-25 12:51:46
542
转载 精简易理解的ios开发要点
精简易理解的ios开发要点(一句话的要点,不断总结补充!!)调用UIApplicationMain函数来启动事件循环并运行整个应用程序是main主函数的核心任务。UIApplicationMain函数的第三个(principalClassName)和第四个(delegateClassName)参数,分别指明了应用程序的主类和应用程序委托类。应用程序类的静态方法sharedA
2013-11-25 10:09:39
524
转载 iOS应用程序生命周期(前后台切换,应用的各种状态)详解
iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。//开发app,我们要遵循apple公司的一些指导原则,原则如下:1、应用程序的状态状态如下:Not running 未运行 程
2013-11-22 16:59:42
428
转载 UIApplication深入研究
很多时候,我们不需要关心这个类,我们很少继承这个类,偶尔会调用这个类的api来实现一些功能,但是不可否认,这个类是iOS编程中很重要的一个概念,所以我这里写这个文章来总结以下这个类的信息,如果写的不对的地方,请留言,多谢。UIApplication的核心作用是提供了iOS程序运行期间的控制和协作工作。 每一个程序在运行期必须有且仅有一个UIApplication(或则其子类)的一个实例
2013-11-22 11:56:33
339
转载 iOS中引用计数内存管理机制分析
在iOS中引用计数是内存的管理方式,虽然在iOS5版本中,已经支持了自动引用计数管理模式,但理解它的运行方式有助于我们了解程序的运行原理,有助于debug程序。 操作系统的内存管理分成堆和栈。 在堆中分配的内存,都试用引用计数模式;在栈中则不是。 NSString定义的对象是保存在栈中,所以它没有引用计算。看一些书上说它的引用计算会是ffffffff
2013-11-22 09:30:35
502
转载 iOS开发(stanford2011)笔记第二课Objective-C关键知识点
在第二课中,介绍了Objective-C的一些关键知识点,包括点访问方法,strong和weak的比较,nil,实例化,动态绑定技术(程序在执行时才会知道要执行的代码有没有),自省(选择器的使用),基础的框架如NSObject,NSString等等。这些是开发的基础,整理了一遍有利于程序的开发和调整。像类方法只能使用类来调用,实例方法只能使用实例,这点以前还没有明白。对于在实例中怎么不能调用类
2013-11-22 09:29:17
581
转载 了解Cocoa框架类之间继承关系
1、iOS实现可以看作是多个层的集合("Game Kit 框架"含有对这些层的介绍),底层为所有应用程序提供基础服务,高层则包含一些复杂巧妙的服务和技术。四个层依次为:Cocoa Touch、Media、Core Services、Core OS。2、在编写代码的时候,应该尽可能地使用高层框架,而不要使用底层框架。高层框架为底层构造提供面向对象的抽象。这些抽象可以减少需编写的代码行数,同时
2013-11-21 17:01:56
673
转载 Object c 基础知识
文件类型说明:.h 头文件,用于定义类、实例变量及类中的方法等定义信息(interface)。.m 源文件,定义方法体,可实现objce-c和c方法(implementation)。.mm c++源文件引用头文件:可通过#import关键字引入想要使用的头文件,该关键字作用通#include相同,不过import会确保每个文件只会被引用一次。object-
2013-11-21 15:44:26
713
转载 容器list使用之erase
今天无论如何要写点东西,算是搞清楚了一点东西吧。有点小小的成就感。 之前在程序里面使用了list容器,其中用到了erase()函数,之前一直没出现问题,这两天突然莫名奇妙。花了点时间,搞清楚了erase()函数的机理。 常用的删除容器中元素的方法是如下(方法1): list< int> List; list< int>::it
2013-09-26 15:01:16
680
转载 ssh常用用法小结
ssh常用用法小结1、连接到远程主机:命令格式 :ssh name@remoteserver 或者ssh remoteserver -l name说明:以上两种方式都可以远程登录到远程主机,server代表远程主机,name为登录远程主机的用户名。2、连接到远程主机指定的端口:命令格式:ssh name@remoteserver
2013-08-23 12:51:50
414
转载 centos6 ssh-keygen 免密码 自动登陆
分类: LINUX环境: centos6a,centos6b,centos6c需求:从centos6a免密码,自动登陆到centos6b或者centos6c步骤:1 修改每台机器的/etc/hosts文件,内容如下127.0.0.1 localhost192.168.0.2 centos6a192.168.0.3 centos6b192.16
2013-08-23 12:50:53
940
转载 C语言mysql常用函数
C语言操作mysql数据 常用函数 所需头文件: #include 功能: 获得或初始化一个MYSQL结构函数原型: MYSQL *mysql_init(MYSQL *mysql)函数返回值: 一个被始化的MYSQL*句柄备注: 在内存不足的情况下,返回NULL 所需头文件: #include 函数功能: 关闭一个服务器连接,并释放与连接相关的内存函
2013-08-05 16:05:15
741
转载 设置 Linux 的 LD_LIBRARY_PATH 变量
在 Linux 下,如果你写好了自己的动态链接库,需要在其它程序里调用,则需要让这些程序能找到这些动态链接库。如果设置不对,会出现类似如下的错误:test: error while loading shared libraries: libexampleso.so.0: cannot open shared object file: No such file or directory这
2013-08-03 12:04:01
423
转载 MySQL 数据类型
MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。 表列出了各种数值类型以及它们的允许范围和占用的内存空间。类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127
2013-08-02 11:11:03
371
转载 ldd命令及动态库加载
1.在制作自己的发行版时经常需要判断某条命令需要哪些共享库文件的支持,以确保指定的命令在独立的系统内可以可靠的运行;在Linux环境下通过ldd命令即可实现,在终端下执行:ldd /bin/ls //ldd命令通常使用"-v"或"--verbose"选项来显示所依赖的动态连接库的尽可能的详细信息。即可得到/bin/ls命令的相关共享库文件列表:libtermcap.
2013-08-01 21:04:39
2402
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人