自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

1

1

  • 博客(382)
  • 资源 (12)
  • 收藏
  • 关注

原创 什么是Elasticsearch

什么是ElasticsearchElasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统1、什么是搜索?2、如果用数据库做搜索会怎么样?3、什么是全文检索、倒排索引和Lucene?4、什么是Elasticsearch?-------------------------------------------------------------------------...

2018-08-29 22:58:51 518

原创 Spring容器的创建过程

本文主要jian讲解容器的创建过程中的refresh()【创建刷新】Spring容器的refresh()【创建刷新】;1、prepareRefresh()刷新前的预处理;    1)、initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方法;    2)、getEnvironment().validateRequiredProperties();检验属...

2018-07-22 15:08:41 616

转载 理解线程池的原理

线程池源码分析

2018-07-13 17:42:32 290

原创 这些Web前端高级技能你掌握了多少

1、JavaScript是如何实现各个组成部分的。2、JavaScript面向对象编程的全方位阐述。3、对DOM、BOM及浏览器事件模型的透彻剖析。4、Web应用基本数据格式JSON、XML及其存取。5、Ajax、Comet服务器端通信和基于File API的文件拖放式上传。6、ECMAScript 5定义的最新核心语言特性。7、HTML 5涵盖的表

2015-12-29 18:08:58 266

转载 Maven scope依赖范围详解

1、Maven介绍  Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 Maven是一个管理工具,可以对 Java 项目进行构建、依赖管理。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目,2、Maven特点 项目设置遵循统一的规则  任意工程中共享  依赖管...

2022-02-05 18:03:37 360

原创 LinkedBlockingQueue

