自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一个男人的设计模式:装饰模式

一个男人的设计模式:装饰模式类图结构模式描述统一抽象接口 Component被装饰者 ConcreteComponent装饰者 Decorator装饰者子类 ConcreteDecorator测试代码装饰模式在JavaIO体系中的应用JAVA I/O流过滤流例子BufferedInputStream对FileInputStream的read()装饰统一抽象接口 InputStream被装饰者 FileInputStream装饰者FilterInputStream装饰者BufferedInputStream测

2021-02-20 22:17:23 160

原创 SecurityContextHolder实现原理(策略模式和ThreadLocal)

SecurityContextHolder实现原理一、核心组件1.1 SecurityContextHolder1.2 SecurityContextHolderStrategy1.3ThreadLocalSecurityContextHolderStrategy二、ThreadLocal源码分析1.1实现该功能的核心技术1.2ThreadLocal总结总结SecurityContextHolder是SpringSecurity中保存认证信息的核心组件,重点是将给定的认证信息(SecurityConte

2020-12-04 21:59:52 3775 2

原创 Spring事件监听机制源码解析

主要内容1 什么是事件监听机制2 JDK的事件监听机制2.1 EventObject(事件)2.2 EventListener(事件监听器)2.3 EventPublisher(事件发布器)2.4 基于jdk的事件机制示例2.4.1 事件源(红绿灯)2.4.1 事件2.4.2 事件监听器2.4.3 事件发布器2.4.4 测试代码3 Spring的事件监听机制3.1 Spring事件(ApplicationEvent)3.2 Spring事件监听器(ApplicationListener)3.3 Spring

2020-08-23 19:15:04 405 1

原创 一个男人的设计模式:观察者模式

主要内容1.观察者模式原理1.1 类图1.2 角色2.观察者模式示例2.1 背景(过红绿灯)2.2 代码2.2.1 Subject(抽象类)2.2.2 ConcreteSubjectTrafficLights(红绿灯)2.2.3 Observer(抽象观察者)2.2.4 ConcreteObserverMan(观察者人)2.2.5 ConcreteObserverCar(观察者车)2.2.6 Client(测试与使用)3.JDK观察者模式3.1 Observable(等价Subject,被观察者)3.2 O

2020-08-22 20:36:32 313

原创 一个男人的设计模式:代理模式

Content1.定义1.1组成2.分类3.实现3.1静态代理3.1.1定义抽象角色ISubject3.1.2定义具体角色ConcreteSubject3.1.3定义代理角色SubjectProxy3.1.4客户端测试3.2基于接口的动态代理(JDK代理)3.2.1定义抽象角色ISubject3.2.2定义具体角色ConcreteSubject3.2.3定义代理角色SubjectProxy3.2.4客户端测试3.3基于类的动态代理(CGLib代理)3.3.1定义抽象角色ISubject3.3.2定义具体角色

2020-08-16 16:35:38 133

原创 一个男人的设计模式:策略模式

宅在家里太久了,我想出门溜达溜达!出行方式:1.天气挺好的,步行出门,慢慢悠悠美美哒!2.骑上我心爱的小摩托,它永远不会堵车!3.今天要相亲了,我要开着我的东风风神去压压场子!…

2020-06-14 22:23:31 260

原创 一个男人的设计模式:单例模式

独一无二的我我只出生一次只有监护人同意,才能一起玩初级版本单例模式(线程非安全)初级版本单例模式(线程安全)中级版本单例模式(线程安全的骚操作)高级版本单例模式(线程安全)在恋爱过程中,都希望自己能成为另一半的唯一,但是我们本身就是唯一的。正确的恋人的关系应该是“亲密有间”的,彼此都是独一无二的,无论是精神上,还是物质上。我只出生一次单例模式,顾名思义就是只能存在一个实例对象,对象的“出生”大多数情况通过new关键字来调用构造器方法来实现,为了保证其他对象不能通过new关键字来创建单例对象,需要将构造

2020-05-24 23:36:44 277

原创 SeaWeedfs学习总结

SeaWeedfs学习总结架构基本原理基本使用上传文件(Write File)修改文件(Write File)删除文件(Write File)查看文件(Read File)文件ID含义解析:架构官网描述:Usually distributed file systems split each file into chunks, a central master keeps a mapping...

2020-05-04 20:49:05 2501

原创 spring cloud stream中关于kafka生产消费大数据量的配置问题

spring cloud stream中关于kafka生产消费大数据量的配置问题1 基础了解2 配置步骤3 配置详情3.1 生产者(应用程序A)3.2 消费者(应用程序B)3.3 broker(leader)4 最后请关注一下源码1 基础了解producer:生产者,Spring Cloud Stream kafka应用程序broker: kafka服务consumer:消费者,Spri...

2020-04-20 21:29:10 2211 1

原创 优质文章索引

SPI(Service Provider Interface)1.从源码角度,看 Java 是如何实现自己的 SPI 机制的?2.JAVA拾遗–关于SPI机制

2020-04-03 20:49:32 145

原创 Kakfa

官方kafka快速开始文档http://kafka.apachecn.org/quickstart.html

2020-03-02 13:07:06 131

原创 在内嵌Servlet容器下Spring Boot中如何加载Servlet?

在内嵌Servlet容器下Spring Boot中如何加载Servlet?标题 0、什么是ServletContext?以上是ServletContext源码描述,基本上就是与Servlet容器(例如常用的Tomcat)通信的对象,该对象被ServletConfig对象持有。我们将Servlet注册到Servlet容器中,就是通过该对象实现的。文章主要内容:1、传统方法(servlet...

2020-01-16 22:29:43 2107

原创 SpringSecurity-基本概念和处理流程

SpringSecurity-基本概念和处理流程分析优秀文章推荐:1、https://www.cnkirito.moe/spring-security-1/2、https://www.jianshu.com/p/e8e0e366184e文章较长,望耐心阅读。首先,需要明白SpringSecurity它解决什么问题?1、认证:证明你是你的问题,通常就是用用户名和密码来证明。2、授权:...

2020-01-08 22:36:14 1735

原创 一个男人的设计模式:按照我的套路来(模板方法模式)

什么是模板方法模式?引入模板方法模式的原因模板方法的定义具体模式了解参考引入模板方法模式的原因举例(参考Spring 实战中的P292),当我们带行李乘飞机的时候会发生如下事情:到柜台办理行李托运安保人员对其进行安检以确保安全行李被行李车转送到飞机上当你到达目的地的时候,行李需要从飞机上取下来并放到传送带上最后,你到行李认领区将其取回尽管在这个过程中经历了很多步骤,但是涉及到旅...

2019-10-15 21:59:57 1184

原创 JAVA-爬楼梯

题目:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶,要求用程序来求出一共有多少种走法?例子,每次走1级台阶,一共走10级台阶,这是其中一种走法,我们可以简写成 1,1,1,1,1,1,1,1,1,1解题思路:假设你只差最后一步走到10级台阶,这时候会出现几种情况?这时只会出现两种情况,第一种:最后一步走1级台阶,第一种情况对应的是已经走到了第9级台阶第...

2019-07-21 23:18:30 2058

原创 mybatis3逆向工程+mysql8

构建java工程使用mybatis3和mysql8GeneratorSqlmap.javaimport java.io.File;import java.util.ArrayList;import java.util.List;import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generato...

2018-11-22 18:31:34 1592

转载 [转载]Centos7Nginx安装配置开机自启(二)

安装所需环境Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境。一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:yum install gcc-c++二. PCRE pcre-devel 安装PCRE(Perl Co...

2018-11-21 11:47:33 1042

转载 [转载]Nginx了解(一)

Nginx配置详解序言Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。Nginx的稳定性、...

2018-11-21 10:45:01 870

原创 源码分析:Arrays.copyOf()

数组拷贝原理源码 /** * Copies the specified array, truncating or padding with nulls (if necessary) * so the copy has the specified length. For all indices that are * valid in both the origin...

2018-11-16 17:05:38 1525 1

原创 flask最小应用无法访问服务器

问题OS:window10IED:pycharmweb 框架:flask问题:只能发送几次请求,使得控制台有相关信息,但是后面无论如何处理都看不到客户端的请求信息,当操作系统重启之后,重复进行以上操作又发生了问题。from flask import Flaskapp = Flask(__name__)@app.route("/")def hello(): return "...

2018-11-15 19:47:54 1076

原创 JVM-初识JMM

JMM内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象,不同架构下的物理机拥有不一样的内存模型,Java虚拟机也有自己的内存模型,即Java内存模型(Java Memory Model, JMM)。上图网上找的图,大佬勿怪!各区域作用直接内存直接内存不属于java虚拟机规范中规定的运行时数据区的一部分,通过某种方法可以直接分配java堆外内...

2018-11-03 22:42:03 1139

原创 session和cookie理解

问题引入需要说明的是,我们在使用Java(包含但不仅限)进行web开发的过程中,一般采用http作为前后端交互的协议,那么这里需要明白一下HTTP是无状态的。简单来讲,使用HTTP协议访问服务器的 时候,每次访问是没有相互影响的,这就可以是无状态的。但是存在一个问题,服务器需要保存用户访问的一些状态。大家想一下,为什么每次你登陆淘宝和京东的过程中会有一些物品推荐,那么这些数据是如何出来的(所谓...

2018-11-02 21:32:55 1311

原创 JAVA-注解

注解定义Java 注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。注解包含在 java.lang.annotation 包中。注意:注解本身不是代码的一部分,注解作用在类或者方法、属性上不会自己起作用,需要其他工具(代码)主动去获取注解的信息。作用替代配置文件:例如spring中的...

2018-10-30 13:44:38 1181

原创 JVM-可达性分析

jvm中判断对象是否存活的方法1、引用计数2、可达性分析1、什么是引用计数?每个对象自身持有一个计数器,每当对象被一个地方引用,计数器便+1;当引用失效时,计数器-1。当对象的计数器为0时,该对象便是一个不被使用的对象,即“死亡”。引用计数器实现简单,效率高。然而难以解决对象之间相互循环引用的问题(两个失效对象相互保存了对方的指针)。故JVM判定对象是否存活,并没有使用引用计数器,而是...

2018-10-09 11:10:48 3526 1

原创 B+与数据库索引

B+树存在的意义B+树主要作为索引,用以快速查找指定数据。**注意:**需要了解B树,B+树的定义再来看该博文什么是索引需要明白的是每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构。所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用...

2018-10-08 14:12:23 1247

原创 树的平衡问题的引入

基本定义大同小异都差不多来龙去脉疑惑:这么多B树是要闹哪样?首先,在数据结构中大家都知道查找,那么B树的出现是为了提高查找的效率;其次,我们知道查找分为外部查找(数据在外存上)和内部查找(数据在内存中),我们 知道的查找主要有:顺序查找,折半查找,分块查找,B树查找;前三个查找比较简单,在此就不说了,B树查找,是采用树结构在进行数据查找操作;接着,我们需要了解的是二叉搜索树(B...

2018-10-08 12:55:46 1300

原创 JAVA-基本排序-堆排序

堆排序定义堆是一种特殊的树形数据结构,其每个节点都有一个值,通常提到的堆都是指一颗完全二叉树,根结点的值小于(或大于)两个子节点的值,同时,根节点的两个子树也分别是一个堆。实现思路1、将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。2、将它与堆数组的末尾元素交换,此时末尾元素就是最大值;3、然后将剩余的 n-1 个序列重新构造成一个堆,这样就会得到 n 个...

2018-10-07 21:22:40 1137

原创 JAVA-广联达-复杂链表复制问题

题目复杂链表指的是一个链表有若干个结点,每个结点有一个数据域用于存放数据,还有两个指针域,其中一个指向下一个节点,还有一个随机指向当前复杂链表中的任意一个节点或者是一个空结点。 如何对这样一个复杂链表复制产生一个新的复杂链表。解题思路第一种:首先复制next指针的节点,之后再复制random指针的节点.第一种code//假设头节点无数据,头结点所指的第一个节点是链表的第一个真正...

2018-09-18 16:16:25 448

原创 JAVA-广联达-小朋友站队问题

题目题目若干(n)个小朋友排成一队参加活动,活动开始后,所有的小朋友重新站成一队,但是要求每个小朋友不能站在上一次的位置上,问站队的方法有多少种?解题思路解题思路:1、n=1 return 0;2、n=2 return 1;3、n=3,分析步骤如下:1>任意选定一个小朋友假设为1号小朋友,他的位置有n-1种;2>找到当2号个小朋友选位置的时候,需要分为两种情况:...

2018-09-17 21:48:15 1634

原创 JAVA-汉诺塔

什么是汉诺塔问题? 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。汉诺塔问题的约束条件? 1、每次只能从某个柱子的最上面移动一个盘子;...

2018-09-17 19:56:37 1209

原创 JAVA-度小满2018编程题

火车站台 注意:注意时间复杂度和空间复杂度问题 解法一:数组法,构建data[n][2],笔者在笔试之后重新思考的解法,不过空间占用比较大,没有测试过大数据量的情况 public static void getMaxValueByArr(){ Scanner cin = new Scanner(System.in); //代表接下来的数据组数...

2018-09-15 18:21:32 2041

原创 JAVA-【静态代理模式】

静态代理模式目的:为其他对象提供一种方式来控制对这个对象的访问,该方式即为代理模式。 一个代理模式通常包括以下几个部分: –抽象⻆色:声明真实对象和代理理对象的共同接口。 –代理角色:内部含有对真实对象的引⽤,相当于对真实对象进行行封装。 —真实角色:是我们最终要引⽤用的对象。 三者之间的关系我们可以使用一句话来描述: 真实对象需要完成某件事,但是自己不想太麻烦(房东出租房子),于...

2018-09-10 23:48:54 1144

原创 JAVA-京东编程题

JAVA-2018jd秋招编程题2018jd秋招两道编程题如下:第一道给定一张包含N个点、M条边的无向图,每条边连接两个不同的点,且任意两点间最多只有一条边。对于这样的简单无向图,如果能将所有点划分成若干个集合,使得任意两个同一集合内的点之间没有边相连,任意两个不同集合内的点之间有边相连,则称该图为完全多部图。现在你需要判断给定的图是否为完全多部图。 思路: 1、采用邻接矩阵...

2018-09-10 00:15:15 2834

原创 JAVA -将一个数组中的零全部移到数组后,且原来的元素相对位置不变

将一个数组中的零全部已到数组后,且原来的元素相对位置不变给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。 例如, 定义 nums = [0, 1, 0, 3, 12],调用函数之后, nums 应为 [1, 3, 12, 0, 0]。:方法1 冒零法方法2 指针法方法1-冒零法/*法1,采用的是冒泡的变体 思路:、 ...

2018-09-06 21:19:17 2366 1

空空如也

空空如也

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

TA关注的人

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