自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小默:进无止境

QQ:1274654983 欢迎交流~~

  • 博客(26)
  • 资源 (51)
  • 收藏
  • 关注

原创 认真学习Java集合之TreeMap的实现原理

TreeMap继承自AbstractMap 实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。此外其还实现了Cloneable, java.io.Serializable两个接口说明其是可以被克隆、序列化的。TreeMap基于红黑树(Red-Black tree)实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator 进行排序,具体取决于使用的构造方法。# 【1】核心属性和构造## ① 核心属性```java//比较器

2019-02-28 17:19:46 834

转载 认真研究JDK1.7下HashMap的循环链表和数据丢失问题

本篇博文以jdk1.7为例分析。前面博文[认真研究HashMap的初始化和扩容机制](https://blog.csdn.net/J080624/article/details/78435449)我们详细分析了jdk1.7和Jdk1.8下HashMap的扩容机制。其中在jdk1.7下如果并发扩容,将会存在循环链表、数据丢失问题。本文我们详细描述这个过程。**我们再回顾一下resize方法:**```javavoid resize(int newCapacity) { Entry[]

2019-02-25 20:13:14 2909

转载 聊聊MQ的消息必达和消息幂等与消息延时

【1】MQ之如何做到消息必达① MQ简单架构MQ要想尽量消息必达,架构上有两个核心设计点:消息落地消息超时、重传、确认上图是一个MQ的核心架构图,基本可以分为三大块:发送方->左侧粉色部分MQ核心集群->中间蓝色部分接收方->右侧黄色部分粉色发送方又由两部分构成:业务调用方与MQ-client-sender。其中后者向前者提供了两个核心API:Sen...

2019-02-25 19:20:24 1624

原创 【每日一面】关于树

【1】求二叉树的最大深度使用递归,分别求出左子树的深度、右子树的深度,两个深度的较大值+1即可。// 获取最大深度public static int getMaxDepth(TreeNode root) { if (root == null) return 0; else { int left = getMaxDepth(root.le...

2019-02-25 18:37:46 363

原创 Spring AOP中是如何注册Advisor的?

在前面[Spring AOP中如何为Bean创建代理?](https://blog.csdn.net/J080624/article/details/83444209)一文中我们看到创建代理前首先要获取到Advisor设置给ProxyFactory,之后才可进行代理的创建。那么容器中的Advisor是如何实例化并注册的?这个入口是在AbstractAutoProxyCreator的postProcessBeforeInstantiation方法中# 【1】前置流程如下图所示,在`AbstractA

2019-02-23 17:15:45 1734

原创 [读书笔记]Spring中的容器设计详解

【1】IOC容器与依赖反转模式依赖反转是指依赖对象的获得被反转了。依赖控制反转的实现有很多方式,Spring中IOC容器是实现这个模式的载体,它可以在对象生成或初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入对方法调用的依赖。这种依赖注入是可以递归的,对象被逐层注入。通过使用IOC容器,对象依赖关系的管理被反转了,转到IOC容器中来了,对象之间的相互依赖关系由...

2019-02-22 21:53:32 721

原创 认真学习设计模式之装饰者模式(Decorator Pattern)

写在前言利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。通过动态地组合对象,可以写新的代码添加新功能,而无须修改现有代码。既然没有改变现有代码,那么引进bug或产生意外副作用的机会将大幅度减少。上面对应着一条重要的设计原则-“开闭原则”,类应该对扩展开发,对修改关闭。那么有哪些设计模式遵...

2019-02-21 13:44:58 561

转载 【每日一面】关于海量数据处理

海量数据处理:有1亿个浮点数,找出其中最大的10000个。类似的还有有1万个浮点数,找出其中最大的100个,然后倒序处理。二者不同之处在于数据量的量级不同,这个牵扯到服务器内存和你所采取的策略。【1】常见方案① 简单暴力的快速排序第一种方法是将数据全部排序,然后在排序后的集合中进行查找,最快的排序算法的时间复杂度一般为O(nlogn),例如快速排序。而在32位机器上,每个float类型占4...

2019-02-18 19:10:27 1043

原创 【每日一面】关于推理题

① 一个5升的桶和一个3升的桶,如何得到一桶4升的水?这个还是比较简单的,小伙伴自行考虑,不会的可以留言。② 数字移位题目是这样的:一个N位数,个位数是6,将6移动到最前面(首位),然后形成一个新的N位数,新的N位数为旧的N位数的4倍,问最小的N位数是多少?个位数是6,新的N位数为旧的4倍,那么旧的N位数肯定是XXX46(X未知,X有几位待定)。未完待续。。。...

2019-02-18 18:07:37 622

原创 认真学习设计模式之策略模式(Strategy Pattern)

【1】策略模式定义策略模式定义和封装了一系列的算法,它们是可以相互替换的,也就是说它们具有共性,而它们的共性就体现在策略接口的行为上。另外为了达到最后一句话的目的,也就是说让算法独立于使用它的客户而独立变化,我们需要让客户端依赖于策略接口来实现。策略模式特点:是一种行为型模式,对算法封装,使得客户端独立于各个策略扩展性强,添加策略无非就是添加一个具体的实现类而已,代价非常低主要解决:...

2019-02-17 20:50:59 790

原创 线程间通信之Object.wait/notify实现

核心有这样几个关键字:锁,monitor以及指令。PS:遇到面试官问的问题不是你曾经考虑的问题不要怕,不要紧张。可能只是说法变了,但是知识还是哪些知识!waiting…...

2019-02-16 21:59:22 613

原创 认真学习设计模式之观察者模式(Observer Pattern)

【1】观察者模式定义于特点① 观察者模式定义观察者模式也叫(发布-订阅模式)定义了对象之间的一对多的依赖,当一个对象(主题)改变状态时,它的所有依赖者都会收到通知并自动更新。在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型。主题与观察者都是用接口,观察者使用主题的接口向主题注册,而主题利用观察者的接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点–可观察者不知道观...

2019-02-16 20:59:14 489

原创 进程间通信和线程间通信总结

写在前面面试的时候一定不要疲劳战,比如上午面了一个,然后中午不休息直接赶到另外一个相距比较远的公司,影响状态。面试的时候一定不要紧张,不管对方有几个人,总之面试的时候做好充分准备,休息好,放松心态。好了,言归正传,开始总结。【1】进程间通信方式进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信,交换信息的方法。根据进程通信时信息量大小的...

2019-02-16 16:06:57 14424 1

转载 搞懂MySQL中索引的数据结构究竟是什么

【1】数据结构及算法基础① 索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)........................................................

2019-02-15 18:21:44 1015 1

转载 认真学习阻塞队列ArrayBlockingQueue与LinkedBlockingQueue

【1】阻塞队列阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞添加和阻塞删除方法。阻塞添加所谓的阻塞添加是指当阻塞队列元素已满时,队列会阻塞加入元素的线程,直队列元素不满时才重新唤醒线程执行元素加入操作。阻塞删除阻塞删除是指在队列元素为空时,删除队列元素的线程将被阻塞,直到队列不为空再执行删除操作(一般都会返回被删除的元素)由........................

2019-02-14 21:50:56 1307

原创 认真学习数据结构之红黑树

【1】什么是红黑树红黑树是一种自平衡树,它也是一颗二叉树。既然能保持平衡,说明它和AVL树类似,在插入或者删除时肯定有调整的过程,只不过这个调整过程并不像AVl树那样繁琐。为何红黑树使用得比AVL树更多,就是因为红黑树它的调整过程迅速且简短。① 五个特点:节点是红色或黑色根是黑色所有叶子都是黑色(叶子是NIL节点,也就是Null节点)如果一个节点是红的,则它的两个儿子都........................................................

2019-02-14 20:31:32 585

原创 TCP粘包/拆包与Netty解决方案

【1】TCP粘包/拆包TCP是个“流”协议,所谓流,就是没有界限的一串数据。大家可以想象河里的流水,它们是连成一片的,其间并没有分界线。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。① TCP粘包/拆包问题说明...

2019-02-13 21:34:47 5410

原创 Linux(UNIX)五种网络I/O模型与IO多路复用

Linux的内核将所有的外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd 文件描述符)。而对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字,它指向内核中的一个结构体(文件路径,数据区等一些属性)。根据UNIX网络编程对I/O模型的分类,UNIX提供了5种I/O模型,分...

