Blog / 所有文章
记录技术学习与工程实践的思考,分享有价值的经验
AI 工程设计(二):知识库只是开始,真正难的是知识工程
AI 工程设计(二):知识库只是开始,真正难的是知识工程
> AI 工程设计(二):知识库只是开始,真正难的是知识工程
AI 工程设计(一):模型编排不是流程图,而是系统控制面
AI 工程设计(一):模型编排不是流程图,而是系统控制面
> AI 工程设计(一):模型编排不是流程图,而是系统控制面
Harness 不是新东西。它只是把一件一直存在的事,命名了...
Harness 不是新东西。它只是把一件一直存在的事,命名了出来。
Harness:Agent 的问题,从来不在模型 这两天,Agent 圈开始频繁出现一个词:Harness。 很多人第一次看到,会以为这是某种: 新框架 新范式 下一代 Agent 技术 但如果你真正做过 Agent,很容易得出另一个结论: > Harness 不是新东西。它只是把一件一直存在的事,命名了出来。 这件事叫: > 软件工程 -- 一、Agent 很简单,难的是为什么它会崩 Ag...
用技术思维做管理:开发者如何把团队带顺
用技术思维做管理:开发者如何把团队带顺
在团队协作和项目推进中,大多数问题其实都可以归结为六类: 目标不清晰 执行不到位 团队没有方向 会议低效 决策失误 汇报混乱 对应地,有一套非常经典且实用的方法论组合,可以系统性解决这些问题: > SMART + PDCA + OKR + ORID + SWOT + PREP 本文不讲概念,而是从“怎么用”的角度,帮你建立一套可落地的工作体系。 一、目标不清晰:用 SMART 把“模糊...
Agent 工程八条底层认知
Agent 工程八条底层认知
> 一篇写给工程师的 Agent 现实主义宣言 > ——拆神话、定边界、给终局 认知一:Agent 不是“新生命”,而是工程术语 Agent 不是觉醒的智能体,也不是系统中的“人”。 它只是一个工程概念,用来描述: > “在系统控制下,调用 LLM 参与决策或补全的流程节点。” 所有人格、成长、自我反思的叙事,本质上都是: Prompt 的拟人化 多次调用的错觉 上下文叠加的误读 Agen...
Agent 工程的终局形态:弱智能 + 强系统 + 人类兜底
Agent 工程的终局形态:弱智能 + 强系统 + 人类兜底
一、当所有幻想被拆完,问题只剩下一个 在经历了: Agent 不是人格 不是成长体 不是长期记忆载体 不是系统核心 之后,真正需要回答的问题只有一个: > 如果我们不再神话 Agent,它到底该怎么用? 答案并不复杂,甚至有些“老派”。 二、一个反高潮的结论:弱智能,反而更安全 直觉会告诉你: > 模型越强,系统越可靠。 但工程经验往往相反: > 模型越强,你越容易放松约束。 而真正可长期...
当你把 Agent 当成业务系统,而不是“智能体”,一切都顺...
当你把 Agent 当成业务系统,而不是“智能体”,一切都顺了
一、所有混乱,都始于一个错误的心智模型 Agent 项目之所以容易失控, 并不是因为 LLM 太复杂,而是因为: > 人们在“怎么想它”这一步就想错了。 一旦你把 Agent 当成: 一个会思考的对象 一个有能力自我纠错的主体 一个能“兜住一切”的智能体 你接下来做的每一个工程决策,几乎都会偏离现实。 二、把 Agent 当“智能体”,你会自然犯的错 这是一个非常稳定的模式: 逻辑写进 p...
Agent 祛魅:规则引擎的继任者,而非软件工程的终结者
Agent 祛魅:规则引擎的继任者,而非软件工程的终结者
一、一个被刻意忽略的事实:我们早就有“Agent”了 如果你把 Agent 的定义抽象到最低层: > 根据输入状态 > 选择下一步动作 > 并驱动系统执行 那么你会发现: 工作流引擎 规则引擎 决策树 状态机 本质上全都是 Agent。 它们只是不“会说话”, 也不会写长篇解释。 -- 二、规则引擎真正解决过什么问题? 在 LLM 出现之前,规则引擎主要用来解决三类问题: 1. 复杂业务决...
Agent 项目失败的真正原因
Agent 项目失败的真正原因
Agent 项目失败的真正原因 Agent 项目失败的真正原因 不是模型不行,而是系统不行 > 绝大多数 Agent 项目失败之后, > 都会给出一个非常省事的结论: > > “模型还不够聪明。” > > 这是一个听起来合理、实际上极其逃避责任的说法。 -- 第一部分:一个被误判的真相 —— 模型几乎从来不是瓶颈 1.1 Agent 在真实项目中的典型失败表现 在真实项目里,Agent 常见的失...
Agent 没有长期记忆,只有你设计的数据检索策略
Agent 没有长期记忆,只有你设计的数据检索策略
Agent 没有长期记忆,只有你设计的数据检索策略 > 如果一个系统真的有记忆, > 那它至少应该在不被提醒的情况下, > 主动使用过去的信息。 > > Agent 做不到。 -- 一、先给结论:Agent 从来没有“记忆能力” 很多内容会说: Agent 记得你是谁 Agent 会记住你的偏好 Agent 用久了会越来越懂你 但在工程上,“记忆”有一个非常严格的定义: > 记忆必须是持久的...
Agent 看起来会思考,其实只是你在维护一个 while ...
Agent 看起来会思考,其实只是你在维护一个 while 循环
Agent 看起来会思考,其实只是你在维护一个 while 循环 > 如果一个系统真的在思考, > 那么第一件事应该是: > 它可以决定“是否继续思考”。 > > Agent 做不到。 这不是哲学判断,是工程事实。 一、先给结论:Agent 从来没有“思考权” 所谓“思考”,至少包含三个最基本的能力: 1. 决定是否继续推理 2. 决定下一步采用什么策略 3. 为错误承担内部后果 Agent 一个...
Agent 并不是智能体,而是 LLM 参与决策的业务系统
Agent 并不是智能体,而是 LLM 参与决策的业务系统
Agent 并不是智能体,而是 LLM 参与决策的业务系统 > 当一个概念开始被反复拟人化、神秘化、营销化,它往往已经偏离了工程事实。 最近一年,“Agent”这个词被频繁使用:AI Agent、Autonomous Agent、MultiAgent System…… 仿佛只要加上 Agent,系统就从“程序”跃迁成了“智能体”。 “Agent”几乎成了 AI 内容领域的万能关键词。 大量文章、视...
“思考”工具:帮助Agen在复杂的工具使用情境中停下来思考
“思考”工具:帮助Agen在复杂的工具使用情境中停下来思考
> 与扩展思考相似,但两者是不同的概念。扩展思考是指 Agent 在开始生成响应之前所做的操作。通过扩展思考,Agent 会在采取行动之前深入思考并反复迭代其计划。“思考”工具的作用是,在 Agent 开始生成响应之后,增加一个步骤,使其停下来思考是否已掌握继续执行所需的所有信息。这在执行大量工具调用或与用户进行冗长的多步骤对话时尤为有用。 借助“思考”工具,我们让 Agent 能够在得出最终答案...
💡 未来程序员的角色会是什么样?
💡 未来程序员的角色会是什么样?
? 未来程序员的角色会是什么样? 过去 | 未来 | | ---- | --------- | | 写代码 | 指导 AI 写代码 | | 理解语法 | 理解系统和业务 | | 体力活 | 思维活 | | 工具使用者 | 工具整合者、监督者 | 「纯代码能力正在失去护城河」的核心原因 - [ ] AI 可以生成“能运行的代码”,而且越来越好 Copi...
领导风格
领导风格
领导风格对比表格
领域驱动模型的思考与认知
领域驱动模型的思考与认知
> 本项目是基于小编的开发经验与心得,分享小编关于领域模型的理解, 个人愚见仅供参考,希望能为渴望进步的你提供帮助。如果你感到有用对你有帮助,请不要吝啬你的关注,求关注,求转发。 > 文章有三个议题,什么是领域模型,为什么需要领域模型设计,以及领域驱动的项目结构是什么样的? 一、领域驱动模型是什么? 如果你是第一次听到这个词,嗯,多么恐怖的一件事情呀 什么是领域模型,一种新的技术吗? 领域模型到底...
面试再也不怕被HashMap欺负了
面试再也不怕被HashMap欺负了
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! > HashMap是我们在日常开发中经常使用的一个结合类型,同时也是面试时候最好提问的集合类型,在这里进行整理 > 一起学习,进步。 一、数据结构 先说两种数据结构, 不用怕, 如果要对付面试只要了解就行了。不用手写实现, 同时也因为已经有人帮我写好,所以开发中我们只要用就行。 1. 二叉树 动画展示二...
阿里 Ant X使用
阿里 Ant X使用
发送消息 自定义发送消息, 比如使用工具情况,这样会导致添加一个一行空的用户消息。所以要用 reload 属性 还有一种简单的用法就是用更新消息方法
重入锁 ReentrantLock
重入锁 ReentrantLock
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!!
软实力之沟通篇
软实力之沟通篇
!!tip 建议都读读 方法论会指导我们做事情,指导我们做好事情。许多时候我们程序猿并不是不会做事情,而是没有找到做事的方法。在这里建议大家都能读读,必定有所启发。 !!! 一、向上沟通 1.1 雷区一:所有问题都自己扛! 在我还是个刚刚转岗的 PM 小菜鸟时,我负责管理一个项目,代号叫“KK”,这个项目是为公司的战略项目提供底层支撑的。在跟进这个项目的前几个月里,我跟技术负责人阿仑配合得还算默契...
谷歌浏览器自动填充导致输入框样式问题
谷歌浏览器自动填充导致输入框样式问题
谷歌浏览器自动填充导致输入框样式问题
谬误
谬误
谬误(fallacy)是逻辑推理或论证中出现的错误,可以导致论点不合理或不真实。根据谬误的特点,通常将其分为以下几种主要类别: 常见的逻辑问题 一、形式谬误 形式谬误(Formal Fallacy)是由于逻辑形式不正确而产生的错误。这类谬误通常出现在推理结构中,不符合正确的逻辑规则。 1. 肯后件谬误:认为如果 (A) 导致 (B),则 (B) 为真时 (A) 也为真,这是错误的。 示例...
读写锁 ReadWriteLock
读写锁 ReadWriteLock
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!!
识别图片颜色
识别图片颜色
useThemeColor 首先创建一个canvas容器 将图片绘制到容器中 使用getImageData方法获取rgba, 查看getImageData 4通过中位数切分算法切割并提取颜色 筛选掉相似的颜色 使用方法: Demo
记忆系统:让智能体拥有记忆
记忆系统:让智能体拥有记忆
记忆系统的工作流程 根据认知科学的研究,人类记忆的形成经历以下几个阶段: 1. 编码(Encoding):将感知到的信息转换为可存储的形式 2. 存储(Storage):将编码后的信息保存在记忆系统中 3. 检索(Retrieval):根据需要从记忆中提取相关信息 4. 整合(Consolidation):将短期记忆转化为长期记忆 5. 遗忘(Forgetting):删除不重要或过时的信息 基于该...
认知科学到智能体记忆
认知科学到智能体记忆
人类记忆系统的启发 根据认知心理学的研究,人类记忆可以分为以下几个层次: 1. 感觉记忆(Sensory Memory):持续时间极短(0.53秒),容量巨大,负责暂时保存感官接收到的所有信息 2. 工作记忆(Working Memory):持续时间短(15-30秒),容量有限(7±2个项目),负责当前任务的信息处理 3. 长期记忆(Long-term Memory):持续时间长(可达终生),容量...
自媒体的思考
自媒体的思考
小红书 1. 蹭流量是最容易火爆的方法,没有之一。 2. 除非你确定你的干货紧贴热点,否则都不稳。 3. 抖音和小红书的观众,要的就是快餐,甚至不用咀嚼。不要试图教会他们什么。 定位 如果要做短视频或者自媒体,那么你的定位是什么? 定位就是你需要让外界,对你产生的第一认识是什么。只有认识了你,才可能确定你是不是观众的菜。 只有共性,才能让一群人关联在一起。比如说车友群,某某群。 1. 某个相同爱好...
给线程归归类
给线程归归类
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示. 线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织 线程组提供对组内的线程的管理能力,如我们可以用一个线程组里面的线程去执行任务,任...
绍兴一日游
绍兴一日游
太棒了,嘉兴风景宜人、江南水韵浓厚,适合拍温馨有爱的家庭Vlog。以下是为你量身定制的一份自驾+露营+亲子Vlog拍摄脚本,你可以参考它安排内容结构、镜头语言与拍摄节奏。 -- 🎬 Vlog 标题推荐: > 「嘉兴周末自驾露营记|一家人的车顶星空夜 🌌」 --- 🧭 整体拍摄结构建议 1. 片头介绍(30秒) 2. 准备出发(1分钟) 3. 沿途风景&车内互动(1分钟) 4. 到达嘉兴景点游...
线程状态
线程状态
代码 状态介绍 状态|介绍| |:-|:--| |NEW|尚未启动的线程处于此状态。| |RUNNABLE|在 Java 虚拟机中执行的线程处于这种状态。| |BLOCKED|阻塞等待监视器锁的线程处于此状态。| |WAITING|无限期等待另一个线程执行特定操作的线程处于此状态。| |TIMEDWAITING|具有指定等待时间的等待线程的线程状态。线程由于调用了以下方法之一而处于定时等待状态,并...
线程池扫盲
线程池扫盲
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! > [!TIP] > 本篇文章通读时间大概3分钟,希望在三分钟内的讲解,对你有所帮助, > 一定要认真看并思考,好了。废话不多数,直接上干货,本节内容我们讲 > 的是Java的线程池,在讲之前我们首先看一下有哪些线程池,这些线程池 > 我们不过多讲解,因为我们的关注点是他们是如何实现的,和其运行的原理。...
线程安全感
线程安全感
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 线程安全 > 所谓发生线程安全其实是有一个前提条件,即当有多线程时候才会设计到线程安全,单线程是不存在线程安全的问题的。且只有在有状态对象中才会发生。 1. 什么叫有状态对象? 1.1 无状态对象 1.2 有状态对象 为什么说无状态对象不会发生线程安全,线程对公共变量(实例变量,类变量)进行操作才会发生...
线程安全之原子操作
线程安全之原子操作
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 原子特性: 原子是最小的粒子,不可再分 这并不是一个化学课,而是巧妙的借用了化学上的一个概念,即原子是最小的粒子,不可再分;原子操作也是不能再分的操作; 为了能把这个讲明白,下文基本都是大白话,其实Java本来并不是很难,而是总有一些人喜欢把简单的概念给复杂化。小编不喜欢 那种说辞,所以尽量简单易懂。如...
第15篇:Mybatis中打印Sql信息
第15篇:Mybatis中打印Sql信息
!! tip Sql打印需求 在Mybatis中如果我们要对我们的sql信息进行检查, 只能启动Spring容器, 去执行根据成功和失败来判断我们的逻辑是否有问题。 此时会比较耗时,因为要启动容器。基于这个痛点, 本文要设计一个工具。使我们不依赖Spring容器,也不依赖任何外部插件,直接就把 Sql信息的打印出来。 !!! 仓库地址: 使用方法 一、设计思路 基于前面我们对Mybatis的学习...
第14篇:Mybatis中反射工具
第14篇:Mybatis中反射工具
!! tip 我们知道在java中基于反射的速度相对来说是很慢的, 但是如果对反射信息加了缓存性能可以提升1半以上, 如果在对反射设置了忽略安全检查, 性能更是会再提升1半。那么这个时候 反射带来的性能问题基本可以忽略了。在Mybatis中关于反射的工具就可以很大程度来解决这个问题。本篇讲解下Mybatis中的工具类, 以后在项目中也可以直接使用。 !!! 一、反射缓存类 Reflector 所有...
第13篇:Mybatis权限插件设计
第13篇:Mybatis权限插件设计
第12篇:Mybatis分页插件设计
第12篇:Mybatis分页插件设计
第11篇:Mybatis查询限制插件设计
第11篇:Mybatis查询限制插件设计
一、实现目标 目标: 针对Mysql数据库实现动态修改sql的能力,增加上limit的查询限制。 二、知识扩展 首先下了解下有那些的分页技术。 2.1 物理分页 所谓物理分页是数据库直接提供了分页的预发, 如mysql的limit,oracle的rownum,好处是效率高;不好的地方就是不同数据库有不同的语法。 2.2 逻辑分页 逻辑分页利用游标分页,好处是所有数据库都统一,坏处就是效率低。 二、...
第10篇:分布式事务处理
第10篇:分布式事务处理
第10篇:Spring Webflux
第10篇:Spring Webflux
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 二、知识点 2.1 BeanFactory 工厂 2.2 ApplicationContext 容器上下文
第10篇:Mybatis的插件设计分析
第10篇:Mybatis的插件设计分析
参考文档: 官方文档 一、 插件设计介绍 Mybatis 中的插件都是通过代理方式来实现的,通过拦截执行器中指定的方法来达到改变核心执行代码的方式。举一个列子,查询方法核心都是通过 Executor来进行sql执行的。那么我们就可以通过拦截下面的方法来改变核心代码。基本原理就是这样,下面我们在来看 Mybatis 是如何处理插件。 在这里插入图片描述 名称 | 类型...
第09篇:分布式链路追踪
第09篇:分布式链路追踪
第09篇:Spring处理Mybatis事务
第09篇:Spring处理Mybatis事务
!! tip 本篇文章是对Mybatis知识点的一个扩展,主要一起来研究下Spring是如何来管理事务的。顺便再多聊一点其他的知识点,在学习的过程中主要带着以下问题来进行有目的的学习 然后最终来回答下面这些问题。 !!! 1. Mybatis是如何整合进Spring中的 Spring如何知道哪些接口是Mapper接口的? - Mapper接口是如何变成Spring Bean的? ...
第09篇:MessageSource国际化
第09篇:MessageSource国际化
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 1.1 i18n 12 二、API 2.1 Locale 2.2 文件命名规范 AcceptLanguage enUS 语言解析器 LanguageTag.parse Locale#forLanguageTag enUS 要转成 enUS 中划线 LocaleResolver#resolveLo...
第09篇:Formatter 格式转换
第09篇:Formatter 格式转换
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 二、知识点 2.1 BeanFactory 工厂 2.2 ApplicationContext 容器上下文
第08篇:分布式服务网关
第08篇:分布式服务网关
第08篇:Mybatis事务处理
第08篇:Mybatis事务处理
一、Jdk底层实现 Java JDK中提供了标准接口,不同的数据库驱动负责具体的实现。后面无论是还是对事务的处理,无论怎么的封装,最终究其到底都是由来提供的能力。 例如 。具体负责跟mysql进行通信执行命令。 二、Mybatis实现 首先我们来看Mybatis是如何对进行事务的封装。首先我们先来看一个图。 2.1 调用流程 根据上面的图我们看,都是一层一层的封装进行委派最终由的具体数据库驱动来进...
第08篇:Data Binding类型绑定
第08篇:Data Binding类型绑定
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 1.1 什么是数据绑定? 本文我们所描述的数据绑定可以理解成。 1. 将结构化的数据文本, 转换成Java对象。 2. 通过Spring提供的API方式,而不通过反射的方式将属性信息,绑定到Java对象。 1.2 为什么需要数据绑定API呢? 为什么需要数据绑定呢? 因为在Spring中很多地方都...
第07篇:分布式服务熔断
第07篇:分布式服务熔断
第07篇:Mybatis缓存装饰器
第07篇:Mybatis缓存装饰器
!!tip MyBatis 对缓存的设计是非常巧妙的。花样很多,但却不是真的花样。因为只是对 数据结构的封装, 但是却实现了很多挺好用的能力。 如果单单从设计模式上的角度来,其实就是典型的装饰器模式, 装饰器模式其实并不难,所以我们不讲设计模式, 本篇文章我们来看看 缓存设计巧妙的点。 !!! 官方文档 下面通过简单的代码review来分析下这11个缓存类设计的巧妙点。(因为是对博客重构,历史图片...
第07篇:Converter SPI类型转换
第07篇:Converter SPI类型转换
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! [[toc]] 一、前言 本篇文章中的内容,非常的小众,虽然在实际开发中,基本上不会有使用的场景,但是在Spring中却无处不在的知识点。因为我们是学习Spring,所以我们最好了解一下。 本篇文章,主要学习两个东西。第一个是类型转换, 第二个是格式化输出。 1.1 类型转换 类型转换,比如说Long类型转...
第06篇:分布式服务限流
第06篇:分布式服务限流
第06篇:Mybatis缓存设计
第06篇:Mybatis缓存设计
官方文档 !!tip MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。本篇文章,小编将会在最短的时间呢,通过观察源码来深刻了解Mybatis的 一级二级缓存;然后在说如何定制。 !!! 一、Mybatis Cache设计 在Mybatis中所有的缓存,都是实现自Cache接口。无论是一级缓存还是二级缓存都是实现这个接口。其中一级缓存是本地缓存,二级缓存是一个允许开发...
第06篇:AOP面向切面编程
第06篇:AOP面向切面编程
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 > 面向切面编程 (AOP) 通过提供另一种思考程序结构的方式来补充面向对象编程 (OOP)。 OOP 中模块化的关键单元是类,而 AOP 中模块化的单元是切面。切面支持跨多种类型和对象的关注点(例如事务管理)的模块化。(这种关注点在 AOP 文献中通常被称为“横切”关注点。) Spring 的关...
第05篇:手写JavaRPC框架之执行层思路
第05篇:手写JavaRPC框架之执行层思路
作者: 西魏陶渊明 博客: > 天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、思路分析 通过前四篇文章的一起 Coding, 我们已经完成了 30%的工作,即完成了一个通信层的搭建。在不依赖任何 web 容器的情况下,可以实现服务之间的通信工作。就像下面这样。 客户端&服务端通信 这只是完成了通信, 就好比,两台服务器之间建立了沟通管道,但是究竟怎么用这个管道呢? 如何将客户端的请求...
第05篇:分布式服务降级
第05篇:分布式服务降级
第05篇:SpEL强大的表达式语言
第05篇:SpEL强大的表达式语言
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、概述 Spring 表达式语言(简称“SpEL”)是一种强大的表达式语言,支持在运行时查询和操作对象图。语言语法类似于 Unified EL,但提供了额外的功能,最值得注意的是方法调用和基本的字符串模板功能。 虽然还有其他几种可用的 Java 表达式语言——OGNL、MVEL 和 JBoss EL 等等...
第05篇:Mybatis的SQL执行流程分析
第05篇:Mybatis的SQL执行流程分析
一、前言 前面我们知道了Mybatis是如何进行代理的, 但是最终 中是如何将参数转组装成Sql,并执行处理Sql返回值的地方还都没看到。本篇我们就带着如下三个问题开始我们的探索吧。 本篇内容因为涉及跟jdbc的知识,如果对这部分内容有点遗忘,请先[JDBC知识复习](),另本篇内容知识点较多,目录较复杂,建议根据文字结合 代码在实践的过程中一起学习。最好也可以自己debug一下。会收获更大。做...
第04篇:手写JavaRPC框架之搞定网络通信
第04篇:手写JavaRPC框架之搞定网络通信
作者: 西魏陶渊明 博客: > 天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 听说你Sql写的很溜,那么你知道服务端的Sql是如何被传输到SQL服务器执行的吗? - 听说你10分钟能写两个接口,那你知道数据是如何在两个系统中通讯的吗? - 听说你微服务玩的很熟练,那你知道微服务的基础是什么吗? 可以这样说,我们写的任何系统都离不开通讯,离不开网络编程,就没有现在我们发达的互联...
第04篇:分布式配置中心
第04篇:分布式配置中心
第04篇:Resources资源文件
第04篇:Resources资源文件
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 Java 的java.net.URL各种 URL 前缀的标准类和标准处理程序不足以满足所有对低级资源的访问。例如,没有URL可用于访问需要从类路径或相对于ServletContext。于是乎这就给了Spring,封装继承多态,大展身手的展示了。怎么展示呢? 在Spring中就是 接口,下面我们就...
第03篇:手写JavaRPC框架之搞定序列化
第03篇:手写JavaRPC框架之搞定序列化
> 天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄!从本篇开始后面的所有章节都是实战环节,每节一个小目标,最终我们实现完整的JavaRPC的框架,然后发布maven仓库,感兴趣的同学可以下载研究。大家如果想要获取源码的话可以私信: RPC,自动回复仓库地址。 其实这些东西并没有什么难度,只要从头到尾跟着我们一起coding,其实就...
第03篇:分布式服务调用
第03篇:分布式服务调用
一、前言 首先我们说下,什么是服务调用?其实就是两个服务器之间能够进行通信,完成某种请求与响应的过程。 那么计算机之间是如何进行通信的呢?这就不得不提到 TCP/IP 协议了。关于 TCP 协议的底层知识非常丰富,随便拎出来一点都能讲一整月。但在本篇文章中,我们只需要知道: TCP 是一种面向连接的可靠传输协议,能将大数据拆分成多个数据包传输。 每个数据包会经过 IP 层封装地址信息,安全送达...
第03篇:Validation参数校验
第03篇:Validation参数校验
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 数据校验是任何开发情况下都不能避免的逻辑, 在实际的业务中往往我们会通过在业务中去前置校验我们需要使用的数据。代码可能是这样的。 但是其实,Spring Framework 提供对 Java Bean Validation API 的支持。我们完全可以使用Spring提供的能力。如果使用Sprin...
第03篇:Mybatis核心类详细介绍
第03篇:Mybatis核心类详细介绍
!!info 核心类介绍 前面我们知道Mybatis的解析原理,知道了在 、 出现了很多核心的类。 正是由这些类来实现了,Mybatis的核心功能。所以要想完全搞懂 Mybatis,这些类就必须要进行深入的研究,废话不多少,直接就开始吧。 !!! 其实这里面的每个类要都能单独拆出来一篇进行详细说明,但是这里我们只取其精华,知道他的作用,及如何使用。和能借鉴的地方就可以了。 一、Configura...
第02篇:解耦就用Event2
第02篇:解耦就用Event2
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 消息常用做解耦,这句话这样讲,可能大家没有什么体感。下面我们举一个实际开发中的例子,可能会更加帮助大家来理解。现在我们有这么一个系统。用户登录系统, 来完成产品下面给我们提的需求任务。通过完成任务的形式,来发现问题,最后再来解决问题。 1.1 自动签到 有一天,产品提了一个需求。在用户登录时候,要...
第02篇:手写JavaRPC框架之设计思路
第02篇:手写JavaRPC框架之设计思路
>天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 隔壁老李又在喷我了: "完犊子了,小编这绝对是为了骗粉丝,而水的一篇文章,到了第二篇竟然还没有开始写代码,又是一篇纯概念文章"。 我也想写代码,但是在没有讲清楚思路之前,一定不要上来就蛮干,不然就毫无设计可言了。小编向各位观众老爷保证,下一篇文章绝对上代码。 本篇文章非常重要,这是我们本系列文章中的重中之重,本篇文章的主要内容就是设...
第02篇:分布式负载均衡
第02篇:分布式负载均衡
一、什么叫负载均衡 什么叫, 所谓负载。先可以理解为当流量请求到某一个微服务应用, 则这么微服务应用就承受了负载。 如下图,浏览器发送了3次请求,后台有2个节点的微服务应用。但是每次都请求在某一台。而另外一台一直空闲没有流量。这种情况就是不均衡的。 已上图为例,实际情况可能并不一定是一次请求,也可能是。但是不论实际情况是什么, 负载均衡就是要解决一个事情,就是。产生故障。 二、常见解决思路 所谓负...
第02篇:Mybatis配置文件解析
第02篇:Mybatis配置文件解析
一、配置文件分析 !! note 文件分析 在上一篇的代码中,我们看到了一个非常重要文件,这里我们先来人肉分析看,然后看下代码是如何解析的,毕竟代码也是人写的。 思路决定出路,我们如果有思路,然后在看源码会更加的具有分析的能动性。 !!! 1.1 mybatisConfig.xml !!! tip 注意看高亮行 1. line(4) dtd文件是xml的约束文件,用于约束 标签中属性 2. l...
第01篇:搞定Spring容器管理
第01篇:搞定Spring容器管理
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! @[TOC] 一、前言 是 开发者,永远绕不开的结。 是非常值得开发者来学习的, 以目前 在 领域的统治性地位, 可以说学 就是在学 。但是作为新入门的开发人员,甚至说是有一定工作经验的同学,面对如此庞大的框架,都不一定是充分掌握了所有的知识点。因为大多数人的学习,都不是系统的学习,都是片面的。以...
第01篇:手写JavaRPC框架之思路分析
第01篇:手写JavaRPC框架之思路分析
作者: 西魏陶渊明 博客: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一、前言 如果不是因为热爱,我不会这样;如果不是为了,涨点粉丝,我不会这样; 如果不是为了几两散碎银子,我更不会这样。 以前的文章开场太过严肃,太过专业。就像大学老师上课,只知道讲课。不知道互动。这样 效果太差,写的没意思,读者更是没意思。大数据分析还以为你是抄的,还不给你推荐热门 😭。 不然就改变一下风格吧,...
第01篇:分布式注册中心
第01篇:分布式注册中心
一、什么是注册中心 什么是, 往往是在分布式的应用体系下才会遇到的。对于分布式体系应用都是横向进行扩展。如下图这个服务,具有2台服务器 但是当用户从网关进来访问, 网关是如何知道这个 有几台服务及每台服务的网络地址是什么呢? 所以就需要有一个地方能收集到每台应用的地址及命名。 往往这个地方就被叫做 。分布式环境下的应用在启动时候都会向这个地方来注册自己的网络地址,及命名。 二、注册中心的职责 当...
第01篇:Mybatis学习之环境搭建
第01篇:Mybatis学习之环境搭建
什么是 MyBatis?官方文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 重构Mybat...
移动端展示页面
移动端展示页面
安装依赖 实现1抽屉 方案 1,文章在抽屉里面显示 方案2-Swiper
看板配置JSON
看板配置JSON
甄嬛模型微调
甄嬛模型微调
一、微调(Finetuning)的原理 1. 什么是微调 微调就是: > 在已经训练好的大模型(比如 Qwen1-5B/8B)基础上,针对你的特定任务再训练,让模型学会你的“偏好”或“专用知识”。 类比: 大模型 = 一个通用的知识大脑(懂很多东西,但很笼统) 微调 = 在这个大脑上做“专项训练”,让它擅长你关心的领域(比如甄嬛聊天风格) --- 2. 为什么要微调 大模型很大:训练成本高,...
消息验证
消息验证
!!info 这一是凑数的,想表达的内容只有一点: 消息入口不应该出现复杂的业务逻辑。 对于消息的验证,我们只需要验证消息收发是否正常即可。处理方案就是将消息与 业务分离测试。 !!! eg: Message入口就类似于Web入口一样。我们复杂的业务逻辑一定不会再入口处直接写代码, 如果是这样写的那么维护性和复用性一定是很差的。
海量数据模拟
海量数据模拟
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 一、创建表 二、存储函数插入海量数量 存储过程无return,存储函数有。 1. 创建存储函数生成id和name name随机字符串 如果开启了慢慢查询日志,在开启存储函数就会冲突,解决办法1就是管理慢日志查询。 解决办法2: id随机数 2. 通过存储过程插入海量数据emp 2. 通过存储过程插入海量...
测试范围
测试范围
!!info 项目中拿些类需要进行单元测试呢? 单测不是目的,是手段。目的都是保证质量 !!! 一、从项目分层维度设计单测用例 常见的项目分层有一下这些。 Web层 - Service层 - domain层 - Integration层 - Common层 公用类必须要做 1.1 Web层 【忽略】 一般web层已经上线不会发生改动,往往改动的是新增或者删除参数。可以忽略。 1.2 Serv...
测试成本
测试成本
!!info 测试成本到底有多大? 你认为你写的代码需不需要测试? 为了引出成本的话题, 我们先从实际工作中出发 看看你能否经受住这些灵魂的考验吧。 !!! 一、灵魂深处的拷问 你的代码质量如何度量? - 你是如何保证代码质量? - 你敢随时重构代码吗? - 你是如何确保重构的代码依然保持正确性? - 你是否有足够信心在没有测试的情况下随时发布你的代码? 📢 如果答案都比较犹豫,那么就证明我们...
泛型用法
泛型用法
Partial 泛型属性可选 Required 泛型属性必选 Readonly 泛型属性只读 Pick 泛型部分属性可选 Omit 删除部分泛型属性
泛型函数
泛型函数
Capitalize 首字母大写 Uncapitalize 首字母小写 Uppercase 大写 Lowercased 小写
没有规矩不成方圆
没有规矩不成方圆
没有条件创造条件Condition
没有条件创造条件Condition
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! Condition 是为了调换 Object 中的 wait() 和notify(). API|Object|Condition| |:--:|:---:|:---:| |等待|wait()|wait()| |通知|notify()|signal()| |通知所有|notifyAll()|signalA...
沟通模型
沟通模型
10个沟通表达模型 说话条理,开口重点。 模型 | 适用场景 | 模板话术 | |---------------|----------------|-------------------------------------------------------...
案例分享
案例分享
前言 !!info 单测覆盖率为应用质量指标化提供解决方案 一口吃不了一个胖子, 由于每个人的认识不一样,要想达到理想的状态,显然是不可能的。此章节主要从实践出发,一步一步带领我们完成一个有效的可复用的单元测试的编写。 !!! 一、目标 1.1 质量保障 单测是保证项目质量的手段,而不是目的。 通过 在每次编译时候,对代码进行测试。以到达可持续集成的目的。这里的关键是在每次服务发布的时候,首先要...
格式转换
格式转换
Excel格式转换 1. 使用 excel 打开 xls 文件并转换为 xlsx
极限测试
极限测试
!!danger 极限测试 最大值 - 最小值 - null值 - 空值 - 异常 !!! 这段代码会执行通过吗? 关于测试用例的要思考下是否要使用极限值,验证。
机器学习
机器学习
Gradio Hugging Face Gradio 是一个Hugging Face发布的开源Python库,可以为机器学习模型、API或任意Python函数快速构建web可视化界面,并且通过Gradio的内置共享功能快速生成对应的链接,而无需任何JavaScript、CSS或网络托管经验。Gradio的设计理念是“无代码”,它的自封装组件的功能也相对比较完整 安装依赖 建议使用 安装,保证环境...
有趣的脚本
有趣的脚本
毒鸡汤 ~/Bin目录为命令目录,放在该目录下的命令都可以直接被引用到 Web服务器 在目录下开启 web 服务器,通过 Mac隐藏和展示桌面 命令行图床
智能体经典范式构建
智能体经典范式构建
ReAct 模式
文件路径处理
文件路径处理
文件处理 1. 指定目录中文件打平处理 2. 获取完整路径名,文件名,文件后缀名 3. 使用 进行复制或移动 4. 使用 匹配文件名 shutil 是 Python 标准库中的一个模块,专门用于处理文件和目录的高级操作,例如复制、移动、删除文件和目录等。它提供了一些便捷的方法,能够实现类似于操作系统的文件操作。下面是一些 模块的主要功能和用法。 1. 作用:复制文件。 - 参数: ...
数据隔离
数据隔离
!!info 数据隔离 数据隔离一直是一个测试的痛点,测试数据可能是 的数据,所以单测过程中,难免会造成脏数据 这种场景,有通用的解决方案。 已经帮我们做好了。这里我们只讲实操和用法。 如果有兴趣的话可以研究下 TransactionalTestExecutionListener !!! 解决方案 !!!note 单测引导类配置说明 @Transactional 如果加上这个注解,就代表全局的...
数据模型导出
数据模型导出
!! tip jmvn export 数据模型导出 另一个好用的功能就是数据导出,这个功能的主要用处是,在写技术方案时候将数据模型输出到文档中。支持markdown语法。 !!! 自动读取配置进行导出 如果你已经在配置文件中了dbConfig相关信息,则会自动读取配置信息。你只需要输入要导出的表名即可。 根据命令提示完成导出 如果你没有在配置文件中添加dbConfig相关信息,请根据命令提示来进...
数据模型安装
数据模型安装
!! tip jmvn instll 数据安装 一个好用的功能就是支持数据安装,这个功能是我比较喜欢的。因为在项目 中开发过程中,经常会出现,表结构进行变更,可能是增加些表注释,增加个字段。这个时候就要同步来 修改数据模型。是比较繁琐的。当你尝试过 功能后,这个问题就能彻底解决了。 只需要运行 命令,数据模型就会同步更改。 !!! 配置如下 在你的项目 中添加如下。 会读取 中数据库的配...
数据分析与清洗
数据分析与清洗
Pandas 作者: 西魏陶渊明 博客: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 前面第一篇文章算是入门, 蜻蜓点水比较简单,而这一篇是干货满满, 并配有数据案例。一定要看完, 因为这将是后面我们具体案例分析的基础。 这一篇文章中,我们将深入研究如何使用Pandas进行数据探索和清洗。您将学习如何处理缺失值、重复数据、异常值等常见的数据质量问题。通过使用Pandas的强大功能,如...
插件开发
插件开发
!! tip jmvn instll 数据安装 一个好用的功能就是支持数据安装,这个功能是我比较喜欢的。因为在项目 中开发过程中,经常会出现,表结构进行变更,可能是增加些表注释,增加个字段。这个时候就要同步来 修改数据模型。是比较繁琐的。当你尝试过 功能后,这个问题就能彻底解决了。 只需要运行 命令,数据模型就会同步更改。 !!! 配置如下 在你的项目 中添加如下。 会读取 中数据库的配...
提示词示例
提示词示例
文本概括 自然语言生成中的一个标准任务是文本摘要。文本摘要可以涵盖许多不同的风格和领域。 反例 提示词: 输出: 正例 提示词: 输出: 信息提取 语言模型是被训练用于执行自然语言生成及相关任务,但它同样非常擅长执行分类和一系列其他自然语言处理(NLP)任务。 提示词: 输出: 问答 让模型给出具体回答的最佳方法之一是改善提示的格式。如前所述,一个提示可以结合指令、上下文、输入和输出指示(outp...
提示词的重要
提示词的重要
提示词的重要 看下面一个简单的示例: 提示词 - 输出 从上面的提示示例中可以看出,语言模型能够基于我们给出的上下文内容 "The sky is" 完成续写。输出可能是出乎意料的,或者与你想要完成的任务相去甚远。实际上,这个基本示例突出了提供更多上下文或明确指示你想要实现什么的必要性。这正是提示工程的核心所在。 让我们试着改进一下: 提示词: 输出: 本例中,我们告知模型去完善句子,因此输出结果...
提示词案例
提示词案例
提示词案例 礼物策划师 emoji翻译器 小红书浓人 短视频脚本 美文排版 会议精要 PPT精炼 爆款文案 影剧推荐 职业导航 影评达人 诗意创作 新闻快写 要点凝练
提示词
提示词
从程序员的角度来理解,大模型就像是一种编程语言,提示词就像是语法。是能让大模型按照我们的想法来做事情的。 提示词用的好,那就能做各种事情。 所以这篇文章,我们就来一起学习如何使用提示词,跟大模型进行交互。
技术选型
技术选型
一、JUnit JUnit目标是为JVM上的开发人员端测试创建最新的基础。这包括关注Java 8及更高版本,以及启用许多不同的测试样式。 强制使用 以上版本, 目前最新的版本是 , 常用的是 ,建议使用JUnit4 或者使用JUnit5。 这里有一个小坑。如果SpringBoot2.1.x版本依赖的Junit4。SpringBoot应用要通过 @RunWith + @SpringBootTest...
我的插件
我的插件
My Plugin vitepress 使用 vite 构建的,所以我们可以根据 vite 的插件来实现。 VitePluginAutoSidebar 自动构建侧边栏,如本页面侧边栏。 侧边栏发生变化自动重启 - 文章发生变化不自动重启,提高速度。 使用方法 - category: 侧边栏目录 实现代码 Markdown 插件 使用方法 实现原理 = 红色高亮 = - 语法: -
成熟的线程要懂得拒绝
成熟的线程要懂得拒绝
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!!tip 稻盛和夫说:你不会的东西,觉得难的东西,一定不要躲,先搞明白,后精湛,你就比别人优秀了。因为大部分人都不舍得花力气去钻研,自动被淘汰,所以你执着的努力,就占了大便宜。 !!! !!! 拒绝策略 拒绝策略就是任务实在是已经执行不了,那么就需要你告诉程序,怎么样去拒绝在执行其他任务 在实际开发场景中,...
性能优化之@Contended减少伪共享
性能优化之@Contended减少伪共享
一、什么叫伪共享 说到伪共享,就要说CPU缓存,我们程序执行时候信息会被保存到CPU缓存中 而这些缓存中的数据可能被多线程访问,假如一个线程还没处理完,另外一个线程 就对数据进行了修改,就会导致上一个线程发生幻读的情况,比如刚才看到a=1,然后准备a = a+1。 但是还没做,另外一个线程就先将a变成2了。导致了上一个线程计算后本来应该是a = 1 + 1,变成了a = 2 + 1 计算结果就不对...
快速安装
快速安装
Node环境安装 !!: codegroup !!! code-group-item Window !!! !!! code-group-item Mac:active !!! !!!: 命令安装
循环锁屏障 CyclicBarrier
循环锁屏障 CyclicBarrier
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 举个例子,五个人开黑,少一个人就开不了。
影响范围
影响范围
!!danger 注意影响 所有的单测一定针对不是生产环境,一般线上发布我们会声明不运行单测。 如何考虑环境因素呢? 两个解决办法: 应用维度环境分离 spring.profiles.active=test - 测试基类指定环境 @ActiveProfiles("test") !!! 一、影响范围考虑哪些因素? 1.1 是否影响测试环境? 可以设置单测事务不提交,保证对数据无影响。 1.2 ...
异步验证
异步验证
!!danger 请听题 对于下面这段代码你觉得单测能通过吗? !!! 异步场景 一、常用解决方案 1.1 white解决简单暴力 white解决 1.2 LockSupport最大时间限制 LockSupport.parkNanos()线程挂起 二、基于上面两种配合JUnit定制 2.1 使用演示 📢 注意这里的 @Timed 原生是不具备这个能力的,要基于JUnit进行扩展。 @Timed ...
开个工厂造线程
开个工厂造线程
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 线程工厂 线程是Java里面很重要的一个概念,具体体现就是Thread这个类。我们平时最常用的创建线程就是在用Executors来创建线程池。在前面的章节 也可以看到,创建线程池时候有一个入参就是线程工厂,ThreadFactory这个类。那么这个类具体有什么用呢? 其实就是为了统一在创建线程时设置一些...
年终总结汇报大纲
年终总结汇报大纲
工作总结框架如下: 一、工作开展情况 1.一年来取得的成绩。 2.在单位主要做了哪些工作。 3.目前正在开展的主要工作。 4.下一步要做的工作。 二、工作中的创新点、亮点以及经验技巧。 1.哪些环节提高了工作效率。 2.精简和优化了哪些工作流程。 3.为单位节约了哪些成本。 三、存在不足和问题分析 1.工作中遇到了哪些困难。 2.出现困难的原因。 3.是如何解决这些困难的。 四、来年的打算 1.工...
常用函数
常用函数
Pandas 读取Excel 读取文件,解析sheet名为下面的表格,跳过最后2行 数据过滤 重新赋值,只保留指定的日期 宽数据转长数据 主要用户存储到mysql中。 日期列转换 获取最大日期 条件过滤 如果币种中包含CNY,~取反 函数的参数说明如下: pat:要替换的模式,可以是字符串或正则表达式,这里使用了正则表达式 cnyd|/; - regex:指示 pat 是否为正则表达式,这里设...
工具介绍
工具介绍
目标打造一个简单好用的 Java 服务脚手架工具,让任何没有开发经验的同学都能快速构建一个可以运行的项目 工具围绕几个方面进行开发, 力求在以下方面提高开发的工作效率, 同时通过脚手架的方式从一开始就统一下项目结构和模型。 深度定制 (定制公司标准的项目结构) - 快速构建标准的Maven多模块服务 - 支持数据库模型快速安装 (一次配置终生使用, 多快好省) - 数据库模型文档一键导出 (每次...
字符串常量池
字符串常量池
本篇课程不来虚的,上来就是干活,现在发车。小编通过代码案例及比喻,带你一窥究竟。 为什么会有常量池的概念? 不知道小伙伴们是否有思考过这个问题? 没有思考也无所谓,小编在这里类比一下,大家就会清晰了。 什么是池? 我们听的最多的池,应该是数据库连接池. 为什么会有数据库连接池,其实就是为了节省资源,提高性能,防止重复创建连接,避免占用内存和网络资源。 常量池其实就是跟数据库连接池的目的都是一样的。...
字典设计
字典设计
用法 useDictOptions defineStore
委派双亲之类加载器
委派双亲之类加载器
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! BootStrap ClassLoader:称为启动类加载器,是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,如:rt.jar、resources.jar、charsets.jar等,可通过如下程序获得该类加载器从哪些地方加载了相关的jar或class文件: - Extension...
如何设计一款通信层框架
如何设计一款通信层框架
>网络世界离不开的就是通信,不管是任何框架只要是提供互联网服务就必须有通信的能力。作为业务开发者可能我们业务中也会遇到这样的需求,或者是有啥好的创意性框架,但是无奈现在通信层框架都太厚重了,想要快速学习使用显然不太可能,所以呢 本文就是教你如何来实现一个封装一个通信层框架。 当看完本篇你将会对Java技术有一个更深入的了解。你可以利用本文学习的内容去实现一下业务 自己设计一个Tomcat容器; ...
如何找到垃圾SQL语句,你知道这些方式吗?
如何找到垃圾SQL语句,你知道这些方式吗?
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! > 这篇文章主要是讲如何找到需要优化的SQL语句,即找到查询速度非常慢的SQL语句。 一、慢查询日志 1. 何为慢查询日志 慢查询日志是MySQL提供的一种日志记录,它用来记录查询响应时间超过阀值的SQL语句 - 这个时间阀值通过参数 设置,如果SQL语句查询时间大于这个值,则会被记录到慢查询日志中...
如何学会复盘
如何学会复盘
不懂复盘,再努力都是低水平重复 一、复盘三角 “复盘三角”,也就是记录、反思、提炼这三个动作。 1.1 记录 一天过完以后,把你当天或者过往一天的主要发生记录下来,遇到了什么人,谈了什么话,做了什么事,情绪怎么样…… 刚开始的时候,最好老老实实把一整天能记录的都记录下来,作为一种刻意练习,作为一种基本功的修炼。 有很多人会怀疑,说记录会不会是在浪费时间,其背后的意思,实际上是想有一个取巧的办法,能...
大模型
大模型
!!tip 本文探讨了检索增强生成(RAG)技术,涵盖了其在自然语言处理中的应用、工作原理、优势,以及与之相关的知识向量化、知识召回、向量数据库、向量模型和 prompt 提示词等方面的内容。 !!! RAG 在自然语言处理领域,大型语言模型(LLM)如GPT4o等已经取得了显著的进展,它们能够生成连贯、自然的文本,回答问题,并执行其他复杂的语言任务。然而,这些模型存在一些固有的局限性,如 ="模...
多线程之线程隔离
多线程之线程隔离
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! > [!TIP] > Java多线程之隔离技术ThreadLocal源码详解 Java多线程之隔离技术ThreadLocal源码详解 本篇文章是对ThreadLocal和InheritableThreadLocal,TransmittableThreadLocal的原理和源码进行深入分析,并举例讲解,其...
基础教程
基础教程
一、启动Arthas 启动命令 二、选择进程 直接选择我们要监控的进程,输入3进入 提示已经连接上进程。 三、基础信息查询命令 3.1 dashboard 看板命令 输入 会定时将应用信息输出到控制台上。 3.2 jad 反向编译 3.3 watch 监控指令 这个命令是比较常用的命令,可以用来分析系统性能。 监控这个类 参数名|含义| |:-:|:--:| |returnObj|返回值| ...
基础命令
基础命令
一、启动Arthas 启动命令 二、选择进程 直接选择我们要监控的进程,输入3进入 提示已经连接上进程。 三、基础信息查询命令 3.1 dashboard 看板命令 输入 会定时将应用信息输出到控制台上。 3.2 jad 反向编译 3.3 watch 监控指令 这个命令是比较常用的命令,可以用来分析系统性能。 监控这个类 参数名|含义| |:-:|:--:| |returnObj|返回值| ...
基于命令行的Java脚手架
基于命令行的Java脚手架
!! tip jmvn 现阶段SpringBoot + Maven多模块是构建Java后台项目的标准格式,但是Maven多模块和成熟的Java项目结构搭建起来也是比较费力的。 对于一个老鸟来说可能需要5分钟,但是对于一个小白或者是非专业认识,可能需要更长的时间。 这里提供一个命令行交互式的构建工具,希望能解决这种简单重复的工作。 jmvn就是为了解决这问题诞生的, 一个快速构建Maven多模块应用...
命名规则
命名规则
!!info 命名规则 单测类: 类名 + 整体大驼峰 单测方法: + 方法名 整体小驼峰 !!! 保证目录结构是一致的 在这里有个误区,发现很多同学都是随意去创建测试类,其实这不是一个好的习惯,在Maven项目中, 要尽量保证测试类与被测类的目录结构是一致的。如下图一样。这样的好处是,我们可以快速在 这两个类中进行快捷键跳转,也方便我们去新增测试方法。跳转快捷键和创建快捷键保持一致,见下文....
启动缓慢
启动缓慢
!!info 启动缓慢分析 当应用中拥有大对象,可能会导致单侧启动比较慢,针对这种问题有不同的解决方案 !!! SpringBoot 2.2 解决方案 SpringApplication 会自动添加一个叫 的处理器 SpringBoot 2.2 以前 给应用上下文提前装载一个类似的处理器,然后通过 在容器刷新前循环将 声明懒加载 !!!tip 测试引导类配置变更 @ContextConfig...
反射框架Reflections
反射框架Reflections
Github 一、简介 Reflections通过扫描classpath,索引元数据,并且允许在运行时查询这些元数据。 使用Reflections可以很轻松的获取以下元数据信息: [x] 获取某个类型的全部子类 - [x] 只要类型、构造器、方法,字段上带有特定注解,便能获取带有这个注解的全部信息(类型、构造器、方法,字段) - [x] 获取所有能匹配某个正则表达式的资源 - [x] 获取所有带...
单测维护
单测维护
!!info 单测维护 !!! 一、考虑不要跳过单测 目前我们都是跳过单测的,测试都是每次改造完成后,手工去进行验证。 验证没有问题就提测了。这样的单测是没有维护性的。 当我们建立起单测体系后,真正重视单测维护后,就可以考虑不要跳过单元测试 这样,每次编译时候都可以执行一遍单测用例,观察失败的单测试服是这次改造的bug导致。 二、后期维护单测 开发时间紧张,没有进行单测就提测了,测试也通过了。对于...
单元测试专题
单元测试专题
沉淀、分享、成长、让自己和他人都有所收货。 一、前言 本系列文章主要的目的是提高大家对代码的单测意识, 其中文章主要会分享单测过程中,常见的测试场景及这些场景的解决方案和处理思路。 为了能使大家更好的了解单元测试,作为程序员首先从源码入手,分享JUnit的运行原理。在先了解了JUnit的原理后,再来回顾我们的问题场景, 就自然而然的从根源深处解决大家的测单痛点以及大家对单测框架不熟悉的情况。 二、...
勤劳致富
勤劳致富
一个扎心的话题 勤劳为什么不能致富? 如果拜佛有用,你连门都进不去; - 如果有长生不老的药,马云都没资格买; - 如果种地可以赚钱,农民将无地可种; - 如果大便能被资本控制,你将失去屁股的使用权和控制权。 - 如果勤劳能致富,你挑个大粪也在送礼走关系 一个段子 主人对拉磨的驴说:“你真的很了不起,天天吃得少,吃的粗粮,干得多,真的很佩服你。”然后驴憨厚地笑了,拉磨的步伐更快了。 晚上,主人一...
动态绑定配置
动态绑定配置
一、如何实现动态配置 在Spring体系下,如果实现了ConfigurationProperties则会自动刷新。而如果只使用的方法,要加上 才能实现。 本篇文章我们来分别研究下他们的原理。然后在来看看其他的方案是如何做的吧。 二、实现原理 2.1 @ConfigurationProperties 所有被修饰的类都会被ConfigurationPropertiesBeans处理 1. 实现处理器...
前台技术-2025-09-12 18:06:07
前台技术-2025-09-12 18:06:07
创建项目
创建项目
!! tip jmvn init 快到你无法想象,丝滑的感觉 !!! 使用命令快速创建项目 你可以方便的使用工具创建基于SpringBoot的Maven多模块应用,如下示例。 项目创建后会自动生成一个配置文件。默认项目的结构如下。 手动添加配置文件 当你项目已经创建完成,但是想要使用的情况下, 你是可以通过配置的方式来支持的。 首先在项目的根目录创建文件
分布式锁
分布式锁
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 在单机环境下多线程操作共享数据时候回用到锁的概念,因为是单机可以直接使用jdk提供的锁机制就可以满足。 但是在微服务场景下,因为是多服务共享数据,此时jdk提供的锁就不能再使用了。于是乎就有了分布式锁。 本文介绍常见的几种可以使用的生产的分布式锁 !!! 本文面向有开发经验的同学,所以场景就不赘述,直接上干货 一、分布式锁具有的品格 基本的...
分布式服务
分布式服务
本系列文章不讲具体的微服务框架, 只。会从 和 等框架中举例。 从而来了解微服务架构的设计思路。 什么是微服务? 微服务是一种现代的软件方法,应用程序代码以小的、可管理的部分交付,独立于其他部分。 为什么要构建微服务? 它们的小规模和相对隔离可以带来许多额外的好处,例如更容易维护、提高生产力、更大的容错性、更好的业务一致性等等。
六大原则 & 23种设计模式
六大原则 & 23种设计模式
一、设计模式 设计模式一般分为三类:创建型模式、结构型模式、行为型模式。 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。 - 结构型模式:把类或对象结合在一起形成一个更大的结构。 - 行为型模式:类和对象如何交互,及划分责任和算法 1.1 创建型模式 创建型模式简单来说就是用来创建对象的。一共有五种:单例模式、建造者模式、工厂方法模式、抽象工厂模式、原型模式。 1. 单例模式...
公网探索计划:没有服务器,我用 NAS 也能遨游互联网!
公网探索计划:没有服务器,我用 NAS 也能遨游互联网!
!! info 🛰️ 穷人的公网探索计划:没有服务器,我用 NAS 也能遨游互联网! 在预算有限的情况下,如何不购买云服务器,也能将本地 NAS 打造成“对外服务”的强大平台?本文记录了我用 本地设备 + 内网穿透 + 开源面板 实现公网可访问服务的完整方案。 !!! ✅ 方案一览 [x] 零刻小电脑 小巧静音、性能足够、功耗低,是我用来充当“伪服务器”的利器。 - [x] 部署飞牛云 NAS...
公众号关注解锁文章方案
公众号关注解锁文章方案
配合 tailwindcss 使用
倒计锁 CountDownLatch
倒计锁 CountDownLatch
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 上文我们知道了 信号量的用法,那么这一篇基本不用学了。因为原理基本上是一样的。 但是用法不太一样。 是获取到资源就执行,获取不到资源就等待。 跟 正好相反。 CountDownLatch#await() 可以理解为获取不到资源,就等待。这么说不太好理解,直接看源码吧。 常用用法 注意: ==Co...
信号量 Semaphore
信号量 Semaphore
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 🚀 知识快读 翻译过来就是信号量, 其根本原理就是基于 共享锁的一种实现。举一个例子。 假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门...
使用断言
使用断言
!!danger 断言 单测方法尽可能去使用断言,明确方法的执行结果 !!! 一、单测的目的 我们单测的目的就是为了确定,被测试的方法或者是接口是否符合业务要求。 其中一些方法是只要跑成功就算成功了,但是其实大部分方法还是要看其中的返回值是否符合预期。 在平时的开发中发现许多同学只是喜欢把结果打印出来,人工去验证数据。这其实就跟JUnit的口号相违背了。 JUnit的口号: keep the ba...
代码展示
代码展示
从零完成Agent
从零完成Agent
记忆与检索 记住历史交互(短期/长期) - 按需召回相关信息(避免信息丢失或重复提问) - 支持个性化与上下文连贯性 召回 → 转换 → 注入 → 提示工程 上下文工程 智能体通信协议
事务回滚原理
事务回滚原理
在前文单测类注入中我们知道.JUnit提供了一些监听器,允许 当单测方法执行时候去对单测上下文进行调整。所以呢事务回滚也是基于 这里的特性完成的。基于SpringBoot 2.1.x版本分析 源码分析 Spring中为了适配不通的数据库,提供了事务平台的概念。 只要实现了该接口 就允许对事务进行控制。具体事务的控制是通过工具类来处理的。 可以获取当前线程 执行的事务上下文。JUnit通过该工具...
中文文档写作规范
中文文档写作规范
!! tip 中文技术文档的写作规范。 本篇文章参考与阮一峰大佬的网络日志, 总结比较细致。非常具有借鉴意义, 欢迎大家进行学习。 文章参考地址: 阮一峰的网络日志 !!! 目录 1. 标题 1. 文本 1. 段落 1. 数值 1. 标点符号 1. 文档体系 1. 参考链接 一、标题 层级 标题分为四级。 - 一级标题:文章的标题 - 二级标题:文章主要部分的大标题 - 三级标题:二级标题下面一...
一致性hash问题
一致性hash问题
一、介绍 一致性哈希主要解决的问题,是互联网中的热点问题,及当cache环境改变,能动态感知,避免继续向已经坏掉的空间,插入新值. 二、不一致会有什么问题? 2.1 缓存的例子 有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 求余算法: hash(Obje...
②如何知道是否依赖Spring容器
②如何知道是否依赖Spring容器
默认使用 来进行运行。即不依赖容器。 假如说如果需要容器怎么办呢 ? 基于SpringBoot 2.1.x版本分析 SpringRunner告诉JUnit要使用Spring容器 - SpringBootTest告诉JUnit容器的引导类是这个 JUnit是如何实现的呢? 前面启动类中我们使用的注解是 和 那么哪里来解析这个的呢? 由此 知道要使用 进行引导。 由上图我们知道 实例化的...
①谁在调用JUnit
①谁在调用JUnit
当点击了执行单例,发生了什么事情? 基于SpringBoot 2.1.x版本分析 可以看到idea会将单侧的类和方法传递给JUnit。最终由 可以看到最终是由 来进行了承接 。所以到这里我们就找到了入口。后续所有的能力,都要从JUnit中去寻找了。
what monorepo?
what monorepo?
👌我帮你把文章整理成一个更清晰、专业、又容易读的版本(逻辑流畅,重点突出,风格更像技术分享文档): -- Monorepo 是什么? Monorepo(单一代码库) 是一种将多个项目集中存放在同一个仓库中的管理方式。 许多知名开源项目(如 React、Vue、Vite 等)都在使用 Monorepo 来管理它们的代码。 👉 通俗理解: 在一个目录下创建多个项目,每个项目相互独立,又能统一管理。...
web-types
web-types
WebStorm 自定义标签提示 JetBrains/webtypes 若要在项目中启用 Web-Types 文件,请通过本地项目package.json文件的 web-types 属性链接它。您可以通过提供路径数组来指定多个 Web 类型文件。
vite打包环境
vite打包环境
vite打包环境变量配置 环境变量 Vite 在一个特殊的 import.meta.env 对象上暴露环境变量。这里有一些在所有情况下都可以使用的内建变量: import.meta.env.MODE: {string} 应用运行的模式。 - import.meta.env.BASEURL: {string} 部署应用时的基本 URL。他由base 配置项决定。 - import.meta.env...
v-ui-pro.d.ts
v-ui-pro.d.ts
uni-app-api
uni-app-api
uniapp 全局事件 uni.onAppShow 应用切前台事件的回调函数 uni.onAppHide 应用切后台事件的回调函数。该事件与 App.onHide 的回调参数一致。 路由 uni.navigateTo 定义:保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。 参数 | 类型 | 必填 | 默认值 | 说明 | 平台差异说明 | | ---...
typescript配置说明
typescript配置说明
typescript配置说明 无法找到dirname dirname 是commonjs规范的内置变量。如果使用了esm 是不会自动注入这个变量的。 解决办法。 "module": "CommonJS" 或者 或者 解决了这个问题 ts编译不会报错,但是页面加载还是会报错。 配置参数
tsconfig.json
tsconfig.json
TypeScript Config !!tip tsconfig.json 是 TypeScript 项目的配置文件,用于指定编译器选项和项目结构。下面是对 tsconfig.json 文件中每个常见属性的详细解释: 基本属性主要有以下几个方面 !!! 原文作者:Moment compilerOptions: 定义 TypeScript 编译器的配置选项。 - include: 指定要包含在编译...
synchronized锁升级
synchronized锁升级
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 一、重量级锁 什么叫重量级锁? 就是申请资源必须经过kernel(内核也叫操作系统),调用。 二、轻量级锁 轻量级锁,是不经过操作系统。轻量级锁是相对于重量级锁来叫的,也可以叫乐观锁。 在Java中乐观锁就是cas操作(compare and swap)根据英文翻译就是比较和交换。 底层都是调用的Uns...
requestAnimationFrame
requestAnimationFrame
!!tip 核心本质: requestAnimationFrame 是 setInterval 的升级版。 !!! 从名字来看,这就是一个关于UI 相关的 API, 目的是为了让用户感受不到页面的卡顿。我们知道动画和视频都是有帧来组成的。 那么帧率越高会越丝滑,动画就越连贯。 requestAnimationFrame = setInterval 其实就是说他们都在做定时任务的触发,但是不同的是前...
package.json
package.json
package.json !!tip 在每个前端项目中,都有 package.json 文件,它是项目的配置文件,常见的配置有配置项目启动、打包命令,声明依赖包等。 package.json 文件是一个 JSON 对象,该对象的每一个成员就是当前项目的一项设置。 其实就是一个配置文件,告诉 NPM 项目的相关信息。 !!! 原文地址 package.json 文件主要包括: 列出项目所依赖的包...
npm和yarn的原罪
npm和yarn的原罪
!! abstract 那些曾让我们又爱又恨的 nodemodules——前端的包管理工具,从来都不只是技术的选择,更是工程文明的缩影。统一工具,是一支队伍走得更远的第一步。 !!! 原罪 在开始歌颂 pnpm 之前,我们得回头看看,npm 和 yarn(特指 yarn v1)究竟栽在哪些坑里。 它们的问题,其实都源自同一个选择——扁平化的 nodemodules。 这听上去像是件好事。扁平,意味...
monitor/watch/trace相关
monitor/watch/trace相关
一、启动Arthas 启动命令 二、选择进程 直接选择我们要监控的进程,输入3进入 提示已经连接上进程。 三、基础信息查询命令 3.1 dashboard 看板命令 输入 会定时将应用信息输出到控制台上。 3.2 jad 反向编译 3.3 watch 监控指令 这个命令是比较常用的命令,可以用来分析系统性能。 监控这个类 参数名|含义| |:-:|:--:| |returnObj|返回值| ...
mcp-chrome-bridge
mcp-chrome-bridge
安装 注意如果使用pnpm全局安装,要先配置全局安装的地址 使用 下载 Chrome 扩展 从 Releases 页面获取最新版本的已打包扩展: 谷歌浏览器插件管理中加载插件 这样就能使用了。
hooks
hooks
useComponentRef useFormModel
gsap plugin
gsap plugin
GSAP 免费版本支持这几个插件(现在都已经免费了): 1. ScrollTrigger 2. Draggable 3. Flip 4. MotionPath 5. Observer 6. Pixi 7. ScrollTo 滑动到指定元素的区域 8. Text 插件|免费|Plus|Premium|Business| |:--:|:--:|:--:|:--:|:--:| | 新功能和错误修...
gsap
gsap
GSAP ease ease bounce.out 物理反转 staggers Staggers(交错动画)是一个非常有用的功能,它允许我们设置动画之间的间隔效果,以创建出更加动态和吸引人的动画序列。Staggers支持多种配置方式,主要包括以下几种: 数字配置 对象配置 1. each:指定每个动画之间的固定时间间隔(以秒为单位)。 2. amount:与each属性配合使用,表示整个动画序列...
explain调优
explain调优
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! > 这篇文章主要讲 explain 如何使用,还有 explain 各种参数概念,之后会讲优化 一、Explain 用法 explain模拟Mysql优化器是如何执行SQL查询语句的,从而知道Mysql是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 语法: 如: 会生成如下 SQL ...
dubbo适配Spring原理
dubbo适配Spring原理
> 前面两篇博文,主要讲dubbo服务端和客户端的知识点,在对服务端和客户端有了一个新的认识之后,我们本篇 来看下spring是如何整合dubbo服务的 一、整合dubbo的两种方式 spring中使用dubbo一共有两种方式。这两种方式只是在解析dubbo类时候不同。一种通过xml方式,一种注解标签方式。 下面我们说下他们的原理。 1. xml方式 2. 注解方式 二、两种方式原理 1. Nam...
dubbo 服务端注册流程
dubbo 服务端注册流程
一、启动一个服务端Provider 1. 定义一个接口和实现 2. 本地服务注册到zk 3. 分析原理 这里只是分析下大概原理,给各位童靴先带来带你感受,实际步骤后面分析源码时候再细说 在进行分析之前我们思考一下,当我们不使用RPC框架和SpringCloud的时候,如果我们要调用其他第三方的服务时候,我们会怎么处理呢? 通过下面这中方式每次调用时候构建一个HTTP的请求。 使用后我们就可以像调用...
dubbo 客户端调用流程
dubbo 客户端调用流程
> 前面我们学习了服务端如何启动暴露一个外部服务,本文主要学习客户端如何通过代理方式访问客户端请求 一、启动一个客户端Consumer 1. 定义一个接口 注意这里其实是引用的前文中的接口。生产中是服务提供方打一个jar包给客户端用。 2. 生成本地服务 3. 原理分析 首先客户端只有接口的,那么可以根据这个接口生成一个代理。而代理对象中逻辑就是,从zk中找到服务端地址。 然后通过netty客户端...
createDocumentFragment
createDocumentFragment
!!tip 核心本质: createDocumentFragment 将 dom 操作批量进行操作 !!! 如下代码片段,循环往 document 里面添加元素 先创建一个 Fragment 片段,js 在内存中先把对象创建好,然后一次往 document 中进行插入。
class/classloader相关
class/classloader相关
一、启动Arthas 启动命令 二、选择进程 直接选择我们要监控的进程,输入3进入 提示已经连接上进程。 三、基础信息查询命令 3.1 dashboard 看板命令 输入 会定时将应用信息输出到控制台上。 3.2 jad 反向编译 3.3 watch 监控指令 这个命令是比较常用的命令,可以用来分析系统性能。 监控这个类 参数名|含义| |:-:|:--:| |returnObj|返回值| ...
ces
ces
fdsafds
apache-commons 池化技术
apache-commons 池化技术
!!info 羽化而登仙,池化而提效 本篇文章我们的研究专题是池化技术, 其实所谓池化可以简单理解为缓存。将那些创建比较耗时的对象,缓存起来,放到一个池子里。 比如数据库连接池,线程池,字符串常量池。这个技术常用于框架类设计。本文教你基于Apachecommons-pool2快速实现一个常量池的设计。 !!! 一、Pool2 四大件 1.1 新建资源 1.2 回收资源 二、数据库连接池实战 我们利...
animejs
animejs
> animejs !!tip 平替 gsap,语法更简单。重点是免费。 animejs 对比 gsap 它的文档是非常清晰的,这里笔记就是为了学习。使用中可以直接看官方文档。 animejs官网 文档 !!! 常见的一些变形 支持许多常见的 CSS 属性动画,允许你通过 JavaScript 更加灵活地控制动画效果。以下是 支持的一些常见 CSS 动画属性: 支持的 CSS 属性 属性名 ...
Zookeeper实践
Zookeeper实践
一、Zookeeper介绍 1.1 配置管理 在我们的应用中除了代码外,还有一些就是各种配置。比如数据库连接等。一般我们都是使用配置文件的方式,在代码中引入这些配置文件。但是当我们只有一种配置,只有一台服务器,并且不经常修改的时候,使用配置文件是一个很好的做法,但是如果我们配置非常多,有很多服务器都需要这个配置,而且还可能是动态的话使用配置文件就不是个好主意了。这个时候往往需要寻找一种集中管理配置...
Web接口资源是如何保存起来的?
Web接口资源是如何保存起来的?
前言 在我们使用 开发中,我们定义一接口是下面这样的 这时候我们思考一个问题,我们在浏览器上只输入了一个URL地址,怎么就能访问到这个接口的呢?于是乎就引出了 今天我们要讨论的话题。Spring中的Web接口资源是如何保存起来的? 一、Spring中的Web接口资源是如何保存起来的? 在我们学习之前我们可以先自己来进行思考一下。处理逻辑是什么样的? Spring容器解析 注解。当然这个注解又...
WebStorm Plugins
WebStorm Plugins
WebStorm Plugins Plugins 1. .env files support 2. Atom Material Icons 3. CodeGlance Pro 4. Git Commit Message Helper 5. GitToolBox 6. LogIt 7. Rainbow Brackets .env .env 文件语法高亮 Atom Material Icons 文件图...
Vue常用语法
Vue常用语法
泛型Props 这种方式更加简单
VueUse键盘绑定
VueUse键盘绑定
键盘事件名 onKeyDown - 别名 onKeyStroke(key, handler, {eventName: 'keydown'}) - onKeyPressed - 别名onKeyStroke(key, handler, {eventName: 'keypress'}) - onKeyUp - 别名 onKeyStroke(key, handler, {eventName: 'keyu...
VueHooks工具
VueHooks工具
Fuse搜索工具
Vit 依赖收集插件
Vit 依赖收集插件
Vite环境搭建
Vite环境搭建
unpluginauto-import vite.config.ts 中导入插件 tailwind tailwind vite.config.ts 中导入插件 Prettier vue-bits 初始化后会在本地生成配置文件 安装使用,空格选中,回车下载 inspira-ui shadcn-vue 安装 tailwindcss 依赖和插件 配置别名 tsconfig.app.json { "e...
Vite环境变量和模式
Vite环境变量和模式
环境文件规则 Vite 使用 dotenv 从你的 环境目录 中的下列文件加载额外的环境变量: !! info .env 类文件会在 Vite 启动一开始时被加载,而改动会在重启服务器后生效。 !!!
Vite 插件
Vite 插件
vite plugin !!tip Vite 在浏览器支持 ES 模块之前,JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。 这也正是我们对 “打包” 这个概念熟悉的原因:使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运行的文件。 vite 下一代的前端工具链 !!! viteplugin-inspect vite-plugin-inspect 可以让开发者在浏览...
Vite 从零搭建项目
Vite 从零搭建项目
注意下面的 pm 命令是 pnpm 的别名。 pm init ; pm add D vite; pm add -D vue; pm add -D @vitejs/plugin-vue; vite默认支持 ts 请注意,Vite 仅执行 .ts 文件的转译工作,并不执行 任何类型检查。并假定类型检查已经被你的 IDE 或构建过程处理了。 所以建议安装下面依赖,避免编辑器告警。 - pm add -D...
Tailwindcss 开源免费模版整理
Tailwindcss 开源免费模版整理
1. 搜索合集 2. Floatui: 适合做主页 3. Preline: 4. hyperui: 5. Merakiui: 6. Mosaic Lite组件 7. Flowbit admin dahsboard 也很不错:
Spring循环依赖
Spring循环依赖
作者: 八阿哥的剑 博客: !! tip 一日一句毒鸡汤 问世间钱为何物,只叫人生死相许。!😄 !!! 写文章不容易,如果感觉还行,请点个关注,点关注不迷路。 一、什么是循环依赖 这种简单的问题,直接伪代码吧。 我中有你,你中有我。 二、解决循环依赖思路 思路其实非常简单还是用伪代码来说明 思路就是这么简单,先分别把A和B给实例化。 这时候实例化的A和B仅仅是完成了实例化,内部的属性其实都没有...
Spring声明式事务的实现方案?
Spring声明式事务的实现方案?
!! tip 本篇文章是对Mybatis知识点的一个扩展,主要一起来研究下Spring是如何来管理事务的。顺便再多聊一点其他的知识点,在学习的过程中主要带着以下问题来进行有目的的学习 然后最终来回答下面这些问题。 !!! 1. Mybatis是如何整合进Spring中的 Spring如何知道哪些接口是Mapper接口的? - Mapper接口是如何变成Spring Bean的? 2....
Spring事务管理器Hooks
Spring事务管理器Hooks
作者: 八阿哥的剑 博客: !! tip 一日一句毒鸡汤 问世间钱为何物,只叫人生死相许。!😄 !!! 写文章不容易,如果感觉还行,请点个关注,点关注不迷路。 TransactionSynchronizationManager 是 Spring 框架中的一个工具类,它主要用于管理事务同步的相关内容。在 Spring 中,事务管理是通过声明式事务或者编程式事务实现的,而 则是 Spring ...
Spring EL表达式使用指南
Spring EL表达式使用指南
> 好久没有发现这么好的文章了,今天逛头条发现了一篇好文章,在这里转载一下 > 大家可以学习一下,文章原文地址见参考。希望支持原作者,在头条点一个关注。 一、概述 Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”。是一个支持查询,并在运行时操纵一个对象图功能、是一门强大的表达式语言。SpEL是单独模块,只依赖于core模块,可以被独立使用、运...
SpringBoot脚手架【web版本】
SpringBoot脚手架【web版本】
公众号: 西魏陶渊明 CSDN: >天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! Gitbub 前言 背景 现状1: 乱 同部门项目结构定义各自为战, 没有一个标准化的项目结构 现状2: 繁 项目定义没有技术难度,且都是这种重复工作劳动, 感觉繁不胜繁 “删繁就简三秋树,领异标新二月花。” 删繁就简,开辟新路 价值 提高生产效率 & 统一标准规范 & 基于标准规范提供通用...
SpringBoot 整合 Neo4J
SpringBoot 整合 Neo4J
Docker安装 SpringBoot 控制台 查询语句: 演过 查询所有:
SpringBoot Testing
SpringBoot Testing
前面我们对Mockito的用法有了一个了解,这里告诉大家一个好消息,SpringBoot已经帮我们继承了 这些框架,而且提供了更加简单好用的API。 一、Mockito加载方式 前面我们说了两种加载方式 和 这些在SpringBoot中都不需要了。 所以这一段就是废话, 不用在看了。但是相信你已经看完了。 二、Mockito必知概念 这些概念,参考Mockito章节,概念统统保留。 2.1 完...
Spring Boot Endpoint监控端点扩展
Spring Boot Endpoint监控端点扩展
!! tip 什么是端点? 端点就是SpringBoot通过web或者jmx的方式向外部暴露应用的信息,或者上下文的信息。SpringCloudAdmin就是根据此技术来进行实现的。他们用到的技术就是@Endpoint,而不是通过自己@GetMapping之类进行实现的。下面小编就带大家一起来学习端点的使用。学会本文后在利用前面我们讲过的autoconfigure的自动化配置后,你就可以开发更高级...
SpringAI中技术原理集合
SpringAI中技术原理集合
指定返回实体类型 示例 转换后提示词 org.springframework.ai.converter.BeanOutputConverter#getFormat json markdown from the output. Here is the JSON Schema instance your output must adhere to: [{"actor":"罗贯中","bookNa...
Spring-retry重试组件
Spring-retry重试组件
一、简介 !!info Springretry 前面我们了解到了,Guava的重试组件,我们可以基于Guava的能力,来封装我们需要的能力来满足我们的业务。今天来分享Spring-Retry重试组件。当然Spring只是帮我们封装好了,如果你不想自定义 重试组件,那么我们可以直接使用Spring的能力来实现。 API 也是非常的简单,几个注解就可以搞定。 !!! 二、依赖 三、使用 3.1 @En...
SSR
SSR
SSR 服务端渲染的意思 在使用 VitePress 进行服务端打包的时候, 因为是 Node的打包环境,所以并没有 document 对象,经常会打包失败。比如下面。 解决办法 =defineClientComponent= VitePress VitePress 为导入 Vue 组件提供了一个方便的辅助函数,该组件可以在导入时访问浏览器 API。目标组件将仅在 wrapper 组件的 mou...
SSH 登录配置
SSH 登录配置
生成密钥对 网站配置SSH公钥 这里我配置 ,所以我的地址要改成。这样就能使用 ssh giteaserver 登录了。 SSH配置 这里一定要搞清楚,服务端ssh的端口是什么,默认是22。如果不是22一定要在配置文件中声明。 然后并指定要使用的密钥是那个。
SQL锁机制
SQL锁机制
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 一、场景模拟 有一个X姨夫,两个用户并发操作问题 A先看到衣服: X加锁 > 试衣服 -> 下单 -> 付款 -> 打包 -> X解锁 B也相对衣服: 发现X已经被A加锁了,等待X解锁。 二、锁知识 锁类型 a. 读锁(共享锁): b. 写锁(互斥锁): 如果当前写操作没有完毕,则无法进行其他的写操作。...
SQL索引性能优化
SQL索引性能优化
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 建表 -- 优化一、全部用到索引 1. 介绍 建立的复合索引包含了几个字段,查询的时候最好能全部用到,而且严格按照索引顺序,这样查询效率是最高的。(最理想情况,具体情况具体分析) 2. SQL案例 优化二、最左前缀法则 1. 介绍 如果建立的是复合索引,索引的顺序要按照建立时的顺序,即从左到右,如:a-...
SPI服务发现机制
SPI服务发现机制
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 一、什么是SPI SPI ,全称为 Service Provider Interface,是一种服务发现机制。JDK中的SPI是通过在ClassPath路径下的METAINF/services文件夹查找扩展文件,自动加载文件里所定义的类。 在小编的理解来,觉得它更是一种思想。即找到服务的接口, 美其名曰...
Redis缓存穿透雪崩问题
Redis缓存穿透雪崩问题
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 一、缓存穿透 数据层没有,导致查询一直都是穿透了缓存去查db。 缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压...
React语法学习
React语法学习
认识 React 的设计理念 以函数为中心,声明式 UI,组件树结构,单向数据流 与 Vue 对比:Vue 更“魔法”(响应式追踪),React 更“显式” 场景对比 依赖收集(Vue 的响应式 vs React 的 state) vue react 父组件触发子组件 vue react 子组件触发父组件事件(事件向上传递) vue react watch(监听变化) vue react 样式定义...
Reactive 反应式编程
Reactive 反应式编程
!! tip 反应式编程 reactive 是一种新的编程思想, 如同名字一样, 反应式编程。而Reactor 是一个工具包,类似于 Spring一样。这点我们可以直接在Spring的官网上可以看到。本篇基于小编自己的学习进行总结。 !!! 一、提出问题 目前来说反应式编程在Java行业其实不是很流行, 其原因1在于传统的编程模型已经根深蒂固。虽然阻塞但是其实对于业务开发 并不是一个很大的痛点。其...
RPC协议使用示例
RPC协议使用示例
Welcome to the mojito wiki RPC协议使用示例 使用示例: 一、构件一个RPC协议的服务端 可以轻松构建服务端,只要编写 服务端业务处理器即可。 startAsync 非阻塞构建 - start 阻塞构建 二、构建HTTP客户端 同样使用 快速构建客户端
Python 中模块导入
Python 中模块导入
1. 在 python 中一个文件就是一个模块 2. 同目录下文件可以直接引用到 3. 非同目录下导入要用包,在目录下写 文件,这样在导入包的之后会先执行 注意使用.表示是当前目录下的文件 4. 经过上面操作就可以在外面目录正常使用了。
Protocol协议篇设计思路
Protocol协议篇设计思路
Protocol协议篇设计思路 一、概述 协议即约定,最简单理解就是服务端按照什么样的规则来解析TCP通道传输来的二进制数据。 框架中协议提供了HTTP/HTTPS/MOJITO三种。其中HTTP/HTTPS准确来说其实就是一种,标准的HTTP协议。如果采用HTTP协议的话,不仅可以使用框架生成的Client同时也可以使用 市面上任何的HttpClient框架。 eg: OkHttp - Htt...
Pandas
Pandas
Pandas
Nuxt本地数据渲染
Nuxt本地数据渲染
集成 集成Arco 路径下回自动作为插件 引入tailwind 引入tailwind 统一ts类型 shared/types/index.d.ts Server api接口统一包装 - server/utils/handler.ts 统一请求日志 - server/middleware/log.ts 数据库相关操作 pg数据库 安装数据库 在server/utils目录下新建 db工具 在目录下...
NextJS 语法
NextJS 语法
我帮你把内容排版和格式优化一下,让你的博客更清晰、易读,同时保留代码示例和说明: -- Next.js 中目录就是路由 在 Next.js 13+ 的 App Router 中,目录结构直接对应路由路径,因此命名非常重要。 :布局组件,用于包裹页面内容,可以在目录中继承。 :页面组件,对应具体路由。 目录结构示例 --- 路由对应关系 URL 路径 | 对应文件 ...
NetSuite Script脚本类型
NetSuite Script脚本类型
!!tip NetSuite SuiteScript 中常见的脚本类型,它们覆盖了前端用户交互、后台批量处理、与外部系统的集成、自定义工作流等多种场景。不同的脚本类型适用于不同的业务需求,开发时可以根据具体场景选择合适的脚本类型。 !!! NetSuite Script脚本类型 NetSuite SuiteScript 提供了多种脚本类型,用于不同的业务需求和场景。每种脚本类型有不同的触发时机和使...
Mysql优化示例
Mysql优化示例
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 创建表 -- 建议一、按照复合索引顺序查询 需知 1. 如果(a,b,c,d)复合索引和查询使用的顺序全部一致,则复合索引全部使用,如果不部分一致或者跨列使用则就是部分使用. 2. where和order by拼起来也不要跨列,参考反例2和3 1. 建议 - 建议: 按照where后面按照顺序使用复合索...
MySQL
MySQL
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持...
Monorepo
Monorepo
- - - 12312312 1231298987878 裤脚 12312
Mojito介绍
Mojito介绍
Mojito Framework 名字以周杰伦新专辑《Mojito》命名。 一、为什么要写这个项目?🥳 原因1 其实小编个人,比较热衷于造轮子。在造轮子的过程中,设计到的通信一直都是一个问题,在SpringBoot的环境下,不得不引入模块,进行端点构建。 虽然SpringBoot升级到2版本之后WebEndpoint会更加方便,但是感觉还是比较复杂,以使我在关于业务逻辑的同时,还要去适配 Web...
Models
Models
什么是大模型? > 大模型(LLM)狭义上指基于深度学习算法进行训练的自然语言处理(NLP)模型,主要应用于自然语言理解和生成等领域,广义上还包括机器视觉(CV)大模型、多模态大模型和科学计算大模型等。
Mockito API
Mockito API
!!danger 注意 这里只是介绍原生的Mockito的API,针对SpringBoot应用有更简单的调用方式 !!! 一、Mockito加载方式 Mockito可以配合JUnit使用,也可以单独使用。有两种方式来引入Mockito 1.1 方式:1 不依赖Spring容器 如果你的单测不依赖容器,那么使用这种方式是比较方便和简介的。但是如果 依赖容器,我们是到JUnit的原理是只要发现有一个R...
MockData API
MockData API
是一款国人开发用来生成模拟数据的工具 基础类型 描述 | 类型 | | ----------- | ------------------------------------------------------------ | | 基础类型 | |...
Mac 效率工具必备神器Alfred插件开发
Mac 效率工具必备神器Alfred插件开发
!! tip 如果你还不了解 Alfred 本文默认你已经知道 Alfred的情况下,进行插件的开发。我们可以编写 自动化工作流,在工作中帮助我们提高工作效率。 !!!
MVCC机制
MVCC机制
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 什么是MVCC? MultiVersion Concurrency Control 多版本并发控制,MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。 mvcc机制主要是用来解决并发情况下访问,维护数据的隔离性原则。 举例子 有两个字段 字段|值|备注| |:--|:--|...
Lambda函数式编程
Lambda函数式编程
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! >Java8所有的新特性基本基于函数式编程的思想,函数式编程给Java带来了注入了新鲜的活力。 >函数式编程其实并不是很难,小编在学习函数式编程时候刚开始一头雾水,最后仔细观察就发现了其中的小窍门,读了本篇文章如果还没有掌握,就算我输了 函数式编程 一、Lambda表达式 注意: 以下方法都可以使用表达...
Json-Server库
Json-Server库
本地启用 文档 可以用json也可以用json5。 然后就在本地启动了一个数据库api 使用 - http://localhost:3000/posts?title=another - http://localhost:3000/posts/:id
Join大法
Join大法
Java管理扩展
Java管理扩展
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。 前面是对JMX的介绍,那么JMX在我们日常的开发过程中...
Java泛型体系知识学习
Java泛型体系知识学习
一、Java泛型体系 Type 是 Java 语言中所有类型的公共父接口,其从 JDK5 开始引入,引入的目的主要是为了支持泛型。 Java的泛型体系还是比较复杂的, 不过没关系,本篇文章会从实战的角度来,学习泛型。 1.1 ParameterizedType 参数化泛型 ParameterizedType 是, 只要记住凡是带泛型的是明确的类型,只要不是数组GenericArrayType那么一...
Java异常体系
Java异常体系
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 知己知彼方能百战不殆,在小编初学Java时候特别怕程序报异常,经常会因为异常不知所措,相信这个问题应该是所有 初学者都会有的心理感受;如果你也有这种感受,那么只有一种解决方法: 迎难而上,攻克Java异常体系,长痛不如短痛,只要清楚了Java的异常体系,就不会再有这种感受了。下面跟着小编来窥探Java的...
Java并发包队列之BlockingQueue
Java并发包队列之BlockingQueue
一、什么是BlockingQueue BlockingQueue即阻塞队列,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞。被阻塞的情况主要有如下两种: 1. 当队列满了的时候进行入队列操作 2. 当队列空了的时候进行出队列操作 因此,当一个线程试图对一个已经满了的队列进行入队列操作时,它将会被阻塞,除非有另一个线程做了出队列操作;同样,当一个线程试图对一个空队列进行出队列...
Java四大引用
Java四大引用
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 一、概念 1. 强引用 new 对象并指向引用变量的都是强引用,开发中大部分都是强引用。对于强引用,JVM宁愿报错错误,是程序异常终止, 也不会回收强引用来解决内存, 对这类情况,可以通过赋值强引用对象=null,从而被JVM回收。 但是一般我们在方法中定义的强引用,会存在方法栈中,当方法运行完,退出,...
Java代码规范全部奉上
Java代码规范全部奉上
>写代码就像写文章, 好的代码就像好的文章,结构严谨,构思清晰。写代码就像写文章, 一不留神就成流水账,为避免这种情况作为软件开发工程师,重要的是设计而不是实现。 在一个团队中,由于不同经验的开发导致编程风格可能会出现非常混乱的情况,从而导致开发成本上升。难以维护。所以代码规范就显得异常重要了。 本篇文章就是给出编程命名的建议,仅供参考,但是其目的是为了统一规范,提高编程能力,降低开发成本,减少代...
Javassist
Javassist
!!info Javassist Javassist是一个开源的分析、编辑和创建Java字节码的类库,可以直接编辑和生成Java生成的字节码。 相对于bcel, asm等这些工具,开发者不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。javassist简单易用, 快速。 !!! 一、核心工具类 核心类|解释| |:-|:--| |ClassPool|javassist的类池,使用Cla...
Java
Java
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 知己知彼方能百战不殆,在小编初学Java时候特别怕程序报异常,经常会因为异常不知所措,相信这个问题应该是所有 初学者都会有的心理感受;如果你也有这种感受,那么只有一种解决方法: 迎难而上,攻克Java异常体系,长痛不如短痛,只要清楚了Java的异常体系,就不会再有这种感受了。下面跟着小编来窥探Java的...
JVM钩子hooks函数
JVM钩子hooks函数
作者: 西魏陶渊明 博客: !! tip 西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖 !!! 什么是钩子函数,在学习钩子函数之前,小编先提一个问题。 请问在Spring中,如果JVM异常终止,Spring是如何保证会释放掉占用的资源,比如说数据库连接等资源呢? 钩子函数非常简单,简单到小编只用摘抄一段Spring代码即可。走你,现在开始。 问题 容器中 在什么时候执行销毁方法? 我们知道在S...
JVM调优
JVM调优
示例代码地址 一、JVM内存介绍 我们在学习JVM的内存管理的时候,我们的思维要跳出Java的局限。我们要这么理解。我们写的Java代码,是运行在JVM上的。 如果让你来实现JVM那么。你会怎么处理呢? 公共部分(堆heap) - 是公共的,是共享的,所有线程都要认识字节码。 - 是公共的,也是共享的,所有线程要都能认识这些实例对象,能读取到实例的数据。 - 私有部分 (栈sto...
JVM相关命令
JVM相关命令
一、启动Arthas 启动命令 二、选择进程 直接选择我们要监控的进程,输入3进入 提示已经连接上进程。 三、基础信息查询命令 3.1 dashboard 看板命令 输入 会定时将应用信息输出到控制台上。 3.2 jad 反向编译 3.3 watch 监控指令 这个命令是比较常用的命令,可以用来分析系统性能。 监控这个类 参数名|含义| |:-:|:--:| |returnObj|返回值| ...
JVM参数配置说明
JVM参数配置说明
参考地址 一、内存容量调优参数 配置参数 | 说明 | 示例 | | :-------------------------- | :-----------------------...
JVM内存模型
JVM内存模型
我们在学习JVM的内存管理的时候,我们的思维要跳出Java的局限。我们要这么理解。我们写的Java代码,是运行在JVM上的。 如果让你来实现JVM那么。你会怎么处理呢? 1. 什么是公共部分,什么是私有部分? 公共部分(堆heap) - Class字节码是公共的,是共享的,所有线程都要认识字节码。 - new的对象是公共的,也是共享的,所有线程要都能认识这些实例对象,能读取到实例...
JUnit单测类属性注入
JUnit单测类属性注入
通过前面的阅读我们已经能拿到了所有的容器启动参数。那么我们可以思考下。我们自己的 单测类其实并没有交给容器来管理,那么我们的单测类中的属性都是什么时候注入的呢? 答案就在 通过名字我们发现了貌似一个可以进行依赖注入的类。没错就是在这里,在单侧方法执行前。通过
JUnit API
JUnit API
!!tip 只打印的单测是没有意义的,正确使用单测工具, 提高单测质量。 !!! 一、常用注解 1.1 @Before & @After 单测类中每个单测方法执行都会触发这两个方法 1.2 @BeforeClass & @AfterClass 区别与上一个,不管单测类中有几个单测方法,都只会执行一次 要用静态修饰 !!!info 代码实例 针对上面说的两个注解演示一下 beforeClass -...
JMH基准测试
JMH基准测试
参考链接 官方文档 性能调优必备利器之 JMH 一、JMH JMH即Java Microbenchmark Harness,是Java用来做基准测试的一个工具,该工具由OpenJDK提供并维护,测试结果可信度高。 基准测试Benchmark是测量、评估软件性能指标的一种测试,对某个特定目标场景的某项性能指标进行定量的和可对比的测试。 1.1 为什么要用JMH if 快还是 switch 快?Has...
IntersectionObserver
IntersectionObserver
IntersectionObserver IntersectionObserver 是一个非常强大且高效的 API,用于检测元素是否进入或离开视口(viewport)。相比于传统的 scroll 事件监听器,它能更高效地处理视口中的元素变化,不会频繁触发,适合用于懒加载图片、触发滚动动画等场景。 使用 IntersectionObserver 实现卡片从小到大的动画效果 !!
IPhone15ProMockup
IPhone15ProMockup
IPhone15ProMockup MobilePreview
HTTP协议使用示例
HTTP协议使用示例
Mojito Framework 使用示例: 一、构建一个非阻塞HTTP服务端 可以轻松构建HTTP服务端,只要编写 服务端业务处理器即可。 startAsync 非阻塞构建 - start 阻塞构建 二、构建HTTP客户端 1. 使用第三方包构建客户端 前面说了,HTTP是基于标准的HTTP协议,所以市面上的HttpClient都是支持的。如下使用 构建一个GET请求。 2. 使用框架...
Guava-retry重试组件
Guava-retry重试组件
一、简介 !!info Guavaretry Guava 是一组来自 Google 的核心 Java 库,其中包括新的集合类型(例如 multimap 和 multiset)、不可变集合、图形库以及用于并发、I/O、散列、缓存、原语、字符串等的实用程序!它广泛用于 Google 内部的大多数 Java 项目,也被许多其他公司广泛使用。 API 非常的简单,我们可以非常轻松的使用,来封装成我们业务中...
Guava-cache
Guava-cache
本篇主要是本地缓存代码实战,提供业务中常用的本地缓存使用代码片段(直接跳过看标题五) !!info 写在前面 常在业务系统中做开发,不会点高级知识点,有点不好意思了。在业务系统中,提高系统响应速度,提供系统高并发能力,其实方向很简单,三个方向,六个字而已: 缓存降级限流。 当然这是在排除代码质量非常差的情况,如果代码质量很差,都是while循环和高内存占用,那么其实再怎么做都于事无补。除非你有一个...
Guava-Map
Guava-Map
一、简介 Guava 是一组来自 Google 的核心 Java 库,其中包括新的集合类型(例如 multimap 和 multiset)、不可变集合、图形库以及用于并发、I/O、散列、缓存、原语、字符串等的实用程序!它广泛用于 Google 内部的大多数 Java 项目,也被许多其他公司广泛使用。 API 非常的简单,我们可以非常轻松的使用,来封装成我们业务中自己的组件。 二、依赖 三、使用介绍...
Gitea
Gitea
gitea 添加 web 钩子 这里要注意服务器先和 gitea 配置到使用 ssh 登录,否则没有权限调用接口。 webhookserver.py 服务器运行:
Get新技能,Java实现文件监控
Get新技能,Java实现文件监控
作者: 八阿哥的剑 博客: !! tip 一日一句毒鸡汤 问世间钱为何物,只叫人生死相许。!😄 !!! Java原生版本监控 Common IO 工具包监控
GSAP动画示例
GSAP动画示例
gsap示例 实现多屏幕,当某个屏幕中动画元素出现在视窗时候, 屏幕固定,开始动画。 - scrub: true 表示滚动时动画同步 - pin: true 表示动画时候,.ball-wrapper 改成 fixed - markers: true 表示显示标记
FormSearch.vue
FormSearch.vue
Feign Mock注意事项
Feign Mock注意事项
一、Feign接口模拟 以下两种API的用法会导致你Feign类型推断不出来,建议使用最后一种 二、Mapper接口要使用Mock 对于Service层的数据测试,Mapper类使用@MockBean。保证数据都是模拟的。 对于Dal层数据测试,Mapper使用真实的示例信息。
FactoryBean接口实例化
FactoryBean接口实例化
文章头 > Java编程规范中声明,Java接口类是不能直接实例化的,但是我们在平时的开发中经常会遇到只声明接口就可以直接使用的。 eg: 1. Mybatis中只用使用声明要扫描的Mapper接口类就可以直接从Spring中获取使用,进行操作数据库 2. Dubbo中只要用Dubbo提供的注解,同样可以直接从Spring中获取使用进行远程调用。 那么以上这些功能在Spring中是如何实现的呢? ...
Excel文件拆分
Excel文件拆分
Excel文件拆分
Eslint和 Prettier使用
Eslint和 Prettier使用
eslint !! tip ESLint ESLint 是一个用于识别和报告在 ECMAScript/JavaScript 代码中发现的模式的工具,目的是使代码更加一致并避免错误。 ESLint 是完全可插拔的。每个规则都是一个插件,您可以在运行时添加更多规则。您还可以添加社区插件、配置和解析器来扩展 ESLint 的功能。 !!! eslintplugin-vue 官方文档 如果你想要禁用某个规...
Elastic-Job源码解析(三)之分片定时任务执行
Elastic-Job源码解析(三)之分片定时任务执行
> 通过本篇的阅读你将学会了解ElasticJob的定时时机,及如何通过分片方式做一个分布式的定时任务框架。了解常用的三种分片策略,及如何自定义分布式分片策略 Elastic-Job如何通过SpringJobScheduler启动定时 在>中我们已经了解Elasti-Job非常巧妙的用BeanDefinitionParse解析器将任务类型最终通过抽象类的方式解析成了SpringJobSchedul...
Elastic-Job源码解析(一)之与Spring完美整合
Elastic-Job源码解析(一)之与Spring完美整合
> 看过小编写SpringFramework源码解析的同学应该对Spring支持自定义标签还有点印象吧,没有的话我们回顾下,然后看看ElasticJob是如何巧妙的利用自定义标签生成Job任务的吧。请注意这里用了一个巧妙关键字。我们看它如何巧妙的吧。 Elastic Job 自定义标签原理 在Spring中实现自定义标签只用继承NamespaceHandlerSupport类,然后定义自己的Bea...
Druid SQL解析
Druid SQL解析
!!info 本篇主要学习Druid 对Sql的语法解析。学习完之后,我们可以对任意sql进行解析,同时也可以基于AST语法树来生成sql语句。 !!! 一、AST AST是abstract syntax tree的缩写,也就是抽象语法树。和所有的Parser一样,Druid Parser会生成一个抽象语法树。 在Druid中,AST节点类型主要包括SQLObject、SQLExpr、SQLSta...
Docker + Buildx + GHCR 发布踩坑速记(...
Docker + Buildx + GHCR 发布踩坑速记(问题 1 / 2 / 3)
> 最近在二开,nextai-draw-nas 时候发布镜像时候,遇到的问题记录。 Docker + Buildx + GHCR 发布踩坑速记(问题 1 / 2 / 3) 问题 1:镜像不匹配(arm64 / amd64) 现象 根因 使用 构建并推送 实际只生成了 当前宿主机架构的单一镜像 在其他架构机器运行时触发不匹配 关键认知 → 单架构(取决于宿主机) → 多架构(Mani...
Disruptor高性能队列
Disruptor高性能队列
!! info 介绍 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题。与Kafka、RabbitMQ用于服务间的消息队列不同,disruptor一般用于线程间消息的传递。基于Disruptor开发的系统单线程能支撑每秒600万订单。 disruptor适用于多个线程之间的消息队列,,但是disruptor从功能、性能都远好于ArrayBlock...
CommonJs和ESM
CommonJs和ESM
!!tip CommonJs(CommonJS)和ESMJs(通常简称为ESM,即ECMAScript Modules)是JavaScript中两种主要的模块化规范,它们在多个方面存在显著的区别。以下是它们之间主要差异的详细对比: !!! 1. 适用环境 CommonJS:主要适用于Node.js环境,是Node.js打包JavaScript代码的原始方法。 ESM (ECMAScript M...
ClaudeCode逆向原理分析
ClaudeCode逆向原理分析
Claude Code v1.0.33 进行逆向工程的完整研究和分析资料 🚀 突破性技术创新 实时 Steering 机制 分层多 Agent 架构 智能上下文管理 强化安全防护 🏗️ 系统架构全景
CSS动画
CSS动画
常用CSS动画 IntersectionObserver 是一个非常强大且高效的 API,用于检测元素是否进入或离开视口(viewport)。相比于传统的 scroll 事件监听器,它能更高效地处理视口中的元素变化,不会频繁触发,适合用于懒加载图片、触发滚动动画等场景。 文本模糊动画 !! !!!
Arthas(阿尔萨斯) 能为你做什么
Arthas(阿尔萨斯) 能为你做什么
Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: [x] 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? - [x] 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? - [x] 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? - [x] 线上遇...
Arco组件用法记录
Arco组件用法记录
amenu 菜单组件经常需要实现联动,联动需要使用的属性如下。都是数组因为如果不是手风琴模式,是可以打开多个菜单和多个项目的。 - open-keys - selected-keys
Arco弹窗封装
Arco弹窗封装
> 运行指定动画
Arco Tabs + animatecss 动画
Arco Tabs + animatecss 动画
用法 组件
Animejs示例
Animejs示例
示例 Letterize Letterize.js是一个轻量级的JavaScript库,它可以将文本内容分解为单个字母,以便可以对每个字母进行动画处理。这对于创建复杂的文本动画效果非常有用。
Alfred添加工作流
Alfred添加工作流
1. 创建一个新的Workflow 2. 使用编辑器打开文件夹创建项目 3. 安装Alfredworkflow工作 4. 使用bash启动脚本
Alfred-workflow-js
Alfred-workflow-js
1. 基本运行 2. 日志打印 3. 菜单 使用脚本当使用tab键,会进行跳转的操作。 4. 使用本地缓存进行CURD 5. 获取Alfredworkflow中的配置 6. 异常图标 可以是图片地址,也可以是系统icns地址 (ACCOUNT, BURN, CLOCK, COLOR, EJECT, ERROR, FAVORITE, GROUP, HELP, HOME, INFO, NETWORK,...
Agent技术
Agent技术
> 本文是我在研究 AI Agent 应用层技术 时的学习整理,涵盖存储、工具生态、提示词工程、上下文管理等关键模块,并绘制了技术地图,方便快速入门和扩展。 背景 在 AI 应用开发中,Agent 是一个能够自主感知、思考、行动的智能体。它不仅是一个模型调用接口,而是一个具备 任务规划、工具调用、上下文管理 能力的系统。 应用层的技术设计决定了一个 Agent 的可扩展性、可维护性和智能表现。 为...
APT技术
APT技术
一、什么是APT 注解处理器,是 的一个工具,他可以在源码生成class的时候,处理Java语法树。 我们用他可以干什么呢? 1. lombok的原理,在编译期修改字节码,生成 和 方法。 本文我们就使用APT技术, 来自动生成get和set方法 源码地址 感兴趣的可以了解一下,不用害怕,尤其是2.6到2.7目录,不需要看到这个API就害怕。也不用死记硬背。了解就好。 正经人是不会用这个生...
AOP 使用指南
AOP 使用指南
-- 一、常用注解 注解 说明 ---|--- @Before | 前置通知, 在方法执行之前执行 @After | 后置通知, 在方法执行之后执行 @AfterRunning | 返回通知 在方法返回结果之后执行 @AfterThrowing | 异常通知在方法抛出异常之后 @Around | 环绕通知, 围绕着方法执行 --- 二、切面表达式 注解 | 说明 ---|--- within |...
AI应用构建思路
AI应用构建思路
!! abstract 🌈 本地部署 ChatGPT 系统(支持 MCP 工具调用 & 本地知识库 & Token 计费) !!! 前端基于 Vue,后端基于 Java Spring Boot,支持与 OpenAI API 或本地大语言模型(LLM)交互,具备以下特点: 支持 多模态对话(文本、图片、音频、文件)。 - 支持 本地知识库(用户可上传文档并参与问答)。 - 支持 本地 MCP 工...
AI介绍页面设计
AI介绍页面设计
这是一个非常棒的想法!AI 和 Agent(智能体)是当前技术热点,通过一个精心设计的前端页面展示你的研究和案例,不仅能体现你的技术能力,还能展现你对前沿方向的理解。以下是一个建议的模块结构,兼顾内容深度、视觉呈现和技术亮点: 1. 首页 / 概览(Hero Section) 简洁有力的标题,如:“探索 AI 与智能体的边界” 一句副标题说明你的定位,例如:“从理论到实践,构建下一代人机协作系统”...
1panel部署脚本
1panel部署脚本
脚本思路 [x] 进入到不同的项目目录中 - [x] 然后 git pull - [x] java项目,先打包然后构建 docker 镜像 - [x] vue 项目,先打包然后构建 docker 镜像 - [x] docker 关闭运行的容器然后重新构建容器,指定网络和端口映射
13:51:49
13:51:49
CommonJs和ESM
CommonJs和ESM
!! CommonJs(CommonJS)和ESMJs(通常简称为ESM,即ECMAScript Modules)是JavaScript中两种主要的模块化规范,它们在多个方面存在显著的区别。以下是它们之间主要差异的详细对比: !!! 1. 适用环境 CommonJS:主要适用于Node.js环境,是Node.js打包JavaScript代码的原始方法。 ESM (ECMAScript Modu...
Animejs用法总结
Animejs用法总结
> animejs !!tip 平替 gsap,语法更简单。重点是免费。 animejs 对比 gsap 它的文档是非常清晰的,这里笔记就是为了学习。使用中可以直接看官方文档。 animejs官网 文档 !!! 常见的一些变形 支持许多常见的 CSS 属性动画,允许你通过 JavaScript 更加灵活地控制动画效果。以下是 支持的一些常见 CSS 动画属性: 支持的 CSS 属性 属性名 ...
React 与 Vue 的工程范式对比
React 与 Vue 的工程范式对比
认识 React 的设计理念 以函数为中心,声明式 UI,组件树结构,单向数据流 与 Vue 对比:Vue 更“魔法”(响应式追踪),React 更“显式” (学习网站)[ 场景对比 依赖收集(Vue 的响应式 vs React 的 state) vue react 父组件触发子组件 vue react 子组件触发父组件事件(事件向上传递) vue react watch(监听变化) vue re...
天下代码一大抄
天下代码一大抄
> 天下文章一大抄,是古代的一句俗语,并无明确出处和作者,这句话的最初灵感来源自清代孙洙编辑的《唐诗三百首》序言。我把他用在了软件开发岗位,发现思路是相同的,写代码和写古诗思路是相同的。 “熟读唐诗三百首,不会做诗也会吟。” 一开始我对这句话是有抵触的。因为它听起来像是在为“照搬”找理由。但后来写的代码越来越多,看的系统越来越复杂,我才慢慢意识到: 真正的问题从来不是“抄不抄”,而是“你抄的是什么...
用 GitHub Issue + Next.js App R...
用 GitHub Issue + Next.js App Router 构建可持续的静态博客 / 专栏系统
> 在内容型项目中,我们经常会遇到几个现实问题: 不想维护数据库 不想自建 CMS 希望内容版本可追溯 希望写作流程尽量贴近开发习惯 同时又想要 SSG 的性能 + SEO 基于这些目标,我最终采用了一套工程化、低维护、可长期运行的方案: > GitHub Issue 作为内容源 > Next.js App Router 在 build 阶段生成静态站点 > GitHub Webhook...
AI Agent 进化阶梯
AI Agent 进化阶梯
AI Agent 进化阶梯 一、Agent 发展模式 进化阶梯 1. 第一层: 认识你的“数字实习生”(理解 AI Agent) 2. 第二层: 学会 “发指令的艺术” (提示词工程与角色设计) 3. 第三层: 获得 “连续记忆” (添加记忆和上下文) 4. 第四层: 解锁 “手脚功能” (工具使用与动作执行) 5. 第五层: 展现 “谋略思维” (多步推理与规划) 6. 第六层: 组件 “特工小...