自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 Java集合常见问题(已完结)

当然,get(E element)这种查找,两种集合都需要遍历,时间复杂度都是O(n)。ArrayList增删如果是数组末尾的位置,直接插入或者删除就可以了,但是如果插入中间的位置,就需要把插入位置后的元素都向前或者向后移动,甚至还有可能触发扩容;ArrayList是基于数组的集合,数组的容量是在定义的时候确定的,如果数组满了,再插入,就会数组溢出。注意,这个地方可能会出陷阱,LinkedList更利于增删更多是体现在平均步长上,不是体现在时间复杂度上,二者增删的时间复杂度都是O(n)

2023-09-05 21:10:23 144

原创 计算机网络(持续更新中...)

OSI 七层模型是国际标准化组织(International Organization for Standardization)制定的一个用于计算机或通信系统间互联的标准体系。简单说,OSI 是一个理论上的网络通信模型,TCP/IP 是实际上的网络通信模型,五层结构就是为了介绍网络原理而折中的网络通信模型。计算机网络体系结构,一般有三种:OSI 七层模型、TCP/IP 四层模型、五层结构。对于发送方而言,从上层到下层层层包装,对于接收方而言,从下层到上层,层层解开包装。

2023-08-17 18:55:38 136

原创 MySQl(面试题持续更新中....)

内连接(inner join):取得两张表中满足存在连接匹配关系的记录。外连接(outer join):不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或两张表)中不满足匹配关系的记录。交叉连接(cross join):显示两张表所有记录一一对应,没有匹配关系进行筛选,它是笛卡尔积在 SQL 中的实现,如果 A 表有 m 行,B 表有 n 行,那么 A 和 B 交叉连接的结果就有 m*n 行。笛卡尔积:是数学中的一个概念,例如集合 A={a,b},集合 B={1,2,3},那么 A✖️B=

2023-08-13 18:32:41 133

原创 Java面试(持续更新中....)

需要注意的是,在Java中,&&和||具有短路特性。当&&的左操作数为false时,不会计算右操作数;同样地,当||的左操作数为true时,不会计算右操作数。这可以提高程序的效率。

2023-08-02 21:25:29 169

原创 Linux常用命令

以上是一个基本的部署流程,具体的步骤和命令可能会根据项目的不同而有所调整。确保在部署之前,你已经熟悉了你的项目要求和服务器环境,并根据实际情况进行相应的调整和配置。在Linux上部署项目的整套命令流程可以根据具体的项目和部署需求有所不同。Linux常用命令,处理文件目录,日志查看,授权,文件内容,进程等操作。- 将项目文件打包为压缩文件,如`.zip`或`.tar.gz`。- 安装必要的软件和工具,如Java、Node.js等。- 根据项目需求,修改配置文件,如数据库连接、端口号等。

2023-12-15 21:03:56 275

原创 Axios传值的几种方式

注意:get请求无请求体,可以有body,但是不建议带。使用get方式请求,拼接多个参数在路径中:方式③。使用get方式请求,参数拼接在路径中:方式①。使用get方式请求,参数拼接在路径中:方式②。使用get方式请求,参数值直接放在路径中。get有参请求,post方式不可以这样请求。post有参请求,以json格式请求。使用get方式进行无参请求。

2023-11-19 18:22:47 2895

原创 JavaScript 异步编程

在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。以上是关于异步的概念的解释,接下来我们通俗地解释一下异步:异步就是从主线程发射一个子线程来完成任务。简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。

2023-11-19 16:33:03 145

原创 SpringBoot实现IP地址归属地查询

ip2region: Ip2region (2.0 - xdb) 是一个离线 IP 数据管理框架和定位库,支持亿级别的数据段,10微秒级别的查询性能,提供了许多主流编程语言的 xdb 数据管理引擎的实现。,只有中国的数据绝大部分精确到了城市,其他国家部分数据只能定位到国家,后前的选项全部是 0。格式生成程序会自动去重和压缩部分数据,默认的全部。,随着数据的详细度增加数据库的大小也慢慢增大。文件的查询,单次查询响应时间在十微秒级别。信息/国际统一地域信息编码/邮编等。每个 IP 数据段的。

