自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ldy3243942的专栏

公共:博主最近忙于毕业设计,暂无时间继续更新Blog

  • 博客(32)
  • 收藏
  • 关注

原创 Swoole AppServer开发教程-李丹阳-专题视频课程

基于Swoole HttpServer + ZPHP的AppServer开发教程,全面讲解Swoole服务器开发重难点

2016-11-11 08:58:50 398

原创 Swoole全异步HttpServer开发指南-李丹阳-专题视频课程

教授Swoole异步API的使用,讲解结合Promise的Swoole全异步HttpServer开发

2016-11-11 08:57:09 333

原创 Swoole入门课程-李丹阳-专题视频课程

Swoole入门课程,掌握Swoole扩展用法

2016-08-02 09:03:24 684

原创 使用AndroidStudio部署Cocos2dx-Lua项目的处理方法

背景描述最近在学习Cosox2dx-Lua的相关开发,使用了Cocos Code IDE作为开发工具。因为项目需求,我需要导入另一个我自己开发的库。因为该库包含有界面和资源文件,因此我将其打包为一个ARR包。这个时候就发现悲剧了,eclipse貌似不怎么支持导入ARR包,cocos2dx的自动工具又不支持AndroidStudio,经过一番漫长而痛苦的折腾,我找到了一个折中的办法,虽然会稍

2015-01-21 10:03:53 4987

原创 Cocos2dx-Lua:360滑动操作杆

