- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 laravel跨库事务
Laravel 下的跨库事务操作是基于连接的 当执行 DB::beginTransaction(); 的时候 其实是和默认的数据库配置建立了连接 后面的操作 commit 或者 rollback 都是操作的这个默认数据库 如果在这中间操作了其他的数据库 对他是不生效的解决方案开始事务的时候就指定连接同时 commit 和 rollback 都 指定连接增加多数据库配置在配置目录 conf...
2019-10-28 17:10:22
1423
原创 链表反转
class Node{ private $value; private $next; public function __construct($value = null) { $this->value = $value; } public function getValue() { return $...
2019-08-23 11:34:32
147
原创 写个函数,判断下面扩号是否闭合,左右对称即为闭合: ((())),)(()),(()))),(((((()),(()()),()()
遇到左括号进栈,遇到右括号出栈(如果栈里没有,说明不闭合),遍历到最后元素,判断栈内为空,即为闭合function checkClose($str){ $stack = []; for ($i = 0; $i < strlen($str); ++$i) { if ($str[$i] == "(") { $stack[] = "("...
2019-08-11 23:53:38
433
原创 PHP内置字符串的实现
//字符串长度 function strlen ($str) { if ($str == '' ) return 0; $count = 0; while (1){ if ( $str[$count] != NULL){ $count++;...
2019-08-08 17:24:35
173
原创 cookie与session区别
1.HTTP中GET与POST的区别,注意最后一条GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET请求在UR...
2019-08-08 17:08:28
121
原创 redis面试相关
redis与memcache区别Redis 支持更加丰富的数据存储类型,String、Hash、List、Set 和 Sorted Set。Memcached仅支持简单的 key-value 结构。Memcached key-value存储比 Redis 采用 hash 结构来做 key-value 存储的内存利用率更高。Redis 提供了事务的功能,可以保证一系列命令的原子性...
2019-08-08 17:04:28
107
原创 网页输入地址回车
0、浏览器本地缓存匹配;1、本地hosts映射对比;2、本地dns缓存解析;3、远程dns解析获得服务器ip地址;4、浏览器发送tcp连接请求包(syn);5、请求包经过传输层、网络层、数据链路层封装通过网卡到达路由器;6、路由器转发数据包到所属运营商服务器;7、运营商服务器通过寻址最短路径通过中继节点到达指定ip地址;8、服务器端可能存在反向代理或者负载均衡,都是直接转发请求至上...
2019-08-05 14:24:36
174
转载 redis的bitmap使用场景
BitMap是什么就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间。Redis中的BitMapRedis从2.2.0版本开始新增了setbit,getbit,bitcount等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型,因为setbit等命令只不过是在se...
2019-08-04 11:43:57
9881
5
转载 redis实现接口频率访问
为什么限制访问频率做服务接口时通常需要用到请求频率限制 Rate limiting,例如限制一个用户1分钟内最多可以范围100次目的: 主要用来保证服务性能和保护数据安全因为如果不进行限制,服务调用者可以随意访问,想调几次就调几次,会给服务造成很大的压力,降低性能,再比如有的接口需要验证调用者身份,如果不进行访问限制,调用者可以进行暴力尝试使用 Redis 来实现通过 Redis 可以方...
2019-08-04 11:29:37
438
原创 redis布隆过滤器
布隆过滤器用于字符串去重复,比如网络爬虫抓取时URL去重、邮件提供商反垃圾黑名单Email地址去重。等等。用哈希表也可以用于元素去重,但是占用空间比较大,而且空间使用率只有50%。 布隆过滤器只占哈希表的1/8或1/4的空间复杂度,就能解决同样的问题,但是有一定的误判,而且不能删除已有元素。元素越多,误报率越大,但是不会漏报。对于还需要删除的布隆过滤器,还有Counter Bloom Filt...
2019-08-04 11:14:44
299
原创 高并发QPS
什么是高并发?高并发是互联网分布式系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数,简单点说,就是QPS(Queries per second)。高并发的基本表现为单位时间内系统能够同时处理的请求数,高并发的核心是对CPU资源的有效压榨。上下文切换并行:两个事件同一时刻完成。并发:两个事件在同一时间段内交替发生,从宏观上看,两个事件都发生了。线程是操作系统调度的最...
2019-08-04 11:09:53
1993
转载 一致性Hash算法
一致性哈希算法是分布式系统中常用的算法,为什么要用这个算法?比如:一个分布式存储系统,要将数据存储到具体的节点(服务器)上, 在服务器数量不发生改变的情况下,如果采用普通的hash再对服务器总数量取模的方法(如key%服务器总数量),如果期间有服务器宕机了或者需要增加服务器,问题就出来了。 同一个key经过hash之后,再与服务器总数量取模的结果跟之前的结果会不一样,这就导致了之前保存数据的丢失...
2019-08-04 11:04:54
92
原创 敏感词过滤--trie树
定义trie 树也称为字典树、单词查找树,最大的特点就是共享字符串的公共前缀来达到节省空间的目的了。例如,字符串 "abc"和"abd"构成的 trie 树如下:trie 树的根节点不存任何数据,每整个个分支代表一个完整的字符串。像 abc 和 abd 有公共前缀 ab,所以我们可以共享节点 ab。如果再插入 abf,则变成这样:如果我再插入 bc,则是这样(bc 和其他三个字符串没有公...
2019-08-04 10:37:36
771
原创 php中文字符串翻转
<?phpheader("content-type:text/html;charset=utf-8"); /**此函数的作用是反转中文字符串mb_strlen() 获取字符的长度mb_substr() 获取字符的单个元素krsort() 按照键值逆序排序数组implode() 将数组拼接为字符串explode() 使用字符串分隔字符串 */function str_rev...
2019-08-02 16:29:45
103
原创 二分查找及其变种
数组类的二分查找function binarySearch($arr,$x){ $start=0; $end=count($arr)-1; while($start<=$end){ $mid=intval(($start+$end)/2);//这里只需要保证中间项下标的计算值为整数即可,也可以四舍五入,不影响结果 if($arr[$m...
2019-08-02 16:16:29
110
原创 多维数组排序 array_multisort()
实现指定多维数组一个字段排序元数据:$array = array( 0=>array('id'=>8,'name'=>'Tom'), 1=>array('id'=>9,'name'=>'Peter'), 2=>array('id'=>5,'name'=>'Jack'));实现:通过将待排序数组的各个数组的$fi...
2019-08-02 16:12:36
853
原创 nginx和fpm的进程数配置和502,504错误
502 和 php-fpm.conf1.php-cgi进程数不够用。php执行时间长,导致没有空闲进程处理新请求。2.php-cgi进程死掉。php-fpm超时时间短,当前进程执行超时关闭连接。实例:1.request_terminate_timeout引起的资源问题request_terminate_timeout默认值为 0 秒,也就是说,PHP 脚本会一直执行下去。php.ini...
2019-08-02 15:47:02
425
原创 多进程(三)--socket
多进程和多线程其实是作用是相同的。区别是线程是在同一个进程内的,可以共享内存变量实现线程间通信线程比进程更轻量级,开很大量进程会比线程消耗更多系统资源多线程也存在一些问题:线程读写变量存在同步问题,需要加锁锁的粒度过大会有性能问题,可能会导致只有1个线程在运行,其他线程都在等待锁。这样就不是并行了同时使用多个锁,逻辑复杂,一旦某个锁没被正确释放,可能会发生线程死锁某个线程发生致...
2019-08-02 15:32:26
226
原创 多进程(一)--僵尸孤儿进程
孤儿进程和僵尸进程1、孤儿进程:子进程执行完毕时发现父进程已退出,子进程变成为了孤儿进程。孤儿进程后期会被系统的 init 进程接管,并 wait/waitpid 其执行状态做回收处理。对系统并无危害。2、僵尸进程:子进程执行完毕时发现父进程未退出,会向父进程发送 SIGCHLD 信号。但父进程没有使用 wait/waitpid 或其他方式处理 SIGCHLD 信号来回收子进程,子进程变成为...
2019-08-02 15:15:24
288
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人