自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试——数据库中小表驱动大表?为何能提高性能?

student表和school表,执行下面的sql。算法,那么选择哪个表作为外驱表和内驱表至关重要。作为外驱表的话,就是大表驱动小表,时间复杂度将是。作为外驱表的话,就是小表驱动大表,时间复杂度将是。都存在索引的情况下,并且数据库采用的是。**,可见根本不是一个数量级的。有一百条数据,如果选择。

2024-04-25 16:18:58 184

原创 面试——数据库中的锁升级(Lock Escalation)机制

以MySQL为例,按照两阶段锁协议,会先给tb_user加上表意向锁,然后对tb_user的所有行加上行锁,但是当tb_user数据量非常多的时候,频繁的获取行锁会影响性能,所以会将表意向锁升级为表锁,后续访问的时候不需要再加锁,这样导致的结果是并发性能降低,因为其他线程访问该表会被阻塞。条件,分批去操作数据,尽量防止全表扫描。因此得出建议:操作表的时候尽量带仨很。假设执行下面的sql语句。

2024-04-24 18:20:40 407

原创 Java——内存溢出如何排查

初始化启动参数最大堆内存为20m,在内存溢出的时候生成一个dump文件,然后存储在对应目录下。打开mat导入内存溢出dump文件,选择。

2024-04-24 18:09:55 145

原创 Java——基于CompletableFuture的流水线并行处理

CompletableFuture在JDK1.8提供了一种更加强大的异步编程的api。它实现了Future接口,也就是Future的功能特性CompletableFuture也有;除此之外,它也实现了CompletionStage接口,CompletionStage接口定义了任务编排的方法,执行某一阶段,可以向下执行后续阶段。

2024-03-26 18:13:29 964

原创 面试——深度分页问题的优化

在开发中为了防止一次加载太多数据到内存,对内存占用和IO读取开销太大,一般使用limit关键字进行分页加载数据,在数据量比较大的时候,如果进行limit分页查询,越往后,分页查询的效率越低。当在进行分页查询时,如果执行limit 9000000, 10,此时需要排序前9000010条记录,仅仅返回9000000-9000010的记录,其他的记录丢弃,查询排序的代价非常大。丢掉前m条,保留第[m, m+n],n条结果,并返回给客户端返回,从磁盘中读取m+n条数据就是整个查询过程中耗时的操作。

2024-03-26 14:58:34 210

原创 ReentrantReadWriteLock

注意,这里的阻塞是一个概率性的阻塞,因为它只是一个启发式的判断,不是绝对的。根据 ReentrantReadWriteLock 的特性,第一个线程获取了读锁,第二个线程尝试获取写锁,会被阻塞。如果按照 ReentrantReadWriteLock 的特性,第三个线程应该可以成功获取读锁,因为读锁是共享锁,不会阻塞其他读线程。但是,实际上,第三个线程却被阻塞了。与传统的独占锁不同,ReentrantReadWriteLock 允许多个读线程同时访问资源,但在写线程访问时,会阻塞所有其他读线程和写线程。

2024-03-21 18:54:04 434

原创 面试——线上Java服务器CPU不断飙升,怎么排查

Linux:Java:实际步骤:

2024-03-04 10:12:12 480

原创 面试——Java垃圾回收算法和垃圾回收器

他不但只会用一个线程去收集垃圾,在收集垃圾的时候其他的所有工作线程必须停止,即会发生Stop the World现象,对于Stop the world(在垃圾回收开始时停掉其他所有的线程,只供垃圾回收器回收使用,对于系统尤其是高并发系统来说就是一个噩梦),直到垃圾回收结束。复制算法将堆内存分为两个区域,通常是”From“区和”To“区,当”From“区的对象被标记为存活时,它们将被复制到”To“区,而未被标记的对象将被丢弃,完成复制后,”From“区和”To“区的角色交换。标记-清除算法分为两个主要阶段。

2024-02-28 18:46:02 920

原创 Java——使用stack实现二叉树的前中后序遍历

【代码】Java——使用stack实现二叉树的前中后序遍历。

2024-02-28 11:47:37 350

原创 面试——双亲委派机制