实话说这个玩意也不是我原创的,网上只能找到C++版本的,我改写成了Lua版。初学cocos-lua各种记不住API也是醉了……总之写的很苦逼但是最后结果是好的,我在有一些地方做了少许微调使操作杆更符合现实逻辑。下面上代码:local HRocker = class("HRocker",function() return cc.Layer:create();e

2015-01-15 17:38:30 2568

原创 swoole入门教程05-Swoole的自定义协议功能的使用

环境说明: 系统:Ubuntu14.04 (安装教程包括CentOS6.5)PHP版本:PHP-5.5.10swoole版本:1.7.8-alpha1.为什么要提供自定义协议熟悉TCP通信的朋友都会知道,TCP是一个流式协议。客户端向服务器发送的一段数据,可能并不会被服务器一次就完整的收到;客户端向服务器发送的多段数据,可能服务器一次就收到了全部的数据。而实际应用中

2014-11-08 14:40:21 9044 1

原创 Swoole源码学习记录(十五)——Timer模块分析

swoole版本:1.7.7-stable Github地址:点此查看1.Timer1.1.swTimer_interval_node声明:// swoole.h 1045-1050htypedef struct _swTimer_interval_node{ struct _swTimerList_node *next, *prev; st

2014-11-06 10:08:19 2561

原创 swoole入门教程04-多端口监听、热重启以及Timer进阶:简单crontab

环境说明: 系统:Ubuntu14.04 (安装教程包括CentOS6.5)PHP版本:PHP-5.5.10swoole版本:1.7.7-stableGithub链接:https://github.com/LinkedDestiny/swoole-doc1.多端口监听在实际运用场景中,服务器可能需要监听不同host下的不同端口。比如,一个应用服务器,可能需要

2014-11-02 18:40:59 11454 3

原创 swoole入门教程03-Timer定时器、心跳检测及Task进阶实例:mysql连接池

环境说明: 系统:Ubuntu14.04 (安装教程包括CentOS6.5)PHP版本:PHP-5.5.10swoole版本:1.7.7-stableGithub地址:https://github.com/LinkedDestiny/swoole-doc1.Timer定时器在实际应用中,往往会遇到需要每隔一段时间重复做一件事,比如心跳检测、订阅消息、数据库备份等

2014-10-29 23:15:50 11289 1

原创 Swoole源码学习记录(十四)——Server模块详解(下)

swoole版本:1.7.6-stable上一章已经分析了如何启动swServer的相关函数。本章将继续分析swServer的相关函数,1.swServer函数分析swServer_addListener该函数用于在swServer中添加一个需要监听的host及port。函数原型如下:// Server.h 438hint swServer_addLi

2014-10-28 20:54:08 2623

原创 swoole入门教程02-Swoole的Task使用以及swoole_client

第二章 Swoole的task使用以及swoole_client环境说明: 系统:Ubuntu14.04 (安装教程包括CentOS6.5)PHP版本:PHP-5.5.10swoole版本:1.7.6-stable上一章已经简单介绍了如何写一个简单的Echo服务器,并了解了onReceive等几个核心回调函数的使用方法。这一章,我将介绍如何使用Swoole的异步任务Ta

2014-10-26 21:03:47 12991 4

转载 或许你也患上了开发瘫痪症

亲爱的开发者们:你们是否因为自己只精通于三大设备平台的八种编程语言而惴惴不安?又发现一个JavaScript框架是否会让你不寒而栗、愁眉苦脸?你是否曾经因为无法确定哪个云平台最适合而把业余项目一再推迟?或许你也换上了开发瘫痪症(Developaralysis)。颤抖吧,这个病是治不好的。如今开发者们可选的技术方案多到令人发指,让人眼花缭乱,透不过气来。过去几年里,我拿着别人给我的酬

2014-10-23 09:03:36 1658 1

原创 Android JNI环境下给SQLite引入加密模块

免费的SQLite开源源码只给提供了两个函数,只有实现这两个函数才能实现数据库整体加密。然后废了点劲从网上找了一个已经实现好的开源库http://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/ 然后大概写一下如何把它集成到自己的so库中。首先下载源码,找到sqlite3/secure/src下,把其中所有的文件(除了s

2014-10-20 17:27:27 2670

原创 swoole入门教程01-环境搭建及扩展安装

写在前面的废话《swoole源码分析》已经写了13章,整个swoole的核心架构基本都分析的差不多了。于是心里一直以来想整理swoole的文档并写一份教程的想法就再度浮了出来。实话说,我接触swoole乃至接触PHP都仅有9个月的时间,而自7月份以来一直在公司做Android开发,也有没有了使用swoole的机会。所以,现在我只能写出一份入门级教程,帮助刚刚接触swoole的人理解和使用s

2014-10-19 16:32:08 17841 2

原创 Swoole源码学习记录(十三)——Server模块详解(上)

终于可以正式进入Server.c模块了…… 在之前的分析中,可以看到很多相关模块的声明都已经写在了Server.h中,就是因为这些模块构成了Server的核心部分。而Server本身,则是一个最上层的对象,它包括了核心的Reactor和Factory模块,存放了消息队列的key值,控制着全部的Connection,所有PHP层面的回调函数也在这里指定;同时,Server存放了大量的属性值,这些值决

2014-10-16 15:42:24 6433

原创 Swoole源码学习记录(十二)——ReactorThread模块

ReactorThread这一章将分析Swoole的ReactorThread模块。虽然叫Thread,但是实际上使用的是swFactoryProcess也就是多进程模式。但是,在ReactorThread中,所有的事件监听是在线程中运行的(Rango只是简单提到了PHP不支持多线程安全,具体原因还有待请教……),比如在UDP模式下,是针对每一个监听的host开辟一个线程运行reactor

2014-09-29 12:22:37 3949 1

原创 Swoole源码学习记录(十一)——Worker,Connection

Swoole版本:1.7.5-stable本章将分析Swoole中的三个比较重要的模块,Worker,ReactorProcess和Connection。其中Worker和ReactorProcess其实是对前面三章的一个补充,在前面的章节中为了分析结果的流畅性没有针对这些模块做特定分析,在此做出补充。 Worker模块首先是Worker模块。Worker在Swoole中为核心工作

2014-09-22 13:19:22 2962

原创 Swoole源码学习记录(十)——Factory模块(下)

Swoole版本:1.7.5-stable本章将分析FactoryProcess.c中剩下的函数,这些函数用于操作worker、manager以及writer。这些函数提供了最核心的进程创建、管理等功能,是Swoole的master-worker结构的基石。 先从worker相关的函数开始(manager相关函数基本都涉及操作worker进程)。在FactoryProcess.c中一共

2014-09-17 16:51:31 2799

原创 Swoole源码学习记录(九)——Factory模块(上)

Swoole版本:1.7.5-stableFactory这个命名让我一度认为这是一个工厂模型……这个工厂实际上并不负责生产实例,而是根据类型的不同执行两项任务:Factory实现的功能是一个任务中心,一个task请求进入Factory,会进过dispatch分配、onTask处理、onFinish交付结果一系列流程;FactoryProcess用于管理manager和worker进程,也有对单

2014-09-15 12:38:45 5117

原创 Swoole源码学习记录(八)——Reactor模块-epoll

Swoole版本:1.7.5-betaReactor模块可以说是Swoole中最核心的模块之一,正是这些reactor模型为swoole提供了异步操作的基础。Swoole中根据不同的内核函数,提供了四种Reactor封装,ReactorEpoll,ReactorKqueue,ReactorPoll和ReactorSelect。同时,Swoole通过结构体swReactor封装了对于reacto

2014-09-10 11:30:36 4493 2

原创 LeetCode---5.Insertion Sort List

题目链接:https://oj.leetcode.com/problems/insertion-sort-list/解题思路:

2014-09-05 17:01:11 728

原创 LeetCode---4.Sort List

题目链接:https://oj.leetcode.com/problems/sort-list/解题思路:因为是要求

2014-09-05 17:00:20 584

原创 Swoole源码学习记录(七)——MsgQueue

Swoole版本:1.7.5-beta版本更换通知:从第七章开始,我把分析的源码版本升到了1.7.5-beta。在已经分析过的代码中存在了一些变动,但没有到会影响理解的地步,所以再次不再更新前面的章节。如果确认前面的章节有重大变更需要重新分析的,我会给出声明。 Swoole内部封装了Linux提供的msg queue用于提供消息队列的操作。消息队列的声明在swoole.h文件的360

2014-09-05 16:55:41 1938

原创 LeetCode---2.Evaluate Reverse Polish Notation

题目链接:https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/解题思路:简单的后缀表达式运算,使用

2014-09-05 09:12:27 591

原创 LeetCode---1.Reverse Words in a String

题目链接:https://oj.leetcode.com/problems/reverse-words-in-a-string/解题思路:以空格为分隔符提取出每一个单词后

2014-09-05 09:12:16 776

原创 LeetCode---3.Max Points on a Line

#ifndef MAXPOINTONLINE_H_#define MAXPOINTONLINE_H_#include "header.h"#pragma onceconst double INF = 210000000;struct Point { int x; int y; Point() : x(0), y(0) {} Point(int a, int b) : x(

2014-09-05 09:04:49 794

原创 Swoole源码学习记录(六)——Pipe管道

Swoole版本:1.7.4-stablePipe(管道)用于进程之间的数据交互,Linux系统本身提供了pipe函数用于创建一个半双工通信管道,而在swoole中也利用eventfd和unix sock封装了两种管道,使得进程间的通信更加灵活。Swoole提供了一个基本结构体swPipe用于操作不同类型的Pipe,其声明在swoole.h文件的315 – 326 行,声明如下:t

2014-08-26 15:23:09 2967

原创 Swoole源码学习记录(五)——锁和信号(二)

Swoole版本:1.7.4-stable二.Mutex互斥锁接下来是Mutex(互斥锁)。Swoole的Mutex实现是基于pthread_mutex*方法族实现的,Rango用一个swMutex结构体封装了mutex的两个属性,结构体定义如下:创建一个互斥锁的函数声明在swoole.h文件的 536 行,声明如下:intswMutex_create(swLock *lo

2014-08-22 17:37:08 2228

原创 Swoole源码学习记录(四)——锁和信号(一)

Swoole版本:1.7.4-stable写在开头的废话:原本计划是于第四章开始reactor模块的分析,但是发现reactor模块牵扯到太多的其他模块,没法一开始就直接分析reactor,只能将其延后。一番考察之后,我决定从swoole的Lock模块入手继续分析。这一块我的知识储备有很大的空缺,估计会比较吃力…… -----------------------------------

2014-08-21 17:45:06 2434

原创 Swoole源码学习记录(三)——三种MemoryPool(下)

接下来是RingBuffer。这相当于一个循环数组,每一次申请的一块内存在该数组中占据一个位置,这些内存块是可以不等长的,因此每个内存块需要有一个记录其长度的变量。这里贴出swRingBuffer_head结构体的代码:typedef struct _swRingBuffer_item{ volatileuint32_t lock; volatileuint32_t leng

2014-08-20 14:31:07 1738

原创 Swoole源码学习记录(二)——三种MemoryPool(上)

Swoole中为了更好的进行内存管理,减少频繁分配释放内存空间造成的损耗和内存碎片,Rango设计并实现了三种不同功能的MemoryPool:FixedPool,RingBuffer和MemoryGlobal。Rango声明了一个swMemoryPool结构体来表示一个内存池,该结构体在swoole.h头文件中501-507行声明,结构如下:typedef struct _swMemory

2014-08-18 16:19:37 2623

原创 Swoole源码学习记录(一)——进程间共享数据ShareMemory 和 MemoryPool

我接触PHP的时间不长,最开始只认为PHP是用来做网站开发,是一个比JSP要简单的语言。后来,因为工作需要,一位学长建议我使用Ngnix + PHP 搭建应用服务器,并建议使用现有的框架。一番搜索之下,我意外发现了Swoole http://www.swoole.com/ 接下来的半年里,我一直使用Swoole扩展作为我的服务器核心。Swoole稳定而高效的性能以及优秀的架构设计使我的开发

2014-08-15 10:55:11 7832

空空如也

空空如也

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

TA关注的人

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