- 博客(33)
- 收藏
- 关注
原创 MySQL数据类型大全
在MySQL中,选择正确的数据类型,对于性能至关重要。一般应该遵循下面两步:(1)确定合适的大类型:数字、字符串、时间、二进制;(2)确定具体的类型:有无符号、取值范围、变长定长等。在MySQL数据类型设置方面,尽量用更小的数据类型,因为它们通常有更好的性能,花费更少的硬件资源。并且,尽量把字段定义为NOT NULL,避免使用NULL。
2024-04-24 22:16:06 605
原创 MySQL之explain详解
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。
2024-04-23 21:33:44 1642
原创 MYSQL之锁机制
MySQL的锁机制是数据库中用于管理和控制对共享资源并发访问的一种机制。在多用户环境下,不同的用户可能同时对同一数据进行读写操作,如果没有适当的锁机制,就可能出现数据不一致或脏读等问题。
2024-04-23 20:55:06 1073
原创 线程池中常见的几大问题
1、一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务。阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使得线程进入wait状态,释放cpu资源。并且我们的阻塞队列可以自己阻塞和唤醒线程,无需额外的资源去维护核心线程的存活。这个其实回到了我们线程池设计的初衷,在创建线程时需要获取全局锁,会阻塞其他线程,影响整体效率。
2024-04-21 22:27:27 632
原创 大白话之ThreadLocal
ThreadLocal是Java中所提供的线程本地存储机制,可以利用该机制将数据缓存在某个线程内部,该线程可以在任意时刻、任意方法中获取缓存的数据
2024-04-21 22:12:10 329
原创 好用且免费的无需搭梯子的长文本场景对话大模型
这款ai工具最近爆火,Kimi支持200万字无损上下文,在长上下文窗口技术上再次取得突破,引燃人工智能领域新一轮投资热情。我也是支持国货,抱着试一试的心态使用,确实不错,China🐂🍺
2024-04-17 19:55:31 234
原创 聊聊自己对IOC和AOP的理解
讲到IOC,其实也就是涉及到三个概念,ioc容器,控制反转,依赖注入嘛,ioc容器就可以看作是一个map,里面存贮了各种对象,在项目启动时,加载bean的原料信息放入到map中。控制反转呢就是说一个对象A依赖对象B,再没有IOC容器之前我们需要去new它,而有了IOC容器之后,IOC容器会主动创建对象B注入到对象A需要的地方,也就是说对象A获得依赖对象B的过程由主动行为变为了被动行为控制权颠倒过来了。依赖注入就是将对象放入所需属性的地方的过程。
2024-04-15 21:31:29 487 1
原创 对称加密和非对称加密
在网络传递数据的时候,为了防止数据被篡改,我们会选择对数据进行加密,数据加密分为对称加密和非对称加密。其中RSA和AES,TLS等加密算法是比较常用的。
2024-04-15 17:34:30 286 1
原创 深入浅出的了解我们的ConcurrentHashMap
Java7 中 ConcurrentHashMap 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 Segment 都是一个类似 HashMap 数组的结构,它可以扩容,它的冲突会转化为链表。但是 Segment 的个数一但初始化就不能改变。Java8 中的 ConcurrentHashMap 使用的 Synchronized 锁加 CAS 的机制。结构也由 Java7 中的Segment数组 +HashEntry数组 + 链表进化成了。
2024-04-14 20:59:00 788 1
原创 深入浅出的了解HashMap
HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。
2024-04-14 20:57:53 884 1
原创 CompletableFuture
CompletableFuture是基于Future模式的增强版,它不仅提供了Future的基本功能,还引入了函数式编程的特性,使得异步任务的编排和组合变得更加简单。CompletableFuture实现了Future和CompletionStage接口,其中CompletionStage接口用于描述异步计算的阶段,可以将多个计算步骤组合起来形成异步计算的流水线。
2024-04-13 21:26:02 619
原创 手写spring IOC底层源码来模拟spring如何利用多级缓存解决循环依赖的问题
在文章开始之前,先来看一张spring IOC加载过程的脑图吧。
2024-04-13 15:06:13 776
原创 深入浅出的理解ArrayList的扩容机制!
为什么会出现这个结果呢,其实通过源码分析就可以知道无论怎么初始化elementData都会走到这一步,但是通过指定初始容量的构造方式不会进入到这个if判断中,会直接调用ensureExplicitCapacity这个方法,将1的值传入,而使用无参构造函数会将默认的最小容量(10)传入,虽然这两种方式都会触发我们的扩容机制,但是扩容的大小却不同。要想真正理解ArrayList的扩容机制,肯定是需要从它的源码入手的,接下来让我们一起来看看吧!从上面的源码,我们可以知道,当我们调用无参构造函数时,我们的。
2024-04-11 19:15:04 1010
原创 length, length(), 和 size()的区别
length, length(), 和 size() 都是与集合或数组相关的术语,但它们在 Java 中有不同的含义和用途。
2024-04-10 22:12:24 295 1
原创 =、!=,is和<=>的区别
zuo作用相等,<=>与=作用相等,但是"<>""<=>"只适用于mysql,而"=""!="可以适用于其他数据库。3.<=> 既能判断null 又能判断 基本数据类型,但是<=>只能代替is,并不能代替is not。该表的每一行表示一个客户的 id、姓名以及推荐他们的客户的 id。今天在写Leecode面试题时,遇到一道有意思题!这是一道很简单的小题,不过我却踩坑了!在 SQL 中,id 是该表的主键列。= 只能判断基本数据类型。原因很简单,在我的影响里。很显然答案是错误的!
2024-02-28 21:16:34 328
原创 第三方登入保姆级教程
在项目中我们经常引入第三方登入,但是对于QQ、微信、微博等的网站接入都需要身份认证,过程比较繁琐,因此我找到了一种快捷高效易上手的免签登录方案---水滴聚合!!让我们一起来看看吧
2024-02-28 11:30:05 1546 5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人