狐言不胡言

导航

04 2021 档案

手写Spring AOP,快来瞧一瞧看一看撒!
摘要:(手写AOP) 上面两篇内容说到了手写IOC和DI,本篇内容就是手写AOP,由于内容中使用到了上面两篇内容写的代码,所以此处贴下链接: 手写Spring IOC容器:点击进入 手写Spring DI依赖注入:点击进入 AOP分析 AOP是什么 Aspect Oriented Programming 阅读全文

posted @ 2021-04-21 20:27 狐言不胡言 阅读(833) 评论(0) 推荐(1)

手写Spring DI依赖注入,嘿,你的益达!
摘要:(手写DI) 上一篇文章中说到,如何手写Spring IOC容器,有了IOC,下面就是手写DI了,根据上一篇文章中的代码继续往下进行,手写Spring IOC入口:点击链接 提前实例化单例Bean 对于单例Bean,可以使用下面的方法进行提前实例化 /** * 提前构建单例bean的工程 */ pu 阅读全文

posted @ 2021-04-17 11:29 狐言不胡言 阅读(237) 评论(0) 推荐(0)

我自横刀向天笑,手写Spring IOC容器,快来Look Look!
摘要:(手写IOC容器) 相信很多朋友对Spring已经很熟悉了,面试中也经常会被问到Spring里面相关的知识,比如IOC、DI、AOP等,下面通过手写IOC的方式来对IOC里面相关的内容,进行熟悉和理解 IOC分析 IOC是什么 Inversion of Control 控制反转,也称依赖倒置(反转) 阅读全文

posted @ 2021-04-17 11:28 狐言不胡言 阅读(293) 评论(0) 推荐(0)

嗨,你知道吗,Spring还有这些高级特性!
摘要:(Spring高级特性) 日常开发使用非常多的Spring,它的设计理念是什么呢?有哪些核心的组件呢?为啥又需要这些组件呢?在Spring中用到了哪些设计模式呢?Spring有哪些高级特性,该如何使用呢?本文将对这些做简要的介绍,希望看完本文您能了解这些知识! Spring介绍 Spring是一个J 阅读全文

posted @ 2021-04-17 11:27 狐言不胡言 阅读(388) 评论(0) 推荐(0)

DevOps之Jenkins相关知识
摘要:(Jenkins相关知识) 认识Jenkins 持续集成 持续集成 Continuous integration (CI): 1:概念作用 每个小组分别负责各个模块的开发,模块独立测试虽然可以通过,上线之前把所有模块整合到一起测试会发现很多问题,解决的方法无非就是把代码返工修改,但是可能还会存在问题 阅读全文

posted @ 2021-04-17 11:25 狐言不胡言 阅读(535) 评论(1) 推荐(1)

一起来看Java设计思想之23种设计模式
摘要:(23种设计模式) 怎么使用设计模式 为什么要使用设计模式? 编写代码,写接口、写类、写方法 用设计模式做设计的作用是什么? 指导、规定如何去写代码,如何写接口、写类、写方法 为什么要用设计模式? 需求会变,代码会变,为了应对变化,为了以后方便拓展,做到以不变应万变,不变的是变化 如何着手使用设计模 阅读全文

posted @ 2021-04-17 11:14 狐言不胡言 阅读(181) 评论(0) 推荐(0)

简单的了解下Java设计模式:迭代器模式(转载)
摘要:迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 Java 开发过程中遍历是常用的。如下边程序: for(int i =0 ;i<arr.length;i++){ System.out.println(arr[i]); } f 阅读全文

posted @ 2021-04-17 11:08 狐言不胡言 阅读(90) 评论(0) 推荐(0)

被遗忘的设计模式——空对象模式(转载)
摘要:版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qiumengchen12/article/details/44923139 Pattern name Provide an object 阅读全文

posted @ 2021-04-17 11:05 狐言不胡言 阅读(86) 评论(0) 推荐(0)

简单的介绍一下Java设计模式:解释器模式
摘要:(解释器模式) 定义 解释器模式是类的行为型模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,客户端可以使用这个解释器来解释这个语言中的句子 意图 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子 主要解决问题 对于一些固定文 阅读全文

