avatar
文章
25
标签
26
分类
12
主页
博文
  • 分类
  • 标签
  • 归档
关于作者
Logo旅人
主页
博文
  • 分类
  • 标签
  • 归档
关于作者

旅人

手写一个简单的spring框架 AOP
发表于2024-12-09|更新于2024-12-09|框架|spring•架构•进阶•原理实现
我们使用@Aroud,@Before,@After来确定是在这个类的方法的什么时候进行处理属于是类级别的注释,使用其他的注解(方法级别)来定义要做的事 即如下的样子 12345678910111213141516@Component@Around("aroundInvocationHandler") //指定什么时候调用AOPpublic class OriginBean { @Value("${customer.name}") public String name; @Polite //指定AOP要干的事 public String hello() { return "Hello, " + name + "."; } public String morning() { return "Morning, " + ...
手写一个简单的spring框架(二、IOC)
发表于2024-12-08|更新于2024-12-08|框架|spring•架构•进阶•原理实现
思路在上一节我们实现了bean的强依赖注入,接下来我们要实现的便是弱依赖的注入,也就是字段和setter方法的注入。我们首先进行注入,但是不进行init的使用 12345678910111213141516// 在当前类及父类进行字段和方法注入:void injectProperties(BeanDefinition def, Class clazz, Object bean) { // 在当前类查找Field和Method并注入: for (Field f : clazz.getDeclaredFields()) { tryInjectProperties(def, clazz, bean, f); } for (Method m : clazz.getDeclaredMethods()) { tryInjectProperties(def, clazz, bean, m); } // 在父类查找Field和Method并注入...
手写一个简单spirng框架(一、IOC)
发表于2024-12-06|更新于2024-12-06|框架|spring•架构•进阶•原理实现
学习的是廖雪峰老师的Summer Framework项目,在这个项目中我们手写实现了一个简单的spring框架。在这个框架中,我们会实现 context模块:实现ApplicationContext容器与Bean的管理 aop模块:实现AOP功能; jdbc模块:实现JdbcTemplate,以及声明式事务管理; web模块:实现Web MVC和REST API; boot模块:实现一个简化版的“Spring Boot”,用于打包运行; 实现ResourceResolverspring使用容器来管理bean,但是显而易见,容器是不可能自己感知到bean是在哪里存在的,所以我们需要对整个项目的Class进行一个扫描。java的ClassLoader机制可以获取到指定的Class,但是,给出一个包名,它并不能获取到该包下的所有Class,也不能获取子包。 所以我们需要自己动手实现一个文件扫描的功能 首先创建一个文件类型 123456789101112131415161718192021222324252627282930313233public class Resour...
git微进阶
发表于2024-11-21|更新于2024-11-21|git|进阶技巧
作为程序员git属于是我们工作生活中的一个必备技能,但是看过网上的大部分教程后,基本上还是只会git pull和git push 换着来用。而在真正上手做了之后,随着自己不断的使用又会遇到许多问题。本贴便是对这些问题的记录 gitignore文件的正确修改可能大家会觉得:”这有什么的,文件修改我还能不会嘛?”.哎,别急,各位言之过早了一点。这说明在座的各位还没有还没有经历过这个情况。 作为一只菜鸡,我们在使用git管理文件的时候可能会忽略掉gitignore的作用,而只有当我们在想起来类似于target,log等文件没必要上传的时候,才会猛然想起在gitignore中添加规则,但是这个时候我们往往会发现gitignore不生效了。 不生效的原因在上边的情境中,当我们想起来添加规则的时候,已经是完成了一轮或者好几轮的git之后了,这个时候,文件已经进入到了git的追踪中,而gitignore的规则只对未进入追踪的文件起作用。 解决方法好的,现在理解了为什么中途添加规则会失败,那么也就有针对性的解决办法:在git中有这样一条指令,该条指令会取消本地内容中文件的追踪效果。 123git...
github实现CD
发表于2024-08-17|更新于2024-08-17|git|进阶技巧
由于学习上的需要,我需要不断对GitHub上的分支进行合并与持续向远端推送。虽然手动操作并不难,但次数较多时,自动化部署功能显得尤为必要。本文将介绍如何利用GitHub Actions实现Spring Boot程序的持续部署。 Actions基本使用方法基本概念 workflow:GitHub的配置文件,存放在.github/workflow文件夹中。 job:一个workflow由多个job构成。 step:每个job分为多个步骤。 action:每个步骤执行的具体动作。 字段解释runs-on选择执行环境,目前支持的环境包括: ubuntu-latest windows-latest macos-latest uses调用GitHub市场中的预定义脚本。例如: 1uses: actions/checkout@v4 使用Actions将Java程序部署到远程服务器上使用Maven打包 进入GitHub Actions管理界面,创建新workflow。 选择Java with Maven模板,配置以下内容: 12345678910111...
leetcode2
发表于2024-08-05|更新于2024-08-05|算法|面试•双指针
leetcode1
发表于2024-08-05|更新于2024-08-05|算法|面试•双指针
暴力思路:可以直接使用set记录下节点的地址值,如果有重复那么就是有环,如果指针走到了最后那么就说明无环 1234567891011public boolean hasCycle(ListNode head) &#123; Set set = new HashSet<>(); while (head != null) &#123; if(!set.contains(head))&#123; set.add(head); &#125;else return true; head=head.next; &#125; return false; &#125; 双指针思路:使用快慢指针,如果快指针和慢指针相撞,就说明有环,如果快指针走到头,就说明无环 12345678910111213public boolean hasCycle(Li...
vue3
发表于2024-07-26|更新于2024-07-26|前端|前端•vue3
提前条件:安装了16.0或更高版本的Node.js,可使用node -v查看版本。创建一个Vue应用:npm init vue@latest。在js中加入setup:表示允许在script中直接编写组合式API,mount用于设置挂载点。 组合式apisetup选项是组合式api的入口,其生命周期早于beforeCreate。由于执行时机过早,在setup中无法获取this。注意点: 在setup中定义的数据和函数,都需要通过return暴露出去,才能在模板或其他地方使用。 原生写法 1234567891011setup() &#123; console.log(1); const message = 'hello Vue3'; const logMessage = () => &#123; console.log(message); &#125;; return &#123; message, logMessage &#125;; &...
vue2
发表于2024-07-11|更新于2024-07-11|前端|前端•Vue2基础
assets:存放静态资源 图片字体 components 可重用组件 router 路由跳转 store vuex中的共分享数据 views 不同的视图组件,配合路由使用的 api:和后台交互,向后台发送请求 plugins:插件 app.vue 跟组件 vue的组件template :生成html代码script:代码部分,控制模板的数据的来源和行为style:控制样式 vue export中的属性 data 123data: function()&#123; return&#123;返回附带的属性&#125;; &#125; methods 123456//用来存放方法methods;&#123; 方法名(参数)&#123; return &#125;&#125; computed:计算属性 123变成了属性的方法&#123;&#123;&#125;&#125;调用时只需要名称不需要像方法一样带括号和方法的区别是,计...
html
发表于2024-06-25|更新于2024-06-25|前端|基础•前端
标签123| | 12345 **** div和span123 超链接1 target 可选 _self 和 _blank,前者是在当前窗口打开,后者是新开窗口。 锚点链接1 在被跳转的标签加上 id 并保持 id 与跳转名一致。 特殊字符表格标签12345| || --- || 姓名 | 年龄 | 评价 | 分割标签更好的分清表格结构 12345 跨行合并:rowspan="合并单元格的个数" 跨列合并: colspan="合并单元格的个数" 列表标签12345678910111213 - - 输入标签css css 选择器基础选择器 标签选择器 类选择器(class) 可以有多类名,在 class 中用空格隔开 id 选择器 以 #+id 名来选择 id 具有唯一性 通配符 *,一般用于消除某某通用属性 文字样式1234567/* font-family: 字体 *//* font-size: 字号 *...
123
avatar
旅人
技术栈也是栈
文章
25
标签
26
分类
12
Follow Me
公告
This is my Blog
最新文章
Agent 工作流模式与工程实践2026-07-20
LangGraph 图编排:边、Send 与 Command2026-07-20
LangGraph 状态管理:State、Reducer 与 Message2026-07-20
LangGraph 入门:用有向图把 Agent 跑起来2026-07-20
RAG:用检索增强生成打破大模型的知识局限2026-04-02
分类
  • AI/LLM5
  • git2
  • javaweb1
  • redis1
  • 分布式1
  • 前端3
  • 小技术1
  • 开发1
标签
LangGraph 算法 双指针 mysql 面试 vue3 基本原理 redis Agent 分布式 AI 进阶技巧 基础 向量数据库 LLM 架构 LangChain 数据库 Vue2基础 图 原理实现 spring RAG 检索增强 进阶 前端
归档
  • 七月 2026 4
  • 四月 2026 1
  • 四月 2025 1
  • 三月 2025 1
  • 二月 2025 1
  • 十二月 2024 5
  • 十一月 2024 1
  • 八月 2024 3
网站信息
文章数目 :
25
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2024 - 2026 By 旅人