自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 MyBatis-Plus.updateById方法更新不了空字符串/null解决方法

网上很多博客,都没讲到重点。方法一、加配置: mybatis-plus: global-config: #字段策略 0:"所有字段都更新和插入" 1:"只更新和插入非NULL值" 2:"只更新和插入非NULL值且非空字符串" field-strategy: 1局限性: 1. 你还需要在字段上配置el 2. 另外有些不想修改的字段,在传值的时候没传过来也会被更新为NULL。方法二、加注解最快解决问题的方式,实际上是在对应的字段上面,增加以下注解:...

2021-09-13 14:29:55 917

原创 Semaphore解析

1.public void acquire() 2.public void acquireUninterruptibly()

2021-06-03 16:14:56 281

原创 并发的世界(基本概念二)

并发的级别 由于临界区的存在,多线程之间的并发必须受到控制。根据控制并发的策略,我们可以把并发的级别分类,大致上可以分为阻塞、无饥饿、无障碍、无锁、无等待几种。

2021-05-31 15:49:03 224

原创 并发的世界(基本概念一)

1.同步和异步同步:同步方法调用一旦开始,调用者必须等待调用方法返回后,才能继续后续的行为。异步:异步方法调用更像一个消息传递,一旦开始,方法就会立即返回

2021-05-31 14:34:25 161

原创 Idea中Maven指令作用

1.clean2.validate3.com

2021-05-31 11:00:21 454

原创 并发的世界(线程的运行过程)

线程的运行过程线程的所有状态都在Thread.State中定义public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED} NEW状态表示刚刚创建的线程,这种线程还没开始执行。等到线程的start()方法调用时,才表示线程开始执行。 当线程开始执行时,处于RUNNABLE状态,表示线程所需的一切资源都已经准备好了。 如果线程在执...

2021-05-20 15:43:12 125

原创 MYSQL面试题

MySQL的binlog有有几种录入格式?分别有什么区别?有三种格式,statement,row和mixed。 statement模式下,每一条会修改数据的sql都会记录在binlog中。不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制。 row级别下,不记录sql语句上下文相关信息,仅保存哪条记录被修改。记录单元为每一行的改动,基本是可以全部记下来但...

2021-05-20 11:43:39 739

原创 解决Java用“|“和“.“作为分隔符分割字符串无法拆分的问题

"|" 和 "."在Java中有特殊的意义String[] split1 = a.split("|");String[] split2 = b.split(".");这种是拆分不了的,改成下图即可: String[] split1 = a.split("\\|"); String[] split2 = b.split("\\.");

2021-04-28 17:26:20 625

原创 JVM概念、调优

1. 对于JVM的理解 JVM将内存主要划分为:程序计数器、JAVA虚拟机栈、本地方法栈、堆、方法区等几个部分。1)程序计数器 是线程私有的区域,每个线程需要有个计数器记录当前执行到那个指令。如果当前线程是在执行java方法,那么这个计数器记录的是正在执行的虚拟机字节码指令地址。如果执行的是native方法,则计数器的值为空。2) java虚拟机栈 也是线程私有的。其生命周期与线程相同。里面存放的元素叫栈帧。栈帧里面存放的是一个函数的上下文,具体存放的是执行函数的一些数据。执行...

2021-03-18 13:42:49 134 1

原创 JDK 1.8特性 Stream是串行还是并行

目录一、串行流和并行流的概念二、串行流和并行流的源码比较3、 关于串行流和并行流的效率比较Stream可以是并行也可以是串行。一、串行流和并行流的概念1) 串行流 API:stream()执行机制:基于pipeline(管道) 流的特性: 1. stream不存储数据 2. stream不改变数据源 3. stream不可重复使用 4. stream串行执行 5. 上个节点会影响下个节点2) 并行流 API:parallel...

2021-03-17 23:27:46 1420 1

转载 SET key value(NX、PX、XX)

