自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码加锁执行

【代码】代码加锁执行。

2024-05-28 14:12:37 225 1

原创 Spring 注解收集

标注在类上,代替类中所有的@Autowired 声明的变量必须被final修饰,基于构造方法为属性赋值,容器通过调用类的构造方法将其依赖注入。

2024-05-28 09:50:40 431

原创 三次握手四次挥手

三次握手是客户端为了与服务端建立连接而产生的三次报文交换初始时服务器处于LISTEN(收听)状态。倘若此时有一个客户端想要与服务器建立连接第一次:由客户端发送连接请求报文。其中包括同步位SYN=1,初始序号seq=x。TCP规定SYN报文不能携带数据,但是要消耗掉一个序号。此时客户端进入到SYN-SENT(同步已发送)状态。第二次:服务器收到客户端发送的连接请求后向客户端发送连接确认报文。其中包括同步位SYN=1,确认标记ACK=1,序号位seq=y,确认号ack=x+1。这个报文也不能携带数据,

2021-04-12 17:57:10 182 1

原创 适配器模式-设计模式

4、适配器模式结构型模式,作为两个不兼容的接口之间的桥梁将一个类的接口转化为客户希望的另一个接口,使得原本由于接口不兼容而不能再一起工作的那些类可以一起工作。解决将一些“现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的。缺点:过多的使用适配器,会让系统非常凌乱,明明看到调用的是A接口,其实内部被适配成了B接口的实现package com.yunyanchengyu.demo03;//mp3接口类public interface MediaPlayer {

2021-04-02 19:40:23 134

原创 接口

接口是一种规范接口中定义的方法只能是public,默认就是public接口中的所有方法不能有方法体接口是为了弥补单继承的缺陷接口中可以定义成员变量,但是定义的同时就需赋值,且此成员变量会被认为是静态常亮,在其他地方不能更改。想到了再补充吧hhh...

2021-04-02 16:46:18 179

原创 原形模式-设计模式

3、原形模式听名字就知道,原形模式是提供一个模板,供其他实例进行参考(拷贝)被拷贝的对象需要实现java.lang.Cloneable接口,然后重写Object类中的方法。这时候你要是认真的话你就会想了,尼玛,实现Cloneable接口,却去重写Object中的方法,有没有搞错?hhh,其实Cloneable是一个“标记接口”这个接口中没有任何内容,只是赋予了实现这个接口的类一个标志。只有实现这个接口的类才能重写Object类中的clone方法。否则会抛出异常。在了解原形模式之前我们先了解一

2021-04-02 16:27:16 131

原创 单例模式-设计模式

2、单例模式创建型模式。这种模式只涉及到一个单一的类,这个类只负责创建自己的对象,并且保证有且只有一个对象。提供访问其唯一对象的方法,可以直接访问且不需要实例化类的对象单例模式的核心是私有化构造函数总结一句话就是,类自闭了,自己实例化自己的一个全局对象。优点:内存中只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例避免对资源的多重占用缺点:过于自闭,外部因素无法影响它package com.yunyanchengyu.designModel;public

2021-04-02 15:40:55 87

原创 工厂模式-设计模式

