自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库事物ACID模型与MySQL存储引擎之InnoDB、MyISAM、MEMORY

MySQL的体系结构总共分为四个层:连接层、服务层、引擎层、存储层:最上一层客户端连接器是包含一些客户端和连接服务,以及一些本地Socket通信以及客户端\服务端工具实现的类类似tcp\ip的通信。而连接层主要是负责连接处理、授权认证以及相关的安全方案。:主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。...

2022-08-12 12:09:52 348 1

原创 MySQL概述与MySQL日志

MySQL日志

2022-08-11 14:34:11 333

原创 MySQL数据库基础知识汇总

因为数据库可以实现数据持久化到本地;使用完整的管理系统统一管理,可以实现结构化查询,方便管理。(DB全程为DataBase)是存储数据的容器,将数据通过特定的规则存储在磁盘上。通过来组织和管理存储在数据库中的数据。数据库管理系统(DataBase Management System)又称为数据库软件和数据库产品,用于创建或管理数据库(DB)。结构化查询语言(Structure Query Language)也就是SQL语句。...

2022-08-09 22:24:41 463

原创 NIO、IO复用模型及AIO

Java NIO(Non Blocking IO)是从 Java 1.4 版本开始引入的一个新的 IO API,可以替代标准的 Java IO API,NIO 支持面向缓冲区的、基于通道的 IO 操作。NIO 将以更加高效的方式进行文件的读写操作。核心思想NIO中客户端发送IO请求并不会被阻塞,核心就是注册感兴趣的特定IO事件,当特定事件发生时,就通知用户进程。...

2022-08-04 20:32:20 262

原创 Callable、Future、FutureTask之间的关系以及Callable与Runnable的区别

Callable与Future是在JAVA的后续版本中引入进来的,Callable类似于Runnable接口,实现Callable接口的类与实现Runnable的类都是可以被线程执行的任务。Callable是Runnable封装的异步运算任务Future接收Callable异步运算结果FutureTask封装Future的实现类。...

2022-08-02 11:47:36 280

原创 线程池ThreadPoolExcutor以及Java线程池原理

Java中原生的线程池主要有三种ThreadPoolExecutor、ScheduledThreadPoolExecutor、ForkJoinPool。而ThreadPoolExecutor是最古老的一个实现线程池的类了。

2022-07-30 21:38:32 1234

原创 ThreadLocal知识点总结以及源码分析

ThreadLocal是解决线程安全的一种途径,它实现线程安全的方式是通过每个线程中都有自己专属的本地变量副本,不会产生竞争关系,但是使用ThreadLocal也需要场景要求,它相当于类中的私有静态字段,虽然大家都有这个变量,但是每个线程只能读取到当前自己的变量,适用于在每个线程需要一个独享的对象以及每个线程内需要保存的全局变量,可以让不同的方法直接使用,避免参数传递的麻烦。...

2022-07-26 22:01:08 146

原创 IO流基本概念与BIO原理及适用环境分析

Java的IO流是实现输入\输出的基础,在Java中把不同的输入\输出抽象表述为“流”。流是一组有顺序的、有起点和重点的字节集合,是对数据传输的总称和抽象。也就是说流的本质就是数据传输,流有输入和输出,输入时是从数据源流向程序,输出时是流从程序传向数据源,而数据源可以是内存、文件、网络或程序等。......

2022-07-25 18:00:36 304

原创 wait和notify基本原理以及应用场景

wait和notify是object中的方法,就是等待和唤醒。一个线程持有锁但是需要等待一些资源,那么就先进入等待队列,其他线程可以先持有锁并执行同步代码块中的内容,等到带着资源的另一个线程抢占到锁,并唤醒等待线程,等待线程就重新进入到阻塞队列进行排队,如果当前无其他线程竞争,就可以直接抢占锁并执行。本文章包含了wait和notify以及相关的设计模式。...

2022-07-23 11:45:51 4208 4

原创 实现线程安全的方式之互斥同步锁(synchronized)

synchronized实际上用对象锁保证了临界区内代码的原子性(也就是说是不可分割的,一起成功或一起失败),并且synchronized锁住的需要的是同一个对象,如果有多个对象,不同的线程访问的是不同的对象,不存在竞争关系,无共享资源,那么也就不存在线程安全的问题。简单来说就是,无共享,就无竞争。...

