自定义博客皮肤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)
  • 收藏
  • 关注

原创 CountDownLatch原理-(主线程等待子线程结束再执行)

方法以CAS的操作来减少state,直至state为0就代表所有的线程都调用了countDown方法。当调用await方法的时候,如果state不为0,就代表仍然有线程没有调用countDown方法,那么就把已经调用过countDown的线程都放入阻塞队列Park,并自旋CAS判断state == 0,直至最后一个线程调用了countDown,使得state == 0,于是阻塞的线程便判断成功,全部往下执行。当线程使用countDown方法时,其实使用了。用来进行线程同步协作,等待所有线程完成倒计时。

2023-09-04 11:34:59 170 1

原创 ReentrantLock 原理

可以看到ReentrantLock提供了两个同步器,实现公平锁和非公平锁,都继承自AQS。默认是非公平锁!

2023-09-04 11:25:05 93 1

原创 AbstractQueuedSynchronizer--AQS

其中继承AQS的公平锁类会直接加入到等待队列中,而非公平锁会先尝试获取锁,没有获取到则加入到等待队列。子类主要实现这样一些方法(默认抛出 UnsupportedOperationException)下面都是java中实现AQS的一些类,这些类衍生的子类可以分为公平锁和非公平锁。

2023-09-04 10:49:14 114 1

原创 NIO 非阻塞式IO

Java NIO全称,是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即NewIO),是同步非阻塞的。NIO相关类都被放在java.nio包及子包下,并且对原java.io包中的很多类进行改写。NIO有三大核心部分:Channel(通道)、Buffer(缓冲区)、Selector(选择器)。NIO是面向缓冲区,或者面向块编程的。

2023-08-10 19:42:54 741 1

原创 BIO 阻塞式IO

同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)。方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,以前的唯一选择,程序简单易理解。编程,其相关的类和接口在。

2023-08-08 12:54:00 104

原创 Netty与IO模型简介

1、Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。2、Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。3、Netty 主要针对在 TCP 协议下,面向 Client 端的高并发应用,或者 Peer-to-Peer 场景下的大量数据持续传输的应用。4、Netty 本质是一个 NIO 框架,适用于服务器通讯相关的多种应用场景。Neety常用于各种框架的底层通讯,比如常见的RPC框架Dubbo。

2023-08-07 21:18:04 279

原创 快速上手GIt,版本控制

快速上手GitGit 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。版本控制什么是版本控制?版本控制是一种在开发过程中用于管理文件、目录、工程等内容的修改,方便查看历史记录,备份,恢复以前版本的软件工程技术。Git总的来说技术支持管理多人

2021-11-02 11:33:55 312 1

原创 Mybatis-Plus详解

Mybatis-Plus介绍简介MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性(官网提供)无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作,BaseMapper强大的 CRUD 操作:内置通用 Mapper、通用 Serv

2021-10-29 10:55:03 188485 25

原创 解决typora复制到csdn格式没有保留问题

typora复制到csdn编辑器格式不保留当我们开始在csdn创作时用其自带的文本编辑器及其不方便,一般选择用其他编辑器,编辑后复制到csdn.但是开始创作会发现如下问题格式没有,而且代码块也不显示高亮什么的。。。解决办法1、首先来到个人中心,点击编辑资料2、进入管理页面后点击内容管理3、在左侧点击博客设置,4、选择MarkDown编辑器即可下面有代码块颜色等其他设置,各位可以自行编辑再次新建一个创作时候,将会更换编辑器了...

2021-10-29 10:50:38 476 1

原创 Mybatis-Plus详解

目录Mybatis-Plus介绍快速开始1、创建数据库myBatis-plus2、创建user表插入数据3、初始化项目4、引入对应依赖5、链接数据库(同mybatis)6.使用mybatis-plus日志配置使用yml添加日志配置项执行查询方法查看分析日志插入测试插入及日志分析主键生成策略更新测试更新及日志分析自动填充乐观锁乐观锁原理乐观锁的应用分页查询删除测试常见删除逻辑删除性能分析插件条件构造器W

