自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(263)
  • 资源 (2)
  • 收藏
  • 关注

原创 ​带着问题撸源码系列-zookeeper-index

带着问题撸源码系列-zookeeper-源码调试选举过程 附mac环境搭建带着问题撸源码系列-zookeeper-客户端怎么给sever发请求

2020-05-13 11:53:17 203

原创 ES:must_not 是否能走索引快速过滤?

简单来说应该还是不能用上索引,需要后置逐条过滤,会比较慢。

2023-12-12 17:48:39 222

原创 ChatGPT原理学习

例子:模型输出4种回答。标注员标好了每种回答的分数是多少。损失函数:让分高(好的回答)跟分低(坏的回答)的差距大。输入问题 – PPO模型输出(回答的问题) – 过奖励模型 – 输出分数是高是低 – 反馈到PPO模型迭代。给个任务描述,给个例子,prompt,就能得出结果。GPT1:先要有个预训练模型,然后基于具体的应用做fine-tune(下游任务做微调),才能用。区别:BERT:完形填空:中间扣空了预测;不搞fine-tune了,直接搞个大模型,做所有的事情。奖励模型(让模型知道什么是好的回答)

2023-03-22 16:29:49 219

原创 DDD的个人消化

参考b站[马士兵疯狂卖课视频也可以看看,不过卖课内容太多了]个人理解粗浅的理解几个点,后面再丰富实体都改成充血模型,不仅有属性,还有操作,如student的run通过xxxService 来操作两个或者多个实体 如 xuanke(student, teacher)搞一些接口抽象一把不要直接实现这样所谓的【业务编排】就会很清晰,一目了然,具体的实现就看接口的implement,也可以轻易地替换实现。...

2022-02-09 17:00:32 460

原创 golang实现N个goroutine交替打印数字

参考https://blog.csdn.net/liyunlong41/article/details/108999918核心思想多个协程,以类似链表的形式串起来,下一个协程的输入channel是上一个协程的输出channel。每个协程不断接收上一个协程的channel传来的数据;打印完了,往下一个channel输出,触发下一个协程输出。以核心思想实现的代码func TestPrintParr(t *testing.T) { start := make(chan int) lastCh :=

2022-01-11 16:13:10 596

原创 golang once 理解 原理

使用场景经常用于初始化某些配置,如果不希望在init的时候就初始化而是用到的时候再懒加载,可以使用once。原理参考https://zhuanlan.zhihu.com/p/44360489理解主要是用了一个mutex和一个原子int。个人理解:原子int的成本比mutex低,用于快速判断是否要执行once里的函数最终互斥主要还是靠mutex。看注释的时候遇到一个问题:这里说如果函数f panic了的话,就认为返回了,未来的调用会返回,不会调用f。好奇的是,如果panic了应该整个协程

2021-12-22 17:23:09 862

原创 google context

参考https://go.dev/blog/contexthttps://draveness.me/golang/docs/part3-runtime/ch06-concurrency/golang-context/每个请求会在协程处理,一般每个request handler会启动另外的协程去访问后端,比如数据库和rpc。这些协程需要访问request里的值,比如用户身份等。当一个请求取消了或者超时了,所有在这个请求上工作的协程都应该快速退出,让系统可以回收这些协程正在使用的资源google开发了c

2021-12-13 20:56:53 215

原创 规则引擎:golang: cel-go

规则引擎:golang: cel-go参考:gohttps://github.com/google/cel-spec/blob/master/doc/langdef.md

2021-11-17 14:28:04 1625

原创 go best pratice 记录

一些参考文章Go语言最佳实践Go-advice

2021-11-10 11:25:21 62

原创 golang for range的坑