2022-07-21 23:45:24 635

原创 读写锁之ReentrantReadWriteLock与邮戳锁StampedLock知识总结

读写锁ReentrantReadWriteLock下,一个资源可以被多个读线程访问或一个写线程访问,但不能同时存在读写线程,也就是读读共享,读写互斥。多线程并发可以访问大面积的可以容许多个线程来读取,相对于ReentrantLock来说,ReentrantReadWriteLock更适用于读多写少的场景,但在写操作的时候二者性能是相差不多的,在ReentrantReadWriteLock中,可以一块使用读锁和写锁,但是需要先获取写锁,获取读锁,再释放写锁,释放读锁,通过锁降级来实现,但如果顺序颠倒,就会导致

2022-07-18 20:58:39 1138

原创 实现线程安全的方式之互斥同步锁(ReentrantLock)

先来说一下互斥同步锁ReentrantLock和Synchronized。同步的意思就是按顺序进行访问,互斥就是只能一个线程获得锁,获得锁后,其他线程需要进行阻塞。当然也可以通过操作系统提供的互斥机制,比如信号量semaphore和互斥量mutex来实现互斥同步。...

2022-07-17 16:33:04 877

原创 Redis基础知识总结

Redis基础知识点总结

2022-06-14 12:53:25 165

原创 集合知识点总结

为什么要提供集合类?集合类是一个容器,数组同样是容器,但数组(同一类型,创建时指定容量且长度不变,在内存空间中连续存储(哈希表结构))的一旦长度确定后就不能再改变,除非创建新的数组继续扩容。(数组的缺点)Java中对于各种数据结构的实现,就是我们用到的集合。在需求方面,程序在运行时,数据数量时是变化的,需要的存储结构也会有特殊的需求(例如,增删多时,更适用于链表。查询多时,更适用于数组),集合类也可以说是一个动态增长长度的容器。

2022-04-11 19:13:22 922

原创 数据结构与算法之并查集Union Find

并查集可以解决可以非常高效的解决网络中节点的连接问题。使用并查集,可以确定图中两个点是否连接。大致的操作主要为以下两步:1>合并 union(p,q) 2>是否连接 isConnected(p,q) 注意:在使用并查集时,我们并不关心元素内容,因此可以使用数组保存元素,p和q分别对 应元素所在数组的索引并查集的基本数据表示大致为两种数据结构,数组和树结构。优化算法也是在这两种数据结构的基础上进行优化。以数组为基本数据结构表示,集合中不同索引中值相同代表相连,.

2022-04-04 22:19:38 678

原创 多线程之基础

程序、进程、线程的概念程序是为完成特定任务、用某种语言编写的一组指令的集合,即指一段静态的代码。进程就是正在执行的程序,从windows的角度讲,进程是操作系统进行资源分配的最小单位。线程进程可进一步细化为线程,是一个进程内部的最小执行单元 ,是操作系统进行任务调度的最小单元,隶属于进程。是cpu进行调度的最小单位。线程和进程的关系一个进程可以包含多个线程,一个线程只能属于一个进程,线程不能脱离进程而独立运行; (例如在执行qq的进程时,不会突然跳转到其他的进程中)每一个

2022-03-08 20:31:45 195

原创 Java之异常

学习异常部分,首先需要了解异常的体系。

2022-01-17 19:39:22 142

原创 常用类之Date类,Calendar类,SimpleDateFormat类

使用Date类代表当前系统时间Date d = new Date(); //创建一个日期对象,里面包含了程序运行时的那一刻的时间,提供方法方便操作Date d = new Date(long d); //创建一个日期对象,并传入毫秒的参数,包含了那一时刻的时间。Date date = new Date();//创建一个日期对象,里面包含了程序运行时的那一刻的时间,提供方法方便操作System.out.println(date.getTime());//1637485760505System

2022-01-17 19:32:58 352

原创 API常用类之StringBuffer类

我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题线程安全的可变字符序列StringBuffer、String和StringBuilder之间的区别StringBuffer类线程安全(synchronized)有上锁当向StringBuffer中添加内容时,是将内容添加到底层的数组中,数组没有被final修饰,当数组装满时,会创建一个新的数组,将新数组地址给底层数组,StringBuffer对象是不会改变