2023-11-17 00:27:24 247

原创 如何优雅的使用contorller层

原文链接:https://blog.csdn.net/leijie0322/article/details/128027930。

2023-11-16 23:08:12 843

原创 ajax异步传值以及后端接收参数的几种方式

第一种呢,也是最简单的一种,通过get提交方式,将参数在链接中以问号的形式进行传递第二种呢,是将参数体现到链接中,在后台通过占位进行传递。第三种呢,通过post提交方式将form表单中的数据序列化后传递到后台第四种呢,就是Ajax异步传值最常见的在ajax方法体中使用data进行传值后台往前台传值就要简单一些,单个数据或者封装数据可以直接使用return返回json数据给前台,如果是多个数据,可以使用PrintWriter进行传值,具体操作如下。

2023-11-15 20:51:09 3810

原创 Redis快速入门

Redis 是互联网技术领域中使用最广泛的存储中间件,它是RemoteDictionaryService 三个单词中加粗字母的组合。你别说,组合起来后念着挺自然的。Redis 以超高的性能、完美的文档、简洁的源码著称,国内外很多大型互联网公司都在用,比如说阿里、腾讯、GitHub、Stack Overflow 等等。它的版本更新非常的快,功能也越来越强大,最初只是用来作为缓存数据库,现在已经可以用它来实现消息队列了。可以这么说吧,掌握 Redis 已经变成了一项后端工程师必须具备的基础技能。

2023-11-10 17:34:18 420

原创 websocket入门

websocketWebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议。WebSocket有以下特点:是真正的全双工方式,建立连接后客户端与服务器端是完全平等的,可以互相主动请求。而HTTP长连接基于HTTP,是传统的客户端对服务器发起请求的模式。

2023-11-04 21:28:38 548

原创 shiro入门

Apache Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理。Shiro能到底能做些什么呢?

2023-11-04 10:20:48 93

原创 MyBatis入门

Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。再说一下缺点。

2023-11-02 11:52:01 324

原创 RabbitMQ入门

消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。“消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理,他不管。消费者只负责从消息队列中取出数据处理,他不管这是谁发送的数据。

2023-10-30 23:39:19 157

原创 RocketMQ笔记

选择中间件的可以从这些维度来考虑:可靠性,性能,功能,可运维行,可拓展性,社区活跃度。我们的系统是面向用户的C端系统,具有一定的并发量,对性能也有比较高的要求,所以选择了低延迟、吞吐量比较高,可用性比较好的RocketMQ。天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况。优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置。优点:性能好,高吞吐量,稳定可靠,有活跃的中文社区。优点:拥有强大的性能及吞吐量,兼容性很好。

2023-10-30 13:58:22 163

原创 spting Boot常见知识点

1、Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约 定大于配置Spring Boot 可以快速创建独立的 Spring 应用程序。

2023-10-30 08:33:14 97

原创 40 道 Nginx 精选

Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。

2023-10-12 09:08:30 82

原创 Http常见问题

例如 IE 浏览器对 URL 的最大限制是 2000 多个字符,大概 2kb 左右,像 Chrome、Firefox 等浏览器支持的 URL 字符数更多,其中 FireFox 中 URL 的最大长度限制是 65536 个字符,Chrome 则是 8182 个字符。HTTP 中的 GET 方法是通过 URL 传递数据的,但是 URL 本身其实并没有对数据的长度进行限制,真正限制 GET 长度的是浏览器。其中,POST、DELETE、PUT、GET 的含义分别对应我们最熟悉的增、删、改、查。

2023-10-06 13:58:33 353

原创 Mydb数据库问题

TM(Transaction Manager):事务管理器,用于维护事务的状态,并提供接口供其他模块查询某个事务的状态。DM(Data Manager):数据管理器,直接管理数据库 DB 文件和日志文件。它负责分页管理 DB 文件,并进行缓存。它还管理日志文件,保证在发生错误时可以根据日志进行恢复。DM 将 DB 文件抽象为 DataItem,供上层模块使用,并提供缓存。VM(Version Manager):版本管理器,基于两段锁协议实现了调度序列的可串行化,并实现了 MVCC 以消除读写阻塞。

