- 博客(75)
- 资源 (6)
- 收藏
- 关注
原创 DNS服务器解析故障处理记录之arp_cache neighbor table overflow
过一段时间后 dig 恢复正常,dns 服务在故障过程中并没有重启过,我怀疑是公网网络出了问题,不是 dns 服务程序本身的问题。所以提出再出现故障,上服务器 dig 127.0.0.1 看解析是否正常。没想当晚问题马上又来了,立刻上服务器 dig,本以为自信认为不会出任何问题的,结果打脸了,心里瞬间慌了。现象是,dig 执行后没有很快的响应,等待了一下手输出,并且在正常的信息前报了两个错误:查看内核日志查看当前 arp 记录数查看 arp gc 阀值。
2023-04-08 13:52:49
1011
原创 为什么要写单测
在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类、抽象类、或者派生类中的方法。”摘录来自维基百科单元测试(Unit Testing)顾名思义就是测试一个单元,这里的单元通常指一个函数或类,区别于集成测试中的模块和系统。集成测试的测试过程通常存在跨系统模块的调用,是一种端到端的测试;
2022-11-17 09:22:41
1358
原创 Gorm乐观锁optimistic lock
概念悲观锁悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。乐观锁乐观锁(Optimistic Lock),顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。乐观锁适用于读多写少的应用场景,这样可以提高吞吐量。实现机制
2022-03-03 23:41:24
5264
原创 fish在jetbrasins全家桶中失效
在terminal设置中把shell path设置成fish后,插件并没有生效解决方法:把terminal的Shell integration勾去掉参考:https://stackoverflow.com/questions/46609023/intellijs-embedded-terminal-does-not-load-fish-functions/57489688#57489688...
2022-01-28 19:22:45
711
原创 fish设置环境变量
bash我们设置环境变量是在/etc/profile.d下面,今天常识了一下fish发现环境变量不生效,于是研究了一下,这里来记录一下几个解决方案。默认交互不设置成fish,在~/.bashrc中添加一下代码,这种方式启动对原来的脚步不需要做改动if [[ $(ps --no-header --pid=$PPID --format=cmd) != "fish" ]]then exec fishfi在这两个地方任意地方添加环境变量脚步/etc/fish/conf.d/~/.c
2022-01-28 19:03:09
6471
1
原创 ohmyfish主题添加执行时间和当前时间
没事倒腾了一下fish,习惯了ohmyzsh默认主题robbyrussell,并且自己添加执行时间和当前时间,所以ohmyfish这边也想一致。在主题目录下添加文件fish_right_prompt.fish文件中写入一下代码:function fish_right_prompt set -l S (math $CMD_DURATION/1000) set -l M (math $S/60) set_color red echo "(" if test $M -gt 1 .
2022-01-28 15:32:42
1028
原创 CoreFoundation/CoreFoundation.h‘ file not found 解决方法
换了电脑通过迁移助手直接回复工作环境,所有东西都没有异常,但是今天跑单测的时候报错看来转移开发环境还是不能完整转移啊。解决方法就是重新安装Xcode command line tools备份Xcode command line toolssudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools_bak其实我在这一步后系统就提示我git需要xcode了,点击安装就完事,环境就好了。重
2021-12-28 17:43:56
1521
原创 mysql索引合并
一般情况下mysql只扫描一个索引查询数据。但还存在特殊情况会使用多个索引来查询数据,这个执行方法称为索引合并(index merge)。intersection 索引合并intersection中文就是交集的意思。就是把不同索引中扫描到主键值取交集然后回表操作。union 索引合并union中文就是并集的意思。把不同索引扫描到的主键求并集后执行回表操作。sort-union 索引合并前面两个合并方式都有个要求,就是要求扫描的索引记录都是按照主键值排序的。在扫描集中没有按照主键排序的
2021-07-31 00:07:08
248
原创 golang runtime.GOMAXPROCS(1) 协程执行打印顺序
package mainimport ( "fmt" "runtime" "sync" "time")func main() { runtime.GOMAXPROCS(1) var wg sync.WaitGroup wg.Add(10) for i := 0; i < 10; i++ { go func(i int) { fmt.Println(i) wg.Done() }(i) } // 1.14之前加上该行打印从0开始,之后版本则不影响 /
2021-07-22 12:50:14
501
原创 golang抢占调度协程阻塞部分场景
1.14版本引入了信号量抢占,在此之前抢占调度是通过栈增长来实现,但是有些场景下并不能成功的抢占,我们来了解一下。只有一个P,空循环导致无法抢占package mainimport ( "runtime")func main() { runtime.GOMAXPROCS(1) go func() { panic("already call") }() for { }}这个例子中在1.14之前会阻塞,这个例子讲解抢占调
2021-07-19 00:06:41
604
原创 chrome稍后阅读功能
chrome89更新了一个阅读清单,在标签栏右键添加标签到清单即可,如果你更新之后没有在标签栏看到阅读清单,到chrome://flags/开启Reading List即可。在此前这项功能都是通过扩展来实现的。我这里主要就是记录一下我之前使用过体验很好的一款扩展叫做阅读列表,该扩展直接在网页中任何地方右键就可以添加到阅读列表,并且也实现了多设备同步。扩展地址:https://chrome.google.com/webstore/detail/reading-list/lloccabjgblebdmncj
2021-03-24 16:17:01
499
原创 MYSQL提交一批ID,查询数据库中不存在的ID并返回
背景:给你几个ID,返回A表中不存在的ID? 例如提交1,2,8,9 返回8,9select B.id from ( select 1 as id from dual union select 2 as id from dual union select 8 as id from dual union select 9 as id from dual) Bleft join Aon A.id = B.idwhere A.id is n
2021-03-17 14:20:38
2267
原创 golang获取指定目录下的所有文件,包含子目录下的文件
func GetAllFiles(dirPth string) (files []string, err error) { var dirs []string dir, err := ioutil.ReadDir(path.Clean(dirPth)) if err != nil { return nil, err } for _, fi := range dir { _path := path.Join(dirPth, fi.Name()) if fi.IsDir() {
2021-03-15 17:54:29
1797
原创 PHP __get魔术方法在empty方法中不会被调用
/** * 在开发小程序接口的时候,小程序发送的数据是 application/json * $_POST是无法接收到的,就得使用 file_get_content("php://input") * 同事是直接收到数据后开始使用 */$input = file_get_contents("php://input");$this->rubble = json_decode($i...
2020-11-18 23:38:06
450
原创 gomod拉取依赖invalid version: version “branch“ invalid: disallowed version string
同事通过branch拉取公司私有包的时候报错invalid version: version "branch" invalid: disallowed version string,但是在我的机器上却没有这个错误,所以做一下排查记录。同事通过feature/xxxx拉取依赖时报错invalid version: version "branch" invalid: disallowed version string,我提出了通过commit号拉取解决。...
2020-11-18 21:34:16
8826
原创 Windows安装zsh(非wsl)
Windows安装zsh在mac和linux下体验过zsh+ohmyzsh的爽快后就一直在想给Windows下也装上。当然最简单的方式就是使用wsl安装,不过由于各种原因,我放弃了wsl,而是选择使用的MSYS2MSYS2安装下载MSYS2 https://www.msys2.org/ 或者 http://repo.msys2.org/distrib/根据提示安装即可修改home目录为Windows home目录修改/etc/nsswitch.confdb_home: windows安
2020-09-05 21:06:04
4732
2
原创 Windows安装gcc环境
打开地址 https://sourceforge.net/projects/mingw-w64/找到Files,下来找到看到下图的地方,选着合适的版本下载,解压后把bin目录加入环境变量即可。我选择的是x86_64-win32-seh。也可以下载installer安装,不过installer的下载过程特别慢,网络好的可以试试。...
2020-09-03 22:50:17
2757
原创 基于ECS搭建云上博客(实践记录)
环境部署安装 Apache HTTP 服务Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。执行如下命令,安装Apache服务及其扩展包。yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql返回类似如下图结果则表示安装成功。执行如下命令,启动Apache服务。systemctl start htt
2020-06-03 23:48:14
617
原创 oh-my-zsh 主题添加命令显示执行时间和当前时间
oh-my-zsh显示执行时间进入主题目录~/.oh-my-zsh/themes在想要修改的主题文件中添加如下代码:function preexec() { timer=${timer:-$SECONDS}}function precmd() { if [ $timer ]; then timer_show=$(($SECONDS - $timer)) if [[ $timer_show -ge $min_show_time ]]; then RPROMPT=
2020-05-25 15:32:53
5716
1
原创 golang指针接收者和值接收者方法调用笔记
初学go时很多同学会把 值接收者 和 指针接收者 的方法相互调用搞混淆,好多同学都只记得指针类型可以调用值接收者方法和指针接收者方法,而值类型只能调用值接收者方法,其实不然,在某些情况下,值类型也是可以调用指针接收者方法的。最近又看到有同学发出了这样的疑问,所以打算记录一下,用以备忘、分享。类型不同可以调用package mainimport ( "fmt")type field struct { name string}func (p *field) pointerMetho.
2020-05-21 16:19:55
1021
2
原创 golang结构体嵌套json序列化丢失
package mainimport ( "encoding/json" "fmt")type Tmsg struct { ID int `json:"id"` Message string `json:"message"`}func (me Tmsg) MarshalJSON() ([]byte, error) { type Alias Tmsg return json.Marshal(&struct { Message string `json:"
2020-05-20 21:25:31
1935
原创 golang range遍历问题笔记
例1:package mainimport ( "fmt" "time")func main() { data := []string{"one","two","three"} for _,v := range data { go func() { fmt.Println(v) }() } time.Sleep(3 * time.Second) //goroutines p
2020-05-20 12:42:44
414
原创 php pathinfo \ basename解析带中文路径时不正确
pathinfo \ basename解析带中文路径时不正确$p1 = pathinfo('atlas/这是文件夹/可爱胖胖是怎么变帅的#超能陆战队.mp4');$p2 = pathinfo('atlas/dirname/sssss#ddddd.mp4');print_r($p1);print_r($p2);上面的代码直接结果中看到中文的路径解析的时候basename和filena...
2020-04-28 17:29:03
1003
原创 Systemd 部署应用
配置说明[Unit]Description=appNameConditionPathExists=/data/app[Service]Restart=alwaysRestartSec=3WorkingDirectory=/data/appExecStart=/data/app/mainExecStop=/usr/bin/kill $MAINPIDExecReload=/dat...
2020-04-03 16:03:37
656
原创 Golang获取重定向信息
环境go1.13.5分析平时我们通过标准库net/http发起http请求后如果遇到重定向后会继续发起请求得到最后的想应返回给我们。但是当我们需要获取重定向的相关信息的时候怎么办呢?我们是通过Do方法发起的请求,那我们可以从这里入手。打开源码可以看到如下注释:If the server replies with a redirect, the Client first uses ...
2020-04-03 15:49:30
2938
原创 一次Linux ACL权限的了解
起因服务器上有个文件需要通过PHP程序来删除,但是生成文件的程序并不是和PHP是同一个权限用户,也不在同一个组里。写好PHP代码后,直接测试,满怀期待的得到一个权限报错,但没有想到的是文件被正常删除了,并没有报错。遂直接上服务器上用PHP的用户身份尝试确实能正常删除。通过ll命令查看确认不是PHP所在的用户权限。如上图,我们PHP是www-data用户组,为什么可以删除root下的文件呢?...
2020-03-13 14:53:26
151
原创 yum源中$releasever不能被系统识别
服务器yum操作报错http://mirrors.cloud.aliyuncs.com/centos/%24releasever/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found$releasever变量没有被系统识别,查看rpm -q centos-release,结果package centos-re...
2019-12-14 23:42:13
5410
1
原创 安装PHP SQL server 驱动
可以直接进行第三步安装sqlsrv扩展,观察是否可以直接连接安装freetdscd /usr/local/srcwget ftp://ftp.freetds.org/pub/freetds/current/freetds-current.tar.gztar -zxvf freetds-current.tar.gzcd freetds-dev.1.1.50/./configure...
2019-10-15 21:31:01
989
原创 zsh安装、使用
安装zsh查看系统有几种shellcat /etc/shells安装zshyum install zsh设置当前用户使用zshchsh -s /bin/zsh安装oh-my-zshcurl安装sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/...
2019-10-15 21:14:36
874
1
原创 PHP多版本共存安装配置
安装安装,修改php-fpm监听端口可以参考这篇文章阿里云 centos7.6 安装 php7.3安装完成后,修改nginx配置文件中fastcgi_pass端口为刚配置的端口启动php-fmp找到 PHP5.6 的服务脚本/etc/init.d/php-fpm#复制一份:cp /etc/init.d/php-fpm /etc/init.d/php7#编辑修改:vim /etc/...
2019-06-11 13:05:26
1489
原创 视频相识度算法思路文献记录
项目需要做一个判断视频是否相同功能,Google一番,收集了下相关的文章,这里做下记录,方便以后查阅先对两个文件音频视频采样,视频各取一定数量的帧,音频截取一定长度的数据,分别提取特征,计算相关值,设定门限,进行判定这是来自群友动心忍性大道至简提供的思路语音相识度文本、语音相似度算法: https://www.jianshu.com/p/ea5876301130simhash算法原理...
2019-05-17 10:46:21
960
原创 CentOS安装FFmpeg
安装FFmpeg到官网下载安装包 https://ffmpeg.org/releases/ffmpeg-4.1.3.tar.bz2并解压wget https://ffmpeg.org/releases/ffmpeg-4.1.3.tar.bz2tar jxvf ffmpeg-4.1.3.tar.bz2安装ffmpegcd ffmpeg-4.1.3./configuremak...
2019-05-16 17:04:35
1360
原创 Windows安装gRPC
安装ProtoBuff到https://github.com/google/protobuf/releases下载protoc-3.7.1-win64.zip解压,把解压文件夹里的bin目录配置环境变量Path ,或者把bin目录下的protoc.exe 放入 GOPATH\bin`中测试安装结果$ protoc --versionlibprotoc 3.7.1安装Protoc...
2019-05-14 23:12:39
2767
原创 CentOS安装gRPC
系统环境cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core) 安装gRPCgo get -u google.golang.org/grpcProtocol Buffers依赖安装yum install -y gcc-c++ autoconf libtoolyum groupinstall -y "Develop...
2019-05-14 20:13:28
2170
原创 Supervisord部署Go应用
SupervisordSupervisord 是用 Python 实现的一款非常实用的进程管理工具,supervisord 还要求管理的程序是非 daemon 程序,supervisord 会帮你把它转成 daemon 程序,因此如果用 supervisord 来管理 nginx 的话,必须在 nginx 的配置文件里添加一行设置 daemon off 让 nginx 以非 daemon 方式...
2019-04-28 17:18:17
1316
原创 jetbrains家编辑器的快捷键
CTRL+F,查找文本CTRL+E,打开最近浏览过的文件CTRL+X,剪切当前光标所在行CTRL+Y,删除当前光标所在行CTRL+ALT+L,格式化代码CTRL+“+/-”,可以将当前方法进行展开或折叠Alt+上 文件上移视图Alt+shift+上 移动光标所在行代码查找类型接口 Ctrl + N查找文件 Ctrl+Shift+N全局搜索 双击Shiftctrl + sh...
2019-04-12 17:02:06
253
原创 top命令 查看php-fpm占用情况
使用top只查看php-fpm进程占用情况top -p `pidof php-fpm | sed 's/[[:space:]]/,/g'`输入如下
2019-04-12 13:15:22
1373
基于jq地区三级联动。。。
2018-09-11
php压缩文件xxxxxxxxxxx
2018-08-30
chrome 缺少chrome-elf.dll文件
2018-08-30
jq懒加载文件.......
2018-08-13
jQuery 异步上传文件ajaxfileupload.js
2018-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人