EasySwoole支持自定义tcp长链接。 设置监听 在Event.php的beforeWorkerStart事件监听链接。 $listener = $server->addlistener("0.0.0.0",9502,SWOOLE_TCP); //混合监听tcp时 要重新设置包解析规则 才不会被HTTP覆盖,且端口不能与HTTP SERVER一致 HTTP本身就是T
设置Redis链接信息 修改Config.php的User config,加入以下信息 "REDIS"=>array( "HOST"=>'ip', "PORT"=>port, "AUTH"=>'password' ) Redis class namespace AppVendorDb; use ConfConfig; class
鉴于每个用户的使用习惯问题,EasySwoole本身并不提供封装好的数据库操作与Model层,但我们强力推荐在项目中使用第三方开源库https://github.com/joshcam/PHP-MySQLi-Database-Class 作为数据操作类库,并构建自己的Model。 使用指导 项目引入 克隆(下载)MySQLi项目,并解压提取其中的MysqliDb.php文件,放入项目 ‘/App/
服务热重启 在开发过程中经常需要更新文件,由于Swoole常驻内存的特性,文件在框架启动时已经载入了内存,当文件被修改时需要手动重启服务 可以将以下代码添加到Event.php的onWorkerStart事件中,实现文件更新后自动reload服务,请确定安装了inotify拓展 提醒: 在生产模式上线前一定要注意移除热重启,否则可能会造成不可预估的错误和异常 //请确定有inotify拓展 if
本章主要内容 线程间划分数据的技术 影响并发代码性能的因素 性能因素是如何影响数据结构的设计 多线程代码中的异常安全 可扩展性 并行算法的实现 之前章节着重于介绍使用C++11中的新工具来写并发代码。在第6、7章中我们了解到,如何使用这些工具来设计可并发访问的基本数据结构。这就好比一个木匠,其不仅要知道如何做一个合页,一个组合柜,或一个桌子;并发的代码的使用,要比使用/设计基本数据结构频繁的多。要
尽管维基百科上对遗留系统的定义是: 一种旧的方法、旧的技术、旧的计算机系统或应用程序。 但是实际上,当你看到某个网站宣称用新的框架来替换旧的框架的时候,你应该知晓他们原有的系统是遗留系统。人们已经不想在上面工作了,很多代码也不知道是干什么的,也没有人想去深究——毕竟不是自己的代码。判断是否是遗留代码的条件很简单,维护成本是否比开发成本高很多。 几乎无法维护 代码遗失 逻辑不清 没有文档或者不够详细
Postfix Completion 的介绍 Postfix Completion 功能本质上也是代码模板,只是它比 Live Templates 来得更加便捷一点点而已。具体它是做什么的,我们通过下面一张 Gif 演示图来说明: 如上图标注 1 所示,非空的判断在 Java 代码中应该是非常常见的一句话代码,如果用 Live Templates 当然也是可以快速生成,但是没有上图 Gif 这种
接口封装和代码整理 使用 OpenSBI 提供的服务 OpenSBI 实际上不仅起到了 bootloader 的作用,还为我们提供了一些底层系统服务供我们在编写内核时使用,以简化内核实现并提高内核跨硬件细节的能力。这层底层系统服务接口称为 SBI(Supervisor Binary Interface),是 S Mode 的 OS 和 M Mode 执行环境之间的标准接口约定。 参考 OpenSB
叮当 是自动检查 C/C++/Objective-C 代码的样式冲突、编程 错误和最佳实践的工具。 Electron's clang-tidy integration is provided as a linter script which can be run with npm run lint:clang-tidy. While clang-tidy checks your on-disk f
谷歌Android开源项目在Git的使用上有两个重要的创新,一个是为多版本库协同而引入的repo,在前面第25章已经详细讨论过。另外一个重要的创新就是Gerrit——代码审核服务器。Gerrit为Git引入的代码审核是强制性的,就是说除非特别的授权设置,向Git版本库的推送(Push)必须要经过Gerrit服务器,修订必须经过代码审核的一套工作流之后,才可能经批准并纳入正式代码库中。 首先贡献者的
服务器买的阿里云的ECS云服务器,安装的系统是Ubuntu14.04,部署了NodeJs v8.6.0。安装了Nginx v1.4.6、MongoDB v3.4.9、Redis v2.8.4、pm2 v2.7.1。 Nginx: 对于简单静态站点的请求,Nginx充当一个http服务器的角色,如book.xxxx.com下的请求,都只是gitbook构建好的静态html页面,所以这时候Nginx就
前端代码组织和部署主要涉及到了:Vue2 + Vue-Router + Axios + ElementUI + WebPack。 - Vue: 负责页面组件(components)的实现,包括DOM、Style和事件的处理; - Vue-Router: 因为纯前端页面开发时,采用的是同一入口的单页面应用,Vue-router负责页面之间路由; - Axios: 是一个Vue版本的Ajax库; -
42分填空,58分编程 填空题基本都是智商题和算法基础,没啥大的难度 四道编程题也不难,基本没用到什么算法,除了第一题LRU看错题意了在50%耗了半天,其他题基本都是1A 没给数据范围,默认全部能暴力,没动什么脑子就过了 九点放代码 UPD: 第一题 模拟LRU 30%代码(50%的被覆盖了) def solve1(): n, m = map(int, input().split())
美团8.12 后端笔试代码 第一题: 给一个x和y,问它们在数组中是否相邻 #include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> vec(n); for(auto &c : vec){ cin >> c;
使用耦合度量来支持系统架构 大多数设计良好的软件架构都趋向于支持系统的可扩展性、可维护性和可靠性。遗憾的是,对质量问题的疏忽极可能使软件架构师的努力白费。在追求代码质量 系列的这一期文章中,质量专家 Andrew Glover 解释如何持续地监视并纠正会影响软件架构的长期生存能力的代码质量方面。 上一期文章中,我展示了如何使用代码度量来评估代码质量。尽管在那一期介绍的圈复杂度针对低级细节,如方法中