自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张井天的博客

细节决定成败

  • 博客(115)
  • 资源 (2)
  • 收藏
  • 关注

转载 Spring:BeanDefination (上)

官方文档,第1.3条;摘抄:文档翻译如下:SpringIoc容器管理一个Bean或多个Bean,这些Bean通过我们提供给容器的配置元数据被创建出来(例如,在xml中的定义)全限定类名, 通常是Bean的实际实现类;Bean行为配置元素,它们说明Bean在容器中的行为(作用域、生命周期回调等等);Bean执行工作所需要的的其他Bean的引用,这些Bean也称为协作者或依赖项;其他配置信息,例如,管理连接池的bean中,限制池的大小或者使用的连接的数量。

2022-11-21 17:11:35 392 1

原创 Spring中接口 FactoryBean 作用

官方地址:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-factory-extension-factorybeanClass

2022-09-08 16:24:28 381

转载 LinkedHashMap实现LRU

前言:LinkedHashMap是HashMap的子类,在原有HashMap数据结构的基础上,它还维护着一个双向链表链接所有entry,这个链表定义了迭代顺序,通常是数据插入的顺序。上图我只画了链表,其实红黑树节点也是一样的,只是节点类型不一样而已也就是说我们遍历LinkedHashMap的时候,是从head指针指向的节点开始遍历,一直到tail指向的节点。源码public class LinkedHashMap<K,V> extends HashMap<K,V> imp

2022-05-12 19:51:06 2204

原创 Java中强、软、弱、虚引用

1、前言:java中除了基本类型以外,其他数据类型都是引用的数据类型, 其中引用类型根据生命周期又分为: 强引用、软引用、弱引用、虚引用(幻象引用), 我们平时最长见到和使用的强引用类型吧,其他类型的引用,一般在代码库等源码框架中才可以看到;2、简单介绍:引用类型引用时对象创建方式gc 影响一般用途强引用Object obj = new Object();对象被引用时,永远不会回收99%对象创建形式软引用SoftReference softObj = new So

2022-05-06 22:09:33 697

转载 Java序列化框架的比较(JDK、FastJson、Hessian、Hessian2、Protostuff)

概念:序列化:将Java对象转化为字节数组反序列化:将字节数组转化为Java对象在RPC应用中,进行跨进程远程调用的时候,需要使用特定的序列化技术,需要对进行网络传输的对象进行序列化和反序列化。影响序列化选择有两个因素:序列化之后码流的大小,如果太大,那么将会影响网络传输的性能。序列化和反序列化过程的性能常用的序列化框架性能比较序列化框架对比测试:JDKFastJsonHessianHessian2Protostuff准备需要序列化的对象,这是一个复杂的对象。Net

2022-03-23 15:40:38 1535

转载 Mybatis源码学习:PooledDataSource

概述:本文将会学习PooledDataSource、UnpooledDataSource、PooledConnection和PoolState这四个类的源码实现,mybatis通过这四个类实现了一个简单的数据库连接池,这四个类的功能分别为:PooledDataSource:数据库的连接池UnpooledDataSource: 非池的数据库链接 (创建真正的链接)PooledConnection:连接池中的连接对象PoolState:提供一些统计信息,用于监控当前连接池的状态下面来分别学习这四

2022-03-11 22:52:49 804

转载 行为型模式(四)职责链链模式

一、击鼓传花击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客一次坐定位置,由一人击鼓,击鼓的地方与传花的地方是分开的,以示公正。开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒。比如说,贾母、贾赦、贾政、贾宝玉和贾环是五个参加击鼓传花游戏的传花者,他们组成一个环链。击鼓者将花传给贾母,开始传花游戏。花由贾母传给贾赦,贾赦传给贾政,贾政传给贾宝玉,贾宝玉传给贾环,贾环再传给贾母,由此往复,如下图所示。击鼓传花便是一种典型的责任链模式。二、什么是责任链模式责任链模式是一

2022-03-02 14:50:49 218

转载 结构型模式(五)门面模式(Facade Pattern 外观模式)

一、模式定义门面模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式。二、模式动机现代的软件系统都非常复杂,尽管我们已经想尽一切方法将其“分而治之”,把一个系统划分为好几个较小的子系统了,但是仍然可能会存在这样的问题:子系统内有非常多的类,客户端往往需要和许多对象打交道之后 才能完成想要完成的功能。在我们的生活中

