- 博客(46)
- 资源 (5)
- 收藏
- 关注
原创 23种设计模式-7种结构模式
把类或对象结合在一起形成一个更大的结构。装饰器模式:动态的给对象添加新的功能。代理模式:为其它对象提供一个代理以便控制这个对象的访问。桥接模式:将抽象部分和它的实现部分分离,使它们都可以独立的变化。适配器模式:将一个类的方法接口转换成客户希望的另一个接口。组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。外观模式:对外提供一个统一的方法,来访问子系统中的一群接口。享元模式:通过共享技术来有效的支持大量细粒度的对象。
2023-08-21 20:24:12
616
原创 epoll理解与源码实现
一、概念epoll是一种I/O事件通知机制,是linux 内核实现IO多路复用的一个实现。IO多路复用是指,在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。IO多路复用,以后也会有详细讲解。二、I/O输入输出(input/output)的对象可以是文件(file), 网络(socket),进程之间的管道(pipe)。在linux系统中,都用文件描述符(fd)来表示。三、事件可读事件,当文件描述符关联的内核读缓冲区可读,则触发可读事件。(可读
2022-05-08 15:06:34
335
原创 nginx内存池源码分析
1、简述很多开源项目都有内存池,不过大多数开源项目的内存池设计都并不一样nginx会为每一个连接创建内存池,连接断开就会释放内存池。nginx内存池内存的分配区分大小快,代码如下2、数据结构以及接口ngx_palloc.h:/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */#ifndef _NGX_PALLOC_H_INCLUDED_#define _NGX_PALLOC_H_INCLUDED_#inc
2022-05-05 22:37:02
1517
原创 redis存储结构
reids编码redisObject/* Objects encoding. Some kind of objects like Strings and Hashes can be * internally represented in multiple ways. The 'encoding' field of the object * is set to one of this fields for this object. */#define OBJ_ENCODING_RAW 0
2022-05-04 17:20:20
661
转载 jemalloc原理概览
jemalloc在linux的世界里声名鹊起,并被移植到多个平台。后起之秀的tcmalloc性能与之相近,虽有谷歌这个牛爹,但因jemalloc专美在前,tcmalloc的使用范围还是略逊一筹。网络上关于jemalloc的各种解读很多,不再一一赘述,这里 挑一些关键点来分析。 一、地址访问 malloc和free的第一个参数都是内存地址,如何快速定位到该地址所属的内存块基址呢,在高频内存分配...
2022-04-23 17:16:15
874
原创 非阻塞,et模型 epoll
#include #include #include #include #include #include #include #include #include #include #define MAX_EVENTS 100#define MAX_BUFFER_SIZE 10/*设置非阻塞*/int setNonBlock(int fd){ int old_f
2016-11-29 20:21:57
467
原创 C++虚表的实现原理(windows & linux上)
当大家被问到C++多态是怎么实现的时候,一般也就想到了虚函数吧,进一步也就是想到了与其关联的虚表指针,那我们就该想想这个虚表到底是怎么做到的呢。/*author: Jeson Yang date: 2015.11.21 file: ****.cpp*/#include using namespace std;#define __stdcallclass CBase{publ
2015-11-21 20:21:27
791
原创 linux安装mysql步骤(unrecognized service错误)
由于之前项目 “冰火火” 做完啦,现在要投入到一个新的项目组去了。由于对linux还是不是太熟悉,安装时出了点小问题,写下来增加点印象吧。系统的话我安装的跟新项目组一样的centos5/5 下面是具体步骤了:查看本机有没有安装过,没有就直接安装喽[root@localhost ~]# rpm -qa |grep mysql -i[root@localhost ~]# rpm
2015-09-19 18:47:45
21061
1
原创 C++四种强制类型转换
ANSI-C++标准定义了四个新的转换符:'reinterpret_cast', 'static_cast', 'dynamic_cast' 和 'const_cast',目的在于控制类(class)之间的类型转换。代码:reinterpret_cast(expression)dynamic_cast(expression)static_cast(expression)const_
2014-12-16 22:44:37
523
原创 const在变量前后,函数后的含义(C++)
int me; const int * p1=&me;//p1可变,*p1不可变,此时不能用*p1来修改,但是p1可以转向 int * const p2=&me;//p2不可变,*p2可变,此时允许*p2来修改其值,但是p2不能转向。 const int *const p3=&me;//p3不可变,*p3也不可变,此时既不能用*p3来修改其值,也不能转向 const 放在函
2014-12-16 21:16:52
2119
原创 C++智能指针(设计和使用)
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷
2014-09-17 23:22:44
596
原创 C++STL (vector,list,map)
/////////////////////////////////////////////////////////////////////////////author:Jeson Yang///Date:2014.9.15//////////////////////////////////////////////////////////////////////////#include #
2014-09-15 21:45:31
1019
原创 LUA注释语法
服务器端代码已经完成,客户端正在优化,游戏不久将上线,最近没事做,老大要我开始学习project Anarchy了,里面代码是比较偏爱的C++,包含lua,暂没学过lua,看了下LUA代码,类似于Delphi,以下是注释方式: 单行注释: 采用“--”来对注释后面的字符进行注释,类似于 ISO C90之后的 C语言的注释"//"多行注释:采用"--[[" "]]" 一对来注释,类似于C
2014-09-02 18:23:06
2455
原创 mysql(windows or linux)忘记密码
提示:1045 access denied for user 'root'@'localhost' using password yes连接数据库时候弹出这个,然后又忘记密码了请看转载请注明出处http://blog.youkuaiyun.com/yc7369曾经由于这个问题找了各种方法,各种行不通,最后将可用方法进行了记录,今日将其整理,以高来者Linux:先跳转到mysql文件
2014-08-13 18:08:06
802
原创 linux上MySQL修改密码的各种方法,yc整理
linux上MySQL修改密码的各种方法整理了以下四种在MySQL中修改root密码的方法,可能对大家有所帮助!方法1: 用SET PASSWORD命令 mysql -uroot mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');方法2:
2014-08-13 16:26:37
1162
转载 华为面试题(8分钟写出代码)
http://blog.youkuaiyun.com/yc7369 转载请注明出处JesonYang原创今天又看见了这个题目,好像上次是李灾跟我说腾讯面他的时候问了这个问题的。想了半天,在网上也看了半天,发现一个不错的算法,先帖出来:^ ^ /*有两个数组a,b,大小都为n,数组元素的值任意,无序;要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小*/
2014-08-10 23:30:42
1569
原创 Mac中使用svn进行项目管理
Mac中使用svn进行项目管理,借鉴了http://blog.youkuaiyun.com/q199109106q/article/details/8655204以下方案多人亲测可用转载请注明出处:http://blog.youkuaiyun.com/yc7369在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我
2014-07-31 10:15:34
2300
1
原创 mysql中insert与select的嵌套使用
如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name当然,上面的语句比较适合两个表的
2014-07-15 12:31:23
7628
2
转载 eclipse 中的注释 快捷键
(1)Ctrl+Space 说明:内容助理。提供对方法,变量,参数,javadoc等得提示, 应运在多种场合,总之需要提示的时候可先按此快捷键。 注:避免输入法的切换设置与此设置冲突 (2)Ctrl+Shift+Space 说明:变量提示 (3)Ctrl+/ 说明:添加/消除//注释,在eclipse2.0中,消除注释为Ctrl+\ (4)Ctrl+Sh
2014-07-14 10:46:01
1379
1
原创 MySql的like语句中的通配符:百分号、下划线和escape
MySql的like语句中的通配符:百分号、下划线和escape%代表任意多个字符Sql代码 http://blog.youkuaiyun.com/yc7369/select * from user where username like '%huxiao'; select * from user where username like 'huxiao%'; select *
2014-07-02 16:12:32
7373
2
原创 mysql float double 类型
1.float类型float列类型默认长度查不到结果,必须指定精度,比如 num float, insert into table (num) values (0.12); select * from table where num=0.12的话,empty set。num float(9,7), insert into table (num) values (0.12); selec
2014-06-30 15:53:31
1380
1
原创 Singleton单例模式
Singleton 是对全局变量的取代策略作用:保证一个类只能有一个实例,并提供一个全局唯一的访问点。仅有一个实例:通过类的静态成员变量来体现。提供访问它的全局访问点:访问静态成员变量的静态成员函数来体现。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问
2014-06-29 19:29:02
1148
3
转载 smartfoxserver扩展里面过滤聊天的不合法字符
最近做手游要加上一个判断聊天内容是否包含有不合法字符,因为SFS默认它是UTF-8编码的,除了英文以外发送过来的字符都是会乱码的,所以我想了一天想到了下面的方法供大家参考,如果有不对的地方请留言提出!try { String[] keyword = { "操", "fuck", "叼", "cao" };String content = json.getString("cont
2014-06-28 15:05:56
1677
1
原创 IOCP模型总结(总结回顾)
IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费大量的时间在进行线程的上下文切换,并没有多少时间花在线程运行上。再加上创建新线程的开销
2014-06-28 12:14:54
1214
2
转载 socket阻塞与非阻塞,同步与异步、I/O模型 .
在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回
2014-06-27 00:29:21
833
转载 SmartFoxServer搭建多人在线游戏技术方案
The following diagram illustrates the final server architecture of our fictitiousVirtuaParkproject: 下图说明了VirtuaPark项目的最终架构:· Web Server: since most of the server side calls will be direc
2014-06-23 13:50:51
1742
转载 java float转换int
1.Java的简单类型及其封装器类 ⑴Java简单类型与封装类 我们知道,Java语言是典型的支持面向对象的程序语言,但考虑到有些基本数据类型的结构简单,占内存小且存取速度快等优点,Java依然提供了对这些非面向对象的简单数据类型的支持。当然,Java在提供大量的其它类时,也提供了与简单数据类型对应的封装类,于是,Java中就有了诸如int和Integer(float和Float、doub
2014-06-21 16:48:36
19679
原创 Version 1.5 of the JVM is not suitable for this product.Version:1.6 or greater is required
Version 1.5 of the JVM is not suitable for this product.Version:1.6 or greater is required.
2014-06-11 00:32:31
3417
转载 苹果Swift语言中文教程(十) 属性
属性是描述特定类、结构或者枚举的值。存储属性作为实例的一部分存储常量与变量的值,而计算属性计算他们的值(不只是存储)。计算属性存在于类、结构与枚举中。存储属性仅仅只在类与结构中。属性通常与特定类型实例联系在一起。但属性也可以与类型本身联系在一起,这样的属性称之为类型属性。另外,可以定义属性观察者来处理属性值发生改变的情况,这样你就可以对用户操作做出反应。属性观察者可以被加在自己定义的存储属
2014-06-08 01:03:20
722
转载 苹果Swift语言中文教程(九) 类与结构
类与结构是编程人员在代码中会经常用到的代码块。在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能。和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文件来使用类或者结构。Swift中的类或者结构可以在单文件中直接定义,一旦定义完成后,就能够被直接其它代码使用。注意:一个类的实例一般被视作一个对象,但是在Swift中,类与结构更像是一个函数方法
2014-06-08 01:01:51
709
转载 苹果Swift语言中文教程(八) 枚举类型
枚举定义了一个常用的具有相关性的一组数据,并在你的代码中以一个安全的方式使用它们。如果你熟悉C语言,你就会知道,C语言中的枚举指定相关名称为一组整数值。在Swift中枚举更为灵活,不必为枚举的每个成员提供一个值。如果一个值(被称为“原始”的值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或者任何整数或浮点类型的值。另外,枚举成员可以指定任何类型,每个成员都可以存储的不同的相关值
2014-06-08 01:00:24
802
转载 苹果Swift语言中文教程(七)闭包
闭包(Closures)是独立的函数代码块,能在代码中传递及使用。Swift中的闭包与C和Objective-C中的代码块及其它编程语言中的匿名函数相似。闭包可以在上下文的范围内捕获、存储任何被定义的常量和变量引用。因这些常量和变量的封闭性,而命名为“闭包(Closures)”。Swift能够对所有你所能捕获到的引用进行内存管理。NOTE假如你对“捕获(capturing)”不熟悉,请
2014-06-08 00:59:05
917
转载 苹果Swift语言中文教程(六)函数
函数是执行特定任务的代码自包含块。给定一个函数名称标识, 当执行其任务时就可以用这个标识来进行”调用”。Swift的统一的功能语法足够灵活来表达任何东西,无论是甚至没有参数名称的简单的C风格的函数表达式,还是需要为每个本地参数和外部参数设置复 杂名称的Objective-C语言风格的函数。参数提供默认值,以简化函数调用,并通过设置在输入输出参数,在函数执行完成时修改传递的变量。Swift中
2014-06-08 00:57:59
790
转载 苹果Swift语言中文教程(五)控制流
苹果Swift语言中文教程(五)控制流Swift提供了所有C语言中相似的控制流结构。包括for和while循环;if和switch条件语句;break和continue跳转语句等。Swift还加入了for-in循环语句,让编程人员可以在遍历数组,字典,范围,字符串或者其它序列时更加便捷。相对于C语言,Swift中switch语句的case语句后,不会自动跳转到下一个语句,这样就避免了C语言中因为忘记break而造成的错误。 另
2014-06-08 00:56:19
816
转载 苹果Swift语言中文教程(四) 集合类型
苹果Swift语言中文教程(四) 集合类型Swift 提供两种集合类型来存储集合,数组和字典。数组是一个同类型的序列化列表集合。字典是一个能够使用类似于键的唯一标识符来获取值的非序列化集合。在Swift中,数组和字典的键和值都必须明确它的类型。这意味这数组和字典不会插入一个错误的类型的值,以致于出错。这也意味着当你在数组和字典中取回数值的时候能够确定它的类型。Swift 使用确定的集合类型可以保证代码工作是不会出错,和让你在开发阶
2014-06-08 00:54:48
735
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人