自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM总结思维导图

2020-03-19 10:09:54 225

原创 kafka的下载与安装

下载首先去官网下载 http://kafka.apache.org/downloads选择最新的版本下载完成后解压使用tar -zxvf kafka_2.12-2.3.1.tgz 命令解压然后进入kafka根目录下可以看到修改配置文件进入config/server.properties文件修改 broker.id和log.dirs因为kafka一般是集群部署,所有每个单机有...

2019-12-07 13:26:55 1848

原创 编程式事务和声明式事务浅析

事务管理在spring中,事物管理一般分为两类,编程式事务管理和声明式事务管理。编程式事务管理,一般我们使用TransactionTemplate来实现。声明式事物管理本质上是spring AOP的实现,对目标方法进行拦截,在目标方法之前加入事务,在执行完目标方法之后根据执行情况,进行回滚或者提交两种操作。下面分别介绍两种方式的实现 编程式事务管理首先是xml配置<...

2019-11-01 17:46:22 306

原创 spring data jpa简介

spring data jpa首先要介绍一下JPA,JPA就是Java Persistence API翻译过来就是java持久化API,它是在sun提出的java持久化规范,这些接口都在javax.persistence包下。JPA的出现最要是为了整合ORM框架,从本质上来说,它其实算是一种规范,而它提供的基本都是接口,而非具体实现,Hibernate就是一个不错的实现例子。它两的关系可以类比j...

2019-10-29 21:08:08 277

原创 java的CAS机制