2022-02-24 12:16:45 5589 1

原创 Mybatis一级缓存

一级缓存定义:Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存;一级缓存只是相对于同一个SqlSession而言。在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL;因为使用SelSession第一次查询后,MyBatis会将其放在缓存中;以后再查询的时候,如果没有声明需要刷新,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。验证一级缓存:sql 脚本:CREATE TAB

2021-10-09 10:33:06 200

原创 设计模式-装饰者模式

装饰模式:装饰模式的定义: 再不改变原有对象的基础上,将功能附加到对象上, 动态的给一个对象添加一些额外的职责UML结构图如下:Component 是抽象构件,定义一个对象接口,可以给这些对象动态的添加职责;ConcreteComponent定义一个具体对象,实现 Component;Decorator : 是装饰抽象类,实现接口, 作为所有装饰类的父类。ConcreteDecorator: 是Decorator子类,具体装饰对象;场景:我们以汽车为例, 定义接口Car:【对应:Comp

2021-09-11 00:01:00 158

原创 Lombok的基本使用

前言:以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。Lombok 官方稳定版本注解地址: https://projectlombok.org/features/allIdea 配置:Idea 添加Lombok 插件, 配置: File -->> Setting -->> Plugin -->> Market

2021-08-22 23:07:41 322

原创 Idea快捷键

配置:File -->>>> Setting -->> Keymap —> Windows快捷键:Ctrl + y : 删除光标当前行

2021-08-22 16:01:00 462

原创 java能力-枚举浅析

1、枚举的概念:被enum关键字修饰的类型就是枚举类型示例:public enum Color { YELLOW, GREEEN, RED;}枚举的优点: 将常量统一起来,进行统一管理。场景: 错误码,状态机等本质: 枚举的本质是 java.lang.enum 的子类。2、枚举的常用方法:values() : 返回枚举的实例数组, 而且该数组的元素严格保持在 enum中声明的顺序。name() : 返回实例名字。ordinal(): 返回实例声明

2021-08-22 12:16:45 1749

转载 创建型模式(五)-建造者模式(Builder pattern)

前言:人在IT江湖飘,不懂设计模式咋装逼?但是没写过5万行代码谈设计模式都是在瞎扯淡,咱先看看定义In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be tra

2021-06-01 22:55:07 290 2

转载 Synchronized详解

1、说明:随着JavaSE 1.6 对 Synchronized 进行的各种优化后, Synchronized 并不会显得那么重了。Synchronized 可以把任何一个 非 null 对象作为锁,锁有个专门的名字 对象监视器(Object Monitor)2、Synchronized 的三个作用:原子性: 确保线程互斥的访问同步代码。可见性:保证共享变量的修改能够及时看见,其实是通过 JMM来保证的对一个变量 unlock 操作之前,必须要同步到主内存中;如果一个变量进行lock操

2021-05-24 19:30:55 239 1

原创 Mybatis @SelectProvider @InsertProvider @UpdateProvider @DeleteProvider 详解

前言:Mybatis sql 常用配置方法:最常用: resources 目录下编写 *Mapper.xml 在其中编写 sqlSelect 注解: 在 *Dao.java 方法上使用注解 @Select 、@Insert、 @Update、 @Delete 完成sql 注入。Java方法返回sql: 在 *Dao.java 方法上使用注解 @SelectProvider、@InsertProvider、 @UpdateProvider、 @DeleteProvider 调用其配置的 Java类

2020-12-14 23:13:04 877

原创 BIO讲解与完成一个简单聊天系统

BIO(Blocking io):同步阻塞模型,一个客户端对应一个处理线程。早期的jdk中,采用BIO通信模式:通常有一个acceptor(消费者) 去负责监听客户端的连接。它接收到客户端的连接请求之后为每个客户端创建一个线程进行链路处理,处理完成之后,线程销毁。一个客户端连接,对应一个处理线程。他们之间的对应关系是 1:1。由于客户端连接和服务端的处理之间的对应关系是1:1,如果遇到任务比较大,处理比较慢。或者并发量比较大的情况下,系统会创建大量的线程。从而导致服务器线程暴增,性能急剧下降,