posted @ 2021-04-17 11:03 狐言不胡言 阅读(124) 评论(0) 推荐(0)

Tony老师带你来看Java设计模式:代理模式
摘要:(代理模式) 定义 为其他对象提供一种代理来控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用 作用 不改变原类的代码,而增强原类对象的功能 可以选择前置、后置、环绕、异常处理增加 意图 为其他对象提供一种代理以控制对这个对 阅读全文

posted @ 2021-04-17 11:00 狐言不胡言 阅读(137) 评论(0) 推荐(0)

观世音甘泉活树的故事竟然是Java设计模式:备忘录模式
摘要:(备忘录模式) 定义 备忘录模式是对象的行为型模式,备忘录对象是一个用来存储另外一个对象内部状态的快照的对象,备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化存储起来,从而可以使得在将来合适的时候把这个对象还原到存储起来的状态 意图 在不破坏封装性的前提下,捕获一个对象的内部 阅读全文

posted @ 2021-04-17 10:59 狐言不胡言 阅读(104) 评论(0) 推荐(0)

由电脑专卖系统引发的Java设计模式:访问者模式
摘要:(访问者模式) 定义 访问者模式是对象的行为型模式,它的目的是封装一些施加于某些数据结构元素之上的操作,一旦这些操作需要修改的话,接收这个操作的数据结构则可以保持不变 意图 将数据结构与数据操作分离 解决问题 稳定的数据结构和易变的操作耦合问题 何时使用 要对一个对象结构中的对象进行很多不同的并且不 阅读全文

posted @ 2021-04-17 10:58 狐言不胡言 阅读(75) 评论(0) 推荐(0)

孙悟空的身外身法术使用了Java设计模式:原型模式
摘要:(原型模式) 定义 原型模式属于对象的创建型模式,通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的用意 java语言的构建模型直接支持原型模式,所有的JavaBean都继承自java.lang.Object,而且Object类提供了 阅读全文

posted @ 2021-04-17 10:55 狐言不胡言 阅读(184) 评论(0) 推荐(0)

安装电脑思考到了Java设计模式:建造者模式
摘要:(建造者模式) 定义 建造者模式是对象的创建型模式,可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象 建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造者零件的责任分割开来,达到责任划分和封装的目的 阅读全文

posted @ 2021-04-17 10:53 狐言不胡言 阅读(101) 评论(0) 推荐(0)

女娲造人引发思考之Java设计模式:工厂模式
摘要:(工厂模式) 工厂模式的几种形态 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态的决定将哪一个类实例化,不必事先知道每次要实例化哪一个类,工厂模式有以下几种形态: 简单工厂(Simple Factory)模式:又称为静态工厂方法模式 工厂方法(Factory Method)模式:又称为 阅读全文

posted @ 2021-04-17 10:52 狐言不胡言 阅读(299) 评论(0) 推荐(0)

这个世界上只有一个你之Java设计模式:单例模式
摘要:(单例模式) 单例模式的要点 单例模式属于创建型模式 三个要点: 某个类只能有一个实例 它必须自己创建这个实例 它必须自行向整个系统提供这个实例 单例模式的特点 单例类只能有一个实例 单例类必须自己创建自己的唯一的实例 单例类必须给所有其他对象提供这一实例 饿汉式单例类 线程安全,实现简单 优点:没 阅读全文

posted @ 2021-04-17 10:50 狐言不胡言 阅读(102) 评论(0) 推荐(0)

由奶茶店突发奇想开始了Java设计模式:享元模式
摘要:(享元模式) 定义 享元模式是对象的结构模式,享元模式以共享的方式高效的支持大量的细粒度对象,主要用于减少创建对象的数量,以减少内存占用和提高性能 享元对象能做到共享的关键在于区分了内蕴状态和外蕴状态 内蕴状态是存储在享元对象内部的,并且是不会随环境的改变而有所不同,因此,一个享元对象可以具有内蕴状 阅读全文

posted @ 2021-04-17 10:49 狐言不胡言 阅读(108) 评论(0) 推荐(0)