2021-10-29 00:43:36 285

原创 使用idea操作Github,版本控制(以idea2020版为例)

关于如何使用IDEA操作GitHub1.安装Git客户端与Idea关联1.1.下载git客户端下载地址Git - Downloads这里不详细演示下载详情,记住你的安装路径1.2与idea关联注:我是用的是IDEA2020版本,不同版本略有差异,各位稍微注意一下打开IDEA找到Settings->Version Control->Git,在右侧Path to Git executable中把你的git.exe路径粘上去2.链接你的GitHub账号..

2021-10-27 11:02:35 1799

原创 面向对象设计模式--创建模式--抽象工厂abstract-factory

抽象工厂模式: 围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂----不可以增加产品,可以增加产品族提供了一个创建一系列相关或者相互依赖对象的接口,无需指定他们具体的类 我的理解: 抽象工厂定义了许多产品(即规定了可以创建哪些产品),每一种产品都是一个的接口,里面规定了每一个产品的功能(他告诉我们这个产品可以做什么) 每一个具体工厂都实现了抽象工厂(即告诉我们这个工厂可以产生的本工厂产品有哪些) 而每一个具体工厂生产的产品都实现了 产品这个接口(即实现...

2021-09-19 18:26:49 129

原创 面向对象设计模式--创建模式--工厂方法模式factory-method

工厂模式作用:实现了创建者和调用者的分离OOP(面向对象程序设计)七大原则: https://blog.csdn.net/qq_44065088/article/details/108097839 开闭原则:一个软件实体如类,模块和函数应该对扩展开放 ( 对提供方 ) ,对修改关闭 ( 对使用方) 依赖倒置原则:依赖倒转 ( 倒置 ) 的中心思想是面向接口编程,抽象不应该依赖细节,细节应该依赖抽象 迪米特法则:只与直接的朋友通信核心本质:实例化对象不直接使用new...

2021-09-19 18:03:01 135

原创 面向对象设计模式--创建模式--原型模式prototype

原型模式:属于创建型模式使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 原型模式的UML类图角色:原型 (Prototype) 接口将对克隆方法进行声明。 在绝大多数情况下, 其中只会有一个名为 clone克隆的方法。 具体原型 (Concrete Prototype) 类将实现克隆方法。 客户端 (Client) 可以复制实现了原型接口的任何对象。原型模式将克隆过程委派给被克隆的实际 对象 。模式为所有 支持克隆 的对象声明了一个通用 ...

2021-09-19 17:37:16 116

原创 向上转型、向下转型 A a = new b();

向上转型和向下转型其实是java中的一种多态,继承和实现都有自己的转型方式,他们大致相同,略微在向下转型有一些区别。我们一般称向上转型为瘦身,假如A是B的父类,此时A a = new b();叫做向上转型,会丢失自己和父类不同的方法,而重写父类和自己都有的方法。使用a调用方法时,发现子类有的方法就调用子类,子类没有的调用父类。假如A是B的子类,此时A a = new b();叫做向下转型,但是在这里会有异常发生,因为父类根本不知道到底谁继承了他,这个时候需要强转,而继承还有一个问题就是,必须要先向上转型..

2021-09-19 13:40:57 647

原创 面向对象设计模式--创建模式--单例模式singleton

单例模式: 作用:保证了系统中 该类只存在一个对象,节省了系统资源的浪费, 对于一些想要频繁 创建和销毁的对象, 使用单例模式即可提升系统性能 注意:当实例化一个单例类时,必须使用相应的方法创建 而不是使用new, new构造化实例都是多例的 使用场景: 频繁创建销毁的对象,创建对象耗时过多或耗资源多(即重量级对象), 但又经常用到的对象,工具类对象、频繁访问数据库或者文件对象(比如,数据源、session工厂) 实例: .

2021-09-19 11:33:09 244

空空如也

空空如也

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

TA关注的人

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