自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NULL的博客

我思故我在

  • 博客(62)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring | 基于注解配置Bean(二)

元素会自动注册实例,该实例可以自动装配具有@Autowired@ResourceInject注解的属性。

2023-03-22 11:29:02 270

原创 Spring | 基于注解配置Bean(一)

Spring 能够从 classpath 下自动扫描,侦测具有特定注解的组件,组件包括。方法中的参数,默认为注解后的第一个字母小写的类名,也可以使用自己用。Spring 默认情况下,注解的名字为类名的第一个字母小写,如。调用的时候也可以使用自己设置的值。包及子包下扫描,此时该包下所有注解过的类都能执行。使用接口名进行排除,排除指定子包下接口名为。使用接口名字进行包含,此时只能包含接口名为。使用注解名进行排除,排除指定子包下注解为。使用注解名进行包含,此时只能执行标识为。注解的值也可以自己设定,后面使用。

2023-03-22 11:25:44 311

原创 Spring | 基础

Spring基础

2023-03-07 16:28:09 405

原创 计算机网络考研面试题

一、概述计算机网络的定义计算机网络是多个独立的计算机通过通信线路和通信设备互联起来的系统,以实现彼此之间的数据交换和资源共享计算机网络的组成计算机网络包括边缘部分和核心部分边缘部分:由所有连接在互联网上的主机组成,这部分是用户直接使用,用来通信和资源共享核心部分:由网络和连接这些网络的路由器组成,这部分为边缘部分提供服务计算机网络的分类按作用范围:个人网、局域网、域域网、广域网按网络使用者:公用网和专用网按拓扑结构分类:总线型网络、星型网络、环形网络、网状型网络**按传输介质分

2021-03-23 10:58:35 1403

原创 等待和通知机制(wait和notify)

1. 等待和通知机制的实现wait() 方法wait() 是 Object 类的方法,它的作用是使当前执行代码的线程进行等待,该方法将当前线程置入“预执行队列”中,并在 wait() 所在的代码行处停止执行,直到接到通知或者被中断才能继续执行。线程必须获得该对象的对象锁,即只能在同步方法或者同步方法块中调用 wait() 方法,在执行 wait() 方法后,当前线程释放所拥有的对象锁,如果 w...

2019-04-10 23:20:27 1058

原创 Java8 | Optional类

一、什么是Optional类Optional<T> 类是一个容器类,它可以保存类型 T 的值,代表这个值存在。或者仅仅保存 null,代表这个值不存在。原来用 null 表示一个值不存在,现在使用 Optional 可以更好的表达二、Optional类的方法1. 创建Optional类对象的方法Optional.of(T t):创建一个 Optional 实例,对象 t 必...

2019-04-09 21:37:46 1235

原创 Java8 | 关于Stream

一、关于StreamStream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用 Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简言之,Stream API 提供了一种高效且易于使用的处理数据的方式二、什么是StreamStr...

2019-04-07 16:54:48 1861

原创 Java8 | 方法引用

一、什么是方法引用方法引用就是,当要传递给Lambda体的操作,已经有实现的方法了,就可以使用方法引用方法引用可以看做是Lambda表达式深层次的表达。换句话说,方法引用就是Lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个语法糖要求:实现接口的抽象方法体的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型保持一致...

2019-04-07 16:50:51 399

原创 Java8 | 函数式接口

一、什么是函数式接口函数式接口便是只包含一个抽象方法的接口,它包含以下内容可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个非运行时异常 ,那么该异常需要在目标接口的抽象方法上进行声明)可以在一个接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口,同时 javadoc 也会包含一条生命,说明该接口是一个函数式接...

2019-04-04 09:38:40 308

原创 Java集合中的fail-fast快速失败机制

一、什么是 fail-fast 机制fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生 fail-fast 事件。例如:当某一个线程A通过 iterator 去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛 ConcurrentModificationException 异常,产...

2019-04-03 20:40:31 1653 1

原创 Java集合 | CopyOnWriteArrayList源码分析(JDK 1.7)

一、基本结构public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable二、基本属性// 加锁的方法,在增加、移除操作的时候都需要加锁transient final ReentrantLock lock = n...

