- 博客(94)
- 收藏
- 关注
原创 字符串常量池、泛型、包装类
概念:包装类就是基本数据类型对应的类类型Java中有8种基本数据类型形式:除了 Integer 和 Character ,其余基本类型的包装类都是首字母大写基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean。
2025-02-18 14:09:31
697
原创 链表(单/双向 不带头 非循环)
概念:逻辑上连续,物理上不连续,由一个个结点组成的数据结构链表分类:共有八种,单向or双向,带头的or不带头,循环or非循环排列组合单向 / 双向带头的 / 不带头的循环 / 非循环重点需要关注的两种链表单向 + 不带头 + 非循环:做题常用双向 + 不带头 + 非循环:LinkedList底层是这个。
2024-12-23 16:09:58
338
1
原创 顺序表+ArrayList
概念:n个具有相同特性的数据元素的有限序列常见的线性表:顺序表、链表、栈、队列…二叉树是棵树,不是线性表线性表的结构逻辑结构:在逻辑上是线性结构,在物理结构(内存)上并不一定是连续的对于顺序表来说,逻辑上和物理上都是连续的,其底层是数组对于链表来说,逻辑上是连续的,物理上则是不连续的存储形式:线性表在物理上存储时,通常以数组和链式结构的形式存储概念:用一段物理地址连续的存储单元依次存储数据元素的线性结构,是个数据结构实现方式:一般采用数组存储,链表也能实现优缺点优点。
2024-11-10 17:13:36
822
原创 栈(Stack)和队列(Deque、Queue)
栈的特点:只允许在固定的一端进行插入和删除元素操作,且是先进后出的Java中如何使用栈Stack<类型> stack = new Stack<>();上述方法用得越来越少了,现在多用【ArrayDequeue】代替栈是如何实现的关于模拟实现栈:可以用数组/链表,Java中的Stack底层是用数组实现的用数组实现:看下面用链表实现队列特点:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,且是先进先出Java中如何使用队列Deque 双端队列Queue 队列。
2024-11-09 12:51:13
797
原创 反射、枚举和lambda表达式
概念:正常情况下,我们的类是封装起来的,外人除非创建对象,否则无法访问到。但是反射可以让我们知道这个类的所有属性方法以及对于任意一个对象,都能调用它的任意方法和属性是一种特性,和数据结构没有关系概念:枚举是在 JDK1.5以后引入,可以帮我们组织常量优缺点优点枚举常量更简单安全,避免把其他的常量值认为是枚举类型枚举里面有内置方法,使用起来更规范美观枚举可以避免反射和序列化问题,因为其能创造出的实例只有一个,所以使用单例模式的时候是安全的缺点。
2024-11-02 14:07:29
749
原创 博客系统(SpringBoot项目)
写mapper时就需要对功能进行梳理了,看我们的需求需要哪一些数据库操作关于查询用户信息:根据用户名查询用户信息,比对密码是否正确为什么不建议通过用户名和密码同时去查:我们不建议让密码通过数据库的查询,而且密码可能会经过加密之类的处理,出现了SQL注入的情况也不太好处理可以通过单元测试来判断代码有无错误@Mapper@Mapper前端代码后端代码Controller层@Autowiredreturn res;Service层@Service@Autowired。
2024-11-01 00:18:03
1233
原创 Git基本使用
分支的作用:当出现一个需求/任务时,创建一个分支,由分支去完成,等完成后把分支合并到master主分支上master分支:里面存的是最新一次提交的commit的id关于HEAD:HEAD可以指向分支,被HEAD指向的分支,是我们当前的工作的分支(决定了commit操作会被提交到那个分支上)
2024-10-07 20:31:19
1109
2
原创 哈希表(HashMap、HashSet)
是个存储结构:可以让我们一次从表中直接拿到想要的元素,时间复杂度为O(1)为什么能实现O(1):通过哈希(散列)方法,使元素的存储位置和它的关键码之间建立一一映射的关系如果想要存取元素,都是利用哈希(散列)方法 + 关键码,从而计算出index位置,然后进行操作(怎么放的就怎么给它取出来哈希函数示例:此时写着容量是1000,但实际上是2次幂数,容量为1024。
2024-09-28 15:23:18
2852
1
原创 数据结构(Map、Set、搜索树)
概念优势:查找元素时可以直接砍去一半的值,达到 log(N)示例:此时如果要找4,因为4比6小,所以要去6的左边找,此时因为4比3大,所以要去3的右树找,最终找到了如果找到了就返回,如果直到全部找完遇到null了也没找到,说明该搜索树下根本就没有该元素有序问题:二叉搜索树的中序遍历是有序的概念:Map和Set是专门用来进行搜索的容器或数据结构Set是纯key模型,Map是 Key-Value 模型Set最大的功能就是对集合中的元素进行去重接口实例化。
2024-09-27 16:12:34
995
原创 优先级队列(堆)
什么是优先级队列:队列是一种先进先出(FIFO)的数据结构,但如果操作的数据带有优先级并且我们需要处理优先级更高的队列,此时光用【队列】不太合适,故而我们引入了【优先级队列(PriorityQueue)】如何实现优先级队列:JDK1.8中的PriorityQueue底层使用了堆这种数据结构来模拟优先级队列概念:堆实际就是在完全二叉树的基础上进行了一些调整 + 以顺序存储(数组)的方式存储二叉树。
2024-09-24 12:45:25
469
1
原创 二叉树(链式存储)
(1)树是一种非线性的数据结构。(1)判断 root 和 subRoot 是不是两棵相同的树:isSameTree(root,subRoot)(3)判断root左树的子树是不是subRoot:isSubtree(root.right,subRoot)(2)判断root左树的子树是不是subRoot:isSubtree(root.left,subRoot):若一个结点含有子结点,则这个结点称为其子结点的父结点。:以某结点为根的子树中任一结点都称为该结点的子孙。:一个结点含有的子树的根结点称为该结点的子结点。
2024-09-22 15:37:18
1571
1
原创 Linux常见命令学习
Linux是什么:是个操作系统,使用量很高当前市面上常见的操作系统Windows:图形化界面,方便上手Linux:一般通过命令行操作,不适合日常使用,但十分适合开发Mac OS:苹果电脑上常用AndroidIOS世界第一大操作系统:使用量很高,但用户方面感知不太明显服务器领域:大部分服务器用的都是Linux系统,也有小部分是Windows Server嵌入式设备:内置了简易计算机的设备。
2024-09-16 16:50:15
1149
2
原创 Linux部署Servlet代码
启动了Tomcat后,直接输入【公网IP:端口号】是无法被直接访问的。因为云服务器上部署的服务器程序,要想被外界访问,需要先开放端口。不要打开所有的端口,需要用什么就去打开什么。:去控制台的安全组/防火墙上手动添加规则。本地可以正常运行,但部署后无法访问。为什么要开放端口,才能被外界访问。yum list | 软件包名。apt search 软件包名。Windows上下载好压缩包。把压缩包传到Linux。yml、apt是什么。Ubuntu如何换源。
2024-09-16 16:48:18
918
原创 SpringBoot 图书管理系统(删除、强制登录、更新图书)
因为我们使用下面的方式发请求,参数是在查询字符串上。且后端设置的接口是List,默认接收是用数组(如果使用的是数组,可以不加该注解),所以要使用@RequestParam。为什么都使用逻辑删除了,还要使用存档表。物理删除+存档 或 逻辑删除+存档。我们要避免字符串直接出现在代码中。优化tip ---->使用枚举。Getter 和 Setter。Controller 层。delete使用场景。
2024-09-16 16:45:42
669
原创 测试概念概述
什么是开发模型和测试模型:我们要以什么方式去展开我们的测试工作软件的生命周期:指从软件产品的设想到软件不再使用而结束的时间,大致可以分成6个阶段:需求分析、计划、设计、编码、测试、运行维护需求分析:分析需求的可行性,如果可行,产品经理会产出需求文档计划:项目什么时候开发,什么时候结束开发,由谁开发,测试确定开始和结束时间……设计:开发人员需要设计出“软件的架构”,设计人员则需要产出UI设计稿(将文字版的需求文档变成图片的UI设计稿)编码:编写代码测试:测试人员去测试代码运行维护。
2024-09-14 10:23:51
678
原创 了解【软件测试】岗位
什么是软件测试:测试人员去验证某个软件是否符合用户的需求,包括了功能和非功能方面的测试我们怎么知道当前是符合标准的:根据需求判断软件测试的特点:软件测试只是一个样本试验,具有不可穷尽性为什么不可穷尽:比如我们可以对一个软件的功能举例列出很多的测试用例,但我们无法保证把所有的测试用例都写出来什么是软件测试:测试用例可以理解为针对这个功能的情境。如【账号、密码都正确,登录成功】、【账号正确,密码错误,登录失败】、【账号错误、密码错误,登录失败】……为什么要有测试,只有开发人员行不行。
2024-09-14 10:22:52
341
原创 Spring 事务
事务的概念:原子性的且要求同时成功、同时失败的操作,我们可以将其封装为一个事务Spring的事务和数据库的事务是一个概念我们在执行数据库操作时,可能会同时执行多个操作。比如A转账给B,我们需要先给A扣钱,再给B加钱,这两步操作要求【同时失败,同时成功】,如果失败了,需要【执行回滚操作】事务通常是在项目中操作,直接在MySQL上操作的场景是比较少的MySQL的事务实现操作start:开启事务commit:提交事务rollback:回滚事务适用范围。
2024-07-14 22:30:33
804
1
原创 Spring AOP
地位:Spring两大核心之一,另一个是loC什么是AOP:AOP和OOP主要是处理事情的维度不同,都是一种思想,实现方法有很多种AOP:面向切面编程(对某一类特定的问题进行编程)什么是切面:某一类特定问题关于统一功能统一功能处理就是AOP的一个实现,因为拦截器、统一异常等问题就是一个【特定的问题】也因为只是其中一个实现,统一功能的代码并没有用到@Before、@After之类的注解AOP常见的实现方式。
2024-07-05 21:41:39
1268
原创 Spring统一功能
什么是统一功能:大家都要做的事情,每一个接口都要执行这个操作统一功能包含两个部分(1)Spring本身提供的统一功能(2)Spring本身并没有提供某个统一功能,但我们又需要,如何去自定义什么是拦截器:主要用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码。统一功能之一:是Spring提供的统一功能的其中之一,可以公共地对一个信息进行处理作用维度:拦截器的作用维度是URL,像Service代码没有配置我们是拦截不了的使用拦截器后的执行流程请求。
2024-06-26 21:29:18
1092
4
原创 Spring Boot -- 图书管理系统(登录、展示+翻页、添加/修改图书)
下面提供了两种解决方法,由于方法一比较困难,我们采用方法二。:实际开发中,只设置接收参数offset、limit即可,但这里因为后端不处理,就要由前端处理,当前情况下,用前端处理比较麻烦,故而后端来处理。:这个类该Controller层的所有方法都要用,提出来就不需要每个方法反复创建了。:使用一个隐藏的文本框,这样前端把整个表单传给后端时,后端也能收到bookid了。:如果知道要创建list的具体长度,创建时直接写上,这样后面就不需要再扩容了。:可以搞两个线程,一个去获取当前页的内容,一个去获取总记录数。
2024-06-20 10:22:42
1002
原创 Mybatis --- 动态SQL 和数据库连接池
什么是动态SQL:根据需求(),去动态地拼接SQL重要性编写方式的选择:根据个人喜好和企业中的其他人用什么来选择推荐:简单SQL用注解,动态SQL用xml动态SQL,语句会比较复杂,此时使用xml更易读,而且因为本身支持标签,书写还会有提示简单SQL,使用注解会更简单,xml还需要另外写文件(当然,也有例如MybatisGenerator之类的插件可以帮我们去生成)
2024-06-14 09:26:55
1225
原创 Mybatis项目创建 + 规范
是持久层框架:是一个用来操作数据库的持久层框架,基于JDBC开发的,可以简化JDBC的开发(将JDBC共性的东西放在框架里,程序员只要基于框架写个性的内容即可)使用场景:我们一般会使用Mybatis操作关系型数据库关于官网Mybatis官网两个依赖的区分什么是结果映射:Mybatis会自动根据数据库的字段名和Java对象的属性名进行映射名称一致:直接赋值名称不一致从mysql层面进行结果映射不推荐,感觉改变了mysql的命名规范,而且把SQL语句弄得很复杂从Mybatis层面进行结果映射。
2024-06-02 14:02:49
1374
原创 Spring Boot配置文件
使用原理:配置项原本就是由程序员自定义的,像Spring Boot的配置项就是由他们的开发人员自定义然后提供给我们,然后我们都这么用。也因此,我们也可以自定义配置项,然后使用。代码解析原理:@Value注解读取到【demo.key1】中的内容后,Value数据会自动匹配成String类,然后被赋值给key1@Value:可以帮我们去读取配置文件中的内容配置项中的value值:不需要加单双引号,被读取后是可以根据接收的类型自动匹配的,所以哪怕配置项是数字我们也可以直接写$符号。
2024-05-26 16:53:17
1073
1
原创 Spring -- DI
概念:DI(依赖注入)就是当我们把依赖对象取出来(创建好后),赋值给该对象的属性DI的其他翻译:属性装配、依赖装配。
2024-05-21 16:18:22
949
1
原创 Servlet(博客系统)
涉及到了4个页面:博客列表页、博客详情页、登录页、博客编辑页。其中 “博客编辑页” 继承了 “markdown编辑器”第三方库:markdown 编辑器markdown 是程序员常用的写文档的方式,许多的博客平台都是支持该编辑器。又因为编辑器从零手动实现比较麻烦,所以此处直接引入了第三方库:editor.md。原理:通过封装 JDBC 代码,来实现一些基础的数据库操作,方便我们后续直接调用创建 dao 包。
2024-05-21 15:55:11
1003
原创 Spring ----> IOC
loC是什么:控制(控制权)反转,是一种思想,Spring是其一种实现方式(具体表示为DI),下面讲解都以Spring为例子是什么控制权:这取决于实现方式,此处因为管理的是对象,所以控制权指的是【创建和拿出对象的控制权】控制权反转是什么意思:由【谁用谁创建,自给自足】,变为【由Spring帮我们统一创建】此处是BookController需要BookService对象,所以他自己创建了。
2024-05-20 18:56:00
1087
原创 Spring Boot代码案例(计算器、登录、留言板)
需求场景:getter和setter方法太繁琐为了安全性,企业开发上一般不会给属性设置为public,大多是private。所以我们往往要通过getter和setter方法进行属性的获取和设置虽然说这些代码可以由IDEA生成,但代码量还是太多了,看着十分繁琐。且但凡新增或删除一条属性,我们就需要修改getter和setter方法。解决方法:Spring提供了更简单的方式,即使用【Lombok工具包】
2024-05-16 13:43:04
992
原创 创建一个Spring Boot项目
没有用的文件因为我们是按照Spring Boot的模版来创建项目,所以会给我们添加一些实际上没什么用的配置文件,直接删掉即可。.idea:代表了IDEA相关的配置src:代码mainjavacom:放置Java源代码resources:资源目录,主要是配置相关的代码static:主要放置静态文件templates:主要放置模版:Spring Boot 项目的配置文件test:放置了开发人员的测试代码,用来测试某一个文件是否有bug。
2024-05-10 16:57:26
7882
原创 Spring boot环境的常见问题
因为我们这个项目是按照 “Spring Boot的模板” 创建的,所以系统会给我们自带一些Spring Boot的默认配置。这些配置,有的没用,有的有用。下面这个就是没用的,对于这个原则是【尽量下载,如果实在下载不下来,就删掉】(3)Setting 配置里/font>(1)pom.xml 文件。如何查看项目中已导入的包。
2024-05-10 10:04:11
2669
原创 JavaEE概述 + Maven
Java SE:指Java标准版,适用于各行各业,主要是Java基础、语法等等,所以多线程,网络编程之类的都算是JavaSE的内容。Java EE:指Java企业版,主要面向企业开发学习内容:框架、插件、工具、企业规范(一个功能按照企业的规范去实现)四个框架:Spring、Spring Boot、Spring MVC、Mybatis。其中前三个都是Spring 家族的产品。Mybatis则是一个持久层框架,主要用来帮助我们更好地操作数据库。什么是Spring。
2024-05-08 11:20:40
1276
1
原创 Cookie 和 Session
获取到请求中所有Cookie的内容返回值是一个数组,每个元素都是一个Cookie对象Cookie 类方法获取 key获取 value设置 value把 Cookie添加到响应中实际效果是在HTTP响应报文里加一个header名为【Set-Cookie】的键,要存储的Cookie就是里面的value。响应返回到浏览器这里,浏览器就可以保存这个Cookie了。
2024-05-04 00:34:59
1012
原创 Servlet(一些实战小示例)
搜索【JQuery cdn】,把< scriot>整个标签赋值过来即可,如< script src=“https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js”>:、ajax方法会更具输入的参数,构造出http请求并发给服务器、但原生的API比较难用,我们一般使用JQuery封装过后的API。Smart Tomcat为了开发方便,将日志直接显示到了IDEA窗口里,并没有专门生成日志文件。前端加载某个第三方库的方式很简单,直接把库对应的网络地址加进来即可。
2024-05-02 14:34:20
1091
1
原创 Servlet(三个核心API介绍以及错误排查)【二】
实际开发中,利用header的部分较少,更多的时候,我们是希望获取到 query string 或 body 的内容,因为这些内容是自定义的,可以供我们完成服务。方式:HttpServletResponse有获取参数的方法,获取的参数就是我们传过去的这些数据。我们共有四种方式传递数据:a=x传递、Postman传递form表单、Postman传递JSON数据、ajax传递。a=x传递这个是把数据传到query string里。
2024-04-30 00:04:31
1097
原创 Servlet(写一个Hello World)【一】
注意,Servlet 版本和Tomcat版本是有对应关系的,如果不匹配可能会出现问题。:在 pom.xml 里修改,注意重新打出的 war 包也在target目录下。:使用Maven,点package执行打包操作。:因为程序是要放到 Tomcat 上执行的。创建出来的项目,一般会自动生成一些文件夹。:静态页面日渐稀少,目前以动态页面为主。properties 配置的属性。
2024-04-26 22:47:24
1066
1
原创 Tomcat
Tomcat 是一个 Http服务器,里面帮助我们部署了许多网站Tomcat 是Java圈子中广泛使用的 HTTP 服务器(HTTP 服务器有很多种,Nginx是各个领域中最知名的)Tomcat 是一个 webapp 的容器容器是一个很宽泛的概念,叫容器的有很多webapp 是指的是网站(由后端代码 + 前端代码构成),同时一个 Tomcat 服务器上可以部署多个网站Servlet 就是依赖 Tomcat 运行的默认端口:Tomcat 有两个默认端口,一个是8080,一个是8005。
2024-04-23 23:42:45
1477
原创 网络原理(网络层、数据链路层)
由于互联网十分庞大,路由器只知道相邻设备的网络情况,无法像【高德地图】一样,输入目的地和出发地,就能规划出最优方案。所以,数据报在IP协议下是 “问路式” 传输。
2024-04-12 11:26:16
1012
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人