Home

代码整洁之道

命名 函数动词 有意义 类名词 函数 短小 (20行) 只做一件事 函数参数少 不要重复 用异常作为返回值 第三放对接 你需要先确定边界问题,说白了就是系统的解耦。 单元测试 推荐的做法 DDD 类 oo五大原则:SRP、OCP、LSP、DIP、ISP。 SRP(单一权责):只做一件事 OCP(开闭原则):对变更关闭,对扩展开放 LSP(李氏替换原则):子类能够完全替换超类 DIP(依赖倒置原则):接口编程 ISP(接口隔离原则):一个接口一个角色,不要使用一个总接口 短小 注意封装性 单一权责(就是影响他的功能就一个,只有一个需求会引起类的修改) 内聚,函数尽可能都使用类变量 ...

Read more

PHP ETL设计开发

由于公司需要进行系统数据同步,并且两个系统表结构差距较大,因此需要设计一个能方便转接的工具。 系统架构 主要采用常见的生产发布者模式。 一个job监听数据变动,我们使用laravel5.0,相关表通常都是会设计create_time,update_time,而这些字段,通常laravel会 自动更新,这就给我们数据同步提供基础,我们很容易使用一个任务监听一段时间的数据变动,where update_time > xxxx。 得到数据之后,你可以放入队列,方便之后job的消耗。第一步至此ok。 接下来,你需要一个配置来对数据进行转换,得到一个更新依据,如果想通用点,可以生成sql文件或者任何自定义格式的文件。 在我们转接的过程中,我们最核心的就是处理映射关系,这...

Read more

laravel学习1

预备知识 composer 就是个包管理工具,不多说,装起来 有一定的面向对象思想,依赖注入,控制反转,设计模式 学习目录 框架结构 框架运行流程 框架使用 框架二次开发 框架结构 当你安装完laravel之后(建议使用composer),使用laravel new 的命令,你就会创建一个laravel基础工程。 app — 代码目录 bootstrap — 框架启动文件 config — 配置文件目录 database — 数据库迁移和填充文件 public — 相关资源和入口文件 resources — 原始资源文件 storage — 缓存 tests — 单元测试 vendor — 相关依赖文件 laravel相关类...

Read more

php各个缓存使用

缓存总览 浏览器缓存 服务器缓存 php代码缓存 内存缓存 mysql缓存 基准测试(原始php,没有任何优化) 测试平台 mac air OSX 10.10.2 CPU i5u 1.6GHz 内存 4G Web服务器 Apache2.4 PHP版本 5.3.29 我们执行测试的页面是上次递归生成父子关系的分类树。 ...

Read more

jsonp使用

目的 js为了安全是禁止跨域资源请求的(同源协议),因此搞出了jsonp 前提 带有src属性的标签是可以跨域的,于是利用来加载跨域的js,js中就是你想要的跨域数据,json是js原生支持的数据格式,因此数据格式采用json 做法 动态生成js,放进src属性里,为了能够自定义对json结果的处理,允许传入一个callback函数,对结果进行包裹,服务端来实现 https://blog.csdn.net/hansexploration/article/details/80314948 的一个例子 <script type="text/javascript"> // 得到航班信息查询结果后的回调函数 var flightHandler = function(d...

Read more

ansible使用

目的 现在很多都是集群,很多操作都要复制几次,ansible可以对机器进行分组,同时操作一个组的机器 使用 ansible ssh免登录 1. ssh-keyscan ip lists>> /root/.ssh/known_hosts -- 公钥 2. ssh-keygen -t rsa -b 2048 -P '' -f /root/.ssh/id_rsa --私钥 3. /etc/ansible/hosts 192.168.56.102 ansible_ssh_pass=liuhuan 192.168.56.103 ansible_ssh_pass=liuhuan 192.168.56.104 ansible_ssh_p...

Read more

php调试工具

目的 对于某些情况,比如php进程阻塞,你可能并不知道他究竟在做啥,你就需要对他进行调试,当然你可以使用strace,看出他的系统调用,但是更具体的点的可能就没有了,比如哪个php文件,哪个方法等 php本质上是一套c写的框架,那么我们当然可以使用gdb来进行调试,gdb的使用就不过多说明,加断点,打印值,next,next … 使用 tipi里其实php内核关键的几个点需要知道,以下例子 $sudo gdb -p 14973 (gdb) print (char *)executor_globals.active_op_array->filename $1 = 0x9853a34 "xxx" (gdb) print (char *)executor_globals...

Read more