老和尚给小和尚讲故事引发了Java设计模式:组合模式
摘要:(组合模式) 示例 有一个绘图系统,可以描绘各种图形,假设现在可以描绘线、长方形、圆形 定义一个抽象类,所有的图形继承此类,完成绘图: public abstract class Graphics { /** 绘图 */ public abstract void draw(); } 线、长方形、圆形 阅读全文

posted @ 2021-04-17 10:47 狐言不胡言 阅读(242) 评论(0) 推荐(0)

从中国加入WTO来看Java设计模式:中介者模式
摘要:(中介者模式) 应用场景 系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类 中介者模式 定义 包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用,从而使得他们比较松散的耦合 设计原则:迪米特 阅读全文

posted @ 2021-04-17 10:46 狐言不胡言 阅读(95) 评论(0) 推荐(0)

从西天取经的九九八十一难来看Java设计模式:模板方法模式
摘要:(模板方法模式) 示例 当我们设计一个类时,我们能明确它对外提供的某个方法的内部执行步骤, 但一些步骤,不同的子类有不同的行为时,我们该如何来设计该类? 下面以玩王者荣耀为例展开学习: 玩游戏首先需要初始化游戏,然后加载地图、加载角色、然后才能开始游戏,最后结束游戏 定义一个Game类: publi 阅读全文

posted @ 2021-04-17 10:45 狐言不胡言 阅读(129) 评论(0) 推荐(0)

八戒转世投胎竟然是Java设计模式:桥接模式
摘要:(桥接模式) 示例 请开发一个画图程序,可以画各种颜色不同形状的图形,请用面向对象的思 想设计图形 分析: 1、比如有红、黄、蓝三种颜色 2、形状有方形、圆、三角形 3、圆可以是红圆、黄圆、蓝圆 从上面可以看到,变化的地方有两个: 1、形状 2、颜色 任其在两个维度各自变化,为这两个维度搭个桥,让它 阅读全文

posted @ 2021-04-17 10:42 狐言不胡言 阅读(106) 评论(0) 推荐(0)

曾侯乙编钟引发的遐想之Java设计模式:状态模式
摘要:(状态模式) 示例 一个类对外提供了多个行为,同时该类对象有多种状态,不同状态下对外的 行为的表现不同,我们该如何来设计该类让它对状态可以灵活扩展? 以自动售卖饮料机为例开发一个程序: 用户可以在饮料机上进行支付、退款、购买、取货操作 不同的状态下,这四种操作会有不同的表现 例如:在用户没有支付的情 阅读全文

posted @ 2021-04-17 10:41 狐言不胡言 阅读(87) 评论(0) 推荐(0)

玉帝传美猴王上天,大闹天宫之Java设计模式:命令模式
摘要:(命令模式) 示例 系统需要设计一个命令行界面,用户可输入命令来执行某项功能,系统的功能会不断增加,命令也会不断的增加 如何将一项一项的功能加入到这个命令行界面? 如何让命令行程序写好后,不因功能的添加而修改,又可以灵活的加入命令和功能? 下面以奶茶店售卖奶茶为例: public class Mas 阅读全文

posted @ 2021-04-17 10:40 狐言不胡言 阅读(216) 评论(0) 推荐(0)

击鼓传花联想到了Java设计模式:责任链模式
摘要:(责任链模式) 应用场景 http web请求处理,请求过来后将经过转码、解析、参数封装、鉴权等一系列的处理(责任),而且要经过多少处理是可以灵活调整的 那么该怎么做呢? 将所有的处理都写在一个类中行不行呢? 分成多个类又该如何灵活的组合在一起呢? 简单示例 Request类: public int 阅读全文

posted @ 2021-04-17 10:36 狐言不胡言 阅读(208) 评论(0) 推荐(0)

由一名保安引发的Java设计模式:外观模式
摘要:(外观(门面)模式) 应用场景 使用方要完成一个功能,需要调用提供方的多个接口、方法,调用过程复杂时,我们可以再提供一个高层接口(新的外观),将复杂的调用过程向使用方隐藏,适配器模式的变种 外观模式 定义 隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口 意图 为子系统中的一组接口提供 阅读全文

posted @ 2021-04-17 10:35 狐言不胡言 阅读(265) 评论(0) 推荐(0)