2023-10-04 23:04:56 1957

原创 MySQL优化、锁、总结常见问题

事务在从数据库中取数据时,会将该数据的版本也取出来(v1),当事务对数据变动完毕想要将其更新到表中时,会将之前取出的版本 v1 与数据中最新的版本 v2 相对比,如果 v1=v2,那么说明在数据变动期间,没有其他事务对数据进行修改,此时,就允许事务对表中的数据进行修改,并且修改时 version 会加 1,以此来表明数据已被变动。增加冗余字段可以减少大量的连表查询,因为多张表的连表查询性能很低,所有可以适当的增加冗余字段,以减少多张表的关联查询,这是以空间换时间的优化策略。乐观锁认为数据的变动不会太频繁。

2023-10-04 11:15:50 212

原创 MySQL索引看这篇就够了

注意:最左前缀原则、最左匹配原则、最左前缀匹配原则这三个都是一个概念。最左匹配原则:在 InnoDB 的联合索引中,查询的时候只有匹配了前一个/左边的值之后,才能匹配下一个。根据最左匹配原则,我们创建了一个组合索引,如 (a1,a2,a3),相当于创建了(a1)、(a1,a2)和 (a1,a2,a3) 三个索引。为什么不从最左开始查,就无法匹配呢?比如有一个 user 表,我们给 name 和 age 建立了一个组合索引。注意:最左前缀原则、最左匹配原则、最左前缀匹配原则这三个都是一个概念。

2023-09-27 00:08:23 166

原创 MySQl事务

事务 A、B 交替执行,事务 A 读取到事务 B 未提交的数据,这就是脏读。在一个事务范围内,两个相同的查询,读取同一条记录,却返回了不同的数据,这就是不可重复读。事务 A 查询一个范围的结果集,另一个并发事务 B 往这个范围中插入 / 删除了数据,并静悄悄地提交,然后事务 A 再次查询相同的范围,两次读取得到的结果集不一样了,这就是幻读。

2023-09-25 22:33:05 87

原创 JAVA并发(持续更新)

要说线程,必须得先说说进程。进程:进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。线程:线程是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。操作系统在分配资源时是把资源分配给进程的, 但是 CPU 资源比较特殊,它是被分配到线程的,因为真正要占用CPU运行的是线程,所以也说线程是 CPU分配的基本单位。比如在Java中,当我们启动 main 函数其实就启动了一个JVM进程,而 main 函数在的线程就是这个进程中的一个线程,也称主线程。

2023-09-15 21:17:01 64

原创 Stream流

【代码】Stream流。

2023-09-13 22:09:35 40

原创 用数组实现栈、队列、动态数组

【代码】用数组实现栈、队列、动态数组。

2023-09-01 14:25:39 44

原创 关于异常的相关问题

UnChecked异常:运行时异常,运行之后才可能能抛出的异常为什么要自定义异常:Java已经预见了很多异常,每个异常都用一个类来表示。但是如果java提供的异常类不能满足你的需要时,你可以自己定义异常,来满足 你的需要。项目开发中,通常因业务的需要自定义相应的异常,自定义异常使得异常信息更 精准。自定义异常步骤:第一步:自定义编译时异常继承Exception,自定义运行时异常继承 RuntimeException第二步:通过构造函数将异常描述信息传递给异常父类第三步:使用throw抛出异常对象。

2023-08-30 22:04:31 59

原创 Java初始化过程学不会你打我

Sub a =6 ,b =9 然后加载到子类 ,执行super(a,b)到父类 执行父类中打印 a和b 1,2 ,执行this.a 把6,9接受,打印a,b 就是 6,9 执行完,返回子类执行 打印,此时 a= 11,b =22。首先到父类加载静态变量a = 1,静态代码块b = 3,然后执行静态变量b =2,然后到测试类 new Sub a=6,b=9 这会到sub中,加载Sbu的构造 a =6,b =9 ,执行下一条语句super(a,b)super.a和b 这会是6,9。

