自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IDEA常用快捷键和debug常用调试技巧

idea快捷键,debug调试技巧

2022-08-29 20:48:35 1294 1

转载 互联网协议入门

一、概述1.1 五层模型互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。如上图所示,最底下的一层叫做"实体层"(Physical Layer),最上面的一层叫做"应用层"(Application Layer),中间的三层(自下而上)分别是"链接层"(Link Layer)、“网络层”(Network Layer)和"传输层"(Transport L

2021-05-18 16:28:01 193

原创 Netty基础知识

一、什么是nettyNetty是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器。支持HTTP、 WebSocket 、Protobuf、 Binary TCP 和UDP。优点:并发高,传输快,封装好。三大核心组件:(1)channel通道类似 IO 中的流,用于读取和写入。读操作的时候将 Channel 中的数据填充到 Buffer 中,而写操作时将 Buffer 中的数据写入到 Chann

2021-05-17 10:32:41 277

转载 多线程之AQS

一、AQS简介AQS(AbstractQuenedSynchronizer)抽象的队列式同步器。AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch…。是除了java自带的synchronized关键字之外的锁机制。,这个类在java.util.concurrent.locks包。二、框架AQS的核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁

2021-05-15 18:00:39 417

原创 MySQL索引

一、什么是索引索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。二、索引的优缺点(1)优点1.创建唯一性索引,保证数据库表中每一行数据的唯一性2.大大加快数据的检索速度,这也是创建索引的最主要的原因 3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 5.通过使用索引,可以在查询的过程中使用优化隐藏器,

2021-05-14 17:54:44 298 1

原创 JAVA类加载过程

类加载内存分析一、JAVA内存二、类初始化三、类的加载与ClassLoader的理解四、程序public class Test05 { public static void main(String[] args) { A a = new A(); System.out.println(A.m); /** 1.加载到内存会产生一个类对应的Class对象 2.建立链接,链接后m=0 初始值 3.

2021-05-08 17:16:02 271

原创 集合类线程不安全问题

集合类线程不安全问题一、ArrayListArrayList底层是封装了数组,通过数组来存储数据的。当新建一个无参数的ArrayList时,new ArrayList() 的初始容量,在jdk1.6中的确是为10,然而在1.8中,如果只是new ArrayList() ,容量其实是0,当第一次通过add(E e)时,才扩充为10。原因:线程不安全,add方法没有用synchronized修饰。public static void main(String[] args) { List&

2021-03-22 23:47:03 178

原创 volatile和synchronize关键字的区别和在单例模式中的应用

volatile和synchronize关键字的区别和在单例模式中的应用一、对于内存模型的三大特性:有序性、原子性、可见性。1、原子性:(1)原子的意思代表着——“不可分”;(2)在整个操作过程中不会被线程调度器中断的操作,都可认为是原子性。原子性是拒绝多线程交叉操作的,不论是多核还是单核,具有原子性的量,同一时刻只能有一个线程来对它进行操作。例如 a=1是原子性操作,但是a++和a +=1就不是原子性操作。2、可见性线程执行结果在内存中对其它线程的可见性。变量经过volatile修饰后,对此

2021-03-17 10:01:38 270

原创 JAVA对象创建基础知识

一、 对象的创建过程具体步骤:(1) 申请内存。(2) 成员变量赋默认值。(3) 调用构造方法,成员变量赋初始值。(4) 建立关系(把栈空间的引用 t 和new 出来在堆里面的对象建立关联)二、对象怎么分配?(栈上-线程本地-Eden区-Old区)**注:TLAB(Thread Local allocation buffer)线程本地分配缓冲:**默认大小1%,可以调大小。分配不下会再分到Eden区。Eden区给每个线程分配一块私有的内存空间,不需要跟其他线程抢资源,也就不需要做线程同

2020-06-13 10:29:10 169

原创 Java垃圾回收(GC)机制笔记

JVM虚拟机一、 GC的基础知识什么是垃圾?C++ new deleteJAVA new ?自动类型回收,编程上简单,系统不容易出错,手动释放内存,容易出现两种类型的问题:(1) 忘记回收(2) 多次回收如何定位垃圾(1) 引用计数(count)(2) 根可达算法GC Algorithms(垃圾回收的算法)(1) Make-Sweep(标记清除):位置不连续,产生碎片。(2) Copying(拷贝):没有碎片,浪费内存。(3) Make-Compact(标记压缩):没

2020-06-09 23:33:04 335

原创 java8新特性之日期时间 API

日期工具类DateTimeFormatter简介在旧版的 Java 中,日期时间 API 存在诸多问题,其中有:(1)非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,以及 SimpleDateFormat 的非线程安全,这是Java日期类最大的问题之一。(2)设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。java.util.Date同时包含日期和时

2020-06-07 16:31:59 175

原创 JAVA8新特性之Optional类的简单运用

Optional类的简单运用(1)Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。(2)Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。(3)Optional 类的引入很好的解决空指针异常。package optional;import bean.Boy;import bean.Girl;import org.j

2020-06-07 15:06:24 329

原创 Java8新特性之Stream基础操作

Java8 Stream基础API使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询,Stream API提供了一种高效且易于使用的处理数据的方式。1、Stream是什么?是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。集合讲的是数据,Stream讲的是计算。“注意”(1) Stream自己不会存储元素。(2) Stream不会改变源对象。相反,它会返回一个持有结果的新Stream。(3) Stream操作是延迟执行的,这意味着它会等到需要结果时才执行。

2020-06-07 10:01:43 186

原创 JAVA8新特性之方法引用基础操作

方法引用(Method References)1、什么是方法引用?(1)方法引用可用于在不调用方法的情况下引用方法。它将方法视为Lambda表达式。它们只能作为语法糖来减少一些lambda的冗长。(2)当要传递的Lambda体的操作,已有实现方法,可以使用方法引用。2、方法引用格式在方法引用中,将包含方法的对象(或类)放在::运算符之前,将方法的名称放在不带参数的方法之后。3、方法引用的要求实现接口的抽象方法的参数列表和返回值类型,必须与方法引用的参数列表和返回值类型保持一致。4.方法引用的

2020-06-06 17:54:12 133

原创 JAVA8新特性Lambda基础

JAVA8新特性一、Lambda表达式1.举例 (a,b) -> Integer.compare(a,b);2.格式:->:lambda操作符或者箭头操作符->:左边lambda形参列表(接口中抽象方法的形参列表,参数类型可以省略,1个参数时()也可以省略)->:右边lambda体(重写抽象方法的方法体,只有一条执行语句时,return和{}都可以省略)3. lambda表达式的使用(分6中情况介绍)(1) 无参无返回值 @Test public void tes

2020-06-04 23:29:44 167

原创 两个泛型为对象的List,根据对象的某些属性来取差集

通过Java 8 新特性Stream和Lambda 表达式实现/***user对象*/public class User{ private String id; private String name; private String age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return

2020-06-04 12:55:43 1351

空空如也

空空如也

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

TA关注的人

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