2019-02-13 12:32:02 2277

转载 一个超乎想象的垃圾收集器:ZGC

Z Garbage Collector,即ZGC,是一个可伸缩的、低延迟的垃圾收集器,主要为了满足如下目标进行设计:停顿时间不会超过10ms停顿时间不会随着堆的增大而增大(不管多大的堆都能保持在10ms以下)可支持几百M,甚至几T的堆大小(最大支持4T)停顿时间在10ms以下,10ms其实是一个很保守的数据,在SPECjbb 2015基准测试,128G的大堆下最大停顿时间才1.68ms...

2019-02-13 10:44:18 1120

原创 认真学习jdk1.7下ConcurrentHashMap的实现原理

HashMap无论是 1.7 还是 1.8 其实都能看出 JDK 没有对它做任何的同步操作,所以并发会出问题,甚至出现死循环导致系统不可用。这个问题就交给ConcurrentHashMap。ConcurrentHashMap是一个 在juc包下的 map, 线程安全。 在jdk.1.8 之前采用数组+ 链表的结构 并且采用`分段锁机制` 来保证线程安全,而jdk1.8 改成了 数组+ 链表+ 红黑树,线程安全方面也改成了 `cas+ synchronized` 来保证线程安全。**Concurre

2019-02-09 21:08:47 1065