转载自:http://redisdoc.com/string/set.html从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改: EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value 。 PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value.

2021-03-17 22:53:17 7067

原创 String是值传递还是引用传递

示例/** * DES:测试类 */public class Test { /** * 修改参数内容 * @param name */ public void updateName(String name) { name = "李四"; } public static void main(String[] args) { String name = "张三"; Test test =

2021-03-10 18:18:33 185

转载 IDEA的项目不能创建java class文件

IDEA中右击项目点击新建,出现的文件没有JavaClass文件解决办法1. 项目右键点击新建2.点击 Mark Directory as3.点击Sources Root

2021-03-10 17:27:35 727

原创 线程相关的概念总结

1. 线程池是什么? 是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行。2. 关于BIO、NIO、AIO原理 I/O是以流为基础进行数据的输入输出的 1)BIO(同步阻塞):服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善.(发送请求后,先咨询服务端是否有线程...

2021-03-05 17:34:11 170 2

原创 rabbit原理以及集群总结

目录1. 什么是AMQP2. 消息队列的作用与使用场景3. 多个消费者监听一个队列时,消息如何分发?4. RabbitMQ如何实现延时队列?5. 无法被路由的消息去了哪里?6. 消息基于什么传输?7. 消息幂等性怎么实现?8. 如何确认消息不丢失?9. Exchange是什么?10. 什么是Binding?11. 通信过程?12. rabbitMq、activeMq、rocketMq、kafka对比分析1. 什么是AMQP AMQP,即Advance.

2021-03-04 23:12:10 452 1

原创 不可重入锁和可重入锁分析

1.基本概念 锁其实就是把所需要的代码块,资源,或数据锁上,在操作他们的时候只允许一个线程去做操作。最终结果是为了保证cpu计算结果的正确性。 死锁:两个线程由于争抢临界资源或彼此通信而造成的一种阻塞现象。 可重入锁:也叫做递归锁,指的是同一线程外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。 最简单两种可重入锁:Synchronized和ReenTrantLock。Synchronized是依赖于JVM实现的,而ReenTrantLock是JDK实现的...

2021-03-01 16:21:54 278 3

原创 Redis基础概念总结

111

2021-02-26 17:52:06 101

原创 操作系统概念、基本原理

操作系统学习笔记一(操作系统简介)操作系统学习笔记二(进程的描述和控制)操作系统学习笔记三(进程的创建)操作系统学习笔记四(操作系统内核)操作系统学习笔记五(进程同步)操作系统学习笔记六(进程通信和线程)操作系统学习笔记七(进程调度)操作系统学习笔记八(死锁)操作系统学习笔记九(内存管理)操作系统学习笔记十(连续分配存储管理方式)操作系统学习笔记十一(基本分页存储管理方式)操作系统学习笔记十二(基于分页的虚拟存储系统)操作系统学习笔记十三(分段)操作系统学

2021-02-26 16:15:32 307 4

原创 关于声明式事务@Transactional的源码解析

上源码@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Transactional { @AliasFor("transactionManager") String value() default ""; @AliasFor("value") String transac

2021-02-26 16:09:51 454

原创 浅谈事务

1.什么是事务 访问并可能更新数据库中各种数据项的一个程序执行单元2.事务的ACID特性1)原子性(Atomicity):要么都执行,要么都不执行;执行过程中出错,会回滚到事务开始前的状态。2)一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监...

2021-02-26 14:12:43 209

原创 申请开通微信支付教程

1.申请微信支付首先我们需要先申请微信公众号,选择公众号类型,看是需要服务号还是订阅号,填写相关信息,然后开始认证,当然也可以在申请的时候选择认证验证,需要支付的话,只能申请服务号,订阅号没有办法申请支付。 2.公众号申请好并且认证完成之后,开始申请微信支付,注意申请支付要有营业执照和对公账户,个人公众号暂时还不支持认证,所以不能申请支付。 3.进入微信公众号平台,从左边的栏目里面选择微信支付,点击进去然后点击申请开通微信支付。 4.填写相关信息,联系人信息,然后用绑定联系人本...

2021-02-25 16:06:48 4946

原创 怎么删除列表中的数据

前言面试时经常遇到问你:怎么删除列表中的数据?没有遇到过for循环遍历list删除数据坑的。第一反应就是1.使用for循环遍历删除匹配数据 2.使用iterator迭代器删除数据一、使用for循环遍历删除匹配数据(标准的错误答案)上代码: List<String> a = new ArrayList<>(); a.add("1"); a.add("2"); System.out.println(.

2021-02-23 09:40:43 935 1

原创 Hashtable、HashMap和ConcurrentHashMap源码解析、对比

ConcurrentHashMap的简单介绍如图:ConcurrentHashMap是一种哈希表,支持检索的完全并发性和更新的高预期并发性。该类遵循与Hashtable相同的功能规范,并包含与Hashtable的每个方法相对应的方法版本。但是,即使所有操作都是线程安全的,检索操作也不需要锁定,并且不支持以阻止所有访问的方式锁定整个表。这个类在依赖于它的哈希表的程序中完全可以与哈希表互操作。简单来说:1.ConcurrentHashMap遵循与Hashtable相同的功能规范,并有与Hasht

2021-02-22 11:50:58 167

原创 HashMap和Hashtable源码解析、对比

1.hashMap

2021-02-22 10:24:33 157

原创 操作系统学习笔记十八(设备分配、I/O软件原理 、磁盘管理)

一、设备分配1.设备分配中的数据结构 支持设备分配的数据结构需要记录设备的状态(忙或空闲)、设备类型等基本信息。 1)设备控制表DCT(Device Control Table) 系统为每个设备建立一张设备控制表,多台设备控制表构成设备控制表集合。 每张设备控制表包含设备类型、设备标识符、设备状态(忙/闲)等信息。 2)控制器控制表COCT(Controller Control Table) 系统为每个控制器设置一张用于记录该控制器信息的控制器控制表,通常包含...