2021-12-22 23:40:23 363

原创 API常用类之String类

String类概述字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字符串都是String类的实例.有两种创建形式:第一种:String s1="abc";先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建.class Demo{public static void mian(String[]

2021-12-19 16:18:56 261

原创 API常用类之Arrays类

java.util.Arrays类用于操作数组工具类,里面定义了常见操作数组的静态方法。equals 方法比较两个非同一数组是否相等,而数组本身的equals判断另一个数组是否它本身。● 声明:public static boolean equals(type[]a,type[]a2)● 参数的类型可以是原生数据类型和引用类型的任意一种类型。● 返回:如果两个相等,则返回true,否则返回falsepublic class ArraysDemo1 { public s

2021-12-10 20:56:28 825

原创 API常用类之Object类

Object类是所有Java类的祖先(根基类)。每个类都使用 Object 作为超类(父类)。所有对象(包括数组)都实现这个类的方法。如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类public class Person { ... }等价于:public class Person extends Object { ... }toString方法Object类中定义有public String toString()方法,其返回值是 String类型,描述当

2021-12-10 20:48:53 185

原创 API常用类之基本数据类型封装类

String类/StringBuffer类/StringBuilder类 Math类/Random类/System类 Date类/Calendar类/ SimpleDateFormat类 BigInteger/Big举例:Integer包装类是对int基本数据类型完成的一个类,引用Integer,Integer a=10;实际上,执行上面那句代码的时候,系统为我们执行了:Integer a=Integer.valueOf(10);(此即为基本数据类型的自动装箱功能),这种情况是左边为引用类型(还可以..

2021-11-30 16:09:48 148

原创 面向对象语言三大特征——封装、继承、多态

目录封装封装的概念封装的好处继承继承的概念继承的传递性继承中的构造方法方法的重写(OverRide)重写与重载区别抽象类抽象方法抽象类的定义抽象类的特点多态封装封装的概念 封装:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。封装的好处只能通过规定好的方法才能访问 方便加入控制语句 隐藏类的实现细节 方便修改实现具体的表现方式是使用get/set方法来实...

2021-11-26 21:58:12 567

原创 Java之关键字

不定时更新,主要是整理自己学习过的内容访问权限修饰符public :公共权限,修饰类、属性、方法。可以被任意的类访问。protected:受保护的权限 修饰属性、方法。不能被不同包的其他类访问(default)默认:同包权限,修饰类、属性、方法。只能被同一包种的类访问private:私有权限,修饰属性、方法。只能在同一类中被访问。static关键字概念:static被称作静态,可以用来修饰类的属性、方法、代码块和内部类。随着类的加载而加载 在对象之前就存在,可不创建对象..

2021-11-07 11:21:44 45

原创 Java之简易版的五子棋

主要使用的就是二维数组和循环的概念,初始化棋盘的实现并不难,稍微有点困难的就是判断输赢的实现。首先需要初始化棋盘,只有先将棋盘打印出来才能实现接下来的步骤。 //初始化棋盘 public static void arrayList(int n,int m,char[][] arr,char[]arrs1) { //设置五子棋的棋子属性 for (int i = 0; i < arr.length; i++) { for (int

2021-11-04 17:59:50 235

原创 Java之面向对象

了解面向对象的设计思想,首先要了解面向过程的设计思想。面向过程:procedure oriented programming 缩写 POP 面向过程主要针对于分析出解决问题所需要的步骤,然后把步骤一步一步实现。面向过程直接关注流程。面向对象:object oriented programming 缩写 OOP面向对象的编程语言以分类的方式进行思考和解决问题。面向对象需要先对整体关系进行分析并分类,再根据类的不同进行不同的深入处理。面向对象将现实中的客观事物抽象化,更能符合人

2021-11-04 11:40:57 89

原创 一维数组知识点总结

数组的基本概念及作用数组是相同数据类型元素的集合数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型。一维数组数组的创建数组的声明的两种方式:数据类型 [ ] 数组名字 例如:int [ ] a;数据类型 数组的名字[ ] 例如:int a []; 为了避免混淆,建议大家使用第一种声明方式。...

2021-10-30 23:13:00 695

空空如也

空空如也

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

TA关注的人

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