技术
-
begin或 start transaction 都是显式开启一个事务;
文章 更新时间:
begin或 start transaction 都是显式开启一个事务; begin或 start transaction 都是显式开启一个事务;
-
使用开源代码一定要小心,其实这里还有一个非隐秘的问题,就是开源代码也不上传node_module, 但是自己写了一个npm模块,然后在package.json里
文章 更新时间:
使用开源代码一定要小心,其实这里还有一个非隐秘的问题,就是开源代码也不上传nodemodule, 但是自己写了一个npm模块,然后在package.json里 使用开源代码一定要小心,其实这里还有一个非隐秘的问题,就是开源代码也不上传nodemodule, 但是自己写了一个npm模块,然后在package.json里引
-
平滑加权轮询算法!
文章 更新时间:
平滑加权轮询算法! 平滑加权轮询算法! 主要是 构造出 动态加权. curr + wei | max() | index | max()sum(wei) https://www.bilibili.com/video/BV1FP4y1A73z [](https://cf.maocaoying.com/images/202
-
对于Serverless的定义,文章给出来一个公式:Serverless = FAAS+ BAAS。将FAAS(Functions as a Service)定
文章 更新时间:
对于Serverless的定义,文章给出来一个公式:Serverless = FAAS+ BAAS。将FAAS(Functions as a Service)定 对于Serverless的定义,文章给出来一个公式:Serverless = FAAS+ BAAS。将FAAS(Functions as a Service)
-
每个 JOIN 操作的时间复杂度为O(M * log(N)),其中M是一个表中的记录数,N是另一个表中的记录数,
文章 更新时间:
每个 JOIN 操作的时间复杂度为O(M log(N)),其中M是一个表中的记录数,N是另一个表中的记录数, 每个 JOIN 操作的时间复杂度为O(M log(N)),其中M是一个表中的记录数,N是另一个表中的记录数,
-
api对外对内 注解区分
文章 更新时间:
api对外对内 注解区分 https://mp.weixin.qq.com/s/fesjDiC1il521E8wAM66Q 根据这个特点,我们可以对所有经过网关的请求的header里添加一个字段,业务侧接口收到请求后,判断header里是否有该字段,如果有,则说明该请求来自外部,没有,则属于内部服务的调用,再根据该接口
-
java rpc 例子 一步步构建 MyRPCFromZero
文章 更新时间:
java rpc 例子 一步步构建 MyRPCFromZero https://github.com/he2121/MyRPCFromZero [ ](https://cf.maocaoying.com/images/2022/11/17/bb88af57990274b1ca2178ffe6356909.png) ve
-
netty pipeline addlast 执行顺序
文章 更新时间:
netty pipeline addlast 执行顺序 https://blog.csdn.net/zhengchao1991/article/details/103583766 1. ctx.writeAndFlush只会从当前的handler位置开始,往前找outbound执行 2. ctx.pipeline().
-
trick
文章 更新时间:
trick trick 直接复制 json到goland 会提示转成 struct
-
http1时代
文章 更新时间:
http1时代 http1时代 为何一些站点会有多个静态资源 CDN 域名的原因之一,拿 Twitter 为例, http://twimg.com ,目的就是变相的解决浏览器针对同一域名的请求限制阻塞问题。
-
联合索引
文章 更新时间:
联合索引 MySQL8.0版本开始增加了索引跳跃扫描的功能,当第一列索引的唯一值较少时,即使where条件没有第一列索引,查询的时候也可以用到联合索引。 比如我们使用的联合索引是 bcd 但是b中字段比较少 我们在使用联合索引的时候没有 使用 b 但是依然可以使用联合索引MySQL联合索引有时候遵循最左前缀匹配原则,有
-
shell 变量大括号
文章 更新时间:
shell 变量大括号 在shell脚本编程中,我们给变量加上大括号,作用是为了帮助解释器识别变量边界 对于变量有空格隔开独立的情形,$val与 ${val}等价; 对于变量之间无空格隔开,想要组合两个变量或变量与字符串时,{}就起到限定边界作用 echo "I am good at ${skill}Code"
-
linux screen命令
文章 更新时间:
linux screen命令 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这
-
linux bash -c | sh -c
文章 更新时间:
linux bash c | sh c https://zhuanlan.zhihu.com/p/431138872 c string If the c option is present, then commands are read from string. If there are arguments after
-
旧文章 189
文章 更新时间:
旧文章 189 [](https://cf.maocaoying.com/images/2023/01/11/7f00223dbe44233db4f9f4c6645e9609.jfif)
-
旧文章 194
文章 更新时间:
旧文章 194 [](https://cf.maocaoying.com/images/2023/01/13/6b1189f9ca2826c4ca428ba87dd2a002.png)
-
css 定义
文章 更新时间:
css 定义 class="school1 owlcarousel thumbcarousel thumbcarou“ 跟顺序无关。关键看 定义的先后顺序 .container.school2{ //表示 container下面的school2 float:right; width: 500px; } .contain
-
【知识拓展】音视频中的推流与拉流
文章 更新时间:
【知识拓展】音视频中的推流与拉流 https://blog.csdn.net/weixin44299027/article/details/105053426 推流 推流,指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,
-
Apache 软件基金会(Apache Software Foundation,ASF)
文章 更新时间:
Apache 软件基金会(Apache Software Foundation,ASF) Apache 软件基金会(Apache Software Foundation,ASF) Apache 顶级项目(Top Level Project,TLP)。 ASF毕业成为 TLP 评论 评论 1 · 20230130T02:
-
hashicorp/design-system: Helios Design System
文章 更新时间:
hashicorp/designsystem: Helios Design System 原文地址 [github.com](https://github.com/hashicorp/designsystem) HashiCorp 开源了两个新项目,一个是内部各个产品使用的设计系统,另一个是文档管理系统,主要支持 Go
-
AppImage
文章 更新时间:
AppImage 这是一种独特的格式,用于分发 Linux 应用程序,无需安装,无需管理员权限即可运行。换句话说,您下载应用程序的 AppImage 并运行它。就是这样。 内置了相关依赖,不污染env环境,不需要装各种依赖 添加可执行权限 chmod a+x .AppImage 执行它! ./.AppImage
-
gossh go写的开源工具 批量操作服务器
文章 更新时间:
gossh go写的开源工具 批量操作服务器 https://github.com/andesli/gossh [ ](https://cf.maocaoying.com/images/2023/02/14/7259955079bd0ad487e395d65757f6be.png) gossh提供3种核心功能: 连接到
-
go get -u
文章 更新时间:
go get u go get u update 的意思
-
启动一个tcp 服务 nc命令
文章 更新时间:
启动一个tcp 服务 nc命令 nc l 9002 port: 9002 原文地址 [mjd507.github.io](https://mjd507.github.io/2018/01/15/UsenetcattotransferTCPUDPData/) netcat,简写为 nc,是 unix 系统下一个强大的命令
-
GOST- GO Simple Tunnel
文章 更新时间:
GOST GO Simple Tunnel [ ](https://cf.maocaoying.com/images/2023/02/16/4d7033640215d70ba462840c0d800c5b.png) https://v2.gost.run/ 多端口监听 可设置转发代理,支持多级转发(代理链) 支持标准H
-
什么是 npx, 与npm关系 区别
文章 更新时间:
什么是 npx, 与npm关系 区别 原文地址 [juejin.cn](https://juejin.cn/post/7142666525365764104) npx 是什么 ======= npm 大家都知道,是 node 的包管理器,npx 虽然也见过,但似乎较少用过,那 npx 到底是什么呢?接下来本文就简单地聊
-
jvm内存32G
文章 更新时间:
jvm内存32G 在java中,所有的对象都分配在堆上,然后有一个指针引用它。指向这些对象的指针大小通常是CPU的字长的大小,不是32bit就是64bit,这取决于你的处理器,指针指向了你的值的精确位置。 对于32位系统,你的内存最大可使用4G。对于64系统可以使用更大的内存。但是64位的指针意味着更大的浪费,因为你的
-
https://huggingface.co/
文章 更新时间:
https://huggingface.co/ Hugging face 起初是一家总部位于纽约的聊天机器人初创服务商,他们本来打算创业做聊天机器人,然后在github上开源了一个Transformers库,虽然聊天机器人业务没搞起来,但是他们的这个库在机器学习社区迅速大火起来。目前已经共享了超100,000个预训练模
-
golang 空结构体 struct{} 作用
文章 更新时间:
golang 空结构体 struct{} 作用 原文地址 [segmentfault.com](https://segmentfault.com/a/1190000040799205) 大家好,我是煎鱼。在 Go 语言中,有一个比较特殊的类型,经常会有刚接触 Go 的小伙伴问到,又或是不理解。他就是 Go 里的空结构体
-
linux NF $NF 区别-awk命令中
文章 更新时间:
linux NF $NF 区别awk命令中 NF 表示的是浏览记录的域的个数 $NF 表示的最后一个Field(列),即输出最后一个字段的内容 [root@localhost SHELL] free m | grep buffers\/ /+ buffers/cache: 1815 1859 [root@localho
-
go 项目目录结构 规范
文章 更新时间:
go 项目目录结构 规范 原文地址 [github.com](https://github.com/golangstandards/projectlayout/blob/master/READMEzh.md) [](standardgoprojectlayout)Standard Go Project Layout =
-
hash.go - 几种 hash 算法简介
文章 更新时间:
hash.go 几种 hash 算法简介 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [zhuanlan.zhihu.com](https://zhuanlan.zhihu.com/p/48805914) ⚠️ 回答于 4 年前 接口定义 type Ha
-
对一致性 Hash 算法,Java 代码实现的深入研究
文章 更新时间:
对一致性 Hash 算法,Java 代码实现的深入研究 原文地址 [www.cnblogs.com](https://www.cnblogs.com/xrq730/p/5186728.htmlcomments) 一致性 Hash 算法 关于一致性 Hash 算法,在我之前的博文中已经有多次提到了,[MemCache 超
-
一致性 Hash 算法 Java 实现 — G.Fukang's Blog
文章 更新时间:
一致性 Hash 算法 Java 实现 — G.Fukang's Blog 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [gongfukangee.github.io](https://gongfukangee.github.io/2019/05/19/
-
Prometheus指标
文章 更新时间:
Prometheus指标 场景结构图: [ ](https://cf.maocaoying.com/images/2023/11/23/1dc0125fcf076bdd6968680875dc2983.png) Prometheus定义了4种不同的指标类型(metric type): Counter(计数器)、Gaug
-
golang Prometheus
文章 更新时间:
golang Prometheus 参考代码: OpenIMServer 基础: https://www.maocaoying.com/topic/950 http : if config.Config.Prometheus.Enable { promePkg.NewApiRequestCounter() promeP
-
etcd 分布式 - 看图轻松了解 etcd
文章 更新时间:
etcd 分布式 看图轻松了解 etcd 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [segmentfault.com](https://segmentfault.com/a/1190000020742981) 用一些图示结合场景和文字轻松了解 etc
-
算力 GPU CPU
文章 更新时间:
算力 GPU CPU 算力及其经济效应 所谓算力,就是设备处理数据、输出结果的能力,或者简而言之,就是计算的能力。它的基本单位是用“每秒完成的标准操作数量”(standardized operations per second,简称SOPS)来进行衡量。不过,由于现在的设备性能都非常高,因而在实践中用SOPS来衡量算力
-
golang context
文章 更新时间:
golang context 什么是context? context是一种通知手段,例如现在后台有一个监听进程,你要如何在主进程中停止这个监听进程呢?有人会说,select+channel好了嘛,只要主进程往channel里面写数据,后台监听进程读取到channel里面的数据就停止,这其实是一个不错的方法,但是如果后台
-
golang context emptyCtx valueCtx cancelCtx timerCtx
文章 更新时间:
golang context emptyCtx valueCtx cancelCtx timerCtx https://juejin.cn/post/7085190229782429727 context 包提供了四种实现了 Context 接口的 struct。分别为最基础的 emptyCtx,包含键值对的 valu
-
golang struct{} 一个作为key的用法
文章 更新时间:
golang struct{} 一个作为key的用法 type keyType struct{} //空struct{}作为key,不占用内存空间 var xxxKey struct{} //同时避免了不同包使用ctx传值时出现冲突 var xxxKey2 keyType // 如果也是struct{} 。那么会覆盖。
-
基于 context.Context 的 Golang loader 缓存
文章 更新时间:
基于 context.Context 的 Golang loader 缓存 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [juejin.cn](https://juejin.cn/post/7154318373663277093) 请求放大的问题。 做了
-
Arweave Vs Filecoin
文章 更新时间:
Arweave Vs Filecoin [https://ardrive.io/arweavevsfilecoin/](https://ardrive.io/arweavevsfilecoin/) With so many new technologies and applications coming out eve
-
看完秒懂什么是 SNI
文章 更新时间:
看完秒懂什么是 SNI 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [zhuanlan.zhihu.com](https://zhuanlan.zhihu.com/p/547260827) SNI(Server Name Indication):是 TL
-
redis 过期key event订阅
文章 更新时间:
redis 过期key event订阅 https://redis.io/docs/manual/keyspacenotifications/timingofexpiredevents 就是非实时,可能晚很多。不建议用。只有background thread 扫到它,Delete时才会触发 Timing of expi
-
ETCD 一文入门
文章 更新时间:
ETCD 一文入门 KV 服务,创建,更新,获取和删除键值对。 监视,监视键的更改。 租约,消耗客户端保持活动消息的基元。 锁,etcd 提供分布式共享锁的支持。 选举,暴露客户端选举机制。 https://doczhcn.gitbook.io/etcd/index https://juejin.cn/post/684
-
SHA 加密是什么( sha1 和 MD5 的区别 )
文章 更新时间:
SHA 加密是什么( sha1 和 MD5 的区别 ) https://blog.csdn.net/jiangyu1013/article/details/73290371 SHA 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard D
-
搜索 开源 简介
文章 更新时间:
搜索 开源 简介 Bleve & Tantivy Bleve和Tantivy是搜索引擎项目,分别用Golang和Rust编写,灵感来自Apache Lucene及其算法(例如,tfidf,术语频率反向文档频率的缩写)。与Lucene一样,两者都是可用于任何搜索项目的库;但它们没有现成的API,无法做到开箱即用。 tan
-
telnet ssh VNC
文章 更新时间:
telnet ssh VNC telnet Telnet是进行远程登录的标准协议,它是当今Internet上应用最广泛的协议之一。它把用户正在使用的终端或计算机变成网络某一远程主机的仿真终端,使得用户可以方便地使用远程主机上的软、硬件资源。 ssh Telnet协议在带来便利性的同时,也带来了许多安全问题,最突出的就是
-
Spring-Retry 和 Guava-Retry VS Failsafe
文章 更新时间:
SpringRetry 和 GuavaRetry VS Failsafe SpringRetry 本身难用。 配合springboot 还可以。但也很繁琐 exceptionMap.put(RemoteAccessException.class,true); // 构建重试模板实例 RetryTemplate retr
-
基于Redis的Stream类型的完美消息队列解决方案
文章 更新时间:
基于Redis的Stream类型的完美消息队列解决方案 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [zhuanlan.zhihu.com](https://zhuanlan.zhihu.com/p/60501638) ⚠️ 回答于 3 年前 1 概述
-
IM 服务器设计 - 消息存储 - codedump 的网络日志
文章 更新时间:
IM 服务器设计 消息存储 codedump 的网络日志 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.codedump.info](https://www.codedump.info/post/20190608immsgstorage/) 采用
-
现代IM系统中的消息系统架构——架构篇
文章 更新时间:
现代IM系统中的消息系统架构——架构篇 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.infoq.cn](https://www.infoq.cn/article/yPB3Y2lvDsFtRr5Cguv) 现代 IM 系统中的消息系统架构——架构
-
阿里云-- 表格存储
文章 更新时间:
阿里云 表格存储 [阿里云原文](https://help.aliyun.com/documentdetail/27280.html?spm=a2c4g.11186623.0.0.5da4728b0EdfFl) 表格存储(Tablestore)面向海量结构化数据提供Serverless表存储服务,同时针对物联网场景深度
-
比特币和以太坊挖矿的区别 – Coin Dollar Pay
文章 更新时间:
比特币和以太坊挖矿的区别 – Coin Dollar Pay 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [coindollarpay.com](https://coindollarpay.com/differencebetweenbitcoinande
-
golang 函数选项模式
文章 更新时间:
golang 函数选项模式 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s/gCMLQobQjnXGnefkrJQ) 前言 通过这篇文章《[为什么说 Go 的函数是”
-
http/2 SPDY/2
文章 更新时间:
http/2 SPDY/2 特点 首先来说最初的HTTP/1.0的时候,一次TCP的链接上只能发送一个HTTP请求,导致HTTP传输的效率特别低。 好在HTTP/1.1的时候,引入了持久链接和管道机制,使得HTTP的传输效率得到了很大的提升(详细和可查看HTTP基本认识)。持久链接满足了一条TCP链接可以发送多条HTT
-
详解 Server Sent Events
文章 更新时间:
详解 Server Sent Events 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [zhuanlan.zhihu.com](https://zhuanlan.zhihu.com/p/515921898) Server Sent Events 的使用
-
信令服务器
文章 更新时间:
信令服务器 都有房间概念 socket.io node gosocket.io https://github.com/googollee/gosocket.io
-
Socket.IO
文章 更新时间:
Socket.IO Socket.IO 是一个封装了 Websocket、基于 Node 的 JavaScript 框架,包含 client 的 JavaScript 和 server 的 Node。其屏蔽了所有底层细节,让顶层调用非常简单。 另外,Socket.IO 还有一个非常重要的好处。其不仅支持 WebSock
-
gomobile 开发android IOS SDK
文章 更新时间:
gomobile 开发android IOS SDK https://github.com/golang/mobile https://pkg.go.dev/golang.org/x/mobile The Go mobile repository holds packages and build tools for u
-
Linux 防火墙之 ipset 表应用
文章 更新时间:
Linux 防火墙之 ipset 表应用 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.sfjvip.com](https://www.sfjvip.com/server/4422.html) 简介提示线上生产环境不要随便重启 iptables,
-
当 Go struct 遇上 Mutex
文章 更新时间:
当 Go struct 遇上 Mutex 原文地址 [juejin.cn](https://juejin.cn/post/6912265131619516430) struct 是我们写 Go 必然会用到的关键字, 不过当 struct 遇上一些比较特殊类型的时候, 你注意过你的程序是否正常吗 ? 一段代码 type
-
go json.RawMessage
文章 更新时间:
go json.RawMessage // RawMessage is a raw encoded JSON value. // It implements Marshaler and Unmarshaler and can // be used to delay JSON decoding or precompute
-
mac netstat很慢
文章 更新时间:
mac netstat很慢 mac netstat很慢 netstat an . n 不解析dns域名 会快很多
-
golang cobra 命令库
文章 更新时间:
golang cobra 命令库 https://darjun.github.io/2020/01/17/godailylib/cobra/ 这篇文章提取摘要 [ ](https://cf.maocaoying.com/images/2023/12/07/b8bdfe6de036b9b56ef87587ca39e897
-
一图直接懂gomod配置
文章 更新时间:
一图直接懂gomod配置 一图直接懂gomod配置 golang的go.mod的层级嵌套问题 [](https://cf.maocaoying.com/images/2023/03/03/07cdb6998b5426dec89c2ee98b941920.png)
-
golang viper库
文章 更新时间:
golang viper库 viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件; 可以设置监听配置文件的修改,修改时自动加载新的配置; 从环境变量、命令行选项和io.Reader中读取配置; 从远程配置系统中
-
go pflag vs flag
文章 更新时间:
go pflag vs flag pflag 包与 flag 包的工作原理甚至是代码实现都是类似的,下面是 pflag 相对 flag 的一些优势: 支持更加精细的参数类型:例如,flag 只支持 uint 和 uint64,而 pflag 额外支持 uint8、uint16、int32 等类型。 支持更多参数类型:i
-
GitOps 介绍 – 云原生实验室
文章 更新时间:
GitOps 介绍 – 云原生实验室 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [icloudnative.io](https://icloudnative.io/posts/whatisgitops/) 本文介绍了什么是 GitOps,包括 GitO
-
五个同事决定计算他们的平均工资,在大家互相不告诉薪水的情况下,如何才能做到这一点?
文章 更新时间:
五个同事决定计算他们的平均工资,在大家互相不告诉薪水的情况下,如何才能做到这一点? 由于提问者绑定了「数学」话题,可以合理推测问题有隐含条件:不借助第六人。 更进一步,应当要求所选择的方法有一定防止作弊和少数人串通的能力。 五个同事决定计算他们的平均工资,在大家互相不告诉薪水的情况下,如何才能做到这一点? Xpecya
-
c++ 库管理工具
文章 更新时间:
c++ 库管理工具 golang 有 go.mod java maven /gradle python 有 implements.txt pip3 c++ makefile CMakeLits.txt 微软开源的 Vcpkg https://github.com/microsoft/vcpkg/ 可帮助您在 Windo
-
Go Test 单元测试简明教程 | 快速入门
文章 更新时间:
Go Test 单元测试简明教程 | 快速入门 [ ](https://cf.maocaoying.com/images/2023/03/04/b7945b7b80664244369bb9b6a395463f.png) 原文 https://geektutu.com/post/quickgotest.html 测试用例
-
golang lo库 -stream处理
文章 更新时间:
golang lo库 stream处理 ✨ samber/lo is a Lodashstyle Go library based on Go 1.18+ Generics. 采用泛型。工具类库 stream处理 It may look like [Lodash](https://github.com/lodash/l
-
Git 内部原理图解——对象、分支以及如何从零开始建仓库
文章 更新时间:
Git 内部原理图解——对象、分支以及如何从零开始建仓库 https://www.freecodecamp.org/chinese/news/gitinternalsobjectsbranchescreaterepo/ 我们中的许多人每天都在使用 git,但是有多少人知道它的内部是怎么运作的呢? 例如我们使用 git
-
go singleflight 缓存击穿 缓存一致性
文章 更新时间:
go singleflight 缓存击穿 缓存一致性 一致性 [一致性问题](https://cf.maocaoying.com/images/2023/03/05/8cdd8f38bcea7105a540634019c7a8c7.png) 2个线程 协程,因为先后顺序不同,导致 最后update cache时候,不一
-
python open read file
文章 更新时间:
python open read file In Python, there are six methods or access modes, which are: Read Only ('r’): This mode opens the text files for reading only. The start o
-
chatGpt 搭建
文章 更新时间:
chatGpt 搭建 折腾了一阵 chatgpt. 有sktoken条件下 基于腾讯云 云函数 弄了个代理。 有免费流量额度。选的新加坡 https://github.com/IceHazymoon/openaiscfproxy https://github.com/ddiu8081/chatgptdemo 可以直接部
-
服务器观测指标 TP90 P90
文章 更新时间:
服务器观测指标 TP90 P90 最常用的主要有P50(中位数)、P95、P99。 平均值一般不具有参考价值 TP=Top Percentile,Top百分位数,是一个统计学里的术语,与平均数、中位数都是一类。 P50: 即中位数值。100个请求按照响应时间从小到大排列,位置为50的值,即为P50值。如果响应时间的P5
-
(转)与一伙爬虫团队的斗智斗勇
文章 更新时间:
(转)与一伙爬虫团队的斗智斗勇 近期发生了公司系统遭受大规模爬虫攻击的事件。在国庆节后出现了注册但未下单的用户进行多次请求,初步定位为爬虫用户并采取了集团IP封锁的方法,但是爬虫团队逐渐增强,并且攻击手法更加隐蔽。由于防护策略不断升级,导致爬虫团队进化速度快于技术人员的掌控能力,最终导致技术人员全面告败的局面。 爬虫逐
-
go 参数校验 GoFrame/gvalid vs go-playground/validator
文章 更新时间:
go 参数校验 GoFrame/gvalid vs goplayground/validator 原文地址 [zhuanlan.zhihu.com](https://zhuanlan.zhihu.com/p/268935539) GoFrame——数据校验之结构体校验 GoFrame中gvalid模块实现了非常强大的数
-
golang 交叉编译
文章 更新时间:
golang 交叉编译 GOOS: 目标平台的操作系统(darwin freebsd linux windows) GOARCH 目标平台的架构是32位或64位(386 amd64 arm) GOOS=linux GOARCH="amd64" go build o cmd 386 代表 32 位系统,也称为 i386。
-
Discard 是如何存储数十亿条信息的? | by Bo Ingram | Cointime
文章 更新时间:
Discard 是如何存储数十亿条信息的? | by Bo Ingram | Cointime 我们想要一个与我们一起增长的数据库,但希望它的维护需求不会与我们的存储需求一起增长。 discard 数据从mongodb 迁移到 Cassandra(GC导致某些问题) 又到 ScyllaDB (c++)的故事 [原文](
-
linux 查看网络流量
文章 更新时间:
linux 查看网络流量 dstat nf ★ dstat 是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat的全能系统信息统计工具,支持数据实时刷新,输出直观易懂。 [ ](https://cf.maocaoying.com/images/2023/03/09/2782f12b22
-
iptables 配置,docker容器指定不同网卡
文章 更新时间:
iptables 配置,docker容器指定不同网卡 今天遇到个需求。 docker 不同容器 配不同网卡。对外公网ip不同 先备份 把iptables规则备份到my.ipt文件中 iptablessave my.ipt 恢复刚才备份的规则 iptablesrestore < my.ipt 查看 列出 iptables
-
docker network 配置网卡
文章 更新时间:
docker network 配置网卡 我们使用docker run创建容器时,可以使用net选项指定容器的网络模式,docker一共有4中网络模式: 1:bridge模式,net=bridge(默认)。 这是dokcer网络的默认设置。安装完docker,系统会自动添加一个供docker使用的网桥docker0,我们
-
iptables 命令 规则 参数详解
文章 更新时间:
iptables 命令 规则 参数详解 表 (table) [原文](https://www.cnblogs.com/zclzhao/p/5081590.html) 包含4个表: 4个表的优先级由高到低:rawmanglenatfilter rawRAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高
-
海量长链接消息推送系统设计实践
文章 更新时间:
海量长链接消息推送系统设计实践 原文: https://shimo.im/docs/5xkGMW0moluDK93X/read 分布式推送系统 https://xiaorui.cc/archives/7222 相关ppt 分享 https://github.com/rfyiamcool/shareppt [ ](htt
-
不要忽略 goroutine 的启动时间, for range 陷阱
文章 更新时间:
不要忽略 goroutine 的启动时间, for range 陷阱 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s/P2FDJHvFTx516yHioxULkg) 小菜刀的项目中需要将数据推给多个服务器,大致如下 1package main 2 3import (
-
golang gout http 工具
文章 更新时间:
golang gout http 工具 支持链式 package main import ( "fmt" "github.com/guonaihong/gout" "time" ) // 用于解析 服务端 返回的http body type RspBody struct { ErrMsg string json:"er
-
kafka : 让你设计一个 MQ 每秒要抗几十万并发
文章 更新时间:
kafka : 让你设计一个 MQ 每秒要抗几十万并发 通过这篇文章对 kafka 底层的页缓存技术的使用,磁盘顺序写的思路,以及零拷贝技术的运用,大家应该就明白 Kafka 每台机器在底层对数据进行写和读的时候采取的是什么样的思路,为什么他的性能可以那么高,做到每秒几十万的吞吐量。 通过这篇文章对 kafka 底层的
-
https://github.com/rfyiamcool/share_ppt
文章 更新时间:
https://github.com/rfyiamcool/shareppt https://github.com/rfyiamcool/shareppt 高性能架构, 中间件原理实践,云原生,Golang 等 分享的PPT
-
浅析开源项目之io_uring
文章 更新时间:
浅析开源项目之iouring Linux内核5.1支持了新的异步IO框架iouring,由Block IO大神也即Fio作者Jens Axboe开发,意在提供一套公用的网络和磁盘异步IO,不过iouring目前在磁盘方面要比网络方面更加成熟。 目录 背景简介 iouring 系统API liburing 高级特性 编程
-
grpc stream 单向stream 双向stream
文章 更新时间:
grpc stream 单向stream 双向stream 前言 gRPC Streaming 是基于 HTTP/2 的 本章节将介绍 gRPC 的流式,分为三种类型: Serverside streaming RPC:服务器端流式 RPC Clientside streaming RPC:客户端流式 RPC Bidi
-
elastic 搭建 (本论坛)
文章 更新时间:
elastic 搭建 (本论坛) 原先弄好的docker 搜索。莫名没了。container还被删了. 重搞一份。顺便做下记录. 基于docker 创建elastic docker run d \ name elasticsearch \ e "ESJAVAOPTS=Xms512m Xmx512m" \ e "disc
-
grpc 同端口 ,同时启用http
文章 更新时间:
grpc 同端口 ,同时启用http 关键一点,gRPC 的协议是基于 HTTP/2 的,因此应用程序能够在单个 TCP 端口上提供 HTTP/1.1 和 gRPC 接口服务(两种不同的流量) 怎么同时提供 HTTP 接口 检测协议 if r.ProtoMajor == 2 && strings.Contains(r.
-
grpc 自定义认证
文章 更新时间:
grpc 自定义认证 原文地址 [eddycjy.com](https://eddycjy.com/posts/go/grpc/20181014perrpccredentials/client) 前言 在前面的章节中,我们介绍了两种(证书算一种)可全局认证的方法: 1. [TLS 证书认证](https://githu
-
grpc deadline
文章 更新时间:
grpc deadline 客户端 ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(time.Duration(5 time.Second))) defer cancel() ........ resp, err := c
-
gprc grpc_middleware.WithUnaryServerChain 链式调用
文章 更新时间:
gprc grpcmiddleware.WithUnaryServerChain 链式调用 opts := []grpc.ServerOption{ //grpc.Creds(c), grpcmiddleware.WithUnaryServerChain( RecoveryInterceptor, LoggingInt
-
每天 100w 次登陆请求, 8G 内存该如何设置 JVM 参数?
文章 更新时间:
每天 100w 次登陆请求, 8G 内存该如何设置 JVM 参数? [原文](https://mp.weixin.qq.com/s/zgHYAFFHKMyoDlOx1A8NA) 就在上周,一个同学在阿里云技术面终面的时候被问到这么一个问题:假设一个每天 100w 次登陆请求的平台,一个服务节点 8G 内存,该如何设置
-
https://zhuanlan.zhihu.com/p/453269472
文章 更新时间:
https://zhuanlan.zhihu.com/p/453269472 https://zhuanlan.zhihu.com/p/453269472 vercel 是一个站点托管平台,提供CDN加速,同类的平台有Netlify 和 Github Pages,相比之下,vercel 国内的访问速度更快,并且提供Pr
-
nginx配置转发mysql连接
文章 更新时间:
nginx配置转发mysql连接 对http代理 是常用方式。 对后端服务的 TCP 进行代理,nginx 支持吗?比如 mysql、redis 等,答案是肯定的,其实 nginx 也是支持对 TCP/UDP 进行负载均衡的 // 放在http外面 stream{ server{ listen 9003; 外网服务器监
-
mysql8 增加用户
文章 更新时间:
mysql8 增加用户 create database xxxxdb; create user 'username'@'%' identified by 'xxxxxxx'; grant all privileges on xxxxxdb. to 'username'@'%' ; flush privileges; d
-
最大连接数
文章 更新时间:
最大连接数 linux系统要修改 以及相关参数 ... sysctl w fs.filemax=2000500 sysctl w fs.nropen=2000500 sysctl w net.nfconntrackmax=2000500 ulimit n 2000500 sysctl w net.ipv4.tcpmem
-
百万 Go TCP 连接的思考: epoll方式减少资源占用
文章 更新时间:
百万 Go TCP 连接的思考: epoll方式减少资源占用 原文地址 [colobu.com](https://colobu.com/2019/02/23/1mgotcpconnection/) 前几天 Eran Yanay 在 Gophercon Israel 分享了一个讲座:Going Infinite, han
-
shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别
文章 更新时间:
shell 脚本各种执行方式(source ./.sh, . ./.sh, ./.sh)的区别 结论一: ./.sh的执行方式等价于sh ./.sh或者bash ./.sh,此三种执行脚本的方式都是重新启动一个子shell,在子shell中执行此脚本。 结论二: .source ./.sh和 . ./.sh的执行方式是
-
go使用build tags实现条件编译
文章 更新时间:
go使用build tags实现条件编译 原文地址 [www.jianshu.com](https://www.jianshu.com/p/abb56273a862) 在 C/C++ 中可以通过宏定义实现条件编译,比如在不同平台的机器上,调用不同的函数,或者通过编译是传递参数,调用不同的函数,比如下面的例子 C++ 条
-
从 io.Reader 中读数据
文章 更新时间:
从 io.Reader 中读数据 原文地址 [colobu.com](https://colobu.com/2019/02/18/readdatafromnetConn/) Go 的标准库提供了多个从 io.Reader 中读取数据的方法 (io、ioutil),本文通过从 net.Conn 中读取数据为例,演示各种方
-
k8s
文章 更新时间:
k8s k8s kubernetes [](https://cf.maocaoying.com/images/2023/03/16/e705dda49818b29a4fc51a6ce42a6880.jfif)
-
Leetcode的并发题
文章 更新时间:
Leetcode的并发题 Leetcode的并发题。这道题是这么说的: 编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是: 如果这个数字可以被 3 整除,输出 "fizz"。 如果这个数字可以被 5 整除,输出 "buzz"。 如果这个数字可以同时被 3 和 5 整除,输出 "fizzbuzz"。 例如
-
curl 指定网卡 --interface
文章 更新时间:
curl 指定网卡 interface curl interface eth1 X GET ipinfo.io
-
Linux 内部的链接处理逻辑是这样。首先接到 syn 后,创立一个 sock,放入半连接队列,然后回复 syn+ack ,三次握手完毕后,放入全链接队列,ac
文章 更新时间:
Linux 内部的链接处理逻辑是这样。首先接到 syn 后,创立一个 sock,放入半连接队列,然后回复 syn+ack ,三次握手完毕后,放入全链接队列,ac Linux 内部的链接处理逻辑是这样。首先接到 syn 后,创立一个 sock,放入半连接队列,然后回复 syn+ack ,三次握手完毕后,放入全链接队列,a
-
linux tcp socket 请求队列大小参数 backlog
文章 更新时间:
linux tcp socket 请求队列大小参数 backlog 底层 backlog 参数主要用于底层方法int listen(int sockfd, int backlog), 在解释 backlog 参数之前,我们先了解下 tcp 在内核的请求过程,其实就是 tcp 的[三次握手](https://so.csd
-
connection reset by peer,TCP三次握手后服务端发送RST
文章 更新时间:
connection reset by peer,TCP三次握手后服务端发送RST 问题描述 这两天用Go做一个比较简单的task:后端有HTTPServer和TCPServer。客户端通过http接入到HTTPServer,HTTPServer通过RPC将请求发送到TCPServer,所有的业务逻辑都由TCPServ
-
backlog , grpc中netty配置
文章 更新时间:
backlog , grpc中netty配置 net.core.somaxconn 是Linux中的一个kernel参数,表示socket监听(listen)的backlog上限。 什么是backlog呢?backlog就是socket的监听队列,当一个请求(request)尚未被处理或建立时,他会进入backlog。
-
ubuntu 18 vs node 16 依赖问题
文章 更新时间:
ubuntu 18 vs node 16 依赖问题 node: /lib/x8664linuxgnu/libc.so.6: version GLIBC2.28' not found (required by node) 高版本node 依赖 glibc版本问题 Using this command to check G
-
ES6:export default 和 export 区别
文章 更新时间:
ES6:export default 和 export 区别 export default 和 export 区别: 1.export 与 export default 均可用于导出常量、函数、文件、模块等 2. 你可以在其它文件或模块中通过 import+(常量 | 函数 | 文件 | 模块) 名的方式,将其导入,以
-
Google验证器是如何实现的?原理,离线使用
文章 更新时间:
Google验证器是如何实现的?原理,离线使用 我们往往会在不同的网站上使用相同的密码,这样一旦一个网站账户的密码泄露,就会危及到其他使用相同密码的账户的安全,这也是最近的密码泄露事件造成如此大影响的原因。 为了解决这个问题,一些网站在登录时要求除了输入账户密码之外,还需要输入另一个一次性密码。银行常用的动态口令卡就是
-
Go sync.Pool
文章 更新时间:
Go sync.Pool Go 语言 / golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程 (high performance go)。 源代码 / 数据集已上传到 [Github highperformancego](https://github.com/geektutu/highperforman
-
神马搜索 获取authkey
文章 更新时间:
神马搜索 获取authkey https://zhanzhang.sm.cn/open/mip [ ](https://cf.maocaoying.com/images/2023/03/21/c9487d2b4bd0ddfde9c9a89629441558.png) 打开调试F12 或者 cmd+shift + c (
-
一致性哈希算法原理
文章 更新时间:
一致性哈希算法原理 看了几篇,就这篇带着图,解释清晰 一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在
-
Java 的强引用、弱引用、软引用、虚引用
文章 更新时间:
Java 的强引用、弱引用、软引用、虚引用 1\. 强引用 StrongReference 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它 Object o=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,
-
JVM进程启动会启动哪些进程?
文章 更新时间:
JVM进程启动会启动哪些进程? 首先要明白一点:JVM本身是一个多线程的程序,和我们编写的java应用程序一样,当JVM启动执行时就是在操作系统中启动了一个JVM进程。我们编写的java单线程或多线程应用程 序都是在JVM这个程序中作为一个或多个线程运行。 每当使用java命令执行一个带main方法的类时,就会启动JV
-
进程与线程关系(JVM)
文章 更新时间:
进程与线程关系(JVM) 网上有一副很经典的图可以让我们来理解进程和线程的关系: 下面这副图是一个双向多车道的道路图,假如我们把整条道路看成是一个“进程”的话,那么图中由白色虚线分隔开来的各个车道就是进程中的各个“线程”了。 [](https://wx2.sinaimg.cn/mw690/6fc98e79gy1fu3j
-
Linux与JVM的内存关系分析
文章 更新时间:
Linux与JVM的内存关系分析 引言 在一些物理内存为8g的server上,主要执行一个Java服务,系统内存分配例如以下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约600m,Linux自身使用大约800m。 从表面上,物理内存应该是足够使用的;但实际执行的情况是,会发生大量使用SWAP(说明物理内存
-
Java并发编程 --并发新特性—Executor框架与线程池
文章 更新时间:
Java并发编程 并发新特性—Executor框架与线程池 Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可
-
java集合框架
文章 更新时间:
java集合框架 Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。 [
-
java并发编程:并发容器之ConcurrentHashMap
文章 更新时间:
java并发编程:并发容器之ConcurrentHashMap JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都 串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Ja
-
Gin框架LoadHTMLGlob 有缓存
文章 更新时间:
Gin框架LoadHTMLGlob 有缓存 在用vueelementadmin时候, 发现把elementui迁移cdn后, 打包后index.html依旧 还是依赖/static/js/chunkelementUI.js. 打开一直提示找不到. 才发现 后台 go gin框架 引用的html 有缓存. 重启后搞定 h
-
gorm 零值坑
文章 更新时间:
gorm 零值坑 1. sql ret 是查询的结果. 先查询是否有值,if ret.Id 0 ,则进行更新, 此时如果updates传入 model ,会忽略0 nil false字段 mysql.Get().WithContext(ctx).Model(new(models.ProxyState)).Where("
-
go for range 坑
文章 更新时间:
go for range 坑 golang package main import "fmt" / 在for循环中,声明了一个i变量,每次循环将i的地址追加到out切片中, 但是每次追加的其实都是i变量,因此我们追加的是一个相同的地址,而该地址最终的值是3。 range坑, 每次 / func main() { var
-
java 类静态变量加载
文章 更新时间:
java 类静态变量加载 [原文](https://blog.charles7c.top/categories/issues/2022/03/24/%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%87%AA%E8%BA%AB%E7%B1%BB%E7%9A%84%E9%9D%99%E6%8
-
开源许可证
文章 更新时间:
开源许可证 阮一峰 [ ](https://cf.maocaoying.com/images/2022/10/08/94006fc1c7a83fef5f5ae714a2fb62b0.png) [ ](https://cf.maocaoying.com/images/2023/12/22/fe54d9c9f566a64e
-
日志等级log Level
文章 更新时间:
日志等级log Level [ ](https://cf.maocaoying.com/images/2022/10/10/4259d854c1d2ba92e06c2d9ade06e867.png)
-
mvn 跳过test
文章 更新时间:
mvn 跳过test 在使用mvn package进行编译、打包时,Maven会执行src/test/java中的JUnit测试用例, 有时为了跳过测试,会使用参数DskipTests和Dmaven.test.skip=true,这两个参数的主要区别是: DskipTests 不执行测试用例,但编译测试用例类生成相应的
-
redis zinterstore zunionstore 排行交集并集
文章 更新时间:
redis zinterstore zunionstore 排行交集并集 zinterstore/zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] 获取交集/并集 这个
-
动作类网络游戏同步的实现方案
文章 更新时间:
动作类网络游戏同步的实现方案 [原文](http://games.sina.com.cn/y/n/20161021/fxwztrt0070276.shtml) 前面一篇谈了放置类游戏的网络同步,我想把其方法推广到其它类型的游戏,比如 MMORPG ,比如动作游戏。尤其是动作类游戏,非常需要客户端可以即时处理玩家的操作,
-
java 动态线程池的文章. 用的美团动态线程池
文章 更新时间:
java 动态线程池的文章. 用的美团动态线程池 [原文](https://mp.weixin.qq.com/s?biz=Mzg3NjU3NTkwMQ==&mid=2247505103&idx=1&sn=a041dbec689cec4f1bbc99220baa7219&source=41wechatredirect)
-
Netty - 参数设置说明
文章 更新时间:
Netty 参数设置说明 option主要是针对boss线程组ServerSocketChannel,childOption主要是针对worker线程组,SocketChannel [链接](https://edgar615.github.io/nettyoption.html) 1. 系统参数 1.Netty中的op
-
nginx 例子
文章 更新时间:
nginx 例子 有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发 本文中,我们介绍Nginx如何做端口转发,还有各种转发规则 将域名转发到本地端口 首先介绍最常用的,将域名转发到本地另一个端口上 server{ listen 80; servername tomcat.
-
深入剖析docker核心技术(namespace、cgroups、union fs、网络)
文章 更新时间:
深入剖析docker核心技术(namespace、cgroups、union fs、网络) [https://gopher.blog.csdn.net/article/details/123409693](https://gopher.blog.csdn.net/article/details/123409693) d
-
java7 java8 compareAndSwapLong LongAdder
文章 更新时间:
java7 java8 compareAndSwapLong LongAdder 我们可以窥见 JDK 8 在 x86 平台上对 compareAndSwapLong 方法做了一些操作,使用了 xadd 汇编指令代替 CAS 操作。 xadd 指令是 fetch and add。 cmpxchg 指令是 compare
-
golang traceid spanid
文章 更新时间:
golang traceid spanid [https://mp.weixin.qq.com/s/M2jNnLkYaearwyRERnt0tA](https://mp.weixin.qq.com/s/M2jNnLkYaearwyRERnt0tA) trace 是请求在分布式系统中的整个链路视图 span 则代表整个链
-
查看正在运行docker容器的启动命令
文章 更新时间:
查看正在运行docker容器的启动命令 1. 通过docker ps命令 该命令主要是为了详细展示查看运行时的command参数 docker ps a notrunc | grep containername 通过docker notrunc参数来详细展示容器运行命令 2. 通过docker inspect命令 使用
-
ls -1什么意思
文章 更新时间:
ls 1什么意思 1 (The numeric digit one''.) Force output to be one entry per line. This is the default when output is not to a terminal. [ ](https://cf.maocaoying.com
-
golang sort int
文章 更新时间:
golang sort int func reverse3(s []int) { s = append(s, 999) fmt.Println("middle: ", s) for i, j := 0, len(s)1; i < j; i++ { j = len(s) (i + 1) s[i], s[j] = s[j]
-
java 卖票 多线程超卖
文章 更新时间:
java 卖票 多线程超卖 java package thread; / @author miller @date 2022/10/28 3:24 PM / public class TicketWindow2 implements Runnable { private int ticket = 300; @Overr
-
java thread join() wait() notify()
文章 更新时间:
java thread join() wait() notify() 可以给定一个共同对象 obj thread1 wait() thread2 notify() 也可以多个thread wait() . thead notifyall() wait()会出让CPU; synchronized (objectOne)
-
mybatis 缓存
文章 更新时间:
mybatis 缓存 –不同SqlSession缓存不能共享 MyBatis 默认开启了一级缓存,一级缓存是在SqlSession 层面进行缓存的。即,同一个SqlSession ,多次调用同一个Mapper和同一个方法的同一个参数,只会进行一次数据库查询,然后把数据缓存到缓冲中,以后直接先从缓存中取出数据,不会直
-
mybatis分页
文章 更新时间:
mybatis分页 Mybatis是如何进行分页的?分页插件的原理是什么? Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。 分页插件的基本原理是使用Mybati
-
curl 命令
文章 更新时间:
curl 命令 有的网址是自动跳转的。使用 L 参数,curl 就会跳转到新的网址。 curl L www.sina.com L, location option or do multiple URL transfers on the same invoke. If the file name is exactly a
-
go context.WithCancel
文章 更新时间:
go context.WithCancel func func3() { gen := func(ctx context.Context) <chan int { dst := make(chan int) go func() { defer func() { fmt.Println("exit inside") }(
-
CompletableFuture 默认启用的线程池
文章 更新时间:
CompletableFuture 默认启用的线程池 java中很多异步, 如果在不指定线程池的情况下,都是在ForkJoinPool.common线程池中执行, 而这个线程池中的所有线程都是Daemon(守护)线程, 所以,当主线程结束时,这些线程无论执行完毕都会退出系统。 核心代码: CompletableFutu
-
类Gin 前缀树路由Router 匹配
文章 更新时间:
类Gin 前缀树路由Router 匹配 /:lang/doc /:lang/tutorial /:lang/intro /about /p/blog /p/related [ ](https://cf.maocaoying.com/images/2022/11/02/d96d71d5cb8312964e3c200b1e
-
shell set -e
文章 更新时间:
shell set e shell中脚本运行中可能出现命令执行失败的情况,如果执行失败对后续有影响那么就应该退出脚本,不继续往下执行。set e 命令就可以避免操作失败还继续往下执行的问题。 set命令的e参数: linux系统自带的说明是:“Exit immediately if a simple command e
-
shell trap命令
文章 更新时间:
shell trap命令 /bin/bash trap "rm server;kill 0" EXIT trap 命令用于在 shell 脚本退出时,删掉临时文件,结束子进程。 可以捕捉信号
-
find 命令过滤时间
文章 更新时间:
find 命令过滤时间 需求:删除 /home/file/ 目录下10天之前生成的txt类型的文件 find /home/file/ ctime +10 name ".txt" print | xargs rm f 或者 find /home/file/ ctime +10 name ".txt" delete 经过测
-
java编译成可执行文件
文章 更新时间:
java编译成可执行文件 <build <pluginManagement< lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) <plugins <plugin <groupIdorg.apache
-
golang validator 校验参数
文章 更新时间:
golang validator 校验参数 https://www.cnblogs.com/jiujuan/p/13823864.html type User struct { Name string json:"name" validate:"min=0,max=35" Age unit8 json:"age" va
-
10 张图打开 CPU 缓存一致性的大门
文章 更新时间:
10 张图打开 CPU 缓存一致性的大门 正文 [ ](https://cf.maocaoying.com/images/2023/02/03/6589b53524abee7b0224c80e07695982.png) CPU Cache 的数据写入 随着时间的推移,CPU 和内存的访问性能相差越来越大,于是就在 CP
-
Linux Curl Command 指令與基本操作入門教學
文章 更新时间:
Linux Curl Command 指令與基本操作入門教學 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [blog.techbridge.cc](https://blog.techbridge.cc/2019/02/01/linuxcurlcomman
-
超全总结:Go 读文件的 10 种方法
文章 更新时间:
超全总结:Go 读文件的 10 种方法 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.yunweipai.com](http://www.yunweipai.com/42233.html) Go 中对文件内容读写的方法,非常地多,其中大多数是基于
-
python: 格式化字符串 f() 用法
文章 更新时间:
python: 格式化字符串 f() 用法 原文地址 [blog.csdn.net](https://blog.csdn.net/lizhaoyi123/article/details/102731501) [](http://creativecommons.org/licenses/bysa/4.0/)版权声明:本文
-
一文读懂 Docker 原理 - 廖雪峰的官方网站
文章 更新时间:
一文读懂 Docker 原理 廖雪峰的官方网站 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.liaoxuefeng.com](https://www.liaoxuefeng.com/article/1481991528644643) 一文读懂
-
Go 每日一库之 testify
文章 更新时间:
Go 每日一库之 testify 原文地址 [darjun.github.io](https://darjun.github.io/2021/08/11/godailylib/testify/) 简介 testify 可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了。testify 提供了很多方
-
nodejs 操作 mysql html转markdown
文章 更新时间:
nodejs 操作 mysql html转markdown npm init install package "dependencies": { "mysql": "^2.18.1", "nodehtmlmarkdown": "^1.3.0" } code import { createConnection } fro
-
Go语言 CSP
文章 更新时间:
Go语言 CSP CSP(communicating sequential processes)并发模型 Go实现了两种并发形式,第一种是大家普遍认知的多线程共享内存,其实就是 Java 或 C++ 等语言中的多线程开发;另外一种是Go语言特有的,也是Go语言推荐的 CSP(communicating sequenti
-
es match_phase 调整内容搜索, 全包含
文章 更新时间:
es matchphase 调整内容搜索, 全包含 优化了下,每次想搜索 全包含时候,带上prefix 引号 ' | " 即可 if strings.HasPrefix(keyword, "\"") || strings.HasPrefix(keyword, "'") { keyword = keyword[1:] /
-
redis 工作掌握技能
文章 更新时间:
redis 工作掌握技能 [ ](https://cf.maocaoying.com/test/images/2023/03/22/de9f22198e2abbfd2b742ce63bb1f668.png) Redis 是一种基于键值对(keyvalue)的 NoSQL 数据库。 比一般键值对数据库强大的地方,Redi
-
create database prisma_db;
文章 更新时间:
create database prismadb; create database prismadb; create user 'prisma'@'%' identified by 'xxxxfxxxx'; grant all privileges on prisma. to 'prisma'@'%' with gra
-
在 Go语言程序运行时(runtime)实现了一个小型的任务调度器。这套调度器的工作原理类似于操作系统调度线程,Go 程序调度器可以高效地将 CPU 资源分配给
文章 更新时间:
在 Go语言程序运行时(runtime)实现了一个小型的任务调度器。这套调度器的工作原理类似于操作系统调度线程,Go 程序调度器可以高效地将 CPU 资源分配给 在 Go语言程序运行时(runtime)实现了一个小型的任务调度器。这套调度器的工作原理类似于操作系统调度线程,Go 程序调度器可以高效地将 CPU 资源分配
-
GOMAXPROCS 与容器的相处之道
文章 更新时间:
GOMAXPROCS 与容器的相处之道 引言 众所周知,GOMAXPROCS 是 Golang 提供的非常重要的一个环境变量设定。通过设定 GOMAXPROCS,用户可以调整 Runtime Scheduler 中 Processor(简称P)的数量。由于每个系统线程,必须要绑定 P 才能真正地进行执行。所以 P 的数
-
静态pod
文章 更新时间:
静态pod 静态Pod有什么作用?有哪些内置静态Pod? 静态 Pod 通常绑定到某个节点上的 kubelet。 其主要用途是运行自托管的控制面。 因为使用静态Pod可以有效预防通过kubectl、或管理工具操作的误删除,可以利用它来部署一些核心组件应用,保障应用服务总是运行稳定数量和提供稳定服务。 在自托管场景中,使
-
quit := make(chan os.Signal)
文章 更新时间:
quit := make(chan os.Signal) quit := make(chan os.Signal) signal.Notify(quit, syscall.SIGKILL, syscall.SIGQUIT, syscall.SIGINT, syscall.SIGTERM) <quit go启动 hang
-
json文件增加注释支持
文章 更新时间:
json文件增加注释支持 json 当配置文件时,描述清晰,规范,通用,各种好处 尾后逗号 (有时叫做“终止逗号”)在向 JavaScript 代码添加元素、参数、属性时十分有用。如果你想要添加新的属性,并且上一行已经使用了尾后逗号,你可以仅仅添加新的一行,而不需要修改上一行。这使得版本控制的代码比较(diff)更加清
-
golang 值传递
文章 更新时间:
golang 值传递 背景 先说结论,Go 里面没有引用传递,Go 语言是值传递。很多技术博客说 Go 语言有引用传递,都是没真的理解 Go 语言。 值传递 指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传递 指在调用函数时将实际参数的地址直接传递到函数中,那
-
context.Context CancelFunc done
文章 更新时间:
context.Context CancelFunc done 我们可以通过一个代码片段了解 context.Context 是如何对信号进行同步的。在这段代码中,我们创建了一个过期时间为 1s 的上下文,并向上下文传入 handle 函数,该方法会使用 500ms 的时间处理传入的请求: func main() {
-
go build ldflags
文章 更新时间:
go build ldflags /bin/bash Exit the script if an error happens set e APPNAME=$1 APPVERSION=v$(cat version) BUILDVERSION=$(git log 1 oneline) BUILDTIME=$(date "+
-
go gctrace 调试GC日志
文章 更新时间:
go gctrace 调试GC日志 gctrace 用途主要是用于跟踪 GC 的不同阶段的耗时与 GC 前后的内存量对比。 信息比较简洁,可以用于对 runtime 本身进行调试之外,还可以观察线上应用的 GC 情况。 Dave Cheney 就写了一个工具 [gcvis](https://link.zhihu.com
-
Golang 实现单机百万长连接服务 - 美图的三年优化经验(转)
文章 更新时间:
Golang 实现单机百万长连接服务 美图的三年优化经验(转) 美图长连接服务简介 随着科技的飞速发展,技术的日新月异,长连接的运用场景日益增多。不仅在后端服务中被广泛运用,比较常见的有数据库的访问、服务内部状态的协调等,而且在 App 端的消息推送、聊天信息、直播弹字幕等场景长连接服务也是优选方案。长连接服务的重要性
-
go 性能runtime.ReadMemStats + pprof
文章 更新时间:
go 性能runtime.ReadMemStats + pprof runtime.MemStats var ms runtime.MemStats runtime.ReadMemStats(&ms) https://pkg.go.dev/runtimeMemStats pprof工具 import( "net/htt
-
golang defer 小知识
文章 更新时间:
golang defer 小知识 defer return 先执行return 再执行defer func DeferFunc1(i int) (t int) { // t = i // 这里直接用变量t defer func() { t += 3 }() return t } 1. 将返回值t赋值为传入的i,此时t为
-
MMU 内存管理
文章 更新时间:
MMU 内存管理 [ ](https://cf.maocaoying.com/images/2023/04/10/c152108fcbd11823ac602ad828246840.png) [ ](https://cf.maocaoying.com/images/2023/04/10/208c5e12198d00616
-
const cl = 10
文章 更新时间:
const cl = 10 const cl = 10 cl是字面量10的对等符号。 所以在golang中,常量是无法取出地址的,因为字面量符号并没有地址而言。 println(&cl,cl) // error
-
golang map 值拷贝,value赋值
文章 更新时间:
golang map 值拷贝,value赋值 package main import "fmt" type Student struct { Name string } var list map[string]Student func main() { list = make(map[string]Student) s
-
golang interface 小题 接口初始化问题
文章 更新时间:
golang interface 小题 接口初始化问题 package main import ( "fmt" ) type People interface { Show() } type Student struct{} func (stu Student) Show() { } func live() Peopl
-
golang channel 特性
文章 更新时间:
golang channel 特性 golang channel 特性 ● 给一个 nil channel 发送数据,造成永远阻塞 ● 从一个 nil channel 接收数据,造成永远阻塞 ● 给一个已经关闭的 channel 发送数据,引起 panic ● 从一个已经关闭的 channel 接收数据,如果缓冲区中为
-
可用性,容错性
文章 更新时间:
可用性,容错性 可用性,容错性 [](https://cf.maocaoying.com/images/2023/04/10/538d38600b59cc13ff217a3627fd5d8a.png)
-
分布式BASE理论
文章 更新时间:
分布式BASE理论 BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写。 BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的,其核心思想
-
goroutine 通过chan控制new速率
文章 更新时间:
goroutine 通过chan控制new速率 package main import ( "fmt" "math" "runtime" ) func busi(ch chan bool, i int) { fmt.Println("go func ", i, " goroutine count = ", runtim
-
golang 初始化struct
文章 更新时间:
golang 初始化struct //第一种,在Go语言中,可以直接以 var 的方式声明结构体即可完成实例化 var t T t.a = 1 t.b = 2 //第二种,使用 new() 实例化 t := new(T) //第三种,使用字面量初始化 t := T{a, b} t := &T{} //等效于 new(T
-
Go并发调用协程goroutine并通过管道chan收集返回值
文章 更新时间:
Go并发调用协程goroutine并通过管道chan收集返回值 这里整理一下go开发当中用到了并发协程多任务,同时收集返回多任务结果,go 协程没有直接返回,只能通过chan返回收集,其中用到几个特性 缓存管道是当满的时候是阻塞的,这个特性可以用到并发控制 需要用到&sync.WaitGroup{} 也就是说并发请求中
-
CompletableFuture 并发获取 方法结果
文章 更新时间:
CompletableFuture 并发获取 方法结果 package thread; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.CompletableFut
-
sed -n 4p /Users/miller/wrapdrive/echarts/delta/data1675753747.txt | awk '{ for(
文章 更新时间:
sed n 4p /Users/miller/wrapdrive/echarts/delta/data1675753747.txt | awk '{ for( sed n 4p /Users/miller/wrapdrive/echarts/delta/data1675753747.txt | awk '{ for(i
-
springboot 常规controller exception Result 注解 参数校验
文章 更新时间:
springboot 常规controller exception Result 注解 参数校验 好久没写springboot了。看到了 回顾下。 一个优秀的 Controller 层逻辑 说到 Controller,相信大家都不陌生,它可以很方便地对外提供数据接口。它的定位,我认为是「不可或缺的配角」。 说它不可或缺
-
CAS 会先把 Entry 现在的 value 跟线程当初读出的值相比较,若相同,则赋值;若不相同,则赋值执行失败。一般会通过 while/for 循环来重新执
文章 更新时间:
CAS 会先把 Entry 现在的 value 跟线程当初读出的值相比较,若相同,则赋值;若不相同,则赋值执行失败。一般会通过 while/for 循环来重新执 CAS 会先把 Entry 现在的 value 跟线程当初读出的值相比较,若相同,则赋值;若不相同,则赋值执行失败。一般会通过 while/for 循环来重新
-
go chan 判断是否closed
文章 更新时间:
go chan 判断是否closed golang 中channel 即使已经关闭了, 仍然可以将channel中的数据读出来, 并不会报错。 一般的写法: data, ok := < chan, 只有当channel无数据,且channel被close了,才会返回ok=false。 func isChanClosed
-
Makefile
文章 更新时间:
Makefile 原文地址 [seisman.github.io](https://seisman.github.io/howtowritemakefile/rules.htmlid6) 伪目标 最早先的一个例子中,我们提到过一个 “clean” 的目标,这是一个“伪目标”, clean: rm .o temp 正像我
-
golang GMP调度
文章 更新时间:
golang GMP调度 对于Go中的阻塞需要了解一下有哪些场景会发生,可以参考上面提到的GPM文章。 常见的阻塞一般发生在像网络请求、系统调用进行磁盘IO操作、执行Sleep函数等,而针对每一种阻塞的处理方式也不一样。 如果是网络导致的阻塞的话,则直接将G切换到网络轮询器NetPoller继续执行, 为PM重新调度过
-
Java 使用 Disruptor 并发框架
文章 更新时间:
Java 使用 Disruptor 并发框架 一、什么是 Disruptor Disruptor 是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的 JMS),也可以认为是一个[观察者模式](https://so.csdn.net/so/search?q=%E8%A7%82%E5%AF%9F%E8%80%