自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AlwaysBeta 的专栏

微信公众号:AlwaysBeta,专注分享硬核后端开发技术干货

  • 博客(166)
  • 资源 (2)
  • 收藏
  • 关注

原创 7.2K star!一个完全免费,可以本地部署的 AI 搜索聚合器。新手可尝试

这个项目是完全免费的,并且可以本地私有部署,无需 GPU。系统会根据用户提出的问题,到多个搜索引擎去搜索,然后把搜索结果发给 LLM,由 LLM 来生成最终答案。完全免费完全本地化,且私有部署无需 LLM 硬件(GPU)即可运行使用免费的 ChatGPT3.5 / Qwen / Kimi / ShipuAI(GLM) API(无需 API 密钥)支持定制 LLM,比如 ollama使用 Docker Compose 快速部署Web 页面,并且移动端友好,允许从任何设备轻松访问。

2024-04-23 14:04:57 1222

原创 9K star!利用 AI 大模型,一键生成高清短视频。效果还可以

只需提供一个主题或关键词,就可以全自动生成视频文案、素材、字幕、还有背景音乐,然后合成一个高清的短视频。完整的MVC 架构,代码结构清晰,易于维护,支持API和Web 界面支持视频文案AI 自动生成,也可以自定义文案支持多种高清视频尺寸竖屏 9:16,1080x1920横屏 16:9,1920x1080支持批量视频生成,可以一次生成多个视频,然后选择一个最满意的支持视频片段时长设置,方便调节素材切换频率支持中文和英文视频文案支持多种语音合成支持字幕生成,可以调整字体位置颜色大小。

2024-04-16 16:22:08 812

原创 Mac 使用 pip install mysqlclient 爆错 error: subprocess-exited-with-error 解决办法

有问题直接查官方文档,是最快,也是最靠谱的。最后附上 pypi 的。

2024-03-20 16:00:00 1723

原创 逃离互联网,进入体制内,又觉得做的事没有成就感,重新焦虑起来

今日热帖,有网友发帖称:原本以为从互联网出来,逃离了加班,KPI,裁员,就可以不那么焦虑了,能下班后做些自己喜欢的事。如今进入体制内,却又因为做的事没有成就感,发挥不了自身价值,每天没有进步,而又重新焦虑起来。两条路都走过了,真不明白自己到底想要什么样的生活。

2024-02-22 11:40:57 915

原创 OpenAI 发布文生视频模型 Sora,普通人应该怎么做才能利益最大化?

像 FirstMark 投资人 Matt Turck 说的,2005 年去电影院看电影,2015 年在 Netflix 上看,到 2025 年,可能直接让算法生成一个,我觉得也有一些夸张。包括 GPT 4.0,GPT Store,以及前几天发布的 Sora,铺天盖地的文章一大堆,看的我眼睛都快出茧子了。GPT3.5 发布的时候说广告人要失业了,4.0 发布说设计要失业了,到 Sora 发布,说影视行业人要失业了。伴随着每次新功能的发布,都会说又有很多人要「失业」了,但我觉得真的没必要太过焦虑。

2024-02-21 22:52:01 964

原创 年收入 100 万,不敢生孩子

今日热帖,有网友发帖称:互联网大头兵夫妇,两个人都 30+ 了,老公 xhs 后端年包 80+,我私企年薪 20 左右,老家三线城市有房。本来今年要孩子了,但我这边最近又在搞优化感觉很不稳定,老公这边还挺好,他们组的 Id 和业务线比我稳一些,不知道能不能算是风险对冲。主要焦虑的点还是怕有了孩子花销太大,不知道要不要回老家发展,还是继续在大城市坚守。

2024-02-21 22:37:47 894

原创 曝光一下不发年终奖的企业

经济好的时候,就业机会多,容易找工作,而且工作相对稳定,忧患意识不强烈;当经济不好的时候,就业机会少,失业率增加,不容易找工作,竞争激烈。今年过年回家我也深有感触,毫不夸张,之前我的年终奖可以顶老家亲戚们一年的工资,他们都很羡慕,纷纷让弟弟妹妹们报考计算机专业。结果一到年底,不止没有年终奖,连绩效都没有,相当于变相降薪了。当然,这时候各行各业都受影响,学习新知识新技能能够向更有价值,更高待遇的行业发展,以待经济变好时能快速步入新行业。这要在以前,年底双薪是最基本的,现在可好,能按时发工资的都算良心企业了。

2024-02-21 22:22:59 387

原创 当程序员买了一台新 Mac