我们再看第四个问题,我们想我们要怎么实现jsp文件的热加载,jsp 文件其实也就是class文件,那么如果修改了,但类名还是一样,类加载器会直接取方法区中已经存在的,修改后的jsp是不会重新加载的。这样保证了Class执行安全。在加载某个类时会先委托父加载器寻找目标类,找不到再委托上层父加载器加载,如果所有父加载器在自己的加载类路径下都找不到目标类,则在自己的类加载路径中查找并载入目标类。如果父加载器及bootstrap类加载器都没有找到指定的类,那么调用当前类加载器的findClass方法来完成类加载。

2024-02-27 18:22:26 878

原创 面试——类加载机制

4、解析:将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如main()方法)替换为指向数据所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成),动态链接是在程序运行期间完成的将符号引用替换为直接引用。1、加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。3、父类的变量和代码块(先声明的先执行)

2024-02-27 17:36:11 327

原创 状态机设计与实现

【代码】状态机设计与实现。

2024-02-19 23:43:45 366

原创 Lambda表达式代替观察者模式

场景:用户申请退款,系统同意退款。:创建多个观察者类,注册,通知。3、调用支付接口进行退款。2、发送站内信与短信。

2024-02-19 18:58:00 329

原创 springboot:自定义注解+redis实现接口限流

自定义注解+redis实现接口限流

2024-02-02 16:22:57 359

原创 springboot:通过aop注解进行接口权限判断

通过aop注解进行接口权限判断

2024-02-02 11:31:44 379

原创 springboot:通过servlet中的Filter配置拦截器

通过servlet中的Filter配置拦截器

2024-02-02 11:19:25 365

原创 springboot:通过WebMvcConfigurer和HandlerInterceptor配置多个拦截器

通过WebMvcConfigurer和HandlerInterceptor配置多个拦截器

2024-02-02 11:03:52 574

原创 java更改Xml中某个元素的属性

如果需要以文件的形式进行替换,自行将。代表属性名字和替换值的映射。

2023-09-22 17:22:23 424 2

原创 使用iText将Excel导出为pdf

这里貌似还有存在一个问题,就是创建pdf表格的使用的是excel每一列的宽度比例,并无法完美做到将excel每个单元格的数据的长度做到适应,思来想去没有想到什么好的方法。

2023-09-06 16:48:07 1172 1

原创 Docker 安装 IoTDB

这将创建一个名为 “iotdb” 的容器,并将 IoTDB 的端口映射到主机的相应端口上(6667、31999、8123 和 9003)。首先,你需要在你的机器上安装 Docker。在容器的命令行界面中,你需要配置 IoTDB。完成配置后,你可以启动 IoTDB 服务。要配置和启动 IoTDB,你需要进入容器的命令行界面。接下来,你需要创建一个容器来运行 IoTDB。在文件中,你可以修改各种配置选项,如存储路径、数据复制等。这将启动 IoTDB 服务,并将输出日志显示在控制台上。步骤 3:创建并启动容器。

2023-09-04 09:45:20 697 1

原创 关于git同步不同仓库的合并请求

git

2022-11-03 14:07:19 488 1

原创 discard long time none received connection. , jdbcUrl :

druid报错

2022-10-20 16:55:51 470

原创 日期格式正则表达式

日期格式正则表达式

2022-08-16 15:51:22 241

原创 LeetCode——1484. 按日期分组销售产品

LeetCode

2022-06-10 21:57:26 112

原创 Elasticsearch启动异常

1、查看日志文件所属群组和用户是否非root用户chgrp -R 群组 xxxxx.log chown -R 用户 xxxxx.log

2022-05-08 14:28:41 784

原创 腾讯云redis远程连接

1、编辑redis.conf,添加所有ip地址cd /usr/local/redis/bin/vim redis.confcd进入你的redis.conf文件,使用vim命令编辑文件,把刚才上面查到的所有ip地址都加到bind后面或者直接这样写bind 0.0.0.02、编辑redis.conf,设置密码redis.conf中找到 requirepass 字段,退出insert编辑模式,处于normal模式下,按/,然后后面跟上你要查找的内容,按回车就行了。会跳转到第一个匹配到的查找结果,

2022-05-07 21:52:37 785

原创 面试——redis的缓存击穿、雪崩和穿透及处理办法

