202101-02 内存分配逃逸分析 NEW 堆栈内存分配中的堆和栈 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。堆栈缓存方式 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。 堆... Read More >
202101-01 深入理解GC原理 NEW 垃圾定位算法(1)引用计数法 (Reference Counting)。 如 python php 通常C++通过指针引用计数来回收对象,但是这不能处理循环引用,原理是在每个对象内部维护一个引用计数,当对象被引用时引用计数加一,当对象不被引用时引用计数减一。当引用计数为 0 时,自动销毁对象。 例如:谁想用驴干活的时候,就在驴身上画个... Read More >
202012-24 lumen项目集成laravelS后sentry无法上报的问题 NEW 背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目laravelS github : https://github.com/hhxsv5/laravel-s如何接入参考:https://phpmianshi.com/?id=195问题描述lumen项目集成laravelS后sentry无法正常上报解决方案当前项目用的sentry sdk为1.8版本,升级最新的sentry sdk 2.3 即可正常收到... Read More >
202012-22 composer安装提示killed解决办法 问题描述composer 安装或者更新时报错killed ,因为当前内存不足。composer require "hhxsv5/laravel-s:3.7.8" -vvv...Killed问题原因这种情况一般是因为内存不足造成的解决方案1. 增大服务器内存2. 设置swap交换分区free -mmkdir -p /var/_swap_cd /var/_swap_#创建swap文件dd if=/dev/z... Read More >
202012-21 composer autoload自动加载性能优化指南 简介composer 提供的 autoload 机制使得我们组织代码和引入新类库非常方便,但是也使项目的性能下降了不少 。composer autoload 慢的主要原因在于来自对 PSR-0 和 PSR-4 的支持,加载器得到一个类名时需要到文件系统里查找对应的类文件位置,这导致了很大的性能损耗,当然这在我们开发时还是有用的,这样我们添加的新的类文件就能即时生效。 但是在生产模式下,我们想要最快的找到这些类文件,并加载他们。因此 composer 提供了几种优化策略,下面说... Read More >
202012-20 composer安装和常见问题 下载 Composer安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。安装Composerphp -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" php composer-setup.php p... Read More >
202012-19 php爬虫框架简介 简介php爬虫框架有:1、phpspider,一个爬虫开发框架;2、Beanbun,用PHP编写的多进程网络爬虫框架;3、PHPCrawl,一个PHP开源的Web检索蜘蛛类库。PHP主流爬虫框架phpspider地址:https://github.com/owner888/phpspiderphpspider是一个爬虫开发框架。使用本框架,你不用了解爬虫的底层技术实现,爬虫被网站屏蔽、有些网站需要登录或验证码识别才能爬取等问题。简单几行PHP代码,就可以创建自己的爬虫,利用框... Read More >
202012-17 php8世界上最好的语言新版本特性 本文只会讲述新特性的一些关键点,更详细的介绍请认真阅读官方文档。01 Union Types(联合类型)说明一点,从 PHP 7 开始,支持下面这样的语法:function sum(int $a, int $b): int { return $a + $b;}是不是越来越强类型的感觉?虽然如此,但在非严格类型模式下(strict_types=... Read More >
202012-09 php中如何优雅的写复杂if-else 提前return优化逻辑结构,让正常流程走主干,非正常流程提前return,去除不必要的else优化前$a = 1; $b = 2; $c = 3; if ($a == 1) { if ($b == 2) { &nbs... Read More >
202012-08 php中如何实现SSO单点登录 什么是单点登录SSO(Single Sign-On)SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。本文以简化的PHP代码案例来让大家抛开理念,更简单认识SSO的应用。我这边简单配置了3个域名及对应的文件夹├─A 文件夹 a.com 应用系统│ ├─index.php│ └─login.php│├─B 文件夹 b.com 应用系统│ ├─ind... Read More >
202012-07 如何写出漂亮的代码-代码整洁之道 背景代码本就该是直接简单的,横就是横,纵就是纵,架构原本也本是清晰明了的,模块是模块,过程是过程。可随着项目生命周期的变长,随着需求不断的被实现,面对不同思想的人,不同场景的要求,不同技能水平的实施,就让原本平直的路走成了立交桥,织成了逻辑网。这时候再浏览代码,要走通某一个流程,即便是熟悉路况的“本地人”,编写代码的“原住民”也不一定能走的顺畅。Robert Martin的这句话非常合适:“唯一能有效测量代码质量的方式是每分钟说多少个What-the-Fk ”让我深入解释一下... Read More >
202012-01 php中使用swoole加速lumen项目-laravelS实战 背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目https://github.com/hhxsv5/laravel-s下面我们来实战一下环境介绍php7.2centos7swoole4.5.7lumen5.81.安装源码安装wget https://github.com/swoole/swoole-src/archive/v4.5.7.tar.gz tar -xzv... Read More >
202011-27 Fiddler抓包设置及常见问题 Fiddler简介官网:https://www.telerik.com/fiddlerFiddler是比较好用的web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据,修改hosts,限制网速,http请求性能统计,简单并发,接口测试,辅助自动化测试,Fiddler抓取HTTPS请求配置由于fiddler安装后默认只能抓取http请求,如果需要抓取https请求需要进行配置。配置方式:... Read More >
202011-26 php中容易出错的小案例 sprintf用到sprintf 的时候 如果有传递的变量 如果变量可能出现 % ,则容易出错<?php $content = "%')('%s'"; $kind = 11; $content = sprintf($content ,$kind); var_dump($content ); //输出 PH... Read More >
202011-16 从0到1搭建基于swoole的websocket服务 源码安装wget https://github.com/swoole/swoole-src/archive/v4.5.7.tar.gz tar -xzvf v4.5.7.tar.gz cd swoole-src-4.5.7 && \ phpize && \ ./configure && \ make ... Read More >
202011-14 必须掌握的tracert和traceroute命令详解 tracert一、tracert 介绍tracert 是一个简单的网络诊断工具,用于确定 IP 数据报访问目标所经过的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。在工作环境中有多条链路出口时,可以通过该命令查询数据是经过的哪一条链路出口。二、命令格式tracert [参数] [主机]三、常见参数指令用法: tracert [-d] [-h maximum_h... Read More >
202011-13 shell中 =~的使用 简介“=~” 正则匹配,用来判断其左侧的参数是否符合右边的要求,如果匹配则为真(返回1),不匹配则为假(返回0)。实战read -p "need compile OEM installatoin package?yes/[no]" IS_OEM if [[ -z $IS_OEM ]] then IS_OEM="No"... Read More >
202011-12 systemctl 命令详解 引言CentOS 7.0 中一个最主要的改变,就是切换到了systemd。它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理。systemd兼容SysV和Linux标准组的启动脚本。Systemd是一个Linux操作系统下的系统和服务管理器。它被设计成向后兼容SysV启动脚本,并提供了大量的特性,如开机时平行启动系统服务,按需启动守护进程,支持系统状态快照,或者基于依赖的服务控制逻辑。 先前的使用SysV初始化或Upstart的红帽企业版... Read More >
202011-11 chkconfig命令详解 首先,解释一下linux系统几个运行级别一、Linux运行级别0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。1:单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。2:多用户状态,没有NFS支持。3:完整的多用户模式,有NFS,登陆后进入控制台命令行模式。4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。5:登陆后进入图形GU... Read More >
202011-11 php中global与$GLOBAL由引用产生的区别 很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然。根据官方的解释是$GLOBALS['var'] 是外部的全局变量$var本身。global $var 是外部$var的同名引用或者指针。(错误:是个别名引用而已,非指针!!!)举例说明一下:<?php $var1 = 1; $var2 = 2; function test() { &n... Read More >