自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 个人博客系统项目测试报告

当在学习一项技能的时候,我们总会习惯通过博客来记录所学的知识点,方便后期遗忘时随时查看和快速复习。

2023-03-23 20:41:04 1700 1

原创 Spring事务与事务传播机制

Spring 事务传播机制定义了多个包含了事务的⽅法,相互调用时,事务是如何在这些⽅法间进⾏传递的。1.同类中:无事务方法 嵌套 事务方法 ,事务不生效,因spring 中事务基于代理实现。详细原理请见4.5.22.同类中:REQUIRES 嵌套 REQUIRES_NEW ,REQUIRES_NEW不生效,加入到REQUIRES事务中,原理同上。

2022-11-26 20:39:33 1018

原创 MyBatis入门基础

MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏ 乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置 和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的 记录。简单来说 MyBatis 是更简单完成程序和数据库交互的⼯具,也就是更简单的操作和读取数据库⼯具。

2022-11-17 22:16:30 2225

原创 请求转发与请求重定向的区别

请求转发(Forward):发生在服务端程序内部,当服务器端收到一个客户端的请求之后,会先将请求,转发给目标地址,再将目标地址返回的结果转发给客户端。而客户端对于这一切毫无感知的,这就好比,张三(客户端)找李四(服务器端)借钱,而李四没钱,于是李四又去王五那借钱,并把钱借给了张三,整个过程中张三只借了一次款,剩下的事情都是李四完成的,这就是请求转发。

2022-11-10 21:59:06 647

原创 SpringMVC入门

官方的解释是:Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它 的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“Spring MVC”。从上述定义我们可以得出两个关键信息:1. Spring MVC 是⼀个 Web 框架。2. Spring MVC 是基于 Servlet API 构建的。

2022-11-07 23:16:48 636

原创 Spring Boot日志

1.获得日志对象注意:日志对象Logger 属于org.slf4j包下的,不要导错包2.使用日志对象打印日志@Service//1.获得日志对象//2.自定义打印日志log.trace("trace 日志");log.debug("debug 日志");log.info("info 日志");log.warn("warn 日志");log.error("error 日志");}}

2022-10-30 17:38:09 2553

原创 Spring Boot配置文件相关

1.roperties 是以 key=value 的形式配置的键值类型的配置⽂件,而 yml 使用的是类似 json 格式的 树形配置⽅式进⾏配置的,yml 层级之间使⽤换行缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂ 冒号加空格的⽅式设置,并且空格不可省略。2.properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的 解决数据冗余的问题。

2022-10-28 19:55:19 514

原创 Spring入门基础

我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞 ⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的 应⽤程序开发起来更简单。而Spring的本质其实就是是包含了众多⼯具⽅法的IoC 容器。这里我们有两个关键字,一个是IoC,另一个则是容器。1.2 什么是容器容器是⽤来容纳某种物品的(基本)装置。比如我们Java中常用的List/Map就是一种数据存储容器。

2022-10-22 22:07:31 810 2

原创 Cookie 和 Session 工作流程

cookie/session机制就是为了。

2022-10-15 23:54:37 540

原创 JVM基础知识

本文只是针对面试中比较常见的有关JVM的问题做出补充(俗称八股文),同时帮助大家对JVM建立一个感性的认识。所以并不会对JVM有过多的深入解析,因为有关这块知识在实际运用中很少会被用到。但是大家如果对JVM感兴趣可以自行去阅读《深入理解Java虚拟机》这本书。在我们程序运行的过程中,很多时候都会去申请内存,比如创建变量,new对象,加载类等等。而申请内存的时机一般是明确的,但是由于内存空间是有限的,假如申请内存后迟迟不释放就会造成内存泄漏的后果。

2022-10-05 22:38:09 914

原创 Linux的基本使用

可以和远程的主机建立网络连接, 从而对主机进行一些操作.常见的终端软件: XShell Putty MobaXTerm Iterm2 SecureCRT。

2022-10-02 11:04:22 1334

原创 CSS常见选择器

层叠样式表 (Cascading Style Sheets).CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结 构分离.在之前我们只学习了HTML的时候 ,想要美化网页其实是一件比较困难的事情,但是在我们学习了CSS后,我们就将打开新世界的大门。所谓选择器就是选中页面中的元素,方便我们进行后续的修改。

2022-09-12 23:08:52 433

原创 HTTP协议解析

