自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 线程的简介

Thread.yield(),(相当于sleep(0))一定是当前线程调用此方法,当前线程放弃获取的CPU时间片,但不释放锁资源,由运行状态变为就绪状态,让OS再次选择线程。thread.join()/thread.join(long millis),当前线程里调用其它线程t的join方法,当前线程进入WAITING/TIMED_WAITING状态,当前线程不会释放已经持有的对象锁。obj.wait(),当前线程调用对象的wait()方法,当前线程释放对象锁,进入等待队列。​也能获取状态,但是会清理。

2023-07-05 01:24:43 68

原创 spring资源扫描

目录使用Class和Classloader定位资源spring中的ClassPathBeanDefinitionScanner(基于spring5.1.2)mybatis通过重写ClassPathBeanDefinitionScanner的isCandidateComponent(metadataReader)来过滤mapper接口使用Class和Classloader定位资源通过Classloader定位资源: 路径不要带/开头,默认就是以classpath为根路径// 文件路径ClassLoa

2022-01-07 00:54:01 500

原创 JDBC小总结

文章目录一:小例子二:自动加载驱动三:优化效率1:优化JDBC读取效率2:批量写提高写操作效率3:使用连接池管理连接四:参考一:小例子这段代码是模板代码:需要自己管理连接,自己进行参数封装,自己处理接结果,自己处理异常。针对这些缺点,一些ORM框架就派上用场了:mybatis二:自动加载驱动在DriverManager中有一个静态方法:首先检查是否通过配置的方式注册了驱动,基本上不用。核心是下面的SPI方式加载:这个iterator实际上代理到了:ServiceLoader的looku

2020-06-13 18:26:08 408

原创 mybatis基本使用以及加载配置文件学习总结

文章目录一:mybatis的使用一:mybatis的使用引入mybatis的pom坐标<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version>&lt...

2020-04-19 14:47:00 995 1

原创 jdk源码:基础(一):Object类学习总结

文章目录一:Object类二:对象克隆学习1:重写clone2:序列化方法一:Object类java.lang.Object是java所有类的父类,所有类默认继承ObjectObject的第一类方法:线程相关阻塞线程(超时返回和不带超时):wait(_),wait(long timeout),wait(long timeout,int nanos)唤醒线程: notify(),niti...

2020-02-22 16:54:14 113

原创 Java注解学习总结

文章目录一:注解基础学习元注解注解的定义和属性二:编译时解析注解三:运行时解析注解四:常见的操作源代码字节码的库五:参考博客一:注解基础学习注解从含义上讲是一种元数据,本质上只是对代码的一种注释说明,因为有了注解的解析才有了相应的功能。如果没有注解解析产生功能,它还不如注释清晰。从结构上看,注解编译后就是一个接口元注解元注解:元注解是一种基本注解,在定义注解时使用,主要定义注解的作用域,生...

2019-12-11 01:33:56 420

原创 java基础之容器系列学习:(一):集合框架简单概述

文章目录一:集合框架简介一:集合框架简介Java中用来存储多个数据的类型有:数组+集合.集合相对于数组来说有以下优势大小可变存储的类型可变 (只能存引用类型,基本类型通过包装类存储)存储方式多样(内部可用数组结构,可用链表)在集合体系中主要有两类:Collection(List+Set)和mapCollecyion接口作为List接口和Set接口的顶层接口,提供操作集合元素的...

2019-08-23 21:29:32 128

原创 logback源码学习一:配置加载过程