作为一名程序员,最趁手的“兵器”那还得是 MBP,有了一台新的 MBP 之后,肯定是要安装一大堆软件或工具的,把电脑装扮成自己喜欢的样子。正好最近入手了一台新电脑,把安装软件的过程记录下来,下次再需要装环境直接按这个文章来就行了。

2024-02-03 00:27:36 971

原创 微服务架构|go-zero 的自适应熔断器

上篇文章我们介绍了微服务的限流,详细分析了计数器限流和令牌桶限流算法,这篇文章来说说熔断。熔断和限流还不太一样,限流是控制请求速率,只要还能承受,那么都会处理,但熔断不是。在一条调用链上,如果发现某个服务异常,比如响应超时。那么调用者为了避免过多请求导致资源消耗过大,最终引发系统雪崩,会直接返回错误,而不是疯狂调用这个服务。本篇文章会介绍主流熔断器的工作原理,并且会借助 go-zero 源码,分析 googleBreaker 是如何通过滑动窗口来统计流量,并且最终执行熔断的。

2023-09-02 12:20:26 904 2

原创 Go 语言中排序的 3 种方法

使用sort.Slice方法排序时,可以自定义比较函数,这样就可以根据需要按不同的字段进行排序。如果想要稳定排序的话,就使用方法。Age int}{})使用sort.Sort或者方法,它们可以对任意实现了的数据结构排序。Len() int意思就是说,只要某一个数据结构实现了Len() int和这三个方法,那么就可以使用sort.Sort来排序。Age int。

2023-08-18 20:07:39 1129

原创 go-zero 是如何实现令牌桶限流的?

上一篇文章介绍了主要有两种实现方式,分别是固定窗口和滑动窗口,并且分析了 go-zero 采用固定窗口方式实现的源码。这篇文章来介绍一下令牌桶算法,可以很好解决以上两个问题。

2023-08-10 20:43:38 589

原创 go-zero 是如何实现计数器限流的?

上一篇文章介绍了路由管理,这篇文章来说说限流,主要介绍计数器限流算法,具体的代码实现,我们还是来分析微服务框架 go-zero 的源码。在微服务架构中,一个服务可能需要频繁地与其他服务交互,而过多的请求可能导致性能下降或系统崩溃。为了确保系统的稳定性和高可用性,限流算法应运而生。限流算法允许在给定时间段内,对服务的请求流量进行控制和调整,以防止资源耗尽和服务过载。下面分别来介绍。

2023-08-09 22:28:02 820

原创 go-zero 是如何做路由管理的?

