摘要:
由来 环境:PHP7、Swoole、linux 对聊天室有点感兴趣,对于网络协议有一点一知半解,所以决定借助swoole实现个简单的聊天室,来简单剖析下原理,知道原理以后就可以考虑用其他语言或者自己造轮子写个,当然这是后话。 源码我放置github( https://github.com/Walki 阅读全文
摘要:
场景 web服务器有多台,每台服务器都会存贮自己的session,session无法在多台服务器共享。所以就需要更换session的存贮空间,存贮在一个共用的空间。通常为了读写速度,我们会选择存贮在内存服务上,如redis、mysql的memory存贮引擎等,本文以reddis存贮贯串上下文。 se 阅读全文
摘要:
服务器安装LNMP(centos6.6+nginx1.7.12+mysql5.6.24+php5.6.7) 本次安装 centos6.6+nginx1.7.12+mysql5.6.24+php5.6.31(虚拟机方式安装,跳过第一步) libmcrypt https://nchc.dl.source 阅读全文
摘要:
PHP导出Excel php phpExcel 导出excel 这些天在使用PHPExcel导出数据时,5000条数据竟然挂了。后来跟同事聊聊,有些明悟,PHPExcel做了很多处理,我在这里理解为渲染,就会暂用过多的空间,‘膨胀’的空间导致内存暂用过大,就挂了。其实只要我们只是简单的导出操作,没有 阅读全文
摘要:
[TOC] 依赖倒置(DIP) 依赖倒置原则(Dependence Inversion Principle,DIP):High level modules should not depend upon low level modules.Both shoulddepend upon abstract 阅读全文
摘要:
[TOC] module Go 在 1.11 之后推出了依赖包管理工具 Go Modules,使得开发者可以在 GOPATH 指定的目录外组织项目代码。 官方go module wiki "go/wiki/Modules" ; "Introduction to Go Modules" 是一篇很好的g 阅读全文
摘要:
[TOC] select Unix中 想到的都是系统调用, I/O 模型时大都会提到基于 、`poll epoll select select` 有着比较相似的功能。 主要特性: 每个case都必须是一个通信 能在 Channel 上进行非阻塞的收发操作; 在遇到多个 Channel 同时响应时会随 阅读全文
摘要:
[TOC] 场景 记录下开发中测试数据遇到的问题,开发环境想全量跑下数据验证数据的正确性,但每个账户的token存贮在redis中string类型,格式如: ,一个个获取要崩溃啊。我想获取到所有的账户,设置到开发环境中比较费事。 操作 先获取线上的token 得到所有的set命令 新建t.php文件 阅读全文
摘要:
[TOC] Nginx流量控制 流量复制 项目进行迁移上云,如何在不影响现有项目的情况下,进行验证测试,平滑迁移。理论上分割部分流量到云上进行验证,确定没有问题逐渐迁移,如果nginx不好分割流量的情况,其实不太好做迁移,风险太大。 nginx支持流量复制,在接收请求时,可以复制流量到另外的服务器而 阅读全文
摘要:
[TOC] MySQL批量更新,相对于一个个更新,效率肯定更快,特别是在有限定时间内需要实现大批量的更新,节约很多时间成本,近期实现也遇到一些坑,做些整理总结。 实现方式: replace into 使用的时候要注意:记录已存在是先删除再创建,所以只是更新某些字段使用这个会造成很大的数据丢失问题,切 阅读全文
摘要:
[TOC] 开放封闭原则 Software entities like classes,modules and functions should be open forextension but closed for modifications.(一个软件实体如类、模块和函数应该对扩展开放,对修改关 阅读全文
摘要:
[TOC] 单一职责 就一个类而言,应该仅有一个引起 它变化的原因。 如果一个类承担的职责过多,就等于把职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破环。 软件设计真正要做的许多内容,就是发现职责并把这些职责 阅读全文
摘要:
[TOC] 里氏替换原则(LSP) 面向对象继承优点: 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性; 提供代码的重用性; 缺点: 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法;降低代码的灵活性。子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束; 增强了耦合性。 阅读全文
摘要:
[TOC] 设计模式 设计原则 "里氏替换原则" "单一职责原则" "依赖倒置原则" "开放 封闭原则" "单列模式" "工厂模式" 策略模式 "http://note.youdao.com/noteshare?id=51c39d27b003a36c3af789e2168e9467&sub=3280 阅读全文
摘要:
[TOC] pprof web 使用生成火焰图 http://127.0.0.1:8081/ui/flamegraph?si=cpu 查看cpu时长 参考 https://zhuanlan.zhihu.com/p/71529062 https://eddycjy.com/posts/go/tools 阅读全文
摘要:
[TOC] chan Channel是Go中的一个核心类型,可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。 receive 操作符 ` 阅读全文
摘要:
[TOC] 工厂模式 Define an interface for creating an object,but let subclasses decide whichclass to instantiate.Factory Method lets a class defer instantiat 阅读全文
摘要:
[TOC] 单列模式 Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。) 线程不安全 "懒汉模式" 懒汉模式存在线程安 阅读全文
摘要:
[TOC] # 查询优化器 Optimizer查询优化器的任务是发现执行SQL查询的最佳方案。explain查看优化器优化过程中的信息```sqlid: MySQL Query Optimizer 选定的执行计划中查询的序列号。表示查询中执行 select 子句或操作表的顺序,id值越大优先级越高,越先被执行。id 相同,执行顺序由上至下。 select_type:查询类型,SIMPLE、PRIM... 阅读全文
摘要:
[TOC] 讨论下目前语言的优劣,密集型计算的发展方向,面向并发的内存模型的演进,从几个角度来分析下:1. CPU早期语言(C语言),CPU都是以单核的形式顺序执行机器指令。顺序执行意味着在同一时刻只能在一个cpu顺序执行。单核CPU发展停滞,编程语言逐渐开始朝着多核并行化的方向发展,而Go也是在多核环境下原生支持并发的编程语言典范。2. 内存常见的并行编程模型有多线程、消息传递等。由于多线程并... 阅读全文
摘要:
[TOC] kebectl 部署常用操作 服务管理 deployment、service、cronJob、ingress都是支持的 pod信息 查看pod日志 cronjob临时执行 构建job 从一个已有的cronjob载入配置执行 job执行完可以删除pods,避免占用空间 问题排查 查看容器进 阅读全文
摘要:
[TOC] # 传输json通过GET、POST或PUT或PATCH向服务端发送JSON```gofunc GetJson(reqUrl string, params map[string]string, header map[string]string) (response HttpResponse) { response = HttpResponse{ Url: reqU... 阅读全文
摘要:
[TOC] # Volumes容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建。 其次,当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。 Kubernetes 抽象出 Volume 对象来解决这两个问题。参考[官方](https://kuber... 阅读全文
摘要:
[TOC] # kebectl 部署常用操作## 起deployment、service、cronJob、ingresskubectl apply -f web-click.yaml## deletekubectl delete -f web-click.yaml## 获取deploymentkubectl get deployment --namespace=bigdata## podkubec... 阅读全文