2019-03-31 14:34:11 266

原创 ArrayList中的Iterator源码分析(JDK 1.7)

一、阐述迭代器接口 Iteratorpublic interface Iterator<E> { boolean hasNext(); E next(); void remove();}该接口有三个方法:hasNext():判断容器内是否还有更多的元素next():返回迭代器刚越过的元素的引用,返回值是 Objectremove(...

2019-03-27 01:22:54 352

原创 ThreadLocal源码分析

一、实例代码先来看一个使用ThreadLocal的实例,然后再开始我们的讲解class Tools6 { public static ThreadLocal<Integer> intLocal = new ThreadLocal<>(); public static ThreadLocal<String> strLocal = new Th...

2019-03-25 02:25:22 163

原创 SpringBoot | 访问数据库

一、简介对于数据访问层,无论是 SQL 还是 MySQL,SpringBoot 默认采用整合 Spring Data 的方式进行统一处理,添加了大量自动配置,屏蔽了很多设置,引入各自 xxxTemplate、xxxRepository 来简化我们对数据访问层的操作。对我们来说,只需要进行简单的设置即可二、整合JDBC与数据源1. JDBC<dependencies> ...

2019-03-25 01:45:22 596

原创 SpringBoot | Web开发

一、SpringBoot配置静态资源1. 使用webjars直接导入静态资源的jar包@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Def...

2019-03-25 01:40:43 174

原创 为什么重写了equals方法后还需要重写hashCode方法

分析假如我们创建了一个 People 类,并且重写了其中的 equals 方法public class People { private Integer age; private String name; // getter/setter方法 .... @Override public boolean equals(Object obj) ...

2019-03-16 21:47:04 3206 2

原创 Java集合 | HashSet(JDK 1.7)

一、基本图示二、基本介绍结构public class HashSet&lt;E&gt; extends AbstractSet&lt;E&gt; implements Set&lt;E&gt;, Cloneable, java.io.SerializableHashSet 继承了 AbstractSet 抽象类,AbstractSet 接口继承了 AbstractCo...

2019-03-03 23:27:19 375

原创 SpringBoot | Profile的使用

1. 什么是Profile?Profile 可以让 Spring 对不同的环境提供不同配置的功能,可以通过激活、指定参数等方式快速切换环境2. 多Profile文件形式在进行实际开发的时候,分为本地环境、测试环境和生产环境,这就需要配置多个配置文件,如端口号等等,我们当然可以每更换一个环境就改一次配置,但是十分繁琐这个时候就可以多设置几个配置文件,文件名格式可以是 application...

2019-01-08 20:42:38 2946

原创 SpringBoot | 配置文件的注入(二)

1. 使用@PropertySource使用 @PropertySource 注解可以从外部加载指定的配置文件,将配置文件与 JavaBean 相绑定,使 JavaBean 读取配置文件中的值在类路径下创建一个 people.properties 文件people.last-name=张三三people.age=100people.birth=2019/2/3people.boss=f...

2019-01-07 00:25:22 3448 28

原创 SpringBoot | 配置文件的注入(一)

1.使用@ConfigurationProperties注解给JavaBean赋值我们可以将 xxx.yml 配置文件中的值与 JavaBean 组件绑定,并且将配置文件中的值注入到 JavaBean 中需要导入文件处理器的依赖&amp;amp;lt;!-- 导入配置文件处理器, 将JavaBean与配置文件进行绑定时会有提示 --&amp;amp;gt;&amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;gr

2019-01-07 00:22:19 1043 1

原创 SpringBoot | yml配置文件的基本用法

1.ymlyml 是 ymal 语言的文件,以数据为中心,比 json、xml 等格式更加适合作为配置文件2.yaml基本语法使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格缩进的空格数目不重要,只要相同层级的元素左侧对齐即可大小写需敏感如:server: port: 8080 path: /helo3.值的写法①. 值是字面值字面量...

2019-01-07 00:15:15 780

原创 多线程中的停止

一、什么是多线程中的停止?每个线程都有一个中断状态,默认的中断状态都是 false,一个线程可以给另一个线程发送一个中断信号,接收到这个中断信号的线程的中断状态就被置为 true,Java 中的 Thread 类提供了以下几种方法来获取和修改线程的中断状态:void interrupt():将某个线程的中断状态置为 true,不是真正的将线程停止,而是在当前线程中打了一个停止的标记stat...

2018-11-13 16:32:01 480

原创 使用ReentrantReadWriteLock类

一、使用ReentrantReadWriteLock类类ReentrantLock虽然具有完全互斥排他的效果,即同一时间只有一个线程在执行 lock() 方法后面的任务,虽然可以保证线程的安全性,但是效率却十分低下,所以还有一种读写锁 ReentrantReadWriteLock 类,可以用它来加快运行的效率读写锁共有两个锁,一个是读相关的锁,也称作共享锁,另一个是与写操作相关的锁,也称作排他...

2018-11-12 11:52:45 336

原创 ReentrantLock类中的方法

ReentrantLock类中的方法ReentrantLock类中有很多的方法:getHoldCount():当前线程调用 lock() 方法的次数getQueueLength():当前正在等待获取 Lock 锁的线程的估计数getWaitQueueLength(Condition condition):当前正在等待状态的线程的估计数,需要传入 Condition 对象hasWaite...

2018-11-05 20:21:48 1723

原创 ReentrantLock类的使用

一、使用ReentrantLock类和 synchronized 关键字来实现线程之间的同步互斥一样,ReentrantLock 类也可以达到这样的效果class MyService2 { private Lock lock = new ReentrantLock(); public void methodA() { //当前线程获得对象锁 ...

2018-11-03 23:29:50 297

原创 join()方法的使用

一、join()方法的使用主线程创建并启动子线程,如果自线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束。如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到 join() 方法先来看一个不用 join() 方法的例子public class MyThread extends Thread { @Override ...

2018-10-29 21:56:12 20701 3

原创 wait()方法的注意点

一、问题是什么?这个问题是我昨天测试wait()方法的时候偶然发现的,即:一个线程在同步块或者同步方法中使用同步对象调用 wait() 方法的时候,会出现另一个线程在同步块或者同步方法中不使用 notify() 方法,被 wait() 的线程就能自动被唤醒的现象。当然这个需要分两种情况,这个下面会具体说到我花了半个下午加一个晚上的时间,查了很多资料,问了一些人,才勉强搞懂为什么会出现这种情况...

2018-10-29 21:41:22 14338 7

原创 synchronized关键字(三)

一、三个结论对于 synchronized(非 this 对象 x)当多个线程同时执行 synchronized(x){} 同步代码块时呈现同步效果当其他线程执行 x 对象中 synchronized 同步方法时呈同步效果当其他线程执行 x 对象方法里面的 synchronized(this) 代码块时也呈同步效果需要说的是,虽然有三点,都是本质都是一样的,即每个线程拥有相同的对象锁...

2018-10-24 22:49:19 433

原创 关于HashMap的一些问题

1.为什么Entry数组大小必须为2的幂// JDK 1.7static int indexFor(int h, int length) { return h &amp; (length-1);}使用减法替代取模,提升计算效率;为了使不同 hash 值发生碰撞的概率更小,尽可能促使元素在哈希表中均匀地散列。我们知道,在计算机中,0与任何值相&amp;都是0;1与任何值相&...

2018-10-24 20:30:55 134

原创 synchronized关键字(二)

一、synchronized同步代码块使用关键字 synchronized 声明的方法在某些情况下是有弊端的,比如线程 A 调用同步方法执行一个长时间的任务,那么线程 B 必须等待线程 A 将这个同步方法全部执行完才可以调用该方法,但是很多时候我们不需要对整个方法进行同步,可能只需要对部分代码块进行同步,这个时候就用到了synchronized同步代码块直接看个使用 synchronized ...

2018-10-22 20:46:26 199

原创 synchronized关键字(一)

一、线程安全和不安全非线程安全:在多个线程对同一个对象的实例变量进行并发访问时会出现值被更改、值不同步的情况线程安全:获得的实例变量的值是经过同步处理的,按照顺序执行,不会出现脏读情况举个例子:5个销售员, 卖同一堆货物,每个销售员在卖出一个货品后,并不是立即知道当前货物剩余数量的,因为在他卖出的同时,可能其他销售员已经卖出好几个货品了,如果这个时候就减1,那么就会产生数据的不同步,可能...

2018-10-21 23:04:46 509 1

原创 线程的优先级

一、线程的优先级在操作系统中,线程可以划分优先级,优先级较高的线程得到的 CPU 资源较多,即 CPU 优先执行优先级较高的线程对象的任务在 Java 中使用 setPriority 方法来设置优先级,同时把优先级划分成 1~10 这10个等级,如果小于 1 或者大于 10,则 JDK 会抛出异常// 线程最小的优先级等级public final static int MIN_PRIORI...

2018-10-21 22:57:43 1261 1

原创 Thread 中的方法

一、静态方法1.1 currentThread() 方法currentThread() 方法返回代码段正在被哪个线程调用的那个线程的信息public class MyThread7 extends Thread{ static { System.out.println(&quot;静态代码块:&quot; + Thread.currentThread().getName()); ...

2018-10-21 22:54:16 1763 3

原创 进程和线程

一、进程和线程进程如果打开一个任务管理器,那么里面所有的 exe 程序都可以理解成一个进程。Adobe 是一个进程,Chrome 也是一个进程线程线程可以理解成在进程中独立运行的子任务。比如,QQ.exe 运行时就有很多子任务在同时运行,比如,好友视频线程、下载文件线程、传输数据线程,这些不同的任务都可以同时运行,每一项任务可以理解成是线程在工作好处可以最大限度地利用CPU地空闲时间...

2018-10-21 22:49:16 117

原创 索引优化

一、最佳左前缀法则左前缀法则指的是:查询从索引的最左前列开始并且不跳过索引中的列建立一个表,并且在三个字段建立索引然后我们对索引进行查询1.explain select * from staffs where name = 'aaa';可以看到使用到了索引2.explain select * from staffs where name = 'aaa' and age = 2...

2018-10-21 22:43:27 212

原创 索引单表、双表、三表优化

一、索引单表优化1.建表、插入、查询数据先建立一张表我们在里面插入数据先不建立索引,当我们使用以下语句进行查询时,可以先分析一下性能explain select id,author_id from article where category_id = 1 and comments &amp;gt; 1 order by views desc limit 1;可以看到,type 的类型...

2018-10-11 21:42:51 1689 2

原创 MySQL | 七种JOIN

七种 join准备两张表1.内连接select * from tbl_emp a inner join tbl_dept b on a.deptId = b.id;2.左连接select * from tbl_emp a left join tbl_dept b on a.deptId = b.id;3.左表独有select * from tbl_emp a le...

2018-10-08 00:38:38 170

原创 Java泛型擦除和转换

一、泛型擦除在编译期间,所有泛型信息都会被擦除掉,在生成的字节码中是不包括泛型中的类型信息的直接举个例子public class Main2&lt;T&gt; { public static void main(String[] args) { List&lt;String&gt; list = new ArrayList&lt;&gt;(); li...

2018-10-06 20:15:59 8129 1

原创 Java 集合 | LinkedHashMap源码分析(JDK 1.7)

一、基本图示二、基本介绍public class LinkedHashMap&lt;K,V&gt; extends HashMap&lt;K,V&gt; implements Map&lt;K,V&gt;结构LinkedHashMap 继承了 HashMapLinkedHashMap 实现了 Map 接口特性底层使用拉链法处理冲突的散列表元素是有序的,即...

2018-10-04 14:27:15 275

原创 Java集合 | Hashtable源码分析(JDK 1.8)

一、目录结构二、特征public class Hashtable&amp;amp;lt;K,V&amp;amp;gt; extends Dictionary&amp;amp;lt;K,V&amp;amp;gt; implements Map&amp;amp;lt;K,V&amp;amp;gt;, Cloneable, java.io.Serializable结构继承 Dictionary 抽象类实现了 Map&amp;

2018-09-29 23:42:36 189

空空如也

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

TA关注的人

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