CAS是java中的一种乐观锁实现方式,它能在很多场景下保证线程安全的同时有着很多的性能。先看一个例子package cas;public class CASdemo { public static int count=0; public static void main(String[] args) { for(int i=0;i<2;i++) { new Thr...

2019-09-22 09:52:39 381 1

原创 java迭代器

在java中迭代器的使用是非常常见的,它可以让我们在遍历某种数据结构的序列时,无需关注它的底层结构。它类似于指针,可以遍历整个数据结构序列。在java中,我们最常使用Iterator接口来实现迭代器,它的源码如下public interface Iterator {  boolean hasNext();//判断容器是否还有可以访问的元素    Object next();//迭代器向...

2019-09-20 21:58:42 179

原创 mybatis-geneator自动生成代码过程

当使用mybatis时,大量的实体类和映射文件如果手动书写,很容易出错。mybatis-geneator就为我们提供了自动生成这些mapper和xml文件的方法。 导入依赖首先需要在pom文件中进行依赖配置<plugin> <groupId>org.mybatis.generator</groupId> ...

2019-09-15 11:36:49 480

原创 mysql数据库学习之sql调优思路

mysql调优的大致思路1.定位到执行慢的sql语句首先执行show VARIABLES LIKE '%quer%'可以得到第一个表示慢日志是否开启,默认关闭,第二表示慢日志的文件的位置。一般执行时间超过10秒的sql语句就会被放进这个文件里面(10秒是默认值,可以修改),这样就可以定位到执行慢的sql语句。2.用explain分析执行慢的语句运行EXPLAIN UPDATE...

2019-09-14 18:03:03 191

原创 mysql数据库学习之锁模块

不同的引擎对锁的支持也不相同,下面是常用的两种引擎的锁相关区别 首先用sql脚本导入100万行的数据分别到两种引擎对应的表中。MyISAMMyISAM默认使用表级锁,不支持行级锁读锁(又称共享锁)当一个会话查询SELECT * FROM person_info_large_myisam WHERE id BETWEEN 1 and 200000另一个会话会阻塞直到查询完...

2019-09-14 17:01:28 151

原创 mysql数据库学习之索引

数据库为什么要使用索引?首先说下全表扫描,存储的最小单位是块或页,整个表就是多个块或页,我要进行查找操作就必须将所有的块或页加载进内存,然后一个一个的去查找,这样效率低下。所以我们引入索引。举个例子,数据库就是一个字典,全表查找就是一页一页的去查找,而索引就是通过拼音首字母就去查找,这样就极大的提高了效率。什么字段适合做索引?在mysql中,一般主键就是非常合适的索引,但其他像唯一键,普通...

2019-09-08 14:21:22 214

原创 hashmap和ConcurrentHashMap详解(对比1.8前后)

hashmapHashMap是一个用于存储Key-Value键值对的集合,每一个键值对对象叫做Entry,这些键值对(entry)储存在一个数组中。对于hashmap,我们最常用的就是get和put方法,那么这两个方法具体做了什么事情?put方法: 比如调用hashmap.put(name,tang); 首先会调用hash函数来决定键值对插入数组的索引,假设算出来的索引为3.但是当多次pu...

2019-09-05 22:17:14 660

原创 redis学习总结

什么是redis?Redis 是一个用c语言编写的基于内存的高性能key-value数据库。它是非关系性数据库,能支持多种复杂的数据结构,因为基于内存,所以有着高效的读写性能。redis的下载地址:https://github.com/microsoftarchive/redis/releases测试redis的性能在redis安装目录的cmd里执行redis-benchmark -n ...

2019-09-01 15:28:10 211

原创 JAVA线程池的使用

线程池我们一般使用线程,需要的时候就去创建一个。但是当并发量变高的时候,频繁的创建销毁线程必然会有很大的内存资源开销。所以我们使用了线程池。首先介绍ThreadPoolExecutor类,它是线程池的核心创建线程池的方法: public ThreadPoolExecutor(int corePoolSize, int maximu...

2019-08-31 19:21:14 144

原创 JVM(二)垃圾回收机制

在java中,由gc负责垃圾对象的回收,下面介绍它怎么完成这个工作的。什么对象可以判定为垃圾?没有被任何其他对象引用的对象 怎么判断哪些对象是垃圾?引用计数算法,判断对象的引用数量,每个对象实例都有一个引用计数器,当它被引用时+1,完成引用时-1. 这种方法的优点是:执行效率高,程序执行受影响较小。缺点是:无法解决循环引用的问题,会导致内存泄漏(很致命,已经被摒弃)可达性...

2019-08-28 20:20:18 177

原创 JVM(一)内存空间分配

什么是JVM内存?一般java文件被编译成.class文件之后,会由类加载器加载进内存中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。JDK8的内存空间大概有以下几部分jdk7以后字符串常量池就由方法区移到了堆中首先方法区:方法区是线程共享的区域,它一般用于储存与类相关的...

2019-08-25 15:50:16 621

原创 ibatis学习以及与mybatis的不同

什么是ibatis?它是一个用来访问数据库的工具,可以看作数据持久化框架。它将sql语句映射为java对象,可以让我们只需要知道xml文件配置和sql语句的写法就能操作数据库。使用起来简单,轻量。ibatis的配置它的配置都是在sqlMapConfig.xml文件中<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMa...

2019-08-24 09:43:31 225

原创 spring实战学习(六)事务管理

什么是事务?在软件领域,我们将一组要么全部执行要么全不执行的操作叫做事物。事务的四个特性(ACID)原子性(atomicity):原子性确保了事物中的操作像原子操作一样要就全部执行或全不执行,如果有一个操作失败,事务回滚。一致性(consistency):数据在执行操作前后保持一致。隔离性(isolation):但多个用户同时操作相同的数据时,事务保证它们互不影响。持久性(durabi...

2019-08-17 17:37:10 153

原创 spring依赖整理

spring常用依赖整理核心依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.1.RELEASE</ver...

2019-08-17 10:51:16 405

原创 spring实战学习(五)jdbc模板

jdbc是什么?JDBC和mybatis,hibernate一样都能实现数据持久化的作用,它可以让我们访问到数据库,进行一些增,删,查,改的操作。用spring的jdbc模板访问数据的demo创建maven项目,导入依赖 <dependency> <groupId>org.springframework</groupId> ...

2019-08-17 10:41:23 138

原创 类加载器及加载过程

什么是类加载器,它是干什么的?当我们把一个类编译后的.class文件放入内存空间,这个过程就是由类加载器完成。JVM预定义有三种类加载器,当一个 JVM启动的时候,Java开始使用如下三种类加载器。1.Bootstrap ClassLoader 它是根类加载器,由c++编写,JVM启动时加载它,然后它加载另外两个类加载器,它还会加载$JAVA_HOME中jre/lib/rt.jar里所有的cl...

2019-08-13 20:35:34 202

转载 IDEA使用教程

https://blog.csdn.net/qq_27093465/article/details/52918873IntelliJ IDEA使用教程 (总目录篇)刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改tab的显示的数量和行数,打开项目方式,...

2019-08-13 09:57:21 99

原创 spring实战学习(四)AOP及其实现方式

什么是AOP?aop指的是面向切面编程,它本质上是一种技术。在企业开发中,很多应用的一些模块像日志,安全,事务等它们在多个应用中都存在,我们就可以将它们提取出来作为切面,这样能够让我们能加关注于业务层面,也减少了很多重复代码的编写。AOP的几个专业名词连接点(Joinpoint):目标对象中,所有可以增强的方法。切入点(Pointcut):目标对象中,已经增强的方法通知/增强(Advic...

2019-08-11 20:22:23 122

原创 spring实战学习(三)配置方式

spring配置方式有xml配置和注解配置和基于java的配置方式,配置Bean是spring应用的重要一环,依赖注入也是spring实现ioc的核心。xml配置方式常见的几种注入方式1.setter方法注入2.构造器方法注入3.p命名空间注入setter方法注入在spring中一般使用元素来调用属性的setter方法注入<bean id="tom" class="test....

2019-08-10 13:04:27 158

原创 spring实战学习(二)spEL表达式

什么是spEL表达式?spEL是spring表达式语言,它是一种强大,简介的装配Bean的方式,它通过运行期执行的表达式将值装配到Bean的属性或构造器参数中。简单来说,以前我们装配Bean不管是值注入,还是其他Bean的引用,都是我们在编写Spring配置文件就确定好了的,而现在我们可以装配运行期才能确定的属性值。spEL表达式都是用#{}标记的spEL的字面值表达式,如<pro...

2019-08-08 21:45:53 325

原创 spring实战学习(一)简介

spring简介spring是一个开源的一站式框架,可以理解本质上为一个容器,装有什么对象就能提供什么服务。它存在的主要目的是简化java开发,而贯穿spring最重要的两个特性是依赖注入和AOP。为简化java开发,spring采用的策略:1.基于POJO的轻量级和最小侵入性编程。2.通过依赖注入和面向接口实现松耦合。3.基于切面和惯例进行声明式编程。4.通过切面和模板减少样板式代码...

2019-07-28 18:54:38 176

原创 volatile的作用

volatile的作用1.它能保证多线程时共享变量的可见性。2.禁止指令重排序首先要想保证线程安全,就必须保证两个必要条件互斥访问和可见性互斥访问:同一时间只能保证一个线程访问某一资源。可见性:在多线程环境中,一个线程修改了某个共享资源,对于其他线程来说可见所以可以知道volatile不一定能保证线程安全首先了解一下java内存模型(JMM)在JMM中,所有的变量都放在了主存中,每...

2019-07-28 11:40:20 175

原创 synchronized和ReentrantLock浅析

线程安全简单的说,多个线程同时操作一个数据就有可能造成数据不一致,这就是线程不安全。线程安全发生的前提:1.在多线程环境中2.存在共享数据只要在这种情况下,多个线程同时修改一个共享数据就可能存在线程安全问题。看一下demo代码package test;public class ThreadTest implements Runnable { static int count=0...

2019-07-24 13:26:13 155

原创 java中多线程实现方法分析

多线程的两种实现方法分析什么是进程,线程?进程是一个系统分配资源的基本单位。一个应用程序被启动,就会被加载进入内存(cpu),此时在内存中的应用程序就是进程,一个应用程序可以有多个进程同时运行在内存中。在早期的系统中 ,只有进程,但从创建进程到不同进程之间的切换所花费的资源开销很大,所以为了降低这种开销,我们引入了线程的概念。线程是系统独立运行的单元,它在创建,不同线程之间切换的开销都远小于进...

2019-07-23 12:26:05 101

转载 zookeeper简介

转:http://www.cnblogs.com/sunddenly/p/4033574.htmlzookeeper的简单介绍一、分布式协调技术在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术。那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。这...

2019-07-21 09:52:36 89

空空如也

空空如也

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

TA关注的人

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