- 博客(90)
- 资源 (3)
- 收藏
- 关注
原创 mysql中insert … select锁范围
insert … select 是很常见的在两个表之间拷贝数据的方法。在可重复读隔离级别下,这个语句会给 select 的表里扫描到的记录和间隙加读锁。而如果 insert 和 select 的对象是同一个表,则有可能会造成循环写入。这种情况下,我们需要引入用户临时表来做优化。insert 语句如果出现唯一键冲突,会在冲突的唯一值上加共享的 next-key lock(S 锁)。因此,碰到由于唯一键约束导致报错后,要尽快提交或回滚事务,避免加锁时间过长。
2024-03-08 13:18:03 514
原创 hive sql无法停止
hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。同时,通过JDK动态代理为其织入了synchronized同步机制:其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。
2024-03-05 15:57:08 674
原创 手把手教你解析xml格式的word文档-附代码
其中最主要的写入是“书签块的写入”,由于书签块分为“头”“尾”“身体”,身体里包含“文字块”和“非文字”块,书签替换时只需将数据替换到第一个文字块中即可,之后的文字块忽略不计(因为替换的文字很难选择文字块中的某一块的样式,所以选择取第一个文字块的样式)还有就是表格中行的循环,比如当前取出的数据是一个list,我们需要根据list的大小来生成表格中的行数,并对此表格中的书签进行数据替换(如下图),此时,需要将文档进切分为“循环的行块”和非行块。然后,切分文档为不同的块。最后,对文档中切分好的块进行文档构建。
2024-03-05 11:05:59 463
原创 查询jvm中栈的深度
java 方法路径 2>&1 |grep 'at 方法路径'|wc-1。jvm中没有提供方法,可以使用linux相关命令进行统计。
2024-02-26 15:52:59 385
原创 jvm面试题目补充
Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit)。把Java API类库中的Java SE API子集 [1] 和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。
2024-02-26 15:30:58 1105
原创 jar包热加载原理
第二次加载时,比较jar的更新时间和第一次jar包更新时间,若不一致,说明jar包更新过了。第一次加载时,记录jar包的更新时间。
2024-01-16 13:00:52 425
原创 java.lang.ClassNotFoundException: com.jcraft.jsch.JSch
一、异常信息java.lang.ClassNotFoundException: com.jcraft.jsch.JSch at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:34...
2022-03-18 15:16:49 2875
原创 联合索引,范围查询后,后面的字段不走索引
是B+树的结构决定的。底层B+树叶子节点的键值是通过链表连接的,而组合索引是从左向右按照索引字段的顺序进行查找,只有当前一个索引列是确定值的时候,下一个索引列的值才是递增的状态,才能通过B+树遍历得到,而一旦前一个索引列是范围匹配,则之后的索引列的值不存在递增关系,那么就没办法通过B+树遍历得到。例如,以下联合索引。A>=2,B=4的查询过程。a=2时,B是有序的,a=3时,b是无序的,就不能继续向下查找了。必须在前一个是定值的情况下,才能继续向下查找。...
2021-11-04 21:00:14 2174 1
原创 ClickHouseArray序列化异常
1.异常Caused by: com.fasterxml.jackson.databind.JsonMappingException: (was java.sql.SQLFeatureNotSupportedException) (through reference chain: com.****.HttpResult["content"]->java.util.ArrayList[0]->java.util.LinkedHashMap["column_14"]->ru.yandex.
2021-09-03 16:11:37 1560 1
转载 常见的限流算法和应用场景
1.计数器模式假设以1分钟作为一个固定窗口,窗口流量限制为100。那么1分钟的最后1s进来100个流量,下一个窗口的第一秒进来了100个流量,其实1分钟内流量是超出系统能承受范围的。所以,计数器模式无法应对突发的流量2.滑动窗口一个大窗口分成多个小窗口,每次向后滑动一个小窗口。控制了各个小窗口的流量,这种方法比上一种更加平滑。但是小窗口的划分要求很高,面对突发的流量也没有办法控制3.漏桶桶的容量是固定的。当有请求到来时先放到木桶中,处理请求的worker以固定的速度从木桶中取出.
2021-07-19 14:16:30 683
原创 java中的序列化和反序列化(serialVersionUID的作用)
1. 序列化和反序列化出现的背景什么时候需要序列化对象? 跨平台,分布式环境的对象传输,对象持久化等 一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。...
2021-07-19 12:02:00 374
原创 ThreadFactory创建线程无法捕获异常
ThreadFactorynamedThreadFactory=newThreadFactoryBuilder().setNameFormat("judge-pool-%d").setUncaughtExceptionHandler((thread,throwable)->logger.error("ThreadPool{}gotexception",thread,throwable))...
2021-07-02 15:58:44 329
原创 Caused by: java.net.ConnectException: Connection refused (Connection refused
idea中下载类的resource的时候报错修改preference中的maven的配置为自己电脑安装maven的路径即可
2021-06-24 09:36:43 1747
转载 AQS中的阻塞队列
转载自:码海,按照自己的思路梳理了一遍1.原理AQS数据结构public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable { // 以下为双向链表的首尾结点,代表入口等待队列 private transient volatile Node head; private transient v
2021-05-19 16:57:48 751
原创 临时表和内存表的区别?
引擎 是否可以重名 存储和是否持久化 从库是否可查询到 数据结构 内存表 Memory 不可 数据结构和数据分开存储,查询快一些,需要手动drop表 可建索引,可以查询,show tables可以看到表 不支持TEXT,Blob 临时...
2021-04-25 15:34:08 109
原创 银泰笔试题
做完题目后,很高兴的发给面试官了,第三天,面试官就说做的不好,pass了。想问问大家主要问题出在哪儿呢?是不是数据不能完全加载到内存的算法有问题呢?import com.alibaba.fastjson.JSON;import com.alibaba.mos.api.ItemService;import com.alibaba.mos.api.SkuReadService;import com.alibaba.mos.dao.ItemDAO;import com.alibaba.mos.dat
2021-04-01 11:49:31 903 2
原创 Mysql45讲学习笔记
以下内容来源于丁奇的mysql 45讲,重点需要理解的地方1. 查询sql的具体流程2. 更新语句的执行流程当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log(粉板)里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做。redo log 的写入拆成了两个步骤:prepare 和 commit,这就是"两阶段提交"。为什么必须有“两阶段提交”呢?这是为了让两.
2021-03-02 10:00:23 524
原创 Caused by: io.lettuce.core.RedisCommandTimeoutException: Command timed out after 1 minute(s)
这个应该是lettuce客户端的bug,找了好久的问题,把lettuce排除掉使用jedis客户端就可以使用了!<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion>
2021-02-04 10:02:17 3875 1
原创 com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)L
sentinel整合feign时报错,<artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.0.RELEASE</version>找到这个SentinelContractHolder类,发现里面的方法为parseAndValidatateMetadata方法名错误了,更新jar包至2.2.1.RELEASE即可以解决问题<groupId>com
2021-02-03 10:57:19 546
原创 WebCallbackManager.setUrlBlockHandler()不生效
使用标题进行配置阻塞后的返回值 时,一直不生效,最后发现WebCallbackManager是sentinel-web-servlet包中的接口,而BlockExceptionHandler 是sentinel-spring-webmvc-adapter包中的在最新版本中,尝试通过 实现 BlockExceptionHandler 接口,实现 handle 函数,实现该功能@Componentpublic class ExceptionHandlerPage implements ...
2021-02-02 17:50:33 1803 1
原创 java面试题补充
1、Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?答:sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复(线程回到就绪状态,请参考第66题中的线程状态转换图)。wait()是Object类的方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),只有调用对象的n
2020-12-08 17:08:23 345
原创 unicode编码和utf-8的关系
1.历史问题:ASCII编码和非ASCII编码计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。ASCII 码一共规定了128个字符的
2020-12-03 13:50:34 333
xml格式word文档解析器
2018-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人