自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis--#{}和${}

{}:预编译SQL。${}: 即时SQL。当用户发送一条SQL语句给服务器后,大致流程如下:1.解析SQL语句的语法和语义,校验SQL语句是否正确。2.优化SQL语句,制定执行计划。3.编译SQL语句。4.执行SQL并返回结果。一个SQL如果是上述流程,我们称之为。

2025-04-01 18:50:35 333

原创 Spring日志简介

1.日志是程序中的重要组成部分,使用日志可以快速的发现和定位问题,SpringBoot的日志框架默认情况下使用的是将info级别及以上的日志信息进行打印,我们可以使用lombok提供的@SLf4j注解和log对象快速的打印自定应日志。2.日志包含6个级别,日志级别越高,收到的日志信息越少,我们可以通过配置日志的保存名称或者保存目录来将日志持久化。

2025-03-26 12:50:06 756

原创 DI--详解

DI译为“依赖注入”,依赖注入是一个过程,是指在IoC容器创建Bean时,去提供运行时所依赖的资源。而资源就是对象,在之前的介绍中,我使用了@Autowired来完成依赖的注入。简单来说,就是把对象取出来放到某个类的属性中。关于依赖注入,Spring提供了三种方式:1.属性注入(Field Injection)2.构造方法注入(Constructor Injection)3.Setter注入(Setter Injection)分别来看。

2025-03-21 15:36:40 728

原创 Spring IoC &DI入门

IoC是Spring的核心思想,其实IoC我们已经使用过了,在类上添加@Rest Controller和@Controller注解,就是将这个对象交给Spring管理,Spring框架启动时就会加载该类,把对象交给Spring处理,就是IoC思想。概念:IoC (Inversion of Control) 即控制反转,是⾯向对象编程中的⼀种设计原则。主要是通过第三⽅IoC容器,对Bean对象进⾏统⼀管理,及组织对象之间的依赖关系。获得依赖对象的过程,由原本程序⾃⼰控。

2025-03-20 21:41:44 778

原创 应用分层简介

应用分层是一种软件开发设计思想,它将应用程序分为多个层次,每个层次各司其职,多个层次之间协同提供完整的功能,根据项目的复杂程度,将项目分为三层或者更多层。常见的MCV设计模式,就是应用分层的一种具体体现。

2025-03-18 21:52:47 915

原创 Spring Web MVC入门

首先,MVC是一种架构设计模式,也是一种思想,而SpringMVC是对MVC思想的具体实现,除此之外,SpringMVC还是一个Web框架。总的来说,SpringMVC就是一个实现MVC模式的Web框架。而MVC可以用一张图表示其中Controller:负责接收用户请求,选择处理模型,选择视图。View:界面排版布局,展示模型数据。Model:处理业务逻辑,处理数据。

2025-03-15 19:57:33 608

原创 网络原理--JVM简介

在计算机导论中,编程语言可以分为:1.编译型的语言。2.解释型的语言。按照这种划分,Java可以认为是“半编译,半解释”的语言,最初Java这么设计,是为了跨平台。想c++这样的语言是直接生成二进制的机器指令,不同cpu,上面支持的指令不一样,而且不同系统上的可执行文件格式也不同。而Java不想重新编译,而是期望能够直接执行。先通过javac 把 .java文件==》.class文件,.class文件是字节码文件,包含的就是Java字节码,java自己搞的一套“cpu指令”。

2025-03-05 20:38:09 958 1

原创 网络原理--HTTPS的加密过程简介

HTTPS是在HTTP的基础上,引入了一个加密层(SSL),而HTTP是明文传输的(不安全)。当下见到的大部分网页都是HTTPS的,这其实都是拜“运营商劫持”所赐。关于加密,没有100%安全的加密方式,但是如果解密成本大于了要保护的数据本身的价值,这在很大程度上就是安全的。密码学中的几个概念:1.明文:要传输的真实的数据,要表达的实际的意思。2.密文:针对明文加密后得到的结果,往往是不直观的,不易理解的。明文==》密文 :加密密文==》明文: 解密解密的工具称为“

2025-03-04 13:24:02 830 1

原创 网络原理--HTTP协议

从图中可以看出到现在已经发展出了HTTP3,但是市面上的主流还是以HTTP1.0为主。HTTP2.0和3.0都引入了很多新的特性,比如:提高传输效率,提高传输的安全性。而且在HTTP3.0以前,HTTP都是基于TCP实现的,而HTTP3.0则是基于UDP实现的。

2025-03-03 15:08:59 981

原创 网络原理--IP协议简介

