自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java 将List型的字符串转换为一个List对象

首先通过Maven导入包:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>或者不通过Maven,自己去下载,网址:https://github.com/alibaba/fast.

2021-08-12 09:59:39 8440

原创 Host 、Origin、 Referer的区别,Origin是跨域特有的属性

Host表示当前请求要被发送的目的地host,仅包括域名和端口号。在任何类型请求中,request都会包含此header信息。Origin表示这个请求原始是在哪里发起的,包括当前请求的协议和域名,特别注意:这个参数一般只存在于CORS跨域请求(两个端口号不同或域名不同或使用的协议的请求称为跨域请求)中,非跨域请求没有这个header!Referer表示当前请求想要访问的资源所在的完整地址:协议+域名+查询参数(注意不包含锚点信息),所有类型的请求都包含此header。因为原始的URI中

2021-07-29 10:29:36 2981

原创 SpringAOP中@within和@annotation的区别

@within和@annotation的区别:@within 对象级别@annotation 方法级别@Around("@within(org.springframework.web.bind.annotation.RestController") 这个用于拦截标注在类上面的@RestController注解@Around("@annotation(org.springframework.web.bind.annotation.RestController")

2021-07-28 18:33:48 5501

原创 @SpringBootApplication(exclude =a.class)移除该类的autoconfig 自动加载

@SpringBootApplication(exclude =a.class)移除该类的autoconfig 自动加载例如:@SpringBootApplication(exclude = PageHelperAutoConfiguration.class)上面就是移除了PageHelperAutoConfiguration类的自动配置移除的原因是:自己自定义了配置类,让Spring加载我们自定义的配置类...

2021-07-28 10:54:45 1063

原创 分布式锁的基本知识