1、工厂模式 工厂模式分为简单工厂模式,工厂方法模式和抽象工厂模式。 主要功能就是帮助我们把对象的实例化部分抽取出来,目的是降低系统中代码耦合度。 1、1简单工厂模式 优点:实现对象的创建和使用的分离 缺点:不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,产品多时,工厂方法逻辑代码会非常复杂 package com.yunyanchengyu.designmodel;public class SimpleFactory { public s

2021-04-02 12:09:09 86

原创 单点登录

单点登录(Single Sign on) 实现方式 Session广播机制实现。把Session复制到其他服务器,这种方式会消耗极大资源 使用cookie+redis实现。 在项目中任何一个模块进行登录,登录之后,把数据放到两个地方 (1)redis,key(根据IP地址或用户ID等生成的随意值):value(用户数据) (2)cookie:把redis里面生成的key放到cookie中 访问项目中其他模块,发送请求带着cookie进行发送,获取cookie值,

2020-12-21 22:39:33 115

原创 ArrayList扩容

调用无参的构造函数时(new ArrayList<>())会初始化一个空数组,当添加第一个元素时会初始化默认长度为10 当长度不够时会进行1.5倍扩容。 当扩容1.5倍后长度还不够盛下本次新加的元素,则会扩容成本次添加元素后的长度...

2020-12-21 21:59:52 193 1

原创 HashMap

基础知识JDK1.8之前底层是数组+链表,1.8及之后是数组+红黑树 数组默认长度是16,默认阈值是0.75,且每次扩容都是*2 支持多线程,不安全,速度快 hashmap中的数组中存的是Entry,每个Entry有Key,value,next组成 可以存null值null键,null值将hash值取0哈希冲突简而言之就是去存放数据时,发现这个坑位有人占了 则根据这个坑位指向的链表逐一去对比value,不存在相同的value则通过头插法插入,存在相同的value则替换何时链表转换为红黑

2020-12-21 21:16:52 1417

原创 红黑树

红黑树结点是红色或者黑色的 根结点是黑色 每个叶子结点都是黑色的空节点(NULL) 每个红色结点的两个子节点都是黑色(从根节点到根的所有路径上不能有两个连续的红色结点) 从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点...

2020-12-21 20:03:33 80

原创 B-,B+树

B-树(m阶)根节点至少有两个子女 每个中间节点都包含K-1个元素和K个孩子,其中m/2<=k<=m 每个叶子结点都包含k-1个元素,其中m/2<=k<=m 所有的叶子结点都位于同一层 每个结点中的元素从小到大排列,结点当中k-1个元素整好是K个孩子包含的元素的值域分化B+树(m阶)有K个子树的中间节点包含k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存叶子结点 所有的叶子结点总包含了全部的元素的信息,及指向包含这些元素记录的指针,

2020-12-21 19:52:35 69

原创 端口和套接字

端口(Port):一台计算机只有单一的连接到网络的物理连接,所有的数据都通过此连接对内、外送达特定的计算机。端口并非真实的物理存在,而是一个假象的连接装置。端口被规定为一个在0-65535之间的整数。HTTP服务一般使用80端口,FTP服务使用21端口。通常0-1023之间的端口数用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口数,以避免端口号与另一个应用或系统服务多用端口冲突套接字(Socket):用于将应用程序与端口连接起来。...

2020-12-21 19:24:09 1368 1

原创 TCP与UDP协议

在TCP/IP协议栈中,有两个高级协议是网络应用程序编写者应该了解的,即传输控制协议(Transmission Control Protocol,TCP)与用户数据报协议(User Datagram Protocol,UDP)TCP:TCP可以保证从一端数据送至连接的另一端时,数据能够确实送达,而且抵达的数据的排列顺序和送出时的顺序相同,因此,TCP协议适合可靠性要求比较高的场合UDP:UDP是无连接通信协议,不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据。UDP协议适合一

2020-12-19 21:07:26 75 1

原创 进程和线程

程序:指令、数据及其组织形式的描述进程:继承是程序的实体,是程序的一次执行(多种解释,看你怎么理解了)线程:一个线程是进程中的执行流程,一个进程可以同时包括多个线程实现线程的两种方式继承Thread类,重写run方法。把要实现的功能放在run方法中 通过重写的类调用Thread类中的start()方法 publi class MyThread extends Thread{ @override public void run(){ System.ou

2020-12-19 20:25:08 63 1

原创 泛型

邱子腾目录

2020-12-19 19:34:46 83 2

原创 集合

MapHashMap 允许null值 多线程,线程不安全,速度快 HashTable 不允许null值 单线程,线程安全,速度慢 List继承了Collection接口 有索引 有序可重复,可以存NULL ArrayList 实现了List接口 查找快,增删慢 长度可变的数组 LinkedList 实现了List接口 长度可变的链表 增删快,查找慢 Set继承了Collection接口 可以存储NULL,但只能..

2020-12-19 16:58:06 62 1

原创 Error和Excepetion

Java类库的每个包中都定义了异常类,所有这些类都是Throwable类的子类。Throwable类派生了两个子类分别是Exception和Error类Error类及其子类用来描述JAVA运行系统中的内部错误以及资源耗尽的错误,这类错误比较严重。 Exception类称为非致命性类,可以继续通过捕捉处理使程序继续执行...

2020-12-19 16:21:20 242 1

原创 finally

finally在以下四种特殊情况下不会被执行 在finally语句块中发生了异常 在前面的代码中使用了System.exit()退出程序 程序所在的线程死亡 关闭CPU

2020-12-19 16:12:44 103 1

原创 关键字final

final关键字可以用于变量声明,一旦该变量被设定,就不可以再改变该变量的值(用户声明成员变量或者局部变量都可) final关键字定义的变量必须在声明时对其进行赋值操作,如果没有进行赋值操作,则必须在所有的构造方法中为其进行赋值 final除了可以修饰基本数据类型的常量,还可以修饰对象引用。 final在修饰我们自己创建的类时,必须为本类加一个包含这个被final修饰的类的构造方法。其目的就是在本类进行初始化时就被final修饰的类进行初始化(没有在初始化时赋值,就在在构造方法中赋值) 一般fina

2020-12-19 15:46:52 131 1

原创 抽象类

抽象类使用abstract关键字定义的类称为抽象类 是由abstract关键字定义的方法称为抽象方法public abstract class Test{//定义抽象类 public abstract void testAbstract();//定义抽象方法}在JAVA语言中抽象类不可以实例化对象 抽象方法没有方法体,这个方法本身没有任何意义,除非它被重写 抽象类中的方法可以是抽象的也可以是不抽象的。 抽象类中只要有一个或一个以上的抽象方法,则该类必须声明为抽象方法 子类继.

2020-12-19 15:13:36 97 1

原创 重载与重写

重载重载是在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或者类型不同即可 参数的顺序不同也是重载 进行重载时返回值类型可以相同也可以不同,但是参数的个数或类型必须不同,方法名必须相同重写重写发生在类的继承或者接口的实现时 重写时方法名,返回值类型必须相同 重写时,子类的权限修饰符可以修改,但是子类的权限修饰符范围只能是大于等于父类的范围...

2020-12-19 14:47:00 98 2

原创 成员变量和局部变量

成员变量(全局变量)成员变量是在类体中定义的变量 声明成员变量的时候如果不设置值,则会有默认值局部变量局部变量是声明在成员方法中的变量 局部变量在方法被执行时创建,在方法执行结束时被销毁 局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误...

2020-12-19 12:57:01 171 1

原创 synchronized和Lock区别

 synchronized是Java语言的关键字,因此是内置特性,Lock不是Java语言内置的,Lock是一个接口,通过实现类可以实现同步访问。 Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后,系统会自动让线程释放对锁的占用;而Lock则必须要用户去手动释放锁,如果没有主动释放锁,就有可能导致出现死锁现象。 Lock的trylock方法可以知道有没有成功获取到锁,而sy

2020-12-18 13:48:56 796

原创 Lock

Lock是一个接口LOCK接口的方法void lock()获取锁 void lockInterruptibly()如果当前线程未被终端,则获取锁,可以响应终端 boolean tryLock() 仅在调用时锁为空闲才获取该锁,可以响应中断 boolean tryLock(long time,TimeUnit unit)如果锁再给定的等待时间内空闲,并且当前线程未被中断,则获取锁 void unlock()释放锁Lock的实现类ReentrantLockReentrantLock,即可重

2020-12-18 13:42:59 93

原创 synchronized

synchronized是JAVA中的关键字,是一种同步锁。它修饰的对象有以下几种:修饰一个代码块,被修饰的代码块成为同步语句,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;synchrinized(this) 修饰一个方法,被修饰的方法成为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象。 修饰一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象 修饰一个类,其作用范围是synchronized后面括号括起来的部分,作用的对象是这个类

2020-12-18 13:30:13 70

原创 继承

继承的主要作用在于,在已有的基础上继续进行功能的扩充 每个子类只能继承一个父类,JAVA是单继承的 当发生了继承关系之后,子类可以直接继承父类的操作,可以直接访问父类的成员变量(private和default修饰的不可以)。子类最低也维持和父类相同的功能 子类必须调用父类的构造函数(有参或者无参),子类不写明调用哪一个,系统默认调用父类无参构造函数 父类如果重写了构造函数且重写后没有无参构造函数,子类必须写明调用父类的哪一个有参构造函数 父类如果重写了构造函数且重写后有无.

2020-12-17 22:41:52 325

原创 接口

接口是一种规范 接口中的方法都是抽象的,即没有方法体 接口不能用来new 接口必须有子类,但此时一个子类可以使用implements关键字来实现多个接口 接口的子类(如果不是抽象类),那么必须要重写接口中的全部方法 接口的对象可以利用子类对象向上转型进行实例化。这就是多态 接口的访问权限只有一种,public...

2020-12-17 22:27:50 245

原创 访问控制权限

每个类中都只能有一个public 类 其他包中的类 子类 同包 同类public 1 1 1 1protect 1 1 1default 1 ...

2020-12-17 22:20:35 100 1

原创 类的加载机制

类的加载机制类的加载过程类的加载过程分为加载、验证、准备、解析、初始化这5个阶段加载 通过一个类的全限定名来获取定义此类的二进制流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口 验证 ​​​​​​​验证是连接阶段的第一步,这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会畏寒虚拟机自身的安全 ​​​​​​​文件格式验

2020-12-17 22:04:39 51

原创 初始化与清理

初始化与清理 类初始化步骤 初始化父类中的静态成员变量和静态代码块,按照在代码中出现的顺序初始化 初始化子类中的静态成员变量和静态代码块,按照在代码中出现的顺序初始化 初始化父类的普通成员变量和代码块,执行父类的构造方法 初始化子类的普通成员变量和代码块,执行子类的构造方法 方法重载 重载是在一个类中进行重载 重载时方法名必须相同,参数必须不同(类型或个数有一个不同即可),返回值可以相同也可以不同(单单只有返回值不同是不

2020-12-17 21:57:57 91

原创 Spring+SpringMVC+MyBytis

https://www.cnblogs.com/fjjchina/p/7099713.html

2020-12-15 19:34:48 156 1

原创 2020-12-09数据库事务

事务 事务的基本介绍 概念:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败 操作: 1.开启事务:start transaction 2.回滚:rollback 3.提交commit 事务的四大特征 1.原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败 2.持久性:当事务提交或者回滚...

2020-12-09 19:24:15 59

原创 2020-12-09数据库范式

1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系...

2020-12-09 19:20:58 76

原创 JDK、JRE、JVM

学习目标:学习内容:学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇3、 学习的 vlog 视频 1 个...

2020-10-24 01:30:35 90

原创 Map集合方法总结

学习目标:JAVA小知识清单(第二个)学习内容:Map集合的常用方法学习时间:2020-10-23 22:25学习产出:1、 Vput(K key, V value) 向map集合中添加Key为key,Value为value的元素,添加成功返回null,否则返回value。map中的key是不能重复的,但是value可以重复2、void putAll(Map map) 向map集合中 添加指定集合的所有元素3、void clear() 清空map集合中的所有键值对...

2020-10-23 22:25:47 344

原创 JAVA泛型总结

学习目标:JAVA小知识清单(第二个)学习内容:什么是泛型学习时间:2020-10-23 1:41学习产出:泛型从字面上来看:广泛的类型,指传入的参数可以是不同类型的。最长用的泛型 List<Integer> List<String>。这里List<>尖括号中传入的类型可以是不同的,各种类型的参数都可以传入。例子:public class Demo<U,J>{ U user; J join...

2020-10-23 01:48:58 97

原创 int和Integer

学习目标:JAVA小知识清单(第二个)学习内容:int和Integer学习时间:2020-10-23 1:00学习产出:int和Integer的区别 Integer是int的包装类,而int是java的一种基本数据类型。Integer和String类似,都是经过封装的数据类型。 Integer变量必须实例化后才能使用,而int变量不需要 Integer实际是对对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是...

2020-10-23 01:25:12 148

原创 java基本数据类型

学习目标:JAVA小知识清单(第一个)学习内容:基本数据类型学习时间:2020-10-23 00:19学习产出:byte: 8位,最大存储数据量是255,存放的数据范围是-128~127short: 16位,最大数据存储量是65536,数据范围是-32768~32767int: 32位,最大数据存储量是2的32次方减1,数据范围是负的2的31次方到正的31次方减1long: 64位,最大数据存储容量是2的64次方减1,数据范围是负的2的63次方到整的2的63次方减1

2020-10-23 00:58:08 102

空空如也

空空如也

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

TA关注的人

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