自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 mysql补充

展现给用户的是数据库外模式。视图以一种逻辑定义形式保存在数据字典中。当基本表中的数据发生变化时,从视图中查询的数据也将相应改变。

2022-08-11 18:15:45 603 1

原创 定时任务线程池ScheduledThreadPoolExecutor

最大线程数设为Integer.MAX_VALUE,非核心线程空闲时间设置为0。(1)schedule在任务提交delay时间后执行执行结果: (2)scheduleAtFixedRate 在任务提交initialDelay时间后第一次执行,接下来每个周期执行一次,周期的时间大小为max(任务执行所需时间,period)。a、运行结果:initialDelay为5,任务执行时间为4,period为2 b、运行结果:initialDelay为5,任务执行时间为1,period为2 (2)scheduleW

2022-07-14 11:55:29 1323

原创 Zookeeper(三):集群

2、集群中实例的角色及状态(1)集群中的角色当写的请求发送到Follower后会被转发到Leader上(2)集群中的状态 ZAB协议,即zookeeper原子广播协议,用于保证集群中各实例数据的一致性,主要包含两部分:集群正常运行时的用于保证数据一致性的原子广播,崩溃恢复时的数据恢复。用于保证主从数据的同步,核心的思想是:二阶段提交(2pc)和过半原则。a、 二阶段提交: 第一阶段:广播数据的变更提议,Follower在接收到后保存在磁盘事务日志文件中,并返回ack。

2022-07-01 11:40:27 385

原创 Zookeeper(二):watch机制

get -w [path]指令能监控当前节点的数据变化和删除,无法监听到新增因为当前节点为空 ls -w [path]指令能监控到子节点的新增和删除,不能监控到子节点的数据变化和子节点下节点的增删改(1)NodeCache:监控当前节点的增 删 改代码:直接用zk客户端操作: 运行结果: (2)PathChildrenCache:用来监听指定节点 的子节点变化情况代码实例:操作: 结果:(3) TreeCache:结合NodeCache和PathChildrenCahce的特性,是

2022-06-30 15:58:31 519

原创 Zookeeper(一):概述及数据模型

zookepeer是一个分布式协调中间件

2022-06-30 11:45:54 425

原创 Redis(3):Spring集成redis及实现分布式锁

1、pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/m

2022-04-06 01:07:10 709

原创 SpringAOP

1、AOP中的基本概念(1)切面(Aspect):将横切关注点的逻辑进行封装抽象的类。a、包含两个部分:切入点(PointCut)和增强逻辑(Advice)b、通过@Aspect标注的类(2)切入点(PointCut):定义了要进行织入的地方,可以指定一组JoinPoint,Adivce的逻辑会被织入到JoinPoint中对应的位置上 a、通过@Pointcut("表达式")来设置切入点 b、切入点的设置表达式参考:spri...

2022-03-26 18:27:35 471

原创 SpringIOC