2023-08-29 20:14:58 39

原创 双指针(详细解释)

一般双指针类型的题目主要存在于数组,字符串,链表居多。常用在数组遍历中,我们使用两个指针进行操作,遍历完整个数组来实现我们的目的。一般能用双指针算法解决的问题,都可以用暴力解法解决,常用于单调场景。双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。严格的来说,双指针只能说是是算法中的一种技巧。1、注意双指针的初始位置。2、注意双指针的移动方法。二、双指针算法的适用范围。3、注意遍历的结束条件。

2023-08-29 08:57:09 141

原创 快速排序、希尔排序、归并排序(详细解释)

是一种分而治之的思想,把需要排序的序列划分成小的序列,再层层划分直至每个序列只有一个数字为止,而在每次划分中至少能确定一个数字,即基准数的位置,最终完成排序,以下排序均是从小到大进行排序。

2023-08-23 19:05:18 198

原创 Git使用(1小时彻底掌握 Git)

git使用

2023-08-16 14:01:37 37

原创 递归(详细总结)

递归通常用于解决分治问题,即将一个大问题分解为若干个相同类型的小问题,然后逐个解决这些小问题,最后将结果合并得到大问题的解。分析: n的阶乘可以等价于n * (n-1)!等价于n * (n-1) * (n-2)!等价于n * (n-1) * (n-2) * (n-3)!递归情况(Recursive Case):这是函数继续调用自身的条件,通常会将问题规模缩小,然后继续调用自身来解决子问题。基本情况(Base Case):这是递归终止的条件,当问题规模缩小到一定程度时,可以直接得出结果,不再需要继续递归。

2023-08-14 19:01:13 155

原创 斐波那契数列

【代码】斐波那契数列。

2023-08-11 22:54:37 33

原创 mysql(一对一,一对多,多对多)

一对一、一对多、多对多

2023-08-10 21:04:09 185

原创 杨辉三角(多种写法)

编写一个程序,生成一个给定行数的杨辉三角11 11 2 11 3 3 11 4 6 4 1创建数组通过观察, 一个杨辉三角其实就是每行列数不同的二维数组,且第i行的列数其实就是i,据此我们可以先构建一个列数不同的杨辉三角。

2023-08-10 16:25:20 26

原创 冒泡排序、选择排序、插入排序(详细过程)

冒泡排序是一种基于比较和交换操作的排序算法。每轮冒泡的过程都是从第一个元素开始,将该元素和相邻下一个元素进行比较和交换,使得较大的元素向右移动(如果该元素大于下一个元素,则两个元素交换;如果该元素小于等于下一个元素,则保持不变)。这样一来,每轮冒泡的过程都可以确定一个元素放在正确的位置上,而这个元素就是剩余元素中最大的元素,正确的位置就是剩余位置中的最右侧的位置。这个过程就像是气泡上浮一样,所以叫做冒泡排序。

2023-08-08 12:00:15 181

原创 Java 断点调试

2023-08-02 21:02:02 46

原创 正负数的原码、反码、补码

正负数的原码、反码、补码区别

2023-08-01 20:26:03 4380 4

原创 JDK、JRE、JVM之间的关系

在JRE目录里有bin和lib两个文件夹,可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM,即java虚拟机,是java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

2023-07-31 19:58:41 216 1

原创 MySQL(作业5)

-4. 成 绩 表 score(student_id,course_id,score) student_id:学生编号,course_id:课程编号;--3. 教 师 表 teacher(teacher_id,teacher_name) teacher_id:教师编号;--2.课程表 course(course_id,course_name,teacher_id)查询所有同学的编号、学生姓名、选课总数、所有课程的总成绩。号的同学学习的课程总数完全相同的其他同学的信息。课程成绩高的学生的信息及课程分数。

2023-07-31 19:33:59 44 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除