- 博客(126)
- 资源 (2)
- 收藏
- 关注
原创 Go语言映射(Map)
本文介绍了Go语言中map数据结构的基本概念和使用方法。map是一种键值对存储结构,类似哈希表或字典。文章详细讲解了map的定义方式(字面量创建、make函数创建、声明后初始化)、增删改查操作(判断key存在、添加修改元素、查询元素、删除元素)、遍历方法(基本遍历、有序遍历)以及零值特性。此外,还探讨了map作为函数参数的引用传递特性,并展示了map在实际应用中的典型场景,如缓存系统和配置管理。通过多个代码示例,全面展示了map在Go语言中的灵活应用。
2025-12-26 14:44:05
1022
原创 Go语言数组与切片的区别
摘要:数组和切片的核心区别在于数组是值类型容器,而切片是数组的引用视图。数组长度固定且包含在类型中,内存独立;切片长度可变,共享底层数组。实际开发中99%场景使用切片,仅在小尺寸固定数据、需要值语义或底层优化时使用数组。数组适合确定大小的数据结构,切片则用于动态高效的数据处理。
2025-12-18 18:51:25
228
原创 Go语言切片slice
Go语言切片(Slice)是一种动态数组结构,包含指针、长度和容量三个核心属性。指针指向底层数组,长度表示当前元素个数,容量表示最大可扩展空间。切片创建方式包括直接创建、make函数创建和从数组创建。其扩容机制在小容量时翻倍增长,大容量时按1.25倍增长。append操作可能导致底层数组共享问题,可通过三参数切片或copy函数解决。预分配容量能显著提升性能,建议在已知数据量时使用。相比固定数组,切片更适合处理动态数据,但需要注意共享底层数组可能带来的数据污染问题。实际应用中应根据需求合理选择数组或切片,并善
2025-12-18 18:50:44
1052
原创 Go语言数组
数组可以存放多个同一类型的数据。数组也是一种数据类型,在 Go 中,数组是值类型。想象一下,数组就像一个固定大小的储物柜,有着明确数量的格子,每个格子只能存放相同类型的物品。一旦这个储物柜建好了,格子的数量就不能改变了。
2025-12-18 18:49:40
492
原创 Go语言结构体
本文系统介绍了Go语言中结构体的使用方式,主要包括:1. 结构体定义和初始化(键值对和值列表两种方式);2. 结构体实例化(基本形式、new关键字、取地址方式);3. 结构体成员访问和构造函数实现;4. 结构体内嵌和"继承"(通过组合实现);5. 结构体与JSON序列化的详细操作,包括自定义序列化逻辑。文章通过大量代码示例展示了Go语言结构体的核心特性,特别强调了组合优于继承的设计理念,以及如何通过结构体内嵌实现类似继承的功能。最后详细讲解了结构体与JSON的相互转换方法,包括自定义序列
2025-12-02 09:37:15
980
原创 Golang结构体内存布局
摘要:Go语言结构体的大小并非简单字段相加,而是遵循内存对齐规则。对齐原因包括硬件平台限制(如ARM不支持未对齐访问)和性能优化(避免CPU多次读取)。结构体对齐规则要求每个字段放在其对齐值的整数倍偏移地址上,且整体大小必须是最大对齐值的整数倍。通过调整字段顺序(从大到小排列)可减少填充字节,优化空间利用率。例如,原结构体因填充占用32字节,调整后可能更紧凑。对齐机制牺牲空间换取时间,确保CPU高效访问内存。
2025-11-27 14:26:04
970
原创 一套自用的git提交规范,可清晰的识别到关联的任务/bug
禅道Bug: ID 为 50020,标题是“商品详情页加入购物车按钮点击无效”禅道需求: ID 为 10086,标题是“【用户中心】需要支持修改头像功能”用括号括起来,说明提交影响的范围。这有助于快速定位变更。在你的场景下,可以放禅道需求的完整URL。对本次提交的简短描述,不超过50个字符。表示本次提交的意图。在主题之后空一行,编写更详细的说明。通常用于放置不兼容的变动(以。开头)或关闭Issue(如。这是与禅道联动的关键!
2025-09-05 00:42:43
549
原创 PHP-Xlswriter高性能导出Excel
使用背景使用传统的PHPExcel导出效率太慢,并且资源占用高,数据量大的情况,会导致服务占用大量的资源,从而导致生产意味,再三思索后,决定使用其他高效率的导出方式。
2023-12-20 19:01:57
1581
原创 Golang数据类型(结构体)
type结构体名struct属性名属性类型属性名属性类型...比如我要定义一个可以存储个人资料名为 Profile 的结构体,可以这么写age intmother *Profile // 指针father *Profile // 指针若相邻的属性(字段)是相同类型,可以合并写在一起age intmother *Profile // 指针father *Profile // 指针通过结构体可以定义一个组合字面量规则一:当最后一个字段和结果不在同一行时,
2023-12-01 16:52:40
1138
原创 Golang语言基础之切片
数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性sum := 0return sum这个求和函数只能接受[3]int类型,其他的都不支持。其中,name:表示变量名T:表示切片中的元素类型// 声明切片类型var a []string //声明一个字符串切片var b = []int{} //声明一个整型切片并初始化var c = []bool{false, true} //声明一个布尔切片并初始化。
2023-11-30 17:12:55
845
原创 Golang数据类型(数组)
最后我们用显示声明但是不赋值的方式声明了变量array3,该数组的长度为我们手动指定的10,而该数组里的元素则为10个整数0,也就是在声明变量但是不赋值的情况下,Go自动为我们给整数数据类型分配的零值。针对数组array1我们通过[5]手动指明了它的长度(注意:这里array1里的元素个数刚好为0,1,2,3,4总共5个整数,和array1的长度匹配,因为数组的长度(或大小)指的是该数组能容纳的最大元素个数,并不是当前数组里有多少个元素。如果将数组作为参数传入一个函数,Go会为该数组创建一个副本,
2023-11-30 11:04:41
451
原创 Golang数据类型(数字型)
的整数类型,其中有符号整数按二进制位又可以分为int8(对应8bit大小的有符号整数),int16(对应16bit大小的有符号整数),int32(对应32bit大小的有符号整数),int64(对应64bit大小的有符号整数),以及int(与CPU相关)五种类型。,为什么会有两个值?, 其作用是用来指定我们想将字符串转换为哪类的有符号整数类型,其取值范围为0,8,16,32,64,分别表示int, int8, int16,int32和int64。浮点数用来表示带有小数点的数字,比如1.0,-45.332。
2023-11-30 00:56:16
658
原创 Golang数据类型(字符串)
要知道strings.Join()的用法,必须知道什么是切片(Slice),而要理解切片,又必须先要知道什么是数组(Array),所谓数组可以理解为一种特殊的列表,区别是列表可以包含多种数据类型的元素,而数组只能包含同一种数据类型的元素,即一个数组里的所有元素必须全部为字符串,或者全部为整数。因为英文字母的编码为ASCII,可以用字节表示。在Go中,切片是数组衍生出来的概念,两者的区别是:数组的长度是固定的,在声明一个数组时,你必须指定该数组的长度(即该数组里面有多少个元素),以及该数组里元素的数据类型。
2023-11-29 19:39:54
708
原创 Golang中rune和Byte,字符和字符串有什么不一样
Go语言中,string就是只读的采用utf8编码的字节切片(slice) 因此用len函数获取到的长度并不是字符个数,而是字节个数。for循环遍历输出的也是各个字节。rune是int32的别名,代表字符的Unicode编码,采用4个字节存储,将string转成rune就意味着任何一个字符都用4个字节来存储其unicode值,这样每次遍历的时候返回的就是unicode值,而不再是字节了,这样就可以解决乱码问题了。
2023-11-29 19:38:05
1242
原创 yii2断点查询执行sql
因此查询日志中可能包含重复的查询语句。如果要避免这种情况,可以在执行查询之前调用**$db->flushCache()当开启查询日志时,Yii2会记录所有查询语句,包括查询缓存中的语句,这个会对我们的程序优化很有作用,可以随时查询某段SQL效率。然后我又去看了yii2中的,发现也有类似的功能。
2023-03-09 21:55:02
801
1
原创 laravel 邮件发送
可以在 mailable 类的 build 方法中使用 view 方法来指定在渲染邮件内容时要使用的模板。由于每封邮件通常使用 Blade 模板 来渲染其内容,因此在构建邮件 HTML 内容时你可以使用 Blade 模板引擎提供的所有功能及享受其带来的便利性。在此方法中,可以调用各种方法,例如 from、subject、view 和 attach 来配置电子邮件的呈现和传递。有两种方法配置发件人。邮件中的每一项都在配置文件中有单独的配置项,甚至是独有的「传输方式」,允许你的应用使用不同的邮件服务发送邮件。
2023-03-04 01:24:08
1044
原创 windows10 wsl子系统固定ip启动分配网卡法
我的文件位置是D:\powershell\static_ip.bat。这个是dns,这里使用的是阿里云的dns,当然,其他dns也可以。,有可能该文件不存在,直接使用vim编辑就好了,会自动新建的。值得注意的是,在添加了网卡后,有可能存在网络不通外网的情况。向vEthernet (WSL)网卡添加一个IP。向wsl子系统网卡添加一个IP。
2023-02-26 14:13:11
2177
原创 使用PHP+yii2调用asmx服务接口
6:选择之后项目中会有一个Test.asmx服务程序,打开如下所示,如果想在一个服务中实现多个业务的方法就给多个[WebMethod]标签。在浏览器输入http://localhost:8091/Test.asmx,即可访问Test整个测试服务,如下图所示,说明服务发布成功。2.把WebROOT整个目录发布到IIS作为一个站点服务,输入网站名称,目录地址,和端口号,勾选立即启动。10:右键点击Test.asmx,选择在浏览器中查看即可看到该web服务中的方法列表。9:左侧有发布信息,如下则发布成功。
2023-02-21 11:19:48
809
原创 Ubuntu防火墙基本操作
Ubuntu使用的防火墙名为UFW(Uncomplicated Fire Wall),是一个iptable的管理工具。
2023-02-09 15:50:08
315
原创 php实现socket简单通信
为了创建Websocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”(handshaking)。这是比较正式的理解,在接下来使用方式中会在介绍到握手的实际含义。目标:我希望通过套接字的TCP传输来搭建一个服务器,这个服务器的作用是:接受多个客户端的连接并完成他们的相互通信。比如客户端A,客户端B同时连接到服务器S,客户端A向服务器S发送消息,服务器S会将A的消息转发给B,同理,B的消息也可以通过S被转发到A。这样就实现了客户端A和客户端B之间的相互通信。
2023-02-09 15:46:20
1361
原创 php外部调用非public方法--反射调用
通过反射,我们可以在运行时以逆向工程的方式对 PHP 类进行实例化,并对类中的属性和方法进行动态调用,不管这些属性和方法是否对外公开。比如将TeseService类的prTest方法设置成private。级别的属性和方法变成类以外可以访问。可以通过反射的方式将。在外部直接调用会报错。
2023-02-01 11:26:28
249
原创 laravel JWT 用户认证 实现API认证
JWT 由头部(header)、载荷(payload)与签名(signature)组成“sub”: 1,signature头部申明了加密算法;载荷中中记录了一些关键数据:iss: 签发者,也就是 package.test;iat 签发时间;exp 过期时间;nbf 在这个时间之前,该 JWT 都是不可用的,一般同签发时间 iat;jti 唯一标识符,防止重放攻击。sub 用户标识,这里是用户 ID。
2023-01-12 14:26:26
1402
1
原创 控制js,css资源加载缓存和控制版本问题
如果该字符串不改变,就算修改了最新的代码,浏览器也不会加载出最新代码,当然,使用浏览器强制刷新缓存也是可以的,但是不建议怎么做。当浏览器加载 JavaScript 文件时,如果查询字符串的。当加载 JavaScript 文件时,浏览器会。,浏览器就会认为这是一个新的文件,并将其。这样,在浏览器加载的时候,就会把这个。
2023-01-09 10:16:06
644
原创 Laravel validate验证器 返回格式修改
状态码是不通过ajax请求的,这显然不符合我们的习惯。通过查看源码,最终发现返回格式是在这里设置的。效果非常不错,这样就符合我们的请求习惯了。所以,可以在我们需要改变的地方改变它。不通过的时候,官方返回的。
2023-01-06 15:51:50
872
原创 浅聊使用PHP实现微信公众号登录
每个公众号都有对应的AppID和AppSecret,可以登录微信公众平台基本配置中的开发者ID可以查看到。当然,这对应的是生产环境,对于那些关注的人数较多的公众号来说,是不会用这个ID来进行测试的。因此,微信公众平台还提供了相应的测试账号。code=12334566778&state=abcd的页面,在该页面中code是微信返回的一串字符串,且使用一次后即失效。公众平台测试账号进入(根据不同微信号可以在同一个公众号中建立不同的测试账号)。当用户点击该链接的时候,微信会弹出授权页面,当用户确认授权后,
2022-10-10 08:53:44
2509
原创 PHP在处理一些耗时任务时的处理方式
Symfony的Process组件用于在子进程中执行命令,其原理是使用PHP的proc_open函数来运行进程。支持Windows和Linux系统。这个函数和Linux下这个函数类似。需要注意的是,这个函数在Linux下才能使用,而且需要安装。PHP是支持并发的,只是平时很少使用。创建进程需要使用php的一个函数。,Linux下有个叫fork()的函数,
2022-09-30 08:55:52
1027
原创 PHP 邮箱真实性检测
邮箱地址真实性检测接口,检查校验判断邮箱有效性,邮箱是否开通,邮箱是否真实邮箱,能否收到邮件,避免无效邮箱的发送与验证。
2022-09-19 11:49:31
1089
原创 laravel 默认登录验证密码加密方式 加入多种验证方式
打开EloquentUserProvider.php文件,将validateCredentials这个方法里的内容修改成自己想要的加密方式。首先,打开这个文件夹/vender/laravel/framework/src/illuminate/Auth。由于我从其他地方同步过来的用户,密码的加密方式是不一样的,所以就会用到多种密码验证方式。按照加密方式的特点,可以加入很多种验证方式的。...
2022-07-18 11:44:37
746
原创 Laravel composer 出现 PackageManifest.php: Undefined index: name
composer在引入库的时候出现的问题,由于版本问题,出现了这个错误,一般都是项目使用的composer版本和控制台的composer版本不对,引发的此类问题!
2022-07-15 14:08:29
989
原创 linux进程控制类命令
ps命令是用来显示系统的进程信息,它可以显示出在用户输出ps命令时系统的进程及进程的相关信息格式:ps [参数]显示本用户的进程查看系统和每个用户的全部进程功能:该命令用于向某个进程(通过PID标识)传送一个信号,它通常与ps和iobs命令一起使用kill命令的格式是:kill -signal PID常用参数:功能:使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程用法:killall [参数] 正在运行的进程名...
2022-07-05 08:47:13
268
原创 zabbix item监控项的基本配置
1.zabbix agent(zabbix客户端):需要在要探测的主机上安装zabbix-anget,默认是被动式2.zabbix active(zabbix主动式):通过zabbix active进行获取数据3.简单检查:用于不支持安装客户端或者不支持其他相关协议的情况下,使用的一种技术4.snmpv1,snmpv2.snmpv3:简单的网络管理协议,主要用于探测那些支持snmp协议的设备,常见的有可网管交换机,路由器,防火墙等网络设备,还有网络打印机,复印件。相当于zabbix passive模式
2022-06-27 08:20:53
594
原创 nginx配置详解
文件识别nginx是不认识后缀的,它只会认识在这个mime.types里面指定的文件后缀,比如说什么文件在线预览,什么文件去下载但是nginx有一个默认的指定的文件后缀保存连接,最大连接时间server模块端口域名 主机名路由自定义错误页面...
2022-06-14 14:38:33
413
原创 nginx-负载均衡
负载均衡写在轮询weight(权重)指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况ip_hash根据客户端的ip地址转发同一台服务器,可以保持回话
2022-06-13 08:44:12
187
原创 redis的缓存穿透和缓存击穿和缓存雪崩
这是一个站点查询的数据流程或者可以这样理解总得来说,产生缓存穿透的原因解决方案1.对空值缓存2.设置可访问的名单(白名单)3.采用布隆过滤器key可能会在某些时间点被超高并发地访问,是一种非常热点的数据。这个时候,需要考虑一个问题:缓存被击穿问题出现的原因缓存击穿解决方案1.提前设置热门数据2.实时调整:3.使用锁缓存雪崩与缓存击穿的区别解决方案1.构建多级缓存架构2.使用锁或队列3.设置过期标志更新缓存4.将缓存失效时间分散开
2022-06-02 08:41:56
137
原创 redis的读写分离和主机宕机
主写从读,读写分离主:只允许写操作从:只允许读操作主机宕机,从机原地待命主机宕机后,他的从机的状态会变成未启用,因为它要等他的老大,也就是主机正常运行后,它才工作模拟一下关闭主机的服务redis-cli -h 127.0.0.1 -p 6379 shutdown查看其它从机的主从角色从机一从机二从机宕机,主机少一个从机,其它从机不变模拟一下首先关闭一个从机 redis-cli -h 127.0.0.1 -p 6380 shutdown主机当前的角色本来有两个从
2022-05-31 09:13:43
444
原创 redis的主从复制
主从复制主机数据更新后根据配置和策略,自动同步到从机的master/slave机制,master以写为主,slave以读为主redis的主从复制:主少从多,主写分离,主写从读, 主写同步复制到从搭建一主二从redis集群搭建三台redis服务:使用一个人Redis模拟三台redis服务(正常是一台机器一个redis服务)修改三份配置文件:redis6379.conf,redis6380.conf,redis6381.conf每一个配置文件需要修改的地方:bind 127.0.0.1po
2022-05-31 08:00:32
205
原创 redis中的事务操作
事务把一组数据库命令放在一起执行,保证操作原子性,要么同时成功,要么同时失败允许把一组redis命令放在一起,把命令序列化,然后一起执行,保证部分原子性multi:用来标记一个事务的开始例如multiset k1 v1 set k2 v2这样子就会把命令放到队列中等待执行exec:用来执行事务队列中的命令exec //相当于mysql中的提交redis事务只能保证部分原子性如果一组命令中,有在压入事务队列过程中发生错误的命令,则在本事务中所有的命令都不执行,能够保证事务的
2022-05-27 09:05:56
218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