03 2020 档案

摘要:1. 前几天开发一个双语网站企业站 , 实现思路大部分情况下 , 我们可以想到是使用一个语言包数组文件 . key和value的形式 , 我们在展示界面时 , 输出数组对应的key而不是固定写死这个值 大概的设计是这样的 , 有两个这样的php文件 cn.php en.php 里面就是返回一个数组 阅读全文
posted @ 2020-03-31 19:21 唯一客服系统开发笔记 阅读(1083) 评论(0) 推荐(0) 编辑
摘要:有人针对我公司业务开发了批量注册机,本来想要分析下看看调用的哪个我们的接口,之前测试过ethereal抓包 , windows系统下使用最多的还是wireshark进行抓包 , 使用方式也很简单 1. 打开以后选择对应的网卡 2. 然后就可以开始抓数据了 过滤器选择http就可以看到它调用的接口 , 阅读全文
posted @ 2020-03-31 14:08 唯一客服系统开发笔记 阅读(556) 评论(0) 推荐(0) 编辑
摘要:默认隔离级别下 , mysql没有解决幻读问题 , 需要应用代码里加一个锁来解决 幻读问题是啥? 默认的隔离级别是可重复读 REPEATABLE-READ , 在这个模式下出现幻读的例子一般是这两种情况: 事务1和事务2同时 , 事务1读数据 , 事务2插入数据提交 , 事务1插入同样的数据时报错说 阅读全文
posted @ 2020-03-30 15:52 唯一客服系统开发笔记 阅读(1032) 评论(0) 推荐(0) 编辑
摘要:1.PDO::ERRMODE_SILENT 静默模式,不终止代码,只能使用 $pdo->errorCode() 和 $pdo->errorInfo() 获取错误信息 , 这个是默认情况下 , 也就是不停断 , 不记日志 注意这种形式下不容易错误排查 2.PDO::ERRMODE_WARNING 警告 阅读全文
posted @ 2020-03-30 15:15 唯一客服系统开发笔记 阅读(442) 评论(0) 推荐(0) 编辑
摘要:vmstat可以查看 系统 , 内存 , cpu , io 等的使用情况 , 方便查看系统负载 可以用这个命令判断是CPU密集型还是IO密集型 CPU密集型的表现: cpu的us列(用户态)值高, sy列(系统态)系统利用率高 id列(空闲态)空闲率低 IO密集型: 进程列的b特别高 , 这是等待I 阅读全文
posted @ 2020-03-30 14:30 唯一客服系统开发笔记 阅读(465) 评论(0) 推荐(0) 编辑
摘要:mysql的innodb引擎本身存储的形式就必须是聚簇索引的形式 , 在磁盘上树状存储的 , 但是不一定是根据主键聚簇的 , 有三种情形: 1. 有主键的情况下 , 主键就是聚簇索引 2. 没有主键的情况下 , 第一个非空null的唯一索引就是聚簇索引 3. 如果上面都没有 , 那么就是有一个隐藏的 阅读全文
posted @ 2020-03-30 12:04 唯一客服系统开发笔记 阅读(1129) 评论(0) 推荐(0) 编辑
摘要:在用户收到发送过来的文件后 , 要能够检测出这个文件是否是病毒 , 核心的软件是clamav , 可以在linux命令行执行,检测文件或目录里的病毒 下载和安装可以参考其他博文 需要注意的是要开启下配置文件中的 LocalSocket /tmp/clamd.socket 运行时是以守护进程的方式运行 阅读全文
posted @ 2020-03-26 16:32 唯一客服系统开发笔记 阅读(617) 评论(0) 推荐(0) 编辑
摘要:邮箱中最重要的一个功能就是读取一封信 , 也是使用的最多的接口 , 对此接口的读取效率是有一定要求的. 1. 最早的邮箱架构邮件还是存放在本地的共享文件目录下 , 每次读取邮件 ,就是在本地寻找到这个文件本体 ,然后把文件内容返回来就可以了. 2. 随着邮件越来越多 ,在本地遍历邮件目录和文件列表变 阅读全文
posted @ 2020-03-25 12:22 唯一客服系统开发笔记 阅读(288) 评论(0) 推荐(0) 编辑
摘要:xdebug除了调试程序外 , 还可以来检测程序的性能损耗点 , 展示成图表的形式 在php.ini中增加如下配置: xdebug.profiler_output_dir=/tmpxdebug.profiler_enable=1 访问程序后 , 会在tmp目录生成cachegrind.out.xxx 阅读全文
posted @ 2020-03-24 19:07 唯一客服系统开发笔记 阅读(470) 评论(0) 推荐(0) 编辑
摘要:B树的数据指针存储在各层节点中 , B+树的数据都存储在了叶子节点 , 那查找的时候B+树比B树效率按逻辑应该更高吗? 这样的情形下 , B树的数据存储的比较分散 , 在磁盘里进行查找的时候 , 不能利用上局部性原理 , 反而效率是更低的. B+树叶子节点之间还有链表连起来了 , 如果是个范围的查询 阅读全文
posted @ 2020-03-24 10:47 唯一客服系统开发笔记 阅读(466) 评论(0) 推荐(0) 编辑
摘要:在一张表里有多个索引 , 我们where字段里条件有多个索引的值 , 那么究竟使用的哪个呢? 我们可以使用explain来查看 , 其中的key_len字段可以看得出来 比如下面这条sql explain select * from ent_calendar_diary where email='x 阅读全文
posted @ 2020-03-23 18:51 唯一客服系统开发笔记 阅读(658) 评论(0) 推荐(0) 编辑
摘要:mysql严格模式下 , 不允许给blob text geomtry json列增加默认值 可以使用 select @@sql_mode 查看当前模式 , 例如下面这样 mysql> select @@sql_mode -> ;+ +| @@sql_mode |+ +| STRICT_TRANS_T 阅读全文
posted @ 2020-03-23 14:04 唯一客服系统开发笔记 阅读(4113) 评论(0) 推荐(0) 编辑
摘要:经常我们会遇到502错误 , 502错误究竟是啥呢 , 在字面意思是指bad gateway 网关错误 , 网关是啥 在我们的nginx + php-fpm中 , nginx相当于网关 ,但是这里的错误却是指的nginx的上游服务出错了 , 也就是fpm出错了. nginx连不上fpm或者fpm自身 阅读全文
posted @ 2020-03-23 11:13 唯一客服系统开发笔记 阅读(5021) 评论(0) 推荐(0) 编辑
摘要:当我们开发时候需要对外开放接口 , 不管是GET还是POST , 都有点害怕对方传递给我们参数的方式被别人知道 , 然后直接改改参数搞破坏. 这时候就需要对参数进行一下安全的验证工作 , 对参数进行加密后的字符串拼接在要传递的参数后面 , 接收方同等加密进行判断一致 比如在get参数部分 , 一般有 阅读全文
posted @ 2020-03-23 10:18 唯一客服系统开发笔记 阅读(937) 评论(0) 推荐(0) 编辑
摘要:在写代码的时候,经常要进行跳转连接,但是大家大部分不清楚302和301是啥区别,其实对于我们后端开发来说,这俩大部分没啥区别。 这俩的区别基本是语义上的区别 301是我这资源早就没有了,永远没有了,你跳走吧,然后我把Location传给你 302是我这资源没有了,下次有没有不知道,先临时跳走吧,这是 阅读全文
posted @ 2020-03-22 11:58 唯一客服系统开发笔记 阅读(408) 评论(0) 推荐(0) 编辑
摘要:这种模式是我们常见的oauth形式,例如第三方登陆,qq,微博等,都是使用的授权码模式,也是很多网站系统对外提供的接口形式 这种模式大体是需要两步,一般是先获取code , 获取完code后,拿着code去获取access_token 例如下面这俩接口: 1. 获取code https://b.co 阅读全文
posted @ 2020-03-21 15:31 唯一客服系统开发笔记 阅读(1030) 评论(0) 推荐(1) 编辑
摘要:项目中使用到了redis的哈希结构 , 哈希结构的内部编码类型是 ziplist 和 hashtable 当元素个数小于512 , 并且值的大小小于64个字节时 , 采用ziplist , 大于的时候采用hashtable ziplist最大的优势就是存储的时候是连续的内存 , 可以极大的提升cpu 阅读全文
posted @ 2020-03-20 09:52 唯一客服系统开发笔记 阅读(1449) 评论(0) 推荐(0) 编辑
摘要:某个项目中路由是通过$_SERVER['REQUEST_URI']来进行的匹配处理 , 并且隐藏了index.php 前端路径是http://域名/static/css/xxx.css 而实际路径是位于 /绝对路径/template/static中 在这样的两种情况下 , 不改代码的条件下使用ngi 阅读全文
posted @ 2020-03-19 16:16 唯一客服系统开发笔记 阅读(1906) 评论(0) 推荐(0) 编辑
摘要:面试的时候 , 大部分面试官会问mysql的索引问题 , 也是必问的问题 , 但是感觉大部分面试官都是把网上的面试题原封不动的说出来 , 要开发人员来应试答题. 这样的形式 , 我的理解是既不能体现出面试官的能力 , 又不能考察到程序员的mysql功力 , 基本是无意义的 . 如何在平常的开发中体现 阅读全文
posted @ 2020-03-18 10:03 唯一客服系统开发笔记 阅读(303) 评论(0) 推荐(0) 编辑
摘要:1. memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。 这种技术被称为 惰性过期。因此,memcached不会在过期监视上耗费CPU时间 ,与redis是有区别的. 2. memcached的过期时间,有一个最大时限就是30天,设置时若超过30天,存储时 阅读全文
posted @ 2020-03-16 11:06 唯一客服系统开发笔记 阅读(1606) 评论(0) 推荐(0) 编辑
摘要:add方法添加时,如果存在返回falseset方法添加时,如果存在就是覆盖,不存就是添加 1. set方法会在设置时,同时更新缓存的过期时间,这个地方如果是做频率限制功能,时间一定要过期时,注意不要使用这个方法2. 如果要做频率限制功能,可以使用add和increment方法配合 , 这样不会覆盖掉 阅读全文
posted @ 2020-03-16 10:59 唯一客服系统开发笔记 阅读(233) 评论(0) 推荐(0) 编辑
摘要:经常会被人问在什么场景下使用到了redis ? 这个问题和业务是很相关的 , 脱离业务需求的回答都不能说服别人. 在我的业务里有一个提交试用的表单申请 , 这个申请之前是默认直接存入数据库的订单表和企业表 . 后来不知道被那个闲人发现了,就一直往里提交垃圾数据 , 增加了验证码和手机短信验证码 , 阅读全文
posted @ 2020-03-12 09:30 唯一客服系统开发笔记 阅读(340) 评论(0) 推荐(0) 编辑
摘要:当有个功能要发送通知邮件时 , 大家都会去用PHPMailer来调用第三方的smtp发信 , 经常遇到莫名其妙的错误 ,不知道是什么原因 . 今天我也遇到了这种问题 , 在发信时一直都是false , 找了半天 这个类库最终还是拼接的smtp协议 , 与我们自己手动telnet然后 auth log 阅读全文
posted @ 2020-03-10 17:34 唯一客服系统开发笔记 阅读(883) 评论(0) 推荐(0) 编辑
摘要:PHP的很多框架里面都是通过获取$_SERVER['PATH_INFO']处理路由 , 这个变量是通过nginx传递过来的 , 我们在nginx中经常见到下面两句 fastcgi_split_path_info ^(.+\.php)(/.*)$;fastcgi_param PATH_INFO $fa 阅读全文
posted @ 2020-03-09 18:12 唯一客服系统开发笔记 阅读(3509) 评论(0) 推荐(1) 编辑
摘要:1. 大部分互联网业务中 , 用户登陆功能是非常常见的模块 , 针对登陆功能的数据库设计常见的是下面这样的 User表 id username password ... 其他用户信息 查询时的逻辑类似下面 pass=query("select * from user where username=' 阅读全文
posted @ 2020-03-07 19:02 唯一客服系统开发笔记 阅读(567) 评论(0) 推荐(0) 编辑
摘要:大家知道OAuth协议是针对提供给第三方进行认证登陆的 , 感觉比较的复杂 , 但是在四种模式中最简单的一种叫做客户端模式 , 或者叫凭证模式 , 非常的容易理解 当对于我们针对一个非常信任的第三方去登陆时 , 可以采用这种模式 . 1. 首先要提供给第三方一个client_id 和 client_ 阅读全文
posted @ 2020-03-06 11:29 唯一客服系统开发笔记 阅读(4300) 评论(1) 推荐(1) 编辑
摘要:当安装某些rpm包的时候 , 会爆出这个错误 Requires: libjson-c.so json-c是c语言下的json库 , 如果在centos6下可以访问下面这个页面找到64位的rpm包 , 一定要看清是4位还是32位 http://rpmfind.net/linux/rpm2html/se 阅读全文
posted @ 2020-03-04 10:34 唯一客服系统开发笔记 阅读(2413) 评论(0) 推荐(0) 编辑
摘要:php变量在赋值的时候是增加的引用计数,并不是又创建了一块内存空间 但是当新的变量值变更时 , 值从新赋予新的值时 , 就会减掉刚才的引用计数,并且从新创建内存空间. 上面的内容是显而易见的,重新赋值自然会重新创建内存空间,但是有一种情况也会发生这样的事 , 那就是在使用到引用符&的时候 , 也会发 阅读全文
posted @ 2020-03-03 17:03 唯一客服系统开发笔记 阅读(429) 评论(0) 推荐(0) 编辑
摘要:js中检测变量是否定义,可以用这个语句,比如: typeof a!=="undefined" 1. typeof的语法typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。 2. typeof的返回值 typeof运算符 阅读全文
posted @ 2020-03-02 20:17 唯一客服系统开发笔记 阅读(1840) 评论(1) 推荐(0) 编辑
摘要:先用一个数组表示一个二叉树搜索树,也就是一个排好序的二叉树,其中左子结点<根结点<右子结点 利用结构数组的形式来表示,id , left , right 代表结点id ,左子树 ,右子树 下面这个二维数组 $data[]=['id'=>8,'left'=>2,'right'=>10,'data'=> 阅读全文
posted @ 2020-03-01 22:21 唯一客服系统开发笔记 阅读(442) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示