自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 问答 (1)
  • 收藏
  • 关注

原创 You can‘t specify target table

问题描述:增加一个文章置顶功能,使用一个字段(初始为零)来表示文章的优先级,每次置顶让对应文章的该字段+1于是有了这样一段sql <!--文章置顶--> <update id="updateBlogTop"> update blog set top = (select max(top) from blog where author_id = #{authorId}) + 1 where id = #{artic

2021-02-28 14:17:58 886

转载 java泛型中? super T和? extends T的区别

是什么?<? extends T>:是指 上界通配符(Upper Bounds Wildcards) <? super T>表示包括T在内的任何T的**父类**<? super T>:是指 下界通配符(Lower Bounds Wildcards)<? extends T>表示包括T在内的任何T的子类...

2021-02-28 11:22:50 152

原创 mybatisplus TableId无效

初次使用mybatisplus,刚开始正常,后来发现插入时总是duplicate key,百事不得其解,后发现问题如下 @TableId(type = IdType.ID_WORKER) private Long id; # 正确 private long id; # 错误 private int id; # 错误 记录一次脑瘫操作。。。。...

2021-02-24 12:05:07 1881 1

原创 UnsupportedOperationException

UnsupportedOperationException问题描述将Arrays.asList()的返回结果进行remove时弹出一个UnsupportedOperationException,二脸懵逼。。查找网上别的大神分析明白了原因,做个笔记! @Test public void test(){ List<String> list = Arrays.asList(",dddd,".split(",")); System.out.prin

2021-02-05 17:17:54 246

原创 js中setTimeout的各种用法

**js中setTimeout的各种用法**各种踩坑,特此记录 setTimeout 不带参数 setTimeout(fun,time) setTimeout 带一个数值型参数 setTimeout(fun,numberParam,time) setTimeout 带一个字符串类型的参数 setTimeout("fun('stringParam')",time)...

2021-01-19 20:24:14 273

原创 Linux(Centos) 安装jdk1.8

1、下载jdkhttp://www.oracle.com/technetwork/java/javase/downloads/index.html2、 解压cp jdk-8u261-linux-x64.tar.gz /usr/java1.8tar -zxvf java1.83、配置环境变量# java environmentexport JAVA_HOME=/usr/jdk1.8.0_261export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${.

2020-12-15 20:53:40 67 1

原创 Windows开机自动关闭系统代理

Windows开机自动关闭系统代理

2024-03-21 21:37:29 253

原创 mysql修改字段的长度锁表问题

MySQL(这里指5.6及其后续版本=)修改字段的长度锁表会锁表吗?答案是可能会但不一定会。这是使用异常包含两万数据数据的表,字段初始长度为50(使用字符集为utf8)

2024-02-28 22:42:15 566

原创 fastjson 导致的OOM

fastjson 导致的OOM。

2024-02-04 22:14:55 463

原创 页面嵌入iframe Cookie丢失问题解决

自身页面以iframe的形式嵌入三方页面中,双方域名不一致导致自身页面的cookie被某些浏览器拦截无法正常被保存到客户端。

2024-01-17 23:07:27 1036

原创 关于httpClient 使用的注意事项

关于httpClient 使用的注意事项

2024-01-11 22:23:55 445

原创 TLS加密远程连接Docker

TLS加密远程连接Docker官方文档操作流程1、创建证书保存目录2、创建CA证书私钥:过程中需要输入并确认密码3、以此秘钥创建CA证书,自己给自己签发证书,自己就是CA机构,也可以交给第三方机构去签发4、创建服务端私钥5、创建服务端证书签名请求文件(csr即certificate signing request,里面包含公钥与服务端信息)6、配置白名单7、将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证。

2023-03-28 21:23:43 453 1

原创 解决多版本jar包冲突问题

在和三方对接的过程中,我们可能会不断引入一些三方jar包,但这个时候就有可能出现一个项目需要依赖两个版本不同且功能不兼容的jar包,本文记录一种方法解决方法。我们知道jvm加载类是通过判断类的全限定名来判断当前类是否被加载,这个导致多版本jar包不兼容的原因,那么我们就从里下手。...

2022-08-01 23:54:41 3491 2

原创 ConsurrentHashMap InitTable 疑问与思考

第二个问题说到需要循环等待所有自然不可能提前return,那为什么不用sleep,因为我们并不知道另一个线程什么时候完成初始化,也就不知道sleep多少秒,多了、少了都不合适,所以干脆就让出cpu时间片,等下一次再看看,如果其他线程完成了初始化就返回,否则重复以上。ConsurrentHashMap作为单机下经常使用的一个线程安全Map值得我们学习一下,以下其初始化的过程的代码,以及学习过程中遇到的疑惑与自己的思考。通常意义下的加锁,都是去检查一个东西是否被“其他”持有,如果被持有则本次加锁尝试失败。...

2022-07-27 23:21:01 223

原创 十大排序之快速排序

1、因为我们选择的标兵是在左侧,所以我们要从右侧开始遍历那为什么因为我们选择的标兵是在左侧,就要从右边开始?进一步的分析,我们最终需要将标兵把i==j停下来的位置的值做交换,所以停下来的位置,一定要是比标兵更小的值,否则就不满足,标兵左边的值小于标兵的前提。假定如果我们从左开始,那么就有最终在比标兵大的地方停下来,导致最终发生交换的时候违背了前面说的原则。而从右边开始我们能够保证一定是遇到比标兵小的值或者回到标兵的位置才停下来。2、如果你希望从左边开始,那么标兵选择最右边即可。......

2022-07-23 23:22:40 163

原创 关于RSA加密与加签之一个小故事

RSA加密与加签首先强调加密与加签不同,加密是为了保证请求中的敏感数据不泄露,加签是为了保证请求不被伪造。举个栗子🌰故事背景女神小红和他的前男友小军分手了,另寻新欢找了小明做新男友。敏感数据泄露小明写了一封情书给小红,为了表达自己的忠诚,小明直接在信中写出了微信账号、密码,让小红可以随便查看,可信中途被小军拦截了,小军打开信看到了微信账号密码于是把小明号给盗了。加密小明又写了一封情书给小红,为了情书里面的内容不被篡改,所以让小红生成了一对密钥,并且把公钥给了小明,小明使用公钥对情书加了密

2022-05-13 23:34:09 257

原创 四种常见的限流算法

常见的限流算法计数器大致原理就好像他的名字一样,我们去维护一个计数器,每有一个请求过来我们就加1,一但达到我们设置的上限我们就拒绝掉。优点实现简单,单机使用AtomicInteger ,分布式场景使用redis的incr都能简单的实现,也十分容易理解。缺点1、存在“毛刺现象”,如我们一分钟内限流100次,在持续性大流量下,很有可能出现这种情况,第一秒钟解收了100个请求,后面59秒都是拒绝状态,61秒又接收了100个请求,后面59持续拒绝。。。也就是他无法均匀的限制流量,容易造成应用服务器处理

2022-05-10 23:37:04 551

原创 限流算法-漏桶算法和令牌桶的区别

限流算法-漏桶算法和令牌桶的区别这里通过两个例子来说明1、漏桶高速路上有一个收费的公共厕所,突然有一堆人都想进行上厕所,能直接进去吗?不行啊,收费的,得先交钱啊,于是乎一堆人在厕所门口排起了队,一个个给老板扫码付了钱才能进去上厕所。2、令牌桶老板说,我给你们发一张纸片,拿着纸片直接就能进去,能自动扣费并作废,老板只要看有一个空着的地就写一个纸片,没地方了就不写了,存着等人过来直接就能发出去。前者与后者关键的区别就在于前者无论是无流量高低,吞吐的速率都始终相同,后者则可以在从低流量突发遇到高流量时

2022-05-07 13:03:02 183

原创 Vue prop 传递对象到子组件刷新页面数据消失

Vue prop 传递对象到子组件刷新页面数据消失父组件向子组件传递了一个对象,当页面我们直接刷新页面时发现子组件接收到的这个对象总的属性不见了。父组件<ArticlePublishForm :content="content" :article-id="editorArticleId" // 这个就是被传递的对象 :article-message="articleMessage" :title="title"

2022-04-29 20:16:21 2882

原创 Axios 传递数组问题

Axios 传递数组问题后端框架Spring,前端Vue,使用的请求方式是axios,当后端接收的形式为数组(如String[]),始终无法很好的解决,后改为 List 才解决了这个问题后端接收方式 public void test(@RequestParam List<String> tags){ }前端请求方式 let tags: ['java','后端'], let {data: result} = await pushOrUpdat

2022-04-29 14:41:18 2892 1

原创 Redission 分布式锁原理

Redission 分布式锁原理Redission 是一redis客户端和jedis、lettuce 一样,但他提供诸多如分布式锁这些方便的工具加锁过程lua脚本"if (redis.call('exists', KEYS[1]) == 0) then redis.call('hset', KEYS[1], ARGV[2], 1); redis.call('pexpire', KEYS[1], ARGV[1]); return nil; end; if

2022-03-31 22:53:14 3455

原创 MySQL的默认排序

MySQL的默认排序默认排序就是没有排序,如果你希望有序请使用order by问题的引出在一个排行榜表中,前端展示要求根据score进行排序,尝试了几次,当积分相同时我发现时以主键ID(或者说根据创建时间)的大小进行了升序排序正当以为一切万事大吉时,测试反馈score相同时,并没有根据创建时间进行顺序排列,我一查数据如下果然这三行score相同的数据可以说是毫无顺序结论mysql在你不指定排序方式的时候无法保证根某种方式排序(主键ID)问题与思考既然mysql能将数据以某种顺序返回

2022-02-25 13:44:00 2223

原创 浅析线程池

浅析线程池前言在很多时候我们需要使用多个线程来并行的执行任务以提高处理能力,但随时随地的创建/销毁线程既浪费系统资源,又不利于线程的管理,于是线程池应运而生Java线程池的基本参数看起来有七个参数:但平时我们比较关注其实只有:corePoolSize 、maximumPoolSize、workQueuecorePoolSize 核心线程数maximumPoolSize 最大线程数量(核心线程数+ 救济线程数 = 最大线程)KeepAliveTime 救急线程最大存活时间(指的

2022-02-23 22:55:51 193

原创 MYSQL 索引下推

MYSQL 索引下推(Index Condition)背景介绍官方文档链接官方定义Index Condition Pushdown (ICP) is an optimization for the case where MySQL retrieves rows from a table using an index. Without ICP, the storage engine traverses the index to locate rows in the base table and re

2022-02-19 22:53:01 353

原创 Redis 实现分布式锁

Redis 实现分布式锁锁的本质就是独占获取锁setex key value这个key就是你需要锁住的东西,如果你想要保证单用户并发:那么它就可以是用户的userId,当key不存在的时候才能成功,否则失败。以此为基础我们就能保证一个线程获得锁的时候,知道它释放,都不会被其他县城抢占。但这里就产生了第一个问题。如果一个线程获得锁后,在释放锁之前就挂了,这个锁永远无法得到释放要解决这个问题也很简单,我们对这个key 设置一个超时时间。setex key valueexpire key

2022-01-23 09:34:55 226

原创 MySql死锁问题

MySql死锁问题插入死锁产生背景比如在商品秒杀的场景中,我们需要进入商品的流水情况,此时并发压力较大,不进行处理容易出现死锁核心条件:n(n>2)个线程并发插入流程示意图Client AClient BClient CbeginbeginbeginINSERT INTO user(id,name) VALUES(1,‘a’) 成功获取到X锁INSERT INTO user(id,name) VALUES(1,‘a’) 获取到S锁INSER

2022-01-17 20:36:40 730

原创 Mac 安装oh-my-zsh

一个简单的安装教程,记录基本步骤和踩坑记录,方便以后自己查看,也希望能帮到别人常规的安装流程# 1、下载安装shell脚本$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# 或者$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"# 2、运行sh -.

2022-01-08 15:29:01 4003

原创 Illegal character in scheme name at index 0

Java 里面HTTP请求里面常见的错误,问题本身很简单,但正是因为简单,有时有却让人抓耳挠腮。罪魁祸手 public static URI create(String str) { try { return new URI(str); } catch (URISyntaxException x) { throw new IllegalArgumentException(x.getMessage(), x); .

2022-01-03 01:04:26 15275

原创 apache Tuple 工具类

apache Tuple 工具类maven依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.7</version> </dependency>gra

2021-12-01 13:41:26 410

原创 MySQL索引失效场景

索引失效发生场景隐式类型转换隐式类型转换拿常见的 varchar 和 int 来举例子int 隐式转换为 varchar 将导致索引失效varchar 隐式转换为 int 不会导致索引失效解释究其原因,是因为一个数字可能是多个varchar被转化的结果,而一个varchar只会被转化为一个数字打个比方,一个拼音对应着多个汉字,要要让你根据拼音找找出汉字本身就是不实际的按图索骥的索引不允许中间有模糊不清的说法,所以最终导致的无法利用索引。验证name 是 varchar类型

2021-11-05 09:36:02 280

原创 Bean生命周期浅析

Bean生命周期浅析大致的回答Bean的生命周期,以及代码演示一下,更多东西,留待以后补充总体概述实例化->Instantiation属性赋值->Populate初始化->Initialization使用销毁->Destruction首先了解全貌,了解中间有很多扩展点就行总的来说就是大方向上可以分为5个点首先是实例化,在这之前会有BeanFactoryPostProcessor的扩展点,比如可以在这里修改Bean的作用域然后是属性注入,然后会有一系列

2021-08-18 23:26:01 129 2

原创 百万数据量下,使用延迟关联优化超大分页

百万数据量下,使用延迟关联优化超大分页MySQL 并不是跳过 offset 行,而是取 offset + N 行,然后返回放弃前 offset 行,返回 N 行,那当offset 特别大的时候,效率就非常的低下延迟关联根本原理在于利用索引覆盖,避免二次回表,提高性能,延迟关联则是通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据。模拟百万条数据表结构DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` in

2021-08-10 15:58:12 256

原创 SpringMVC执行过程及HandlerAdapter分析

SpringMVC执行过程起初用户发送请求前端控制器DispatchServlet接收用户请求,并委托给 处理器映射HandlerMappingHandlerMapping根据请求路径寻找到相应的处理执行链HandlerExecutionChain其中包含Handler以及拦截器Interpetor并返回给前端控制器DispatchServlet将Handler作为参数传递给合适的(根据Handler的实现方式-----基于(实现Controller, @Controller注解,实现HttpR

2021-08-06 10:14:10 361 1

原创 腾讯云免费升级。

刚刚进入腾讯云的控制台,发现可以可免费升级服务器,1核2G直接免费升级成2核4G,刷歪歪!!!活动如何升级?进入控制台,选择更多中的升级套餐,点进去选择,第二个,不要钱、不要钱、不要钱。。。建议如果有条件,可以多续费几年(一年108块钱),这个升级以后,是无法享受学生机优惠的。学生机续费地址...

2021-08-04 22:12:24 290

原创 Java线程池创建详解

线程池public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,

2021-08-02 22:56:16 209

原创 CopyOnWriteArrayList 浅析

CopyOnWriteArrayList核心思想在名称就已经体现出来-在写的时候复制,同样也是读写分离的一种体现针对读操作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传没有使用任何锁,因为读本身就是线程安全的!针对写操作写入的时候使用了ReentrantLock,没有使用synchronized,但仍然使用了锁,使用了锁!,这时保证线程安全的根本,锁-要修改只能一个一个排队来private transient volatile Object[] array;v

2021-07-29 16:08:00 124

原创 为什么说Java只有值传递?

为什么说Java只有值传递?定义值传递(pass by value):在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会影响到原来的实际参数;引用传递(pass by reference):在调用函数时,将实际参数的地址直接传递到函数中。这样在函数中对参数进行的修改,就会影响到实际参数;基本的类型无需多说,肯定是值传递。那传递一个对象(其实应该是对象的引用)呢?会是引用传递吗?explame通过一个例子来说明public class User { pu

2021-07-27 13:02:59 140

原创 String str = new String(“abc“) 到底创建了几个变量?

String str = new String(“abc”)创建了几个变量?我的答案是1个或者2个为什么呢?流程大概如下在常量池中查找是否有“abc”对象有则返回对应的引用实例没有则创建对应的实例对象在堆中 new 一个 String(“abc”) 对象将对象地址赋值给str4,创建一个引用所以常量池有"abc"就只创建了一个实例对象,否则会多在常量池中多创建一个对象那String str1 = new String(“A”+“B” ) 会创建多少个对象?我

2021-07-26 22:29:02 2378

原创 正则 ^ $ 有什么用

正则 ^ $ 有什么用[a-z] 可以用来匹配任意位置上的小写字母: "...a..."^[a-z] 只能匹配以小写字母为行首的行: "a..."[a-z]$ 只能匹配以小写字母为行尾的行: "...a"^[a-z]$ 应该只能匹配只有一个小写字母的行: "a"...

2021-07-22 21:12:20 443

原创 The request was rejected because the URL contained a potentially malicious String “//“

问题描述引入Spring security 后本地使用vue代理没有问题,使用nginx出问题,问题定位到nginx配置问题的解决# rewrite ^(/api/?.*)$ /$1 break; // 原配置 rewrite ^/api/(.*)$ /$1 break; // 修改后的配置

2021-07-22 19:41:31 1693

空空如也

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

TA关注的人

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