转载 8种常用排序算法稳定性分析

选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法冒泡排序、插入排序、归并排序和基数排序都是稳定的排序算法。【1】为什么要区分排序算法的稳定性?排序算法的稳定性通俗地讲就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。再简单具体一点,如果A i == A j,Ai 原来在 Aj 位置前,排序后 Ai仍然是在 Aj 位置前。下面我们分析一下稳定性的......

2019-02-09 18:45:08 13871 8

原创 认真学习Java集合之LinkedHashMap的实现原理

【1】LinkedHashMap定义LinkedHashMap是HashMap的子类,其实现与HashMap 的不同之处在于,LinkedHashMap维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。注意,此实现不是同步的。如果多个线程同时访问链接的哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。对于Link...............

2019-02-09 18:22:09 637

转载 认真学习JVM中的内存泄漏

Java的核心优势之一是在内置垃圾收集器(简称GC)的帮助下实现自动内存管理。GC隐含地负责分配和释放内存,因此能够处理大多数内存泄漏问题。虽然GC有效地处理了大部分内存,但它并不能成为保证内存泄漏的万无一失的解决方案。GC很聪明,但并不完美。即使在尽职尽责的开发人员的应用程序中,内存仍然可能会泄漏。仍然可能存在应用程序生成大量多余对象的情况,从而耗尽关键内存资源,有时会导致整个应用程序失败。...

2019-02-09 15:11:46 927

原创 认真学习Java集合之HashMap的实现原理

