自定义博客皮肤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)
  • 收藏
  • 关注

原创 Jenkins配置QQ邮箱邮件发送

在这个界面可以生成授权码以及查看配置发送邮件的方法。首先需要开通qq邮箱发送服务。进入系统管理-->系统配置。找到发送邮件的扩展服务。配置结束后进行保存测试。

2023-04-14 02:41:26 253

原创 DelegatingFilterProxy注入servletContext容器

DelegatingFilterProxy注入servletContext容器

2022-11-01 19:25:52 260

原创 LongAccumulator源码分析

我们查看下这里的accumulate方法。

2022-09-12 19:43:15 183

原创 JUC-线程池

一、为什么使用自定义线程池?首先,在实际生产中肯定是要使用线程池的,而且要自定义线程池,为什么呢?这点参考阿里巴巴开发手册二、ThreadPoolExecutor七大参数我们先来看一下ThreadPoolExecutor的七大参数int corePoolSize:核心线程数大小int maximumPoolSize:最大线程数long keepAliveTime:空闲线程存活时间TimeUnit unit:keepAliveTime的单位BlockingQueu..

2022-05-13 02:17:58 244

原创 synchronized和Lock有什么区别?用新的lock有什么好处?

1.原始构成 synchronized是关键字属于JVM层面 monitiorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有在同步代码块或方法中才能调wait/notify等方法) monitorexit Lock是具体类(java.util.concurrent.locks.Lock)是api层面的锁2.使用方法 synchronized不需要用户去手动释放所,当synchronized代码执行.

2022-05-12 20:57:49 128

原创 JUC-CyclicBarrier的使用