分布式锁的基本知识1. 分布式锁的使用场景​ 为了使基于分布式部署的项目在某一时刻只有一台服务器执行某些会出现并发问题的代码(临界区的代码)。传统项目都是通过锁,比如Synchronized等来保证线程安全,这种方案只是在一个进程中有序。但是分布式项目往往是多进程的。2. 分布式锁需要满足的要求互斥性。在任意时刻,只可以被一个服务器持有死锁避免。如果当前持有锁的服务器宕机了,那么它也必须归还该锁的持有权,让其他服务器可以竞争获取加锁和解锁必须是同一服务器。不能服务器A加锁了,由B服务器(没有

2021-07-27 15:42:30 94

原创 RocketMQ 重复消费 顺序消费 分布式事务 消息堆积 幂等性

与RocketMQ相关的几个问题注:消费者组(Consumer Group)的某个消费者不能同时消费一个队列的多个消息;消费者组(Consumer Group)的某个消费者可以消费一个队列的单个消息或者消费者组(Consumer Group)的不同消费者消费多个队列的多个消息;总的来说,消费者和消息队列是一对一的关系。一、重复消费问题​ 正常情况:当消息队列中的消息被消耗过后,消费者会返回一个成功消费的ACK通知消息队列自己已经成功消费了,这时候消息队列将消费位移(offset)往后挪动一位。.

2021-07-27 14:02:28 587

原创 泛型擦除,无视泛型限制,为什么不能用基本类型作为泛型

一、泛型擦除概念​ 泛型擦除的意思就是说:我们平时在代码中显示声明的泛型在编译成功后其实都丢失了泛型的约束,也就是泛型擦除。比如:声明了一个ArrayList<String> list = new ArrayList();在JVM层面只会看到一个Arraylist list = new ArrayList(); 丢失了泛型String二、泛型擦除的体现 public static void main(String[] args) { ArrayList<String

2021-07-26 17:37:10 501

转载 AOP的基本概念与使用

转载于:https://my.oschina.net/u/3434392/blog/1625493AOP的基本概念Advice(通知、切面): 某个连接点所采用的处理逻辑,也就是向连接点注入的代码, AOP在特定的切入点上执行的增强处理。@Before: 标识一个前置增强方法,相当于BeforeAdvice的功能.@After: final增强,不管是抛出异常或者正常退出都会执行.@AfterReturning: 后置增强,似于AfterReturningAdvice, 方法正常退出时执行.

2021-07-14 17:20:41 225

原创 volatile与CAS的比较

volatile与synchronized的比较Volatile与CAS的比较 参考:https://www.jianshu.com/p/cd4744d799e41)volatile关键字是线程同步的轻量级实现,所以其性能比synchronized好。2)volatile只能修饰变量,synchronized可以修饰方法,代码块3)随着JDK版本升级,synchronized的执行效率有所增加4)多线程访问volatile变量不会发生阻塞,而synchronized可能发生堵塞5)vol...

2021-07-11 12:07:30 341

原创 锁相关基础知识

锁之初解读锁将多个线程对共享数据的并发访问转化为串行访问,锁(Lock)就是利用这种思路来保证线程安全锁的持有线程在获得锁之后和释放锁之前这段时间执行的代码成为临界区(Critical Section)锁具有排他性(Exclusive),即一个锁一次只能被一个线程所持有.这种锁被称为排它锁或者互斥锁(Mutex).JVM把锁分为内部锁与显示锁两种.内部锁通过synchronized关键字实现;显示锁是通过java.concurretn.locks.Lock接口的实现类实现的。1.锁的作用锁可以实

2021-07-10 22:59:45 281

原创 多线程相关知识之内存屏障

来源:https://www.bilibili.com/video/BV1Rv411y7MU?from=search&seid=9769842728262062596内存屏障硬件层的内存屏障分为两种:Load Barrier 和 Store Barrier即读屏障和写屏障。内存屏障有两个作用:1.阻止屏障两侧的指令重排序;2.强制把写缓冲区/高速缓存中的脏数据等写回主内存,让缓存中相应的数据失效。在JSR规范中定义了4种内存屏障:LoadLoad屏障:(指令Load1; Loa

2021-07-10 22:42:02 244

原创 MESI缓存一致性协议

来源:https://www.bilibili.com/video/BV1Rv411y7MU?from=search&seid=97698427282620625961. MESI缓存一致性协议现代处理器的缓存一般分为三级,由每一个核心独享的L1、L2 Cache,以及所有的核心共享L3 Cache组成,具体每个cache,实际上是有很多缓存行组成:缓存一致性协议给缓存行(通常为64字节)定义了个状态:独占(exclusive)、共享(share)、修改 (modified)、失效(inv

2021-07-10 22:39:26 179

原创 Java内存模型(JMM)

来源:https://www.bilibili.com/video/BV1Rv411y7MU?from=search&seid=97698427282620625961.Java内存模型(JMM)下面是对上面JMM的简单介绍:可以将上复杂的JMM抽象为:Java内存模型的简单总结如下:

2021-07-10 22:10:21 77

原创 线程安全问题之原子性、可见性、有序性

来源:https://www.bilibili.com/video/BV1Rv411y7MU?from=search&seid=97698427282620625960.三大特性线程安全问题表现为三个方面:原子性、可见性、有序性1. 原子性原子(Atomic)表示不可分割. 原子操作的不可分割有两层含义:1)访问(读、写)某个共享变量的操作从其他线程来看,该操作要么已经执行完毕,要么尚未发生,即其他线程得不到当前操作的中间结果(像CAS这种锁,就可以让多个线程同时操作资源,只是在提交的时候

2021-07-10 22:03:24 626

原创 Nginx下载安装,开启,检查是否启动成功

Typora官方下载地址:https://www.typora.io/一、选择对应的操作系统(我的电脑是Window,因此我选择Window版本)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M61Q3t8T-1625391587774)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210704172548551.png)]二、进行安装三、选择为所有用户进行安装[外

2021-07-05 14:44:29 9319

原创 jdk环境变量配置 我的电脑 属性 没有高级系统设置 没有环境变量 不能点击高级系统设置

刚到公司实习,发现不能像平常设置环境变量的流程一样进行jdk环境配置,平常的方式为 【计算机→属性→高级系统设置→高级→环境变量】。于是换了下面这种方式,亲测有效。1、点击搜索,输入控制面板,点击确认二、点击用户账户三、再次点击用户账户四、选择更改我的环境变量五、大功告成...

2021-07-05 11:26:41 924

原创 Typora下载安装详细步骤

Typora官方下载地址:https://www.typora.io/一、选择对应的操作系统(我的电脑是Window,因此我选择Window版本)二、进行安装三、选择为所有用户进行安装四、选择你想要安装的路径(这里我选择了E盘)五、选择是否在桌面创建快捷启动方式(我这里勾选了)六、点击install进行安装七、点击finish完成安装总结:操作很简单,直接按照提示点击next就行了注意:如果新建的文件格式为txt,只需要右键点击该文件,点击打开方式,再点击选择其它应用,再选择T

2021-07-04 17:48:17 36762 8

原创 组合索引的使用规则到底有哪些?有什么注意点?什么情况下索引会生效、失效?

索引的使用规则到底有哪些?有什么注意点?什么情况下索引会生效、失效?前言: 5月初面试了字节跳动抖音电商实习岗,一上来,面试官就问了组合索引的问题,并且给出了很多题用于判断哪些情况下组合索引会生效,当时答得很差,只记之前在网上看了下什么范围查找会失效,面试下来才知道错回答了很多,于此记录本篇博客。本篇博客主要针对B+树的组合索引,同时只是给出结论和简单解释,至于为什么生效,为什么失效,之后有时间了会给出图文解释。一、索引生效的查询规则首先对索引的生效规则给出结论:包括全值查询匹配最左前缀匹.

2021-06-07 11:18:27 5327

原创 在操作系统中解决“程序大小超过物理内存总和“的几种技术(覆盖技术、交换技术、虚拟存储技术)

来源:https://www.bilibili.com/video/BV1YE411D7nH在操作系统中解决"程序大小超过物理内存总和"的几种技术一、覆盖技术基本思想:将一个程序分为多段,对于常用的段应当常驻内存,不常用的段在需要的时候进入内存采用这种技术的时候,内存中被划分为:一个固定区 + N个覆盖区。常驻内存的段进入固定区(进入之后只有在程序结束时调出);不常用的段进入覆盖区(需要的时候进入,不需要的时候调出)。**注意:**覆盖技术应用于一个进程中二、交换技术基本思想:在内存空间不足的

2021-05-27 16:25:41 1952 1

原创 操作系统之页面分配策略(驻留集、工作集、置换策略、抖动)

来源:https://www.bilibili.com/video/BV1YE411D7nH驻留集概念:请求分页存储管理中给进程分配的内存块的集合(由于采用了虚拟存储技术,驻留集的大小一般小于进程的大小)。若驻留集太小,会导致频繁缺页;太大,则会导致多道程序并发度降低,资源利用率下降。要知道固定分配局部置换、可变分配全部置换、可变分配局部置换的意思,首先需要知道以下几个概念:1、 固定分配:操作系统为每个进程分配一组固定数目大小的物理块。在程序运行过程中,不允许改变!即驻留集大小固定不变。

2021-05-27 16:21:45 7443

原创 操作系统之页面置换算法(FIFO,最优置换,LRU,时钟置换算法,改进的时钟置换算法,Belady(贝拉迪)异常)

来源:https://www.bilibili.com/video/BV1YE411D7nH背景:在内存不足的情况下,操作系统会将内存中暂时不需要使用的信息换出到外存,页面置换算法就是用于选择到底将哪个页面换出到外存的算法。注意:页面置换算法的好坏是可以通过缺页率来体现的,一个好的页面置换算法往往拥有较小的缺页率。最佳置换算法(Optimal,OPT)思想:每次选择淘汰的页面将是以后永远不再使用或在最长时间内不再使用的页面,以保证最低的缺页率。例子:假如系统为操作系统分配了三个内存块,

2021-05-27 16:19:23 3853 4

原创 操作系统的内存管理机制(连续分配管理、页式、段式、段页式、快表、二级页表)

来源:https://www.bilibili.com/video/BV1YE411D7nH操作系统的内存管理机制内存被分为系统区和用户区,系统区存放操作系统相关数据;用户区存放用户进程相关数据。操作系统的内存管理机制分为两大类:连续分配管理、非连续分配管理一、连续分配管理1.单一分配管理概念:内存中只有一道程序,该道程序独占整个用户区(一次只有一个进程可以执行)特点:无外部碎片,可以采用覆盖技术,有内部碎片,内存利用率极低。2.固定分配管理概念:固定分区分配是最简单的一种多道程序存

2021-05-27 16:11:08 4406 5

原创 Java创建线程 为什么Callable需要FutureTask包装一下?

Java创建线程 为什么Callable需要FutureTask包装一下?1、首先通过Callable接口创建线程的Demo如下://1、定义一个类MyCallable实现Callable接口重写call方法,泛型为返回值类型class MyCallable implements Callable<Integer> { @Override public Integer call() throws Exception { return 1; }

2021-05-27 15:46:58 648

原创 进程的调度算法

一、进程的调度算法1.FCFS(First Come First Service,先来先服务算法)简介:只有当前运行的进程主动放弃CPU(正常/异常完成,或者阻塞),才可以进行调度,调度时计算所有的就绪进程的响应比,为响应比高的分配CPU。按照等待时间从小到大(谁先来,谁就先执行)送入CPU中执行。是一个非抢占式调度算法。特点:公平对长作业有利,对短作业不友好(长作业执行的时候不会被打断,会直到执行结束;短作业本身只会执行较短的时间,但是FCFS的方式可能让短作业等待前面的长作业执行结束之

2021-05-23 21:39:57 1110

原创 Java 常用线程池

Java 常用线程池1.Executor、ExecutorService、ScheduledExecutorService、ScheduledThreadPoolExecutor、ThreadPoolExecutor、Executors的关系关系说明:​ 1. Executor是顶级接口,但是它只是执行线程的工具而不是线程池,定义了一个无返回值的execute方法;​ 2. ExecutorService接口继承了Executor,是真正的线程池接口​ 3. Sc

2021-05-21 10:19:35 107

空空如也

空空如也

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

TA关注的人

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