- 博客(58)
- 收藏
- 关注
原创 重装系统C盘格式化,MYSQL恢复
背景:mysql在E盘,但是C盘重装系统,以前的注册表之类的都没有了,想重新恢复mysql的使用。2. 按照下面的步骤注册并启动服务。1. 配置以前的环境变量。
2025-12-14 11:38:58
288
3
原创 tmux分屏使用
你现在处于 tmux 的分屏(窗格)模式,当前焦点在右边窗格,所以只能在右边输入。要切换到左边窗格输入命令,需要用 tmux 的窗格切换快捷键:现在你按 就能切换到左边窗格输入命令啦~
2025-12-06 10:40:20
178
原创 链盾shieldchiain | 团队功能、邀请成员、权限修改、移除成员、SpringSecurity、RBAC权限控制
sys_rolesys_team建表修改user表新增email字段,用于邀请成员逻辑。
2025-11-24 15:04:34
857
原创 链盾shieldchain | 项目管理、DID操作、DID密钥更新消息定时提醒
注意:获取项目统计和获取项目列表是同时请求API,这个需要在vue里面专门写一个函数,否则不会同时请求API。
2025-11-22 21:47:44
425
原创 链盾shieldchain | DID工具类、加密解密工具类、为用户上传软件包生成三种格式SBOM、漏洞清单、线程池
由于需要为软件和用户都生成DID,所以将这一部分代码抽取出来,单独作为一个工具类。原先代码由于删掉了user实体的update_user和create_user,所以部分sql和代码发生变化,注册部分代码以此次commit为准。
2025-11-17 19:59:47
956
1
原创 链盾shieldchain | 数据库、用户注册、登录、标识查询、商业软件申请和处理、消息
只放必要的、非敏感的身份标识和基础信息,避免冗余或敏感数据(如密码)。前端通过把用户名和密码传给后端的登录接口。后端接收到请求后,先校验用户名和密码是否正确(比如查询数据库比对)。如果校验成功,后端会从数据库中查询该用户的核心信息(如userIdusernamerole等)。接着,后端会创建一个 JWT 令牌,在生成令牌的过程中,将查询到的用户信息(如)填充到 JWT 的 claims 中。最后,后端把生成的 JWT 令牌(包含已填充的 claims)通过返回给前端,前端再用存储起来。
2025-11-12 23:23:32
600
1
原创 苍穹外卖是如何从0搭建一个标准的 Maven 多模块项目的?
存放整个项目通用的类,如常量、工具类(DateUtils, StringUtils)、基础配置、异常处理、通用AOP等。这种结构非常适合像你们这样分工明确的中大型项目,因为它可以实现代码的复用、模块化管理和依赖清晰化。创建完成后,在IDEA右侧的Maven工具窗口中,你应该能看到一个清晰的树形结构。:声明它包含了哪些子模块,并统一管理所有子模块的公共依赖和插件版本。创建完成后,你的项目结构就会和图片中一模一样了。,继承父项目的配置,并声明自己特有的依赖。现在,我们基于父项目来创建子模块。
2025-10-23 10:23:26
967
1
原创 java面试day5 | 消息中间件、RabbitMQ、kafka、高可用机制、死信队列、消息不丢失、重复消费
中间件:位于应用系统和底层系统(如操作系统、数据库、网络)之间的“桥梁软件”,核心作用是解耦、协调不同系统,简化复杂的交互逻辑。“消息中间件” 则聚焦于 “消息” 的传递与管理 ,是专门处理分布式系统中 “跨应用、跨服务数据通信” 的工具。消息中间件是一种,能够在分布式架构下,让不同的应用 / 服务(比如 A 系统和 B 系统)无需直接连接,而是通过 “消息”(本质是结构化的数据,如 JSON、XML)进行间接通信。三个角色:生产者、消费者、消息队列两种核心通信方式:P2P点对点,发布-订阅模式。
2025-09-27 12:39:25
1145
原创 java面试day4 | 微服务、Spring Cloud、注册中心、负载均衡、CAP、BASE、分布式接口幂等性、xxl-job
默认的ribbon负载均衡策略是ZoneAvoidanceRule。
2025-09-23 22:02:18
1288
原创 java面试day3 | 框架篇、Spring、SpringMVC、SpringBoot、MyBatis、注解、AOP、Bean
代理对象是一种替代真实对象(目标对象)的对象,它与目标对象实现相同的接口或者继承相同的抽象类。成员变量:定义在类内部、方法外部的变量,描述类的属性或状态,是类的重要组成部分。它与 “局部变量”(定义在方法内部的变量)相对,两者的作用域、生命周期有显著区别。:在编译期就确定代理类,代理类和目标类实现相同的接口,代理类中持有目标类的引用。通过代理类可以在调用目标方法前后添加额外的逻辑。springboot自动配置:Spring Boot 会根据你添加的依赖和配置,自动帮你完成很多繁琐的框架配置工作。
2025-09-22 15:39:56
1043
1
原创 java面试Day2 | mysql优化、索引、事务、并发事务、MVCC、主从同步、分库分表
分而治之”—— 把复杂的问题拆成小问题,每个小问题用独立的服务解决,再通过协作完成整体目标,最终实现 “灵活、可靠、易扩展” 的软件系统。常见的微服务落地案例:阿里的 “中台”(各个业务线拆成微服务,复用中台能力)、美团的外卖系统(订单、支付、配送、商家管理都是独立微服务)、抖音的推荐系统(用户行为分析、推荐计算、内容分发各成服务)。
2025-09-19 16:33:30
757
原创 java面试Day1 | redis缓存穿透、击穿、雪崩、持久化、双写一致性、数据过期策略、数据淘汰策略、分布式锁、redis集群
所以延时双删极大控制了脏数据的风险,但也只是控制了一部分,做不到绝对强一致。这类嵌入式数据库的底层用布隆过滤器优化 “不存在 key 的查询”:先查布隆过滤器,若判定 “不存在”,直接返回,无需读取磁盘(磁盘 IO 成本远高于内存查询)。redis用setnx实现的分布式锁是不可重入的,redisson实现的分布式锁是可重入的。redis用setnx实现的分布式锁是不可重入的,redisson实现的分布式锁是可重入的。如果主节点宕机了,就从从节点中选出一个当做主节点,当有新的线程来了,就请求新的主节点。
2025-09-17 17:37:04
966
原创 苍穹外卖前端Day1 | vue基础、Axios、路由vue-router、状态管理vuex、TypeScript
选择“手动创建”,勾选Router不同的路径对应不同的组件展示只能通过同步函数mutations修改state共享数据Vue框架源码是基于TS编写的尝试编写ts代码并编译,故意传参传一个错误的类型编译tsc hello.ts 执行 node hello.jsTS优点。
2025-09-08 18:46:34
1269
原创 苍穹外卖Day12 | Apache POI、导出Excel报表、HttpServletResponse、工作台
Apache POI 的全称是(意为 “简陋的混淆实现”)。这个名称源于其最初的开发背景 —— 早期它主要用于解析微软 Office 文件格式,而这些格式在当时并未完全公开,且存在一定的 “混淆” 特性,开发者通过逆向工程等方式逆向解析格式并实现兼容,因此得名 “简陋的混淆实现”。
2025-09-07 21:32:46
963
原创 苍穹外卖Day11 | Apache Echarts、营业额统计、用户统计、订单统计、销量排名Top10
一个基于JavaScript的开源可视化图表库,前端技术。
2025-09-06 23:36:24
370
原创 苍穹外卖Day10 | 订单状态定时处理、来单提醒、客户催单、SpringTask、WebSocket、cron表达式
定时自动执行某段java代码websocket是基于TCP的一种新的网络协议,它实现了浏览器和服务器全双工通信--浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性连接,并进行双向数据传输。HTTP做不到这个效果,HTTP是请求-响应模式。
2025-09-05 10:51:00
1010
原创 苍穹外卖Day9 | 用户端、管理端接口功能开发、百度地图解析配送范围
优化用户下单功能,加入校验逻辑,如果用户的收货地址距离商家门店超出配送范围(配送范围为5公里内),则下单失败。 2. 注册账号--->创建应用获取AK(服务端应用)--->调用接口。在admin包下创建OrderController。一个问题:用户详细订单中的地址没有展示。将微信退款部分注释掉,可以实现正常退款。 1. 基于百度地图开放平台实现(根据产品原型进行需求分析和接口设计。item 类型: object。
2025-09-04 15:02:11
694
原创 苍穹外卖Day8 | 用户下单、订单微信支付、内网穿透、cpolar、微信支付平台证书、商户私钥文件
JSAPI:在H5页面mchid:商户号out_trade_no:订单号appid:应用idnotify_url:付款成功后的回调地址,应该是系统后端的一个地址payer:当前付款的用户的openid第五步:是生成预支付交易单上面是调起微信支付的代码方法wx.requestPayment(OBJECT)吊起微信支付两次调用微信后台请求支付的过程需要很高的数据安全性,调用过程中如何保证数据安全?
2025-08-31 21:36:50
878
原创 苍穹外卖Day7 | 缓存商品、购物车、SpringCache、缓存雪崩、缓存套餐
缓存雪崩是指在某一个时间段,缓存中大量的 key 同时失效 ,或者缓存服务整体不可用,导致大量原本应该访问缓存的请求直接落到了数据库上,使得数据库的负载瞬间过高,甚至可能导致数据库被压垮,进而使整个应用系统不可用。
2025-08-30 18:04:13
956
原创 苍穹外卖Day6 | 微信登录、商品浏览、HttpClient、微信小程序开发、补充Day4的代码
可以在java程序中通过编码的方式发送HTTP请求但是在这个项目中,没有导入这个依赖也可以使用,是因为导入了阿里云sdk-oss,他底层使用了HttpClient,已经传递过来jar包Header:告诉接收方 “用什么算法验证签名”;Payload:传递 “用户身份、权限、有效期” 等核心数据;Signature:通过签名确保 “令牌未被篡改” 且 “来自合法服务器”。当客户端携带 JWT 访问服务器时,服务器会重新计算签名并与令牌中的 Signature 比对,若一致则认为令牌有效,否则拒绝请求。
2025-08-29 23:06:57
587
原创 苍穹外卖Day4 | 接口开发作业、 新增套餐、 套餐分页查询、删除套餐、修改套餐、 起售停售套餐
setmeal_dish表为套餐菜品关系表,用于存储套餐和菜品的关联关系。setmeal表为套餐表,用于存储套餐的信息。
2025-08-29 21:56:50
887
原创 苍穹外卖Day5 | 设置店铺营业状态、Redis入门、Redis图形化界面、Redis和java集成
设置店铺营业状态、Redis入门、Redis图形化界面、Redis和java集成
2025-08-28 17:31:27
800
原创 为什么后端发送的HTTP请求和用户实际在浏览器地址栏看到的不同?
所有差异的核心,都可以归结为“分层架构与职责隔离”用户浏览器地址栏的 URL,是 “对外暴露的入口地址”,目的是 “简单、安全、统一”,方便用户访问;后端发送的 HTTP 请求,是 “内部通信地址”,目的是 “精准、高效、可扩展”,服务于业务逻辑(如调用微服务、第三方接口)。两者处于不同的网络层级(前端 - 网关层 vs 后端服务层),承担不同的职责,因此 URL 必然不同 —— 这是分布式系统、微服务架构下的正常设计,也是保障系统安全、可维护性的关键。
2025-08-26 09:50:48
954
原创 苍穹外卖-Day2 | 员工管理、分类模块、分页查询、编辑员工、启用禁用员工账号、IDE配置SQL提示、ThreadLocal
员工管理、分类模块、分页查询、编辑员工、启用禁用员工账号、IDE配置SQL提示、ThreadLocal
2025-08-12 17:11:59
621
原创 苍穹外卖-Day1 | 环境搭建、nginx、git、令牌、登录加密、接口文档、Swagger
本文介绍了基于Nginx和SpringBoot的全栈开发实践,主要内容包括:1. Nginx配置反向代理和负载均衡,实现前端请求转发;2. 后端采用Maven管理,包含公共模块、POJO模块和服务模块;3. 使用Git进行版本控制,MySQL作为数据库;4. 前后端联调方法,包括断点调试技巧;5. YAML配置文件的应用;6. JWT令牌生成与登录功能实现;7. Swagger接口文档生成与在线测试。文章详细讲解了项目配置、调试技巧和常用工具的使用,为开发者提供了完整的全栈开发实践指南。
2025-08-10 23:04:56
1223
1
原创 代码随想录算法训练营第十三天 | 二叉树理论、递归遍历、迭代遍历、层序遍历
刚刚我们说过了二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存,这个定义没啥可说的,我们来看看链式存储的二叉树节点的定义方式。int val;大家会发现二叉树的定义 和链表是差不多的,相对于链表 ,二叉树的节点里多了一个指针, 有两个指针,指向左右孩子。在现场面试的时候 面试官可能要求手写代码,所以数据结构的定义以及简单逻辑的代码一定要锻炼白纸写出来。int val;
2025-07-11 23:29:04
992
原创 汇编8086:解决创建、写入文档在临时文档的问题 | 汇编实现创建文件永久保存
汇编8086:解决创建、写入文档在临时文档的问题 | 汇编实现创建文件永久保存
2025-06-27 18:06:15
484
1
原创 代码随想录算法训练营第十天 | 栈与队列理论基础、232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项
所以就是用栈来存放,那么栈的目的,就是存放遍历过的元素,当遍历当前的这个元素的时候,去栈里看一下我们是不是遍历过相同数值的相邻元素。从下图中可以看出,栈的内部结构,栈的底层实现可以是vector,deque,list 都是可以的, 主要就是数组和链表的底层实现。从栈中弹出剩余元素,此时是字符串ac,因为从栈里弹出的元素是倒序的,所以再对字符串进行反转一下,就得到了最终的结果。给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。所以return false。
2025-05-25 23:34:17
972
原创 代码随想录算法训练营第九天 | 151.翻转字符串里的单词、右旋字符串、28. 实现 strStr()、459.重复的子字符串
不过这种解法还有一个问题,就是 我们最终还是要判断 一个字符串(s + s)是否出现过 s 的过程,大家可能直接用contains,find 之类的库函数, 却忽略了实现这些函数的时间复杂度(暴力解法是m * n,一般库函数实现为 O(m + n))。而且遍历的时候 都不用遍历结束,只需要遍历到中间位置,因为子串结束位置大于中间位置的话,一定不能重复组成字符串。暴力的解法, 就是一个for循环获取 子串的终止位置, 然后判断子串是否能重复构成字符串,又嵌套一个for循环,所以是O(n^2)的时间复杂度。
2025-05-24 23:30:45
976
原创 代码随想录算法训练营第八天 | 344.反转字符串、541. 反转字符串II、替换数字
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。一些同学可能为了处理逻辑:每隔2k个字符的前k的字符,写了一堆逻辑代码或者再搞一个计数器,来统计2k,再统计前k个字符。
2025-05-23 23:05:34
709
原创 代码随想录算法训练营第七天 | 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n^2),四数之和的时间复杂度是O(n^3)。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]说到去重,其实主要考虑三个数的去重。
2025-05-20 15:33:41
806
原创 代码随想录算法训练营第六天 | 哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、1. 两数之和、 202. 快乐数
总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!
2025-05-19 15:27:23
621
原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点、面试题 02.07. 链表相交、19.删除链表的倒数第N个节点、142.环形链表II
可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。由于快指针一次走两个节点,慢指针一次走一个节点,所以两者的相对速度为1,只要有环,两者一定会在环中相遇。
2025-05-18 18:57:39
1079
原创 代码随想录算法训练营第三天| 链表基础、203.移除链表元素、707.设计链表、206.反转链表
接下来说一说链表的定义。链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。// 结点的值int val;// 下一个结点// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)
2025-05-17 11:44:07
563
原创 代码随想录算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II、58. 区间和、44. 开发商购买土地
不要以为for里放一个while就以为是O(n^2)啊, 主要是看每一个元素被操作的次数,每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被操作两次,所以时间复杂度是 2 × n 也就是O(n)。就是前缀和的思路,先统计好,前n行的和 q[n],如果要求矩阵 a行 到 b行 之间的总和,那么就 q[b] - q[a - 1]就好。本题也可以使用 前缀和的思路来求解,先将 行方向,和 列方向的和求出来,这样可以方便知道 划分的两个区间的和。例如,我们要统计 vec[i] 这个数组上的区间和。
2025-05-17 11:21:20
963
原创 virtualbox虚拟机中的ubuntu 20.04.6安装新的linux内核5.4.293 | 并增加一个系统调用 | 证书问题如何解决
virtualbox虚拟机中的ubuntu 20.04.6安装新的linux内核5.4.293 | 并增加一个系统调用 | 证书问题如何解决 | 注意内存分配问题
2025-05-16 21:42:15
977
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