CyclicBarrier说白了就是如果等待线程数达到指定的数量后才执行指定的程序。代码:public class CyclicBarrierDemo { public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(7, () -> { System.out.println("********召唤神龙");

2022-05-12 16:05:22 579

原创 JUC-CountDownLatch的使用

话不多说上代码:public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(6); for (int i = 1; i <= 6; i++) { new Thread(()->{

2022-05-12 15:42:31 154

原创 java当中的各种锁(公平锁、非公平锁、可重入锁、自旋锁、读写锁)

一、公平锁和非公平锁公平锁:就是很公平,在并发情况下,每个线程在获取锁时会查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则就会加入到等待队列中,以后会按照FIFO的规则从队列中取到自己。(按先后顺序执行)非公平锁:非公平锁比较粗鲁,上来就直接尝试占有锁,如果尝试失败,就再采取类似公平锁那种方式。例如:new ReentrantLock();默认是非公平锁,如果在参数列表加入true则为公平锁,加入false则为非公平锁。特点:非公平锁执行效率快,吞吐

2022-05-12 14:19:45 1830

原创 ArrayList线程不安全问题解决

我们直接上代码来演示线程不安全问题: public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i < 30; i++) { new Thread(()->{ list.add(UUID.randomUUID().toString().s

2022-05-12 00:08:56 177

原创 seata踩坑记录

1.myabtis中的xml文件中名不要加飘号``否则会报Caused by: io.seata.common.exception.ShouldNeverHappenException: Could not found any index in the table: `wms_ware_sku`如:2.properties配置文件中组名要与file.conf中一致否则会报i.s.c.r.netty.NettyClientChannelManager : no available se

2022-05-08 15:03:11 466 1

原创 SpringBoot中事务@Transational的一个坑

如果一个方法调用了同一个类中的其他方法那么其他方法在@Transational注解中的propagation属性中无论设置什么样的值都不会生效代码举例: @Transactional(propagation = Propagation.REQUIRED) public String a(){ b(); c(); return "aaa"; } @Transactional(propagation = Propagati

2022-05-08 00:56:15 463

原创 volatile指令禁止指令重排和可见性

我们在加了volatile指令修饰后,在汇编代码当中被volatile修饰的变量在被赋值之后会多了一个“lock addl $0x0,(%esp)”操作,这个操作相当于一个内存屏障(指令重排序时不能把后面的指令重排序到内存屏障之前的位置),这里就保证了禁止指令重排。“lock addl $0x0,(%esp)”操作的含义是将ESP寄存器的值加0,那么有什么意义呢?这里我们就要说一下lock操作了,如果对一个变量执行lock操作,那将会清空工作内存中此变量的值,在执行引擎使...

2022-05-08 00:35:59 536

原创 volatile不保证原子性

这里我们先来分析一段代码:class MyData{ volatile int number = 0; //请注意,此时number前面时加了volatile关键字修饰的,volatile不保证原子性 public void addPlusPlus(){ number ++; } }public class VolatileDemo { public static void main(String[] args)

2022-05-05 12:07:14 154

原创 CAS底层原理

我们以这段代码为例进行讲解:class MyData{ AtomicInteger atomicInteger = new AtomicInteger(); public void addMyAtomic(){ atomicInteger.getAndIncrement(); }}public class VolatileDemo { public static void main(String[] args) { My

2022-05-05 12:06:56 260

原创 volatile保证可见性

首先,每个线程都有自己的工作内存(每个线程私有),而执行任务时,要先从主内存(公共)读取要操作的变量,拷贝到自己的工作内存当中,然后对变量进行操作,操作完成后要将变量重新写入主内存当中。我们可以看到每个线程操作变量的执行流程大概是上图所示的样子那么我们来进行代码实践:class MyData{ int number = 0; public void addT060(){ this.number = 60; }}/** * 1.验证v

2022-05-04 17:05:55 214

原创 购物车实现过程

购物车:1.购物车跟用户的关系?a)一个用户必须对应一个购物车【一个用户不管买多少商品,都会存在属于自己的购物车中。】b)单点登录一定在购物车之前。2.跟购物车有关的操作有哪些?a)添加购物车。i.用户未登录状态.1. 添加到什么地方?未登录将数据保存到什么地方?......

2022-05-04 14:50:58 696

原创 Elasticsearch 和 solr 的区别

背景:它们都是基于Liceme搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】开发语言:Java语言诞生时间Solr:2004年诞生Es:2010年诞生Es更新【功能更强大】区别:1.当时是建立索引的时候,solr会产生io阻塞,而es不会,es查询行呢个要高于solr。2.在不断动态添加数据的时候,solr的检索效率会变得地下,而es则没有什么变化。3.Solr利用zookeeper进行分布式管理

2022-05-04 14:34:42 1027

原创 Redis在项目中的使用场景

数据类型 使用场景 String 比如说,我想知道什么时候封锁一个IP地址,Incrby命令 Hash 存储用户信息 List 实现最新消息的排行,还可以利用List的pyush命令,将任务存在list集合中,同时使用另一个命令,将任务从集合中取出[pop] Redis-list数据类型来模拟消息队列。【电商中的秒杀就可以采用这种方式来完成一个秒杀活动】 Set 特殊之处:可以自动排重。比如说微博中将每个人的好友存在集合(

2022-05-04 11:11:46 507

原创 MySQL什么时候创建索引?

索引:MySQL官方对索引的定义为:索引(index)是帮助MySQL高校获取数据的数据结构优势:1.类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本2.通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗劣势:1.虽然索引大大提高了查询速度,同时回降低更新表的速度,如对表进行INSERT、UPDATE、和DELETE。都会因为更新表时,MySQL不仅要保存数据,还要保存以下索引文件每次添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息。2

2022-05-04 10:50:41 1096

原创 git分支相关命令

创建分支git branch <分支名>git branch -v 查看分支切换分支git checkout <分支名>一步完成:git checkout -b <分支名>(创建并切换分支)合并分支先切换到主干分支 git checkout mastergit merge <分支名>删除分支先切换到主干 git checkout mastergit branch -D <分支名>...

2022-05-04 01:53:32 89

原创 Mybatis中当实体类中的属性名和表中的字段名不一样,怎么办?

解决方法:1.写sql语句时起别名2.在Myatis的全局配置文件中开启驼峰命名规则<!-- 开启自动驼峰命名规则(camel case)映射 --><setting name="mapUnderscoreToCamelCase" value="true"/>如果使用的是springboot则可以在配置文件中添加以下配置:mybatis-plus.configuration.map-underscore-to-camel-case=true3.在Mapp

2022-05-04 01:37:47 204

原创 数据库事务并发问题

1.并发问题假设现在又两个事务:Transation01和Transaction02并发执行。1)脏读①Transation01将某条记录的age值从20修改为30.②Transation02读取了Transation01更新后的值:30③Transation01回滚,age值恢复到了20.④Transation02读取到的30就是一个无效的值。2)不可重复读①Transation01读取到了age为20.②Transation02将age值修改为30.③Transa

2022-05-04 01:07:58 182

原创 Spring支持的常用数据库传播属性

事务的传播行为:一个方法运行在一个开启了事务的方法中,当前方法时使用原来的事务还是开启一个新的事务。传播属性 描述 REQUIRED 如果有事务在运行,当前的方法就在这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行。 REQUIRES_NEW 当前的方法必须启动新事物,并在它自己的事务内运行,如果有事务正在运行,应该将它挂起。 SUPPORTS 如果有事务在运行,当前的方法就在这个事务内运行,否则它可以不运行在事务中。 NOT_SUPPORTED

2022-05-04 00:40:23 826

原创 Spring Bean的作用域之间有什么区别?

类别 说明 singleton 在SpringIOC容器中仅存在一个Bean实例,Bean以单例的方式存在 prototype 每次调用getBean()时都会返回一个新的实例 request 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplication环境(web环境) session 同一个HTTPSession共享一个Bean,不同的HTTP Sess...

2022-05-04 00:10:24 466

原创 走台阶问题

问题:每次上台阶走一步或两步,问有多少种走法?解决思路(一):如果有一层台阶则有一种走法,有两层台阶有两种走法,而三层台阶依赖前面的走法,即:代码实现(方法一 递归):@Testpublic void test(){ System.out.println(f(4));}public int f(int n){ if (n<1){ throw new IllegalArgumentException(n + "不能小于1"); .

2022-05-03 23:43:11 336

原创 Redis的数据类型

键(key)常用命令:keys * 查看当前库所有key(匹配:keys *1)exists key 判断某个key是否存在type key 查看你的key是什么类型del key 删除指定的key数据unlink key 根据value选择非阻塞删除:仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。expire key 10 10秒钟:为给定的key设置过期时间ttl key查看还有多少秒过期,-1表示用不过期,-2表示已过期select 命

2022-01-02 13:57:58 69

原创 spring循环依赖问题

spring循环依赖问题: 创建对象a前先将beanName放至singletonsCurrentlyInCreation,再进行对象创建之后放入三级缓存(singletonFactories)中进行记录,再去解决属性赋值中的依赖问题,在后置处理器AutowiredAnnotationBeanPostProcessor中进行依赖注入,在此会调用getBean()方法获取对象b创造对象与对象a相同,创建对象前也会将对象b的beanName放至singletonsCurrentlyInCrea.

2021-11-20 01:07:43 471

原创 css常用样式

颜色: color: red;边框: border: 1px red solid;宽度: width: 300px;高度: height: 300px;背景颜色: background-color: yellow;字体大小: font-size: 50px;设置居中: margin-left: auto; margin-right: auto;文本居中: text-align: center;/**/超链接去下划线: text-decoration: none;设置边...

2021-04-25 21:17:51 39

原创 JavaScript造对象的两种方式

对象的定义:一、Obejct方式定义对象var 变量名=new Object(); //对象实例(空对象)变量名.属性名=值; //定义一个属性变量名.函数名=function(){}//定义一个函数值对象的访问:变量名.属性/函数名();alert(obj.age);二、大括号形式的自定义对象对象的定义: var 变量名={ //空对象 属性名:值, //定义一个属性 属性名:值,...

2021-04-25 01:26:27 63

哈工大计算机组成原理课件(刘宏伟ppt)

哈工大计算机组成原理课件(刘宏伟ppt)

2023-10-23

空空如也

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

TA关注的人

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