import java.util.UUID;import java.util.concurrent.LinkedBlockingQueue;public class LinkedBlockingQueueTest { public static void main(String[] args) { try { LinkedBlockingQueue<String> linkedBlockingQueue = new LinkedBlock..

2022-02-03 22:47:27 819

原创 ArrayBlockingQueue

import java.util.UUID;import java.util.concurrent.ArrayBlockingQueue;public class ArrayBlockingQueueTest2 { public static void main(String[] args) { try { ArrayBlockingQueue<String> arrayBlockingQueue = new ArrayBlockingQ..

2022-02-03 22:11:42 549

转载 概要设计与详细设计的区别

概要设计与详细设计的区别概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。概要设计阶段通常得到软件结构图详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等概要设计和详细设计...

2022-01-13 20:53:54 1714

原创 IDEA编译tomcat9源码

目的: 搭建源码阅读环境1.环境准备tomcat和jdk匹配关系(Apache Tomcat® - Which Version Do I Want?)jdk8 maven-3.5.4注意: 如果因为maven版本问题导致编译不成功,尝试换成 maven-3.5.4下载tomcat9源码https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.55/src/apache-tomcat-9.0.55-src.zip (用迅雷下载很快)修.

2022-01-10 11:08:43 821

原创 Tomcat启动过程

解析server.xmlCatalina catalina = new Catalina(); // 没做其他事情 catalina.setAwait(true);以下步骤是解析servler.xml StandardServer server = newStandardServer(); // 没做其他事情catalina.setServer(server); server.addLifecycleListener(...);StandardService service = new...

2022-01-04 20:52:03 398

转载 SLF4J和Logback和Log4j和Logging的区别与联系

前言 Java帝国在诞生之初就提供了集合、线程、IO、网络等常用功能,从C和C++领地那里吸引了大量程序员过来加盟,但是却有意无意地忽略了一个重要的功能: 输出日志。 对于这一点,IO大臣其实非常清楚, 日志是个很重要的东西, 因为程序运行起来以后, 基本上就是一个黑盒子,如果程序的行为和预料的不一致,那就是出现Bug了,如何去定位这个Bug 呢? 臣民们能用的工具有两个,第一个就是单步调试,一步步地跟踪,查看代码中变量的值, 这种办法费时费力, 并且只能在程...

2021-10-29 10:16:35 247

原创 SpringMVC启动原理与父子容器源码剖析

1、父子容器的关系,启动过程。父容器加载service,dao服务,子容器加载controller等mvc组件类。tomcat通过SPI的机制加载ServletContainerInitializer的实现类的方式来找到WebApplicationContainer的实现类并执行WebApplicationContainer实现类的onStartup方法的方式来启动父子容器的(AbstractContextLoaderInitializer#onStartup中通过registerContextLoader

2021-10-17 22:54:28 463

转载 RxJava 从入门到全解析

前言使用了RxJava有一段时间了,深深感受到了其“牛逼”之处。下面,就从RxJava的基础开始,一步一步与大家分享一下这个强大的异步库的用法!RxJava 概念初步RxJava 在Github Repo上给的解释是:“RxJavaisaJavaVMimplementationofReactiveExtensions:alibraryforcomposingasynchronousandevent-basedprogramsbyusingobser...

2021-06-19 13:34:07 5921

转载 Maven中mirrors和repository的关系

pom.xml里的repositories元素,里面可以包含多少repository(至少默认包含了中央仓库,仓库id为central,可以写个id为central的mirror或者repository覆盖默认的中央仓库,该仓库总是在effective-pom里repositories元素的最后一 个子元素),每个repository都有一个id(此id非常重要),命令行执行:mvn help:effective-pom可以验证 maven获取真正起作用的repository集合流程:首先会获取pom.x

2021-02-24 16:34:32 273

原创 SPI机制

java SPI是通过java.util.ServiceLoader来实现的,是把目录(META-INF/services)下以类全路径名为名称的文件中所有列出的类都加载Dubbo SPI定制了SPI实现,可以按需加载(dubbo=***的形式,通过制定key实现按需加载),而且还可以定制多个Wrapper包装类进行AOP操作(Wrapper类需要实现接口,而且需要有以类接口类型为参数的构造方法)Dubbo SPI不仅能加载类,还可以给类属性赋值(先从SpringSPI记载,找不到,再从Dubbo自

2021-02-23 13:04:53 203

原创 Dubbo服务导出源码解析

服务导出大概原理(面试时可以这么答)服务导出的入口为ServiceBean中的export()方法,当Spring启动完之后,通过接收Spring的ContextRefreshedEvent事件来触发export()方法的执行。一个ServiceBean对象就表示一个Dubbo服务,ServiceBean对象中的参数就表示服务的参数,比如timeout,该对象的参数值来至@Service注解中所定义的。服务导出主要得做两件事情:根据服务的参数信息,启动对应的网络服务器(netty..

2021-02-22 03:57:03 476 1

原创 单例模式

单例模式懒汉式单例模式再类初始化时就创建一个实例,缺点是,如果没有用到的话,浪费内存。饿汉式单例模式当系统调用的时候才实例化,缺点是,第一次调用的时候耗时长。优点是,可以节省内存。登记式单例模式单例模式(Singleton Pattern) 前面说提到的五种创建模式,主要解决的问题是如何创建对象,获得产品。而单例模式最要关心的则是对象创建的次数以及何时被创建。Singleton模式可以是很简单的,它的全部只需要一个类就可以完成(看看这章可怜的UML图)。但是如果在“对象创建的.

2021-02-13 11:08:32 163

转载 ES中的RestHighLevelClient学习——TransportClient迁移

由于TransportClient已经都学习过了,所以直接学习迁移指南就可以。迁移指南官方给的很简单,有的地方需要动一下脑子,举一反三,因为官网给的都是例子,不过只要知道一个变化的情况,举一反三也不是很难。Rest里值得一体的也多了很多新的功能,因为可以直接使用low-level rest client去模拟访问,相当于封装了kibana的dev tools直接构建的json表达式,所以可以灵活构建出各种Request对象,包括各种原来没见过的ListTasksRequest、MainRespons

2021-02-08 14:10:52 1845

转载 ES中DSL的相关操作

一、ES中批量修改POST order_sale_detail/_update_by_query{ "script":{ "source":"ctx._source['create_time']='2020-04-22'" }, "query":{ "term":{ "create_time":"2020-03-16" } }} order_sale_detail => indexName  _update_by_query =&

2021-02-08 10:03:27 509

转载 Maven setting配置镜像仓库

国内Maven镜像仓库值得收藏1.配置IDE构建的Maven存放目录(解压目录)2.配置IDE的User setting file路径,修改setting配置文件  配置本地仓库  1<!--自定义本地仓库路径-->  2<localRepository>D:\Program Files\Develop\Portable\localRepository</localRepository>  配置mirrors远程镜像(一般配置一到两个镜像)...

2021-02-07 15:02:22 8270

转载 Elasticsearch怎么修改索引字段类型?

由于ElasticSearch没有像mysql一样可以直接字段数据类型的方法,因此需要通过创建中间索引:data_index_1,备份数据到中间索引:data_index_1,然后删除原索引: data_index,重新创建正确数据类型索引:data_index,再把中间索引:data_index_1的数据备份到新创建索引:data_index。语句通过kibana的 dev_tools/console 执行。操作步骤如下:1. 创建一个中间索引2. 向中间索引备份源索引的数...

2021-02-04 20:28:01 1111 2

转载 Elasticsearch-head插件使用小结

1、ElasticSearch-head是什么?ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。 -----百度百科而ElasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种...

2021-02-03 16:54:34 657

原创 深入Hotspot源码与Linux内核理解NIO与Epoll

IO模型 IO模型就是说用什么样的通道进行数据的发送和接收,Java共支持3种网络编程IO模式:BIO,NIO,AIO BIO(Blocking IO) 同步阻塞模型,一个客户端连接对应一个处理线程 BIO代码示例: package com.tuling.bio;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class SocketServer {

2021-01-24 23:05:35 313

原创 Netty核心源码剖析

为什么要看源码:1、提升技术功底:学习源码里的优秀设计思想,比如一些疑难问题的解决思路,还有一些优秀的设计模式,整体提升自己的技术功底2、深度掌握技术框架:源码看多了,对于一个新技术或框架的掌握速度会有大幅提升,看下框架demo大致就能知道底层的实现,技术框架更新再快也不怕3、快速定位线上问题:遇到线上问题,特别是框架源码里的问题(比如bug),能够快速定位,这就是相比其他没看过源码的人的优势4、对面试大有裨益:面试一线互联网公司对于框架技术一般都会问到源码级别的实现5、知其然知其所以然

2021-01-24 22:58:11 1048

转载 CompletionService:批量执行异步任务

我们思考下这个场景:从三个电商询价,然后保存在自己的数据库里。通过之前所学,我们可能这么实现。// 创建线程池ExecutorService executor = Executors.newFixedThreadPool(3);// 异步向电商 S1 询价Future<Integer> f1 = executor.submit( ()->getPriceByS1());// 异步向电商 S2 询价Future<Integer> f2 =

2021-01-14 11:15:16 312

转载 详解Tomcat系列(一)-从源码分析Tomcat的启动

在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来.由于篇幅的原因, 很难把Tomcat所有的知识点都放到同一篇文章中, 我将把Tomcat系列文章分为Tomcat的启动, Tomcat中各模块的介绍和Tomcat中的设计模式三部分, 欢迎阅读与关注.一:通过idea搭建Tomcat源码阅读环境首先我们到Tomcat的官网(http://tomcat.apache.org/)上下载Tomcat.

2021-01-13 11:22:16 308

原创 Zookeeper的客户端

Demo源码地址:https://gitee.com/archguide/zookeeper-demogit clone地址:https://gitee.com/archguide/zookeeper-demo.git原生客户端增删查改Zookeeper自带了两个客户端:一个是命令行客户端,就是zkCli.sh/zkCli.cmd 一个是Java客户端,就是Zookeeper类,也就是我说的原生客户端连接服务端/** * connectString 连接地址可以写多个..

2021-01-06 00:29:15 313

转载 Redisson实现Redis分布式锁的底层原理

一、写在前面二、Redisson实现Redis分布式锁的底层原理 (1)加锁机制 (2)锁互斥机制 (3)watch dog自动延期机制 (4)可重入加锁机制 (5)锁释放机制 (6)此种方案Redis分布式锁的缺陷三、未完待续一、写在前面现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。所...

2020-12-15 18:12:55 363

转载 ZooKeeper分布式锁的实现原理

七张图彻底讲清楚ZooKeeper分布式锁的实现原理【石杉的架构笔记】文章转载自:https://juejin.im/post/5c01532ef265da61362232ed#comment(写的很好,建议先熟悉zookeeper基本操作和原理再看文章)一、写在前面之前写过一篇文章(《拜托,面试请不要再问我Redis分布式锁的实现原理》),给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的,这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理。同理,我是直.

2020-12-15 17:49:35 153

原创 整体认识mybatis与源码分析

第一节课:整体认识mybatis与源码分析第二节课:Mybatis源码分析二第三节课:Mybatis源码分析三第四节课:Mybatis与Spring整合与徒手实现学完之后可以get到:Mybatis在开发中作用与工作原理Mybatis源码的精髓与设计模式Orm框架的核心思想与设计能力一、传统JDBC弊端总结:1、jdbc底层没有用连接池、操作数据库需要频繁的创建和关联链接。消耗很大的资源2、写原生的jdbc代码在java中,一旦我们要修改sql的话,j..

2020-12-13 19:39:55 278

转载 滴滴ElasticSearch千万级TPS写入性能翻倍技术剖析

桔妹导读:滴滴ElasticSearch平台承接了公司内部所有使用ElasticSearch的业务,包括核心搜索、RDS从库、日志检索、安全数据分析、指标数据分析等等。平台规模达到了3000+节点,5PB 的数据存储,超过万亿条数据。平台写入的峰值写入TPS达到了2000w/s,每天近 10 亿次检索查询。为了承接这么大的体量和丰富的使用场景,滴滴ElasticSearch需要解决稳定性、易用性、性能、成本等诸多问题。我们在4年多的时间里,做了大量优化,积攒了非常丰富的经验。通过建设滴滴搜索平台,打造滴滴E

2020-11-30 04:18:17 738

原创 HandlerAdapters

Spring MVC为我们提供了多种处理用户的处理器(Handler),Spring实现的处理器类型有Servlet、Controller、HttpRequestHandler以及注解类型的处理器,即我们可以通过实现这些接口或者注解我们的类来使用这些处理器,那么针对不同类型的处理器,如何将用户请求转发到相应类型的处理器方法中的呢,这就需求Spring MVC的处理器适配器来完成适配操作,这就是处理器适配器要完成的工作。SimpleServletHandlerAdapter 适配Servlet处理器 H

2020-11-23 01:09:54 191

原创 HandlerMapping

默认情况下,Spring MVC会加载在当前系统中所有实现了HandlerMapping接口的bean,再进行按优先级排序。如果只期望Spring MVC只加载指定的HandlerMapping,可以修改web.xml中的DispatcherServlet的初始化参数,将detectAllHandlerMappings的值设置为false。这样,Spring MVC就只会查找名为“handlerMapping”的bean,并作为当前系统的唯一的HandlerMapping。所以在DispatcherServ

2020-11-23 00:53:13 479

原创 容器初始化,请求处理

web.xml配置<web-app> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation<

2020-11-23 00:17:21 248

原创 springmvc原理解析

1、web框架功能分析2、模拟springmvc写web框架3、springmvc整体架构servlet和spring 实现web框架IOC处理器:做业务处理的组件 类 方法 跟url有映射关系功能分析:使用内嵌tomcat作为servlet容器,打开IOC扫描,后置处理器,IOC取出处理器 处理器spring注解:@Controller 普通的bean Map<url,Object处理器>springmvc注解:@...

2020-11-23 00:11:18 135

原创 springmvc请求处理流程

1、springmvc请求处理流程 <mvc:annotation-driven> 会默认启用RequestMappingHandlerMapping和RequestMappingHandlerAdapter2、HandlerMapping用法及源码解析 处理器映射器, map<url,处理器> 是一个接口,只有一个getHandler(HttpServletRequest var1)一个方法 映射器有四种: 三种处理器: ...

2020-11-22 22:40:02 226

原创 servlet

通过url访问资源有三个步骤:接收请求 处理请求 响应请求web服务器:将某个主机上的资源映射为一个URL供外界访问,完成接收和响应请求servlet容器:存放着servlet对象(由程序员编程提供),处理请求Servletpublic interface Servlet { //tomcat反射创建servlet之后,调用init方法传入ServletConfig void init(ServletConfig var1) throws ServletExcepti

2020-11-16 00:23:30 133

原创 Spring中事务的底层工作原理

@EnableTransactionManagement注解注入了两个bean:AutoProxyRegistrar ProxyTransactionManagementConfigurationAutoProxyRegistrarAutoProxyRegistrar主要的作用就是注册了一个InfrastructureAdvisorAutoProxyCreator的Bean。而InfrastructureAdvisorAutoProxyCreator继承了AbstractAdvi..

2020-11-12 22:35:05 579

原创 Spring事务

1. 数据库事务 commit rollback2. @Transactional注解底层工作原理源码解析 1)有Transactional注解,生成要给代理bean类 代理逻辑 2)执行方法前,datasource 获取一个数据库连接,spring建立的数据库连接,connection.setAutoCommit(false) 3)执行脚本 4)connection.commit(); 代理逻辑3. 传播机制源码解析 默认是requ...

2020-11-12 22:33:45 109

原创 JVM内存比例

...

2020-11-11 11:22:11 525

01-并发编程之深入理解JMM&并发三大特性(一).pdf

并发编程之深入理解JMM&并发三大特性

2021-10-27

mysql 事务等待锁超时分析

mysql 事务等待锁超时分析

2019-03-29

Java1.7源码包,包含sun

Java1.7源码包,包含sun,Java1.7源码包,包含sun,Java1.7源码包,包含sun

2019-01-02

hadoop2.7.1版本的hadoop.dll,winutils.exe

hadoop2.7.1版本的hadoop.dll,winutils.exe hadoop2.7.1版本的hadoop.dll,winutils.exe

2018-04-26

jar包对比分析工具

很好的jar包对比分析工具,大家用了都说好,很好的jar包对比分析工具,大家用了都说好很好的jar包对比分析工具,大家用了都说好很好的jar包对比分析工具,大家用了都说好

2017-09-29

java串口通讯源码

包括: comm.jar 串口通讯的jar包。 win32com.dll windows系统底层接口,需要放到windows\system32下。 SimpleRead.java 是监听方式读取串口反馈信息。 ReadPort.java 是轮询方式读取串口反馈信。

2015-11-10

Gson jar包+源码+文档

Gson jar包+源码+文档.最新的gson 2.3.1 Gson 资源 包含gson jar包、源码、文档,源码和文档直接右击解压就能查看

2015-10-01

Java数据结构和算法中文第二版.rar

Java数据结构和算法中文第二版.rar

2012-10-04

Java网络高级编程.pdf

Java网络高级编程.pdf

2012-10-04

系统集成项目管理工程师备考指南与习题详解,高章舜、柳纯录主编.rar

系统集成项目管理工程师备考指南与习题详解,高章舜、柳纯录主编

2012-10-04

系统集成项目管理工程师大纲

系统集成项目管理工程师大纲

2012-10-04

空空如也

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

TA关注的人

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