redis击穿:请求数据顺序,首先会从redis缓存中拿数据,若未拿到则查数据库,再写到redis。如果是请求一条根本不存在的数据时,则会去直接访问数据库,但是数据库也没有,所以它也没把数据写入redis缓存。所以每次这种请求都会直接访问数据库。如果请求的数量太大的话,这种绕过redis直接访问数据库情况则成为击穿。解决办法:1、在查询数据库的时候若未查询到数据,依然在redis中保存一条记录,并把value设置为null或者其他便于区别的值,可以再给该条数据设置一个过期时间,那么以后再有请求过来访问

2022-05-04 11:02:02 282

原创 【websocket】spring boot 集成 websocket 的四种方式

1. 原生注解pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>WebSocketConfig/* * * * * blog.coder4j.cn * * Copyright (C) 2016-20

2022-04-27 15:40:42 2510

原创 mybatis plus中的${ew.sqlSelect},${ew.customSqlSegment}使用

{ew.sqlSelect}:表示QueryWrapper中select后面的内容{ew.customSqlSegment}:表示QueryWrapper中eq,gt等条件内容,但在xml不用使用where。在service中需使用@Param(Constants.WRAPPER)指定别名

2022-03-08 00:10:47 889

原创 java-日常函数使用

trim()方法:去除首尾空格String str = " Hello World! ";str.trim();//输出为:“Hello World!”substring():截取父字符串的某一部分public String substring(int beginIndex, int endIndex)第一个参数int为开始的索引,对应String数字中的开始位置;第二个参数是截止的索引位置,对应String中的结束位置;1、取得的字符串长度为:endIndex - beginIndex

2022-03-06 20:49:18 404

原创 java——快速排序

public static void main(String[] args) { int arr[] = {7, 5, 3, 2, 4, 1, 8, 9, 6}; //快速排序 int low = 0; int high = arr.length - 1; quickSort(arr, low, high); } public static void quickSort(int[] arr, int l

2022-03-04 11:49:00 115

原创 java——ES启动后自动关闭解决

#查看ES id编号docker ps -a#查看日志docker logs -f id编号我出现的问题是内存不够修改jvm.optionsfind / -name jvm.optionsvi 查找的文件将Xms和Xmx改小一点,我是改为64m,然后es就可以了

2021-12-09 18:46:43 1526

原创 python——enumerate的用法

seq = 'hello'for i, key in enumerate(seq): print('seq[%d]=%c',%(i,key))'''输出:seq[0]=hseq[1]=eseq[2]=lseq[3]=lseq[4]=o'''seq = ['a', 'b', 'c', 'd']for i, key in enumerate(seq[::-1]) print 'seq[%d]=%c',%(i,key)''' seq[0]=dseq[1]=cseq[2]=bse

2020-11-16 19:32:05 131

原创 pytorch——pytorch.nn.Linear

import torchx = torch.randn(128, 20) # 输入的维度是(128,20)m = torch.nn.Linear(20, 30) # 20,30是指维度output = m(x)print('m.weight.shape:\n ', m.weight.shape)print('m.bias.shape:\n', m.bias.shape)print('output.shape:\n', output.shape)# ans = torch.mm(inpu

2020-11-14 17:05:56 125

原创 pytorch——batch_size

1 定义单次训练用的样本数,通常为2^N,如32、64、1282 提出背景在batch_size概念没提出之前,神经网络的训练每一个epoch需要将所有的数据一次性加载训练,使得内存负载加大。这样会准确计算梯度方向更准确,但不同梯度值差异过大,无法确定全局的学习率。在这样的条件下,batch_size被提出来了。3 合适的batch_size训练的优点使内存利用率增大,加快训练速度使梯度方向计算更准确,收敛快...

2020-11-14 16:25:31 2154

原创 python——求微分

import torchdef f(x): return (x-2).pow(2)def fp(x):#f(x)的求导 return 2*(x-2)x = torch.tensor([3.0], requires_grad=True)#x=3时的导数y = f(x)y.backward()#反向传播#对比print(fp(x))print(x.grad)

2020-11-14 15:14:49 330

原创 python——plt.text

plt.text(0,0.5,'loss:%.4f '%loss.data.numpy(),#%.4f格式化输出,保留四位小数点 fontdict={'size': 20, 'color': 'red'}#字体尺寸20,颜色 红色) #第一和第二个参数0,0.5表示输出信息的坐标,原点坐标是(0,0)...

2020-11-14 15:01:06 1600

空空如也

空空如也

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

TA关注的人

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