自由de单车
码龄10年
  • 432,689
    被访问
  • 108
    原创
  • 7,075
    排名
  • 28
    粉丝
关注
提问 私信

个人简介:90后程序猿

  • 加入CSDN时间: 2012-03-21
博客简介:

IT部落格

博客描述:
关注IT,关注编程
查看详细资料
  • 3
    领奖
    总分 423 当月 24
个人成就
  • 获得86次点赞
  • 内容获得41次评论
  • 获得171次收藏
创作历程
  • 15篇
    2022年
  • 18篇
    2021年
  • 8篇
    2020年
  • 2篇
    2019年
  • 3篇
    2018年
  • 3篇
    2017年
  • 15篇
    2016年
  • 31篇
    2015年
  • 32篇
    2014年
成就勋章
TA的专栏
  • PHP
    59篇
  • lua
    5篇
  • shell
    1篇
  • Android
    9篇
  • 数据库
    23篇
  • Linux
    23篇
  • Mac OS X
    4篇
  • 其它
    13篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    架构
  • PHP
    php
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

[PHP] unicode码、UTF-8码、字符的相互转换

unicode与UTF-8unicode是一个大型字符集,unicode字符集收录了世界上所有的字符,并且为每一个字符分配了一个唯一的数字类型的ID值,这个ID在英文中叫unicode code point,下文统称为unicode码。例如中文的 “严” 字,它的unicode码是\x4e25(十六进制)。因此unicode本质上是一个key-value映射表,key是unicode码,value是对应的字符。下文中的十六进制数字,统一会在数字的前面加上 \x 前缀,方便识别。接下来的问题是,这个
原创
发布博客 7 小时前 ·
10 阅读 ·
0 点赞 ·
0 评论

在PHP中如何截断带HTML标签的富文本字符串

