- 博客(29)
- 收藏
- 关注
原创 实习日记Day92:鼠鼠我啊,挑大梁
第一周,因为这个原有项目的maven私服挂了,导致大部分依赖没办法下下来,只能缺啥发啥,然后也不知道为什么,查了很多资料,做了很多设置,即使有依赖,idea也无法导入,非常非常折磨人。我觉得项目真的是成长的一把利器,像我们业务需要用到activiti流程引擎,我没有接触过,周末的时候我就去B站找了相关视频,把是什么,做什么的,怎么用,基础的了解了一番,然后找时间去看我们项目的源码,同时由于我后面的需求也要调用到相关的接口,早做准备比较好,虽然还不熟练,但是至少是写到了一些知识。
2024-06-19 16:43:20 301
原创 数据迁移技术方案调研——datax
考虑到现有的业务需求,我们需要对数据进行筛选之后再进行迁移。单纯的数据库备份方案可能无法完全符合我们的业务场景,所以考虑使用ETL中间件。ETL中间件有几个好处,不需要单独部署,可以与springboot做整合。支持复杂的查询语句做数据筛选。导入数据时可以做个性化的定制,比如数据冲突时替换原有数据。性能也很好。且支持压缩,可以减少数据文件的大小。
2024-04-30 14:37:48 698
原创 实习日记Day36
我现在已经开始接新的系统的需求了嘛,分给了我一个简单的功能,我差不多很快就写完了,组里的哥跟我说了一些技术点上的设想,因为也涉及到人工智能模型的一些东西,所以他说自己也在摸索中,要是我有空的话可以尝试一下。这周主要的收获之一就是完成了一次SQL调优,我实际上的mentor给我派了个需求,这个需求需要调用到项目中的一个服务,我就去看了一下那个服务怎么写的,好家伙,for循环里面写SQL查询,虽然项目里面有连接池,但是也禁不住你这么查。从刚开始来这,到现在,我基本上已经接了八九个需求,写了十来个接口。
2024-04-24 19:16:05 340
原创 实习日记Day23——业务小白理解业务瑟瑟发抖
对于我来说,其实增删改查的接口在学校已经写的很多了,其实也就一些工具类的使用或者某些框架使用上的不同。难的还是怎么去理解这个业务场景,组内的哥给我讲业务我还是需要时间反应的,一时间会懵一下,不过循序渐进吧,只要有成长,就有意义。
2024-04-09 10:34:56 298
原创 实习日记Day10
这周正式开始上手代码,还是有很多收获和感悟的。第二就是,因为之前在学校做项目,其实面向的用户有限,也不会真正地商用,所以在安全框架上面的使用一直都是我非常薄弱的领域,基本上项目的安全框架就是自己写了一个基础的校验逻辑,其实非常不够用,也非常小儿科,接下来可能就是要补齐一下这方面的知识体系,轻量级的可以用Sa-Token,我现在这个公司用的是shiro。第四就是关于json串的知识,我清楚且深刻地意识到,这个东西我会用,但是我不知道他底层的东西,所以在我传给前端一个数字之后,没有显示出来,我还不知道为什么。
2024-03-29 13:53:05 271
原创 实习日记Day03——初来乍到,我该何去何从
这是一家专注于考试业务的公司,在考试这个领域,已经做的很好了。今天第三天,我看nodejs实在是有些看不下去了,既然mentor忙,我就厚着脸皮去找组内的另外一个老大哥(他本来是其中一个实习生的mentor,但是后面这个实习生被分配去别的组了),我抓住机会就是找他说想要跟他聊聊,他也很慷慨地愿意跟我讲解整个组内的业务。因为mentor带着组内在开发新的系统,所以非常忙,前两天只是叫我看些nodejs,其实我很排斥,因为我学的是整个JAVA技术栈,面试的时候也面的JAVA,进来之后却告诉我要用nodejs。
2024-03-20 21:40:30 331
原创 select,poll,epoll的区别对比
前面写过关于IO阻塞,非阻塞,多路复用的文章,感觉还是挺好理解的,可以往前去翻。今天主要是记录一下IO多路复用的情况下,select,poll,epoll的区别对比。前置知识:文件描述符(File Descriptor)是操作系统中用来标识一个打开文件的整数值。在Unix-like系统中,包括Linux,文件、网络连接、管道等都被视为文件,而文件描述符就用于唯一标识这些文件。(相当于学生的学号,一个学号定位到一个学生)
2024-03-04 19:05:37 381 1
原创 序列化与反序列化方案的对比和实现
最近写一个分布式定时任务框架,里面需要对Java对象进行序列化,在技术选型上,写下这篇文章来进行思考和比对。GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。基础用法如下。
2024-03-04 18:48:29 1525
原创 两种将String源码转换成java可运行对象(String转class/类)
接下来将这个clazz进行实例化获得Object对象,之后通过反射调用方法就好。第二种,使用JavaStringCompiler类。第一种,使用GroovyClassLoader。
2024-02-08 14:44:51 633
原创 分布式session的解决方案
简单来说,当你与服务器建立一次会话的时候,服务器会生成32位的JSESSIONID,把JSESSIONID作为key放在cookie里面,下次访问服务器的时候,只要你带上cookie,服务器就能够根据cookie里面的JSESSIONID找到相对应的session。session是服务器用来存储部分数据信息(一般可以存储用户信息),保存在服务器,用户不容易获取,安全性高,储存的数据量相对大,存储在服务器,会占用一些服务器资源。简单来说,把session存到redis里面,把cookie种到父级域名。
2023-12-11 23:39:13 103 1
原创 SpringBoot3.6整合knife4j V4.0(代码简洁+注释版本)
3.官网的教程就是这样,但是打开localhost:8080/dot.html发现404错误,还需要下面的一个配置类。先起步,让接口文档能跑起来,你再去做个性化的配置以及高级功能的使用。ps:注意4.0版本的依赖包换成了下面这个。2.SpringBoot配置文件配置。
2023-12-02 15:58:29 1123 1
原创 SpringBoot项目配置热部署
在开发工程中,通常会对一段业务代码不断地修改测试,在修改之后,往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大降低了程序开发效率。为此,Spring Boot框架专门提供进行热部署的依赖启动器,用于进行项目热部署,而无需开发人员手动启动项目。其实热部署一句话就是:每次写完新的代码之后不需要重启项目,就能让代码生效。以下是高大上的表达,有很多种方案,但是用我这种得了,简单省事。因为自己经常忘记热部署怎么搞,写个文章记录一下。
2023-11-26 23:24:15 148 1
原创 阻塞,非阻塞,多路复用的个人理解
多路复用和阻塞IO其实很相似,因为多路复用也会阻塞。假设每个灶台都有自己的一个key,第一个阶段,你需要等在那里,看看每个灶台都需要做什么,把对应的事件和key绑定在一起,然后返回(上图的select阶段,是阻塞的)。阻塞IO,在单线程的情况下,就相当于从第一个灶台开始,如果你的任务是等水开,那你就会傻站在哪里,一直等到水开之后,才开始下一步行动。在非阻塞IO下,你不需要等待水开,你可以去做其他事情,但是你需要每搁一小段时间就去看一下水开了没,一直跑一直跑,这样的缺点就是对CPU的占用率非常高。
2023-11-19 15:39:44 46 1
原创 vue导入组件时有无大括号的区别(使用setup语法糖)
/不能这么写{myIndex},不然会报错:export 'myIndex' (imported as 'myIndex') was not found in './components/myIndex.vue'原因是export default将整个vue文件当成一个整体导出,但是你加上大括号,就相当于要导入vue文件中的其中一部分组件,当然就会报错。使用setup语法糖时,定义组件不需要手动导出,setup默认帮我们export default.
2023-11-18 22:29:29 199 1
原创 netty的——channel
Channel是一个通道,可以通过它读取和写入数据,它就像是水管一样,网络数据通过 Channel 进行读取和写入。通道和流的不同之处在与通道是双向的,流只是在一个方向上移动(一个流必须是 InputStream 或者 OutputStram 的子类),而且通道上可以用于读,写或者同事用于读写。因为 Channel 是全双工的,所以它可以比流更好的映射底层操作系统的 API。
2023-11-14 21:13:24 48 1
原创 netty的——file和files
一句话总结:file在java.io包内,files在java.nio包内,files提供了更多的静态函数来执行文件操作,比如将字符串写入文件,功能更加强大。它可以用于创建、删除、重命名文件或目录,以及获取文件属性等。类提供了更现代、功能更强大的路径操作,包括复制、移动、删除文件或目录,以及读写文件内容等。类是 Java NIO 中提供的一个实用工具类,用于执行文件和目录操作。// 3. 检查文件是否存在。// 5. 检查是否为目录。// 1. 创建新文件。// 4. 创建目录。
2023-11-14 21:00:53 116 1
原创 netty的——byteBuffer
在Java nio中,主要有三大组件:Buffer,Channel和Selector。Buffer提供了一个字节缓冲区,其可以不断的从Channel中读取接收到的数据。将缓冲区中未读取的数据复制到缓冲区的开始位置,然后将位置设置为复制数据的末尾。(注意这个方法,读过的数据会被清除,如果要反复读取,参考rewind方法)包装一个现有的字节数组,创建一个新的字节缓冲区。将缓冲区的字节读取到给定的字节数组中。将字节写入缓冲区的当前位置。读取缓冲区的当前位置的字节。切换缓冲区的读取/写入模式。分配新的字节缓冲区。
2023-11-13 17:59:18 76
原创 LCR括号生成 递归解法中的递归是如何调用的?(关于递归的一些思考)
当第三层最左边的结点下面的递归全部执行结束,执行结束会发生什么?执行结束,就会出现如下图左1右1的这种情况,能够列举出所有的可能性(其实我觉得递归很暴力,就是一层一层罗列出可能性之后往下再解决,希望我的思考对你有所帮助!其实只要记住一句话:同层递归罗列所有可能性 (树的同一层的节点),参考下面这张图。代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且。你思考的时候不要跟着代码一步一步往下走,你要跳出来,看同一层。你不要跟着代码一步一步往下去递归,你要思考的是。递归解法(java)
2023-11-12 18:43:59 47 1
原创 25届学习打卡
之前听过一个论调,我觉得对于我非常适用,就是坚持这件事情一定不能让你觉得痛苦,不然你一定走不长久,所以我给自己定下的目标是一天一题到两题,偶尔想偷懒了也至少刷一题,有时候上进心起来了一天能刷五六七八道。所以即使这学期课非常多,也在马不停蹄地学那些技术栈(但是Java技术栈的东西也太太多了吧,哭)现在都有些迷茫,不过没关系,努力之后就交给天意,共勉!从大二暑假决定就业开始,就坚持每天刷力扣,每天一题或者两题,不知不觉到现在已经坚持了128天,刚好因为今天学习学的有些沮丧,就写一遍日志鼓励一下自己。
2023-10-11 19:10:13 65 1
原创 用mybatis-plus插件生成代码报错找不到bean的解决办法总结
4.最后这个是我的问题,看教学视频的时候跟着那老师导了个mybatis的依赖,然后后面想要用mybatis-plus,以为把pom文件的依赖删除了就行,没想到啊没想到,maven没有帮我把jar删掉,两个冲突了一直报错,所以哥们姐,清楚缓冲,一整个大成功的动作。2.代码生成器生成的实体类不会带上@Mapper注解,自己加,或者是在启动类加@MapperScan。(二选一就行,@Mapper每个实体类上面都得标,所以怕麻烦直接就@MapperScan)意思是找不到bean,然后就开始排查代码。
2023-09-23 17:49:24 3209 1
原创 力扣638:大礼包的思考
其实这道题,晕乎的点在于你能否搞清楚每一步递归都在做什么,其实就是一个一个试,比如有三个礼包,分别为[0,1,2],递归做的事情无非就是,先看下0,如果OK,那就再次递归,形成一个组合。
2023-09-21 20:06:14 70
原创 List.add可能出现的错误
在存入路径的时候我使用了以下的错误代码,这样导致result存的都只是sum所对应对象的引用,用这样的代码,不管你操作多少次result.add(sum);,最后你会发现,result里面的每一个list都是一样的数据。可能导致只要改变了List中的某个元素,列表中其它元素的内容都会跟着一起被改变的异常了。List类的add()方法每次加入的都是对存放在堆中对象的引用地址。113. 路径总和 II。
2023-07-05 23:09:40 405 1
原创 关于为什么不能通过分别求root结点左右子树的高度来判断二叉树是否平衡(自用笔记)
建议对二叉树做先序遍历,从底至顶返回子树最大高度,若判定某子树不是平衡树则 “剪枝” ,直接向上返回。如果要按照类似的思维去解决问题,就要每个结点都求左右子树高度,非常冗杂,以上这个二叉树并不平衡,但是左右子树高度都是3.的左右两个子树的高度差的绝对值不超过 1。平衡二叉树的概念:一个二叉树。
2023-07-02 23:00:56 64 1
原创 Java用LinkedList模拟栈和队列,实测超有用,经常用
2.建议不要使用new Stack(),因为Stack继承了Vector,而Vector因为效率问题已经被不被使用。//定义栈 LinkedList stack = new LinkedList();1.不能直接new Queue(),因为Queue只是一个接口,不能够直接实例化。//获取栈顶元素,不弹出 stack.peek()//加入元素 stack.push(1)//弹出元素 stack.pop()
2023-06-27 21:09:51 226
原创 算法笔记:KMP算法 next数组的多种形态与对应代码
对于KMP算法,核心部分作个不恰当的比喻,有一组人想要在一群人里面做比较,如果这一组人里面有双胞胎(或者更多胞胎),当双胞胎哥哥跟一群人中的某个人比较之后,发现长的不像,那双胞胎弟弟自然就不需要再比较了,直接下一个人。在next数组的计算呢,如果不包含当前字符,我们知道 j = next[j],那包含当前字符,j=next[j-1],(思考了一下,若包含当前字符,j = next[j]-1为什么不可以,因为当NEXT[J]为0或者1的时候,会出现奇怪的逻辑判断。关键问题在于,首先,首位初始化为0还是-1;
2023-06-20 21:32:18 164 1
原创 2023最新下载pytorch踩的坑,已经成功安装啦
有uu一直anaconda下载pytorch一直卡在solve environment的朋友吗,有的话留言以下吧,我给大家出个文章。
2023-04-13 22:12:49 147 1
原创 2023最新解决在pycharm上使用opencv / cv2 没有代码提示的问题
2023最新解决在pycharm上使用opencv / cv2 没有代码提示的问题
2023-04-13 22:09:47 1049 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人