自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JunChow

阅读提升上限,实践突破下限。

  • 博客(23)
  • 资源 (8)
  • 收藏
  • 关注

原创 AOP 面向切面编程

什么是AOP?AOP全称Aspect Oriented Programming意为面向切面编程,也叫做面向方法编程,是通过预编译方式和运行期动态代理的方式实现不修改源代码的情况下给程序动态统一添加功能的技术。AOP技术利用一种称为“横切”的技术,剖解开封装对象的内部,将影响多个类的公共行为封装到一个可重用的模块中,并将其命名为Aspect切面。所谓的切面,简单来说就是与业务无关...

2019-05-27 01:31:42 283

原创 Swoft 组件化

为什么要进行组件化呢?项目开发到一定阶段时,随着需求的增加以及频繁低变更,代码会变得越来越臃肿,耦合会越来越多,开发效率也会降低,这个时候就需要对代码进行重构。组件化是为了让开发者更好的解决软件的高耦合、低内聚、无重用问题。组件化是将代码重复的部分提炼出来形成一个个组件供功能使用。目的是为了复用和解耦,而且组件之间是低依赖的。简单来说,组件就是类库,是将项目中可复用的代码进行工...

2019-05-26 21:54:55 270

原创 Swoft 启动流程

入口程序Swoft入口是使用命令php bin/swoft start启动HTTP服务器$ php bin/swoft start Server Information ******************************************************************** * HTTP |...

2019-05-25 18:37:11 549

原创 Swoft HTTP 服务

LNMP传统基于LNMP的Web架构中,Nginx作为Web服务器,PHP-FPM维护一个进程池去运行Web项目。简单、成熟、稳定、一次运行随后销毁带来的开发便捷性是最大的特点。PHP-FPM + NginxLNMPNginxNginxNginx本身是基于Linux的epoll事件模型,即一个worker工作进程会同时...

2019-05-25 13:06:58 487

原创 消息中间件

什么是消息中间件?消息中间件是在消息的传输过程中保存消息的容器消息中间件将消息从源中继(生产者)到目标(消费者)时充当中间人的角色消息中间件的目的是提供路由并保证消息的传递,如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它为止,当然消息队列保存消息也是有期限的。消息中间件 Broker消息中间件有什么特点呢?异步处理模式消息发...

2019-05-24 01:29:13 439

原创 Redis实现消息队列

Redis实现轻量级的消息队列与消息中间件相比,没有高级特性也没有ACK保证,无法做到数据不重不漏,如果业务简单而且对消息的可靠性不是那么严格可以尝试使用。Redis实现消息队列列表类型队列Redis中列表List类型是按照插入顺序排序的字符串链表,和数据结构中的普通链表一样,可以在头部left和尾部right添加新的元素。插入时如果键不存在Redi...

2019-05-23 02:17:57 477

原创 Supervisor

Supervisor参考资料官网 https://pypi.org/project/supervisor/Supervisor是什么?A Process Control SystemSupervisor是使用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程转变为后台守护进程daemon,并监控进程状态,当异常退出时能自动重启。Su...

2019-05-22 22:22:52 203

原创 think-queue

参考资料官方文档 https://github.com/coolseven/notes/tree/master/thinkphp-queuethink-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第三方接口,可用于短信发送、邮件发送、APP推送。think...

2019-05-22 12:05:47 702

原创 MQ 消息队列

消息队列消息队列什么是消息队列(Message Queue,MQ)呢?首先回忆下生活中在餐馆点餐的场景,当你点完餐之后老板会给一个号牌,每个人都按照自己付款拿到的号牌顺序排队等待叫号。实际上,这里的柜台就充当着消息队列的角色。客户等待生产者把订餐的消息发送到柜台即消息队列中后,从中取餐即消费消息。整个流程实际上是消息被发送到队列中,又成功被消费者消费的过程。回过...

2019-05-21 00:56:13 426

原创 Nginx 虚拟主机配置

Nginx有什么作用呢?Ngnix作为一款高性能的HTTP服务器、反向代理服务器、电子邮件代理服务器,主要有三方面的应用:HTTP服务器Nginx作为HTTP服务器可独立提供HTTP服务,也可做为静态资源服务器。虚拟主机Nginx可以实现一台服务器虚拟出多个站点反向代理负载均衡当访问量达到一定量级后单台服务器无法支撑用户的请求时,可使用多台服务器做集群。此...

2019-05-15 11:27:50 376

原创 Skynet项目搭建

需求说明棋牌大厅服务器使用Skynet框架开发环境操作系统 Ubuntu集成开发环境 VSCode备注:在VSCode中安装EmmyLua插件,方便Lua代码编写与调试。参考资料Skynet环境搭建Skynet配置文件项目结构项目名称为lobby表示大厅服务器,文件夹位于game/server/lobby/目录下。项目目录结构conf 配置文...

2019-05-15 03:54:36 1512

原创 EmmyLua

JetBrain的IDE提供了EmmyLua的插件,可直接使用IDE安装插件,下面以IntelliJ IDEA为例。GitHub https://github.com/tangzx/IntelliJ-EmmyLuaOsChina http://git.oschina.net/tangzx/IntelliJ-LuaIDEA Plugins https://plugins....

2019-05-15 01:20:58 709

原创 MySQL 日期时间

数据类型MySQL中有5中表示时间值的数据类型,分别是DATE、TIME、YEAR、DATETIME、TIMESTAMPDATE 日期值,格式为YYYY-MM-DD,大小3字节,范围从1000-01-01到9999-12-31。TIME 时间值或持续时间,格式为HH:MM:SS,大小3字节,范围从-838:59:59到838:59:59。YEAR 年份值,格式为YY...