1、Spring IOC容器的构建过程IOC容器的构建对应的是AbstractApplicationContext的refresh()方法,主要流程如下图所示 public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { prepareRefresh(); //(1)获取新的BeanFactory

2022-03-22 23:21:10 263

原创 ==与equals()及hashCode()间的关系

1、代码实例package base;public class EqualsDemo { public static void main(String[] args) { int int1 = 12; int int2 = 12; Integer Integer1 = new Integer(12); Integer Integer2 = new Integer(12); Integer Integer3 =

2022-03-21 16:02:31 176

原创 Java线程池及相关类

1、关系图(1)主要包括四个部分:被调用接口,接口的调用方,调用结果,被调用方接口和调用结果的结合。(2)Thread类要求传入Runnable接口的实现,无法只传入Callable接口的实现,所以不能直接使用Thread运行获取运行结果。但通过引入RunnableFuture就能够通过Thread运行并从RunnableFuture中得到运行的结果。2、Runnable接口和Callable<T>接口(1)Runnable接口存在缺陷:不能返回运行的结果且无法抛出受检查的异

2022-03-09 15:35:59 370

原创 java注解使用及原理

1、概述通俗的说是将我们需要的数据通过注解存储起来,当我们需要的时候(编译时或者是运行时)就去获取存储的数据。(1)注解是一种对程序元素设置元数据的方法。(2)元数据是指添加在类,方法,字段,包上的额外信息。(3)注解是一种分散式的设置元数据的方法,而xml配置是一种集中式的设置元数据的方法(4)注解不能直接干扰程序的运行,即添加和删除注解后程序都应当是可运行的2、java.lang.Annotation通过反编译可以知道所有的注解都是接口且继承自java.lang.Annota

2021-11-18 11:54:39 694

原创 Java反射

1、反射的作用(1)在运行时判断对象所属的类(java.lang.reflect.Class类)(2)在运行时获取类的对象(java.lang.reflect.Constructor类)(3)获取修改对象的属性(java.lang.reflect.Field类) (4) 调用对象的方法(java.lang.reflect.Method类)2、java.lang.reflect.Class(1)每一个类都有一个唯一的Class对象用于描述类的信息,一个类只有一个Class对象,但是可.

2021-11-17 11:49:59 121

原创 java泛型

1、概述(1)泛型的目的是使数据的类型参数化(2)定义泛型时不需要指定确定的数据类型,在真正的使用时才指定真正的类型(3)核心目标:解决容器类型在编译时安全检查的问题2、泛型类(1)泛型类的基本形式(2)泛型参数不支持基本数据类型,典型的如容器集合类不支持基本数据类型(3)泛型中的类型在编译时就会被确定,因此在运行时是不会有泛型的信息的package generic;public class GenericDemo<T> { private..

2021-11-16 20:11:40 487

原创 外观模式及日志框架

1、概述外观模式(门面模式):通过在子系统和外部系统之间引入一个门面(Facade),来实现外部系统与子系统间的通信,门面提供一个高层次的接口(将子系统中的方法进行整合),使子系统更易于使用。2、门面模式实例普通模式:门面模式:代码实例://子系统的调用者,不在直接调用子系统中的方法,而是通过门面来完成对子系统的调用public class Employer { public static Contractor contractor=new Contrac..

2021-11-16 14:46:35 334 2

原创 Maven项目依赖冲突

1、定义项目中的A和B依赖不同版本的C导致的冲突2、实例以下为pom文件按中的依赖 <dependencies> <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils --> <dependency> <groupId>commons-beanutils</groupId> <.

2021-11-13 17:15:39 559

原创 Nexus私有服务器搭建

1、安装启动Nexus2、通过浏览器输入: localhost:8081 访问管理界面3、登录并修改4、仓库构建注:仓库主要分为三种类型:proxy(代理仓库),group,hosted(我们通过deploy指令能将依赖上传到此类仓库)(1)依次点击3个红框中的按钮来创建仓库(2)创建proxy类型的仓库,下面依次设置版本的类型(发布,快照,混合),通过账号密码登录,及代理的中央仓库的地址。同理可创建host类型的仓库。创建完成后可见仓库如下:...

2021-11-13 16:51:39 813

原创 mvn命令及生命周期

1、mvn命令(1)通过在Terminal中输入命令和点击右测按钮起到相同的作用。(2)通过mvn指令创建项目:通过 mvn archetype:generate并指定项目名,组件名,包名和使用的模板,创建项目。(3)通过install指令可将打好的jar包添加到本地仓库中,让本地的其他项目能够使用。执行insatll指令后:通过deploy指令可将本地仓库中的jar包上传到到私有服务器或镜像仓库中。2、Maven的生命周期主要包含以下的3种的生命...

2021-11-13 15:37:32 903

原创 Maven中的配置文件

1、Maven中包含的配置文件主要使用到的配置文件为:settings.xml(全局配置文件),pom.xml(项目的配置文件)2、settings.xml详解<?xml version="1.0"?>-<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns:xsi="http://

2021-11-13 15:36:42 10412

原创 Maven环境构建及使用

1、Maven构建及环境配置(1)下载地址:Maven – Download Apache Maven(2)环境配置:将Maven的bin文件夹路径添加到环境变量中配置成功显示以下结果2、在IDEA中使用自己的Maven(1)在创建项目时,如果不自己对Maven进行设置的话,会使用idea自带的Maven插件,全局的配置文件(setting.xml)和本地库文件夹(repository)都在C盘的用户文件夹下(2)可将Maven修改为自己下载的Maven。...

2021-11-13 13:16:18 211

原创 原子类及CAS

1、原子类的作用能够保证线程安全,优点:相对于锁粒度更细(变量级别);通过CAS实现,在竞争更不激烈的情况下效率更高。2、原子类纵览3、基本类型原子类:AtomicInteger常用方法(1)常规的获取和赋值:get(),set(),getAndset()(2)基于CAS的赋值:compareAndSet(int,int) 在比较与预期值相同时进行赋值,并返回赋值操作的是否成功(3)线程安全的i++,i--: getAndIncrement()和getAndDecre...

2021-11-10 19:48:16 223

原创 Java集合

1、概览2、数组与集合类的区别(1)数组的长度是固定,且元素可以为引用也可以是基本的数据类型(2)集合的长度是可变的(可动态扩展),且元素只能是引用数据类型3、Collection和Map的区别(1)Collection一次存一个元素,是单列集合(2)Map一次存的是一个键值对4、List和Set的区别(1)List中元素可重复(2)Set中元素不能重复5、Vector(1)底层实现是数组,因此查询快,增删慢 /** * The...

2021-11-10 19:11:30 410

原创 HashMap源码分析

1、final属性 /** * 默认的初始化的数组的长度(hashMap的容量指的就是数组的长度) */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** *数组允许的最大长度 */ static final int MAXIMUM_CAPACITY = 1 << 30; /** * 默认的负载因子 ..

2021-11-08 12:49:14 356

原创 多线程中的控制并发流程的工具类

1、CountDownLatch(倒计时门闩)(1)流程CountDownLatch是事件驱动的,当计数不断减少达到到0时,等待的线程(调用CountDownLatch.await()的线程)会被唤醒。(2)主要方法a、构造函数:传入要倒计数的次数b、await:让调用的线程进入阻塞状态,直到计数为0c、countDown():倒计数(3)用法:一等多:一个线程等待多个线程运行完成(并行运行,但完成顺序有先后)后开始运行,常用场景如检查多等一:在一个线程c...

2021-11-04 09:41:23 137

原创 Java中的锁

1、Synchronized的不足(1)试图获取锁时无法设置超时,也无法响应中断(2)不够灵活,加锁解锁的方式单一(与读写锁对比)(3)无法法知道是否成功获取了锁2、Lock接口(1)lock()与unlock() 用于获取锁释放锁,作用和synchronized作用相同,不同点在于发生异常时synchronized会自动释放锁,而lock()必须通过unlock()手动释放(2)tryLock():Boolean立刻尝试获取锁,获取到返回true,未获取到返回false;如果.

2021-11-02 18:09:21 137

原创 不变性与final的用法

1、不变性如果一个对象被创建之后状态就不能被修改就具有不变性,具有不变性的对象一定是线程安全的。2、final修饰变量属性被声明为final后只能被赋值一次,一旦被赋值就不能修改(1)final修饰的是是基本类型的数据,就表示这个数据不能变(2)final修饰的是对象引用,该引用的指向不能变(不能指向其他对象),但指向的对象的属性(内容)是可以变的(3)final修饰的变量是类的一般属性时赋值的时机:变量声明时等号右边,构造函数中,初始化代码块中(4)final修饰的变量是类

2021-11-01 17:16:16 77

原创 ThreadLocal的使用及原理

1、使用场景(1)每一个线程需要一个独享的对象(通常是工具类,如SimpleDateFormate)代码实现1:将SimpleDateFormat作为静态变量,多个线程之间共用,由于SimpleDteFormat是线程不安全的所以会出错,打印出相同的时间;如果在format()前加上锁会使得效率变的非常低。代码实现2:每次都创建一个SimpleDateFormat对象,这样会创建1000个对象,造成很大的浪费代码实现3:使用ThreadLocal并覆盖初始化...

2021-10-27 13:46:24 177

原创 死锁及相关检测与处理

1、发生死锁的4个必要条件(1)互斥条件,一个资源只能被一个线程持有(2)请求保持条件,保持自己资源的同时请求其他资源(3)不剥夺条件,不存在外界的介入,将资源从线程中剥夺。(4)循环等待,构成环形依赖2、死锁实例:银行转账3、死锁定位(1)利用命令行jstack进入${JAVA_HOM}/bin,运行jps获取进程id,通过jstack [进程ID]查看检测到各个线程的状态:检测到死锁信息如下:(2)利用代码:Thread...

2021-10-24 12:02:41 311

原创 单例模式的实现

1、单例模式的作用节省内存和计算、保证结果的正确、方便管理2、单例模式的适用场景(1)无状态的工具类,如日志打印等(2)全局的信息类,只需要一个全局共享的信息类,便于管理保证数据的一致性3、实现单例模式的7种写法1:饿汉式(静态常量)(线程安全,非懒加载):在由static修饰的INSTANCE在类加载的时候就完成了实例的创建,如果不使用它可能存在内存浪费的情况,但它是线程安全的。4、实现单例模式的7种写法2:饿汉式(静态代码块)(线程安全,非懒加载)效果与静态常量相同

2021-10-23 10:39:59 53

原创 java内存模型JMM

1、java代码到CPU指令的过程(1)我们最开始编写的是.java文件(2)通过javac可以将其编译成与平台无关字节码文件(.class文件)(3)各个平台的JVM会将字节码翻译成各个平台的机器指令。(4)机器指令可以直接在CPU上运行,也就是最终程序的执行2、JMM是什么?JMM是一个标准,在不同的平台上JVM会将相同的字节码翻译成不同的机器指令,由于最终依赖处理器,不同处理器结果不一样,这样无法保证并发安全,所以需要一个标准来让多线程运行的结果可预期。3、JMM的

2021-10-22 16:55:09 65

原创 JVM内存结构和Java对象模型

JVM内存结构、1、概述:JVM内存结构主要包含5个部分:方法区、堆、java栈、本地方法栈、程序计数器,其中方法区和堆是线程共有的空间,而程序计数器,本地方法栈,java栈为线程私有的2、方法区(1)方法区存储的是类级别的所有信息,想想对一个java类文件,从头到位它包含的信息包括:类信息(类的名字,实现的接口,字段,方法),类级别的变量即static修饰的静态变量,常量等数据。(2)由于方法区包含主要的是类级别的信息,因此它对于所有线程都应该是可见的,即它是线程间所共享的.

2021-10-21 12:22:38 76

原创 线程属性与异常处理

1、线程属性子线程会继承父线程的属性 (1)线程ID,主要是Jvm使用的,是从1(主线程)开始递增的用于标记每一个线程。(2)守护线程和用户线程:当所有的用户线程运行结束时,JVM会退出,程序运行结束。守护线程不影响JVM的退出。(3)java线程的优先级有10个级别,默认是5,JVM会把java的优先级映射到操作系统中,不同操作系统的优先级数目不同,且优先级会被操作系统改变,因此程序设计不依赖于优先级。2、线程未捕获异常处理...

2021-10-19 17:07:30 104

原创 线程的生命周期

1、线程的生命周期(状态)(1)线程一共有6种状态分别为:New:新创建状态,当new一个Thread对象,但未调用start方法后就处于该状态Runnable:可运行状态,可运行状态实际上分为两种状态一种时Running(正在运行),另 一种是Ready(已准备),这两种状态统称为可运行状态,当线程的start方法被调用后 就会处于reedy状态,此时线程会等待分配CPU时间片,当获取到时间片之后就处于 running状态,同理当时间片用完(系统调度,或调用了yield方法)之后就又回到了re

2021-10-19 17:01:10 1782

原创 synchronized解析

1、作用:保证在同一个时刻只能有一个线程运行该段代码(synchronized修饰的代码段或方法),以保证并发安全。2、用法:一个类可以有多个的实例对象,一个类只有一个class对象用于描述这个类,根据锁的对象的类型(普通实例对象,class对象)将用法分为对象锁和类锁。(1)对象锁:锁的对象为普通实例对象,两种形式:(method1,method2)方法锁(非static方法的锁对象为this即当前实例对象)和同步代码块锁(指定的锁对象)(2)类锁:锁的对象为class对象,两种.

2021-10-17 17:56:32 65

原创 mysql索引

索引的作用提高数据查询的速度有序性和数据插入的矛盾保持数据的有序性能够提高范围查询的效率,但是在插入数据时为了维护数据的有序性会产生更大的性能的消耗,索引的选择要根据具体业务对这两种情况进行平衡索引的数据模型及各自的优缺点(从等值查询、范围查询、数据更新角度分析)有序数组优点:在等值查询和范围查询中都有很好的性能缺点:为了维护数据的有序性,在数据插入或删除数据时要移动插入位置之后的数据,更新成本很高哈希表(输入一个Key值通过特定的hash算法获取存储的位置,计算出的值相同时即发生h

2021-10-15 14:52:37 142

原创 mysql事务和锁

1、 ACID2、 失误隔离级别及多个事务同时执行时存在的问题3、 事务隔离的实现4、 锁的分类5、 全局锁和表级锁、MDL锁6、 行锁(二阶段锁协议,死锁和死锁的检测)MVCC及MVCC中唯一性视图的实现 查询语句的执行状态,查找给表加锁的线程 幻读的定义及幻读产生的问题 间隙锁和next-key lock 事务和Binlog日志的选择......

2021-10-15 14:27:10 94

原创 Hibernate基础核心解析(1)

Hibernate基础核心解析(1) 基本过程:   一个*.hbm.xml对应一个POJO类,用于保存从类到关系映射的信息,hibernate.cfg.xml信息会获取映射源,同时保存关于连接数据库所需的基本信息。Configuration接口产生一个对应的对象用于加载配置信息,configuration对象产生一个对应于数据库的SessionFactory对象,SessionFac

2017-09-11 16:58:20 128

原创 JDK解析

1、  JDK、JRE、JVM(1)      JDK(JAVA DEVELOPMET KIT)JDK顾名思义是JAVA的SDK(softwaredevelopment kit 软件开发包),JDK里面包含了JRE(2)      JRE(JAVA RUNTIMEENVIROMENT)JAVA 运行时环境,为java程序的运行提供基础条件,包含JVM标准实现及Java核心类库,JR

2017-08-30 15:23:21 940

AIndexEODPrices_2005.xml.gz

AIndexEODPrices_2005.xml.gz

2021-06-16

空空如也

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

TA关注的人

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