- 博客(50)
- 收藏
- 关注
原创 PHP代码性能优化
1 、方法尽量静态化(通常用于常用的配置项或经常使用的对象实例):静态方法在程序开始时生成于内存中,所以静态方法可以直接调用,实例方法要先实例化对象才可以调用,静态速度很快,但是多了会占内存,静态方法始终调用同一块内存,其缺点就是不能自动进行销毁,而实例化可以销毁。2、echo效率高于print:因为echo没有返回值,print返回一个整型。测试:echo0.000929 - 0.001255 s (平均 0.001092 seconds)print0.000980 - 0.001396 s
2022-01-20 18:25:40 255
原创 Linux基础 - SSH之秘钥登录
# 发起远程机器上操作$ ssh-keygen -t rsa$ chmod 600 ~/.ssh/id_rsa$ chmod 600 ~/.ssh/id_rsa.pub$ chmod 644 ~/.ssh/known_hosts$ chmod 755 ~/.ssh# 目标机器上操作$ cd ~/.ssh/$ vim authorized_keys$ chmod 644 ~/.ssh/authorized_keys
2021-06-05 15:20:24 185
原创 Linux基础 - 定时任务
# 看看有没启动了crond服务$ ps -ef|grep crond # 查看crond服务的状态$ service crond status # 安装crond服务$ yum install crond# 启动crond服务$ service crond start # 关闭crond服务$ service crond stop # 查看某个用户下的定时任务$ crontab -u www -l# 编辑当前用户的定时任务$ crontab -e* * * *
2021-06-03 15:22:21 164
原创 Linux基础 - Shell编程
#!/usr/bin/env bash# 验证是否在root用户下执行if [[ $(id -u) -ne 0 ]]; then echo 'Can only be executed at root!' exit 1;fi# 变量声明,变量名加上前缀,等号两边不能有空格var_id=10001# 删除变量unset var_id# 设置为只读变量var_name='Jack'readonly var_name# 变量使用echo ${var_name}#
2021-06-03 11:33:39 238
原创 版本控制 - 搭建Git服务器
第一步,安装git:$ sudo apt-get install git第二步,创建一个git用户,用来运行git服务:$ sudo adduser git第三步,创建证书登录:1、收集所有需要登录的用户公钥id_rsa.pub文件;2、把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。第四步,初始化Git仓库:先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:$ sudo git init
2021-04-24 14:57:37 109
原创 PHP实现排行榜 - 模拟Redis中的有序集合
实现思路:1、利用位运算,将需要排序的数值保存到对应的二进制分段上;比如:高位保存积分,低位保存时间戳等;2、需要注意数值的大小,不能超出二进制64位的表示范围;比如:时间戳可以通过未来多少年的时间减去当前的时间戳,把计算的差值保存到二进制中;代码实现逻辑:// 模拟来自数据表的数据$list = [ ['uid'=>1001,'score'=>80,'time'=>1617365056], ['uid'=>1002,'score'=>90,'time
2021-04-03 12:23:55 470
原创 设计模式 - 行为型【策略模式】
示例1:数据过滤interface Filter{ public function filter($str);}class HtmlFilter implements Filter{ public function filter($str){ //strip out the HTML return $str; }}class SwearFilter implements Filter{ public function filter($str){ // Cross out sw
2021-03-29 16:19:29 82
原创 设计模式 - 结构型【组合模式】
使用场景:组合模式适用于当我们的一个对象可能代表一个实体,或者一个组合的实体;比如:雇员->部门、表单元素->HTML表单表单元素->HTML表单:abstract class FormComponent(){ abstract function add(FormComponent $obj); abstract function remove(FormComponent $obj); abstract function display(); abstract func
2021-03-29 16:07:13 69
原创 设计模式 - 创建型【单例模式、工厂模式】
单例模式:// 使用单例模式的好处就是可以节省内存,只创建一个对象class Test{ private static $_instance = NULL; private function __construct(){} //防止在外部实例化 private function __clone(){} //防止对象在外部被克隆 public static function getInstance(){ }}工厂模式:abstract class ShapeFactory{
2021-03-29 15:52:14 61
原创 PHP命令行与定时任务
命令行使用场景:一般结合定时任务执行,用于处理一些定时的事务,例如:结算、推送、清理过期数据等;脚本文件:run_crontab.php#!/usr/bin/php<?php// 防止非命令行下执行if (PHP_SAPI !== 'cli'){ exit();}var_dump($_SERVER['argc']); // 执行脚本时命令行中的参数个数(包含脚本本身)/*** 输出:int(1)*/var_dump($_SERVER['argv']); // 执行脚本
2021-03-27 15:57:59 307 3
原创 PHP手册整理 - 函数【内置函数(类属性相关的函数)】
class_alias 函数:// class_alias — 为一个类创建别名class_alias('original_name', 'alias_name');class_exists 函数:// class_exists — 检查类是否已定义if (class_exists('MyClass')) { $myclass = new MyClass();}get_called_class 函数:// get_called_class — 后期调用静态方法的类名clas
2021-02-18 12:13:02 144
原创 PHP手册整理 - 函数【内置函数(数组处理函数)】
array_chunk 函数:// array_chunk — 将一个数组分割成多个$input_array = array('a', 'b', 'c', 'd', 'e');print_r(array_chunk($input_array, 2));print_r(array_chunk($input_array, 2, true)); // 保留输入数组中原来的键名array_column 函数:// array_column — 返回数组中指定的一列$records = array
2021-02-18 11:49:59 155
原创 PHP手册整理 - 函数【扩展函数(Session扩展)】
session_start 函数(一切session操作的开始):// session_start — 启动新会话或者重用现有会话session_start();session_destroy 函数:// session_destroy — 销毁一个会话中的全部数据session_start();session_destroy();session_id 函数:// session_id — 获取/设置当前会话 ID$s = session_id();var_dump($s);
2021-02-18 10:47:44 211
原创 PHP手册整理 - 函数【内置函数(网络)】
header 函数:// header — 发送原生 HTTP 头// URL重定向header('Location: http://www.example.com/');// 设置响应状态码header("HTTP/1.0 404 Not Found");// 响应一个pdf文件header('Content-type: application/pdf');header('Content-Disposition: attachment; filename="downloaded.pd
2021-01-27 20:53:07 125
原创 PHP手册整理 - 函数【内置函数(CURL扩展)】
// curl_init — 初始化 cURL 会话$ch = curl_init();$ch = curl_init('http://www.xxx.com/');// curl_setopt — 设置 cURL 传输选项// curl_setopt_array — 为 cURL 传输会话批量设置选项curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");$opt = [ CURLOPT_POST => 1
2021-01-20 19:34:30 191 1
原创 PHP手册整理 - 函数【内置函数(执行外部指令)】
$output = [];$cmd = 'who';$pfile = 'test.log';$status = 0;exec("{$cmd}", $output, $status);// 只有执行成功才有数据if ($status === 0) { file_put_contents($pfile, '--------------------------'.date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND); file_put_contents($pfi
2021-01-20 19:33:11 95
原创 PHP手册整理 - 函数【内置函数(数学相关)】
// abs — 绝对值$abs = abs(-4.2); // $abs = 4.2; (double/float)$abs3 = abs(-5); // $abs3 = 5; (integer)// bindec — 二进制转换为十进制echo bindec('110011') . "\n";// ceil — 进一法取整echo ceil(1.26); // 1// decbin — 十进制转换为二进制echo decbin(12) . "\n";// dechex — 十
2021-01-20 18:26:21 244
原创 PHP手册整理 - 函数【内置函数(操作CSV文件)】
fputcsv 函数:// fputcsv — 将行格式化为 CSV 并写入文件指针$csv_header = [ 'Id', 'Title', 'Date']; $csv_data = [ [ '1', 'test 1', date('Y/m/d H:i:s') ], [ '2', 'test 2', date('Y/m/d H:i:s') ], [ '3', 'test 3', date('Y/m/d H:i:s') ],];$fp
2021-01-13 20:28:05 144
原创 PHP手册整理 - 函数【内置函数(加密函数)】
hash_file、md5_file 函数:// hash_file — 使用给定文件的内容生成哈希值// md5_file — 计算文件的md5值// md5_file('./test.php')等同于hash_file('md5','./test.php');echo md5_file('./test.php');echo '---';echo hash_file('md5','./test.php');hash、md5 函数:// hash — 生成哈希值 (消息摘要)//
2021-01-13 18:04:58 132
原创 PHP手册整理 - 函数【内置函数(PHP信息相关)】
扩展相关函数【extension_loaded、get_loaded_extensions】:// extension_loaded — 检查一个扩展是否已经加载extension_loaded('gd') or die('没有找到gd扩展!');// get_loaded_extensions — 返回所有编译并加载模块名,类似命令行的 php -m$loaded_extensions = get_loaded_extensions();print_r($loaded_extensions);
2020-12-29 12:30:30 116
原创 PHP手册整理 - 安全【参数过滤、防止SQL 注入、隐藏PHP信息等】
客户端提交的参数过滤:// 不严谨的示例代码:$file = $_GET['file']; // "../../etc/passwd"if ( file_exists('/home/wwwrun/' . $file . '.php' )) { include '/home/wwwrun/' . $file . '.php' ;}// 因此,任何用于操作文件系统的字符串(译注:特别是程序外部输入的字符串)都必须经过适当的检查。// 以下是上述例子的改进版本: // 验证输入的正
2020-12-24 11:17:04 209
原创 PHP手册整理 - 杂项【对象比较、类型约束、引用和对象、命名空间、生成器使用】
对象比较:当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。 而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)。类型约束:// $test 变量必须是 TestClass 的实例对象function test( TestClass $test ) { echo $test->var ;}引用和对象: $c = new A ;
2020-12-23 20:48:17 106
原创 PHP手册整理 - 预定义变量
$GLOBALS 包含($_SERVER, $_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV) $_SERVER 变量详解:array ( 'USER' => 'www', // 执行脚本的用户 'HOME' => '/home/www', // 执行脚本的用户的根目录 'HTTP_CACHE_CONTROL' => 'max-age=0', // 用于设置htt
2020-12-23 20:24:19 129
原创 memcached - 扩展常量说明
Memcached::OPT_COMPRESSION开启或关闭压缩功能。当开启的时候,item的值超过某个阈值(当前是100bytes)时,会首先对值进行压缩然后存储,并 在获取该值时进行解压缩然后返回,使得压缩对应用层透明。类型: boolean, 默认: TRUE.Memcached::OPT_SERIALIZERMemcached::SERIALIZER_IGBINARY,配置时需要开启 --enable-memcached-igbinary选项并且 igbinary扩展被加载时才有效,存储
2020-12-17 19:48:25 193
原创 PHP手册整理 - 图像处理
图像处理函数:--画布管理imagecreate()imagecreatetruecolor()imagedestroy() --设置颜色imagecolorallocate()--生成图像imagegif()imagejpeg()imagepng()imagewbmp()function_exists('imagegif') //判断是否支持图像--绘制图像imagefill()--绘制像素点和直线imagesetpixel()imageline()--绘制
2020-12-15 12:16:16 153
原创 PHP手册整理 - 文件系统处理
文件校验函数【is_file、is_dir、file_exists、is_readable、is_writeable、is_executable】:// is_file — 判断给定文件名是否为一个正常的文件var_dump(is_file('a_file.txt')) . "\n"; // truevar_dump(is_file('/usr/bin/')) . "\n"; // false// is_dir — 判断给定文件名是否是一个目录var_dump(is_dir('a_file.t
2020-12-07 20:25:16 102
原创 PHP手册整理 - 日期和时间
time函数:// 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数echo time();// 发起该请求时刻的时间戳echo $_SERVER['REQUEST_TIME'];DateTime工具类:/** * 粗略计算时间的差异 * * @param $date * * @return string */function getTimeInterval($date){ try { $dat
2020-11-27 20:28:31 111
原创 PHP手册整理 - 错误和异常处理
设置显示错误信息的级别:【error_reporting】# 当设置了自定义处理函数,error_reporting则无效define('DEBUG', true);if (DEBUG) { // 报告所有 PHP 错误 error_reporting(E_ALL); // 除了 E_NOTICE,报告其他所有错误 //error_reporting(E_ALL ^ E_NOTICE); // 设置错误信息显示开关 ini_set("display_errors"
2020-11-27 18:11:17 95
原创 常用MySQL语句收集
表结构操作语句:-- 创建一张表结构一模一样的表CREATE TABLE IF NOT `user_info_0` LIKE `user_info`-- 查看表结构show create table table_name;
2020-11-27 16:06:06 74
原创 MySQL问题排查
只查看当前连接数(Threads就是连接数):# 查看当前MySQL的运行状态$ mysqladmin -uroot -proot -h127.0.0.1 status# Uptime: 8891 正常运行时间(秒)# Threads: 3 运行的线程数# Slow queries: 0 慢查询数# Queries per second avg: 0.014 平均每秒查询次数# 查看当前连接数$ mysqladmin -uroot -pr
2020-11-27 16:02:02 164
原创 MySQL四种插入数据的方式
第一种:insert into-- 单条数据插入INSERT INTO `user_info`(`user_id`,`nickname`,`icon`,`area`,`regtime`) VALUE(10001,'小明','/upload/icon/10001.png','广东-深圳',1606262400);-- 多条数据插入(批量操作数据优先)INSERT INTO `user_info`(`user_id`,`nickname`,`icon`,`area`,`regtime`) VALU
2020-11-27 15:27:15 3527
原创 重置MySQL的root账号密码
步骤 - 1:使用root账号登录服务器$ ssh root@192.168.0.108:22步骤 - 2:停止MySQL服务$ /etc/init.d/mysqld stop # 停止MySQL服务,注意安装MySQL的路径# 或$ service mysql stop# 或$ /bin/systemctl stop mysql.service步骤 - 3:以安全模式启动mysql服务$ mysqld_safe --skip-grant-tables & # &
2020-11-27 13:08:33 130
原创 PHP手册整理 - 类与对象
$this 当前对象get_class($this); 获取当前对象所属的类型extends 继承某个类new 创建类对象,在类定义内部,可以用 new self 和 new parent 创建新对象。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。可以通过 parent:: 来访问被覆盖的方法或属性(当扩展父类中某个方法时不用重复写父类方法部分,执行调用即可,然后再扩展)public,protected ,private (属性
2020-10-03 10:55:39 185 1
原创 PHP手册整理 - 函数【内置函数(加载函数)】
include_once 函数:// include_once 包含文件,程序出错仍然可以往下执行(如果该文件中已经被包含过,则不会再次包含)include_once "a.php"; // 包含 a.phpinclude_once "a.php"; // 再次包含 a.php! require_once 函数:// require_once 包含文件,包含核心部分,程序出错停止运行 require_once 'core.php';...
2020-09-27 19:41:08 73
原创 PHP手册整理 - 函数【内置函数(变量处理函数))】
unset 函数:// unset 销毁变量,释放内存// 如果在函数中的一个全局变量,只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值;function destroy_foo() { global $foo; unset($foo);}$foo = 'bar';destroy_foo();echo $foo;...
2020-09-27 19:35:34 91
原创 PHP手册整理 - 函数【内置函数(正则函数)】
preg_match 函数:// preg_match 执行匹配正则表达式// 参数说明:// $pattern 必传参数,正则表达式,字符串类型// $subject 必传参数,进行匹配的字符串// &$matches 可选参数,匹配完整结果,$matches[0]将包含完整模式匹配到的文本,// $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推// $f
2020-09-27 18:22:34 157
原创 版本控制 - SVN工具使用
检出命令【checkout(co)】:# 命令格式:svn checkout svn地址 --username 用户名# 实例-1svn checkout svn://192.168.1.100/php --username skylong# 实例-2svn co svn://192.168.1.100/php --username skylong# 实例-3svn checkout https://192.168.1.100/php --username skylong# 实例
2020-09-24 19:54:36 309
原创 Memcached - 命令使用
基本命令:# 基本命令setaddreplacegetdelete# 命令使用格式command <key> <flags> <expiration time> <bytes><value># 参数说明如下:command set/add/replacekey # key 用于查找缓存值flags # 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
2020-09-24 17:13:06 350
原创 CentOS 7 安装 - 物理机安装
制作U盘启动:1、准备U盘一个,容量要8G或以上;2、安装好镜像制作工具(UltraISO);3、下载好你想要的 CentOS 7 系统版本http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso;4、开始制作U盘启动:...
2020-09-24 12:04:08 1739
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人