- 博客(53)
- 资源 (24)
- 收藏
- 关注
原创 Spring IOC 源码解析(七) BeanDefinition 的注册
一.项目准备1.1 创建项目首先创建一个简单的 maven 项目,并导入 spring 最基础的依赖包.这里用到的 spring 版本是 5.1.3.RELEASE因为我们只用到最简单 BeanFactory ,并没有用 ApplicationContext (高级封装的 BeanFactory),所以只要一个 spring-beans 的依赖即可 <dependencie...
2019-01-15 23:05:14 321
原创 Map (一) HashMap 构造函数的秘密
Map(一)HashMap 构造函数的秘密学习一个类当然要先从构造函数开始学习。因为我们要使用它,要先创造它嘛。而且构造函数中也有大学问哦! 我们都知道 HashMap 的容量值都是 2^n 大小,那它是怎么把你传入的值高效的变为 2^n 呢?这就是我们本次需要探索的问题啦。1. 构造器(构造函数) public HashMap(); public HashM...
2018-09-11 11:48:11 4127 3
原创 SpringBoot 是如何通过 @SpringBootApplication 扫描项目中的 Bean
原因首先因为 XXXXXXXApplication 附带 @SpringBootApplication 注解,而 @SpringBootApplication 注解的层次如下:SpringBootApplication----@Inherited----@SpringBootConfiguration--------@Configuration----@EnableAutoConfig...
2019-06-22 16:56:16 3025 1
原创 Linux 中的特殊权限 SUID, SGID , SBIT
Linux 中的特殊权限 SUID, SGID , SBIT文件的特殊权限: SUID, SGID , SBIT查看一下文件和目录的权限:# ls -ld /tmp ; ls -l /usr/bin/passwd ...
2019-05-16 20:31:52 596
原创 20个 DEMO 了解如何使用 AWK
20 个 DEMO 了解 awk 如何使用一.程序结构语法结构awk [options] 'Pattern {Action}' file1 file2示例代码 awk '$3 == 0 { print $1 }' test.txt上述命令中,引号之间的部分是 awk 编程语言的程序.每个 awk 程序都是一个或多个模式-动作语句的程序: pattern { action }awk 的基...
2019-02-28 09:51:42 573
原创 Spring IOC 源码解析(九) ApplicationContext refresh()
一. 前言在高级容器中.到头来,启动的入口都是一样的,不论是 Spring 还是 Spring Boot 都会调用 AbstractApplicationContext 的 refresh() 方法来启动容器 , 在该方法中包含了整个高级容器的主要过程.二.源码加注解@Override public void refresh() throws BeansException, Illegal...
2019-02-24 14:57:00 320
原创 StringBuffer 和 StringBuilder 源码研究
文章目录一. 前言二. 区别二. 构造器四. append 方法五. StringBuffer 和 StringBuilder 的扩充一. 前言StringBuffer 和 StringBuilder的底层都是使用数组存储结构图:二. 区别他们两个的区别主要就在于 StringBuffer 的方法上基本都加了 synchronized 关键字,保证了线程安全,当然也降低了性能....
2019-02-23 15:58:40 242
原创 Spring IOC 源码解析(八) Bean 的创建
文章目录一.前言二.源码流程2.1 doGetBean()2.1.1 重点一 (11~25 行):2.1.2 重点二 (37~49 行):2.1.3 重点三 (53行 和 58行):2.1.4 重点四 (64~83 行):2.1.5 重点五 (86~104 行):2.2 createBean();2.2.1 重点一 (12~16 行):2.2.2 重点二 (32~35 行):2.2.3 重点三 (...
2019-02-14 19:01:56 250
原创 JDK8 之 Lambda 总结
文章目录一. 简介二. 使用效果2.1 未使用 lambda 和 使用 lambda 的区别三. 基本语法四. 函数式接口五.内置四大核心函数式接口5.1 Consumer5.2 Supplier5.3 Function一. 简介Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码 像数据一样进行传递)。可以写出更简洁、更 灵活的代码。作为一种更紧凑...
2019-01-17 23:51:25 1465 1
原创 Spring IOC 源码解析(六) XmlBeanFactory
一.前言现在我们把主要的类讲了一部分,下面我们来看看 Spring 是如何启动的.DefaultListableBeanFactory 作为一个默认的功能完整的 IOC 容器来使用.那我们就从它来入手.二. XmlBeanFactory2.1 描述XmlBeanFactory 是 DefaultListableBeanFactory 唯一的子类(已有 @Deprecated 注解), ...
2019-01-15 22:46:49 266
原创 Spring IOC 源码解析(五) ResourceLoader
一.前言用于加载资源的策略接口(例如,类路径或文件系统资源)。需要 ApplicationContext 来提供此功能,以及扩展的ResourcePatternResolver 支持。DefaultResourceLoader 是一个独立的实现,可以在 ApplicationContext 外部使用,也可以被 ResourceEditor 使用。使用特定上下文的资源加载策略,在Applic...
2019-01-15 22:45:00 430
原创 Spring IOC 源码解析(四) BeanDefinition
一.前言BeanDefinition是配置文件<bean>元素标签在容器中地内部表示。<bean>元素标签拥有class、scope、lazy-init等配置属性,BeanDefinition 则提供了相应地beanClass、scope、lazyInit类属性,BeanDefinition 就像<bean>中镜中人,二者是一一对应地来看一下整体的类结构...
2019-01-15 22:41:54 339
原创 Spring IOC 源码解析(三) DefaultListableBeanFactory
一.前言在第一篇的时候我们就讲过, spring ioc 的实现,主要的有两条实现分支,而 DefaultListableBeanFactory 的实现就是我们的第一个 BeanFactory 主要实现分支.来看一下 DefaultListableBeanFactory 的类结构:结合我第一篇做的流程图和 idea 生成的流程图,我们下面会重点讲一下左半部分的接口功能,右边类继承会做个简单...
2019-01-15 22:40:42 382
原创 Spring IOC 源码解析(二) BeanFactory
一.前言Spring IOC 容器顶级接口 BeanFactory 描述:定义了最基本的 ioc 容器规范,定义了 ioc 容器具有最基础的方法二.方法:BeanFactory 的所有方法:boolean containsBean(java.lang.String name) 此bean工厂是否包含具有给定名称的bean定义或外部注册的单例实例?java.lang.Stri...
2019-01-15 22:39:23 275
原创 Spring IOC 源码解析(一) 概述篇
一. IOC是什么:IOC —Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在 Java 开发中,Ioc 意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好 Ioc 呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”●谁控制谁,控制什么:传统Java SE程序设...
2019-01-15 22:38:18 227
转载 MYSQL 存储经纬度使用什么数据类型
一.问题描述创建 MySQL 表时,您应当特别注意 lat 和 lng 属性。我们都知道经纬度范围是-180~180。但是经纬度有可能是这样的值40.69847032728747。肯定是存储数据精度越高,最终位置定位越准确。但是考虑到数据库资源以及可定位到精准性.二.解决方案根据谷歌官方的建议,鉴于 Google Maps 目前的缩放能力,您只需要精确到小数点后六位数。为了让表占用的存储...
2019-01-03 11:01:32 26859
原创 IDEA 为 sql 文件配置方言
IDEA 为 sql 文件配置方言一.问题描述在 IDEA 创建后缀为 .sql 的文件时,默认情况下是没有设置 sql 语言的.所以一些关键字没有提示并且还没有背景色.例如下图:本人使用的 mysql ,想创建一个表,但是 id 类型我要设置 bigint 类型,提示语句并没有显示 bigint.但是 id 类型我要设置 bigint 类型,提示语句并没有显示 bigint.而...
2019-01-03 10:43:27 24594 3
原创 Map (五) HashMap get()
首先打开源码: public V get(Object key) { Node<K,V> e; return (e = getNode(hash(key), key)) == null ? null : e.value; }可以看到,get() 主要方法还是调用 getNode() 所以我们重点看一下这个方法: final N...
2018-09-27 11:43:13 3833
原创 Map (四) HashMap 已故事的角度理解 resize()
我们先来看一篇故事,有益我们有更好的理解。很久以前有一个学校,有7500名学生(size)和100间教室(oldCap)。学生的学号为0000~7499(hash),教室的编号为0~99 (数组下标)。为了使学生均匀的进入每间教室,校长规定,按学生学号的末尾2位选择对应编号的教室(hash & (数组长度 - 1)),如:学号 0001 进入 01 教室学号 0012 进入 1...
2018-09-18 22:11:48 545
原创 Map (三) HashMap 如何利用 hash 计算存储位置
我们在看 HashMap 的源码的时候经常能看到 tab[i = (n - 1) & hash]) 这么一串代码。他是专门用来计算当前 key 存储的位置,并获取当前存储位置的元素,进行后续的判断。让我们用图的形式更直观的看一下它是如何怎么计算的吧。i = 5 即 tab[5]这就是 HashMap 的精华所在,不论是 get() 还是 put() 都是通过上述的方法计算当前位置是...
2018-09-18 21:55:24 5054 3
原创 Map (二) HashMap put()方法详细解刨
创建 HashMap 我们的即可开始往里面存键值对啦。我们来一步一步的看看 HashMap 是如何存储!我们要模拟一下存储时的多种场景,后场景是在前场景不匹配的情况下的场景(如有遗漏请评论提醒): 我们先理解3个主要参数: * hash (通过 key 计算出的 int 值) * key (传入的 key) * value (传入的 value)我们模拟 ha...
2018-09-11 11:57:35 880 1
原创 Feign 快速配置
1.添加依赖包 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </de...
2018-08-22 17:56:22 340
原创 Eureka 知识点总结
知识点总结一. Eureka Server (以下简称ES) 在服务不是正常下线的情况下,ES 会每隔 60s(默认值) 将当前清单中超时 90s(默认值) 没有续约(心跳)的服务剔除。 在 ES 出现15分钟内统计心跳失败比例(本人认为是15分钟内统计的心跳次数)低于百分之85的情况下。会出现自我保护状态(ES 页面出现红色警告 EMERGENCY……)。ES 会将当前...
2018-08-04 19:33:59 698 2
原创 Spring Boot 整合 Mybatis
1.导入依赖新创建项目时,添加 mysql,jdbc,mybatis,web 四个依赖。 pom.xml如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot...
2018-06-23 17:46:06 241
原创 Spring Boot Cache 缓存使用
1.Spring Boot 使用 Cache我们知道一个程序的瓶颈在于数据库,我们也知道内存的速度是远大于硬盘的速度的。当我们需要重复地获取相同的数据的时候,我们一次又一次的请求数据库或远程服务,导致大量的时间耗费在数据库查询或者远程方法调用上,导致程序性能的恶化,这便是数据缓存要解决的问题。1.1 Spring 缓存支持Spring 定义了 org.springframework.c...
2018-06-23 17:07:52 1132
原创 Spring Boot 整合 ActiveMQ
1. ActiveMQ 部署1.1 下载 http://www.apache.org/dyn/closer.cgi?filename=/activemq/5.15.4/apache-activemq-5.15.4-bin.tar.gz&amp;amp;action=download 或 http://www.apache.org/dyn/closer.cgi?filename=...
2018-06-22 20:12:49 260
原创 Spring Boot 整合 Redis 并设置序列化类型
1.Spring Boot 整合 Redis1.1 导入依赖如果在创建 Spring Boot 项目的时候没有考虑过使用 redis ,而后期要用 redis 的话。导入下面一个依赖就可。 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework.boot&a
2018-06-22 18:08:28 8696 7
原创 自己动手做一个开源工具
自己动手做一个开源工具1. 为什么想自己做一个开源工具 原因1:在前不久学完设计模式的情况下,急切的想试一试设计模式带来的美感。原因2:崇拜,向往开源的世界。当自己做的东西被千千万万人使用的时候,那种感觉对痴迷编程的程序员来说不是金钱和权利可以来衡量的。原因3:应适应景,根据现在和曾经的公司,以及以往所看到和所写的代码所出现的隐藏问题。想制造出一套能通用而且方便和可读性强的开源工...
2018-06-13 10:53:35 1050
转载 Mysql 参数优化
1. 链接优化1.1 max_connections MySQL的最大连接数 如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,MySql会为每个连接提供连接缓冲区,就会开销越多的内存,连接数太大,服务器消耗的内存越多,以至于影响服务器性能,所以要根据服务器的配置适当调整该值,不能盲目提高设值。可以过’conn...
2018-05-15 17:11:07 1316
原创 Spring 基于注解设置 Bean 的作用域
Spring 中 Bean 的作用域前言 在默认情况下,Spring应用上下文中所有的 Bean 都是作为以单例的形式创建的。也就是说,不管给定的一个 Bean 被注入到其他 Bean 多少次,每次所注入的都是同一个实例。 在大多数情况下,单例的 Bean 是很理想的方案,初始化和垃圾回收对象实例所带来的成本只留给一些小规模任务。在这些任务中,对对象的保持无状态并且在应用中反复重...
2018-05-12 15:49:20 8827
原创 Spring 自动化构建环境 ,一次打包到处运行
spring 自动化构建三步曲使用 spring 自动化构建可以解决的问题: 1.项目大,打包慢,因为不用环境而要多次打包 2.打包时需要手动修改配置文件,如数据库链接等问题。并且还可能忘记修改。 3.虽然也可以使用 maven 的自动化构建插件。但是还要手动选打包环境,并且每个环境都要重新打包。1.web.xml 配置默认环境(在web.xml中添加此参...
2018-05-11 16:31:42 886 1
原创 设计模式原则(一)--- 单一职责原则
单一职责原则单一职责原则(Single Responsibility Principle),简称SRP。 其实在日常生活中,单一职责是随处可见的。数码相机的拍照功能音响放歌在贴近一些我们程序猿生活的做显示处理的显卡做声音处理的声卡从以上几点出发。可以看出,每个人或者物品分别处理着一个功能,并且在处理自己的领域时,都有着顶级的能力。我们知道,对于数码相机的拍照功能和音响放歌...
2018-03-28 22:23:08 363 2
原创 RedisTemplateUtil spring整合redis 的操作类,精心整合
使用 spring-data-redis 整合 redis 后,扫描该类,就可以使用了.在 service 注入方式加入此类即可使用.import java.util.Collection;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import java...
2018-01-24 10:26:42 8862 6
原创 SpringMVC文件上传拦截器,大小验证,类型验证
//文件类型判断public class FileTypeInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler)throws Ex
2017-08-18 09:16:53 2924
原创 java极光推送实例
在用java进行极光推送的时候,需要的一个工具类: 使用的时候,直接调用 sendToRegistrationId 方法,传入参数. package com.mimacx.util;import cn.jiguang.common.resp.APIConnectionException;import cn.jiguang.common.resp.APIRequestException;impo
2017-08-07 18:27:50 2109 1
转载 出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener解决方案
再 maven 项目用tomcat启动时,有时会出现以下几个错误中的一个或全部:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListenerjava.lang.ClassNotFoundException: org.springframework.web.util.Introspect
2017-07-27 15:33:54 1379 1
转载 Maven工程打包时动态设置war包目录
pom.xml中加入插件并设置属性; <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId>
2017-07-20 14:04:50 805
原创 Maven工程打包时动态设置war名
pom.xml加入插件,并设置属性<build> <plugins> <!--设置war包名字--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugi
2017-07-20 14:00:09 1897
原创 SpringMVC后台实现跨域支持
对请求的跨域支持.使用拦截器实现.在自定义拦截器中添加以下代码就可以实现啦 @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { //增加
2017-07-19 14:40:59 527
原创 日记拦截器的配置
虽然很简单,但是对很多人来说还是有用的..留下来以后做个足迹;** * 记录日志拦截器 * Created by Administrator on 2017/5/25. */public class LogInterceptor implements HandlerInterceptor { private static Logger logger = LoggerFactory.ge
2017-07-19 14:38:07 439
jdk_linux_2u201-i586.zip
2020-08-28
redis-3.0.0.gem
2017-12-18
FastDFS_v5.05.tar.gz
2017-12-04
redis-desktop-manager-0.8.8.384_.zip-绿色版-安装包
2017-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人