Home

若依项目部署

之前一直负责公司的部署项目,自认为前公司的项目是那种介于微服务和大单体之间的那种,不算纯粹的微服务系统,最近也想学习一下开源的微服务项目,就选择了比较热门的若依项目,该项目有单体的和微服务的版本,ruoyi-cloud是微服务的,大家选择的时候注意一下。 1.准备工作 获取项目源码 访问Gitee,下载RuoYi-Cloud项目代码。 环境准备 确保您的系统已安装Docker。 准备好Node.js用于前端开发, 根据ruoyi-ui目录中的readme文件执行,可直接执行下载依赖即可。下载完成后有个node_modules目录。根据readme文件中的启动命令启动前端项目后点击url能看到页面即可,报...

Read more

高效使用IDEA方式

1.颜色样式设置 将打开的文件纵向展示[来源B站的某位博主] 设置后的文件全部在左侧展示,如下所示: 我在图中标记的两个地方,对于打开文件和选中的变量而言,都不显眼,我们通过深颜色来突出当前打开的文件和选中的变量; 突出选中文件和变量 2.快捷键 一些常用的我就不说了,挑一些比较有用的讲一下 shift+F6: 比如一个方法中,想修改个变量名/方法名/类名,但是变量名在下面使用很频繁,可以选中该变量名后执行快捷键批量修改;[PS: 这个快捷键还有个小故事,我之前对这个快捷键有印象,但是不经常使用。我们在代码评审的时候那个产品Leader(是我的上上级)说我变量名用的不好,然后我现场就根据他说的变量名进行修改,我用...

Read more

SpringBoot集成Ollama本地部署DeepSeek大模型应用

本文通过ollama本地部署deepseek-r1:1.5b模型,然后基于Langchain开源框架集成到SpringBoot项目中,完成本地大模型对话项目。 Langchain是一个开源框架,用于开发由语言模型驱动的应用程序框架。 它通过三个核心组件实现增强: • 首先是 Compents“组件”,LLMs提供接口封装模板提示和信息检索索引; • 其次是 Chains“链”,它将不同的组件组合起来解决特定的任务,比如在大量文本中查找信息; • 最后是 Agents“代理”,它们使得LLMs能够与外部环境进行交互,例如通过API请求执行操作。 1.安装ollama ollama官网 Ollama 是专门为 macOS/Linux/Windows 本地部署大模型设计的工具...

Read more

回溯递归总结

最近面试刷题倒是刷出心得了,两年前疯狂的刷了一次题目搞懂了动态规划,当时对于回溯特别困惑。然后这一次刷题不知不觉吃透了整个回溯加剪枝。对于利用动态规划方式来剪枝叶,实际上动态规划剪枝是空间换时间的一种方式。 1. 回溯 78. 子集 我觉得Leetcode78这题是特别典型的回溯,就好比跳台阶是动态规划的入门一样。典型的原因就是因为这一题就是纯粹的回溯递归,不需要任何判断来过滤一些无用的数据。 这一题的一个特点就是元素互不相同,这和我们后面另外一题子集有所区别。我们先来看看编码,如下: public List<List<Integer>> subsets(int[] nums) { List<List<Integer&g...

Read more

五六年的开发人职场总结

最近也在面试,同时将之前记录的零零碎碎整理了一下,软硬技能都有。曾经一腔热血认为专心做技术就行,进了公司才发现这尼玛有人的地方就有江湖,保持初衷吧! 开发篇 除了POJO对象中可以定义set/get方法,其他一律不准定义set/get方法,包括Spring的Bean对象; 因为set/get会导致序列化和反序列化,可以使用build/init/from方法代替;Spring源码中方法命名通常是doXxxx(). 方法调用要显示 什么是非显示: BeanCopyProperties方法就是对set/get方法非显示调用;反射就是非显示;千万不要使用配置的方式非显示调用方法;我们之前领导要求将方法的签名配在配置文件中,通过反射的方式执行,对此表示很不...

Read more

面向对象的设计原则

面试的时候回头看到这些理论知识,结合自己之前的开发经验感慨万千。原来前辈们列出了这么多优秀的条条框框,之前也看过,但是没啥感觉。当你遇到问题的时候,你会发现你的解决方式和这些理论不谋而合。虽然是一些简单的理论知识,但是项目组中的很多人真的不一定会知道怎么用。万丈高楼平地起, 细节化聊聊面向对象的设计准则. 1. 单一职责原则(Single Responsibility Principle ) 一个类应该只有一个引起它变化的原因,即一个类应该只负责一项职责。 单一职责不是“只有一个功能”,而是“只对一个变化负责”。你可以做很多事,只要这些事都属于“同一个责任人”负责的范围。(你可以理解单一职责是做一类事情) 例子: 比如 UserService 聚焦用户注册、登录、权限等“用户...

Read more

Effective Java的理解与总结

1.写在前面 Effective Java这本书不推荐初学者去看,因为没有一定的经验基础,你在看这本书的时候不会产生共鸣,会让你觉得很多无法理解。这本书我读了两遍,分别是在工作三年和工作五年的时候,因为有了工作经验的积累,以及你在工作中遇到类似的问题,会和作者提出的观点不谋而合,所以更容易理解。 作者的有些条目,理论是正确的,但是在项目中不实用,我们也要选择性使用。有些条目我没有列出来是因为没有深刻的印象,也是没有完全理解。 全文均是小编结合ChatGPT的理解(嘿嘿,这个确实很有帮助),如果还有更好的理解,可以相互交流。 2.主要内容 1.考虑使用静态工厂方法替代构造方法 所谓静态工厂方法简单来说就是利用一个静态方法来创建一个对象的方式; 静态工厂方法的优点: 静...

Read more

测试环境内存泄漏的排查

这周忙到飞起,采用轮流值班制解决测试环境的问题。运气好的话啥事没有,运气不好忙到爆炸。这周我就是属于后者的情况,从周三一直排查问题,到周五上午,一堆需求没有做。唉!就感觉每天的时间过得真快,不过查问题还是很锻炼人的,至少这次排查学习到了一些。 1. 问题表现 测试人员反应某个功能异常,然后去对应的应用使用top命令看了一下,果然cpu打满了,如下图所示: 然后使用top -Hd {pid}查看进程内的线程情况,可以确定是那一个线程。 通过线程的数据发现有两个GC线程都达到了50%,此处很明显是产生异常GC情况,两种情况:1.大对象数据产生的速度快于GC速度;2.内存泄漏,对象无法回收; 这里使用了两个线程对对象进行回收。 再使用查看jstat的命令查看每秒GC的数据:j...

Read more

Kafka分析与总结

1.Kafka基本概念 broker 服务节点,多个broke构成kafka集群,主要负责消息接收和存储 topic 可以理解成一个通道,不同topic之间互相隔离,因此可用于隔离不同业务。例如用户和订单使用两个不同topic来完成消息隔离。 paritition 分区,建立在broke的基础之上,通常在一个topic建立不同的分区存储在不同的broke上。一个topic对应一个分区就是生产者-消费者模式,一个topic对应多个分区才是发布-订阅模式。可在不同broker创建相同的分区,有主副之分(Replication 副本),实现数据冷备份。 Producer 生产消息的客户端 Consumer 消费消息的客户端 Consumer Group ...

Read more

Redis的有序集合ZSet

redis源码:点击进入 redis官网:点击进入 之前写了一篇基于Redis的ZSet的数据类型实现分页查找的,今天咱们聊聊关于ZSet的基本用法和实现原理。 1.Zset基本使用 在日常开发中的话,Spring也提供了Redis的客户端,ZSet的使用来自接口:org.springframework.data.redis.core.ZSetOperations 添加元素 127.0.0.1:6379> zadd mykey 55 test1 66 test2 77 test3 //添加三个元素 (integer) 3 删除元素 127.0.0.1:6379> zrem mykey test1 (i...

Read more