- 博客(62)
- 收藏
- 关注
原创 深入理解Spring系列之四:BeanDefinition装载前奏曲
框架的源码分析,有些代码可以暂时忽略,如Spring如何进行XML模式校验的、XML解析的细节等,这些代码可以在了解了整体的原理之后,再做针对性的分析,关注重点内容即可,切记在一开始就去深挖每个细节,这样不仅会耗费很长时间,而且容易陷入某个坑里出不来。以《深入理解Spring系列之一》示例中的ApplicationContext applicationContext = new ClassPa...
2019-04-26 16:37:43
195
原创 深入理解Spring系列之三:BeanFactory解析
在Spring容器启动的过程中,会将类解析成Spring内部的BeanDefinition结构,并将BeanDefinition存储到一个叫DefaultListableBeanFactory中,本篇将深入分析BeanFactory首先,看一下DefaultListableBeanFactory的类图,可以看到 DefaultListableBeanFactory 间接实现了BeanFac...
2019-04-26 16:23:51
250
原创 深入理解Spring系列之二:BeanDefinition解析
Spring容器启动的过程中,会将Bean解析成Spring内部的BeanDefinition结构,本篇将深入分析这个BeanDefinition的内部结构。直接看BeanDefinition源码,public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { /** *...
2019-04-26 16:14:28
281
原创 深入理解Spring系列(一)
首先,看一下 Spring 的最基本使用方式,直接看代码,public class LoginService { public void login() { System.out.println("execute LoginService"); }}public class LoginResource { private LoginService ...
2019-04-26 16:01:23
209
原创 将本地项目上传到码云
1.cd到你的本地项目路径下2.git init(初始化git容器,在内部会生成.git文件夹)3.将码云中新建好的空项目的路径拷贝,并执行git remote add origin + 你刚刚在码云复制的那行路径4.注意:git pull origin master --allow-unrelated-histories,将码云上的仓库pull到本地文件夹(首先需要pu...
2019-04-26 10:49:56
156
原创 SpringBoot配置Redis链接池
首先是redis各个参数的配置,在 application-dev.properties中配置如下:#redis配置redis.server.host=192.168.50.162redis.server.port=6379redis.server.password=passwordredis.server.timeOut=5000redis.server.maxIdle=50r...
2019-04-19 10:02:50
995
原创 SpringBoot+MyBatis+MySQL读写分离(实例)
1. 引言读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP。然...
2019-04-18 17:57:29
362
原创 深入研究 Java Synchronize 和 Lock 的区别与用法
一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1)获取锁的线程执行完...
2019-04-16 16:03:17
522
原创 理解CAP
前言在学习Zookeeper相关知识的时候,了解到了CAP理论。即在分布式系统中,不可能同时满足以下三种一致性(C:Consistency)可用性(A:Available)分区容错性(P:Partition Tolerance)这三个基本需求,最多只能同时满足其中的两项,因为P是必须的,因此往往选择就在CP或者AP。相关术语解释一致性一致性是指从系统外部读取系统内部的数据...
2019-04-15 11:27:44
255
原创 缓存穿透、缓存击穿、缓存雪崩区别和解决方案
一、缓存处理流程前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。二、缓存穿透描述:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。解决方...
2019-03-29 10:54:27
1374
原创 SpringMVC工作原理以及源码分析(基于spring3.1.0)
SpringMVC工作原理以及源码分析(基于spring3.1.0)springmvc是一个基于spring的web框架.本篇文章对它的工作原理以及源码进行深入分析. 一、springmvc请求处理流程 二、springmvc的工作机制 三、springmvc核心源码分析 四、谈谈springmvc的优化一、springmvc请求处理流程 引用spring i...
2019-03-22 15:01:48
208
原创 全文搜索引擎 Elasticsearch 入门教程
全文搜索引擎 Elasticsearch 入门教程http://www.ruanyifeng.com/blog/2017/08/elasticsearch.htmlJava中使用elasticsearch搜索引擎实现简单查询、修改等操作-已在项目中实际应用以下的操作环境为:jdk:1.8;elasticsearch:5.2.0maven架包下载坐标为:<dependen...
2019-03-15 17:32:53
276
原创 linux查找日志技巧
linux查找日志技巧 先必须了解两个最基本的命令:tail -n 10 test.log 查询日志尾部最后10行的日志;tail -n +10 test.log 查询10行之后的所有日志;head -n 10 test.log 查询日志文件中的头10行日志;head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;...
2019-02-27 16:40:09
341
原创 SpringBoot多数据源配置
(1)首先配置application spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: first: #数据源1 driverClassName: com.mysql.jdbc.Driver ...
2019-02-25 18:42:24
357
原创 Kotlin对list的操作
涉及到的代码在KotlinForJava的Kotlin1项目中,针对集合List和MutableList的操作进行测试,参考的是Kotlin中文学习资料,前面给出的文章中能找到相应的资源链接。学习的同时通过编码练习是很有必要的,除了加深理解还可以发现资料中存在的问题,常见的如IDEA或API更新了而资料是旧的,花时间去学习已经废弃的方法就不值得了。所以,建议英文好的通过官网给出的资料来学习是最...
2018-11-15 14:32:49
17137
原创 Java 多线程均匀处理同一个List中的数据
需求:使用多线程来处理同一个List中的数据,希望每个线程处理的数量是均匀的事例代码如下:public class Test { static class HandleThread extends Thread { private String threadName; private List<String> list; ...
2018-09-30 15:34:35
8409
原创 设计模式-代理模式
什么是代理模式? 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介公司来买车,他们来给我找车源,...
2018-09-21 11:23:30
162
转载 Linux安装kafka
三、安装kafka1、下载kafkacd /usr/local/srcwget http://archive.apache.org/dist/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz注意,kafka_2.11-0.8.2.1.tgz版本是已经编译好的版本,解压就能使用。tar -xzvf kafka_2.11-0.8.2.1.tgz #解压m...
2018-08-31 16:54:19
3968
转载 IDEA配置github并上传项目
IDEA配置github并上传项目1.在github中创建一个账号:https://github.com/join?source=header-home2.下载并安装git:https://git-scm.com/downloads3.安装成功后打开Git Bash,输入下列命令,设置git全局用户名和邮箱+ View Code4.在IDEA中设置Git,在File-->Setting-&g...
2018-06-20 15:13:53
280
原创 Log4j的配置
log4j java项目中的配置第一步你需要 相关的jar包第二歩你需要一个关于log4j的配置文件第三歩 你需要一个检测用的java 文件导入这两个jar包进你的项目中 commons-logging.jar log4j-1.2.17.jar配置log4j.properties文件 这个文件放在src下 123456789101112131415161718192021222324### 设...
2018-06-07 11:39:47
129
原创 Mysql的7种join
MySQL 的七种 join建表在这里呢我们先来建立两张有外键关联的张表。CREATE DATABASE db0206;USE db0206;CREATE TABLE `db0206`.`tbl_dept`( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30), `locAdd` VARCHA...
2017-11-09 14:47:15
245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