自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (2)
  • 收藏
  • 关注

原创 spring 之 Event

ApplicationEvent

2023-02-06 21:54:58 1138 1

原创 JVM - 虚拟机参数

一、堆内存1、什么是堆内存对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。堆内存是所有线程共有的,可以分为两个部分:年轻代和老年代。下图中的Perm代表的是永久代,但是注意永久代并不属于堆内存中的一部分...

2019-10-15 19:50:05 249

转载 java基础之ShutdownHook

一、什么是ShutdownHook?在Java程序中可以通过添加关闭钩子,实现在程序退出时关闭资源、平滑退出的功能。使用Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子。这个钩子可以在以下几种场景被调用程序正常退出使用System.exit()终端使用Ctrl+C触发的中断系统关闭使用Kill pid命令干掉进程Run...

2019-09-25 13:02:59 574

原创 java基础之锁

1、自旋锁2、自旋锁的其他种类3、阻塞锁4、可重入锁5、读写锁6、互斥锁7、悲观锁8、乐观锁9、公平锁10、非公平锁11、偏向锁12、对象锁13、线程锁14、锁粗化15、轻量级锁16、锁消除17、锁膨胀18、信号量...

2019-09-17 12:45:52 164

原创 java基础之位运算

java中位运算^,&,<<,>>,>>>总结1.^(亦或运算) ,针对二进制,相同的为0,不同的为1public static void main(String[] args) { System.out.println("2^3运算的结果是 :"+(2^3)); //打印的结果是: 2^3运算的结果是 :1}2 ==...

2019-09-17 12:29:48 161

转载 mysql 之执行计划

原文https://mp.weixin.qq.com/s/-BlLvBKcF-yalELY7XkqaQ1、执行计划是什么?执行计划,简单的来说,是SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。在MySQL中使用 explain 关键字来查看。如下所示:1.查询t_base_userselect * from t_base_user where name="andy...

2019-08-01 12:38:04 145

原创 线程池之ThreadPoolExecutor概述

线程池之ThreadPoolExecutor概述1、为什么需要线程池1.1 减少线程创建的损耗假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。线程池技术正是关注如何缩短或调整T1,T3时间的技术,从而提高服务器程序性能的。它把T1,T3分别安排在服务器程序...

2019-07-22 23:37:15 142

转载 ThreadGroup解读

ThreadGroup解读ThreadGroup 可以把thread的名字统一起来。一起处理catch。ThreadGroup是Java提供的一种对线程进行分组管理的手段,可以对所有线程以组为单位进行操作,如设置优先级、守护线程等。线程组也有父子的概念,如下图:线程组的基本操作1.1 线程组的创建public class ThreadGroupCreator { ...

2019-07-22 12:21:46 253

原创 MYSQL之STRAIGHT_JOIN

今天给大家下另一个性能提升神器-STRAIGHT_JOIN,在数据量大的联表查询中灵活运用的话,能大大缩短查询时间。首先来解释下STRAIGHT_JOIN到底是用做什么的:STRAIGHT_JOIN is similar to JOIN, except that the left table is always read before the right table.This can be...

2019-07-16 09:44:31 293

原创 2.1、spring之注解转换为BeanDefinition

spring支持注解@Component,@Controller,有此类注解的类会自动注册为一个bean,所有bean在生成之前都由一个BeanDefinition解析而来。假设如果我们自己来写处理注解的过程(1)读取项目中的所有类,判断类是否包含指定的注解。(2)如果包含对应的注解,根据注解生成对应的BeanDefinition。(3)将生成的BeanDefinition存储起来sp...

2019-05-06 21:47:01 1729 2

原创 2.2、spring之xml文件转换为BeanDefinition

一 、过程1.1 根据schema获取对应的处理器<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/s...

2019-05-05 23:35:07 643

转载 java之hashmap

心得:相较于JDK 1.7,Java 8中的HashMap有了较大的性能提升。修改了hash和resize方式,增加了红黑树的支持。 学习参考资料: (1)Java HashMap的死循环; 1. HashMap要点 (1)结构特点:Java中的HashMap是基于“数组+链表”的方式(链表法解决冲突),到了Java 8,应该是“数组+链表/红黑树”的方式。 (...

2019-04-25 13:03:43 160

转载 spring 之 PropertyValue

1.1、PropertyValue以对象的方式存储健值对,比存储在map会更加灵活1.2、PropertyValues即PropertyValue的集合管理类,MutablePropertyValues是其实现类1.3 测试代码

2019-04-24 12:54:59 1647

原创 1、spring之Resource加载

一、对资源的抽象Spring把其资源做了一个抽象,底层使用统一的资源访问接口来访问Spring的所有资源。也就是说,不管什么格式的文件,也不管文件在哪里,到Spring 底层,都只有一个访问接口,Resource。1.1 类结构图1.2 类和接口分析1、可以看到有四个比较重要的接口 InputStreamSource、Resource、WritableResource、ContextRe...

2019-04-10 20:37:38 4476 2

原创 java网络编程 - NetworkInterface

一、问题提出在使用 Java 开发网络程序时,有时候我们需要知道本机在局域网中的 IP 地址。很常见的一种做法是调用本地命令(比如 Windows 上的 ipconfig 命令和 Linux 上的 ifconfig 命令),接着解析本地命令的输出,最后得到本机在局域网内的 IP 地址。很明显,这种做法不够方便,也不够 Java。于是引出了 Java 在 JDK1.4 的时候添加的一个类: Net...

2019-03-26 21:24:15 542

转载 java网络编程 - IP和java.net.InetAddress类的使用

一:IP1、地址格式互联网上每一台计算机都有一个唯一标示自己的标记,这个标记就是IP地址。IP 地址使用32 位长度二进制数据标示,一般在实际中看到的大部分IP地址都是以十进制的数据形式标示的,如:192.168.1.3,IP地址格式如下:IP 地址 = 网络地址 + 主机地址网络号:用于识别主机所在的网络主机号:用于识别网络中的主机2、地址分类IP地址按照数字区域,分为5类,如下所...

2019-03-26 12:57:48 388

转载 java基础知识学习-流

一、JAVA流式输入/输出原理流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以010101101010这样的形式读取的。怎么把文件里面的数据读出来呢?你可以把文...

2019-03-21 21:48:43 451 1

转载 Java Collections Framework概览

概览容器,就是可以容纳其他Java对象的对象。Java Collections Framework(JCF)为Java开发者提供了通用的容器,其始于JDK 1.2,优点是:降低编程难度提高程序性能提高API间的互操作性降低学习难度降低设计和实现相关API的难度增加程序的重用性Java容器里只能放对象,对于基本类型(int, long, float, double等),需要将其包...

2019-03-18 20:46:43 123

转载 java网络编程 - TCP/IP四层模型

TCP/IP四层模型 TCP/IP参考模型    ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb...

2019-01-28 19:08:25 466

转载 深入理解spring注解之@ComponentScan注解

深入理解spring注解之@ComponentScan注解@ComponentScan注解是什么@ComponentScan注解的详细使用准备数据对@ComponentScan的详细解释案例basePackageClassesincludeFilters总结深入理解spring注解之@ComponentScan注解)今天主要从以下几个方面来介绍一下@ComponentScan注解:@C...

2019-01-12 18:14:20 4954

原创 Java中的break,continue关于标签的用法

java中的标签Java的控制循环结构中是没有关键字goto的,这种做法有它的好处,它提高了程序流程控制的可读性,但是也有不好的地方,它降低了程序流程控制的灵活性,所以说,“上帝是公平的”。所以,Java为了弥补这方面的不足,Java提供了break和continue的标签用法。Java中的标签就是一个紧跟着“:”的标识符。与其他语言不通,Java语言的标签必须放在循环前面才有作用。下面就来看一...

2018-10-18 20:50:59 7128 1

转载 java.util.ConcurrentModificationException 异常问题详解

环境:JDK 1.8.0_111在Java开发过程中,使用iterator遍历集合的同时对集合进行修改就会出现java.util.ConcurrentModificationException异常,本文就以ArrayList为例去理解和解决这种异常。一、单线程情况下问题分析及解决方案1.1 问题复现先上一段抛异常的代码。public void test1() { Arr...

2018-10-17 13:07:21 1384 2

转载 JVM-废弃永久代(PermGen)迎来元空间(Metaspace)

一、背景1.1 永久代(PermGen)在哪里?根据,hotspot jvm结构如下(虚拟机栈和本地方法栈合一起了):上图引自网络,但有个问题:方法区和heap堆都是线程共享的内存区域。关于方法区和永久代:在HotSpot JVM中,这次讨论的永久代,就是上图的方法区(JVM规范中称为方法区)。《Java虚拟机规范》只是规定了有方法区这么个概念和它的作用,并没有规定如何去实现它。在其他...

2018-10-08 22:44:19 643

转载 java 线程之线程状态

java线程状态1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(read...

2018-09-02 16:30:20 163

原创 java 并发之LockSupport

LockSupportLockSupport提供park()和unpark()方法实现阻塞线程和解除线程阻塞,实现的阻塞和解除阻塞是基于”许可(permit)”作为关联,permit相当于一个信号量(0,1),默认是0. 线程之间不再需要一个Object或者其它变量来存储状态,不再需要关心对方的状态.wait()和notify()、notifyAll()的比较public stat...

2018-08-29 20:16:15 186

转载 java 并发之CyclicBarrier

什么是CyclicBarrier可以理解为循环栅栏,栅栏就是一种障碍物.假如我们将计数器设置为10,那么凑齐第一批10个线程后,计数器就会归零,然后接着凑齐下一批10个线程,这就是循环栅栏的含义. 构造器:public CyclicBarrier(int parties, Runnable barrierAction) { if (parties &lt;= 0) thr...

2018-08-23 22:24:41 116

转载 java 并发之 Semphore

简介Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。很多年以来,我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待,所以前一百辆车会看到绿灯,可以开进这条马路,后面的车会看到红灯,不能驶入XX马路,但是如果前一百...

2018-08-22 13:32:39 205

转载 java 并发之CountDownLatch

概述CountDownLatch是一个用来控制并发的很常见的工具,它允许一个或者多个线程等待其他的线程执行到某一操作,比如说需要去解析一个excel的数据,为了更快的解析则每个sheet都使用一个线程去进行解析,但是最后的汇总数据的工作则需要等待每个sheet的解析工作完成之后才能进行,这就可以使用CountDownLatch。使用例子: 这里有三个线程(main,thread1...

2018-08-12 22:58:54 126

转载 java 并发 之 Interrupt()

interrupt简述interrupt() 方法只是改变中断状态而已,它不会中断一个正在运行的线程。这一方法实际完成的是,给受阻塞的线程发出一个中断信号,这样受阻线程就得以退出阻塞的状态。 更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,此时调用该线程的interrupt()方法,那么该线程将抛出一个 InterruptedE...

2018-08-12 22:21:05 177

转载 java并发之 CopyOnWriteArrayList的原理和使用方法

描述CopyOnWriteArrayList:CopyOnWriteArrayList这是一个ArrayList的线程安全的变体,其原理大概可以通俗的理解为:初始化的时候只有一个容器,很常一段时间,这个容器数据、数量等没有发生变化的时候,大家(多个线程),都是读取(假设这段时间里只发生读取的操作)同一个容器中的数据,所以这样大家读到的数据都是唯一、一致、安全的,但是后来有人往里面增加了一个数据...

2018-08-09 21:00:22 253

原创 mybatis源码解析--mapper解析之cache

mybatis源码解析之mapper解析(三)

2018-08-05 15:13:30 960

原创 mybatis源码解析之mapper解析(二)

mybatis源码解析之mapper解析xml解析的入口在SqlSessionFactoryBuilder中存在这样一个方法,所有的的build都会调用下面的这个方法public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) { try {...

2018-07-31 23:47:26 756

转载 Java反射中method.isBridge() 桥接方法

Java反射中method.isBridge() 桥接方法桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法。我们可以通过Method.isBridge()方法来判断一个方法是否是桥接方法。假定接口public interface SuperClass&lt;T&gt; { void meth...

2018-07-30 23:54:41 1255 2

原创 mybatis源码解析之简单案例(一)

mybatis简单案例完整的目录mybatis.xml的内容&lt;?xml version="1.0" encoding="UTF-8" ?&gt;&lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/myb...

2018-07-30 22:49:24 233

转载 java之JDK代理

JDK动态代理[1]—-代理模式实现方式的概要介绍 日常工作中经常会接触到代理模式,但一直没有对其进行深究。代理模式一直就像一团迷雾一样存在我心里,什么是代理模式?为什么要使用代理?代理模式有哪些实现?它的底层机制是怎样的?这些问题促使着我迫切想要揭开代理模式的神...

2018-07-05 19:30:49 1006

原创 (1)spring注解之PropertySources

spring注解之PropertySources@Configuration@PropertySources( @PropertySource(&quot;classpath:/config/load.properties&quot;))public class ServerProperties { @Value(&quot;${liubin.test.name}&quot;) privat...

2018-05-24 20:55:34 4725 2

原创 (4)spring-boot对于properties文件的加载

spring-boot对于properties文件的加载1、spring-boot 默认加载spring-boot默认加载application.properties的文件,查找该文件的顺序如下所述file:./config/file:./classpath:/config/2、修改spring-boot默认加载2.1 修改查找文件的名字$ java -...

2018-05-24 20:43:11 460

原创 (3)spring-boot 发布图标的变化

发布图标的变化 对于spring-boot项目,在启动的时候会有一个奇怪的标志,我们怎么将这个奇怪的标志换成我们喜欢的呢.1、直接更新在resource 下面添加一个banner.txt文件,文件中的内容就会显示在对应的图标的位置。 当然也可以添加一个banner.gif或者banner.png来替换对应的图标2、配置banner文件的位置##banner的位置和对应的...

2018-05-21 21:53:24 215

原创 (2)spring-boot配置和对于配置的引入

spring-boot配置和对于配置的引入spring-boot入口@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}...

2018-05-21 20:34:14 155

原创 (1)spring-boot如何引入对应的maven依赖

spring-boot引入其他的maven依赖引入总的依赖&lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;!-- Import dependency management from Spring Boot --&gt; ...

2018-05-21 20:05:08 3181

快速排序详解

快速排序的详细解释,包含了代码的实现和思想的讲解

2014-11-05

经典背包问题

背包问题

2012-09-26

空空如也

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

TA关注的人

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