指方画圆之Java设计模式:适配器模式
摘要:(适配器模式) 应用场景 使用者依赖的接口与提供者的接口不匹配时,就加一层适配,而不修改两端的代码 生活中使用的风扇,假设插头是两孔的,但是我们家里墙上的插座只有三孔的,这个时候就需要一个适配器了,这个适配器就是外面买的插座,以上场景为例,写一个例子: 三孔的插座: public class Thr 阅读全文

posted @ 2021-04-17 10:34 狐言不胡言 阅读(148) 评论(0) 推荐(0)

什么?女神发了朋友圈,快来围观之Java设计模式:观察者模式
摘要:(观察者模式) 观察者模式 示例 微信公众号,关注就可以收到推送的消息,取消关注就不会收到 定义 定义了对象之间一对多的依赖关系,当一端对象发生改变时,它的所有依赖者都会收到通知并自动更新(被调用更新方法) 观察者模式也被称为:监听模式、发布订阅模式。提供了一种对象之间松耦合的设计方式 面向接口编程 阅读全文

posted @ 2021-04-17 10:33 狐言不胡言 阅读(140) 评论(0) 推荐(0)

由孙悟空的七十二变看Java设计模式:装饰者模式
摘要:(装饰者模式) 应用场景 京东、天猫双十一,情人节商品大促销,各种商品有不同的促销活动 满减:满200减50 每满减:每满100减10 打折:买两件8折,三件7折 数量减:满三件减去最低价的一件 假设现在顾客买了两件衣服先是打了8折,然后又满200减了50,促销活动多重叠加了,该如何灵活实现订单金额 阅读全文

posted @ 2021-04-17 10:32 狐言不胡言 阅读(131) 评论(0) 推荐(0)

诸葛亮的锦囊妙计竟然是大名鼎鼎的Java设计模式:策略模式
摘要:(策略模式) 应用场景 京东、天猫双十一,情人节商品大促销,各种商品有不同的促销活动 满减:满200减50 每满减:每满100减10 打折:买两件8折,三件7折 数量减:满三件减去最低价的一件 顾客在下单的时候可以选择其中几种来剁手,那么后端怎么来灵活的应对金额的计算呢,以后可能不同的节日还会有更多 阅读全文

posted @ 2021-04-17 10:28 狐言不胡言 阅读(166) 评论(0) 推荐(0)

Java面向对象7大设计原则
摘要:(设计原则) 单一职责原则 SRP 一个类只有一个引起修改变化的原因,也就是只负责一个职责。核心思想:高内聚,低耦合 假设一个类有多个功能,当修改其中一个功能的时候,可能会对其他功能造成影响 优点: 1:降低类的复杂度,一个类负责一个职责,比负责多项职责要简单 2:代码的可读性提高了,也方便以后的维 阅读全文

posted @ 2021-04-17 10:27 狐言不胡言 阅读(200) 评论(0) 推荐(0)

Java面向对象OOP思想概述
摘要:(Java设计思想) OOP思想(Object Oriented Programming) 类和对象 在面向对象中,类和对象是最基本、最重要的组成单元 类:类可以说是一个模板,它描述了一类对象的行为和状态 对象:对象是类的一个实例,有对应的状态和行为 类是做什么用的呢:模拟现实,封装数据和代码 假如 阅读全文

posted @ 2021-04-17 10:22 狐言不胡言 阅读(399) 评论(0) 推荐(0)

Maven相关知识总结
摘要:(Maven知识) 认识Maven Maven是Apache软件基金会组织维护的一款自动化构建工具, 专注于Java平台工程的项目构建和依赖管理: 1:项目构建 构建不是创建,创建一个工程并不等于构建一个项目,用Maven可以管理项目开发的整个生命周期 2:依赖管理 管理项目依赖的所有jar文件,M 阅读全文

posted @ 2021-04-17 10:17 狐言不胡言 阅读(80) 评论(0) 推荐(0)

Git分支及其协同开发
摘要:(Git协同开发) Git分支 Git鼓励在工作流程中频繁的使用分支与合并,哪怕一天之内进行很多次 1:Git的必杀技特性:分支模型 2:Git分支处理非常的轻量级,可以瞬间完成新建分支 3:分支切换比较快捷方便 4:分支是Git强大独特的地方 想要很好的理解Git分支,需要先理解Git是如何保存数 阅读全文

