- 博客(283)
- 收藏
- 关注
原创 AI之 n8n
关注AI圈的小伙伴应该注意到了,最近有个叫做『N8N』的AI项目突然火了起来,目前在GitHub上的start已经突破100K,成为当前开源AI工具类的No.1,非常的牛批!N8N之所以能这么受欢迎,是因为它被称之为史上最强AI工作流,它的出现不管是对于打工者,还是创作者来说,只要玩转了,都能直接让效率起飞!它有点类似于大家所熟知的Dify,Coze。
2025-12-16 22:20:50
905
原创 AI编程系列——mcp与skill
MCP (Model Context Protocol) 是一种旨在促进 AI Agent 与工具之间交互的托管协议。
2025-12-16 22:14:08
1185
原创 git rebase
git rebase = “把当前分支整个搬家,插到另一条分支的最新提交后面”,让历史看起来是一条直线,没有分叉。图解初始状态(feature 从 master 的 B 开出,又多了 C、D;master 那边又走了 E、F):复制merge 的效果(保留分叉):复制\ /rebase 的效果(把 C、D 整体“剪下来”,贴到 F 后面,并生成全新 C’、D’):复制↑历史成一条线,没有 merge 提交常用场景。
2025-12-16 21:37:21
429
原创 AI编程系列——git-worktree并行开发
Git Worktree允许从同一个Git仓库中检出多个分支到不同的目录中,每个worktree都有独立的工作目录,但共享相同的Git历史记录。与传统git checkout的区别最大区别在于 可以保存工作状态 不会因为切换导致其他的代码没了。
2025-12-15 19:53:31
206
原创 hive和hadoop如何部署
只想写 SQL 选方案一想完整体验 Hadoop+Hive 选方案二要上生产选方案三,并可继续问我拿 Dockerfile 与 compose 模板祝使用愉快!
2025-12-07 02:55:49
1015
原创 日志系统的演进
把时间回溯到10年前,我们会怎样去记录日志?架构比较简单,但问题也比较明显,有几个明显的缺点:每次查看日志文件都需要登录到不同的机器,非常不方便;通过 tail 或者 cat 等命令查看日志,如果对日志文件进行检索、聚合等操作,还会对服务器的 io 造成很大的压力,甚至导致故障的产生;日志文件过大不仅导致查询变得特别慢,还经常带来磁盘告警甚至磁盘空间不足等严重后果;日志格式不规范,日志随意写到文件,可读性和可分析性几乎为零;
2025-12-06 17:16:02
432
原创 大数据介绍、列式存储、clickhouse hbase Hive 区别、flink、hdfs、Hadoop等介绍
用户数据包含 海量非结构化 / 半结构化信息(如用户行为日志、埋点数据、长文本偏好描述),需要支持 PB 级存储、高并发写入(如每秒万级用户行为上报),且需复杂统计分析(如用户行为序列挖掘、偏好趋势分析)。用户数据以 结构化信息 为主(如用户 ID、年龄、性别、偏好标签、注册信息),需要支持多维度查询(如按年龄段筛选用户)、高可靠存储,且有实时访问需求(如推荐时快速获取用户偏好)。
2025-12-05 18:39:43
908
原创 各语言方便的地方
但可以通过 map 或 reflect 实现「用字符串名字读写变量」的效果。“Variable”: &cfg.Variable, // 指针映射。适合配置、模板、上下文传值——简单、类型安全、高性能。✅ ① map 模拟(最常用,零反射)// 把 v 的地址装进 map。(name)) // 编译失败。// ❌ 非法,Go 没有。
2025-10-28 10:54:57
285
原创 编程通用之乱七八糟(mork 延迟调用 go单例模式等)
做法:写一个“假支付宝”,返回值固定、瞬间返回,这个假货就是 mock。问题:程序一启动就初始化,结果用户根本没用,白白浪费内存/时间。场景:你写了一个订单服务,真实代码里要调用“支付宝接口”。做法:等第一次真正要用的时候才初始化,这就是 延迟初始化。延迟初始化:对象先不造,等真要用了再造,省资源。测试时把“真货”换成“假货”,就是 mock。mock:测试时拿个“假演员”顶替“真演员”。场景:单例很耗资源(连数据库、加载大文件)。关键字:“用时再 new,不用先空着”。延迟初始化(“懒汉模式”)
2025-10-13 15:24:45
217
原创 mac使用技巧记录
ctrl + 空格 切换输入法command + 空格 聚焦搜索cmd + q退出应用区域截图:按下Shift+Command+4,拖动选择区域,松开鼠标完成;按住空格键移动选区,按Esc取消。窗口截图:按下Shift+Command+4后按空格键,点击目标窗口;按住Option键去除阴影。
2025-10-11 09:42:01
274
原创 接口请求工具对比 apifox apipost swagger postman等
支持带注释的json格式 请求自动去掉注释。支持导入更新的同时 不更改之前的 调试用例。支持从swagger导入接口文档。
2025-10-07 14:53:54
228
原创 swagger通过注释注解等自动生成接口文档并导入到apifox
GoFrame框架通过dc标签注释自动生成接口文档,运行时可实时查看网页版API文档,并支持直接导入Apifox等工具。开发者只需在代码中添加结构化注释,系统就能自动生成包含参数说明、返回示例等内容的可视化接口文档,简化了API文档维护工作,提升了开发效率。图片展示了生成的网页文档界面和Apifox导入功能。
2025-10-07 14:45:05
256
原创 golang编译
编译时环境变量(如指定平台参数)仅影响编译输出,与运行环境无关运行环境变量(如GOROOT/GOPATH)需在新机器重新配置 。
2025-10-06 18:13:52
398
原创 GoFrame框架学习笔记
在规范路由中,我们同样定义一个请求的数据结构来接收客户端提交的参数信息,但同时需要定义一个返回对象。目的是为了未来返回参数扩展的需要,以及未来标准化接口文档生成的需要。Name string `v:"required" dc:"姓名"`Age int `v:"required" dc:"年龄"`简要介绍:在请求对象中,我们多了一个g.Meta对象的引用,并给定了一些结构体标签。该对象为元数据对象,用于给结构体嵌入 一些定义的标签信息。path:表示注册的路由地址。
2025-10-03 19:36:43
974
原创 后端开发基础概念MVC以及Entity,DAO,DO,DTO,VO等概念
DAO (Data Access Object)数据访问对象DTO(Data Transfer Object)数据传输对象DO (Domain Object)领域对象VO(View Object)视图模型AO(Application Object)应用对象BO( Business Object)业务对象POJO( Plain Ordinary Java Object)纯普通Java对象PO(Persistent Object)持久化对象Entity(应用程序域中的一个概念)实体。
2025-10-03 14:38:31
987
原创 消息队列常见问题解决(偏kafka)—顺序消费、消息积压、消息丢失、消息积压、分布式事务
终于进入到最核心的地方,也是在面试的时候最能展现我们亮点的地方了,这里我们模拟一个面试场景来展开面试官:“OK。上面消息丢失的一些场景分析的不错,那么在你的项目中,是如何设计一套方案来确保消息从生产到消费的整个链路都绝对可靠呢?基于前面的分析,我们知道了消息的丢失可能出现在消息生产,消息存储,和消息消费三个阶段,那么在设计保障方案的时候,我们也要构建一套从生产端到消费端全链路的消息保障体系。
2025-09-29 09:23:28
1228
原创 RabbitMQ
消息也分很多种类,比如订单消息和用户消息属于两类,为了更好地管理不同种类的数据, 可以提供多个 队列,生产者可以自定义 Queue 的名字,并且根据需要将消息投递到不同的 Queue 中。每个 Queue 都设计为独立的进程,某个进程挂了,不影响其他进程正常工作。
2025-09-18 17:56:17
1014
原创 RocketMQ基础以及和 Kafka 有什么区别
RocketMQ 是阿里自研的国产消息队列,目前已经是 Apache 的顶级项目。和其他消息队列一样,它接受来自生产者的消息,将消息分类,每一类是一个 topic,消费者根据需要订阅 topic,获取里面的消息。
2025-09-15 08:24:33
1086
原创 消息队列基础通用知识、常见MQ区别,以及分布式事务的机制实现方式
消息队列不知道大家看到这个词的时候,会不会觉得它是一个比较高端的技术,反正我是觉得它好像是挺牛逼的。消息队列,一般我们会简称它为MQ(Message Queue),嗯,就是很直白的简写。我们先不管消息(Message)这个词,来看看队列(Queue)。这一看,队列大家应该都就悉吧。队列是一种先进先出的数据结构。
2025-09-12 01:08:05
730
原创 计算机原理-计算机操作系统-硬盘缓存、断电丢数据篇
因为硬盘一般都有电容保护呀因为mft表 刚开始 一开机就会默认缓存到目录中1、如果在进行其他文件的读写操作,则来不及讲改动从内存同步到硬盘上2、即使没有其他文件读写操作,很可能内存到硬盘转移恰好断电(因为要改的话 肯定得先删)3、很可能虽然转移了 但是落盘的一瞬间断电。虽然有电容,但是可能硬盘空间很大,小文件太多,mft目录表过大,写入来不及。(相比之下,固态因为这个损坏可能小很多)针对3 U盘由于一般容量很小、固态由于一般速度快,所以不太会出现。而大容量的机械硬盘可能出现。
2025-09-05 09:59:11
1026
原创 golang noCopy与go vet
Go并发原语拷贝问题解析:Mutex、WaitGroup等并发控制结构不能被拷贝,因为拷贝会导致状态不匹配和死锁问题。这些结构内部维护关键状态(如锁计数器、等待数等),拷贝会复制状态但破坏原子性,造成加锁/解锁或Add/Done操作不匹配。Go通过noCopy机制和go vet静态检查来防止此类错误,但开发者仍需注意用指针传递而非值传递这些结构。典型案例包括:Mutex拷贝导致解锁失效、WaitGroup拷贝引发永久阻塞等。正确做法是始终使用指针操作并发原语,确保状态一致性。
2025-09-05 05:24:00
846
原创 golang中String、bytes、rune和字符的概念与应用
在builtin/builtin.go文件中定义描述所以 type和int32是等价的主要作用是用来区分字符值和整数值Go语言中的rune类型是int32的别名,用于表示单个Unicode字符(码点),支持多字节字符处理(如中文),是处理国际化文本的关键数据类型。var r rune = '你'fmt.Println(r) // 输出 Unicode 编码:20320fmt.Printf("%c\n", r) // 输出字符:你。
2025-08-17 01:34:17
878
原创 数据库-MYSQL各个隔离级别加锁行为区别
行为RCRR串行化普通读(快照读)无锁,MVCC无锁,MVCCS锁锁定读 (当前读)行锁行锁,间隙锁S锁行锁行锁,间隙锁,临键锁X锁INSERT行锁,插入意向锁,可能会有间隙锁(概率很低)插入意向锁,行锁,间隙锁,临键锁X锁。
2025-08-06 03:36:12
931
原创 服务器限流方案与算法
固定窗口算法实现简单,性能高,但是会有临界突发流量问题,瞬时流量最大可以达到阈值的2倍。为了解决临界突发流量,可以将窗口划分为多个更细粒度的单元,每次窗口向右移动一个单元,于是便有了滑动窗口算法。滑动窗口当流量到达阈值时会瞬间掐断流量,所以导致流量不够平滑。想要达到限流的目的,又不会掐断流量,使得流量更加平滑?可以考虑漏桶算法!需要注意的是,漏桶算法通常配置一个FIFO的队列使用以达到允许限流的作用。由于速率固定,即使在某个时刻下游处理能力过剩,也不能得到很好的利用,这是漏桶算法的一个短板。
2025-05-14 01:17:31
1082
原创 数据库-redis-场景项目题-数据库和缓存如何保证一致性?
好了,总结一下这篇文章的重点。1、想要提高应用的性能,可以引入「缓存」来解决。记住这点,缓存主要是为了提高性能,所以一般不要去费力去做强一致性,我们追求最终一致性即可。下面大多数高并发下数据不一致的情况都可以分布式锁解决,但是严重影响性能。2、引入缓存后,需要考虑缓存和数据库一致性问题,可选的方案有:「更新数据库 + 更新缓存」、「更新数据库 + 删除缓存」。但是无论哪种方案,都需要设置缓存过期时间兜底。
2025-05-12 02:27:06
1204
原创 mysql是怎么发送数据给客户端的?如果读取大量数据超过客户端内存会oom么——游标?生成器yield?mysql unbuffered query?
我的主机内存只有100G,现在要全表扫描一个200G大表,会不会把DB主机的内存用光?逻辑备份时,可不就是做整库扫描吗?若这样就会把内存吃光,逻辑备份不是早就挂了?所以大表全表扫描,看起来应该没问题。这是为啥呢?假设,我们现在要对一个200G的InnoDB表db1. t,执行一个全表扫描。InnoDB数据保存在主键索引上,所以全表扫描实际上是直接扫描表t的主键索引。这条查询语句由于没有其他判断条件,所以查到的每一行都可以直接放到结果集,然后返回给客户端。那么,这个“结果集”存在哪里呢?
2025-05-07 02:58:26
884
原创 ThinkPHP5.1之容器注入(IOC)和门面模式(facade)
容器注入:也叫 依赖注入容器,用户在客户端使用容器来进行类管理,还可以将类的实例(对象)做为参数,传递给类方法,自动触发依赖注入。简单的讲就是将工具类打包成一个容器,在客户端完成工具类的实例化为对象,再以参数的方式直接传递给工作类的方法。容器:也称服务容器,简称(IOC)类似于:[即插即用]的工具,最大限度的简化外部对象的调用实现步骤有三步:创建工具类//数据库操作类class Db//数据库连接return ‘数据库连接成功//数据验证类//数据验证。
2025-05-06 06:40:20
1106
原创 计算机操作系统-计算机网络-Reactor与Proactor
如果把I/O操作改为异步就能够进一步提升性能,这就是异步网络模型Proactor。Proactor翻译为“主动器”。Reactor可以理解为“来了事件我通知你,你来处理”,而Proactor可以理解为“来了事件我来处理,处理完了我通知你”。这里的“我”就是操作系统内核,“事件”就是有新连接、有数据可读、有数据可写的这些I/O事件,“你”就是我们的程序代码。
2025-05-06 04:24:48
167
原创 计算机原理-操作系统-调度方式(串行并行并发)区别以进程与线程、协程的区别
进程:你打开的一个个app,就是一个一个的进程,作为进程,它们最好是彼此隔离的,一个崩溃不影响另一个。线程:比如你打开音乐软件,播放、渲染ui、下载 分别是不同的线程去完成,否则给你的感觉就像被卡住了一样协程:线程是MB级别,协程是KB级别,可以理解成线程里的一个执行流,更小更轻量首先,这些划分都是为了尽可能的榨干cpu而存在的。进程就像是操作系统给你开的“工厂”。每个进程有它自己的厂房(内存空间)、机器(CPU 资源)、员工(线程)。所有程序在运行时,都是以进程的形式存在。
2025-05-06 04:19:18
1189
原创 协程的开销,不要滥用协程
转自 开发内功修炼协程开销测试上一节介绍了协程的诞生背景,那么我想说的是,毕竟协程的封装虽然轻量,但是毕竟还是需要引入了一些额外的代价的。那么我们来看看这些额外的代价具体多小吧。1、协程切换CPU开销测试过程是不断在协程之间让出CPU。核心代码如下。代码语言:javascript代码运行次数:0运行AI代码解释for i :=0;i<1000000;i<1000000;i++{
2025-05-06 02:23:15
333
原创 异步回调地狱的解决,为什么需要协程——以js为例讲述发展历程(Promise、async/await、生成器)
本文所讲的协程仅是说明为什么回调地狱通过协程解决和专门讲协程那篇文章结合起来看。
2025-05-06 01:29:40
736
原创 单线程可以异步回调么?——彻底搞懂JavaScript单线程异步执行机制
浏览器JavaScript的作用是操作DOM,这就决定了它只能是单线程的,否则会带来很复杂的问题。例如,假如JavaScript有两个线程,一个线程在某个DOM节点上添加内容,另一个线程是删除了这个节点,这时浏览器应该以哪个线程为准?
2025-05-06 01:01:03
196
原创 JAVA IO体系
在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流。在 Java 的 IO 体系中,类将近有 80 个,位于java.io包下,感觉很复杂,但是这些类大致可以分成四组:基于字节操作的 I/O 接口:InputStream 和 OutputStream基于字符操作的 I/O 接口:Writer 和 Reader基于磁盘操作的 I/O 接口:File基于网络操作的 I/O 接口:Socket。
2025-05-05 22:12:57
630
原创 计算机操作系统-计算机网络-linux IO多路复用的具体代码实现实例
转自 https://blog.csdn.net/A152419/article/details/137795711I/O 多路复用通过操作系统提供的特定系统调用, 在一个线程中监听多个I/O事件。当其中任何一个I/O事件就绪(可读、可写或异常)时,线程就会被唤醒,并且可以针对就绪的事件执行相应的操作,而不需要阻塞等待。函数参数:nfds:委托内核检测的这三个集合中最大的文件描述符 + 1内核需要线性遍历这些集合中的文件描述符,这个值是循环结束的条件。
2025-05-05 20:45:46
1024
原创 在 golang 中是如何对 epoll 进行封装的?
同步编码方式的优点是符合人的直线思维。在这种模式下的代码很容易写,写出来也容易理解,但是缺点就是性能奇差。因为会导致频繁的线程上下文切换。所以现在 epoll 是 Linux 下网络程序工作的最主要的模式。现在各种语言下的流行的网络框架模型都是基于 epoll 来工作的。区别就是各自对 epoll 的使用方式上存在一些差别。主流各种基于 epoll 的异步非阻塞的模型虽然提高了性能,但是基于回调函数的编程方式却非常不符合人的的直线思维模式。开发出来的代码的也不那么容易被人理解。
2025-05-05 19:33:32
1083
原创 操作系统-计算机网络-C10k问题以及协程
c10k主要针对tcp连接c10k主要是cpu问题,过多的线程或者进程导致cpu主要上下文切换被占满,而非网卡吞吐量不行耗时主要在等待网卡数据接收完(这个主要限制是带宽网速 而非网卡性能)并发送到内核这一步,内核复制到用户空间其实相对还好,以及之后要再发给网卡。首先,我们的服务器软件都是代码写的,比如c或者go,它上层是一个进程。首先我们先看网卡接收数据这一步,数据包传输是有序的,但是可能会分成多个包所以,网卡接收数据,如果只有一个包,那就是有序的。
2025-05-05 18:42:49
1003
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