2021-02-21 21:41:27 1851

原创 操作系统学习笔记十七(缓冲管理)

1.缓冲区 缓冲区是用来保存两个设备之间或设备与应用程序之间传输数据的内存区域。 由于CPU的速度远远高于I/O设备,为了尽可能使CPU与设备并行工作,提高系统的性能,通常需要操作系统在设备管理软件中提供缓冲区管理功能。2.缓冲的引入 在数据到达速率与数据离去速率不同的地方,都可以引入缓冲区; 引入缓冲区的主要原因: (1)处理数据流的生产者与消费者之间的速度差异 (2)协调传输数据大小不一致的设备 引入缓冲的主要作用: 引入缓冲区除了可...

2021-02-21 20:52:59 1733

原创 操作系统学习笔记十六(I/O系统的组成和I/O控制方式)

1.概念 I/O设备即输入/输出设备,是用于计算机系统与人通信或与其他机器通信的所有设备,以及所有外存设备。 I/O系统不仅包括各种I/O设备,还包括与设备相连的设备控制器,有些系统还配备了专门用于输入/输出控制的专用计算机,即通道。此外,I/O系统要通过总线与CPU、内存相连2.I/O系统的结构 I/O系统的结构分为两大类:微机I/O系统、主机I/O系统。 1)微机I/O系统(总线型) CPU与内存之间可以直接进行信息交换但是不能与设备直接进行信息交换必...

2021-02-21 20:38:38 3663

原创 操作系统学习笔记十五(文件系统的实现)

1.实现文件 1.1 概念 文件系统通常是以2的n次方个连续的扇区为单位对文件进行磁盘空间的分配,把分配给文件的连续扇区构成的磁盘块称为簇。 1.2 文件存储的4种方式 1)连续分配:把每个文件作为一连串的数据块放在磁盘上 优点:1.实现简单,记录每个文件用到的簇仅需存储两个数字即可:第一块的磁盘地址和文件的块数 2. 读操作性能好,在单个操作中就能从磁盘上读取整个文件。 缺点:磁盘变得零碎,空闲的连续簇形成“空洞...