posted @ 2021-04-17 10:16 狐言不胡言 阅读(140) 评论(0) 推荐(0)

认识Git并了解Git的基本知识
摘要:(Git基础知识) 认识Git 版本控制 版本控制是一种记录文件内容变化,方便以后查阅特定版本修改情况的系统 版本控制的发展史 1:本地版本控制系统 主要是采用简单的数据库来记录文件历次更新的差异 在硬盘上保存文件修订前后的变化 那么,上面这种控制系统,只能在本地使用,怎么能让不同的开发者协同工作呢 阅读全文

posted @ 2021-04-17 10:15 狐言不胡言 阅读(127) 评论(0) 推荐(0)

Linux入门之基本的概念、安装和操作
摘要:(Linux入门) Linux基本概念 1: 内核 简单来说,就是将计算机硬件运作起来的程序 Linux内核模块有下面这些:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化引导、系统调用等 2:发行版 发行版,就是把内核和应用软件做一个打包 3:磁盘分区 磁盘分区是把 阅读全文

posted @ 2021-04-17 10:13 狐言不胡言 阅读(196) 评论(0) 推荐(0)

RPC理论介绍
摘要:(RPC理论) RPC概述 RPC是什么 RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TPC/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层 阅读全文

posted @ 2021-04-17 10:12 狐言不胡言 阅读(149) 评论(0) 推荐(0)

网络编程Netty IoT百万长连接优化
摘要:(Netty IOT百万长连接优化) IoT推送系统 IoT是什么 The Internet of things的简称IoT,即是物联网的意思,具体的知识请查阅:什么是Iot?什么是AIot? IoT推送系统的设计 比如说,像一些智能设备,需要通过APP或者微信中的小程序等,给设备发送一条指令,让这 阅读全文

posted @ 2021-04-17 10:02 狐言不胡言 阅读(590) 评论(0) 推荐(0)

网络编程Netty入门:Netty的启动过程分析
摘要:(Netty引导) Netty的启动过程 Bootstrap Bootstrap是Netty中负责引导服务端和客户端启动的,它将ChannelPipeline、ChannelHandler和EventLoop组织起来,让它成为一个可以实际运行的程序,引导一个应用程序,简单来说,是先对它进行配置,然后 阅读全文

posted @ 2021-04-17 10:01 狐言不胡言 阅读(237) 评论(0) 推荐(0)

网络编程Netty入门:ByteBuf分析
摘要:(高性能ByteBuf) Netty中的ByteBuf优势 NIO使用的ByteBuffer有哪些缺点 1: 无法动态扩容,ByteBuffer的长度是固定的,是初始指定的值,不能够再进行扩容了,当写入的内容大于ByteBuffer的容量时,会报越界异常 2.: API使用复杂,当要读取数据时,需要 阅读全文

posted @ 2021-04-17 09:53 狐言不胡言 阅读(427) 评论(0) 推荐(0)

网络编程Netty入门:责任链模式介绍
摘要:(Netty责任链) 责任链模式 责任链模式为请求创建一个处理数据的链。 客户端发起的请求和具体处理请求的过程进行了解耦,责任链上的处理者负责处理请求,客户端只需要把请求发送到责任链就行了,不需要去关心具体的处理逻辑和处理请求在责任链中是怎样传递的。 想要深入的了解责任链模式,推荐看这篇文章:责任链 阅读全文

posted @ 2021-04-17 09:50 狐言不胡言 阅读(432) 评论(0) 推荐(0)

网络编程Netty入门:EventLoopGroup分析
摘要:(网络编程之Netty) Netty线程模型 Netty实现了Reactor线程模型,有四个部分: resources:资源,任务,就是客户端的请求 同步事件复用器:事件轮询,boss线程的selector轮询获取客户端的事件 dispatcher:分配器,boss线程会把客户端的请求分配给work 阅读全文

posted @ 2021-04-17 09:49 狐言不胡言 阅读(773) 评论(0) 推荐(0)