参考核心点for range的时候index和value每次都是同一个空间,然后把相应的数据拷进来,所以如果取地址的话用于都是同一个地址codefunc TestForRange(t *testing.T) { slice := []int{0, 1, 2, 3} myMap := make(map[int]*int) for index, value := range slice { fmt.Println("oriSliceValue", &slice[index]) f

2021-11-08 11:57:03 192

原创 golang接口学习

深入了解接口参考接口的本质是引入一个中间层,上游调的时候就直接调接口就行,而不需要关系具体的实现,简单的例子:定义一个phone interface里面有个call 方法那么定义一个struct:nokiephone实现了call 方法就认为nokiaphone实现了接口看下实战一般会怎么使用呢假设一个engine的执行流程是Match -> load -> modify然后需要根据请求中的类型来决定不同的类型的match怎么做,load怎么做,modify怎么做。那么我们

2021-11-07 17:07:53 75

原创 区间重合算法:多个时间段重合判断:python代码实现

背景如何判断多个时间区间是否重叠参考网上搜到很多都是这个php版本,基于这个稍做了改动,写了python版本。data = { "data_list": [ { "start_time": 10, "end_time": 20, }, { "start_time": 2, "end_time": 11, }, {

2021-11-03 20:50:43 3289 1

原创 gevent实现并发和超时控制

参考找到一篇不错的文章mark使用并发常用的场景就是来了一个请求然后并行做一些事情,然后控制超时,丢掉那些慢的结果。在这里可以选择使用文章里的demo:import geventfrom gevent import Timeoutdef wait(): gevent.sleep(2)def test_gevent(): for i in range(10): timer = Timeout(1).start() thread1 = gev

2021-10-14 11:39:21 362

原创 TCP backlog

背景线上遇到了调用下游错误率尖刺的问题,排查后怀疑是backlog问题什么是backlog?参考文章:掘金全连接队列的大小是 listen 传入的 backlog 和 somaxconn 中的较小值。backlog 可以决定全连接队列的大小如果全连接队列满了(大量LISTEN,但是没来得及ACCEPT取走),全连接队列就会满,就无法再建立新的连接。...

2021-06-15 10:46:21 127

原创 如何写batch化处理

开发过程中其实经常需要batch化处理,这是一个写代码的pattern吧,记录一下func doBatch(dataList []int, batchSize int) { numBatches := len(dataList) / batchSize if len(dataList)%batchSize != 0 { numBatches++ } for i := 0; i < numBatches; i++ { startIdx := i * batchSize endIdx

2021-05-23 17:19:31 236

原创 golang range + 闭包

golang中 range + 闭包 都有一些容易搞错的点,混在一起就更容易搞错了,记一个例子1、range:遍历的时候key和value都是同一个地址,然后把要遍历的对应的值塞进来,如果遍历过程中用到了这个地址,那将是同一个地址。link2、闭包引用外部变量,会在真正调用的时候根据外部变量的值做出改变link结合在一起的一个测试用例type Res struct { ID int `json:"id"` InitFunc func(*Res) erro

2021-04-16 11:05:51 422

原创 git:正在开发某个功能,需要切回master分支继续开发新的功能,咋整

背景如题参考https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136方案git stash 将当前开发的功能保存起来git pull 获取master最新代码开发新功能,提交,pushgit stash apply把之前的功能代码恢复回来...

2021-04-13 17:12:39 264

原创 golang 并行执行 收集结果 超时控制 失败提前退出

背景有这么个需求1、调用多个服务,pack1、pack2、pack3…,需要并行调用;2、任意一个服务返回失败,提前返回失败3、需要有超时控制不能等待太久4、收集每个服务返回的结果,后面要做处理怎么实现呢?codepackage mainimport ( "code.byted.org/gopkg/logs" "fmt" "github.com/pkg/errors" "time")func pack1(secs time.Duration) (result string,

2021-02-23 16:02:50 464

原创 AC自动机原理 关键点 fail指针

前提已经了解基础的Trie树,进一步看下AC自动机比Trie树牛皮在哪里,其实就是牛皮在fail指针可以减少匹配次数参考b站大法好例子好的例子是成功的一半这个图很好地说明了fail指针的原理,还是看视频理解的好...

2021-02-02 15:49:56 1330 1

原创 2021-01-12

信息检索导论11-12章读书笔记概述11章,概率检索模型。以一个简单的贝叶斯定理出发,经过疯狂的公式变换+假设,最终得到了一个模型,然后说模型的检索性能不好。模型的扩展是BM25。BM25很棒。12章,基于语言建模的信息检索模型。每个文档对应一个模型,使用每个文档对应的模型去生成查询,看谁生成查询的概率大,概率大的排在前面。不过没有足够的证据来证明这个方法的效果能够大大超过一个经过精心调节参数后的传统向量空间模型。讲完了,全剧终。十分想躲避公式来讲,但是发现这两章真的躲不开,哪哪都.

2021-01-12 21:50:25 284

原创 golang LRU cache inmem 原理 源码

LRU cache 还是比较常用的。其原理是map(快速查找) + 链表(快速移动位置到头/尾)我们来看下golang中的包inmem是怎么做的。构造果然,是一个map + 链表list// NewLocked constructs a new Cache of the given size that is safe for// concurrent use. It will panic if size is not a positive integer.func NewLocked(size

2020-12-18 10:33:06 210

原创 Java各种lock:原理:直到最底层

视频 https://www.bilibili.com/video/BV1XJ411N7n8?from=search&seid=5909050874888845802 cdsn blog https://blog.csdn.net/java_lyvee/article/details/98966684 synchronized 早期sdk就有 重量级的锁,会去调用操作系统相关函数 后面的升级版本尽量留在jvm而不是操作系统 自旋锁 单纯自旋: CAS CompareAn

2020-12-07 10:57:11 168

原创 go: WaitGroup 原理: 直到最底层

参考 [好文](https://draveness.me/golang/docs/part3-runtime/ch06-concurrency/golang-sync-primitives/) 经典用法https://gobyexample.com/waitgroups 构造wg wg.Add(1) defer wg.Done(),也就是wg.Add(-1) 并行搞起 wg.wait() WaitGroup重要变量:counter,waiter,sema(信号量) 推论:count

2020-12-07 10:54:12 716

原创 go: 并发

参考好文WaitGroup可太常用了。啥原理?通过Add,Done来同步,估计就是一个counter的办法吧。每次Add+1,Done-1,最后==0就说明完成了。具体细节:看源码:unit32的数组。元素为3个。那就是323位。高32位是counter,低32位是waiter的数量。64位的原子操作,需要64位对齐,但是32位编译器无法保证。所以就分配了12byte(323=96bit),使用对齐的8个byte作为state。??这个没懂。Mutex...

2020-12-06 17:15:35 73

原创 go:select channel源码

参考go夜读buffered和unbufferedbuffered:ch <- v happens before v <- ch有buffer的情况下:先把值写到channel,才能读到make(chan interface{}, size) unbuffered:v <- ch happens before ch <- v无buffer呢?先读了,之后才写。(没有中间人拿这个东西)make(chan interface{}, 0)Go Schedule

2020-12-02 21:04:42 183

原创 go-demo

发http请求参考飞书这套:DoHttpPostOApito be continued

2020-09-23 14:01:11 127

原创 go细节

概念GO111MODULE一开始go发布的时候是没有包管理的go get命令会根据路径,把相应的模块获取并保存在$GOPATH/src也没有版本的概念,master就代表稳定的版本然后why is GO111MODULE everywhere?

2020-09-18 19:50:34 77

翻译 GO111MODULE 环境变量

GO111MODULE 参考 中文:https://learnku.com/go/t/39086 英文原文:https://dev.to/maelvls/why-is-go111module-everywhere-and-everything-about-go-modules-24k 解析 一开始发布的时候 一开始go发布的时候是没有包管理的 go get命令会根据路径,把相应的模块获取并保存在$GOPATH/src 也没有版本的概念,`master`就代表稳定的版本

2020-09-10 16:45:15 2401

原创 再次学习epoll

看各种资料,看着看着还是会落到epoll上。再一次学习,希望可以加深理解这篇文章写得很好,需要深入研读一下

2020-09-01 09:59:00 82

原创 Thrift:入门笔记

参考入门找b站

2020-08-31 16:33:38 163

原创 可扩展的web架构 和 分布式系统

原文链接这是左耳朵耗子推荐的入门文章,咱来读一读吧挑选一些重点做笔记本文覆盖了设计大型网站时的一些关键问题,以及实现目标的一些组件1.1.分布式系统的设计原则关键原则:Availability:可用性。高可用性需要仔细考虑关键组件的冗余、部分系统失败时的快速恢复、出现问题时的降级Performance:性能。响应速度。Reliability:可靠性。请求可以返回相同的数据。Scalability:可扩展性。能处理多少流量。扩容的时候是否容易。...

2020-08-27 16:24:39 266

原创 The go programming language - 笔记

序言helloworldgo get xxx获取输入参数 os.Args寻找重复的行:逐行读入、全文件读入画图GIF并行fetch urlWeb Server:简单的echo、复用上面的画图功能,引入接口的概念(io.writer)指针:C没有地址保护;其他只有引用的概念。go在中间,可以看到地址,但是不允许对地址做运算...

2020-08-20 16:41:26 94

原创 go学习:特殊之处、语言特性

背景学习一门新语言,其实大多数东西都是类似的,我们只需要关注这么语言特殊的地方。本文就是在学习过程中记录go特殊的地方特殊之处闭包b站git_bookvscode搭建环境defer把语句放到栈中,函数结束的时候再执行一般用于打开文件/数据库后立马defer 关闭,有点像把finally提前package mainimport ( _ "encoding/json" "fmt")func sum(n1 int, n2 int) int { defer fmt.Prin

2020-08-11 16:14:56 187

翻译 SQLite FTS3 和 FTS4 插件

总览FTS3和FTS4是SQLite虚表模块,允许用户在一堆文档中实现全文搜索。用户输入一个短语(term),或者一些列term,然后这个系统找到一些列文档,最佳地匹配了哪些terms。这篇文章介绍了FTS3和FTS4的部署和使用FTS1和FTS2是过时的全文搜索模块。有一些已知的问题。FTS3的部分恭喜到了SQLite的项目中。现在作为SQLite的一部分被开发和维护。1、FTS3和FTS4的介绍FTS3和FTS4扩展模块允许用户创建特殊的表,内置了全文索引(FTS表)全文索引允许用户有效地查询数

2020-08-08 18:53:29 1376

原创 Lucene实战-第2章-构建索引

本章要点执行基本索引操作在索引过程中对文档和域进行加权操作对日期、数字和可排序域进行索引高级索引技术如果想要搜索存储在硬盘上的文件、电子邮件、网页或是数据库中的数据,Lucene都可帮你完成。但在进行搜索前,你必须对搜索内容进行索引,Lucene同样能帮你完成,这就是本章要讨论的内容。在第1章我们演示了一个索引示例。本章将更深入讲解索引更新操作,如何通过参数来调整索引过程,以及更高级的索引技巧,从而帮助你更好理解Lucene。本章还将涉及Lucene索引的结构,使用多线程和多进程访问Luce

2020-07-31 17:45:11 536

原创 如何解决redis缓存击穿?代码实例

背景缓存击穿,是指对那些会失效的key有高并发的请求,然后在失效的那一瞬间,高并发请求来了,读不到redis的值,全都会把请求打到数据库,导致数据库压力过大解决方案1、分布式锁当发现缓存失效的时候,先使用setnx设置分布式锁,只有获取锁成功的那个线程可以查数据库并回写缓存。优点:能解决问题。缺点:1、如果不支持原子操作的话,这个setnx的分布式锁可能会发生死锁。2、性能一般2、本地锁同上,只是使用本地锁,解决死锁问题。优点:没有死锁问题缺点:有多少个机器实例,最多就有多少个“查数

2020-07-28 18:21:22 1196

原创 ES-Lucene-FST的原理是啥?跟Trie树的区别是啥?

参考Lucene-FST

2020-07-23 10:32:21 3793

原创 规则引擎:调研与使用

背景在很多应用后台,经过需要搞一些保存一些规则,然后在线判断规则是否匹配。(感觉抽象的不是太好)实际例子:规定某个应用(打车)只有符合某些员工可以看到:1、工作地在北京的2、是一线员工3、除去某些部门再或者4、是某些大佬id也可以看到可以看到 1-3是【与】的关系 再跟4是【或】的关系这种怎么玩呢?直接想法肯定是写死代码实现咯。但是我们又要求这个这些规则是可配置的。(通过后台管理系统配置),那肯定不能代码写死了于是我们引入了规则引擎参考github demo阿里云更多的demo

2020-07-19 15:19:38 225

原创 搜索引擎:Frame of Reference 和 Roaring Bitmaps

背景检索的时候,在做一些过滤操作的时候(与或非),实际上是对倒排索引的一个拉链归并操作。为了做高效地实现这个功能,ES采用了roaring bitmap的数据结构,参见文章比如拉链1:[1,2,3]&拉链2:[2,3,4]&拉链3:[3,4]...

2020-07-16 23:23:49 2002 1

原创 搜索引擎:ES的评分逻辑

背景难道不好奇怎么评分的吗!?直接先上例子参考官网注意 在有分片的情况下 需要用routing来限制在一个shard里再搞,不然都搞不清楚什么情况# 按照routing来索引PUT /hjx_test_index/doc/1?routing=text1&refresh=true{ "text" : "quick brown fox 11" }PUT /hjx_test_index/doc/2?routing=text1&refresh=true{ "text" : "ba

2020-07-16 22:53:47 462

示波器软件

示波器,可以显示4路曲线,通信简单,在软件自带说明中,可以方便各种调试。

2014-02-28

双闭环控制直流电机转速C51单片机

双闭环控制直流电机转速C51单片机,亲测可用,显示屏为noika5110,可实现直流电机速度控制。

2014-02-28

空空如也

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

TA关注的人

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