我们已经学过 TCP/IP , 已经知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程 [ IP+Port ]可是,仅仅把数据从A点传送到B点就完了吗?很明显,对于传输过来的数据,我们还需要对其进行加工处理或者使用。这就好比,在淘宝上买了一部手机,卖家[ 客户端 ]把手机通过顺丰[ 传送+路径选择 ] 送到买家 [ 服务器 ] 手里就完了吗?当然不是,买家还要使用这款产品,还要在使用之后,给卖家打分评论。所以,我们把数据从A端传送到B端, TCP/IP 解决的是传输的功能,

2022-09-11 20:13:39 1795

原创 HTML常见标签用法

type(必须有), 取值种类很多多, button, checkbox, text, file, image, password, radio 等.自定义列表[重要] dl (总标签) dt (小标题) dd (围绕标题来说明) 上面有个小标题, 下面有几个围绕 着标题来展开的.target: 打开方式. 默认是 _self. 如果是 _blank 则用新的标签页打开.border 表示边框. 1 表示有边框(数字越大, 边框越粗), “” 表示没边框.

2022-09-07 23:00:54 2121

原创 从输入URL到展示出页面这个过程发生了什么

看到标题应该就知道我们这篇文章要讲什么了,这其实是一道很经典的面试题,所以特地拿出一篇文章讲解,但由于本人水平有限且该题目为开放性题目,所以答案不唯一且可能有所疏漏。

2022-08-15 12:08:50 390

原创 数据链路层重点协议

每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记 (当前是否是最后一个小包,是的话置为1,否则置为0);以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节, 要在后面补填充位;最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于 数据链路层的MTU)。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;,长度是48位,是在网卡出厂时固化的(但是现在已经可以支持修改了);...

2022-08-14 22:13:09 795

原创 IP 协议的相关特性

在内部本地地址转换的时候,在地址池中选择一个空闲的,没有正在被使用的地址,来进行转换,一般选择的是在地址池定义中排在前面的地址,当数据传输或者访问完成时就会放回地址池中,以供内部本地的其他主机使用,但是,如果这个地址正在被使用的时候,是不能被另外的主机拿来进行地址转换的。本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输), 对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通 信。(用于拆包合包时的身份标识,同一个包的标识是一致的)...

2022-08-14 16:32:26 861

原创 TCP网络协议

MSL是TCP报文的最大生存时间,因此TIME_WAIT持续存在2MSL的话 就能。

2022-08-12 20:54:40 3168

原创 浅谈自定义应用层协议与UDP的报文结构和注意事项

在我们的应用层中,不乏有许多现成的协议如HTTP或者DNS等等。但在实际工作中,为了满足我们的各种需求,仍然需要我们自定义应用层协议。那么什么是协议呢?通俗地讲就是一种约定,规定了客户端和服务器以什么样的格式来传输数据。...

2022-08-08 21:16:39 948

原创 Java网络编程

建立连接、关闭连接的耗时:短连接每次请求、响应都需要建立连接,关闭连接;相对来说建立连接,关闭连接也是要耗时 的,长连接效率更高。2.客户端(client)/服务器(sever):客户端指主动发送网络数据的一方,服务器指被动接收网络数据的一方(处理客户端需求)不管是客户端还是服务端Socket,都是双方建立连接以后,保存的对端信息,及用来与对方收发数据的。长连接:不关闭连接,一直保持连接状态,双方不停的收发数据,即是长连接。也就是说,长连接可以。短连接:每次接收到数据并返回响应后,都关闭连接,即是短连接。.

2022-08-08 14:18:12 465

原创 网络通信中的基本概念

由于这里不是重点,所以简单让大家了解一下就好。网络的发展可以用以下一句话来概括:单机->局域网->广域网->无线互联网局域网LAN 局域网,即 Local Area Network,简称LAN。Local 即标识了局域网是本地,局部组建的一种私有网络。比特就业课 局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下, 是无法通信的。(1)局域网最初通过网线来直连,但是一旦机器多起来之后会每条机器之间都需要连接一条网线,所以很难管理且非常混乱,很快就被舍弃了。...

2022-08-04 22:28:09 551

原创 Java文件操作

我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时, 往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。文件除了有数据内容之外,还有一部分信息,例如文件名、文件类型、文件大小等并不作为文件的数据 而存在,我们把这部分信息可以视为文件的元信息。Java 中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意,有 File 对象,并不 代表真实存在该文件。..

2022-08-03 22:52:21 480

原创 Java多线程——死锁的成因与解决