网络编程Netty入门:Netty简介及其特性
摘要:(网络编程之Netty) Netty的简介 Netty是一个java开源框架,是基于NIO的高性能、高可扩展性的异步事件驱动的网络应用框架,简化了TCP、UDP服务器和客户端的网络编程。 很多开源的项目,底层都使用了Netty,例如Dubbo、Elasticsearch、Facebook等,其他的支 阅读全文

posted @ 2021-04-17 09:48 狐言不胡言 阅读(245) 评论(0) 推荐(0)

网络编程NIO之Reactor线程模型
摘要:(Reactor线程模型) 上篇文章中写了一些NIO相关的知识以及简单的NIO实现示例,但是示例中,客户端连接以及读取、写入、处理客户端数据时都是在一个线程中,单个线程处理客户端的数据,性能会很差,而且不能充分利用服务器的性能,这篇文章主要介绍Reactor线程模型,NIO的多路复用知识,用以提供服 阅读全文

posted @ 2021-04-17 09:46 狐言不胡言 阅读(379) 评论(0) 推荐(0)

网络编程之BIO和NIO
摘要:(网络编程) OSI网络七层模型 为了使不同的计算机厂家的计算机可以相互通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。国际标准化组织ISO推荐了一个网络系统结构 七层参考模型。 每层的主要功能: TCP/UDP协议 TCP协议(传输控制层协议),是Internet 阅读全文

posted @ 2021-04-17 09:45 狐言不胡言 阅读(169) 评论(0) 推荐(0)

ForkJoinPool的工作原理和使用
摘要:场景:当任务很多,成千上万个,或者单个任务很大,执行起来很耗时间,这时,就可以把任务进行拆分,拆分成多个小任务去执行,然后小任务执行完毕后再把每个小任务执行的结果合并起来,这样就可以节省时间。 ForkJoinPool实现了ExecutorService接口,所以它也是一种线程池,做的工作就是,把一 阅读全文

posted @ 2021-04-17 09:31 狐言不胡言 阅读(2001) 评论(0) 推荐(0)

Queue API的几种实现详解
摘要:(Queue API详解) Queue API的几种方法的使用 方法名称 作用 描述 add 添加元素到队列 如果队列满了就抛异常java.lang.IllegalStateException remove 移除并且返回队列头部元素 如果队列为null,就抛异常java.util.NoSuchEle 阅读全文

posted @ 2021-04-17 09:30 狐言不胡言 阅读(493) 评论(0) 推荐(0)