2021-02-21 17:33:37 464

原创 操作系统学习笔记十四(文件与目录)

1.什么是目录 文件系统通常提供目录或文件夹用于记录文件,很多系统中目录本身也是文件。 目录是文件系统中实现按名访问的重要数据结构 2.层次目录系统 2.1 目录文件有两种常见的结构:属性放在目录项中和放在i结点中 2.2 单级目录(根目录)和两级目录、以及树形目录 2.3 路径名:采用树形目录时,需要有某种方法指明文件 绝对路径名:从根目录到文件 相对路径名:从当前工作目录到文件 对于树形目录结构的文件系...

2021-02-21 17:07:01 1592 1

原创 操作系统学习笔记十三(分段)

导图1.分段机制的引入 在分段存储管理的系统中,程序员使用二维的逻辑地址,一个数用来表示段, 另一个数用来表示段内偏移。 相对于分页机制,引入分段机制的主要目的是易于实现信息共享。 引入分段机制的优点:方便编程、分段共享、分段保护、动态链接,以及动态空间的增长。 2. 分段的概念 进程的地址空间被划分成若干个段。 每个段定义了一组逻辑信息,每个段的大小由相应的逻辑信息组的长度确定,段的大小不一样,每个段的逻辑地址从0开始,采用一段连续的地址空间。 系统...

2021-02-21 16:45:27 2604 1

原创 操作系统学习笔记十二(基于分页的虚拟存储系统)

导图1. 虚拟存储器1.1 是什么 虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。 1.2 实质 1)就是说,先将进程的一部分装入内存,其余的部分什么时候需要,什么时候请求系统装入,即请求调入。 2)如果请求调入时,没有足够的内存,则由操作系统选择一部分内存中的进程内容移到外存,以腾出空间把当前需要装入的内存调入,即置换。1.3 优点 1)提高内存利用率 2)提高多道程序度:在进行进程运行的时候,并不是一口气...

2021-02-21 16:04:09 1943

原创 操作系统学习笔记十一(基本分页存储管理方式)

1.基本概念 页:将一个进程的逻辑地址空间分成若干个大小相等的片 页框:将物理内存空间分成与页大小相同的若干个存储块 分页存储:将进程中的若干页分别装入多个可以不相邻的页框中 页内碎片:进程最后一页一般装不满一个页框,形成页内碎片 页表:实现从页号到页框号的映射 ...

2021-02-21 14:35:40 2301

原创 操作系统学习笔记十(连续分配存储管理方式)

导图:1.连续分配存储管理方式分类 1) 单一连续分配: 任何时刻主存储器最多只有一个作业,只适用于单用户单任务的操作系统。 2) 固定分区分配 3) 动态分区分配 ----> 4) 空闲分区链 2.动态分区分配算法 例题:在这几种算法中都会产生不同大小的内存碎片 1) 首次适应算法:空闲分区链以地址递增的顺序链接从链首开始查...

2021-02-20 11:08:41 1550

原创 操作系统学习笔记九(内存管理)

1. 内存管理的目标 1) 实现内存分配、内存回收等基本内存管理的功能 2) 提高内存空间的利用率 3) 提高内存的访问速度2. 存储器的层次结构 每一层之间可以进行数据传输,但是不能跳级。 价格昂贵、存取速度最快,但容量较小的存储器是寄存器。 可用来长期存储大量信息的存储器是辅助存储器。 断电停机后,存储信息随之消失的存储器是主存储器。 2.1 局部性原理 原理:在一段较短时间内,程序的执行仅限于某...

2021-02-20 10:42:45 223

原创 操作系统学习笔记八(死锁)