IPV6是从根源上解决了IP地址不够使用的难题,IPV6使用16个字节来表示IP地址,总数为2的128次方。但是由于IPV6的报头和IPV4是不兼容的,而且升级也不会提升网速,所以使用的人比较少。

2025-02-27 22:24:17 810

原创 网络原理--TCP的特性

TCP报文的结构:TCP的报头前20字节是固定长度,也可以通过“选项”来增加。

2025-02-25 17:27:17 1163 2

原创 网络原理--UDP的特点

总的来说:1.无连接,2.面向数据报,3.全双工,4.有接受缓存,无发送缓存。5.不可靠传输。

2025-02-24 20:47:55 406

原创 网络原理--常见的请求和响应的格式

类似于html,也是一种标签语言,标签成对出现。例如:<request></request>其中: <userId>称为开始标签,</userId>称为结束标签。开始标签和结束标签中夹着的就是标签的值。标签可以嵌套。现在有大量的库可以帮我们解析处理xml格式的文件。优点:可读性和扩展性都提升了很多,标签的名字也可以帮助我们识别数据,后续添加新的属性也方便。缺点:数据冗余信息太多,在网络传输中会消耗过多的网络带宽。

2025-02-24 14:58:17 190

原创 网络初始2:网络编程--基于UDP和TCP实现回显器

在通过网络传输信息时,会有两个进程,接收端和发送端。:数据的发送方进程,即网络通信中的源主机。数据的接收方进程,即网路通信中的目的主机。

2025-02-17 20:13:15 893

原创 计算机网络初识

IP地址是计算机网络中用来唯一标记设备的标识,包括路由器,计算机等。分为: 32位地址,通常表示为四个十进制数(如192.168.1.1)。: 128位地址,通常表示为八组十六进制数(如2001:0db8:85a3:0000:0000:8a2e:0370:7334)。

2025-02-11 15:12:26 554

原创 HashTable, HashMap, ConcurrentHashMap 之间的区别

只是将关键方法加上了锁(synchronized关键字)。缺点:1.如果多线程访问同一个HashTable就回直接造成锁冲突。2.HashTable的size属性也是通过 synchronized来控制同步的,效率比较低。3.在扩容时会涉及大量的拷贝,效率十分低。4.key值不允许为null。总结:一个HashTable只有一个锁,两个线程访问HashTable中的任意数据都会出现锁竞争。

2025-01-25 23:16:10 301

原创 文件与IO流:一

版本2:可以先创建一个空的byte字符数组,当执行完成后字符数组中便传入了文件的内容(ASCII,可以使用char进行强转)。版本3:在版本2的基础上增加了开始位置off和读入的字符长度len。为了避免浪费过多的文件描述符表中的位置,每次使用后需要使用t1.close(),为了方便,可以使用try(nputStream t1 = new FileInputStream("文件路径")){这样在执行完{}里的内容后,IDEA会自动调动t1.close()。

2025-01-14 22:15:38 735

原创 JAVA--JUC

实现Thread的方法:1.继承Thread2.实现Runnable3.基于lambda4.基于Callable5.基于线程池。

2024-10-30 21:32:29 541

原创 JAVA多线程--CAS补充

CAS在使用时,关键要点是判定当前内存的值是否和寄存器中的值一样,是一样的,就进行修改,不一样就啥都不做。但是可能存在这种情况:执行CAS之前,一个数值本来是0,一个线程把0改为100,然后又把100改为0,把“0”看作“A”,把“100”看作“B”,这就是ABA问题。一般来说,这种情况不会有什么问题,但是极端情况下,可能会有bug。

2024-10-30 16:13:18 188

原创 JAVA多线程进阶--锁策略与synchronized原理,CAS

简单来说就是加锁过程中,在遇到冲突时不同的处理方式。

2024-10-29 22:21:21 576

原创 多线程案例---线程池

RejectedExecutionHandler handler :最重要的参数,处理当任务队列已经满了,如果继续添加,线程池会调用handler的“拒绝策略”,Java内部有四种“拒绝策略”,第一种:AbortPolicy是直接抛出异常,不仅新的任务不执行,原有的任务也不执行,第二种:CallerRunsPolicy是调用者负责执行;线程是轻量级的进程,创建销毁开销很小,如果线程的创建和销毁的频率进一步提高,此时线程的创建销毁的开销也会很大。而通过系统申请创建线程,就是需要内核来完成的,是不太可控的。

2024-10-28 20:42:15 871

原创 JAVA多线程代码案例----实现定时器

在java标准库中,也有定时器的实现。Timer,Timer的schedule有两个参数,第一个是要执行的代码,第二个是等待时间。程序会在3秒后打印Test,一般代码是不会主动结束的,需要用cancle方法主动结束。

2024-10-15 09:00:00 167 1

原创 多线程案例二 ------阻塞队列

在普通队列先进先出的基础上做了扩展:1)线程安全的。2)具有阻塞的特性:a.如果针对一个已经满了的队列进行入队列,此时入队列操作就会阻塞,一直阻塞到队列有空位。b.如果针对一个已经空了的队列进行出队列,此时出队操作就会阻塞,一直阻塞到队列不空之后。