HashSet、CopyOnWriteArraySet、ConcurrentSkipListSet源码解析(JDK1.8)
摘要:(set源码解析) HashSet源码解析 HashSet简单使用的demo public static void main(String[] args) { Set<String> set = new HashSet<>(); set.add("中国"); set.add("你好"); set.a 阅读全文

posted @ 2021-04-17 09:26 狐言不胡言 阅读(182) 评论(0) 推荐(0)

ArrayList、CopyOnWriteArrayList源码解析(JDK1.8)
摘要:本篇文章主要是学习后的知识记录,存在不足,或许不够深入,还请谅解。 ArrayList源码解析 ArrayList中的变量 通过上图可以看到,ArrayList中总共有7个变量,下面看下每个变量的作用: /** * 序列化 */ private static final long serialVer 阅读全文

posted @ 2021-04-17 09:25 狐言不胡言 阅读(78) 评论(0) 推荐(0)

HashMap、ConcurrentHashMap 1.7和1.8对比
摘要:本篇内容是学习的记录,可能会有所不足。 一:JDK1.7中的HashMap JDK1.7的hashMap是由数组 + 链表组成 /** 1 << 4,表示1,左移4位,变成10000,即16,以二进制形式运行,效率更高 * 默认的hashMap数组长度 * The default initial c 阅读全文

posted @ 2021-04-17 09:23 狐言不胡言 阅读(414) 评论(0) 推荐(0)

多线程之Lock接口
摘要:之前写了一下synchronized关键字的一点东西,那么除了synchronized可以加锁外,JUC(java.util.concurrent)提供的Lock接口也可以实现加锁解锁的功能。 看完本文,希望您可以了解或者掌握: 1:Lock接口的实现 2:Condition的原理和概念 3:Ree 阅读全文

posted @ 2021-04-16 15:42 狐言不胡言 阅读(111) 评论(0) 推荐(0)

synchronized锁由浅入深解析
摘要:一:几种锁的概念 1.1 自旋锁 自旋锁,当一个线程去获取锁时,如果发现锁已经被其他线程获取,就一直循环等待,然后不断的判断是否能够获取到锁,一直到获取到锁后才会退出循环。 1.2 乐观锁 乐观锁,是假设不会发生冲突,当去修改值的时候才判断是否和自己获得的值是一样的(CAS的实现,值也可以是版本号) 阅读全文

posted @ 2021-04-16 15:27 狐言不胡言 阅读(405) 评论(0) 推荐(0)

获取线程的执行结果
摘要:一:Runnable和Callable的区别 最本质的区别在于,Runnable没有返回结果,Callable会有一个返回结果,返回结果是泛型,可以自己定义。举例子说明: public class ThreadRunnable { public static void main(String[] a 阅读全文

posted @ 2021-04-16 15:25 狐言不胡言 阅读(127) 评论(0) 推荐(0)

线程stop和Interrupt
摘要:一:stop终止线程 举例子: public class ThreadStop { public static int i; public static int j; public static void main(String[] args) throws InterruptedException 阅读全文

posted @ 2021-04-16 15:17 狐言不胡言 阅读(194) 评论(0) 推荐(0)

线程安全之原子性
摘要:一:非原子性的原因 先举个栗子: public class ThreadCount { volatile int a = 0; public void add() { a++; } } 点击并拖拽以移动 public static void main(String[] args) throws In 阅读全文

posted @ 2021-04-16 15:15 狐言不胡言 阅读(213) 评论(0) 推荐(0)

线程协作的三种方式
摘要:线程之间需要进行通信,通信有数据共享和线程协作两种方式,这篇主要说线程协作的内容。 一:数据共享 1:文件共享;2:网络共享;3:变量共享。 二:线程协作 先来个场景:落魄程序员摆摊卖起了炒粉,起先有人去买炒粉,发现炒粉卖完了,只能失落的回家了;后来为了不让客户白来一趟,落魄程序员想到了一个办法,线 阅读全文

posted @ 2021-04-16 15:05 狐言不胡言 阅读(249) 评论(0) 推荐(0)

线程安全之可见性(三)
摘要:一:final的处理 1.1 经final修饰的变量或者对象,在其构造函数中初始化之后,其他线程一定可以获得正确的构造版本,即可以获得变量或者对象字段的最新值。 看下面的代码: public class ThreadFinal1 { public final int i; public int j; 阅读全文

posted @ 2021-04-16 15:01 狐言不胡言 阅读(78) 评论(0) 推荐(0)

线程安全之可见性(二)
摘要:一:不可见的原因 上一部分,根据代码可以知道,产生不可见的原因有两点: 1:CPU高速缓存会造成极短时间内数据的不可见 2:指令重排是导致不可见的主要原因 二:Java内存模型(JMM) java内存模型主要是描述多线程程序的语义,多个线程对数据进行了修改,该读取哪个的问题;Java内存模型并没有规 阅读全文

posted @ 2021-04-16 14:59 狐言不胡言 阅读(69) 评论(0) 推荐(0)

线程安全之可见性(一)
摘要:一:举个栗子 先举个例子: public class ThreadVolidate { public static int i = 0; public static Boolean flag = true; public static void main(String[] args) throws 阅读全文

posted @ 2021-04-16 14:58 狐言不胡言 阅读(101) 评论(0) 推荐(0)

线程池概念及实现简单的线程池
摘要:本文主要介绍线程池的概念,原理,以及简单实现一个线程池,若文中有不足或错误之处,请指出(ps:感激涕零,不要让我陷入错误的误区。。。) 一:线程池的基本概念和原理 在此之前,先来思考一个问题,为啥要用线程池呢? ​ 线程越多,不一定就会执行的越快,受到CPU的影响,我们要控制线程的数量,线程池它的一 阅读全文

posted @ 2021-04-16 14:55 狐言不胡言 阅读(131) 评论(0) 推荐(0)