- 博客(43)
- 收藏
- 关注
原创 CompletableFuture 异步回调
目录CompletableFuture 异步回调1 CompletableFuture 简介2 Future 与 CompletableFuture3 CompletableFuture 入门3.1 使用 CompletableFuture3.2 没有返回值的异步任务3.3 有返回值的异步任务3.4 线程依赖3.5 消费处理结果3.6 异常处理3.7 结果合并CompletableFuture 异步回调1 CompletableFuture 简介CompletableFuture 在 Java 里面
2021-11-22 19:23:53
1292
2
原创 JUC- Fork/Join 框架简介
目录Fork/Join 框架简介2 Fork 方法Fork 方法的实现原理3 join 方法4 Fork/Join 框架的异常处理5 入门案例Fork/Join 框架简介Fork/Join 它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。Fork/Join 框架要完成两件事情:Fork: 把一个复杂任务进行分拆,大事化小Join: 把分拆任务的结果进行合并任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务,如果 子
2021-11-22 19:01:07
410
原创 JUC- 线程池
目录ThreadPool 线程池1 线程池简介线程池的优势它的主要特点为:2 线程池参数说明2.1 常用参数(重点)2.2 拒绝策略(重点)3 线程池的种类与创建3.1 newCachedThreadPool(常用)3.2 newFixedThreadPool(常用)3.3 newSingleThreadExecutor(常用)3.4 newScheduleThreadPool(了解)3.5 newWorkStealingPool4 线程池入门案例5 线程池底层工作原理(重要)6 注意事项(重要)Thre
2021-11-22 17:48:32
422
原创 JUC- 阻塞队列
目录BlockingQueue阻塞队列1 BlockingQueue 简介2 BlockingQueue 核心方法2.1 放入数据2.2 获取数据3 入门案例4 常见的 BlockingQueue4.1 ArrayBlockingQueue(常用)4.2 LinkedBlockingQueue(常用)4.3 DelayQueue4.4 PriorityBlockingQueue4.5 SynchronousQueue4.6 LinkedTransferQueue4.7 LinkedBlockingDeque
2021-11-22 15:22:24
462
原创 JUC- 读写锁
目录读写锁1 读写锁介绍场景:线程进入读锁的前提条件线程进入写锁的前提条件2 ReentrantReadWriteLock3 入门案例3.1 实现案例4 小结(重要)5 锁降级demo读写锁ReadWriteLockDemo、ReadWriteDemo1 读写锁介绍场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是,如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操
2021-11-22 14:36:46
650
原创 JUC- 常用的辅助类
常用的辅助类JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过多时 Lock 锁的频繁操作。这三种辅助类为:CountDownLatch: 减少计数(减 1 操作)CyclicBarrier: 循环栅栏(加 1 操作)Semaphore: 信号灯(许可证)CountDownLatch减少计数:CountDownLatch 类可以设置一个计数器,然后通过 countDown 方法来进行 减 1 的操作,使用 await 方法等待计数器不大于 0,然后继续执行 aw
2021-10-28 17:37:26
258
原创 JUC 重点总结
目录WWH???JUC概述1.进程与线程2.并发与并行3.线程的6种状态4.管程5.用户线程和守护线程Lock 接线程间通信线程间定制化通信集合的线程安全多线程锁Callable 接口JUC 三大辅助类ReentrantReadWriteLock读写锁BlockingQueue阻塞队列ThreadPool 线程池Fork/Join 分支合并框架CompletableFuture 异步回调WWH???JUC是什么?为什么要用?学了会怎么样?JUC概述在Java中,线程部分是一个重点。JUC就是
2021-10-20 15:16:24
312
原创 JVM- 运行时数据区
目录内存运行时数据区运行时环境程序计数寄存器作用PC寄存器介绍CPU时间片PC寄存器设定为线程私有的原因使用PC寄存器存储字节码指令地址作用栈背景Java虚拟机栈生命周期作用优点缺点相关问题栈的详细介绍引申--本地方法说明现状为什么要使用Native Method?与Java环境外交互与操作系统交互Sun’s Java本地方法栈堆内存内存是非常重要的系统资源,是硬盘和CPU的中间仓库和桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JV
2021-04-28 10:19:27
340
原创 JVM- 运行时数据区-栈
目录JVM- 运行时数据区-栈背景Java虚拟机栈生命周期作用优点缺点相关问题栈的特点(优点)设置栈内存大小栈的两种异常栈中存储什么?栈帧中存储什么?栈运行原理局部变量表存储单元:Slot静态变量与局部变量的对比变量的分类:JVM- 运行时数据区-栈背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器。Java虚拟机栈Java虚拟机栈 Java Virtual Machine Stack,早期也叫Java栈。每个线程创建时都会创建一个虚拟机栈,
2021-04-28 10:16:07
645
原创 JVM
目录JVM简介内存模型架构类加载器运行时数据区JVM简介JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。内存模型类加载器、运行时数据区、执行引擎、本地接口、本地库架构类加载器类加载器包含三个过程:加载–>链接–>初始化类加载器流程包含运行时数据区1.运行时数据区包含:2.运行时数据区流程包含:...
2021-03-25 11:45:22
161
原创 JVM-类加载器
类加载器子系统类加载器 ClassLoader角色 类加载过程 类的加载过程 类的获取方式启动类加载器 扩展类加载器 应用程序类加载器沙箱机制 双亲委派机制
2021-03-25 11:43:29
530
1
原创 设计模式-七大原则-合成复用原则
合成复用原则Composite Reuse Principle目录合成复用原则基本介绍继承依赖聚合组合基本介绍原则是尽量使用合成/聚合的方式,而不是使用继承 继承依赖聚合组合
2020-12-25 11:40:05
347
原创 设计模式-七大原则-迪米特法则
迪米特法则DemeterPrinciple目录迪米特法则基本介绍案例1运行结果应用实例改进运行结果注意事项和细节基本介绍1. 一个对象应该对其他对象保持最少的了解2. 类与类关系越密切,耦合度越大3. 迪米特法则DemeterPrinciple又叫最少知道原则,即一个类对自己依赖的类知道的越少越好.也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部.对外除了提供的public方法,不对外泄露任何信息4. 迪米特法则还有个更简单的定义:只与直接的朋友通信直接的朋友:每个对象都会
2020-12-25 11:31:30
392
原创 设计模式-七大原则-开闭原则
开闭原则OpenClosedPrinciple目录开闭原则基本介绍案例1运行结果分析:demo输出结果基本介绍1. 开闭原则OpenClosedPrinciple是编程中最基础、最重要的设计原则 (ocp原则)2. 一个软件的实体(eg:类),模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)用抽象构建框架,用实现扩展细节。3. 当软件需求发生变化的时候,尽量通过扩展软件实体的行为实现变化,而不是通过修改已有的代码来实现变化4. 编程中遵循其他原则,以及使用设计模式的目的就是遵循开
2020-12-22 18:27:12
807
1
原创 设计模式-七大原则-里氏替换原则
里氏替换原则Liskov Substitution Principle目录里氏替换原则基本介绍oo中的继承性的思考和说明案例说明输出结果解决方法案例2-解决方案--组合输出结果基本介绍1)里氏替换原则Liskov Substitution Principle在1988年,由麻省理工学院的以为姓里的女士提出的;2)如果对每个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序p在所有的对象o1都代换成o2时,程序p的行为没有发生变化,那么类型T2是类型T1的子类型。换句话说,所
2020-12-22 16:53:18
129
原创 设计模式-七大原则-依赖倒置原则
依赖倒置原则Dependence Inversion Principle目录依赖倒置原则基本介绍依赖倒转原则应用实例方式1分析方案1 DEMO方案2 DEMO输出结果依赖关系传递的三种方式和应用案例依赖倒转原则的注意事项和细节基本介绍1)高层模块不应该依赖低层模块,二者都应该依赖其抽象;2)抽象不应该依赖细节,细节应该依赖抽象;3)依赖倒转(倒置)的中心思想是面向接囗编程;4)依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的
2020-12-15 18:48:07
286
1
原创 设计模式-七大原则-接口隔离原则
基本介绍Interface Segregation Principle:1. 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接囗上UML图 : 3. 类A通过接囗Interface1依赖类B,类c通过接囗Interface1依赖类D,如果接囗Interface1对于类A和类C来说不是最小接囗,那么类B和类D必须去实现他们不要的方法。4. 按接口隔离原则应当这样处理:将接囗Interface1拆分为独立的几个接囗,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔
2020-12-04 16:02:28
191
原创 git-版本控制工具
目录Git是什么下载地址git客户端安装1.鼠标快捷菜单2.运行说明3.换行符转换常用git命令版本库初始化本地仓库设置签名形式:命令:查看状态添加到缓存区从缓存区移除从暂存区提交到本地仓库添加备注提交上次提交补充查看提交日志版本回退/前进reset命令的三个参数比较:softmixedhard命令帮助删除文件找回比较比较本地和暂存区比较本地某个版本:比较所有文件分支查看分支创建分支切换分支远程库地址别名push远程库下载到本地邀请成员加入团队githubPull解决冲突跨团队协作SSH免密登录在线学习G
2020-12-01 19:28:20
329
原创 idea的基本操作-Java 版本修改
Java版本修改目录Java版本修改1.快捷方式:2.点击方式:3切换Java版本3.1 new3.2 Edit1.快捷方式:Ctrl+Alt+Shift+S直接进入切换页面2.点击方式:File–>Project Structure…3切换Java版本图片中有两种方式可以进行切换:3.1 new点击new…进入选择“+JDK”选择Java的安装目录即可,点击OK保存3.2 Edit点击Edit后进入页面点击+号剩余同new的操作即可最后记得Apply一下,就配置
2020-10-28 11:59:36
1806
原创 设计模式-七大原则-单一职责原则
单一职责原则SingleResponsibility目录单一职责原则基本介绍:说明:注意事项:DEMO:方案1:方案2:方案3:基本介绍:对类而言,一个类只负责一项职责。说明:如果类A负责两个不同的职责:职责1和职责2;当职责1需求变更改变A时,可能就会造成职责2执行错误;所以需要将类A的粒度分解为A1,A2注意事项: a. 降低类的复杂度,一个类只负责一项职责 b. 提高类的可读性,可维护性 c. 降低变更引起的风险 d. 通常情况下,应遵循单一职责原则。 只有在逻
2020-09-16 18:38:52
373
原创 设计模式-七大原则
设计模式原则目录设计模式原则设计模式的七大原则有:设计原则核心思想:设计模式的七大原则有:1. 单一职责原则2. 接口隔离原则3. 依赖倒置原则4. 里氏替换原则5. 开闭原则6. 迪米特法则7. 合成复用原则设计原则核心思想:1)找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起2)针对接囗编程,而不是针对实现编程。3)为了交互对象之间的松耦合设计而努力...
2020-09-16 18:24:44
118
原创 Java8 - 方法引用
方法引用目录方法引用lambda表达式一种简写的方式方法引用基本使用方式:方法引用注意事项:DEMO运行结果lambda表达式一种简写的方式* lambda表达式:由接口申明和方法定义组成,* 方法引用 方法的定义有符合接口定义的方法,不用重新定义方法。方法引用基本使用方式:Class::new:获取该实例对象;Class::static_method:调用该class的静态方法;Class::method:调用该class的任意方法;instance::method:调用
2020-08-12 18:04:40
206
原创 Java8 - lambda表达式
lambda表达式目录lambda表达式从基础写法到简化写法lambda表达式的基本写法DEMO从基础写法到简化写法如果方法体只有一条语句,并且是 return 语句,则可以省略方法体大括号简化参数类型,可以不写参数类型,但是必须所有参数都不写简化参数小括号,如果只有一个参数则可以省略参数小括号方法引用 方法归属者::方法名 静态方法的归属者为类名,普通方法归属者为对象lambda表达式的基本写法()-> { };方法参数 goes to( -> ) 方法实现DE
2020-08-12 17:26:14
185
1
原创 java8 - 函数式编程
函数式编程标题函数式编程常用的函数式编程接口函数式编程DEMO运行结果:常用的函数式编程接口Function接收一个输入参数,返回一个结果;输入参数:function.apply(入参T);Consumer接收一个输入参数,无返回操作,accept输入参数;consumer.accept(入参T);Predicate接收一个输入参数,返回一个布尔值结果predicate.test(入参T);Supplier无参数,返回一个结果获取结果 supplier
2020-08-12 16:04:22
407
原创 Oracle--创建表
目录表创建分配空间字段注释表注释表创建CREATE TABLE "库名"."表名" ( "字段1" NUMBER(32,0) NOT NULL, "字段2" DATE, "字段3" VARCHAR2(100 BYTE), ... "字段n" TIMESTAMP(6) DEFAULT SYSDATE)分配空间TABLESPACE "空间名"LOGGINGNOCOMPRESSPCTFREE 10INITRANS 1STORAGE ( INITIAL 65536
2020-08-10 16:41:29
753
原创 oracle--序列
序列基本查询序列说明:1. 创建序列:2. 查询序列明细3. 序列初始化4. 查询当前序列参数5. 修改序列(需要有用户权限):6. 删除基本查询#查询数据字典SELECT object_name,object_id,object_type from user_objects #查询虚拟表 SELECT 8*7 from DUAL; #查询序列明细
2020-08-04 17:15:45
117
原创 oracle-查询所有表,表信息,表字段
目录查询表字段语句1. 查询所有用户下相同表名的列信息2. 查询当前登录用户下表的信息3. 查询所有用户的表的列名和注释4. 查询当前登录用户的表的列名和注释查询表/视图语句1.查询当前登录用户名下的表或视图2.查询所有用户名下的表或视图3.* 字段说明查询表字段语句查看库中表的详细信息1. 查询所有用户下相同表名的列信息# all_tab_columns 查看所有用户表的信息,会造成重复和错误select * from all_tab_columns a -- where owner='用户名
2020-08-04 16:50:42
2493
原创 java基础--分支结构
分支结构任何复杂的程序逻辑都可以通过“顺序”、“分支”、“循环”三种基本程序结构实现。1.“顺序”a.条件满足运行,不满足不运行—if结构if(逻辑表达式){语句1;语句2;}说明:计算逻辑表达式的值,若为true,执行if语句块。b.条件满足运行,不满足运行其他其他语句—if elseif(逻辑表达式){语句1;语句2;}else{语句3;语句4;}说明:计算逻辑表达式的值,若为true,执行if语句块,否则执行else语句块。2.“分支”switch-case语句
2020-07-14 18:56:54
573
原创 Java基础--8种基本类型
基本类型1. 8种基本类型基本类型名称字节数位数整数类型byte18整数类型short216整数类型int432整数类型long864浮点类型float432浮点类型double864字符数据类型char216布尔类型boolean18注:boolean存储逻辑变量true;false2. 基本类型简单介绍基本类型整数类型浮点类型字符数据类型布尔类型byteshortintlong
2020-07-14 15:41:32
358
原创 idea的使用--项目下载/导出
idea 项目下载/导出Git下载步骤一:File --> New --> Project from Version Control -->Git步骤二:Git Repository URL:Git项目路径Parent Directory:项目存放路径Directory Name:项目名Clone(克隆):下载Cancel:取消备注:导出项目之后,加 co...
2019-07-03 18:41:52
14581
原创 MySQL笔记--select基础
MySQL的常用函数时间相关函数DATE_FORMAT(日期字段,'%Y%m%d')//eg:2019-07-03格式修改为20190703DATE_FORMAT('2019-07-03','%Y%m%d')字符拼接函数concat(拼接字段/拼接字符,拼接字符/拼接字段) LPAD(拼接字段,长度,拼接字符)//eg://(1) 序号21 拼接成 YX21concat('Y...
2019-07-03 17:18:19
1615
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人