- 博客(402)
- 资源 (19)
- 收藏
- 关注
原创 拒绝3K升级费!手把手教你用Swap给2C4G服务器续命
在技术探索中,"穷"往往能激发创造力。通过巧妙利用zram和swapfile的组合拳,我的2c4g服务器硬生生挤出了6GB虚拟内存。虽然swap空间无法与物理内存的性能相提并论,但面对日均1GB左右的swap实际使用量,这波操作至少让服务器告别了"日常宕机一小时"的尴尬期——毕竟,能用且不花钱的方案就是好方案!实践证明,在资源有限的情况下,Linux的内存管理机制给我们留足了腾挪空间。这种缝合式优化虽称不上优雅,但胜在立竿见影。等哪天阿里云搞活动促销升级配置时,再考虑真金白银投入也不迟,你说是不是?
2025-01-31 13:13:49
590
原创 为什么AI智能体需要工作流
善于沟通的人能充分发挥 LLM 的潜力,因为和LLM沟通和与人沟通并没有本质的区别。同样,那些擅长解决复杂问题的人往往具备出色的系统思维,能设计出高效实用的工作流程,将复杂任务分解为可管理的步骤。最后总结下本文的核心观点,在AI应用中,合理的工作流设计是提升系统效能的关键,通过任务的水平拆分和垂直拆分,我们可以构建出既能处理大规模数据又能保证质量的混合工作流体系。工作流不仅仅是一种技术实现方式,更是一种系统化思维的体现,它能帮助我们更好地应对复杂的AI应用场景,实现更高效的任务处理和更可靠的质量控制。
2024-12-21 20:35:29
708
原创 如何用GPT-4o解读视频
过将视频拆分为关键帧并使用GPT-4o进行分析,可以实现对视频内容的解读。该方法包括提取视频帧、将其转换为base64编码,并利用GPT-4o生成详细的剧情描述。实验结果表明,该方法有效且展示了GPT-4o在多模态任务中的能力。
2024-11-17 20:05:25
1579
原创 json命令行处理神器jq介绍
jq是一个强大的命令行工具,用于处理JSON数据,能够简化数据过滤、转换和操作过程。文中介绍了jq的基本用法,包括提取字段、数组操作、过滤和数据转换,以及一些高级特性如条件语句、自定义函数和数学运算。jq的灵活语法和链式操作使得处理复杂JSON数据变得高效,适合开发者和数据分析师使用。
2024-11-03 21:47:56
916
原创 OpenAI的结构化浅析
通过这篇文章,我们了解了OpenAI结构化输出的基本用法,并深入探讨了其可能的实现原理。希望这些内容对大家有所帮助。结构化输出功能无疑是AI与现有系统对接的关键依赖,因为目前所有系统的输入都有特定的格式要求。在没有结构化输出能力之前,我们不得不使用各种奇技淫巧来完成数据格式化。显然,有了结构化输出,这部分工作就会简单得多。不过,我还要提醒大家一点:不要把结构化输出当成万能工具。俗话说,“拿着锤子看什么都像钉子”,可别落入这个陷阱。
2024-10-27 17:06:09
1253
原创 从大模型的原理到提示词优化
AI提示词是引导AI生成特定输出的指令或问题,掌握有效构建提示词对获取理想结果至关重要。提示词通过提供丰富的上下文信息,影响LLM的输出质量,技巧包括设定角色、使用示例、任务拆解和思维链等。这些方法旨在增强上下文信息,从而提高人机交互的准确性和效率。与LLM的沟通类似于人与人之间的交流,需要清晰表达和适当的反馈。
2024-10-26 16:46:07
1023
原创 从经济学原理看团队分工合作
但是,凡事有利就有弊端,比较优势的应用明显会鼓励明确分工,这个理论也印证了亚当斯密分工制的有效性,所以我认为其弊端也来自于分工制度,职责过度的单一话,虽然可以明显天生效率,但也限制了个人全方位的发展,尤其是在当今迅速变化的社会中,身兼多职才更可能活下去,毕竟你今天可能干这这个,明天就要被迫去干别的事了。相反,Ruby生产1份土豆的时间可以生产0.5份牛肉,Frank则只能生产0.25份,所以Ruby在生产牛肉上有相对优势。即使Ruby在两种商品的生产上都更强,Frank在生产土豆上的相对效率更高。
2024-10-13 22:36:29
1074
2
翻译 [翻译]关于人工智能的30个思考
AI不会直接夺走你的工作,但懂得运用AI的人可能会。更可能的情况是,会用AI的你将取代不会用AI的你。那些夸张的宣传并非针对普通人,而是为了吸引投资,维持AI市场的繁荣。AI的价值很高,但开发成本也不菲。,作者表述了自己关于人工智能的30个观点,部分观点还是很新颖的,特搬运翻译过来。AI就像政治,人们选定立场后,就难以接受新信息,他们被困在了自己的部落认同中。少数人热爱AI,少数人痛恨AI,绝大多数人要么漠不关心,要么根本不了解。我相信那些AI末日论者大多是真诚的,尽管他们的观点独特,表达方式激进。
2024-10-13 10:55:24
72
原创 从马斯洛需求层次理论谈职场激励
我认为从员工个体的需求出发做管理来达成组织或者公司的目标,才是公司和员工双赢的方式。如果公司只是为了单纯达成自己的盈利目标,利用大家的职场“生理需求”或则“安全需求”去压迫员工,比如通过不断试探员工的需求下限来克扣员工的福利待遇、个人时间,这种行为本质上和奴隶主没啥区别,如果你遇到这种公司能跑则跑。反过来,如果公司在利用“归属需求” “尊重需求” “自我实现” 这些高层层次的需求来激励你,那么说明你在一个比较好的公司,这两年能苟则苟。
2024-09-01 21:04:30
1896
原创 知识与智慧
自从我上大学以来,知识的获取就很方便了,只要你掌握一些互联网信息检索的技巧,刹那间就可以获取海量的知识,而这两年AI大模型的诞生,你甚至不需要技巧就可以获取海量知识,我们比以往任何时候都更容易获取知识。然而,正如我们在程序员的世界里所看到的,仅仅拥有知识是远远不够的。真正的挑战在于如何将这些知识转化为智慧,并在复杂多变的职场环境中灵活运用。知识就像是我们手中的工具箱,里面装满了各种编程语言、框架和技术;而智慧则是知道何时、如何使用这些工具来解决实际问题的能力。它是在无数次的实践、思考和反思中逐渐积累而成的。
2024-08-12 23:37:27
669
1
原创 如何使用大语言模型绘制专业图表
Mermaid.js 是一个强大的基于文本的图表生成工具,它通过使用类似Markdown的语法,可以通过简单的文本描述来生成复杂的图表,完全不依赖于繁琐的图形编辑软件。这极大地简化了图表的创建过程,尤其是很多Markdown渲染软件已经完全集成了Mermaid,完全可以做到仅使用一个Markdown编辑器完成写作和绘图的工作。流程图(Flowcharts):用于展示过程或系统的操作流程。序列图(Sequence diagrams):适合描述对象或参与者之间的交互序列。
2024-07-22 20:07:41
1958
原创 两个开源项目打造自己的大模型聚合平台
以上就是我目前自建大模型平台的方案了,两个开源软件的安装方式在各自项目里都有,可以自行查阅,我这里就不再赘述了。我自己其实是购买了阿里云5年的2c4g的服务器(一次性投入2.6k),然后用docker的方式安装了上面这两个软件,不过后续也不需要每年花1.5k买poe或者gpt的会员服务了,只需要按token使用量付费给大模型服务商即可,我自己估算如果日常使用国内高性价比模型的话,偶尔特殊任务用下贵的模型,每个月花费最多也就几块钱,相当之划算了。
2024-06-09 23:51:19
2070
原创 我让gpt4o给我推荐了一千多次书 得到了这些数据
事情是这样的,我们公司不是有个读书小组嘛,但是今年大家都忙于工作,忽视了读书这件事,所以我就想着搞个群机器人,让它明天定时向群里推荐一本书,用来唤起大家对读书的兴趣。但在调试的过程中就发现gpt4o老喜欢推荐同样的几本书,这可就勾起我的好奇心了,是不是gpt4o就只知道推荐那几本,正好周末有空,我就斥巨资调用gpt4o的接口让它给我推荐书,调用1000次+,发现gpt4o最喜欢的书是…… 具体让我们来看下推荐结果的简单分析。
2024-05-26 22:25:43
1055
原创 当下性价比最高的大语言模型DeepSeek-V2-Chat
前一段时间,DeepSeek宣布1M的token只需要1块钱(人民币),率先打响了LLM价格战的第一枪,紧随其后,智谱宣布其旗下的GLM-3-Turbo也只需要1块钱(批处理只需要5毛),然后前两天字节开发布会,宣布豆包只需要8毛钱/M,国内几家公司纷纷卷大模型的价格,要知道现在OpenAI的gpt-4o需要36¥(5$),而gpt-3.5-turbo还需要3.6¥(0.5$),同水平的模型OpenAI算比较便宜的。这三者里当前是豆包价格最低,性能的话我们就参考CompassRank的评分榜。
2024-05-19 20:38:43
885
原创 如何在LangChain的agent中记录对话历史
LangChain在早期曾推迟过Memory模块,但Memory模块目前被官方标记为beta版本,说是并为这边好投入生产,而且也不支持最新的LCEL语法,但是ChatMessageHistory这个功能是个例外,它已经支持LCEL并且基本可以用在生产上了,所以我们今天说下如何使用ChatMessageHistory让我们的agent记录下对话历史,实现多轮对话。首先还是来创建基本的agent,这里我们就创建一个简单的对话agent,如果你想创建具备某些功能的复杂agent,可以参考我之前两篇实践文章。
2024-05-12 21:55:26
2209
1
原创 用LangChain打造一个可以管理日程的智能助手
那么接下来的问题就是如何让GPT能够查询和操作这个表了。这里我们直接使用了LangChain的@tool装饰器,讲schedules表的基本操作设置为GPT可以识别的接口,当然使用OpenAI的纯原始接口也是可以实现的(参加我之前的文章OpenAI的多函数调用),就是代码量相对会多很多。具体的代码如下,这里我定义了对schedules表的增、删、查的功能。""" 连接到数据库 """@tool""" 新增日程,比如2024-05-03 20:00:00, 周会 """@tool。
2024-05-04 20:25:25
1470
1
原创 用Langchain创建一个可以总结网页内容的Agent
我们首先就是要定义个可以加载到网页内容的工具,这次我们直接使用LangChain提供好的WebBaseLoader。另外借助LangChain的装饰器@tool,我也仅需要正常写一个函数并表明出入参类型和功能即可,不用提供像之前那样复杂的函数定义schema。@tool"""抓取url对应网页的内容"""
2024-05-02 21:59:44
916
原创 推荐一个好用的命令行工具ShellGPT
由于文章篇幅的原因,我挑选了大部内容做了介绍,当然ShellGPT还有一些其他的细节需要大家自行去探索。其所有的参数都可以通过分类参数类型描述默认值基本选项prompt[PROMPT]用于生成完成的提示。--modelTEXT使用的大型语言模型。生成输出的随机性。0.0--top-p限制最高可能的token。1.0--md美化markdown输出。md--editor打开$EDITOR来提供提示。no-editor--cache缓存完成结果。cache--version显示版本。
2024-04-30 22:05:33
2366
原创 我的CSDN 4096创作纪念日
我高中时候语文都是属于偏差的那种,作文也是很普通的水平,而且我性格偏内向,很长一段时间都不怎么会表达(高考的时候800字的作文都不知道怎么写)。但坚持写博客10年多,给我一个主题(前提是我熟悉的),我坐下来很容易写几千字,而且还能保证质量部那么水,反思10年前和现在的变化,我总结是有两方面的因素让我改变这么多,一是疯狂阅读,二就是持续写作。阅读主要是输入,看到别人如何总结和表达,以及汲取更多的信息。
2024-04-01 07:54:59
2662
4
原创 关于ffmpeg height not divisible by 2的错误
例如,如果有一个奇数宽度的视频帧,最右边会有一个无法形成完整块的列像素。的特殊之处在于,它会确保计算出的宽度或高度是偶数,这是为了满足某些视频编码器的要求,它们需要偶数的分辨率尺寸。这对于编码像H.264这样的视频时特别重要,因为(如前所述)这些编码器使用基于块的编码算法,其要求块的尺寸(通常是16×16像素或其它偶数尺寸)能够完全适应视频帧的尺寸。解决方案当然很简单,那就是将分辨率强行指定成偶数即可,在当我思索难道要放弃-1这个好用的自适应参数,在指定宽为1280时,自己去计算出一个高来的时候。
2024-03-17 16:40:50
956
原创 使用Certbot解决https证书自动更新的问题
实际上确实就这么简单,这一步中certbot会解析你的nginx配置,然后申请相应域名的证书,并修改nginx配置文件将证书配置写入,然后还会触发nginx的reload让证书生效,这时候你的网站https就已经在使用新的https证书了,打开chrome浏览器你就可以看到类似的证书声明。,还有几个其他的域名用做小工具之类的,之前一直使用阿里云免费https证书,一次申请可以用一年,但现在阿里云免费证书缩短到3个月了,而我又有好几个域名,导致我每隔几周就必须重新申请配置一次https证书,很麻烦。
2024-03-10 12:32:08
1641
原创 XINDOO的2023年总结
这篇文章是我的第十年年终总结,本来想很正式的写,由于元旦偷懒,春节又特种式狂奔四个城市给自己和妹妹订婚,横跨几千公里,几乎一半的假期都在路上。我23年的年终总结难产至今,最后赶在2月结束前开始动笔。
2024-02-27 21:56:24
1547
9
原创 Spring Cache简明教程
Spring Cache是Spring框架提供的一个抽象层,专注于提供一种透明的方式来添加缓存功能到Spring应用程序中。它不是一个具体的缓存实现,而是提供了一套创建和管理缓存的标准,并能够与多种缓存实现无缝集成,例如Ehcache、Caffeine、Redisson等。本文详细介绍了Spring Cache的使用和注意事项。Spring Cache作为Spring框架提供的缓存抽象,允许通过声明式注解轻松地在应用中集成缓存,以此提升性能和减少开发时间。Spring Cache不是缓存实现。
2024-01-29 22:34:51
1646
原创 如何正确使用缓存来提升系统性能
本文讨论了使用缓存提升系统性能的实践,包括确定数据是否适合缓存、优化缓存配置以及缓存命中率的重要性。同时,文章还探讨了处理缓存引起的数据一致性问题的策略,旨在帮助读者有效地管理缓存,以提升系统效率并降低相关风险。
2023-12-14 08:22:28
1946
1
原创 Java CompletableFuture使用示例
总结下本文,Future尽管有用,但在功能上还是相对简单。不仅提供了获取执行结果的能力,它还增添了异常处理、手动完成、链式操作、结果组合和回调等强大功能。异常处理: 利用和handle方法,可以简化异常处理流程,使其更加直观和易于管理。手动设置结果允许我们在任意时间点手动设置结果,增加了灵活性。链式操作: 通过链式操作,我们可以将不同的异步操作以流水线的方式串联起来,编写复杂的并发逻辑变得更加简单。结果组合和allOf方法能够将多个的结果合并,为我们提供了更多处理异步操作结果的方式。
2023-12-03 20:50:45
1295
原创 软件开发中的抓大放小vs极致细节思维
而反观支付宝替换Oracle数据库的事,他们处理的是金融相关的数据,也就是和钱相关的数据,比如给你少算一分钱,这不是一分钱的问题,而是信任的问题,一旦出问题公司可能就黄了,所以他们出问题的成本是非常高的。首先,我作为研发,大部分情况下的决策都是“不做”,因为做了会显著增加我的工作量,软件开发过程中也存在二八定律,80%的功能只占开发时间的20%,而剩余20%的功能需要额外投入80%工作量。这仿佛是个无解的哲学问题,下面我给出我对这个问题的答案,仅仅是一份我自己的观点,大家也可以在评论区探讨下。
2023-11-25 22:21:18
7779
4
原创 OpenAI Assistants-API简明教程
以上就是Assistants-API整体的开发流程,了解了这些流程后,大家可以很容易构建出像ChatGPT-Plus的私人助理。当然Assistants-API目前还是在beta阶段,有很多功能不完善,比如不支持流式返回、不支持图片生成、不支持插件调用……,甚至run的状态还需要轮询来获取……。另外我在写本文demo的时候,发现Retrivel的文本内容召回成功率非常低,导致账单计算成功率很低(也可能是我给的文本格式的问题)。
2023-11-19 22:36:49
3781
2
原创 OpenAI的多函数调用(Multiple Function Calling)简介
就在上周,OpenAI在开发者大会上,升级了函数调用的功能,在新的gpt-3.5和gpt-4模型中,可以在单轮对话中调用多个函数了,而且在python SDK中也提供了并发函数调用相关的接口,无疑这将大幅减少大语言模型和现实世界之间交互的开发复杂度,接下来就让我用一个具体的示例,带你了解下OpenAI的新特性。这里额外说下,上面的三个函数调用是串行调用,如果每个函数都比较耗时的话,会增加整体的调用时长,而在最新的assistant api中增加了并行执行函数的api,这个我们放到下篇文章中讲解。
2023-11-18 22:22:27
3851
1
原创 ffmpeg视频截取时DTS乱序导致无法截取的问题
因为原始视频不是连续录制,所以就有一定的概率出现A视频的末尾和B视频的开始拼接在同一个m3u8中的可能。在这种情况下,A视频末尾一帧的DTS和B视频首帧的DTS肯定是不连续的,截取时就会报"DTS 0 < 1986554 out of order",最终截取失败。开始以为是hls中的视频片段有问题,后来和同事一起排查发现,所有失败的情况下,执行ffmpeg命令截取时都会报。,顺着这个信息我们发现但凡失败的,都是我们在m3u8里拼接了另外一个视频的部分片段导致的。
2023-11-04 18:02:19
1022
原创 如何使用ffmpeg制作透明背景的视频
数字人的视频我是使用的腾讯智影生成带绿幕的视频,要实现透明背景,有个很关键的信息需要知道,不是所有的视频格式(视频编码)都支持透明背景,首先我们最常用的mp4就是不支持(不管是h264还是h265)都不支持,目前支持透明背景的只有少部分视频编码,比如google的vp9(webm)格式,上图中我用就是webm+vp9编码的视频。另外一个问题是webm的格式也并不普及,比如腾讯智影导出只支持mp4,像剪映甚至final cut pro这样专业的剪辑软件都无法编辑导出透明背景的webm格式。
2023-10-28 22:08:12
4988
15
原创 Java21虚拟线程实践
虚拟线程是一种轻量化的线程封装,由jvm直接调度和管理。反之普通的线程其实是调用的操作系统的能力,对应的是操作系统级的线程。相对虚拟线程来说操作系统级的线程持有成本很高,而且受操作系统调度和管理的。实际在普通多线程情况下,如果出现IO阻塞,这个线程就必须得跟着阻塞,这个线程对应的操作系统就被阻塞,而他却持有大量的内存。另外,要处理大量的IO就得新建更多线程,而大量的线程会在操作系统切换时因上下文切换导致大量的CPU被浪费。
2023-09-24 20:14:15
7485
7
原创 spring-kafka中ContainerProperties.AckMode详解
本文是一个深入讨论如何通过优化 Kafka 的消费者确认模式来提升 I/O 密集型系统性能的案例研究。首先分享了一个实际的性能问题,通过改变一行代码中的 Kafka 消费者确认模式配置,系统性能提升了几十倍。这引出了文章的主题:Spring-Kafka 中的七种确认模式(包括两种手动确认模式和五种自动确认模式)的详细介绍和比较。作者不仅解释了每种确认模式的工作原理,还提供了关于何时以及如何选择适合的确认模式的实用建议。这篇文章是那些需要处理大量 I/O 操作,特别是使用 Kafka 的开发人员、架构师的
2023-09-15 23:17:22
1197
3
原创 如何在地图上寻找最密集点的位置?
举个简单例子,给定一个点,如果其他某个点距这个点距离近,密度值就高,反之就远,这个点到其他所有点的密度和求平均就是这个点最终的密度值,这里我们可以直接选用距离的倒数来当成核函数,不过这个核函数是线性的,最终结果和我求平均值差异不大。但我们实际在线上使用的时候,遇到了两个特殊的case。前人也是这么想的,于是就有了很多非线性核函数,而我最终使用了高斯核,调整好核函数的带宽后,其他点带来的密度值也会随着距离,以正态分布的方式衰减如下图,举例越远纵轴的坐标值越低,图中的sigma就是我们核函数的里的带宽。
2023-08-26 21:36:44
1216
原创 IO密集型服务提升性能的三种方法
在面对IO密集型系统性能优化时,我们可以通过三种主要的方式来进行:批处理、缓存和多线程。这三种方式各有其优点和适用场景。批处理可以通过减少网络IO次数,显著减少网络传输的延迟时间,从而提升系统性能。但是,它需要我们仔细分析和设计我们的数据处理流程,才能找到合适的批处理策略。缓存则是通过存储频繁访问的数据,减少了对慢速存储(如磁盘或网络)的访问,从而提升性能。但是,使用缓存时需要考虑数据的一致性问题,以及如何选择合适的缓存淘汰策略。
2023-08-12 20:26:17
901
原创 职场中的基本归因错误和自利归因
在评价他人时,避免陷入基本归因错误有个简单的方法,就是换位思考,把自己带入ta的位置,看是否依旧取得同样的结果,如果结果相同那大概可以确定其实是外部环境导致的,而不是其能力和动机的问题。不过换位思考也是一件很难的事,有些事你曾经没有做过或者经历过情况下,会低估事情的复杂度和难度,这也是很多时候一件事自上而下说很简单,自下而上说很难的原因。避免自利归因对个人来说其实更难,因为这是一种思维误区,光靠自身是很难跳出来的,还得依靠外部的帮助,只能说遇到事情首先要压制住自己反驳的欲望,寻求其他人的意见。
2023-07-23 20:08:31
488
原创 使用javax.validation.constraints校验参数合法性
尽管提供了丰富的基础注解,但有时我们还需要进行一些特定的校验操作。这时,我们可以通过自定义注解和校验器来实现这些需求。以下是一个示例,展示了如何创建一个自定义注解@Password首先,创建自定义注解@PasswordString message() default "密码必须包含至少一个大写字母、一个小写字母和一个数字";Class <?Class <?然后,创建自定义校验器=.*[a-z])(?=.*[A-Z])(?} }最后,在需要校验的字段上添加自定义注解@Password。
2023-07-02 20:53:51
4580
原创 Java Optional:让你的代码更优雅
Optional 是一个简单的容器类,用于封装可能为空的值。它可以帮助我们避免使用显式的 null 检查,并提供一种更声明式的方法来处理可能为空的值。通过使用 Optional,我们可以更容易地编写可读、可维护的代码,并减少潜在的 NullPointerException。
2023-06-24 16:28:26
610
原创 如何使用ChatGPT提升自己的“码”力?
ChatGPT是功能强大的工具,用于代码评审、优化、释义、解决方案、生成、设计模式和架构建议,以及学习新知识。虽无法完全替代人类,但可提高工作效率。注意其局限性,结合其他工具和人工审查使用。对初级工程师有用,优化代码和学习工具,提供广泛知识和指导。掌握ChatGPT的使用方法,更好应对技术挑战,不被取代。
2023-05-28 21:18:46
11117
原创 使用ffmpeg拼接两张图片
通过本篇文章的介绍,我们了解了使用FFmpeg拼接两张图片的方法。可以看到出来,使用ffmpeg将两张图片拼接在一起还是相当简单的。希望这篇文章能够对大家有所帮助,如果您有任何疑问或者建议,欢迎在评论区留言。
2023-05-03 21:45:25
3331
workflow.zip
2019-08-19
《OpenCL异构计算》全书所有插图及实现代码
2013-04-19
红黑树 red-black
2013-04-19
acm Hdoj 离线版 1000-3000题 可搜索查找
2012-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人