- 博客(48)
- 收藏
- 关注
原创 金证秋招笔试
1.构造函数的特性答:1. 基础语法特性(名称、无返回值、自动调用)2. 继承体系下的执行顺序(先父后子)3.不被继承 & 默认无参构造器陷阱意思就是如果父类手动创建构造函数 子类创建构造函数系统会自动调用super() 这时候找不到上级的无参构造函数就会发成报错4. 一个最容易翻车的点:构造器里调用可重写方法2.sleep()和wait()的区别1.sleep()不释放锁wait()释放锁2.sleep()被中断后锁不释放 wait释放3.
2026-08-22 16:05:25
223
原创 计算机网络---基础面试版持续更新
查路由表:北京分拨中心查表,发现目标IP属于自己直连的局域网(不需要再转给别的路由器了)。MAC寻址:它在内部局域网上广播:“谁是?请把你的MAC给我!拿到MAC后:把数据帧的目标MAC改成百度服务器网卡的MAC,完成最终投递。这个是与ai对话得到的,比较通俗易懂追问:讲解一下ARP?答:ARP既不是纯粹的IP层协议,也不是链路层协议,它位于网络层(IP)和数据链路层(MAC)之间,充当翻译器。它的任务:将IP地址(逻辑地址)解析为MAC地址(物理地址)。适用范围:仅限。
2026-08-18 15:21:26
195
原创 redis与mysql差缺补漏-面试版持续更新
listpack 目前的存储格式为:total-byte(整个 listpack 占用字节)- num-element(元素总数)- 实际节点 - end-byte(实际结束节点),节点设计为 encoding(类型)- data(数据)- len(长度),避免元素修改对别的元素产生影响。如节点 1, 2, 3, 4, 5, 6,这时候对 1,第一次生成为 0.4 则 1 就在 level 0 中,对 2 第一次为 0.1,第二次为 0.2,第三次为 0.9 则他为 level 2 中。
2026-08-12 17:24:06
220
1
原创 基础知识差缺补漏-面试版持续更新
java基础篇1.静态代理和动态代理的区别静态代理:本质就是每多一个实体类需要编写一个静态代理对象去做局部增强,简单代码例子:// 静态代理类(经纪人)// 代理知道要给谁当经纪人@OverrideSystem.out.println("💰 经纪人:收订金");// 让真正的歌手唱System.out.println("💰 经纪人:收尾款");// 手动创建经纪人proxy.sing("夜曲");// 现在有增强效果了。
2026-08-12 16:03:36
210
原创 4399服务器开发校招题目
说明:item0 放在 (2,0),item2 可放在任一剩余空位置如 (2,0)、(0,0)、(0,1)、(0,3) 等。输入:records=[('Tom',70),('Jerry',75),('Tom',80),('Jerry',60)]matrix:List[List[str]],M×N,'0'/'1' 字符矩阵,代表背包当前状态。输入:records=[('A',88),('B',91),('A',95),('C',91)]输出:[('A',95),('B',91),('C',91)]
2026-08-04 16:33:58
190
原创 实习日志5.13
一开始计算count总条数的时候就需要大概0.9s,随后发现是没有命中二级索引,命中索引后就只需要0.5s左右。所以当面对大数据的时候应该要设置好二级索引,方便命中。其次为了处理深分页还使用了一个方案就是游标,然后前端页面只往后推一页,这样用户百分百会触发游标,当用户从第一页按到第五六百页的时候,始终走了游标,保证运行速度。今天处理了百万大数据,代码明细提交,当做分页page接口的时候,当深分页的时候无论怎么优化都要3s的时间,最终延迟查找的方法可以将延迟降低到一秒。
2026-05-14 15:07:41
25
原创 5.9实习日志
2.Rag demon的优化现在进行到了分片优化,目前运用了三种策略,第一种是定窗口500-1000token loop重叠为100 第二种是交给大模型分析总结后再分片 第三种是父子分片方案 现在是让大模型初步判断文档大小然后去对应使用哪种方案,然后还新增了用户query的优化,四种方法,重写问题,Hyde,问题宽泛化,多种query,目前综合来说hyde效果最好,其次是多种query,问题宽泛化效果最差。
2026-05-09 17:48:05
36
原创 实习日志5.7
要注意前端缓存的问题,有些过滤条件他过滤成功看起来效果已经实现了,但是他其实是只经过前端缓存进行查询的,没有通过后端接口,这种我称为假搜索。要注意这种问题,最好的检查方法就是你意识到这个功能肯定要经过后端,通过f12去查询看看接口。当前端传的类型错误的时候,按f12查看payload是看不到对应的字段的,当多次修改无果,就要注意是不是前端传参的字段不是后端符合要求的字段类型。字体前端渲染是标题加编号都可以进行模糊搜索,但是直接和ai对话,ai会习惯分开,即你给的是纯数字,更容易只匹编号而不匹对标题。
2026-05-07 15:49:51
51
原创 实习日志5.6
然后修改了前端的过滤样式发现过滤失效,当时想f12查看出错问题或者失效问题,发现所有的前端过滤都没有走后端查询而是只在前端进行了查询。设置接口后过滤生效(为什么其他的过滤生效而这个过滤会失效呢,因为这个样式是照搬了其他地方的样式逻辑也是,逻辑是查询后端接口,因为这里只查询了前端所以会导致失效让我发现了这个问题)思路:1.前端渲染问题 2.后端没有保存到时分即格式问题 3.数据库格式问题。最终排查出来是数据库当时类型选为了date类型 而不是datetime类型。
2026-05-06 16:18:12
19
原创 实习日志---1,2天
第二天分配任务了,主要是前端按钮的修改,修改了保存并继续创建的按钮逻辑,然后自己学习了一下python智能体封装,java调用的方式,梳理了一遍请求的逻辑,没有使用微服务,这可以当后续项目的升级。目前的使用方式是通过java端的clientcontroller去通过http调用python智能体,希望后面可以将skill,mcp等升级起来吧,每天花点时间学习一下。第一天主要就是配环境,然后熟悉了一下代码。
2026-03-20 17:48:22
65
原创 字节一面---客户端开发实习生
7.哪些是jvm可以清理的数据 哪些不可以被清理 什么数据会被清理(衍生:不同的清理方法对于被清理对象是否有影响)8.索引如何建立 建立索引的依据是什么 需要考虑什么内容。4.springmvc三层框架为什么不实现在一起。1.做一个项目时,ai出现与ai出现后的区别。11.多线程问题如何处理,平常有没有遇到过。12算法题:写出一个生成二叉树镜像的算法。5.springboot中的aop解释。2.自己项目的亮点与难点(自我阐述)9.websocket的优点与缺点。3.springmvc的三层框架。
2026-03-12 21:15:28
56
原创 深信服公司---java实习生后端一二面询问
前提:八股文询问的并不多,更多的是对项目的考察,对项目细节的问询,目的大概率是对是否真实项目经历进行求真,关注对前沿ai技术的使用,以及对ai加速java编程的看法与想法。2.询问Easypan中对文件的处理是怎么实现的,其中的秒传是怎么判断的,有没有实现断点续存(这点后续会对项目进行优化)4.询问了coze的项目,以及问我是否了解coze平台,我的项目在coze上实现的流程。3.人工智能电商平台,讲一讲是如何实现的,对mcp,rag的理解。总流程为:项目-原理-自己出的场景-对ai的思考。
2026-03-12 21:01:59
214
原创 小公司初面---java后端题目
5.现在有一个电商系统,订单状态有待支付,已支付,未支付,待取货,已取货,已取消,状态之中(除了已取消)只有待支付,已支付可以跳转到已取消,其他的状态就从左往右按顺序转变,那么现在请生成一个返回boolean的方法,判断传入的原始状态能否转变成目标状态,如果项目以后扩展了订单状态,那又要怎么办呢 根据问题解答。7.现在让你设计一个任务,这个任务每次最多同时处理四个用户,每个用户要做完至少三个子任务(上传头像等)才可以注册,不管是否成功,以最快的速度存入数据库。// 在当前状态之后的所有状态都可以流转。
2026-03-11 20:59:04
359
原创 easymall---人工客服(SpringAI版)无敌复用框架!
此枚举类非寻常枚举类,他算是一种封装启动线程的开关,INSTANCE为实例,所有的类都需要实例才能初始化,所以这个INSTANCE必不可少,可以换成自己喜欢的单词,A,B,C,D都可以,在ExecutorSercviceSingletonEnum()中就初始化了一个线程池 所以这里的意思是另起线程启动ai聊天的功能,避免与主线程闭塞。"data": "{\"city\":\"北京\",\"date\":\"2026-03-10\"}"提供两种方法,第一种是为本文的阿里百炼配置 注释部分为ollama方式。
2026-03-08 13:20:47
403
原创 easymall---一对多xml修改问题(知识点)
"sp_property_id": "6799219674", // ❌ 属性ID变成了平级字段。"sp_property_id": "1001", // ⚠️ 这是子分类的属性。"categoryName": "数码家电", // ⚠️ 重复的分类信息。"sp_property_id": "3941671992", // ⚠️ 新的属性。"sp_property_name": "红色", // ⚠️ 新的属性值。
2026-02-07 15:53:29
581
原创 easymall---图片上传以及图片展示
因为要展示图片最后肯定要返回图片路径给前端,让前端可以找到图片存储的位置,同时也要为上传的图片存储到本地,为了便于区分以及习惯,文件夹以年月份的形式区分,文件名用随机字符串,缩略图添加_****作为区分。logger.error("执行命令失败cmd{}失败:{} ", cmd, e.getMessage());这一段就是为了把设定的头路径+年月份给弄出来,因为缩略图的名字和文件的名字不一样所以到这里之前他们的文件路径是相同的。logger.info("执行命令{}结果{}", cmd, result);
2026-02-07 13:03:00
699
原创 easymall---管理端商品管理数据库建立思路以及基础产品展示
然后再思考,商品不能只是单独的存在,例如商店搜索可以通过分类查找搜索商品,所以必须与商品分类搭边,商品分类表与商品表是1比多的关系,所以商品表要带上逻辑外键,又因为商品分类表有父id这种分类方式,所以商品表要加上本身的分类以及父id分类。然后一款相同的商品有不同的大小 款式,例如鞋子有36码也有37码,避免商品表过于冗余,创建一个商品属性表,商品表与商品属性表是1:多的关系,所以商品属性表需要加上商品表的逻辑外键。商品属性id,商品id(外键),商品属性名字,属性上传时间,商品属性具体值。
2026-02-06 16:32:00
643
原创 easymall---管理后端商品属性管理
摘要:本文设计了一个商品属性管理系统,包含数据库表设计和业务实现。数据库表sysproductProperty包含property_id(主键)、cover_type(标识是否含图片)、category_id(所属分类)、p_category_id(父分类ID,优化查询)、property_name(属性名)和property_sort(排序字段)。实现层通过判断property_id是否存在来决定新增或更新操作,新增时自动生成10位随机ID并设置排序值。图片采用本地存储方式,仅保存路径而非图片数据。系统通
2026-02-04 15:55:34
346
原创 easymall----管理后端分类展示
这部分需要细讲,要如图展示需要人为对类进行改造,要给sysCategory类加上List<sysCategory> children属性,便于树形展示 convertLine2Tree对查找到的所有数据进行递归 将子分类加入到children中。"categoryName": "手机通讯","categoryName": "电脑办公","categoryName": "数码影音","categoryName": "家用电器","categoryName": "数码家电","info": "请求成功",
2026-02-04 15:15:54
744
原创 application.yml或者yaml文件不显示绿色问题
查看springboot的这个包是否引入 可以多尝试几次mvn clean install -U命令。我添加了application.yml 这个可加可不加 主要检查是否存在*.yaml以及*.yml。2.检查file-setting-file type中的yaml文件识别。3.打开project struct。1.pom.xml文件引包问题。将resource点亮为如图。直到在maven侧边拦看见。最后就识别到绿叶子啦。
2026-02-03 14:32:07
161
原创 easychat项目复盘---管理端
思路:获取最新版本,保存新版本的版本号一定要高于往期的所有版本,将所有版本倒序搜索集合成list,再取开头第一个即为最新版本,如何判断大小呢,如图,一般的版本号都是1.0.0 1.0.1 只要把.去掉那就是100 101 那么101大于100 则1.0.1大于1.0.0 下述有两个if 是分别为更新(有id)与创建(无id)的版本判断。throw new BusinessException("当前版本必须大于历史版本");随后创建插入,id为自增长主键,若有文件则处理文件路径,保存文件。
2025-12-30 16:52:39
678
原创 easychat项目复盘---管理端之用户与群组
发送消息告诉此用户他已经被下线,在send2USER中不仅发送了这条消息,而且还判断了消息类型(强制下线消息),如果是强制下线消息,则将此用户的id踢出频道,即断开与服务器的websocket链接,实现客户端与服务端的主动式断联,forceoffLine方法仅仅是编写了消息。思路:删除群组其实不难,就是将群组状态改为解散状态即可,但是难就难在你要向所有群组里的人播报消息,并且要在contact表中将关系给删除(逻辑删除),接下来分段讲解。此段就是删除群组的代码,比较简单不再赘述(逻辑删除)
2025-12-26 14:02:41
802
原创 easychat项目复盘----聊天部分发送信息上传文件下载文件
但创建群组的消息除外,因为创建群组的消息可能是系统消息,不需要加昵称。对于某些类型的消息(聊天、创建群组、添加好友、媒体聊天),需要生成或更新会话,并保存消息到数据库。最后一句话有发送的信息,群组的创建,好友的添加等均要显示,群组的最后一句话需要用户id:消息内容的形式(为代码中的枚举类 CHAT GROUP_CREATE等)会话需要会话id,会话id要避免重复,除了使用uuid,可以使用两个用户的用户id拼接,保证会话id唯一 ,群组的会话id则使用uuid。如果是群聊,则直接使用群ID作为会话ID。
2025-12-23 14:40:39
663
原创 easychat项目复盘---聊天部分netty篇
再次回归到事件循环组,事件循环组会不断循环解决io问题,如果事件循环组没有结束,idlestatehandler会一直接收到消息,一但idlestatehandler接受不到则代表事件循环组已经结束,意味着客户端与服务器断开,则需要一个处理器去关闭通道,所以handlerheartbeat应运而生。事件循环组的含义就是无限循环去不断的处理io事件,不断循环就达到了实时的目的,因为他永不停歇,只要一发送信息就会处理,另一方就可以接受到信息。// 对http协议的支持,使用http的编码器,解码器。
2025-12-21 17:21:15
535
原创 easychat项目复盘---获取联系人列表,联系人详细,删除拉黑联系人
解释:写法不唯一,如果前端不传入contactType时,就需要后端自己分类,会比较耗费时间,所以前端传入contactType是最优解(前端展示是区分的,即上述图片两个区域分别调用了loadContact方法 但是传入的contactType分别为用户与群组,所以就不需要而外再区分用户与群组的方法)思路:删除联系人不只有直接删除,还有拉黑的状态,所以需要传入删除的类型,所以需要当前用户id,对象,和删除类型。实现层思路:主要是要修改两次user_contact表 因为互为好友 实现简单不贴代码。
2025-12-10 17:16:02
596
原创 easychat项目复盘---搜索,申请,获取好友申请列表,处理好友申请
思路:判断对象id是否存在 操作类型是否为枚举类中的几种 若为同意修改user_contact表 插入两条记录(因为互为好友) 若为拒绝则此请求直接作废不做任何处理 若为拉黑修改user_contact表 插入两条(拉黑与被拉黑) 处理user_contact_apply 把此记录改成已处理。思路:前端传参:需要申请人信息(当前用户) 对象(被申请人或群组) 当前两人的状态 申请信息(可有可无)思路:当前用户id,对象id,操作类型(同意,拉黑,拒绝)思路:前端参数:当前用户与被搜索人(群组)
2025-12-09 21:22:23
943
原创 easychat---创建,获取,获取详细,退群,解散,添加与移除群组
思路:群主不可以退群(前端群组不可能退群只有解散群主,避免不法分子调接口),退群为当前用户行为,所以需要当前用户信息,以及群id,用来删除contact表中的关系,这部分需要物理删除,直接在数据库中删除此记录,页面session需要显示人数,所以要人数减去退群人数,本功能依旧需要涉及信息所以只提供代码片段。思路:创建群组需要知道谁创的,群的id,群的名字,群的加入方式,群的头像,群的公告 这些就是我们需要的参数,有部分是可以不传的。//创建者不能退出群聊,只能解散群。//将自己添加为联系人。
2025-12-04 17:11:01
658
原创 一句话一视频智能体---langchain框架代码实现以及低代码平台总结
大部分代码可以通过ai进行生成,如安全验证,video_maker_tool此工具,以及manim代码的使用与生成,作为调用ai的人员,主要工作是构思系统以及选用工具,不只有manim库可以达到这种效果,moviepy也可以,但是trea使用moviepy会有bug所以这里不做选用,调用大模型要锻炼自身对prompt的编写,不提供prompt也是这个原因。return "未找到生成的视频文件""""工具函数:根据脚本生成manim动画代码并渲染成视频。# 将 \\n 转换为 \n,将 \\" 转换为 "
2025-12-04 14:15:43
803
原创 easypan项目复盘---外部分享
sessionWebDto.getFileId就是我的测试为根目录 现在开始递归 进入checkFilePid 验证神这个文件夹是否在我的测试里面 虽然网页前端进入神这个文件夹想要查看屏幕截图 就再次调用此方法验证屏幕截图的根目录是不是我的测试 可以理解一下 这段代码算比较复杂的代码。例如现在有一个文件结构如下:tPXRa2PKfl(我的测试) ← fLQQyJ7vrS(神) ← 6TDu1l30NX(屏幕截图)备注:难以理解 作用为防止别人越权查看未分享的文件 逻辑复杂 这里简单讲解。
2025-10-13 10:37:08
906
原创 easypan项目实战---回收站,还原,彻底删除
实现层:findAllSubFolderFileList作用是找出文件夹下的子文件夹 这段代码我个人理解是先找出所有文件夹将他们变回使用中 再找出所有的文件 最后检查重命名 但是这一段代码中包含对根目录的查询 我个人是不太理解这一段代码的 但是ai给出的结果是这段代码必不可少(注释带有查询所有根目录的文件) 感兴趣可以思考下为什么。//查询所有所选文件 将目录下的所有删除的文件给你更新为使用中。//删除所有选文件,子目录中的文件。//找到所选文件子目录文件ID。//查询所有根目录的文件。
2025-10-11 13:31:25
612
原创 easypan项目复盘----文件删除
解惑:我个人觉得这段代码相当别扭 findAllSubFolderFileList方法是用来递归查找子文件夹 但是传入的时候也传入了普通文件id 导致delFilePidList里面有文件夹 子文件夹 以及普通第一次选的文件 虽然使用mapper时候文件id不影响 功能正常 但是就是觉得相当别扭 觉得可以优化的朋友可以自己尝试优化下代码。//将选中文件更新为回收站。
2025-10-10 10:41:07
453
原创 easypan项目复盘---文件下载链接生成与文件下载
if (request.getHeader("User-Agent").toLowerCase().indexOf("msie") > 0) {//IE浏览器。
2025-10-10 09:50:54
904
原创 easypan项目复盘---文件重命名移动文件
实现层:整体思路就是找出要移动到的目录中有的文件 以及选择要移动的文件 然后对比是否同名 同名则重命名 不同名直接移动 整体逻辑实现不难 看代码可以明白。获取可移动目录: 十分简单 要注意的就是setExcludeFileIdArray 若自己为文件夹 把自己排除出可移动目录中 防止将自己移动进自己里。throw new BusinessException("此目录下已经存在同名文件,请修改名称");throw new BusinessException("文件不存在");//将所选文件重命名。
2025-10-09 15:21:59
687
原创 easypan项目复盘---创建目录获取目录路径
思路:如果只传最外层的文件夹id 想要获取其中的文件信息 只能递归 所以这里选择传递所有文件夹id(这里仅用于 。throw new BusinessException("此目录下已经存在同名文件,请修改名称");思想:一般需要用户id 文件夹名 以及父类id 因为可能会在文件夹中创建文件夹。实现层: 非常简单的逻辑不做赘述。
2025-10-09 09:40:41
511
原创 easypan项目复盘---文件预览
文件读取视频一般先读文件id(index.m3u8)获取时间秒数 接着读每一个视频的分片 所以对于视频而言读取逻辑不一样 当不带ts时 需要找到index.m3u8读取 当带ts时要读取各个分片 当读取的是图片或者ppt时候 直接读取对于的文件路径即可。文件预览主要两步 告诉浏览器这是图片故imageSuffix到response.setHeader为固定不变的 第二部就为读取文件即readFile。log.error("IO异常", e);log.error("读取文件异常", e);
2025-10-09 09:10:22
2035
原创 easypan项目复盘---文件列表,秒传,分片上传,文件合并
实现层:总体思路就是处理第一片分片(处理秒传) 处理中间分片(提示用户正在上传种) 然后处理最后一片分片(提示用户上传成功以及写入数据库) 再处理最后一片分片前 将所有的上传的分片放入临时的目录中。log.error("文件转码失败,文件id:{},userId:{}",fileId,webUserDto.getUserId(),e);log.error("合并分片失败", e);log.error("合并分片失败", e);log.error("文件上传失败",e);//更新用户使用空间。
2025-10-06 11:32:46
815
原创 easypan项目复盘----找回密码上传头像获取信息等
分析:头像文件为MultipartFile 其中逻辑为先创建文件夹 然后再创建头像的文件即targetFile 其中avatar.transferTo()是将文件保存到指定路径 将webUserInfo.setAvatar(null)是为了让网页强制重新获取头像。controller层: 一般找回密码需要账号 重设的密码 以及验证码 此处还加入了session是因为本项目用户信息存入了session中 checkcode为图形验证码 为了防止机器人恶意侵入 最后使用finally移除了邮箱验证码。
2025-10-03 15:47:01
1006
原创 easypan项目复盘----参数校验&登录校验
此文章参数校验部分仅供学习 因为可以使用validated进行参数校验 对于具体项目没有非常具体的帮助 登录校验前面的文章有这里不做赘述。throw new BusinessException("系统运行异常");log.error("全局拦截器异常", e);log.error("全局拦截器异常", e);log.error("全局拦截器异常", e);log.error("校验参数失败", e);log.error("校验参数失败", e);// * 校验管理员。
2025-10-03 12:57:33
824
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