2019-05-14 18:59:09 188

原创 游戏统计指标

移动游戏的生命周期运营可以归纳为如下转化过程:获得用户(下载安装)-> 转化为活跃用户(登录使用) -> 留住用户(回访留存) -> 转化为付费用户(应用内支付)生命周期用户的生命周期是指用户从开始使用应用到卸载应用的整个过程,因为移动应用很难捕捉用户的卸载动作,通常会根据用户的使用频率低于某个极限值来判断用户流失。生命周期(Lifetime, LT)...

2019-05-13 17:08:27 822

原创 Actor模型

传统的游戏服务器要么是单线程要么是多线程,过去几十年里CPU一直遵循摩尔定律发展,带来的结果是单核频率越来越高。而近几年摩尔定义在CPU上已然失效,为什么呢?大于在2003年左右,计算机的核心特性经历了一个重要的变化,处理器的速度达到了一个顶点。在接下来近15年里,时钟速度是呈线性增长的,而不会像以前那样以指数级的速度增长。由于CPU的工艺制程和发热稳定性之间难以取舍,取而代之...

2019-05-12 22:53:29 456

原创 Skynet消息调度机制

Skynet核心部分是一个消息调度机制,Skynet本身是一个独立的进程,其中运行着若干个Worker工作线程,Worker工作线程会从消息队列中取出队列中的消息,并找到对应的处理函数进行分发。另外,Skynet还包含Timer线程用于实现定时机制,以及Socket线程用于监听epoll事件并管理网络操作。Skeynet消息调度模型消息和任务调度作为Skynet的核...

2019-05-12 22:50:21 641

原创 Skynet是什么

Skynet是什么呢?我们希望游戏服务器能够充分利用多核优势,将不同的业务放在独立的执行环境中处理,协同工作。这个执行环境最早期望是利用操作系统的进程,后来发现如果必定采用嵌入式语言如Lua,那么独立的操作系统进程的意义不大。LuaState已经提供了良好的沙盒,隔离不同执行环境,而多线程模式可以使得状态共享、数据交换更加高效。但是多线程模型又存在诸多弊病,比如复杂的线程锁、线程...

2019-05-12 22:44:18 503

原创 Swoft 助手函数

Swoft中可以为项目添加自定义的函数,助手函数位于/app/Helper/Functions.php文件内。添加的助手函数将在整个应用中生效。$ vim /app/Helper/Functions.php将字节转换为可读文本if(!function_exists("format_bytes")){ /** * 将字节转换为可读文本 * @pa...

2019-05-12 17:00:31 402

原创 REST 表述性状态转移

RESTful APIREST为什么会有REST呢?Web服务已经成为异构系统之间的互联于集成的主要手段,过去Web服务几乎都是采用SOAP(Simple Object Access Protocol,简单对象访问协议)来构建的。REST风格的软件架构模式出现后就快速取代了复杂而笨重的SOAP,成为Web API的标准。什么是REST呢?REST全称Repre...

2019-05-10 12:35:44 701

原创 Fibers

要理解Fibers首先需要对抢占式多任务和协作式多任务有所了解抢占式多任务抢占式是指暂停或中断正在执行的计算任务,而不是与其合作。中断后再继续恢复该任务的执行,这种改变又称为上下文切换。其缺点在于操作系统可能会在一个不适当的时间进行上下文切换。例如:Linux的调度程序特权任务Scheduler采用的就是取消进程任务,而不是与其合作。协作式多任务早期的多任务处理系...

2019-05-10 01:58:49 1192 1

原创 Swoft 文件上传

文件上传在HTTP服务器中是最常见的一种的业务需求,Swoft本身为文件上传提供了支持。业务需求现在需要附件上传的功能,前端使用AJAX对图片进行上传,为此需要提供一个接口,接口的路径为admin/attachment/upload,接收HTTP POST提交的文件上传信息。实现流程使用HTTP服务器中Request类提供的file()方法接口POST发送过来的文件上传数...

2019-05-09 23:04:59 1009

原创 Swoft Route 路由

Swoft中路由是通过注解@Controller + @RequestMapping组合来实现的,主要包括:@Controller 在控制器类中使用,用于定义路由前缀。@RequestMapping 在控制器类的动作方法中使用,用于定义路由后缀。创建路由Route根据约定大于配置的规则,路由应该在用户看到URI的时候,就能找到与之对应的Controller/Act...

2019-05-08 17:56:12 399

原创 RBAC 基于角色的权限访问控制

在20世纪90年代期间,大量专家学者和研究单位对RBAC(Role-Based Access Control)的概念进行了深入研究,先后提出了许多类型的RBAC模型,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具系统性,并得到普遍的公认。传统的权限分配的方式是将用户与权限绑定,也就是直接将权限绑定到用户身上,例如之前盛行的ACL模型...

2019-05-06 01:30:57 841

ThinkPHP函数详解

ThinkPHP函数详解 ThinkPHP函数详解 ThinkPHP函数详解

2013-10-03

ThinkPHP框架-模板指南

ThinkPHP模板指南

2013-10-03

ThinkPHP执行流程

ThinkPHP 执行流程

2013-10-03

ThinkPHP3.0 完全开发手册

ThinkPHP3.0 完全开发手册

2013-10-03

微软雅黑字体

程序员专用字体,属于等宽字体,Vista推出的一款使用专用字体。

2012-11-15

批量名称修改.exe

名称修改,简单小工具。 针对于多个文件进行名称的修改,或是音乐名称的修改。

2012-11-15

企业架构工具

Enterprise Archtecture 企业架构工具

2012-08-03

企业网站管理系统

企业网站管理系统

2012-07-31

空空如也

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

TA关注的人

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