技术
-
api对外对内 注解区分
文章 更新时间:
api对外对内 注解区分 https://mp.weixin.qq.com/s/fesjDiC1il521E8wAM66Q 根据这个特点,我们可以对所有经过网关的请求的header里添加一个字段,业务侧接口收到请求后,判断header里是否有该字段,如果有,则说明该请求来自外部,没有,则属于内部服务的调用,再根据该接口
-
Linux
清单 更新时间:
-
java
清单 更新时间:
-
算法
清单 更新时间:
-
前端
清单 更新时间:
-
DataBase
清单 更新时间:
-
goang
清单 更新时间:
-
其他
清单 更新时间:
-
旧文章 189
文章 更新时间:
旧文章 189 [](https://cf.maocaoying.com/images/2023/01/11/7f00223dbe44233db4f9f4c6645e9609.jfif)
-
旧文章 194
文章 更新时间:
旧文章 194 [](https://cf.maocaoying.com/images/2023/01/13/6b1189f9ca2826c4ca428ba87dd2a002.png)
-
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
-
https://huggingface.co/
文章 更新时间:
https://huggingface.co/ Hugging face 起初是一家总部位于纽约的聊天机器人初创服务商,他们本来打算创业做聊天机器人,然后在github上开源了一个Transformers库,虽然聊天机器人业务没搞起来,但是他们的这个库在机器学习社区迅速大火起来。目前已经共享了超100,000个预训练模
-
Arweave Vs Filecoin
文章 更新时间:
Arweave Vs Filecoin [https://ardrive.io/arweavevsfilecoin/](https://ardrive.io/arweavevsfilecoin/) With so many new technologies and applications coming out eve
-
阿里云-- 表格存储
文章 更新时间:
阿里云 表格存储 [阿里云原文](https://help.aliyun.com/documentdetail/27280.html?spm=a2c4g.11186623.0.0.5da4728b0EdfFl) 表格存储(Tablestore)面向海量结构化数据提供Serverless表存储服务,同时针对物联网场景深度
-
(转)与一伙爬虫团队的斗智斗勇
文章 更新时间:
(转)与一伙爬虫团队的斗智斗勇 近期发生了公司系统遭受大规模爬虫攻击的事件。在国庆节后出现了注册但未下单的用户进行多次请求,初步定位为爬虫用户并采取了集团IP封锁的方法,但是爬虫团队逐渐增强,并且攻击手法更加隐蔽。由于防护策略不断升级,导致爬虫团队进化速度快于技术人员的掌控能力,最终导致技术人员全面告败的局面。 爬虫逐
-
Discard 是如何存储数十亿条信息的? | by Bo Ingram | Cointime
文章 更新时间:
Discard 是如何存储数十亿条信息的? | by Bo Ingram | Cointime 我们想要一个与我们一起增长的数据库,但希望它的维护需求不会与我们的存储需求一起增长。 discard 数据从mongodb 迁移到 Cassandra(GC导致某些问题) 又到 ScyllaDB (c++)的故事 [原文](
-
海量长链接消息推送系统设计实践
文章 更新时间:
海量长链接消息推送系统设计实践 原文: https://shimo.im/docs/5xkGMW0moluDK93X/read 分布式推送系统 https://xiaorui.cc/archives/7222 相关ppt 分享 https://github.com/rfyiamcool/shareppt [ ](htt
-
https://github.com/rfyiamcool/share_ppt
文章 更新时间:
https://github.com/rfyiamcool/shareppt https://github.com/rfyiamcool/shareppt 高性能架构, 中间件原理实践,云原生,Golang 等 分享的PPT
-
grpc stream 单向stream 双向stream
文章 更新时间:
grpc stream 单向stream 双向stream 前言 gRPC Streaming 是基于 HTTP/2 的 本章节将介绍 gRPC 的流式,分为三种类型: Serverside streaming RPC:服务器端流式 RPC Clientside streaming RPC:客户端流式 RPC Bidi
-
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.
-
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 则代表整个链
-
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/)版权声明:本文
-
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%
-
性能监控之 Golang 应用接入 Prometheus 监控
文章 更新时间:
性能监控之 Golang 应用接入 Prometheus 监控 Prometheus 提供了 官方版 Golang 库 用于采集并暴露监控数据,本文快速为你介绍如何使用官方版 Golang 库来暴露 Golang runtime 相关的数据,以及其它一些基本简单的示例,并使用 Prometheus 监控服务来采集指标展
-
golang 方法泛型
文章 更新时间:
golang 方法泛型 函数泛型是ok的。 func sumArr[T int | float64](arr []T) T { var sum T for , val := range arr { //累计求和 sum += val } return sum } func average[T int | float64
-
golang "crypto/rand"
文章 更新时间:
golang "crypto/rand" import cr "crypto/rand" func baseRandomArray(cnt int) []int { b := make([]byte, cnt) m, := cr.Read(b) arr := b[:m] ret := make([]int, 0) fo
-
go logrus
文章 更新时间:
go logrus main.go package main import ( "fmt" "demolog/logs" "github.com/sirupsen/logrus" ) func main() { log := logs.New(logs.Config{ Module: "testMain", Level
-
go zap日志
文章 更新时间:
go zap日志 如果是json格式的log。 有个更优秀的 [zerolog](https://github.com/rs/zerolog) [ ](https://cf.maocaoying.com/images/2023/05/28/ae0e725944356c3a7a34100196f340bd.png) 基础
-
go 传参 传值 传引用
文章 更新时间:
go 传参 传值 传引用 引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到原内容数据。 严格来说Go语言只有值传递这一种传参方式,Go语言是没有引用传递的。Go语言中可以借助传指针来实现引用传递的效果。 函数参数使用指针参数,传参的时候其实拷贝一份指针参数,也就是拷贝了一份
-
go sync.Pool [类似netty Recycler]
文章 更新时间:
go sync.Pool [类似netty Recycler] 1. 简介 ===== 本文将介绍 Go 语言中的 sync.Pool并发原语,包括sync.Pool的基本使用方法、使用注意事项等的内容。能够更好得使用sync.Pool来减少对象的重复创建,最大限度实现对象的重复使用,减少程序 GC 的压力,以及提升程
-
Go 源码里的这些 //go: 指令
文章 更新时间:
Go 源码里的这些 //go: 指令 如果你平时有翻看源码的习惯,你肯定会发现。咦,怎么有的方法上面总是写着 //go: 这类指令呢。他们到底是干嘛用的? go:linkname //go:linkname localname importpath.name 该指令指示编译器使用 importpath.name 作为源
-
Sync.pool 不需要加锁却能保证线程安全
文章 更新时间:
Sync.pool 不需要加锁却能保证线程安全 原文地址 [juejin.cn](https://juejin.cn/post/7224903881728491580) 1. 简介 ===== 我们在 [Sync.Pool: 提高 go 语言程序性能的关键一步](https://juejin.cn/post/72192
-
golang 数组 切片
文章 更新时间:
golang 数组 切片 golang 数组 切片 数组 定义h时指定大小,就是属于数组 数组: s := [6]int{1, 2, 3, 4, 5, 6} 切片: arr := make([]int, 6) 切片: s := []int{1, 2, 3, 4, 5, 6}
-
JVM成神路之GC分区篇 G1 GC ZGC
文章 更新时间:
JVM成神路之GC分区篇 G1 GC ZGC [原文](https://juejin.cn/post/7080030329922125854) [JVM系列专栏 ](https://juejin.cn/column/7057537880624726053) 作者其他专栏 https://juejin.cn/user/8
-
局部性原理——各类优化的基石
文章 更新时间:
局部性原理——各类优化的基石 学过计算机底层原理、了解过很多架构设计或者是做过优化的同学,应该很熟悉局部性原理。即便是非计算机行业的人,在做各种调优、提效时也不得不考虑到局部性,只不过他们不常用局部性一词。如果抽象程度再高一些,甚至可以说地球、生命、万事万物都是局部性的产物,因为这些都是宇宙中熵分布布局、局部的熵低导致
-
在 Go 中恰到好处的内存对齐 fieldalignment
文章 更新时间:
在 Go 中恰到好处的内存对齐 fieldalignment 重排序、指令对齐 type Part1 struct { a bool b int32 c int8 d int64 e byte } 占用内存: func main() { fmt.Printf("bool size: %d\n", unsafe.Size
-
微信扫码 - 关注公众号后网站自动登录
文章 更新时间:
微信扫码 关注公众号后网站自动登录 申请服务号 [ ](https://cf.maocaoying.com/images/2023/04/25/3a7ffb08d281969e9bf4133759d401c3.png) 扫码登录的具体过程是这样的:用户打开登录页面时,前端在页面加载完成后随即请求后台生成带参公众号二维码
-
linux go install
文章 更新时间:
linux go install 记录下,原先一直mac各种环境, 找个linux测试点东西,结果各种代理 环境问题 go代理 配置 配置 GOPROXY 环境变量,以下三选一 1. 七牛 CDN go env w GOPROXY=https://goproxy.cn,direct 2. 阿里云 go env w GO
-
go dlv debug 进程
文章 更新时间:
go dlv debug 进程 类似gdb LLDB 只有 Delve 是专门为 Go 语言设计开发的调试工具. 线上debug break断点. 1. 定位到函数某行,还可以。一直输入goroutines 能能看到哪里hang住。 2. 看哪些goroutine运行什么,bt也可以。 3. 看汇编... go ins
-
go 工具链 (未完待续)
文章 更新时间:
go 工具链 (未完待续) 1. package go mod init maocaoying.com/learn go mod tidy go install // install cmd into GOPTAH go get // 感觉废弃了,直接go mod tidy 2. go help cmd // help
-
Java 代码审计 - SSRF 漏洞
文章 更新时间:
Java 代码审计 SSRF 漏洞 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s?biz=Mzg2NzUzNzk1Mw==&mid=2247495511&idx=1
-
A Million WebSockets and Go
文章 更新时间:
A Million WebSockets and Go 原文地址 [www.freecodecamp.org](https://www.freecodecamp.org/news/millionwebsocketsandgocc58418460bb) by Sergey Kamardin A Million WebSo
-
(转)使用底层的 syscall.Socket 实现网络编程
文章 更新时间:
(转)使用底层的 syscall.Socket 实现网络编程 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s/sVLOFBdL6a1pOBFP8pSfw) 感受下 golang 调用原生socket的魅力 socket 函数是一个系统调用,用于在操作系统内核中创建一
-
向量数据库,未来十年最重要的新兴技术之一 - 墨天轮
文章 更新时间:
向量数据库,未来十年最重要的新兴技术之一 墨天轮 原文地址 [www.modb.pro](https://www.modb.pro/db/626594) 向量数据库不是依靠不同的类别和列表来组织我们的记录,而是将它们放在地图上。 今年,生成式人工智能已经在科技界及其他领域受到了广泛关注。无论是 ChatGPT 的散文还
-
mini-rpc demo
文章 更新时间:
minirpc demo 《Netty 核心原理剖析与 RPC 实践》 配套实战代码 rpc demo + springboot https://github.com/wangyapu/minirpc 学习下 spring 加载类 bean . provider + consumer ♈♉♊♋♌♍♎♏♐♑♒♓⛎ spr
-
Netty技巧- 避免内存拷贝:
文章 更新时间:
Netty技巧 避免内存拷贝: Netty 还提供了一些技巧来避免内存拷贝: CompositeByteBuf 是 Netty 中实现零拷贝机制非常重要的一个数据结构,它可以组合多个 Buffer 对象合并成一个逻辑上的对象,避免通过传统内存拷贝的方式将几个 Buffer 合并成一个大的 Buffer,我们经常使用 C
-
spring 相关笔记
文章 更新时间:
spring 相关笔记 初始化顺序 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactoryinitializeBean 0. invokeAwareMethods 处理BeanNameAware,BeanClassLoad
-
https://mp.weixin.qq.com/s/BfDN4VVCBsC3xCXaYDqynA
文章 更新时间:
https://mp.weixin.qq.com/s/BfDN4VVCBsC3xCXaYDqynA https://mp.weixin.qq.com/s/BfDN4VVCBsC3xCXaYDqynA DDD 是毒瘤还是香饽饽? 还是 那帮KPI的人拿出来的东西? 当一些概念被吹嘘起来的时候,你不去拥抱它,反而会产生问题
-
Fastclass 代理 cglib ASM
文章 更新时间:
Fastclass 代理 cglib ASM [ ](https://cf.maocaoying.com/images/2023/06/14/e52d5b7812ab5a7b1472b0ae2399c919.png) 代理类型: 对象实现接口,使用 JDK动态代理 对象没有实现接口,使用 Cglib动态代理 。jdk8
-
从 0 到 1:NIO-Selector (转)
文章 更新时间:
从 0 到 1:NIOSelector (转) 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [juejin.cn](https://juejin.cn/post/7230986641900224568) 前言 == 本篇博文是《从 0 到 1 学习 Ne
-
缓存 LRU LFU W-TinyLFU算法
文章 更新时间:
缓存 LRU LFU WTinyLFU算法 https://juejin.cn/post/6844904131883171847 LFU和LRU算法的不同之处,LRU的淘汰规则是基于访问时间,而LFU是基于访问次数的。 Caffine 采用WTinyLFU [ ](https://cf.maocaoying.com/i
-
socket是并发安全的吗?
文章 更新时间:
socket是并发安全的吗? [ ](https://cf.maocaoying.com/images/2023/05/10/5acff049026025180fbb8615dfa5eead.png) 1. 多线程并发读/写同一个TCP socket是线程安全的,因为TCP socket的读/写操作都上锁了。虽然线程安
-
使用 Arthas 热更新 Java 代码
文章 更新时间:
使用 Arthas 热更新 Java 代码 编译好后,提取class文件, 上传到server java jar arthasboot.jar attach连接响应进程号后 🔺 热更 redefine /root/xx.class 🔺🔺🔺 推荐使用 retransform。 https://arthas.aliyun.
-
HBase LSM 树存储引擎概要
文章 更新时间:
HBase LSM 树存储引擎概要 1. 前提 ===== 讲 LSM 树之前,需要提下三种基本的存储引擎,这样才能清楚 LSM 树的由来: 哈希存储引擎。 B 树存储引擎。 LSM 树(LogStructured Merge Tree)存储引擎。 2. 哈希存储引擎 ========= 哈希存储引擎哈希表的持久化实现
-
redis 淘汰策略
文章 更新时间:
redis 淘汰策略 noeviction:不淘汰任何数据,当内存不足时,执行缓存新增操作会报错,它是 Redis 默认内存淘汰策略。⭐️⭐️ allkeyslru:淘汰整个键值中最久未使用的键值。 allkeysrandom:随机淘汰任意键值。 volatilelru:淘汰所有设置了过期时间的键值中最久未使用的键值。
-
A* 寻路算法
文章 更新时间:
A 寻路算法 1. https://zhuanlan.zhihu.com/p/54510444 2. https://blog.csdn.net/hitwhylz/article/details/23089415 3. https://www.redblobgames.com/pathfinding/astar/int
-
golang netpoller 原生网络模型之源码全面揭秘(转)
文章 更新时间:
golang netpoller 原生网络模型之源码全面揭秘(转) 作者(Author):潘少 [链接(URL)](https://strikefreedom.top/archives/gonetpolliomultiplexingreactortochead18) 来源(Source):Strike Freedom
-
惊群效应
文章 更新时间:
惊群效应 原文地址 [blog.csdn.net](https://blog.csdn.net/sinat14913533/article/details/127420015) 什么是惊群效应 ======= 这个话题来自一个面试,当问到 Socket 编程中的 accept() 是否有惊群问题,引深又问到 epoll
-
Fuzzing (模糊测试),是一种自动化测试技术。它随机生成测试数据,来验证代码的功能是否可用。比如先定义一个可通过任何输入的 fuzz 测试,接着尝试不同的
文章 更新时间:
Fuzzing (模糊测试),是一种自动化测试技术。它随机生成测试数据,来验证代码的功能是否可用。比如先定义一个可通过任何输入的 fuzz 测试,接着尝试不同的 Fuzzing (模糊测试),是一种自动化测试技术。它随机生成测试数据,来验证代码的功能是否可用。比如先定义一个可通过任何输入的 fuzz 测试,接着尝试不同
-
go 编译时候嵌入 变量或者文件 embed
文章 更新时间:
go 编译时候嵌入 变量或者文件 embed 2种方案 ldflags | //go:embed hello.txt 1. ldflags // go build ldflags "X 'main.Version=1.1.1'" // 设置变量. 只适合设置变量 长文件用base64转成字符串,也支持小的二进制。600
-
一个 metrics 研发案例
文章 更新时间:
一个 metrics 研发案例 一个 metrics 研发案例 [](https://cf.maocaoying.com/images/2023/05/30/17da6af2c7ce00405e04e871d9efaf7e.png)
-
golang runtime 调度函数
文章 更新时间:
golang runtime 调度函数 runtime.Gosched() 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其它等待的任务运行,并在下次某个时候从该位置恢复执行。这就像跑接力赛,A跑了一会碰到代码runtime.Gosched()就把接力棒交给B了,A歇着了,B继续跑。 runti
-
LockSupport wait park sleep 范例
文章 更新时间:
LockSupport wait park sleep 范例 实际项目用的少,架不住面试用啊,concurrenthashmap 里有。 全文讲解 : https://pdai.tech/md/java/thread/javathreadxlockLockSupport.html 摘要: wait notify 先后顺
-
xargs mv迁移子文件夹内容 到某个目录
文章 更新时间:
xargs mv迁移子文件夹内容 到某个目录 下载的文件夹中,很多子目录下的html find . name ".html" | xargs I file mv file all find . mindepth 2 name “.txt” | xargs I file mv file ./ 原理: find命令便令当前
-
MySQL 为什么 varchar 字段用数字查无法命中索引,而 int 字段用字符串查却能命中
文章 更新时间:
MySQL 为什么 varchar 字段用数字查无法命中索引,而 int 字段用字符串查却能命中 字符串字段误使用数字进行查询,会导致隐式类型转换,无法命中索引的坑我相信大多数小伙伴都踩过。特别是当字段中存的大多数数据都是数字时,很容易先入为主... 字符串字段误使用数字进行查询,会导致隐式类型转换,无法命中索引的坑我
-
mysql int index vs varchar index
文章 更新时间:
mysql int index vs varchar index 虽然有的测试看起来, int varchar 都是索引(uniq index)查询速度没区别 但考虑 插入时候,int 可以保证递增,不会移动page 。而varchar每次存储还得移动 varchar 会单独存储一个字节,保存长度。 [ ](https
-
go 1.19 atomic 内存对齐
文章 更新时间:
go 1.19 atomic 内存对齐 此外,atomic包新增的Int64和Uint64类型还有一个特质,那就是Go保证其地址可以自动对齐到8字节上(即地址可以被64整除),即便在32位平台上亦是如此,这可是连原生int64和uint64也尚无法做到的[14]。 go101[15]在推特上分享了一个基于atomic
-
kafka rebalance 问题
文章 更新时间:
kafka rebalance 问题 Kafka 是我们最常用的消息队列,它那几万、甚至几十万的处理速度让我们为之欣喜若狂。但是随着使用场景的增加,我们遇到的问题也越来越多,其中一个经常遇到的问题就是:rebalance(重平衡)问题。 但是要想了解 rebalance,那就得先了解消费组(consumer group
-
kafka 分区分配策略 partition strategy
文章 更新时间:
kafka 分区分配策略 partition strategy RangeAssignor 假设n = 分区数 / 消费者数量,m = 分区数 % 消费者线程数量,那么前m个消费者每个分配n+1个分区,后面的(消费者线程数量 m)个消费者每个分配n个分区。如果多个topic, RoundRobin RoundRobin
-
如何设计一个高并发
文章 更新时间:
如何设计一个高并发 https://juejin.cn/post/7185736156573597756 [ ](https://cf.maocaoying.com/images/2023/06/07/1a83db65dc55274d4cdb7545facec80f.png)
-
you can use Hardhat to compile and deploy your contracts, and then use Truffle t
文章 更新时间:
you can use Hardhat to compile and deploy your contracts, and then use Truffle t you can use Hardhat to compile and deploy your contracts, and then use Truffle
-
golang xml parse
文章 更新时间:
golang xml parse https://github.com/qbmiller/xmlparse 主要是用到了这个库 "github.com/beevik/etree" package main import ( "fmt" "os" "path/filepath" "strings" "github.com
-
所有API接口都用POST? 还是只有GET/POST or Restful
文章 更新时间:
所有API接口都用POST? 还是只有GET/POST or Restful 看到一篇讲的不错的,记录下 ps: 我们目前只用了GET / POST 一定要纠结下 POST/GET,以及 Restful。好吧,Restful 能明确列出来的好处,就那么几点(如果有疏漏的请在评论区里补充)。 Restful优点如下: 表
-
Too many open files 错误深度分析
文章 更新时间:
Too many open files 错误深度分析 原文 https://mp.weixin.qq.com/s/IW8i3kJSMOHu3nLNgpxwhw 0x03 它的产生原因是什么? 本质上来讲,产生这个错误的原因,就是内核为进程分配的fd不够用了。 在linux的世界里,一些皆文件,当我们做打开文件、创建so
-
InfluxDB vs Prometheus
文章 更新时间:
InfluxDB vs Prometheus info InfluxDB : 仅仅是时序数据库 Prometheus : 是一个监控系统,它不仅仅包含了时间序列数据库,还有的抓取、检索、绘图、报警的功能 获取方式 InfluxDB : push Prometheus : pull [ ](https://cf.maoc
-
云计算(未完)
文章 更新时间:
云计算(未完) 云计算的运营模式: 公有云:由云服务提供商自己搭建,我们作为使用者去使用他们所提供的资源; 私有云:通常是企业或单位内部自己搭建的一个数据中心 混合云:核心数据放在私有云上, 其他业务放在公有云上; 行业云:根据不同行业的特点来划分:政务云、医疗云、运输云; 云计算的服务模式: 基础设施即服务 IAAS
-
使用golang 全文搜索引擎 zincsearch
文章 更新时间:
使用golang 全文搜索引擎 zincsearch 全文搜索引擎有许多,其中最出名的是elasticsearch, 无论是性能还是体验都是最顶尖的,但是对小应用来不友好,因为小应用的硬件资源比较少,所以能够通过库/模块的方式内置在应用中会是比较好的选择,就像sqlite3一样。 golang版本轻量级的 [zincs
-
CMD tcpdump (未完待续)
文章 更新时间:
CMD tcpdump (未完待续) tcpdump i en0 指定网卡 A 已ASCII 形式打印. 如,向mysql服务端传输的sql语句就是以ASCII码形式进行传输。我们就可以使用A参数查看传输的具体sql语句。 w /tmp/tp.log 数据写入指定文件后,方便使用其他数据包分析软件进行分析。如 wire
-
如何保证API接口防重,幂等
文章 更新时间:
如何保证API接口防重,幂等 [ ](https://cf.maocaoying.com/images/2023/06/11/e24663bd9ac48228504e4d67c5320ded.png) 看了几篇,就是redis 简单实用, 拿token + route api + md5(请求参数)(如果有验签,直接用
-
CompletableFuture 常用示例
文章 更新时间:
CompletableFuture 常用示例 CompletableFuture<String completableFuture = new CompletableFuture<String(); String result = completableFuture.get() // get() 方法会一直阻塞直到 F
-
快速发起100w http请求 Apache HttpAsyncClient
文章 更新时间:
快速发起100w http请求 Apache HttpAsyncClient httpasyncclient 是 Apache 提供的一个 HTTP 的工具包,主要提供了 reactor 的 io 非阻塞模型,实现了异步发送 http 请求的功能。 用pool概念的话,每个线程是阻塞等待结果的 。 类比: jedis
-
httpasyncclient 引起的内存泄漏问题
文章 更新时间:
httpasyncclient 引起的内存泄漏问题 List<HttpUriRequest cache = new ArrayList<HttpUriRequest(n); for (int i = 0; i < n; i++) { HttpGet request = new HttpGet("http://www.b
-
如何高效优雅的使用java枚举ENUM
文章 更新时间:
如何高效优雅的使用java枚举ENUM 阿里开发者 枚举在系统中的地位不言而喻,状态、类型、场景、标识等等,少则十几个多则上百个,相信以下这段代码很常见,而且类似的代码到处都是,目标:消除这类冗余代码。 / 根据枚举代码获取枚举 / public static OrderStatus getByCode(String
-
go websocket几个库
文章 更新时间:
go websocket几个库 fasthttp/websocket ⭐⭐⭐⭐⭐接过了gorilla/websocket,继续维护 gorilla/websocket❎ nhooyr/websocket ❎ lxzan/gws gobwas/ws 测试讨论:https://v2ex.com/t/917122
-
ProtoStuff 序列化java对象
文章 更新时间:
ProtoStuff 序列化java对象 序列化后存json 问题 速度慢,cpu占用高 存储空间大,浪费资源 决定使用 ProtoStuff 代替 Jackson 框架 ProtoStuff 是一种基于 Google Protocol Buffers(protobuf)协议的序列化和反序列化库,它可以将 Java 对
-
mysql事务隔离 + 事务4个特性ACID
文章 更新时间:
mysql事务隔离 + 事务4个特性ACID MySQL 的事务隔离级别一共有四个,分别是读未提交、读已提交、可重复读以及可串行化。 读未提交 xxx 读已提交(READ COMMITTED) [ ](https://cf.maocaoying.com/images/2023/06/13/eab54445f4a5bbe
-
mysql index merge 一个死锁案例
文章 更新时间:
mysql index merge 一个死锁案例 https://xie.infoq.cn/article/ae89edfd8feb4e5c84342e096 看过程是因为 交叉索引 接着查看了 SQL 执行计划,发现使用了 indexmerge。indexmerge 是 MySQL 5.1 后引入的一项索引合并优化技
-
go 校验实现了全部接口
文章 更新时间:
go 校验实现了全部接口 go 校验实现了全部接口 type EventHandler interface { OnOpen(c Conn) context.Context OnRead(ctx context.Context, c Conn) OnClose(ctx context.Context, c Conn)
-
springboot 自定义参数注解
文章 更新时间:
springboot 自定义参数注解 pom import < 根据 JSR 380 规范,validationapi依赖项包含标准验证 API <dependency <groupIdjavax.validation</groupId <artifactIdvalidationapi</artifactId <ver
-
springboot 过滤器Filter vs 拦截器Interceptor vs 切片Aspect 详解
文章 更新时间:
springboot 过滤器Filter vs 拦截器Interceptor vs 切片Aspect 详解 csdn 总结的,挺好的 更详细内容: https://blog.csdn.net/zzhongcy/article/details/102498081 拦截机制有三种: 1. 过滤器(Filter)能拿到htt
-
Redis接口限流 注解方式 AOP
文章 更新时间:
Redis接口限流 注解方式 AOP Redis 除了做缓存,还能干很多很多事情:分布式锁、限流、处理请求接口幂等性。。。太多太多了~ 今天想和小伙伴们聊聊用 Redis 处理接口限流,这也是最近的 TienChin 项目涉及到这个知识点了,我就拎出来和大家聊聊这个话题,后面视频也会讲。 1. 准备工作 首先我们创建一
-
AOP 方式增加log注解,记录项目日志
文章 更新时间:
AOP 方式增加log注解,记录项目日志 非普通请求返回日志,普通日志可以直接在filter 或者interceptor aftercomplete中记录 eg: 审计日志,admin等,入库 定义log注解 @Target({ElementType.PARAMETER, ElementType.METHOD}) @R
-
可重复读 Request RepeatedlyRequestWrapper
文章 更新时间:
可重复读 Request RepeatedlyRequestWrapper [开源项目](https://github.com/lenve/tienchin/blob/main/tienchin/tienchincommon/src/main/java/org/javaboy/tienchin/common/filte
-
Spring AOP在项目中的典型应用场景
文章 更新时间:
Spring AOP在项目中的典型应用场景 在日常的开发中,有很多重复的代码,我们总是希望将之简化,AOP 就是一个非常常用的简化手段。简化的思路一般是这样: [ ](https://cf.maocaoying.com/images/2023/06/14/095fc89bd3d045d05def0193d94a2d6c
-
SpringBoot常用注解之@Retryable 重试策略
文章 更新时间:
SpringBoot常用注解之@Retryable 重试策略 在实际工作中, 重处理是一个非常常见的场景, 比如: 1. 发送消息失败。 2. 调用远程服务失败。 3. 争抢锁失败。 这些错误可能是因为网络波动造成的, 等待过后重处理就能成功. 通常来说, 会用 try/catch,while 循环之类的语法来进行重处
-
game 状态同步 帧同步
文章 更新时间:
game 状态同步 帧同步 介绍过网游三种常见的网络架构:C/S架构,P2P架构,还有一种C/M架构,分别如下图所示。 [ ](https://cf.maocaoying.com/images/2023/06/15/6a0706806cec7bee5e9c6251c0cf47ac.png) 网络游戏中通过同步机制来保证
-
谈谈分布式系统中的补偿机制如何设计
文章 更新时间:
谈谈分布式系统中的补偿机制如何设计 一、关于业务补偿机制 1、什么是业务补偿 2、业务补偿设计的实现方式 二、关于回滚 1、显示回滚 2、回滚的实现方式 三、关于重试 1、重试的使用场景 2、重试策略 3、重试时的注意事项 四、业务补偿机制的注意事项 1、ACID 还是 BASE 2、业务补偿设计的注意事项 我们知道,
-
网站全变灰色 css
文章 更新时间:
网站全变灰色 css [原文](https://mp.weixin.qq.com/s?biz=MzIxMzE2OTA1NA==&mid=2247489732&idx=1&sn=8e226f745c09d4df7985537b57450a9b&chksm=97bbbe35a0cc37230dd1db84ff63338d4
-
新一代分布式任务调度框架 PowerJob
文章 更新时间:
新一代分布式任务调度框架 PowerJob [ ](https://cf.maocaoying.com/images/2023/06/15/b24c4dbae204aa53f547f8e2535179fe.png) xxljob可以视为第二代任务调度框架,在一定程度上解决了Quartz的不足,在过去几年中是个非常优秀的
-
java JUC 队列汇总
文章 更新时间:
java JUC 队列汇总 [一、阻塞队列介绍](a) [二、3 种类型的 BlockingQueue](b) [三、阻塞队列成员介绍](c) [四、BlockingQueue 的方法](d) [五、Queue 中 remove/poll, add/offer, element/peek 区别](e) java6增加了