前言在开发中,截断字符串是一个常见的操作。在PHP中,截断字符串十分方便,使用mb_substr函数就可以。但这只是针对普通的字符串而言,如果要截断的是一个带HTML标签的富文本字符串,就不能简单的使用这个函数了。大部分HTML标签都是成对出现的,我们不能在一对标签的中间进行截断,也不能把标签本身截断,否则就会出问题。代码为了解决这个问题,我使用了DOMDocument这个类(需要安装libxml扩展)来实现HTML字符串的截断操作,代码如下:<?phpclass HtmlText{
原创
发布博客 2022.05.11 ·
49 阅读 ·
0 点赞 ·
0 评论

CORS跨域不能携带cookie的问题

环境Chrome浏览器100.0.4896.127正式版前言最近在做web需求时,遇到了一个跨域的问题:浏览器有一个cookie,这个cookie的domain是.rocky.com,path是/。网页域名是 www.rocky.com,网页会使用ajax请求sub.rocky.com域名下的一个接口获取数据,奇怪的是,在请求ajax接口时浏览器没有在请求头里带上cookie。最后通过网上查资料得知,原来这个ajax请求跨域了,原因是接口域名(sub.rocky.com)跟网页域名( www.r
原创
发布博客 2022.04.30 ·
933 阅读 ·
0 点赞 ·
0 评论

使用docker搭建LNMP开发环境

宿主机环境系统:ubuntu 18.04docker版本:18.03.1-cedocker的安装请自行参考官方文档。前言这篇文章用于介绍如何使用docker搭建一个LNMP开发环境,下面我们将会编写Dockerfile,基于官方docker hub的镜像,分别构建我们自己的镜像,然后运行。要构建的镜像有:PHP-FPM 7.4Nginx 1.19MySQL 5.7Redis 6.2为什么不直接使用官方镜像,而是自己再构建一个?因为官方镜像一般安装的东西都很少,例如PHP-FPM的
原创
发布博客 2022.04.01 ·
3131 阅读 ·
2 点赞 ·
0 评论

使用composer时需注意的问题

composer install使用此命令必须先创建composer.json文件。composer.lock不存在时:安装composer.json里指定的依赖包,并创建对应的composer.lockcomposer.lock存在时:忽略composer.json文件,如果composer.lock里指定的依赖包已全部安装好,则什么都不干;如果有依赖包还没安装,则进行安装。平时做开发时,除了composer.json以外,lock文件也应提交到代码库中。因为有了lock文件,其他团队成员就
原创
发布博客 2022.03.19 ·
154 阅读 ·
0 点赞 ·
0 评论

ubuntu安装swoole后报错:undefined symbol: json_globals

环境Ubuntu Server 18.04PHP 7.2Swoole 4.8.7过程今天使用PECL的方式安装完swoole扩展后,按照官方文档指示,在php.ini文件中添加了extension=swoole.so但添加完后,执行php -m命令并没有发现有swoole扩展,说明扩展没有加载成功。首先是怀疑加载的php.ini文件路径不正确,于是使用php --ini命令查看文件路径:虽然配置文件路径正确,但看到有一个Warning错误:undefined symbol: json_
原创
发布博客 2022.03.08 ·
174 阅读 ·
0 点赞 ·
0 评论

在Laravel中创建Service Provider和Facade

环境Laravel 5.4前言下面我们以“音乐播放器”为例子,介绍如何在Laravel中创建一个Service Provider,并且为这个Provider创建一个门面(Facade)。创建自定义Service Provider1)既然是音乐播放器,那肯定会有播放功能,因此先定义一个音乐播放器的接口,接口有一个play方法,文件路径app/Helpers/Contracts/MusicPlayerContract.php:namespace App\Helpers\Contracts;int
原创
发布博客 2022.03.06 ·
214 阅读 ·
0 点赞 ·
0 评论

Laravel报错:Class ‘xxx‘ does not exist

环境Laravel 5.4前言最近在学习Laravel框架,想创建一个Service Provider(服务器提供者)练练手,但创建完之后,无论如何都无法通过make方法获取到服务对象,页面会报Class 'xxx' does not exist的错误,如下图:代码服务提供者:namespace App\Providers;use App\Helpers\MusicPlayer;use Illuminate\Support\ServiceProvider;class MusicPla
原创
发布博客 2022.03.05 ·
320 阅读 ·
0 点赞 ·
0 评论

PHP防范XSS攻击

定义XSS(Cross Site Scripting)攻击,中文名为跨站脚本攻击,是一种常见的网页攻击方式。攻击者在web页面中插入一些恶意的javascript或HTML代码,当用户浏览该页面的时候,嵌入到web页面中的javascript/HTML代码会被执行,从而达到攻击目的。一个简单的例子就是网页中的评论功能,用户编写一段javascript代码(见下面)提交到服务器,如果不做过滤就直接显示出来的话,就会导致用户一打开页面就会有弹窗提示“你被攻击了”。<script>window
原创
发布博客 2022.03.03 ·
328 阅读 ·
0 点赞 ·
0 评论

PHP使用pcntl扩展创建多进程高效处理任务

前言如果一个PHP脚本要处理10个任务,每个任务需要耗时1分钟,使用默认的单进程处理的话,需要耗时10分钟;但如果改成多进程的话,将这10个任务分配给10个进程处理,每个进程处理其中一个任务,则总耗时只需要1分钟,大大提高了效率。下面介绍如何使用PHP的pcntl扩展来创建多进程。代码<?php$parentPid = getmypid(); // 父进程ID$childNum = 3; // 要创建的子进程数量echo "父进程[$parentPid]准备fork $childNum
原创
发布博客 2022.02.24 ·
51 阅读 ·
0 点赞 ·
0 评论

[翻译文]MySQL在SSD中使用更小的innodb_page_size有助提高性能

在这篇文章中,我们将讲述在SSD设备下,一个更小的innodb_page_size是怎么提高MySQL性能的。在我之前写的一篇文章中,我对比和测试了不同的三星SSD设备。大部分SSD使用4KB作为内部页的大小,而innodb存储引擎的默认页大小是16KB。我想知道不同的innodb_page_size是否会影响数据库的性能。幸运的是,MySQL 5.7新增了一个innodb_page_size配置项,从而让你可以自定义innodb的页大小,然而这个配置项目前使用起来还不是很方便。你不能改变一个已有的数据
翻译
发布博客 2022.02.21 ·
42 阅读 ·
0 点赞 ·
0 评论

说说HTTP缓存Cache-Control响应头

前言除非特别说明,否则以下内容和结论均经过实际测试并验证,测试用的浏览器:Google Chrome 98.0.4758.102正式版。例子先看下响应头Cache-Control的一些常见用法。第一种:Cache-Control:max-age=N浏览器获取到资源内容后,将资源内容缓存在本地,缓存有效期是N秒。若过期前再次访问资源,直接使用本地缓存;过期后再访问,则向服务器发请求,若服务器检查资源没有更新,则返回304状态码;如果有更新,则返回200状态码以及新的资源内容。同时浏览器延长本地资源
原创
发布博客 2022.02.20 ·
1399 阅读 ·
0 点赞 ·
0 评论

字典和哈希表的区别

字典是一种将键映射到值的一种概念,哈希表是实现字典的其中一种方式。除了哈希表,实现字典的另一种常见方式是红黑树。
原创
发布博客 2022.02.17 ·
479 阅读 ·
0 点赞 ·
0 评论

redis过期key的删除策略

前言在使用redis的过程中,不免会产生过期的key,而这些key过期后并不会实时地马上被删除,当这些key数量累积越来越多,就会占用很多内存,因此在redis底层同时使用了三种策略来删除这些key。第一种策略:被动删除当读/写一个key时,redis首先会检查这个key是否存在,如果存在且已过期,则直接删除这个key并返回nil给客户端。第二种策略:定期删除redis中有一系列的定期任务(serverCron),这些任务每隔一段时间就会运行一次,其中就包含清理过期key的任务,运行频率由配置文件
原创
发布博客 2022.02.17 ·
1657 阅读 ·
0 点赞 ·
0 评论

HTTP 301和302状态码

定义301:Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。302:Found 请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。总结
原创
发布博客 2022.02.16 ·
1382 阅读 ·
0 点赞 ·
0 评论

MySQL参数优化总结

innodb_io_capacity描述:此参数用于控制InnoDB引擎刷脏页的速度,数据变更只记录到内存还未写入到磁盘的数据页称为脏页;把内存页数据写入到磁盘的过程,称为刷脏页(flush)。若刷脏页速度太快超过磁盘的IO写入能力,或者磁盘IO能力很高但刷脏页速度设置得太低,都会影响数据库的性能。默认值:200建议值:设置成磁盘的 IOPS,磁盘的 IOPS 可以通过 fio 这个工具来测试,命令:fio -filename=$filename -direct=1 -iodepth 1 -t
原创
发布博客 2021.11.09 ·
50 阅读 ·
0 点赞 ·
0 评论

禁止navicat通过SSH通道功能连接内网里的数据库

前言目前公司有一台 Linux应用服务器 和 MySQL数据库,数据库处于内网中,没有外网IP;应用服务器有对外网开放80端口和22端口,用于给用户提供web服务和给运维/开发人员提供SSH登录服务。架构如下:存在的问题为了数据库的安全,不将数据库暴露在外网是正确的,而应用服务器上也没有安装MySQL client工具,即使开发人员SSH登录到应用服务器,也不能通过shell登录到数据库对数据进行增删改,在应用服务器上,只能通过代码的形式去连接。但这样就安全了吗?并不是,开发人员还可以在他们的本地
原创
发布博客 2021.11.04 ·
123 阅读 ·
0 点赞 ·
0 评论

在windows系统上如何将iphone备份到移动硬盘

前言平时我们在windows系统上使用iTunes备份iphone的时候,只能备份到电脑硬盘上,但现在手机的存储越来越大,电脑的硬盘可能会装不下整个手机的备份,这时候就要想办法把备份存到移动硬盘上去,下面介绍一下相关方法。步骤iTunes默认会把备份文件放在C:\Users\用户名\Apple\MobileSync\Backup目录下,用户名是你当前登录的用户名,根据实际情况进行替换。注:后续随着iTunes的版本升级,这个目录可能会改变,我使用的版本是12.11.4.15另外,这个目录是不能
原创
发布博客 2021.09.05 ·
1784 阅读 ·
1 点赞 ·
0 评论

MySQL自增主键值回溯问题

平时我们使用MySQL时,通常每一个表都会有一个自增主键ID,每新增一条数据,ID值就会自增1。但在8.0之前版本的MySQL中,这个自增值会存在一个回溯的问题。例如,在一个新表中插入三条主键为1、2、3的数据行,这时候用SHOW CREATE TABLE命令查看该表的AUTO_INCREMENT的值是4,这是没问题的。然后把ID=3的数据行删掉,再次查询AUTO_INCREMENT的值,依然是4,这也是没问题的。但如果重启一下MySQL,这个值就会变回3,而不是4,发生了回溯。这是因为AUTO_I
原创
发布博客 2021.06.16 ·
398 阅读 ·
3 点赞 ·
0 评论

聊聊MySQL的varchar类型

计算varchar列的长度varchar类型除了存储字符串本身以外,还需要1~2个字节来存储字符串的长度信息(字符串长度小于或等于255字节时需要1字节,超过则需要2字节);另外,如果设置允许NULL的话,会再需要多1字节空间。假设有一个varchar(32)字段,字符集是utf8,允许NULL,因为每个utf8字符最多占用3个字节,存储字符串本身需要占用的空间是:32 * 3 = 96字节96字节小于255,所以这一列的最大长度是:96 + 1(存储长度信息的额外1字节) + 1(允许NULL的1
原创
发布博客 2021.06.15 ·
114 阅读 ·
1 点赞 ·
0 评论
加载更多