死锁是指两个或者两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造的一种阻塞的现象,若无外力作用,他们都将无法推进下去。. 假设有 N 个线程尝试获取 M 把锁, 就可以针对 M 把锁进行编号 (1, 2, 3...M). N 个线程尝试获取锁的时候, 都按照固定的按编号。即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。当然预防出现死锁的方法不止一种,我们只是讲了一种比较简单易懂的方法。的进程称为死锁进程。即当资源请求者在请求其他的资源的同时保持对原有资源的占有。.

2022-08-02 20:33:47 2441

原创 HashMap、HashTable和ConcurrentHashMap之间的区别

HashMap线程不安全.key允许为nullHashtable线程安全.使用synchronized锁Hashtable对象,效率较低.key不允许为null.ConcurrentHashMap线程安全.使用synchronized锁每个链表头结点,锁冲突概率低,充分利用CAS机制.优化了扩容方式.key不允许为null。...

2022-08-02 15:12:57 316

原创 java多线程基础——Callable接口及线程池补充

他的参数列表我已经放在上面,我们逐个来讲这些参数代表什么。corePoolSize核心线程数maximumPoolSize最大线程数其中。

2022-08-01 22:34:45 1970

原创 java常见锁策略与CAS

ABA的问题假设存在两个线程t1和t2.。有一个共享变量num,初始值为A.接下来,线程t1想使用CAS把num值改成Z,那么就需要先读取num的值,记录到oldNum变量中。使用CAS判定当前num的值是否为A,如果为A,就修改成Z....

2022-08-01 18:19:03 500

原创 java多线程基础——定时器与线程池

同时我们需要一个线程,通过这个线程来扫描定时器内部任务,执行其中时间到了的任务。这里我们在。

2022-07-31 19:53:00 981

原创 java多线程基础——阻塞式队列

比如我们看这张图,A负责从网络上获取数据传输给B,网络上有大量的数据,但由于A不负责数据处理所以影响不大,但是B要负责数据处理,A不断将海量数据传输给B,而B负责数据处理,计算压力非常大。擀饺子皮的人不关心包饺子的人是谁(能包就行,无论是手工包,借助工具,还是机器包),包饺子的人也不关心擀饺子皮的人是谁(有饺子皮就行,无论是用擀面杖擀的,还是拿罐头瓶擀,还是直接从超市买的)此时即使A依然在传输海量数据,但是多出来的压力由阻塞队列分担了,B就可以根据自己的频率来处理数据,这样就。...

2022-07-28 18:42:33 512

原创 java多线程——单例模式

单例模式能保证某个类在程序中只存在唯一一份实例,而不会创建出多个实例.这一点在很多场景上都需要。比如JDBC中的DataSource实例就只需要一个。

2022-07-28 15:29:13 2278

原创 java线程安全问题的解决

类锁修饰方法和代码块的效果和对象锁是一样的,因为类锁只是一个抽象出来的概念,只是为了区别静态方法的特点,因为静态方法是所有对象实例共用的,所以对应着synchronized修饰的静态方法的锁也是唯一的,所以抽象出来个类锁。针对每一把锁,操作系统内部都维护了一个等待队列.当这个锁被某个线程占有的时候,其他线程尝试进行加锁,就加不上了,就会阻塞等待,一直等到之前的线程解锁之后,由操作系统唤醒一个新的线程,再来获取到这个锁.这是由于内存可见性引发的线程安全问题导致的。...

2022-07-27 22:32:15 267

原创 java线程状态与线程安全问题

我们把一段代码想象成一个房间,每个线程就是要进入这个房间的人。如果没有任何机制保证,A进入房间之后,还没有出来;B是不是也可以进入房间,打断A在房间里的隐私。这个就是不具备原子性的。...

2022-07-24 19:08:18 519 1

原创 java多线程——Thread类基本用法

本文主要用于总结多线程中Thread类的基本用法,不会涉及太多知识点,若想翻看更多有关多线程的知识点可看往期有关多线程的文章java多线程基础(中)_invictusQAQ的博客-CSDN博客。

2022-07-23 21:00:54 2331

原创 java多线程基础(中)

