- 博客(99)
- 收藏
- 关注
原创 浅谈什么时候应该直接创建,什么时候适合用监听器
直接创建:如果后续的操作强依赖前面的操作,时候直接创建在后面。使用监听器:如果关联关系较弱,可以考虑使用监听器。
2025-01-09 14:07:57
175
原创 如何创建一个 PKCS12 格式的证书文件
接下来,使用私钥生成一个证书请求文件(CSR)。运行上述命令后,OpenSSL 会提示你输入一些信息,如国家、组织名称等。这些信息将包含在证书中。运行上述命令后,系统会提示你输入一个导出密码,这个密码将用于保护 PKCS12 文件中的私钥。使用 OpenSSL 生成一个私钥文件。的文件,并使用 AES-256 加密算法保护私钥。系统会提示你输入一个密码来保护私钥。这将显示 PKCS12 文件的内容,包括证书和私钥的信息。这条命令会生成一个有效期为 365 天的自签名证书文件。这条命令会生成一个名为。
2024-10-28 10:12:28
625
原创 做一个简单的查询接口,有什么考量
如果这个接口是放在一个后台管理系统使用的,那肯定需要分页操作,肯定就会有pageNumber,pageSize这种分页参数,可能会遇到查询缓慢的问题。那我们就可以分库分表,或者是用子查询优化啊,或者是用游标的思想等等。首先要考虑这个接口是在什么场景下使用的。因为在不同的地方查询,实现方式是不一样的,甚至优化策略也是不一样的。如果是多个操作符合,可以异步调用@async。如果是经常访问,可以存到缓存里面。如果是数据库接口,SQL优化。
2023-09-29 16:18:12
228
原创 SQL优化--update优化
当我们开启多个事务,在执行上述的SQL时,我们发现行锁升级为了表锁。导致该update语句的性能 大大降低。InnoDB的行锁是针对索引加的锁,不是针对记录加的锁 ,并且该索引不能失效,否则会从行锁 升级为表锁。当我们在执行删除的SQL语句时,会锁定id为1这一行的数据,然后事务提交之后,行锁释放。但是当我们在执行如下SQL时。
2023-09-16 19:33:42
250
原创 SQL优化--count优化
在之前的测试中,我们发现,如果数据量很大,在执行count操作时,是非常耗时的。MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个 数,效率很高;但是如果是带条件的count,MyISAM也慢。InnoDB 引擎就麻烦了,它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出 来,然后累积计数。
2023-09-16 19:29:46
532
原创 SQL优化--分页优化(limit)
通过测试我们会看到,越往后,分页查询效率越低,这就是分页查询的问题所在。因为,当在进行分页查询时,如果执行 limit 2000000,10 ,此时需要MySQL排序前2000010 记 录,仅仅返回 2000000 - 2000010 的记录,其他记录丢弃,查询排序的代价非常大。优化思路: 一般分页查询时,通过创建 覆盖索引 能够比较好地提高性能,可以通过覆盖索引加子查 询形式进行优化。在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。
2023-09-16 19:24:44
517
原创 SQL优化--分组优化(group by)
所以,在分组操作中,我们需要通过以下两点进行优化,以提升性能:A. 在分组操作时,可以通过索引来提高效率。B. 分组操作时,索引的使用也是满足最左前缀法则的。
2023-09-16 19:16:28
462
原创 SQL优化--排序优化(order by)
根据排序字段建立合适的索引,多字段排序时,也遵循最左前缀法则。尽量使用覆盖索引。多字段排序, 一个升序一个降序,此时需要注意联合索引在创建时的规则(ASC/DESC)。如果不可避免的出现filesort,大数据量排序时,可以适当增大排序缓冲区大小sort_buffer_size(默认256k)。如果排序超出了缓冲区就会在磁盘文件中进行排序,性能较低。
2023-09-16 18:42:08
448
原创 SQL优化--主键查询
在上一小节,我们提到,主键顺序插入的性能是要高于乱序插入的。这一小节,就来介绍一下具体的 原因,然后再分析一下主键又该如何设计。
2023-09-13 10:37:24
523
原创 一亿条数据如何优化
根据业务场景回答,什么叫查询优化,有瓶颈才叫优化。首先在常规的数据设计中,就不应该让一张表存储一亿条数据你是主键查询慢还是条件查询慢,是分组聚合慢,还是深度分页慢,到底怎么慢,怎么影响业务了数据库查询优化是一个综合工程。再往细说,
2023-09-12 19:58:28
301
原创 JWT解决跨域问题详解
在前后端不分离时,我们利用前面讲过的Spring Security的各种知识点,就可以实现对项目的权限管控。但是在前后端分离时,尤其是在引入了Spring Security后的前后端分离时,我们从前端发来的请求,就会存在一些问题。这些问题就是跨域而导致的问题!跨域问题的产生,源自浏览器的一个同源策略。
2023-09-04 19:36:14
613
原创 业务中如何过滤敏感词
在我们访问网站的时候,如果发现我们发布的内容有色情暴力的东西等等,会屏蔽掉,这种行为就是过滤敏感词。从技术层面实现起来,其实比较简单,因为我们输入的内容就是一个大型的字符串,我们要调用某些api来判断这个字符串有没有敏感词,比如我们可以使用jdk自带的方法,比如String里面有个replace方法可以直接替换字符串。但是网站在运行过程中,敏感词可能比较多,有几十个,甚至上百个。
2023-08-09 16:44:20
231
原创 JVM面试题--实践
Java内存泄露的排查思路虚拟机栈,一般是递归产生的问题方法区,一般是动态加载的类太多了堆空间,大型对象一直存活那如果是服务器上部署的项目,无法部署,或者部署一段时间宕机了,又应该怎么办呢?如何排查呢1获取堆内存快照dump2VisualVM去分析dump文件3通过查看堆信息的情况,定位内存溢出问题CPU飙高排查方案与思路?1.使用top命令查看占用cpu的情况2.查看是哪一个进程占用cpu较高上图所示的进程为:409403.
2023-08-03 21:25:52
409
1
原创 JVM面试题--垃圾回收
JVM有哪些垃圾回收器?在jvm中,实现了多种垃圾收集器,包括:串行垃圾收集器并行垃圾收集器CMS(并发)垃圾收集器G1垃圾收集器Young Collection(年轻代垃圾回收)g1里面新生代的内存占比不是固定的,在5%到6%进行调整Young Collection + Concurrent Mark (年轻代垃圾回收+并发标记)因为存活对象少,性价比高,可以释放更多内存,所以会挑出回收价值比较高的老年代和eden区和幸存者区进行垃圾回收。
2023-08-03 12:06:47
371
原创 JVM面试题--类加载器
类加载子系统,当java源代码编译为class文件之后,由他将字节码装载到运行时数据区 BootStrap ClassLoader 启动类加载器或者叫做引导类加载器,是用c++实现的,嵌套在jvm内部,主要是用来加载java的核心库的ExtClassLoader拓展类加载器,主要是加载jdk安装目录下,jre下的lib下的ext,也就是拓展目录,加载其中的jar包,如果用户把自己的文件也放到当前目录下,也会自动使用加载器来加载这些类AppClassLoader应用类加载器,负责加载的是环境变量,同时他也是默
2023-08-01 23:23:06
263
原创 JVM面试题--JVM组成
什么是虚拟机栈垃圾回收是否涉及栈内存?垃圾回收主要指就是堆内存,当栈帧弹栈以后,内存就会释放栈内存分配越大越好吗?未必,默认的栈内存通常为1024k栈帧过大会导致线程数变少,例如,机器总内存为512m,目前能活动的线程数则为512个,如果把栈内存改为2048k,那么能活动的栈帧就会减半方法内的局部变量是否线程安全?如果方法内局部变量没有逃离方法的作用范围,它是线程安全的如果是局部变量引用了对象,并逃离方法的作用范围,需要考虑线程安全什么时候会出现栈内存溢出?
2023-08-01 18:37:28
503
原创 多线程面试题--使用场景
在使用的时候,首先会给一个初始值,比如图中是3,然后在其他线程中调用countdown()方法,当count=0则继续执行。线程池使用场景(CountDownLatch、Future)线程池使用场景(CountDownLatch、Future)在我们项目上线之前,我们需要把数据库中的数据一次性的同步到。异常),当时我就想到可以使用线程池的方式导入,利用。来控制,就能避免一次性加载过多,防止内存溢出。多线程使用场景一( es数据批量导入)万左右,一次性读取数据肯定不行(索引库中,但是当时的数据好像是。
2023-07-27 14:51:52
774
原创 多线程面试题--线程池
首先有一个问题,为什么要使用线程池呢?有两个原因,第一个,每一次创建线程的时候都会占用一定的内存空间,如果无限的创建线程,可能会浪费内存,严重的情况可能会内存溢出。第二个,cpu是有限的,同一时刻一个cpu只能处理一个线程,如果有大量的请求来了,我们创建了大量的线程,很多线程没有cpu的执行权,这些线程都得出去等待,会造成大量的线程之间的切换,也会造成性能变慢所以一般来说都会使用线程池来管理线程,创建线程线程池的核心参数/执行原理核心参数核心线程数目:线程池中主要执行任务的数量(不会释放)
2023-07-27 11:35:42
436
原创 多线程面试题--线程安全
Monitor实现的锁属于重量级锁,你了解过锁升级吗?对象的内存结构volatile一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:①保证线程间的可见性②禁止进行指令重排序保证线程间的可见性那为什么线程2可以读到线程1的值,而线程3不行呢。
2023-07-25 23:49:56
272
原创 多线程面试题--线程基础
目录线程与进程的关系什么是进程 什么是线程区别并行和并发的区别单核情况多核情况 区别线程创建的方式继承Thread类实现Runnable接口 实现Callable接口线程池 runnable 和 callable 有什么区别? 什么时候抛出异常,处理异常?线程的 run()和 start()有什么区别?线程包括哪些状态,状态之间如何变化的? 变化图解编辑总结 如何保证不同线程执行顺序notify()和 notifyAll()有什么区别?wait和sleep方法的不同?如何停止一个正在运行的线程?
2023-07-24 21:40:53
486
原创 ElasticSearch学习--数据聚合
数据聚合可以帮助我们对海量的数据进行统计分析,如果结合kibana,我们还能形成可视化的图形报表。自动补全可以根据用户输入的部分关键字去自动补全和提示。数据同步可以帮助我们解决es和mysql的数据一致性问题。集群可以帮助我们了解结构和不同节点的职责和角色注意:参与聚合的字段类型一定不能是text,但是可以是一些其他不分词的,结构化的类型,比如keyword,数值,日期,布尔 上面这种聚合是全局的聚合,如果数据量特别大,对效率影响很大,所以我们需要一种可以指定范围的办法 与之前的搜索功能类似,也分为请求条
2023-07-23 15:03:39
449
原创 ElasticSearch学习--RestClient及案例
目录RestClient查询文档快速入门 总结全文检索(match)查询精确查询复合查询查询总结排序,分页 高亮 多种查询的差异都在做类型和条件上,别的地方都是一样的,包括返回的结果和格式也是一样的
2023-07-21 21:17:33
471
原创 ElasticSearch学习--搜索
【ES笔记02】ElasticSearch数据库之查询操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)_es match must_朱友斌的博客-优快云博客 过滤条件:决定了哪些文档要加分算分函数:算分的结果加权模式:最终的算法
2023-07-20 21:53:17
129
原创 ElasticSearch学习--操作
其实索引库是不能修改的,因为当他创建完成,他的mapping映射已经定义好了,我们的es会根据mapping去创建倒排索引。如果要修改一个字段,就会让原本的倒排索引全部失效。虽然es禁止直接去修改一个原有的字段,但是它允许你修改索引库的过程中添加新的字段。
2023-07-20 16:41:41
587
原创 ElasticSearch学习--概念
可视化可以用自己的网站。代替数据抓取也可以自己写,然后通过es计算,这些都是官方提供,并且可以替换的es的底层是一种叫做lucene的技术做局部内容索引,效率较差es是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储到es中。
2023-07-20 08:43:52
408
原创 集合面试题--HashMap
HashMap的put方法的具体流程HashMap的扩容机制当第一次扩容的时候,oldCap是0,肯定是不成立的,如第一行当不是第一次扩容时,就会让旧容量*2可以参考这个HashMap扩容时的rehash方法中(e.hash & oldCap) == 0详解_上进的小镇青年的博客-优快云博客hashMap的寻址算法hashmap在1.7情况下的多线程死循环问题。
2023-07-18 23:41:03
363
原创 集合面试题--二叉树,红黑树,散列表
红黑树(Red Black Tree):也是一种自平衡的二叉搜索树(BST),之前叫做平衡二叉B树(Symmetric Binary B-Tree)在HashMap中的最重要的一个数据结构就是散列表,在散列表中又使用到了红黑树和链表散列表又名哈希表/Hash表,是根据键(Key)直接访问在内存存储位置值(Value的数据结构,它是由数组演化而来的,利用了数组支持按照下标进行随机访问数据的特性。
2023-07-18 14:13:53
408
原创 SpringSecurity--权限管理架构介绍
也有很多公司选择⾃定义权限,即⾃⼰开发权限管理。但是⼀个系统的安全,不仅 仅是登录和权限控制这么简单,我们还要考虑种各样可能存在的⽹络政击以及防彻 策略,从这个⻆度来说,开发者自己实现安全管理也并⾮是⼀件容易的事情,只有 ⼤公司才有⾜够的⼈⼒物⼒去⽀持这件事情。
2023-07-13 17:02:14
2140
1
原创 集合面试题--ArrayList数组
数组(Array)是一种用连续的内存空间存储相同数据类型数据的线性数据结构。数组(Array)是一种用连续的内存空间存储相同数据类型数据的线性数据结构。因为int占4个字节,所以也可以理解为占四块内存数组如何获取其他元素的地址值一般来说问的比较多的就是,添加数据的逻辑,如果添加多个数据,他的扩容方式。
2023-07-08 11:08:42
525
1
原创 Spring面试题--Spring框架常见注解
使用在方法上,标注将该方法的返回值存储到。配置类,创建容器时会从该类上加载注解。Spring 的常见注解有哪些?使用在字段上用于根据类型依赖注入。一起使用用于根据名称进行依赖注入。在初始化容器时要扫描的包。使用在类上用于实例化。
2023-07-06 16:04:30
504
原创 Spring面试题--SpringBoot自动配置原理
该注解通过 @Import 注解导入对应的配置选择器。关键的是内部就是读取了 该项目和该项目引用的Jar包的的classpath路径下METAINF/spring.factories文件中的所配置的类的全类名。在这些配置类中所定义的Bean会根据条件注解所指定的条件来决定是否需要 将其导入到Spring容器中。一般条件判断会有像 @ConditionalOnClass 这样的注解,判断是否有对应的 class文件,如果有则加载该类,把这个配置类的所有的Bean放入spring容器 中使用。
2023-07-06 14:56:44
436
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人