文章目录一:获取一个日志记录器Logger一:获取一个日志记录器Logger从 Logger logger = LoggerFactory.getLogger(Test.class);开始,LoggerFactory是slf4j的类public static Logger getLogger(Class<?> clazz) { Logger logger = ge...

2019-08-19 21:08:51 2282

转载 eclipse中checkstyle插件的安装使用

checkstyle是代码格式检查工具,根据已经设置好的编码规则(一个xml文件)来自动检查代码,比如:方法的行数、方法和变量的命名等。目的是规范代码,通俗点讲就是让代码看起来像一个人写的。下面讲下如何使用这个工具。一、工具安装  方式一:  window --> preferences,没有安装checkstyle的时候这个弹出如下:   ...

2019-05-16 19:47:01 457

原创 Java的SPI机制入门

文章目录一:SPI简单介绍二:SPI举例三:JDBC中如何使用SPI一:SPI简单介绍最近在网上看到了java中SPI这个技术,据了解在JDBC,JNDI,日志门面,Dubbo等很多技术中都有使用,因此决定学习一下.    SPI(service provider interface:服务提供者接口),为接口寻找服务实现类,编程时针对接口编程,由具体...

2019-05-08 23:46:45 527

原创 github使用

通过github可以管理代码,还可以作为maven仓库一:配置SSH Keys连接GitHub步骤一:下载安装git bash步骤二:删除本机已有的ssh key打开git bash -> cd .ssh删除ssh目录下所有文件步骤三:生成新定ssh keycd ~ssh-keygen -t rsa -C “有效邮箱”在ssh目录下成功生成了公钥和密钥pwd查看ke...

2019-04-23 22:38:28 224

原创 java并发编程系列(二):synchronized的实现原理简介

synchronized可能Java多线程之间实现同步最常用的方式之一了,但是Java底层是如何实现的?仅在此记录自己的理解一:java编程中使用synchronized实现线程同步对于普通方法,synchronized的锁对象是当前对象(this)对于类方法(static方法),synchronized的锁对象是当前类的class对象在同步代码块中的锁是括号里的对象二:实现原...

2019-04-01 21:59:28 120

原创 java并发编程系列(一):多线程简介

一:多线程的发展转载: 多线程的效率和性能问题二:目前并发编程遇到的问题线程上下文切换目前的cpu主要通过划分时间片来执行线程任务,在线程之间来回切换就需要记录线程的状态(在线程上下文中).上下文切换会影响执行效率,那么尽可能减少上下文切换可以提高效率,方法如下:无锁并发编程,CAS算法,建立合适数量的线程死锁(一般是代码问题)资源限制软件资源 socket连接数等...

2019-03-27 23:05:16 104

原创 HashMap原理解析

HashMap在jdk1.8之前和Jdk1.8之后内部实现有所不同:在jdk1.8之前,hashMap底层是数组和链表的结构,从jdk1.8开始内部实现使用了数组和链表以及红黑树一:jdk1.8之前的HashMap实现原理(以jdk1.7为例)先看构造方法: public HashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_...

2019-03-26 20:41:28 93

原创 kafka入门基础

一:基本概念 分布式消息系统,由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。具有高水平扩展和高吞吐量.当前由apache开源. 整个系统由生产者、Broker Server和消费者三部分组成,生产者和消费者由开发人员编写,通过API连接到Broker Server进行数据操作topi...

2019-03-01 21:43:41 119

转载 字符串常量池简介

为什么Java中的String类是不可变的? String类是Java中的一个不可变类(immutable class)。简单来说,不可变类就是实例在被创建之后不可修改。在《Effective Java》 Item 15 中提到了为了使类成为不可变,需要遵循的五条规则:不要提供任何会修改对象状态的方法。保证类不会被扩展。使所有的域都是fi...

2019-02-13 21:54:51 152

转载 HashMap在并发读写过程中形成环状链表(并发问题)

今天研读Java并发容器和框架时,看到为什么要使用ConcurrentHashMap时,其中有一个原因是:线程不安全的HashMap, HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,查找时会陷入死循环。纠起原因看了其他的博客,都比较抽象,所以这里以图形的方式展示一下,希望支持!(1)当往HashMap中添加元素时,会引起Ha...

2019-01-23 22:17:55 2245

原创 eclipse中几处的jdk设置以及各自的作用

一:jdk和jre的区别JDK(java development kit):java开发工具,包含java基础类库,java工具(常用指令,java,javac等),运行时环境(jre),面向于开发人员JRE(Java Runtime Environment):包含jvm(虚拟机)的实现,java核心类库(rt.jar),面向Java应用程序.本地安装jdk之后,能看到jdk内部包含jre以...

2019-01-22 22:46:03 512

原创 linux(以ubuntu为例)上搭建zookeeper集群

准备工作:(以三台主机为例),在vmware上安装三台虚拟机ubuntu(并安装JDK)获取zookeeper软件包(具体方式百度),解压步骤一:修改zookeeper配置文件:在$ZK_HOME/conf/下复制一份zoo_sample.cfg改名zoo.cfg(zk默认读取的配置名)步骤二:修改zoo.cfg1.dataDir=自定义路径/myid(myid的内容是当前zook...

2018-12-28 22:57:10 504 2

原创 ubuntu上RabbitMq安装指南

此处仅记录离线安装步骤:下载安装包:http://www.rabbitmq.com/download.html此处选择:rabbitmq-server-generic-unix-3.6.10.tar.xz启动RabbitMQ服务需要Erlang的环境输入命令erl,如果显示以下信息则已经安装如果没有安装,则可以选择在线安装或离线安装都行,以在线安装为例子apt-get instal...

2018-11-24 20:17:19 1049

原创 eclipse中用maven创建web项目

一. 项目环境介绍- eclipse(STS)- maven3.6.0版本- JDK1.8二. maven创建web项目创建项目创建完成的项目结构可能是这样的:下面需要做些调整,使其符合maven项目的结构:设置jre:(由1.5-&amp;gt;1.8)项目-&amp;gt;右键-&amp;gt;properties设置完成后结构如下:添加:src/test/res...

2018-11-10 20:14:21 522

转载 linux磁盘分区

Linux下的磁盘分区和逻辑卷 一、硬盘接口类型  硬盘的接口主要有IDE、SATA、SCSI 、SAS和光纤通道等五种类型。其中IDE和SATA接口硬盘多用于家用产品中,也有部分应用于服务器,SATA是一种新生的硬盘接口类型,已经取代了大部分IDE接口应用。SCSI 、SAS主要应用于服务器上,普通家用设备一般不支持SCSI和SAS接口。SAS也是是一种新...

2018-11-05 23:03:53 1036

转载 jdk的jmap指令使用介绍

jdk的jmap指令使用介绍1.基本介绍jmap 主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节.jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小可以将VM 中的heap(堆)以二进制格式输出到文本中.2.命令格式和参数说明命...

2018-10-27 21:02:59 1353

空空如也

空空如也

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

TA关注的人

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