HashMap 是基于哈希表的Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null 值和null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(........................................................

2019-02-08 15:23:02 2224

原创 深入学习Java集合之ArrayList的实现原理

ArrayList 是List 接口的可变数组的实现,底层就是一个数组, 因此按序查找快, 乱序插入、删除因为涉及到后面元素移位所以性能慢。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。每个ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向.........

2019-02-07 17:26:34 737

原创 认真学习Java中线程实现和调度

并发不一定要依赖多线程(如PHP中很常见的多进程并发),但是在Java里面谈论并发,大多数与线程脱不开关系。线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。主流的操作系统都提供了线程实现,Java语言则提供了在不同硬件和操作系统平台下对线程操作的统一处理,每个已经执行start()且还未结束的java.lang.Thread类的实例就代表了一个线程。thread

2019-02-03 18:53:32 709

MybatisX idea 快速开发插件jar

MybatisX idea 快速开发插件jar,可直接本地安装,无需从市场下载。

2020-07-28

DubboOPS项目和管理后台jar包

DubboOPS项目和管理后台jar包,主要有dubbo-admin-0.0.1-SNAPSHOT.jar和incubator-dubbo-ops-master

2018-11-07

Struts2Spring4Hibernate4整合

Struts2Spring4Hibernate4整合,Hibernate使用的是注解,没有使用Maven,这个是帮一个小伙伴整合做的demo

2018-11-07

亲测好用的Winhex

亲测好用的Winhex,完美查看编译后的class文件。支持多种语言,解压后选择"setup.exe"进行安装即可!!!

2018-09-02

类文件结构示例

类文件结构示例,在深入浅出JVM博文中进行演示。如果无关,无需下载。

2018-09-02

SpringBoot使用Maven建立多模块工程

SpringBoot使用Maven建立多模块工程,包含父工程,api公用工程,pojo工程和主项目web工程。

2018-08-10

SpringBootMaven分模块实例

Maven分模块架构,框架使用SpringBoot整合SpringMVC、Mybatis。

2018-07-18

Redis Desktop Manager

使用redis远程管理工具(Redis Desktop Manager)进行连接、操作。

2018-06-29

Axis2与Spring整合发布多个WebService

Axis2与Spring整合发布多个WebService,项目使用Maven管理。

2018-05-27

CXF+Spring+MyBatis+Maven

CXF+Spring+MyBatis+Maven项目整合,包含服务端和客户端。

2018-05-05

IDEA导入eclipse常用快捷键

IDEA导入eclipse常用快捷键,方便好用,完美从eclipse过渡到IDEA

2018-04-24

DES加密解密 JS-JAVA

DES加密解密 JS-JAVA,支持JS和JAVA直接相互加密解密,简单引入即可

2018-03-26

CryptoJS v3.1.2.zip

CryptoJS v3.1.2.zip完整加密库,支持常见的多种加密方式。AES,DES,SHA。。。

2018-03-22

AES加密工具类

AES加密解密工具类,解决windows下和linux加密解密不同问题。

2018-03-20

nginx安装脚本

nginx安装脚本,支持一键安装nginx及其依赖如zlib openssl pcre等

2018-02-02

mysql自动备份脚本

linux下定时自动备份mysql数据库,并保存备份文件与备份日志到指定路径下。

2018-01-26

jsoup爬虫实战

使用jsoup进行爬虫并获取模板网页具体数据,获取总页数进行自动翻页处理。

2018-01-19

mysql5.7安装脚本

mysql5.7.16安装脚本,一键安装,安全可靠,方便快捷。

2017-12-15

Socket与ServerSocket编程实践聊天

Socket与ServerSocket编程实践聊天,服务器和客户端频繁通信

2017-11-07

CXF与Spring整合以及所需jar

CXF与Spring整合以及所需jar,包含服务端与客户端。jar包在lib目录下。

2017-11-02

输入一段英文,去掉符号后将英文单词排序输出

如 I love jane who is a pretty girl. One day, I meet her on a sunshine morning... 打印为 I I One a a day girl her is jane love meet morning on pretty sunshine who IT技术系统性、完整视频教程2000G欢迎联系免费赠送,并有许多毕设哦

2021-12-23

mybatisgenerator.zip

mybatis-generator逆向生成工程,Maven工程,纯Mybatis

2021-09-03

PHP课程设计图书管理系统、学生成绩管理系统、学生宿舍管理系统

课程设计包含六个系统,均是PHP+MySQL。包含图书管理、学生成绩管理、学生宿舍管理、学生选课管理、请假管理以及网上图书订购。帮助同学顺利完成课程设计哦,同学就不用花钱买啦。

2020-11-27

ssm+MySQL宠物商店.txt

SSM+mysql实现宠物商店,可在eclipse、MyEclipse、idea下正常运行,webServer为Tomcat

2020-07-10

SpringBoot+thymeleaf+UEditor+不修改上传路径.zip

SpringBoot+Thymeleaf下整合UEditor,这里没有修改图片上传文件,只用默认的图片上传路径。资源有UEditor.1.4.3.3以及自定义Controller。

2020-02-04

jdk6-8String类

jdk1.6 jdk1.7 jdk1.8 64位下的String类,请进行对比研究学习。jdk1.6 jdk1.7 jdk1.8 64位下的String类,

2019-11-20

ElasticSearch.zip

Elasticsearch整合Header插件,安装node和header插件,全程无坑,需要的jar包都有,认真测试过的。

2019-11-15

支付宝对接相关工具和demo.zip

支付宝对接相关工具与电脑网站接入demo,包含电脑网站demo,服务端sdk,开发平台助手

2019-10-30

dhcp+c3p0.zip

dhcp与c3p0数据源整合MySQL完全配置,包含mchange-commons-java-0.2.11.jar,mysql-connector-java-5.0.4-bin.jar,commons-pool-1.3.jar,commons-dbcp-1.2.1.jar以及c3p0-0.9.5.2.jar

2019-10-27

fastdfs完整环境.zip

Centos下搭建fastdfs分布式文件系统,并整合fastdht、nginx进行文件去重。

2019-09-27

mysql-odbc.zip

PowerDesign添加MySQL数据源mysql-connector-odbc,包含32位 64位

2019-08-13

RabbitMQ.zip

Linux下源码编译安装RabbitMQ、Erlang并设置服务开机启动。

2019-08-12

PHP7.2+NGINX Linux环境搭建与脚本

Centos6.8源码编译安装NGINX与PHP7.2,包含源码安装包与NGINX自动安装脚本。

2019-07-01

项目+uploadify+Huploadify.zip

项目+uploadify+Huploadify,包含调试好的两个组件的页面源码、后台源码以及两个组件压缩包

2019-06-12

QRcode生成、解析二维码项目与所有jar

QRcode生成、解析二维码项目与所有jar,注意,是包含生成、解析二维码!

2019-05-08

fckeditor 2.3 兼容chrome解Number转换异常

fckeditor 2.3 兼容chrome解Number转换异常,将下载的jar替换掉即可

2019-05-03

AXURE RP EXTENSION For Chrome插件

AXURE RP EXTENSION For Chrome插件,在浏览器上观看HTML

2019-03-20

jave-1.0.2-jar视频音频处理包

jave-1.0.2-jar视频音频处理包,因为CSDN最低分为一分,所以没法免费贡献给大家。

2018-12-05

Netty权威指南 第2版 带书签目录 高清完整版.pdf

《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty 的基础功能开发指导、编解码框架定制等,还包括私有协议栈定制和开发、Netty 核心类库源码分析,以及Netty 的架构剖析。 《Netty 权威指南(第2 版)》适合架构师、设计师、软件开发工程师、测试人员以及其他对Java NIO 框架、Netty 感兴趣的相关人士阅读,通过《Netty 权威指南(第2 版)》的学习,读者不仅能够掌握Netty 基础功能的使用和开发,更能够掌握Netty 核心类库的原理和使用约束,从而在实际工作中更好地使用Netty。

2018-11-20

SpringBoot整合Dubbo和Zookeeper升级版

SpringBoot整合dubbo和Zookeeper,将公共接口抽取到了API项目中。另外还提供了xml方式整合dubbo和Zookeeper。

2018-11-09

空空如也

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

TA关注的人

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