自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我能在河边钓一整天的鱼

欢迎来到我的酒馆

  • 博客(102)
  • 资源 (1)
  • 收藏
  • 关注

原创 ☆JUC中安全的并发集合类

CopyOnWriteArrayListList集合在单线程时是安全的,但多线程的情况下是不安全的。public class ListTest { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i <= 10; i++) { new Threa...

2020-05-31 20:12:58 305

原创 八种情况下分析Sychronized锁的执行

目录情况1+2、两个方法锁一个对象(有无sleep)情况3、一个对象,二个方法(一个带锁的方法,一个普通方法)情况4、两个对象,两个同步方法情况5+6、两个静态同步方法(一个对象/两个对象)情况7+8、一个静态同步方法一个同步方法(一或二个对象)总结情况1+2、两个方法锁一个对象(有无sleep)只要这个对象被一个方法锁住了,其他方法就不能执行,必须等这个对象释放后,才能执行。所以两个方法锁一个对象,不论是否其中的一个方法有sleep,永远是先拿到锁的方法先执行.

2020-05-31 12:41:07 236

原创 Java中的线程通信——生产者与消费者问题

目录前言Synchronized虚假唤醒LockCondition的精准通知与唤醒线程前言等待与唤醒机制其实就是经典的生产者与消费者问题我们知道,生产者要想和消费者作用在一件产品上,必须要用到锁机制。通过锁机制保证一个产品同一时间只有一个角色在执行。下面将分别使用Synchronized和Lock锁解决生产者和消费者的问题。Synchronizednotify唤醒单个线程、notifyAll唤醒所有等待的线程。注意:wai...

2020-05-31 09:56:49 229

原创 比较wait和sleep的区别

1.来自不同的类wait==》Objectsleep==>Concurrent2.关于锁的释放wait会释放锁,sleep相当于报这锁睡觉,不会释放锁。3.使用的范围不同wait必须在同步代码块中使用sleep可以在任何地方睡...

2020-05-30 16:42:24 105

原创 什么是JUC

JUC是java.util.concurrent的简写。在jdk官方手册中可以看到juc相关的jar包有三个。用中文概括一下,JUC的意思就是java并发编程工具包

2020-05-30 16:02:38 4355

原创 SaaS、PaaS、IaaS

SaaS、PaaS、IaaS的组成SaaS:Software-as-a-Service(软件即服务)PaaS:Platform-as-a-Service(平台即服务)IaaS:Infrastructure-as-a-Service(基础设施即服务)厂商提供与用户管理

2020-05-30 15:27:26 219

原创 Redis的缓存穿透&击穿&雪崩

目录使用Redis架构的高可用问题缓存穿透(Redis中查不到)缓存击穿(量太大,缓存过期)缓存雪崩使用Redis架构的高可用问题Redis缓存的使用不可避免的会造成数据一致性问题,从严格意义来讲,这个问题没有解决办法。一旦出故障,丢多少ms多少s的数据都算丢。如果对数据一致性要求非常之高,那么久不能使用缓存。下图展示的是请求的流程缓存穿透(Redis中查不到)缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没...

2020-05-30 10:51:39 200

原创 Redis的哨兵模式

目录层层链路集群哨兵模式什么是哨兵模式哨兵模式的作用多哨兵模式配置哨兵模式sentinel.conf文件所有参数哨兵模式的优缺点层层链路集群紧接上篇https://blog.csdn.net/Delicious_Life/article/details/106436476在讲哨兵模式之前,我们先来看一下层层链路的Redis集群。上一篇的集群是绝对的一主两从。如果我把架构改成这样呢?80是79的从机,80同时也是81的主机。此时三台R...

2020-05-30 09:41:14 335

原创 Redis的主从复制

目录概念什么是主从复制主从复制的作用环境配置一主两从测试主从复制的原理概念什么是主从复制主从复制是指将一台Redis服务器的数据,复制到其他Redis的服务器,前者称为主节点,后者称为从节点。数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。默认情况下,每台Redis都是主节点。一个主节点可以有多个从节点,但一个从节点只能有一个主节点。单台Redis最大使用内存不应该超过20G主从复制的作用1...

2020-05-30 08:35:25 248

原创 Redis的发布订阅

目录Redis的发布订阅是什么?Redis发布订阅相关命令使用Redis客户端测试发布订阅Redis订阅发布原理Redis发布订阅的使用场景Redis的发布订阅是什么?Redis发布订阅(pub/sub)是一种消息通信模式:发送者发送消息,订阅者接收消息。微信、微博、关注系统都有应用。订阅发布图这种图是抢消息,只有一个客户端能抢到我们当然也可以让每个客户端都接受到消息Redis发布订阅相关命令使...

2020-05-29 14:31:39 230

原创 Redis持久化之AOF

目录AOF(Append Only File)AOF的工作原理AOF的启动AOF的修复AOF重写的规则AOF的优缺点总结Redis的持久化AOF(Append Only File)AOF的工作原理以日志的形式记录每一个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据。也就是说,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作...

2020-05-29 13:54:20 254

原创 Redis持久化之RDB

目录为什么要持久化RDB(Redis DataBase)RDB的工作原理RDB的配置RDB的触发机制查看RDB文件的位置如何恢复RDB文件RDB持久化的优缺点为什么要持久化Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,一旦服务器进程退出,服务器中的数据库状态也会消失。RDB(Redis DataBase)RDB的工作原理在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复...

2020-05-29 13:06:39 308

原创 Redis.conf文件详解

目录单位包含网络通用设置快照安全限制客户端的连接AOF配置单位单位对大小写是不敏感的。包含类似于java中的import,可以在一个redis配置文件中引入多个redis配置文件网络bind 127.0.0.1 # 绑定的ipprotected-mode yes # 保护模式port 6379 # 端口设置通用设置daemonize yes # 以守护进...

2020-05-28 16:55:48 182 1

原创 Springboot整合Redis

目录比较Jedis和Lettuce基本整合RedisTemplate的使用自定义RedisTemplate企业开发的RedisUtil比较Jedis和LettuceSpringboot整合时使用springboot-data-redis。在spinrbgoot2.x以后,原来使用的jedis数据源被替换成了lettuce。jedis:采用直连,多个线程操作是不安全的,想要避免需要使用jedis pool。更像BIO模式 lettuce:底层采用netty进...

2020-05-28 11:27:53 265

原创 使用Jedis操作Redis

目录什么是Jedis测试Jedis连接Redis使用Jedis操作Key使用Jedis操作String使用Jedis操作List使用Jedis操作Set使用Jedis操作Hash使用Jedis操作事务什么是JedisJedis是Redis官方推荐的java连接开发工具!使用Java操作Redis中间件!测试Jedis连接Redis1.引入jar包 <dependencies> <d...

2020-05-28 08:56:34 300

原创 Redis的事务操作

Redis中的事务Redis事务的本质是一组命令的集合!一个事务中的所有命令都会被序列化。在事务执行的过程中会按照顺序执行!Redis的事务没有隔离级别的概念,所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行! ExecRedis的中的事务不保证原子性Redis的事务执行流程开启事务(multi) 命令入队(...) 执行事务(exec)正常执行redis中事务操作================================...

2020-05-28 08:56:17 320

原创 Redis实现乐观锁

目录回忆乐观锁和悲观锁使用watch实现乐观锁使用unwatch对解除乐观锁回忆乐观锁和悲观锁悲观锁:认为任何时候都会出问题,无论做什么都要加锁!乐观锁:认为什么时候都不会出问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过数据。更新时会先获取version然后比较version。如果有人修改,最终的数据会以那个人修改的为准,本次再去执行未完成的乐观锁操作将失败~使用watch实现乐观锁单线程下,先执行乐观锁,再执行事务...

2020-05-27 20:55:01 156

原创 Redis的三种特殊数据类型

Geospatial 地理位置

2020-05-26 17:24:00 266

原创 Redis的常用命令

1./etc/init.d/redis start ---启动redis服务端2.redis-cli ---连接redis客户端3.keys * ---查看所有的key4.EXISTS key值 ---判断当前key是否存储5.move key值 数据库编号 ---移动当前key到指定数据库6.set key值 value值 ----新建key、...

2020-05-26 10:56:59 133

原创 Redis-Benchmark压力测试工具

目录redis-benchmark可选参数测试redis-benchmark可选参数redis-benchmark是redis内置的一个压力测试工具,可以模拟 N 个客户端同时发出 M 个请求。测试时可输入如下参数测试测试:100个并发连接 100000请求,在redis目录下输入redis-benchmark -h localhost -p 6379 -c 100 -n 100000控制台会打印各种命令进行上述操作的日志我们...

2020-05-26 10:07:24 346

原创 什么是Redis

目录什么是RedisRedis能干什么?Redis的特性什么是RedisRedis(Remote Dictionary Server)即远程字典服务。是一个开源的使用ANSI C语言编写,支持网络,可基于内存也可持久化的日志型、Key-Value数据库,并提供多种语言的APIredis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave主从同步Redis能干什么?1.内存存储、持久化...

2020-05-26 08:39:00 181

原创 什么是NoSQL

NoSQL的概念NoSQL = Not Only SQL,泛指非关系型数据库。NoSQL的特点1.方便扩展(数据之间没有关系)2.大数据量高性能(Redis一秒能写8万次,读取11万次)。它的缓存记录级是一种细粒度的缓存,性能很高。3.数据类型多样化(不需要事先设计数据库,随取随用),存储方式有键值对存储,列存储,文档存储,图形数据库(社交关系)大数据时代的3V和3高海量(Volume)、多样(Variety)、实时(...

2020-05-26 08:25:31 181

原创 MybatisPlus中的代码生成器

目录代码自动生成器前提生成器代码自动生成器AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率前提数据库必须设计的非常缜密,极少改动。否则生成一大堆文件后,你会在数据库和项目中来回增增改改,最后可能到底哪里报错都不清楚生成器...

2020-05-25 16:15:58 274

原创 MybatisPlus中的条件构造器Wrapper

目录条件构造器测试一、根据多条件查询测试二、查询匹配相等条件的数据测试三、between...and查询测试四、模糊查询测试五、手写sql嵌套子查询测试六、排序条件构造器Wrapper即条件构造器,用来写一些复杂的sql语句。测试一、根据多条件查询我们查询姓名不为空,邮箱不会空,年龄大于5岁的数据@SpringBootTestpublic class WrapperTest { @Autowired ...

2020-05-25 15:52:15 2124

原创 MybatisPlus中的性能分析插件

目录性能分析插件开启插件测试性能分析插件类似于mysql内置的explain和扩展的showprofile,Druid等,mybatis-plus内置了性能分析插件,这个性能分析插件需要你开启,它会在程序执行时打印在控制台上开启插件1.首先在config文件中新增@bean,开启插件 //开启SQL性能分析插件 @Bean @Profile({"dev","test"}) //设置dev和test环境开启...

2020-05-25 15:08:07 1837 2

原创 MybatisPlus中的删除操作

目录物理删除与逻辑删除物理删除逻辑删除物理删除与逻辑删除物理删除:从数据库中直接移除逻辑删除:没有真实的被删除掉,通过一个变量让该条记录失效。delete=0 ==>delete = 1物理删除 //根据id删除 @Test public void testDeleteById(){ userMapper.deleteById(1L); } //根据id批量删除 @T...

2020-05-25 11:48:17 4774

原创 MybatisPlus中的查询操作

目录根据Id查询根据条件批量查询使用map自定义查询分页查询根据Id查询 @Test public void testSelectById(){ User user = userMapper.selectById(1L); System.out.println(user); }根据条件批量查询 @Test public void testSelectByBatchId...

2020-05-25 11:28:09 702

原创 MybatisPlus中的乐观锁操作

目录乐观锁与悲观锁乐观锁的实现方式测试乐观锁插件乐观锁与悲观锁乐观锁:它总是认为不会出现问题,无论干什么都不去上锁!如果出现问题再次更新值测试悲观锁:它总是认为肯定会出现问题,无论干什么都会上锁,再去操作!乐观锁的实现方式取出记录时,获取当前的version 更新时,带上version 执行更新时,set version = new Version where version = oldVersion 如果version不对,就会更...

2020-05-25 10:57:40 552 1

原创 MybatisPlus之更新操作和自动填充处理

目录更新操作自动填充方式一:数据库级别(工作中不建议使用)方式二:代码级别更新操作 @Test public void testUpdate(){ User user = new User(); user.setId(2L); user.setName("鬼畜"); //注意传入的参数是对象 int i = userMapper.updateById(user); ..

2020-05-25 10:13:53 2938 8

原创 MybatisPlus之插入操作、雪花算法与主键生成策略

使用MybatisPlus执行插入操作我们插入一条记录 @Test public void testInsert(){ User user = new User(); user.setName("钓鱼者"); user.setAge(3); user.setEmail("123456789@qq.com"); int result = userMapper.insert(user); ...

2020-05-25 08:22:54 6525 2

原创 MybatisPlus设置日志输出

目录前言开启mybatis-plus日志测试前言在上一篇的基础上,我们启动日志输出,方便测试。开启mybatis-plus日志在application.properties文件中设置日志,并指定设置什么日志,这里我使用的是标准输出日志。注:有些日志需要你导入jar包再设置哦测试启动测试类,发现打印输出了SQL创建和执行的过程...

2020-05-24 22:37:45 4724

原创 MybatisPlus快速开始

一、创建数据库数据库名为mybatis_plus,建表字段如下DROP TABLE IF EXISTS user;CREATE TABLE user(id BIGINT(20) NOT NULL COMMENT '主键ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT(11) NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NU...

2020-05-24 22:26:45 127

原创 什么是MybatisPlus

简介MybatisPlus是一个用来简化Mybatis的持久层框架,与其具有类似作用的框架还有JPA、tk-mapper。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响 损耗小:启动即会自动注入基本CRUD,性能基本无损耗,直接面向对象操作,BaseMapper 强大的CRUD操作:内置通用Mapper、通用Service,仅仅通过少量配置即可实现单表大部分CRUD 支持Lambda:通过Lambda表达式,方便编写各类查询条件。 支...

2020-05-24 15:54:47 2780

原创 Springboot中的JSR303校验

JSR303是Java为Bean数据合法性校验所提供的一个标准规范我们知道前端传过来的数据后端也要做校验,但你在controller里边判断啊,返回提示信息啊着实很麻烦。此时你可以在类上使用@Validated注解开启JSD303校验,然后在具体的属性上添加@注解,如图,@Email会验证name自动是否符合邮箱格式,你还可以在注解的括号里修改提示信息...解放你的controllerJSR303常用格式注解...

2020-05-24 11:04:41 384

原创 Java内存模型JMM

目录什么是JMMJMM的作用JMM模型的八种指令JMM的指令规则什么是JMMJMM:是Java Memory Model的缩写,即java内存模型JMM的作用JMM是一个缓存一致性协议,用于定义数据读写的规则 。JMM定义了线程工作内存和主内存之间的抽象关系:即线程之间的共享变量存储在主内存(Main Memory),每个线程都有一个私有的本地内存(Local Memory)此外,共享对象的可见性问题由volilate来...

2020-05-24 10:34:12 191

原创 GC垃圾回收算法

GC的概念垃圾回收机制是一种自动的回收机制,它回收的内容位于方法区和堆内存中我们知道堆中包括新生代、幸存区(from,to)、老年代、元空间。GC回收大部分都是新生代。GC分为轻GC(普通的GC)、重GC(全局GC)GC的算法引用计数法它会给堆中的每个对象技术。最少使用次数的对象会先被GC回收复制算法标记压缩清除法...

2020-05-24 09:30:10 253

原创 使用Jprofiler工具进行堆调优

堆的调优我们先写个启动类看看默认情况下堆分配的空间是多少package com.lt;public class Demo01 { public static void main(String[] args) { long max = Runtime.getRuntime().maxMemory(); long total = Runtime.getRuntime().totalMemory(); System.ou...

2020-05-23 17:38:45 842

原创 栈和堆的基本概念

栈栈是一种数据结构,具有先进先出的特点。栈内存主管程序的运行,生命周期和线程同步。线程结束,栈内存也就释放,因此栈不存在垃圾回收问题8大基本类型+对象引用+实例方法运行在栈中栈满了:StackOverFlowError堆一个JVM只有一个堆,堆内存的大小可以调节堆内存中细分三个区域:新生区(伊甸园区)、养老区、永久区,GC垃圾回收主要在伊甸园区和养老区所有引用类型的真实对象保存在堆中,此外常量池的地址也保存在堆中堆满了:OutO...

2020-05-23 15:10:02 378

原创 本地方法栈、程序计数器、方法区

本地方法栈(Native Method Stack)本地方法(native method):凡是带了native关键字的,说明java的作用范围达不到了回去调用底层C语言的库本地方法区:将带native关键字的本地方法进来,在执行引擎(Excutrion Engine)执行的时候加载本地库(Native Libraies)目前很少用JNI进行通信,更官方的使用Socket、WebService等等程序计数器(Program Counter Register)...

2020-05-23 10:52:26 414

原创 沙箱安全机制

目录什么是沙箱安全机制沙箱安全机制的发展史沙箱的组成什么是沙箱安全机制Java安全模型的核心就是Java沙箱(sandbox)。沙箱是一个限制程序运行的环境。沙箱机制就是将Java代码限定在虚拟机特定的运行范围中,并且严格限制代码对本地系统资源的访问,通过这样的措施保证对代码的有效隔离,防止对本地系统造成的破坏,沙箱主要限制系统资源访问(cpu、内存、文件系统、网络)沙箱安全机制的发展史在Java中将执行程序分为本地代码和远程代码两种。本地代...

2020-05-23 10:28:25 647

Ubuntu16.04安装文档

1. 创建虚拟机 2. 安装Ubuntu系统 设置光盘镜像: 点击“开启此虚拟机”。 输入主机名: 输入用户名: 输入密码:itcast123 确认密码: 选择不更新: 至此,安装完成。 3. 安装完成后的配置 3.1. 设置root用户的密码 设置root用户的密码为root 3.1.1设置静态IP https://blog.csdn.net/Delicious_Life/article/details/104603312 3.2. 设

2020-09-18

空空如也

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

TA关注的人

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