例如张三和李四跑步,旁边有一个裁判帮忙计时,假如他们三个人是三个进程,我们不加以处理让cpu自行调度,就很可能会出现张三和李四刚跑了一段距离而此时cpu开始执行裁判这个线程,裁判此时结束计时。我们可以这样理解,假如1个人做一个工作需要两个月,那两个人做1个月就能完成吗?很明显不能,因为人与人之间的交流合作也是有时间成本的,线程之间同样,所以并不能让效率之间成倍增加,但也极大提高是效率。,这种有着明确执行顺序的线程,自然不能让调度器自行调度,而需要一个线程等待另一个线程完成自己任务后才能开始执行自己的工作。.

2022-07-22 18:30:08 221

原创 java多线程基础(上)

在讲解进程之前,我们需要对操作系统有一个初步的认识,因为操作系统本质上就是一个管理软件,比如内存管理,文件管理和我们今天要讲的进程管理。首先我们需要对计算机系统的分层有一个基本认识由上层到下层我们可以看到逐渐向硬件靠拢,而我们的软件也就是通过这样一层层的调用通过操作系统最终实现与硬件的交互。由此我们也可以总结出1.对下管理各种硬件设备2.对上给各种软件提供稳定的运行环境操作系统对进程的管理我们可以简单理解为以下两个部分1.先描述//以下代码是Java代码的伪码形式,重在说明,无法直接运行。...

2022-07-20 19:49:14 164

原创 MySQL基础——数据库索引与事务

一下。

2022-07-16 20:08:35 223

原创 MySQL基础——新增与进阶查询

目录1.新增2.查询插入查询结果语法:比如通过这种操作我们就能够直接将查询的数据插入到表中,省去了一点点插入的麻烦。 灵活使用聚合函数可以帮助我们轻松完成数据统计,常见聚合函数如下:我们简单看一下他的用法: 2.1.2 GROUP BY子句案例:准备测试表及数据:职员表,有id(主键)、name(姓名)、role(角色)、salary(薪水) 2.1.3 HAVING比如之前的例子:当然HAVING和WHERE是可以同时使用的2.2

2022-07-13 22:13:27 719

原创 MySQL基础——数据库约束与表的设计

目录1.数据库约束2.表的设计思想我们先看到约束的语法:1.4 PRIMARY KEY:主键约束PRIMARY KEY:主键约束 ,其实就是UNIQUE和NOT NULL的结合。被约束的列称为主键,一般我们会对id这种唯一且不为空的类型做出约束。 比如这样子使用auto_increment后即使我们后面不插入id它也会进行自增。外键用于关联其他表的主键或唯一键,语法:其中我们把约束表称为主表,被约束表称为副表。而副表在插入时只有在主表中有相同的对应数据才能插入成功。比如一个学生对应

2022-07-12 22:19:07 329

原创 MySQL基础——增删查改(基础)

目录1.前言2.铺垫3.正片 经过前面一段时间数据结构基础的学习,现在我们终于来到了MySQL的学习。我们先简单介绍一下什么是数据库。数据库大体可以分为关系型数据库和非关系型数据库 。而本次我们要学习的MySQL属于是关系型数据库。 这里我们简单了解一下他们的关系即可,没有太多要求。 在正式进入我们增删查改的操作之前,我们先了解一下数据库的基本结构。 我们可以看到我们每个数据库之间是相对独立的,并且每个数据库之间又有若干个数据表。所以我们接下来我们看到有关数据库的一些基本操作: 之后我们看

2022-07-11 20:06:27 7307 2

原创 基础数据结构——哈希表

目录1.哈希表的概念2.哈希表设计思想与原理3.代码实现 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键 码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( ),搜索的效率取决于搜索过程中 元素的比较次数。但显然这样子的效率还不足以满足我们在大数据的情况下的增删查改操作。 那我们能否去实现一种增删查改均是O(1)的数据结构呢?于是哈希表便诞生了。此时我们可以根据哈希函数得到下图的哈希表:用该方法进行搜索不必进行多次关键码的比较,

2022-07-04 23:21:49 248

原创 基础数据结构——二叉搜索树

目录1.二叉搜索树的概念2.基本功能实现3.完整代码及性能分析二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树具体我们可以看到下图就是一棵二叉搜索树 同时我们也可以注意到按照中序遍历的方法去遍历一棵二叉搜索树他的结果一定是有序的。由上述性质我们可以知道二叉树的左节点一定小于当前根节点,右节点一定大于当前根节点。所以我们可以得到以下查找的方法。由以上操作我们可以得到下面的代码:2.2 插入 在插入同时我们也需要满足二叉搜索树的基本性质,同时我们也不允许存在重复元素。 2

2022-07-04 11:42:12 382

空空如也

空空如也

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

TA关注的人

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