自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT部落格

关注IT,关注编程

  • 博客(161)
  • 资源 (1)
  • 收藏
  • 关注

原创 【PHP】PHP7中的引用计数

PHP的变量在底层有一个引用计数(refcount)属性,这个引用计数是为垃圾回收(GC)服务的,当引用计数变为0的时候,就代表这个变量可以被回收。但也不是所有的数据类型都支持引用计数,例如一些简单类型如整型、浮点型、布尔型、NULL等,它们就不支持(表现为 refcount 的值恒为0)。不支持 refcount 的数据类型,不会被GC回收,它们在请求结束时才会释放。可以使用函数查看变量的refcount(需要安装xdebug// 整型$a = 1;// 浮点型$a = 1.1;// 布尔型。

2024-04-22 17:57:56 774

原创 【Golang】并发编程之三大问题:原子性、有序性、可见性

在并发编程中会出现的问题可以归结为三大类:有序性、原子性、可见性。

2024-04-16 10:58:46 917

原创 【Redis】解决List类型的消息可靠性问题

平时做后端开发时,如果需要用到消息队列功能,但公司的IT环境又没有提供专业的队列软件(RabitMQ/Kafka…),那么在简单场景下,可以使用 Redis 的List数据类型来做消息队列。但List类型有一个挺致命的缺点,就是消息可靠性。当消费者使用命令从队列中取出一条消息后,如果消费者在消费完成前崩溃了,那么这条消息就永远丢失找不回来了。注:为了方便理解,下文统一以“左进右出”的 List 作为例子。

2024-04-03 21:06:17 516

原创 【MySQL】LEFT JOIN表时条件的位置对查询结果的影响

我们知道,JOIN表的查询条件可以放在JOIN语句处,也可以放在 WHERE 语句处。用这条件举例:方式1:放在 WHERE 语句处方式2:放在 JOIN 语句处平时做开发我基本都是用 方式1,而 方式2 就较少使用,可能会有人像我一样,觉得这两种方式的查询结果是一样的,但其实不是的。

2024-03-15 16:38:49 360

翻译 【最佳实践指南】在ClickHouse中更新和删除数据

对于一个分析型数据库而言,更新和删除数据是有挑战的,它会显著影响数据库的性能。为了解决这个问题,ClickHouse为不同场景提供了不同的高效更新和删除数据方式:Lightweight删除,通过语句从ClickHouse里删除数据。这是删除数据最高效的方式,适合无需立即释放磁盘空间、允许数据继续存留在磁盘上的场景;Mutation删除,通过语句删除。适合需要立即释放磁盘空间的场景。例如,合规要求需要确保数据从磁盘上删除。Mutation更新,通过语句更新。适合不会频繁更新数据的场景使用TTLs。

2024-03-08 22:00:06 1117

原创 【javascript】如何判断一个对象属性是否存在

在javascript里,可以有多种判断对象属性是否存在的方法,使用哪种方法来判断,取决于对 “存在” 两个字的定义是什么。

2023-11-29 23:24:00 758

转载 【golang】理解Golang赋值的并发安全性

并发安全就是程序在并发情况下执行的结果是正确的。比如对一个变量简单的自增操作count++,在非并发下很好理解,而在并发情况下却容易出现预期之外的结果,这样的代码就是非并发安全的。因为count++其实是分成两步执行的,当分成了两步执行,那么其他协程就可以趁着这个时间间隙作怪。count:= 1a > 读取count : 1b > 读取count : 1a > 计算count+1 : 2b > 计算count+1 : 2a > 赋值count : 2b > 赋值count : 2。

2023-11-29 18:09:33 170

原创 【javascript】如何给fetch请求设置超时时间,以及结合Promise使用的相关用法

在javascript中,fetch函数是用来进行网络请求的,但默认情况下它是不支持超时设置的

2023-11-23 15:15:08 1300

原创 【PHP】对称加密算法 AES-256-GCM 代码示例

下面介绍在PHP代码中,如何对数据进行 AES-256-GCM 加密和解密。

2023-11-02 15:46:56 1051

原创 【PHP】如何关闭buffer实时输出内容到前端

默认情况下,我们在PHP里使用echo等函数输出的内容,是不会马上发送给前端的,原因是有 buffer 的存在,buffer又分两处,一处是PHP本身的buffer,另一处是Nginx的buffer。

2023-09-28 10:51:02 329

原创 为什么SQL预编译可以防止SQL注入攻击

防范SQL注入攻击是每一位做后端开发的程序员必须会的基本功。本文介绍其中一种防范攻击的方法:SQL预编译。

2023-09-27 17:40:45 389

原创 在HTTP请求中安全传输base64编码的字符串

base64是一种常见的的编码格式,它可以把二进制数据编码成一个由大小写英文字母(a-zA-Z)、阿拉伯数字(0-9),以及三个特殊字符组成的字符串。

2023-09-25 16:03:45 2047

原创 如何给API签名

让API只能被特定的人访问防止别人抓包拿到请求参数,通过篡改参数发起新的请求。

2023-09-20 11:57:50 248 1

原创 在Windows上无法使用TortoiseSVN等工具管理WSL2中的代码的问题

众所周知,WSL2 的跨系统IO读写性能非常差(详情见我之前写的这篇文章),而我的代码又是在 WSL2 中运行的,为了提高性能,所以我的代码也必须放在 WSL2 中,以避免跨系统的IO读写。

2023-09-17 17:54:10 274

原创 【golang】在单线程程序中,协程并发是安全的吗?

我们都知道,多个线程操作同一个变量,是有线程安全问题的。但是,如果换成是“多个协程操作同一个变量”呢?还会有安全问题吗?

2023-09-05 15:50:14 267

原创 【golang】使用通道时需要注意的一些问题

经修改后代码不会再报错了,原因是,【协程1】退出后,虽然【协程2】还在阻塞式地读取空通道,但这时除了【协程2】以外,还有一个【main协程】在运行,所以不会报错。原因是,当【协程1】往通道写入3个数据后,【协程1】就结束运行了,这时【main协程】(是的,main函数也是运行在协程里的)读取出这3个数据后,并没有退出。针对第2点,如果这个空的通道是已关闭的,则不会阻塞,读取到的是这个通道数据类型的零值。通道,发生了阻塞,但这时只有【main协程】在运行了,只剩下一个协程,所以报错。

2023-07-03 21:08:54 332

原创 【golang】请求HTTP接口代码示例

在开发过程中,无论是前端还是后端,都经常需要对第三方服务发起HTTP请求获取数据,本文列出一些代码示例用于参考,主要是 GET 请求 和 POST 请求。

2023-07-02 22:01:50 782

原创 Nginx域名跟server_name不匹配也能访问

最近发现有一个别人的域名(下文以举例),DNS恶意解析到了我的一台服务器IP上,我的服务器上刚好部署了一个网站(域名为),Nginx里的配置为mysite.com奇怪的是,用域名竟然也能访问到我的网站,都不匹配,Nginx怎么会允许它访问的呢?后来查资料得知,如果Nginx匹配不到的话,会将请求交给来处理。怎么确定呢?首先是看此端口有没有配置了如果这个server配置了指令,那么就会交给它处理。但如果所有的server都没有指令呢?那么就会交给第一个开启了此端口的server处理。

2023-06-30 13:18:25 1982

原创 Nginx配置https证书遇到的一个问题

今天在给一个站点配置 HTTPS 证书的时候,遇到了一个问题,写此文章记录一下解决过程。

2023-06-23 20:16:54 2827

原创 【PHP】一个简单的抽奖函数

设置N个奖品,为每个奖品设置一个抽中概率,然后程序根据概率进行抽奖。

2023-06-13 17:56:21 684

原创 高并发写场景:秒杀系统库存扣减

如何解决高并发下的商品库存扣减问题

2023-04-12 20:39:19 607 1

原创 解决PHP项目在Docker(WSL2)中运行缓慢的问题

最近在使用Docker容器运行PHP项目的时候,发现特别缓慢。

2023-03-28 01:37:26 4033 5

原创 Docker Desktop容器命令行不支持Tab键命令自动补全

Docker Desktop容器命令行不支持Tab键命令自动补全

2023-03-23 22:15:46 1083

转载 ANSI是什么编码?

ANSI编码是什么

2023-03-08 22:26:34 1445

原创 【golang】如何对struct切片进行去重

编写一个方法,给定一个元素为struct类型的切片,和一个struct的字段名,根据这个字段名对切片进行去重。

2023-03-02 16:50:22 238

原创 GoFrame框架model Update方法报“expected N arguments, got N+1”错误

GoFrame框架model Update方法报“expected N arguments, got N+1”错误

2023-03-01 16:41:33 256

原创 【golang】学习golang过程中遇到的坑

本文记录我在学习golang过程中遇到的一些容易踩到的坑,以及一些需要注意的问题。持续更新中...

2023-02-28 14:36:05 313

原创 golang接口用法之:结构体内嵌匿名接口

当我们需要重写一个 “实现了某个接口的结构体” 的部分方法,而其它方法保持不变 的时候,就需要用到这种用法。

2023-02-24 16:49:05 1105

原创 golang值方法和指针方法的区别

golang的值接收者和指针接收者的区别

2023-02-22 14:23:56 389

原创 构建vue大项目报错:Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memo

Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

2023-02-18 14:17:58 3183 4

原创 Windows安装pnpm后提示“无法加载文件”错误

pnpm : 无法加载文件 C:\Users\root\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。

2023-02-16 14:23:05 2285 1

原创 Laravel门面实现原理

在Laravel中,门面为应用服务容器中绑定的类提供了一个“静态”接口,使得我们可以不用。的对象,服务容器会帮我们实例化出对应的对象(前提是已经绑定好)。方法,获取到一个service_id(暂且这么叫吧),然后传给。静态变量中,这样下次再获取相同对象时,就不用重复实例化了。方法创建出一个对象,然后在这个对象上真正执行我们的方法。这些类出来,就可以直接通过静态接口调用这些类中的方法。当我们静态调用一个不存在的方法时,例如。,这个魔术方法就会被调用。这里通过我们自定义门面类中的。是一个对象,但它实现了。

2023-02-08 22:56:49 975

原创 接口的幂等性

如今的网络系统,经常需要通过接口调用其它服务。例如最常见的网页浏览中的ajax请求,前端页面就需要通过接口请求后端服务。作为开发者,在设计这些接口的时候,必须要考虑到接口的幂等性问题。。举个简单的例子,那就是转账,用户在银行网页中填写好转账相关信息后,不小心快速点击了2次转账按钮,这时网页就会发起2次转账请求。如果不做处理,就会转了2笔钱给对方,造成损失。这就是没有保证接口幂等性的后果。

2023-01-12 22:42:02 213

原创 用GBK编码写PHP代码会发生什么事情?

在互联网领域,UTF-8编码已经几乎成为了标配,无论是网页、数据库还是代码文件等等,都广泛使用UTF-8作为编码方式。我平时写PHP代码时,文件的编码也都是使用UTF-8,今天突然想尝试一下,如果使用其它编码,会有什么后果呢?

2022-05-22 18:07:39 287

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

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

2022-05-21 18:31:12 2246

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

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

2022-05-11 00:10:53 671

原创 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 15:17:30 3122

原创 使用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 14:08:19 6089 2

原创 使用composer时需注意的问题

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

2022-03-19 22:45:15 551

原创 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 21:35:34 737

php5.4 memcache.dll文件 64位

该dll文件已经在PHP 5.4.12上成功安装,系统环境是win7 64位

2013-11-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除