导图 1.死锁的定义 由于多个进程竞争共享资源而引起的进程不能向前推进的僵死状态称为死锁。2.产生死锁的原因和必要条件2.1 产生的原因 竞争共享资源且分配资源的顺序不当 2.2 必要条件 1)互斥条件 2)请求和保持条件 3)不剥夺条件 4)环路等待条件 3.处理死锁的基本方法3.1 死锁的预防 通过破坏死锁的产生条件来保证不发生死锁----保证至少其中一个产生死锁的条件不成立: 1) 无法破...

2021-02-19 15:11:32 206 1

原创 操作系统学习笔记七(进程调度)

1.进程调度的功能与时机 1.1 进程调度的功能 1.1.1 由谁完成? 进程调度的功能由操作系统的进程调度程序完成 1.1.2 具体做啥? 按照某种策略和算法从就绪态进程中为当前空闲的CPU选择在其上运行的新进程 1.2 进程调度的时机 1.2.1 啥时候需要进程调度? A、进程正常结束 B、进程阻塞 C、还有更高优先级进程到来 D、时间片用完 E、进程异常结束2.选择调度方式和算法的若干准则...

2021-02-19 14:21:44 1182 1

原创 操作系统学习笔记六(进程通信和线程)

导图一、进程通信1. 通信的概念 两个进程之间彼此交换信息就叫进程通信。2. 进程通信机制 共享存储器系统 --> 相互通信的进程共享某些数据结构或共享存储区 消息传递系统 --> 进程间通过操作系统提供的一组通信程序传递消息 管道通信 --> 进程间通过管道(链接读写进程的特殊文件)进行信息通信 消息缓冲队列 --> 利用消息缓冲区、发送原语和接收原语实现信息通信 高级通信机制:共享存储器系统 、消息传递系统 、管道通信...

2021-02-18 16:43:06 214

原创 操作系统学习笔记五(进程同步)

思维导图1.概念 进程同步实际上是进程并发执行,即共享系统的资源。 操作系统对共享过程进行控制和管理。 同步机制(信号量机制):保证在多任务共享系统资源的情况下,程序执行能得到正确的结果。 2.多道程序环境下进程之间的关系 3.临界区 必须以互斥方式访问的共享资源称为临界资源;进程中访问临界资源的那段代码称为临界区4.同步机制应遵守的规则5.信号量机制 1)整型信号量机制 整型信号量是表示共享资源状态且...

2021-02-18 15:23:55 255

原创 操作系统学习笔记四(操作系统内核)

1. 思维导图 2. 基本概念 操作系统内核是计算机硬件的第一次扩充,内核执行操作系统与硬件关系密切,执行频率高的模块,常驻内存。3. 功能 4. 中断 4.1 什么是中断 中断是改变处理器执行指令顺序的一种事件; 出现中断时,计算机停止现在程序的运行,转向对这些中断事件的处理,处理结束后再返回到现行程序的间断处 4.2 为什么需要中断 引入中断机制后,CPU可以与其他设备并行工作,能有效提高CPU的利用...

2021-02-06 16:47:36 686

原创 操作系统学习笔记三(进程的创建)

1. 进程的四种状态 创建、阻塞、唤醒、终止2. 创建 2.1 什么情况下需要创建新进程? 用户登录、作业调度、提供服务、应用请求 2.2 如何创建新进程?创建新进程的步骤? 1)申请空白的PCB 2)为新进程分配资源 3)初始化进程控制块 4)将新进程插入到就绪队列 2.3 新进程被创建时的两种执行可能 1)父进程与子进程并发执行 2)父进程等待,直到某个或全部子进程执行...

2021-02-06 15:59:20 482 1

JVM调优总结.pdf

这回添加的东西主要集中在基础的一些问题上,还有一些这两年思考的问题。这些问题可能平时我们不会刻 意去想,但是真正看清楚了,却发现还是大有裨益的:)希望对大家都有帮助~

2020-07-24

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

TA关注的人

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