2015年11月27日

摘要: 上一篇大家已经知道了,线程与线程之间的调度,是不可控的,那当我们去写多线程程序的时候,一定要将线程是乱序的这一点考虑进去,若不然就会出现线程安全问题。 为什么这样讲呢?因为当程序出现多个线程在运行的时候,你无法确定到底是哪一个线程在执行,可能A执行一行代码,这个时候切换到B执行一行代码,然后又... 阅读全文
posted @ 2015-11-27 12:10 双调 阅读(1596) 评论(6) 推荐(2) 编辑

2015年11月26日

摘要: 多线程在web开发里面其实应用场景并不多,而且应用到多线程的场景也大多都是一些比较简单的场景,基本上大多都可以用Task代替,所以很多web开发人员对多线程的理解非常的浅薄,也就导致了会出现很多不可预计的bug,然后又因此写了一大堆逻辑来绕来绕去,所以我想谈谈多线程,试图做到高屋建瓴,给大家一个... 阅读全文
posted @ 2015-11-26 16:51 双调 阅读(4377) 评论(17) 推荐(17) 编辑

2015年11月2日

摘要: 以下介绍都是建立在python2.x的基础上面,tornado使用任意版本皆可。如果我们需要对外提供一个http server(web api)/websocket server时,我们都可以使用tornado,以下是一个基于tornado的rest的应用简介。当我们下载好了tornado以后,可以... 阅读全文
posted @ 2015-11-02 20:21 双调 阅读(2220) 评论(3) 推荐(1) 编辑
摘要: 还是习惯直接开门见山,这个游戏是有一个老师抓作弊的学生,老师背身,点学生开始加分,老师会不定时回头,如果老师回头还在点学生在,就会被抓住,游戏game over。1、写游戏首先是loading条,于是我们就有了以下的一端js代码function game() { var that = this... 阅读全文
posted @ 2015-11-02 10:09 双调 阅读(1351) 评论(5) 推荐(2) 编辑

2015年10月30日

摘要: 看到园子里面有人写的OAuth,就想把自己实现的OAuth也分享一下,关于OAuth协议这里就不再赘述。一、作为认证服务器,首先需要提供一个可以通过appid/appsecret来获取token这样的一个接口,于是便有了以下代码。 public class AuthController : A... 阅读全文
posted @ 2015-10-30 13:55 双调 阅读(5752) 评论(4) 推荐(12) 编辑

2015年10月26日

摘要: 性能提升还是那几个要素,就像我在之前的博文里面提到的一样,这一篇只是更加简单一点而已。 因为硬件配置是固定的,那我们只是简单说一说在使用C#进行开发的项目中,如何使用一些简单的小招数让性能有一个比较大幅度的显著提升。 一、绕开那些烦人却又不可避免的DB操作。 DB操作是不可避免却又是项目重... 阅读全文
posted @ 2015-10-26 22:02 双调 阅读(4064) 评论(5) 推荐(3) 编辑

2014年10月30日

摘要: 我发现我最前面的socket、2pc系列的代码式博文,没有什么评论和推荐,这直接导致我不再想写一些更深入一点的代码式博文了。还是写写这种乱七八糟的博文吧,这种的看起来比较受欢迎。 拿前一段时间比较热门的出行类app(滴滴,快的等)来举例说明,用最坏的设计,写最合理的程序。从另一个角度,来看... 阅读全文
posted @ 2014-10-30 02:12 双调 阅读(5237) 评论(17) 推荐(16) 编辑

2014年10月20日

摘要: 园子里面很多关于高性能,大并发,还有什么日pv百万的架构搭建。其实真心真心很扯淡。对于大部分应用来说,想要高性能,主要是要做到尽可能的减少网络请求(含db、redis、mongo、mq等)。几乎所有的应用,性能瓶颈永远是在带宽那里,硬件方面这里就不提了,说说我们能做的事。 找了半天没有... 阅读全文
posted @ 2014-10-20 00:49 双调 阅读(20080) 评论(101) 推荐(130) 编辑

2014年10月17日

摘要: 水文。如何让自己的代码看起来,更有逼格?要想让自己的代码,看起来更优雅,更有逼格,更高大上,就一定要写出晦涩难懂,而又简洁的代码来。对于类自身的全局变量,一定要加this,对于基类的,一定要加base。反射不要多,但一定要有,而且偶尔就来上那么一两个。接口,抽象类,抽象方法一定要懂得利用。可以的话,... 阅读全文
posted @ 2014-10-17 09:33 双调 阅读(5012) 评论(71) 推荐(45) 编辑

2014年10月10日

摘要: AOP的底层已经封装好了以后,我们就要开始针对应用层写具体的业务逻辑了。也就是说我们需要有个类继承于AopProxyBase,并且重写其After,Bofore以达到我们的拦截记录的功能。代码如下:public class TransactionProxy : AopProxyBase { ... 阅读全文
posted @ 2014-10-10 15:42 双调 阅读(890) 评论(0) 推荐(2) 编辑

2014年9月16日

摘要: 并不是很想写这个系列,因为这个2pc单独写一个小架构有点鸡肋。不过也不知道写什么了,先写了再说吧。整个流程如下图:关于AOP系列的文章很多,我这里也再重复造一下轮子。首先,我们定义了一个IAopProxy,用于给AopProxyFactory用来创建Proxy实例的接口,代码如下: publi... 阅读全文
posted @ 2014-09-16 15:27 双调 阅读(1428) 评论(0) 推荐(3) 编辑

2014年8月20日

摘要: 在通信写完了以后,应用层接收到Socket抛上来的byte[],这个时候对于实际的写逻辑的开发者来说,这样的数据并不友好,我们就需要在应用层统一一个包的规则(应用层协议),处理完以后,然后再传给实际的逻辑层去处理。以下是一个常用的Command模式。既接收到传递过来的包以后,根据Command(命令... 阅读全文
posted @ 2014-08-20 14:53 双调 阅读(1029) 评论(3) 推荐(4) 编辑

2014年7月30日

摘要: 1、开始正常监听以后,就要开始接受数据了,整体流程图如下:2、上一节看到我们在程序初始化的时候,初始化了很多个SocketConnection,用于管理客户端的链接,那应用层如何来操作,又什么时候来接受数据?于是我们便有了SocketSession,用于给应用层来管理整个会话过程,代码如下:publ... 阅读全文
posted @ 2014-07-30 09:20 双调 阅读(1220) 评论(3) 推荐(2) 编辑

2014年7月29日

摘要: 本系列仅介绍可用于生产环境的C#异步Socket框架,如果您在其他地方看到类似的代码,不要惊讶,那可能就是我在参考开源代码时,直接“剽窃”过来的。1、在脑海里思考一下整个socket的链接的处理流程,于是便有了下图。2、首先就开始监听,代码如下:public override bool Start(... 阅读全文
posted @ 2014-07-29 09:39 双调 阅读(3198) 评论(5) 推荐(6) 编辑

导航