const (type (// 节点root *node重点说一下children,它是一个包含两个元素的数组,元素0存正常路由键,元素1存以开头的路由键,这些是 url 中的变量,到时候需要替换成实际值。举一个例子,有这样一个路由/api/:user,那么api会存在user会存在。// 判断路由是不是以 : 开头。

2023-08-09 22:00:50 354

原创 使用 RediSearch 在 Redis 中进行全文检索

最近在工作中遇到了一个问题,因为数据都存储在了 Redis 中,而且大部分功能都可以满足。但其中有一个接口需要模糊查询,这在 Redis 原生方法中是不容易的。所以查找了一些资料,了解到 RediSearch,使用一下还是挺方便的,并且完美地解决了我的问题。也把这篇文章分享给大家,希望对大家有帮助。以上就是本文的全部内容,如果觉得还不错的话欢迎转发和关注Go 语言切片是如何扩容的?

2023-08-04 19:51:20 3441

原创 使用 Go 语言实现二叉搜索树

二叉树是一种常见并且非常重要的数据结构,在很多项目中都能看到二叉树的身影。它有很多变种,比如红黑树,常被用作std::map和std::set的底层实现;B 树和 B+ 树,广泛应用于数据库系统中。本文要介绍的二叉搜索树用的也很多,比如在开源项目 go-zero 中,就被用来做路由管理。这篇文章也算是一篇前导文章,介绍一些必备知识,下一篇再来介绍具体在 go-zero 中的应用。

2023-08-01 19:32:45 567

原创 Go 语言 select 都能做什么?

在 Go 语言中,select是一个关键字,用于监听和channel有关的 IO 操作。通过select语句,我们可以同时监听多个channel,并在其中任意一个channel就绪时进行相应的处理。本文将总结一下select语句的常见用法,以及在使用过程中的注意事项。

2023-07-28 20:54:47 412

原创 如何写出高质量代码?

他每天都会花 3 个小时的时间来看视频,用他的话来说,就是看的多了,听的多了,自然而然的就知道什么是好,什么是坏了。他们会看大量的电影,看电影的构图,拍摄手法和配色等,而且,还会去听电影的原声大碟。之前跟同事开玩笑,说想成为程序高手其实也挺简单的,只要积累足够多的代码量,遇到需求的时候,知道去哪复制粘贴就可以了。回到我们程序员的领域,我觉得也是同样的道理,只要做好两个方面就可以了,一是多看,二是多写。程序员也是一个熟练工种,看的多了,写的多了,也就能写出高质量代码了。作者给出的答案就是多看,多听。

2023-07-04 22:45:01 123

原创 Go 语言 context 都能做什么?

很多 Go 项目的源码,在读的过程中会发现一个很常见的参数ctx,而且基本都是作为函数的第一个参数。为什么要这么写呢?这个参数到底有什么用呢?带着这样的疑问,我研究了这个参数背后的故事。开局一张图:核心是ContextDone()Err()Deadline()Value()emptyCtxcancelCtxtimerCtx和valueCtx。其中emptyCtx一般情况下,会使用作为根 ctx,然后在其基础上再派生出子 ctx。要是不确定使用哪个 ctx,就使用TODO()。

2023-07-02 12:38:04 248

原创 为什么说 Go 语言字符串是不可变的?

最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说 Go 语言字符串是不可变的,这是为什么呢?这个问题本身并不困难,但对于新手来说确实容易产生困惑,今天就来回答一下。如果一定要这么做的话,需要对字符串进行一个转换,转换成。以上就是本文的全部内容,如果觉得还不错的话欢迎。和切片的结构很像,只不过少了一个表示容量的。切片,然后让指针指向了新的地址。Go 实际上是重新创建了一个。类型,修改之后再转换回。

2023-06-02 19:42:00 356

原创 Go 语言 map 如何顺序读取?

Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。

2023-05-27 09:50:19 1200

原创 Go 语言 map 是并发安全的吗?

因为它没有内置的锁机制来保护多个 goroutine 同时对其进行读写操作。当多个 goroutine 同时对同一个 map 进行读写操作时,就会出现数据竞争和不一致的结果。就像上例那样,当两个 goroutine 同时尝试更新同一个键值对时,最终的结果可能取决于哪个 goroutine 先完成了更新操作。这种不确定性可能会导致程序出现错误或崩溃。Go 语言团队没有将 map 设计成并发安全的,是因为这样会增加程序的开销并降低性能。

2023-05-27 09:39:15 1481

原创 为什么 Go for-range 的 value 值地址每次都一样?

循环语句是一种常用的控制结构,在 Go 语言中,除了for关键字以外,还有一个range关键字,可以使用for-range循环迭代数组、切片、字符串、map 和 channel 这些数据类型。但是在使用for-range循环迭代数组和切片的时候,是很容易出错的,甚至很多老司机一不小心都会在这里翻车。具体是怎么翻的呢?我们接着看。

2023-04-30 15:07:56 732 1

原创 Go 语言切片是如何扩容的?

切片扩容通常是在进行切片的append操作时触发的。在进行append操作时,如果切片容量不足以容纳新的元素,就需要对切片进行扩容,此时就会调用growslice函数进行扩容。如果期望容量大于当前容量的两倍就会使用期望容量;如果当前切片的长度小于 1024 就会将容量翻倍;如果当前切片的长度大于 1024 就会每次增加 25% 的容量,直到新容量大于期望容量;如果期望容量大于当前容量的两倍就会使用期望容量;如果当前切片的长度小于阈值(默认 256)就会将容量翻倍;

2023-04-09 17:24:34 537 1

原创 Go 语言数组和切片的区别

数组是一个长度固定的数据类型,其长度在定义时就已经确定,不能动态改变;切片是一个长度可变的数据类型,其长度在定义时可以为空,也可以指定一个初始长度。数组的内存空间是在定义时分配的,其大小是固定的;切片的内存空间是在运行时动态分配的,其大小是可变的。当数组作为函数参数时,函数操作的是数组的一个副本,不会影响原始数组;当切片作为函数参数时,函数操作的是切片的引用,会影响原始切片。切片还有容量的概念,它指的是分配的内存空间。以上就是本文的全部内容,如果觉得还不错的话欢迎转发和关注。

2023-04-02 12:00:57 569

原创 Git Commit Message 应该怎么写?

最近被同事吐槽了,说我代码提交说明写的太差。其实都不用他吐槽,我自己心里也非常清楚。毕竟很多时候犯懒,都是直接一个-m "fix"就提交上去了。这样做是非常不好的,我也是自食恶果,深受其害。特别是查看历史提交记录时,想通过提交说明来了解当时的功能变更,基本不可能,都得点进去看代码才行。所以这两天看了一些的资料,系统地学习了一下。虽然团队没有这方面的要求,但是想要进步,得对自己提更高的要求才行。一般使用 git 提交代码的话,可以使用-m如果一行不够,可以只执行git commit。

2023-04-02 11:18:33 796

原创 Go 语言 new 和 make 关键字的区别

make 只能用来分配及初始化类型为 slice、map 和 chan 的数据。new 可以分配任意类型的数据;new 分配返回的是指针,即类型*Type。make 返回类型本身,即Type;new 分配的空间被清零。make 分配空间后,会进行初始化;以上就是本文的全部内容,如果觉得还不错的话欢迎转发和关注为什么 Go 不支持 []T 转换为 []interface为什么 Go 语言 struct 要使用 tags。

2023-03-26 21:06:12 382

原创 为什么 Go 语言 struct 要使用 tags

在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构。在 struct 中,我们可以定义多个字段,每个字段可以有不同的类型和名称。除了这些基本信息之外,Go 还提供了 struct tags,它可以用来指定 struct 中每个字段的元信息。在本文中,我们将探讨为什么 Go 语言中需要使用 struct tags,以及 struct tags 的使用场景和优势。

2023-03-11 14:11:14 286

原创 为什么 Go 不支持 []T 转换为 []interface

在 Go 中,如果作为函数参数的话,是可以传任意参数的,然后通过来转换。不管是传int还是string,最终都能输出正确结果。那么,既然是这样的话,我就有一个疑问了,拿出我举一反三的能力。是否可以将[]T转换为呢?很遗憾,这段代码是不能编译通过的,如果想直接通过本来一行代码就能搞定的事情,却非要让人写四行,是不是感觉很麻烦?那为什么 Go 不支持呢?我们接着往下看。

2023-01-30 12:36:14 453 1

原创 工作流引擎架构设计

先看一下维基百科对于工作流的定义:工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。简单来说,工作流就是对业务的流程化抽象。WFMC(工作流程管理联盟) 给出了工作流参考模型如下:举一个例子,比如公司办公的 OA 系统,就存在大量的申请审批流程。

2023-01-12 12:40:18 1464

原创 Git 分支管理策略汇总

以上四种就是目前相对主流的分支管理策略,但没有哪一种策略是万能的。所以无论选择哪一种,都需要考虑团队的实际情况,以及项目的具体业务需求,适合自己的才是最好的。临时分支不应该存在太久,每个分支应尽量保持精简,用完即删工作流应该尽量简单,同时方便回滚工作流程应该符合我们的项目发布计划以上就是本文的全部内容,如果觉得还不错的话欢迎,转发和关注Git 分支管理策略与工作流程Git 分支管理策略总结一个完美的 Git 分支管理模型Git 工作流程Git 分支管理策略分支模型与主干开发。

2022-11-11 21:07:51 3622

原创 你还有什么问题吗?

其实,这是一个很好的了解公司,了解未来团队的机会,但很多求职者却不知道问什么,或者是问不到点儿上,错过了这个机会。我最近逛 GitHub 时刚好看到一个仓库,这个仓库是一份求职者向面试官的提问清单。内容包含关于职位,公司,文化,工作内容等一系列问题,覆盖面还是挺广的。大家在看的时候可以记一些自己感兴趣的,然后结合具体面试过程,提有针对性的问题。原仓库是英文的,我尝试地翻译了一下,如果有不准确的地方,欢迎大家交流,或者提 pr。...

2022-08-29 12:59:15 291

原创 假如,程序员面试的时候说真话

做程序员这么长时间了,经常能够听到一句话:面试造火箭,入职拧螺丝。而且,随着就业环境越来越卷,现在只会造火箭恐怕都不行了,得能造个空间站才行。回想自己刚毕业那会儿,哪有什么八股文需要背,而且面试内容也更贴近实际。更不会有面试官刻意挖一些生僻的技术点,不是为了考察面试者,而只是为了展示自己技术有多么厉害。在此基础上,还要再顺带 PUA 一下,问你对加班怎么看?面对这样的情况,我还能怎么回答?热爱「996」呗。当然了,「热爱」是不可能「热爱」的,这辈子都不可能「热爱」的。但面试...

2022-06-22 12:20:15 346

原创 坚持,一种可以养成的习惯

之前看过一期《圆桌派》,嘉宾是姜文,当时也正好是电影《邪不压正》的宣传期。姜文谈到彭于晏时说,除了很欣赏他的「身体」之外,特别佩服他的自律,对自己身材的管理。其实能把身材塑造成那样,并且长时间保持在一定的水平上是相当难的。人们都喜欢自由,向往自由。但自由肯定不是想干嘛就干嘛,而是应该能够通过自己的思想控制自己的身体,或者行为。也就是说:自律才有自由。那怎么才能够做到自律呢?不知道大家有没有相同的疑问。对事情总是三分钟热度,热乎劲一过就恢复成老样子;每年的开始,每个月的开始,甚至每周开始,都计划满满,干劲十足

2022-06-08 22:57:50 323

原创 Linux 使用 cp 命令强制覆盖功能

我们平时在 Linux 中使用 cp 命令时,当把文件从一个目录复制到另一个目录,且目录中具有同名文件时,系统会提示输入 y 来确认是否覆盖同名文件。如果文件少的话,也无关紧要,但文件多的话,要一个一个确认简直太累了。更要命的是,即使我们加了 -rf 参数,还是会提示。为什么会这样呢?原因原因就是 cp 命令被系统设置了别名。我们可以查看一下:[root@localhost]# aliasalias cp='cp -i'alias egrep='egrep --color=auto'ali

2022-05-24 18:38:45 5591 1

原创 这 BUG,绝了

上周只上了三天班,但我也丝毫不敢懈怠,BUG 更是一个也没少写。看着满屏幕的 ERROR,我陷入沉思。为什么我写的代如此烂,无法像大牛们写的那般优雅?越想越自卑,越想越抑郁。我觉得这样不行,一定得振作起来。正如一位哲人曾经说过:世间万事万物,都是有两面性的:有它光明的一面,也就有他阴暗的一面;有它积极的一面就有他消极的一面;有他好的一面也有它坏的一面。我的代码虽然不够优雅,但写的 BUG 还能比别人差吗?然后我在网上搜了一下,没错,BUG 也比别人差。软件开发历史上有哪些著名的 BUG 呢

2022-05-09 22:45:00 786

原创 Django 如何获取 Model 字段列表?

在平时的开发过程中,避免不了需要获取 Model 中的字段列表。那需要把所有字段都再复制一份吗?这样的话就太麻烦了,而且后期也不好维护。其实,Django 内置了一个方法,可以很轻松解决这个问题。下面以 User 表举一个例子。>>> from django.contrib.auth.models import User>>> User._meta.get_fields()(<ManyToOneRel: admin.logentry>, <d

2022-05-06 22:50:18 4728 1

原创 Django Model 如何返回空的 QuerySet

>>> from django.contrib.auth.models import User>>> User.objects.none()<QuerySet []>以上就是本文的全部内容,如果觉得还不错的话,欢迎点赞,转发和关注,感谢支持。推荐阅读:计算机经典书籍技术博客: 硬核后端开发技术干货,内容包括 Python、Django、Docker、Go、Redis、ElasticSearch、Kafka、Linux 等。Go 程序员: G

2022-05-05 22:29:20 2314

原创 Python 中删除列表元素的三种方法

列表基本上是 Python 中最常用的数据结构之一了,并且删除操作也是经常使用的。那到底有哪些方法可以删除列表中的元素呢?这篇文章就来总结一下。一共有三种方法,分别是 remove,pop 和 del,下面来详细说明。removeL.remove(value) -> None – remove first occurrence of value. Raises ValueError if the value is not present.remove 是从列表中删除指定的元素,参数是 v

2022-04-20 23:13:33 12773 1

原创 Python 报错 ValueError list.remove(x) x not in list 解决办法

平时开发 Python 代码过程中,经常会遇到这个报错:ValueError: list.remove(x): x not in list错误提示信息也很明确,就是移除的元素不在列表之中。比如:>>> lst = [1, 2, 3]>>> lst.remove(4)Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: l

2022-04-13 21:54:18 18590 4

原创 Python 中的鸭子类型和猴子补丁

原文链接: Python 中的鸭子类型和猴子补丁大家好,我是老王。Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这两个词而已。我最近在面试候选人的时候,也会问这两个概念,很多人答的也并不是很好。但是当我向他们解释完之后,普遍都会恍然大悟:“哦,是这个啊,我用过”。所以,我决定来写一篇文章,探讨一下这两个技术。鸭子类型引用维基百科中的一段解释:鸭子类型(duck typing)在程序设计中是动态类型的一种风格。在

2022-04-11 23:32:28 195

linux电子词典小项目

在Linux下用C语言开发的电子词典,可以实现查询单词的功能,也可以输入中文查英文,还是自己添加单词库

2013-07-14

Linux C 函数库参考手册

文档包含很全的C函数库,可以作为工具书使用,很不错。

2013-01-04

空空如也

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

TA关注的人

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