- 博客(80)
- 资源 (7)
- 问答 (2)
- 收藏
- 关注
原创 go binary 实现简单的序列化和反序列化
先看一个简单的例子,在计算机中是有大端序和小端序之分的,大端序就是大家正常的阅读习惯,比如 "今天你吃了吗",而小端序是计算机喜欢的阅读习惯比如刚才那句话,计算机用小端序就是 "吗了吃你天今"。小端序的好处就是计算机处理的更快,当然坏处就是人看起来难受,所以计算机底层的核心逻辑以外,大部分还是选择了大端序,毕竟这样排bug更方便一些。一,go的大端序和小端序。二,序列化与反序列化实现。
2022-12-08 23:59:45
841
原创 Go cobra 库学习
其实简单的来说,cobra就是一个自定义命令工具,我们经常使用一些命令来构建项目,但是这些命令都是go自带的,你想写自己的命令就可以使用cobra库来试一试。二,简单的cobra项目先构建一个简单的cobra命令,以此来熟悉cobra是怎么用的创建一个cmd目录,在目录里创建一个myOrder.go,实际上这个名字可以随便命名,一般来说,你创建的啥命令就写啥名字,这不是为了好找么。然后在main.go 入口里运行Execute即可main.go ↓cobraTest是这个项目的名字,c
2022-12-05 14:16:59
2425
原创 go 实现数字字母交替打印并优雅关闭channel
这个效果其实有很多种写法,现在选取一个简单的写法,通常的写法是让两个协程交替打印,用chan来阻塞通知,但是由于大部分的demo都没有考虑优雅退出的问题,这次的demo添加了一个stopCha来优雅退出并close通道。
2022-11-19 23:20:08
959
原创 go分布式锁的一个简单实现
第二,A服务按理说只能去掉自己的服务加上的锁,如果不止是有AB两个服务,有更多的服务,那么A如果出现处理较慢,锁超时后,B服务抢到锁,A又处理完成所有的事释放了锁,那其实是释放掉了B的锁。也就是说,释放锁的时候也必须判断是否是自己的锁。第一,当A服务(本案例中其实是协程模拟的)拿到锁之后,处理超时了,锁还没有释放,就已经过期,过期后B服务就抢到了锁,此时AB均认为自己拿到了锁。但是这种锁只能用于你自己的本地服务,一旦出现多服务,比如分布式,微服务,这样的场景,这个锁就没啥用了,这就需要分布式锁。
2022-09-15 19:09:32
796
原创 Go+redis实现简单的抽奖系统
redis的集合是 无序、不重复的集合,如果一个抽奖系统只需要简单的从一堆数据里抽出一部分,那么redis就可以简单的实现。主要用到了SPOP(随机移除并返回集合中一个或多个元素) 和 SRANDMEMBER(随机返回集合中一个或多个元素)
2022-09-11 16:59:19
594
原创 go实现N个协程交替顺序打印自然数的详细解释
如果某一个协程发现打印的数字超过了设定的数字,这时候就会通知下一个协程close信号,然后下一个协程再通知下下个协程close,最后返回给主协程,类似计算机网络中的 环状网络。这里主要是形成一个闭环,每一个协程要打印的时机和数字是来自上一个协程的控制,最终有主协程(类似主持人角色)把最后一个协程的信号转发给第一个协程,从而形成闭环。如果我们每一个协程都生成一个管道,通知下一个协程什么时候能打印,打印哪个数字,这个问题就非常好解了。nextChannel(第一个协程生成)放入firstChannel。
2022-09-04 12:00:28
1275
原创 windows下安装protocol buffer
在安装grpc的时候,需要安装一个工具 protocol buffer,大多数教程给出的是linux下的安装,在此记录一下windows下的安装Protocol Buffers (Protobuf) 是一个免费的Google研发的开源跨平台库,用于序列化结构数据的一个协议。它在服务进行网络通信或存储数据时很有用,典型应用之一就是微服务。...
2022-08-31 00:42:07
821
转载 mysql 证明为什么用limit时,offset很大会影响性能
id为自增主键,val为非唯一索引。时间相差很明显。为什么会出现上面的结果?我们看一下类似于下面这张图:像上面这样,需要查询300005次索引节点,查询300005次聚簇索引的数据,最后再将结果过滤掉前300000条,取出最后5条。MySQL耗费了大量随机I/O在查询聚簇索引的数据上,而有300000次随机I/O查询到的数据是不会出现在结果集当中的。肯定会有人问:既然一开始是利用索引的,为什么不先沿着索引叶子节点查询到最后需要的5个节点,然后再去聚簇索引中查询实际数据。
2022-08-22 15:42:55
312
原创 php内核学习笔记(一,运行方式)
一、用户代码的执行当用户代码输入给PHP内核去执行的时候,PHP内核会对PHP代码进行词法分析和语法分析,词法分析是把PHP代码分割成一个个的“单元”(TOKEN),语法分析则将这些“单元”转化为Zend Engine可执行的操作。然后PHP内部的Zend Engine对这些操作进行顺次的执行。Zend Engine是PHP内核的核心部分,负责最终操作的执行和结果的返回,可以理解成为PHP内核中的“发动机”。于是PHP代码的执行过程可以简单描述为下图:二、SAPI接口Server App
2022-05-14 17:27:05
608
转载 FastCGI协议
FastCGI 简介FastCGI是Web服务器和处理程序之间通信的一种协议,是CGI的一种改进方案,FastCGI像是一个常驻(long-lived)型的CGI,它可以一直执行,在请求到达时不会花费时间去fork一个进程来处理(这是CGI最为人诟病的fork-and-execute模式)。正是因为他只是一个通信协议,它还支持分布式的运算,所以 FastCGI 程序可以在网站服务器以外的主机上执行,并且可以接受来自其它网站服务器的请求。FastCGI 是与语言无关的、可伸缩架构的 CGI 开放扩展,
2022-05-14 17:11:22
1551
原创 begoo处理json
begoo(1.12版本)没有现成的json处理方式,需要自己手动处理1,ctx获取requestBody里面的内容2,json.Unmarshal解析jsonpackage mainimport ( "encoding/json" "fmt" "github.com/astaxie/beego")type TaskController struct { beego.Controller}func (c *TaskController) Json() { // 读取re
2022-02-22 10:25:23
205
原创 windows10下GO的beego之bee 工具安装
安装beego的bee工具需要先配置环境变量第一步:配置用户环境变量 GOPATH,GOROOT,GOBIN如果不清楚自己的go安装在哪里,可以在cmd中使用 go env来查看GOROOT就是go的安装路径GOPATH:go install/go get和 go的工具等会用到GOPATH环境变量.GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径 (其实也是你的工作目录, 你可以在src下创建你自己的go源文件, 然后开始工作)。第二步:配置
2022-02-10 18:49:30
3546
原创 golang猜数字 100以内随机数
func main(){ guessNum(58)}/**猜数字 */func guessNum(insertNum int) { temp := 0 n := 0 for { temp = randNum(int64(n)) n++ if (temp != insertNum) { println("Not equal,Now is ",temp) } else { println("Equal! Now is",temp) break } }.
2021-11-22 15:12:07
371
原创 golang随机数,100以内随机数
我服了,网上找个资料哪来那么多废话,我只是要个能用随机数而已func main(){ fmt.Println(randNum())}/**任意数字*/func randNum() int{ // 取当前时间戳 var timeStamp = time.Now().Unix() // 构造一个rand,并使用时间戳作为他的随机种子 r := rand.New(rand.NewSource(timeStamp)) // 取100以内的随机数 num := r.I
2021-11-22 14:27:56
1306
原创 c++ 冒泡排序
#include<iostream>using namespace std;int main() { // 数组排序 int arr[10]; // 随机生成10个数 srand(time(NULL)); cout << "当前数组为:"; for (int i = 0; i < 9; i++) { arr[i] = rand(); cout << arr[i]<<","; } cout << end...
2021-10-06 15:55:03
111
原创 c++ 九九乘法表
#include<iostream>#include<string>using namespace std;int main(){ string black_space = ""; for (int i = 1; i < 10; i++) { cout << "| "; for (int j = 1; j < 10; j++) { if ( i>=j ) { if (i * j < 10) { blac.
2021-09-30 15:32:28
1626
原创 c++ 水仙花数
#include<iostream>using namespace std;int main() { cout << "水仙花" << endl; int n = 100; int a = 0; int b = 0; int c = 0; do { a = n % 10; b = n / 10 % 10; c = n / 100; if ((a * a ...
2021-09-30 11:38:15
353
原创 php代码复用 trait 的一些要点
php不能多继承,只能多层继承,但是php5.4版本后为了解耦,也提供了另一种代码复用方法trait。trait的一些关键点需要注意1,trait怎么使用trait的使用方法就是用trait构建一个类trait firstClass { function test(){ echo 'first'; }}class sonClass extends fatherClass { use firstClass;}$obj = new sonCl
2021-08-06 10:54:11
273
原创 无需修改composer.json更换自动加载路径
近日遇到一个问题,一个服务想要接入一套系统,生产环境下的目录和开发环境的目录是不同的,假设开发环境是 【根目录/application/config】,生产环境是【根目录】
2021-05-31 14:20:14
351
2
原创 sourcetree拉取git时候出错“Too many authentication failures for git“ fatal: Could not read from remote repo
sourcetree报错"Too many authentication failures for git" fatal: Could not read from remote repository.使用git pull命令会报 Already up to date.解决方案:
2021-04-06 09:50:33
605
原创 windows10下docker运行xxl-job 2.3.0
1,安装docker(废话)2,需要拉取两个镜像,mysql 和 xxl-job,推荐使用指定版本,xxl-job的版本低版本的sql表和springboot的连接mysql的方式和高本版都有区别,所以要指定版本号docker pull xuxueli/xxl-job-admin:2.3.0docker pull mysql:5.7.283,启动mysqldocker run -p 【宿主机ip】: 【容器暴露的ip】 --name 【容器的名字】-e MYSQL_ROOT_PAS.
2021-03-29 14:45:58
1176
原创 springboot2.1.5.RELEASE构建项目时候报错Failure to find org.eclipse.m2e:lifecycle-mapping:pom:1.0.0
原因不知道,更高版本的时候没有发现,反正就是一个包搞不下来了到github上下载https://github.com/mfriedenhagen/dummy-lifecycle-mapping-plugin 随便解压一个目录,进入目录后,打开cmd窗口,定位到这个目录,执行mvn clean install这时候还会报错,[ERROR] 不再支持源选项 5。请使用 7 或更高版本。这时候要修改刚才的pom文件,加入版本<properties>...
2021-03-02 19:32:33
325
原创 wsl安装mysql8,nginx,php7.4,顺便安装下swoole
首先,wsl 的目录在C:\Users\kina100\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs因为wsl是挂载在win系统上的,如果出了什么不好改的问题,可以直接去根目录操作,回头改下权限就行了修改源sudo cp /etc/apt/sources.list /etc/apt/sources.list.baksudo vim /etc/apt/sourc
2021-01-18 13:54:48
505
原创 windows10上使用wsl安装redis并安装php扩展
首先,你要让你的电脑上的windows10升级到2004版本以上,这样可以支持wsl2然后,你要在Microsoft store 安装Ubuntu打开ubuntu,开始安装redis1, 安装gcc编译sudo apt-get install gcc2,安装redis不同版本的redis 下载地址https://download.redis.io/releases/这里找一个php能支持的比较新的版本的redis 5.0.2wget https://dow...
2020-12-02 11:07:38
664
原创 laravel 7 报错 file_put_contents() failed to open stream: Permission denied for Session folder
这个问题是因为权限导致的,laravel因为本身太重了,导致需要搞文件缓存,这时候写入缓存的file_put_contents函数发现在storage文件夹下没有权限,那给他权限,并清除缓存chmod -R gu+w storagechmod -R guo+w storagephp artisan cache:clearg是组权限,u是当前用户权限,o是其他用户权限,+w是增加写权限...
2020-11-29 15:06:34
656
原创 laravel 7 报错 The stream or file “/var/www/storage/logs/laravel.log“ could not be opened in append
laravel项目部署到linux的时候出现The stream or file "/home/www/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied网上的各种教程都是要修改文件夹权限,实际上文件夹权限早就是777了,这时候还有一些centos系统会装SElinux的东西,这是个安全组件,具体就不多说了,现在临时关闭一下SELINUX.
2020-11-29 14:55:31
9607
2
原创 git提交整个代码到服务器的空仓库报错error: failed to push some refs to
从github上clone了一个laravel,写了一些代码后,想上传到另一个服务器,但是在push的时候报错error: failed to push some refs to解决方案是:1,删除git clone的时候留下的 .git 文件夹(目录),windows上看不到的可以打开显示隐藏项目2,git init 直接初始化仓库3,git add . 注意后面的 点 这个符号4,git commit -m "随便写点啥"5,git push -f origin mas...
2020-11-29 12:54:58
550
原创 git 使用代理访问github与删除代理
查看本地的代理端口设置代理,注意,https的端口,前面加上httpsgit config --global http.proxy http://127.0.0.1:10809git config --global https.proxy https://127.0.0.1:10809mypc@DESKTOP-51C5OC3 MINGW64 /c/work/mooc (master)$ git config --global http.proxy http://127....
2020-11-29 11:29:35
1046
原创 php面试常规问题主键索引和唯一索引有什么区别
主键一定是唯一性索引,唯一性索引并不一定主键。主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。主键创建后一定包含一个唯一性索 引,唯一性索引并不一定就是主键。唯一性索引列允许空值,而主键列不允许为空值。主键列在创建 时,已经默认为空值 + 唯一索引了。主键可以被其他表引用为外键,而唯一索引不能。一个表最多只能 创建一个主键,但可以创建多个唯一索引。主键更适合那些不容易更改的唯一标识,如自动递增列、身 份证号等。在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。
2020-11-26 23:03:07
6695
原创 php判断来源是否是蜘蛛
/** * 判断是否是蜘蛛 */function fromRobot($except = '') { $ua = strtolower ( $_SERVER ['HTTP_USER_AGENT'] ); $botchar = "/(baidu|google|spider|soso|yahoo|sohu-search|yodao|robozilla|AhrefsBot)/i"; $except ? $botchar = str_replace ( $except . '|', '',.
2020-11-25 20:12:51
865
原创 mysql的innodb快速count技巧
mysql的innodb因为使用的是聚簇索引,导致count的时候按照索引count,会把聚簇索引里面的数据一起扫描了,导致count起来非常慢,30w的数据,做一次count(*)竟然高达30多秒。经过网上查询看到一个大佬的测试https://imysql.cn/2008_06_24_speedup_innodb_count发现一个技巧,可以额外创建一个字段,字段和主键ID数据一致,然后对该字段建索引,然后再使用count,这样速度就飞起了...
2020-11-21 17:39:47
848
原创 git 在linux部署并从windows上提交代码到linux
默认windows和linux上的git已经安装好了一,建立linux仓库假如我的仓库在 /home/myhub目录下cd /home/myhubgit init --bare myhub.git //这里 git init 是初始化空仓库的意思,而参数 --bare 是代表创建裸仓库,这个参数一定记得带上二,从远程仓库直接克隆git clone git@192.168.56.102:/home/myhub/myhub.git myproject解释:git cl.
2020-11-07 00:58:21
571
1
原创 centos 7 防火墙配置
每次用的时候都要搜一遍,这次做个笔记好了1、查看firewall服务状态systemctl status firewalld2、查看firewall的状态firewall-cmd --state3、开启、重启、关闭、firewalld.service服务# 开启service firewalld start# 重启service firewalld restart# 关闭service firewalld stop4、查看防火墙规则firew..
2020-10-28 16:33:05
112
原创 virtualbox centos7 安装增强功能时报错【未能加载虚拟光盘】非图形界面下的解决方案
报错如图在安装增强功能的时候,无论如何都一直报未能加载虚拟光盘,在网上找了好多教程,都是有图形界面的,恰恰我这个没有图形界面,然后再sf论坛上找到一个差不多的,但是他说的也很含糊,倒是指明一个方向第一,把这个iso文件装载到windows里面第二步,挂载lsscsi 命令查看下linux可以看到 /dev/sr0 出现了证明光驱已经出现了在media目录下建立一个新的目录用于挂载你的iso文件,这个目录可以随便命名,我就取个名字叫cdpath建立文件夹...
2020-10-27 22:36:35
4038
4
原创 centos7 下nginx报403错误的处理记录,如何修改selinux使其正常
nginx刚装好,因为配置文件里面设置的网站根目录是自己在/home下的www目录,所以访问的时候直接报403猜测一:权限问题,整个文件夹改成了755,然后又改成777,还是不行猜测二:nginx的运行用户组权限不够ps -aux | grep nginx发现用户是nginx,然后去配置文件(nginx的配置文件)修改,把用户改成了root,重启nginx,发现还是403那就应该不是nginx的配置问题猜测三:SELinux问题,这个问题就是linux的一个安全...
2020-10-27 15:51:02
3828
原创 nginx指定配置文件启动
第一步:先关闭nginx, kill掉所有的nginx进程pkill -9 nginx# 运行命令参看nginx服务是否关闭netstat -tnulp | grep nginx # 参看端口是否关闭systemctl status nginx # 查看服务是否关闭第二步:指定nginx的启动配置文件,要写完整路径nginx -c -t /etc/nginx/nginx.conf # 配置文件路径# -c </path/to/config> 为 Nginx 指.
2020-10-26 18:38:11
21424
2
转载 【转载】Centos7.7 yum安装LNMP nginx1.18.0+php7.4.6
安装nginx 设置nginx安装源 可根据官网给出的进行设置点我跳转到官网设置这里将官网给出的centos的配置复制如下[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfi.
2020-10-26 18:12:58
470
1
机器学习 深度学习背后的数学知识
2023-03-11
《Scientific Visualization: Python + Matplo》科学可视化:Python 和 Matplo
2023-03-11
doubanmovie250top.rar
2020-08-11
ImageMagick-6.9.3-7-Q16-x64-dll.exe dll版本,q16是十六位
2017-10-13
ImageMagick-6.9.3-7-Q16-x86-dll.exe
2017-10-13
ImageMagick-6.9.3-7-Q16-HDRI-x64-dll.exe
2017-10-13
win10下的nginx+php做的socket访问一直超时
2019-03-07
PHP的Notice: Undefined variable: _post错误如何处理?
2016-10-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人