2024-10-13 17:49:17 1157

原创 多线程代码案例一

介绍:单例模式是一种设计模式。单例=单个实例(对象),某个类,在一个进程中,只应该创建一个实例,使用单例模式,就可以对代码进行更严格的校验和检查。唯一的对象如何保证:首先,人一般是不可靠的,所以要通过机器来对代码中指定的类创建的实例个数进行校验,如果发现个数多了,就直接编译报错这种。实现单例模式的方式有很多种,这里介绍两种最基础的实现方式:1)饿汉模式2)懒汉模式1.饿汉模式。

2024-10-12 21:12:13 601

原创 JAVA多线程(第三期)

A拥有1等2,B拥有2等1........当前由于是同一个线程,此时锁对象就知道了第二次加锁的线程就是持有锁的线程,第二次操作,就可以直接放行通过,不会出现阻塞,这个特性称为“可重入”。由于加了两次锁,使用计数器为2,第一次解锁计数器-1,但不为0,仍然不会解锁线程,第二次解锁时计数器为0,这时才是真正的解锁了。指定加锁顺序,针对五把锁,都进行编号,约定每个线程获取锁时,一定要先获取编号小的锁,后获取编号大的锁。线程1获取锁1,线程2获取锁2,接下来,线程1尝试获取锁2,线程2尝试获取锁1,就会僵持。

2024-10-11 22:18:39 1032

原创 JAVA多线程(第二期)

Thread类使用start方法启动一个线程,但对于一个线程,只能调用一次start方法,否则会发生异常。

2024-10-10 20:25:18 1133

原创 JAVA多线程(第一期)

1.创建一个线程,继承Thread,由于Thread是java.lang里的,所以不用导包。然后重写run方法,然后根据创建的类,创建一个对象,然后调用start方法,只有调用start方法,jvm才会创建线程。setDaemon(true/false),设置线程的前/后台,设置为ture时为后台线程,false时为前台,要在线程启动前设置(t.start() );由于线程只执行一秒,所以在sleep两秒后,t5的isAlive()为false,start()执行前为false,执行后一秒内为true。

2024-10-08 19:44:25 489

原创 计算机是怎么组成的

x86: intel armd 家用pcarm:苹果 高通 苹果电脑 智能手机不同架构指令集不同学校学的指令集一般是8086这款cpu,8086是intel一款16位cup,为x86架构但现在的电脑一般是64位,但64位的windows系统可以兼容32位。不同位数,对应的地址大小不同。例如在16位cpu下,结果为2;32位cpu下,结果为4,64位cpu,结果为8.指令集,或者叫做汇编,主要是用来病毒和外挂,以及各种底层操作。

2024-10-07 19:52:41 1152

原创 简单的图书管理系统javase

介于很多人Javase学的比较快,很多知识还没来得及消化,需要练习来巩固和加深。在此背景下,一个具有一定难度,能够较为全面的练习我们学习知识的小项目便应运而生。

2024-08-14 19:37:58 1578

原创 java面向对象基础

定义:一种特殊的方法,用于在创建对象时初始化对象的属性。特点:构造函数与类名相同,没有返回类型(连void也没有)。注意:如果类中没有写构造函数时,默认生成一个无参的构造函数。例如,Animal1和Animal2中都有一个无参的构造函数,但Animal2被写了出来。但若写了构造函数,默认的构造函数便没了System.out.println("这是一个构造函数");此时Animal2中的默认的无参的构造函数便没了。类的构造函数可以用this(......)来调用。

2024-08-05 19:14:32 1683

原创 JAVA的八大基本数据类型

1.int是JAVA整数的默认类型,当我们输入一个整数,在不超出int的范围下,编译器将它默认为int型。2.short范围小,-32768----32767,默认值为0。但是只占两个字节。3.char使用方法与C语言略有不同,主要就是不再以阿斯克码值为标准,JAVA的char支持中文,占两个字节。4.double与C语言用法相同,但当精确值超出float时,要在后面加个d,未超出加不加都行。5.float与double类似,有时为了区别二者,在末尾加个f。6.long。

2024-07-22 12:55:03 609 1

空空如也

空空如也

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

TA关注的人

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