2020-08-19 18:03:47 413

原创 斐波拉契数多种算法

/** * 斐波拉契数 */public class Fibonacci { // 普通算法 public static int fab(int n ){ if (n <= 2){ return 1; } return fab(n-1) + fab(n-2); } // 非递归算法 // 不用递归 O(n) public static int fabFor(int n ){

2020-08-08 17:41:19 231

原创 BitSet原理以及应用

场景一个经典的面试题目:对应一个包含上亿没有排序的整数int文件,给定一个整数K,如何快速的判断这个整数是否存在这个文件中。面试者A:把整个文件读入内存中,挨个数据遍历一下就知道了。面试官: 下一位…注意哦: int 类型在计算机中存储是4字节,而上亿个数据差不多需要占用 400M 内存,而且每次遍历数据时间复杂度是:o(n) 是不符合要求的,其实不管是什么类型的面试题,我们都需要先进行数据整理存储然后在处理对应的业务场景。初级方案:上述问题要求我们查询整数K 存不存在,我们可以新建一个长度

2020-08-07 17:17:19 800 1

原创 大小根堆

Java代码实现的小根堆: https://blog.csdn.net/weixin_43160215/article/details/86288375PriorityQueue 的实例使用: https://www.cnblogs.com/keeya/p/9309617.html

2020-06-28 15:03:15 255

原创 详细理解优先队列DelayedWorkQueue

博文: https://blog.csdn.net/nobody_1/article/details/99684009

2020-06-28 15:00:52 1553

原创 RocketMQ 生产者发送消息结果

前言:当我们使用 同步或者异步发送消息时,成功后,我们得到一个对象 SendResult 对象,其中包含消息发送队列的相关信息。其中 枚举 SendStatus 即是本次消息发送的结果。SendStatus 枚举如下:public enum SendStatus { // 消息发送成功 SEND_OK, // 消息发送成功,但是服务器刷盘超时,消息已经进入服...

2020-03-14 14:47:23 2084 1

原创 RocketMQ 发送方式

RocketMQ 三种发送方式:Sync: 同步发送,等待结果后返回,可以设置超时时间。Async:异步的发送方式, 发送成功后,立刻返回,生产者在获取到Broker响应后,会调用指定的CallBack,可以设置超时时间。OneWay: 消息发出之后,直接返回,不做任何操作,一般用于日志代码示例:public class Producer1 { public static ...

2020-03-14 14:32:41 1233

转载 RocketMQ消费者消费位

ConsumeFromWhere consumeFromWhere消费者从那个位置消费,分别为:CONSUME_FROM_LAST_OFFSET:第一次启动从队列最后位置消费,后续再启动接着上次消费的进度开始消费CONSUME_FROM_FIRST_OFFSET:第一次启动从队列初始位置消费,后续再启动接着上次消费的进度开始消费CONSUME_FROM_TIMESTAMP:第一次启动从指...

2020-03-14 11:24:17 1026

原创 RocketMQ吐血总结

https://blog.csdn.net/javahongxi/article/details/84931747

2020-03-11 16:41:46 425

原创 rocketmq详解

Url : https://www.cnblogs.com/liuruilongdn/p/8117997.html#top

2020-03-11 16:41:17 411

转载 零拷贝

前言零拷贝这三个字,一直是服务器网络编程的关键字,任何性能优化都离不开。在 Java 程序员的世界,常用的零拷贝有 mmap 和 sendFile。那么,他们在 OS 里,到底是怎么样的一个的设计?本文将简单聊聊 mmap 和 sendFile 这两个零拷贝。传统数据读写的劣势初学 Java 时,我们在学习 IO 和 网络编程时,会使用以下代码: File file = ne...

2020-01-13 14:32:03 153

转载 操作系统: 用户态和内核态

用户态和内核态:内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。为什么要有用户态和内核态?由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个...

2020-01-13 14:00:27 699

转载 Redis常见面试题(精简版)

文章目录概述 什么是Redis Redis有哪些数据类型 Redis有哪些优缺点 Redis的应用场景 为什么要用 Redis /为什么要用缓存 为什么要用 Redis 而不用 map/guava 做缓存? Redis为什么这么快持久化 什么是Redis持久化? Redis 的持久化机制是什么?各自的优缺点? 如何选择合适的持久化方式 Redis持久化数据和缓存怎么做扩容...

2020-01-08 14:39:18 267

转载 Redis中的Scan命令的使用

Redis中有一个经典的问题,在巨大的数据量的情况下,做类似于查找符合某种规则的Key的信息,这里就有两种方式,一是keys命令,简单粗暴,由于Redis单线程这一特性,keys命令是以阻塞的方式执行的,keys是以遍历的方式实现的复杂度是 O(n),Redis库中的key越多,查找实现代价越大,产生的阻塞时间越长。二是scan命令,以非阻塞的方式实现key值的查找,绝大多数情况下是可以替代k...

2020-01-07 19:36:32 1189

转载 Redis常用数据类型以及常用操作

Redis 基础数据结构:Redis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了。String:首先我们从string谈起。string表示的是一个可变的字节数组,我们初始化字符串的内容、可以拿到字符串的长度,可以获取string的子串,可以覆盖s...

2020-01-03 20:50:29 142

原创 Redis4.0入门

redis系列–你真的入门了吗?redis4.0入门 : https://www.cnblogs.com/wdliu/p/9360286.html#top

2019-12-31 16:11:01 100

原创 Redis在Linux 下的安装过程

下载Jar 包并编译:进入Linux 系统执行以下命令:$ wget http://download.redis.io/releases/redis-5.0.7.tar.gz$ tar xzf redis-5.0.7.tar.gz$ cd redis-5.0.7$ make修改Redis配置使其后台启动:进入到 redis-5.0.7 目录下,打开 redis.conf 将 d...

2019-12-30 10:35:11 82

原创 nginx+keepalived高可用及双主模式

原文地址: https://blog.csdn.net/lexang1/article/details/52386909

2019-12-26 14:26:19 227

转载 一致性Hash在负载均衡中的应用

原文出处: https://juejin.im/post/5b8f93576fb9a05d11175b8d#heading-5简介一致性Hash是一种特殊的Hash算法,由于其均衡性、持久性的映射特点,被广泛的应用于负载均衡领域,如nginx和memcached都采用了一致性Hash来作为集群负载均衡的方案。本文将介绍一致性Hash的基本思路,并讨论其在分布式缓存集群负载均衡中的应用。同时...

2019-12-25 15:34:28 255 2

转载 JMeter性能测试入门篇

1. Jmeter简介Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。运行环境为Windows 10系统,JD...

2019-12-25 10:56:26 236

原创 TPS和QPS区别与计算

QPS/TPS简介:QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服...

2019-12-24 20:33:39 3384

转载 nginx配置文件root和alias区别

总结:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录root的处理结果是:root路径+location路径 + http后面的地址alias的处理结果是:使用alias路径替换location路径 + http后面的地址关于 / 的使用:alias虚拟目录配置中,location匹配的path目录如果后面不带"...

2019-12-23 19:24:18 198

原创 Nginx常用命令Linux

Nginx 在Linux 下的常用命令:进入了Nginx 的安装目录,命令示例:./nginx -v # 查看版本 ./nginx -h # 查看帮助信息./nginx -t # 检查nginx的配置文件是否存在语法错误./nginx # 启动 nginx./nginx -c filena...

2019-12-23 17:34:51 181

转载 图解Tomcat类加载机制

前言:说到本篇的tomcat类加载机制,不得不说翻译学习tomcat的初衷。之前实习的时候学习javaMelody的源码,但是它是一个Maven的项目,与我们自己的web项目整合后无法直接断点调试。后来同事指导,说是直接把java类复制到src下就可以了。很纳闷…为什么会优先加载src下的java文件(编译出的class),而不是jar包中的class呢?现在了解tomcat的类加载机制,原...

2019-12-20 17:49:42 216

Mybatis SelectProvider

Mybatis 中@SelectProvider @InsertProvider、@UpdateProvider、@DeleteProvider

2020-12-14

spring-mvc.zip

简易的SpringMVC框架,主要Jar :spring-webmvc 、fastjson,其中包含Controller 、HandlerInterceptor 、HandlerExceptionResolver 的实现

2019-07-29

空空如也

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

TA关注的人

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