自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高级查询与优化:提升查询性能

高级查询与优化是数据库领域中的核心技能。通过掌握复杂查询语句编写、子查询与嵌套查询、连接与联合查询、查询优化与性能调优以及查询执行计划分析等内容,我们将能够编写高效且优化的查询语句,并提升数据库查询性能。在实践中,不断优化和调整查询语句,结合数据库性能监测和调试工具,将使查询性能达到最佳状态。

2023-05-25 17:26:39 208

原创 Redis变慢解决办法梳理

6、内存碎片整理,如果内存增长很快,4.0之后开启了内存碎片整理但是打开后也有可能影响性能,这个也是主线程整理碎片,可以配置超过多少M在开启碎片整理,配置合理阈值等。4、淘汰机制,内存达到maxmemory,导致写慢,需要先淘汰再写,所以也慢了,不要有bigKey选择合适淘汰策略,一般用LRU.也可以痴爱分实列分摊压力。有关,如果某一个时间有大量过期,过期也是主线程操作,这个也会影响客户端的响应,可以使用命令查看,可以把过期时间打散,如果4.0以上版本可以把内存放在后台。8、监控,监控不能掉以轻心,

2023-05-22 14:19:28 818

原创 把接口返回的Json封装到一个Page分页里

调用第三方接口返回的是一个list,没有给分页,但是我们业务需要分页展示,所以就需要把从接口接收到的数据封装到一个Page里边;前端只需要传pageNum(页码)跟 pageSize(每页条数)这2个参数就可以返回对应的分页数据。

2023-05-18 19:55:41 235

原创 LayUI、Table组件的一些常见用法

Layui 是一款轻量级的前端 UI 框架,其中的 layui.table 组件是用来展示表格数据的组件。下面是 layui.table 的用法示例。

2023-05-18 19:50:27 323

原创 多线程面试59题(含答案)

对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。虽然重排序优化了性能,但也是会遵守一些规则的,并不能随便乱排序,一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享。假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,线程可以防止这个问题,多条线程同时运行,哪怕一条线程的代码执行读取数据阻。地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程。法进行等待的线程等待目标线程运行结束而唤醒,一旦通过相关事件唤醒线程,线。

2023-05-18 11:17:12 345

原创 线程安全与不安全的集合

Java集合框架主要包括Collection和Map两种类型。其中Collection又有3种子类型,分别是List、Set、Queue。Map中存储的主要是键值对映射。 规则集Set中存储的是不重复的元素,线性表中存储可以包括重复元素,Queue队列描述的是先进先出的数据结构,可以用LinkedList来实现队列。 效率上,规则集比线性表更高效。 ArrayList主要是用数组来存储元素,LinkedList主要是用链表来存储元素,HashMap的底层实现主要是借助数组+链表+红黑树来实现。 Ve

2023-05-17 15:56:02 294

原创 关于yield()方法详解

线程状态处于BLOCKED或WAITING或TIME_WAITING这三种统称为堵塞状态。作用:提出释放CPU时间片的请求。不会释放锁,线程依然处于RUNNABLE状态。方法调用后线程只是暂时的将调度权让给别人,但立刻可以回到竞争线程锁的状态;由于这个特性,一般编程中用不到此方法,但在很多并发工具包中,,我在这篇文章里有详细解析和代码示例,这里不在赘述。状态时,线程就保留了随时被调度的权利。状态,线程不会进入堵塞状态。方法调用后线程处于阻塞状态。关于线程状态,详见文章。方法后,线程依然处于。

2023-05-17 15:24:50 931

原创 面试题分享

它通过在内部使用哈希函数和位运算,将数据以特定的方式映射到一个位向量中,并使用位向量中连续零位的数量来估算唯一元素的数量。适用于需要将消息按照一定的处理流程进行处理的场景,如日志处理、数据清洗等。传统的做法是使用基于哈希表等结构的算法来实现,但随着数据量的增长,所需的内存空间也会随之增加,从而导致内存瓶颈问题的出现。其中,uv:page_views:date 是 HyperLogLog 的 key,表示当前这一天的页面浏览量,user_id 是获取到的用户唯一标识,每个用户只会被计数一次。

2023-05-17 09:52:26 175 1

原创 JavaScript与TypeScript

如果找到直接使用 TypeScript 的资源,那也很好,但不要局限于认为需要特定于 TypeScript 的答案来解决有关如何完成运行时任务的日常问题。在它被发明的时候,它被期望用于嵌入网页的短代码片段——编写超过几十行的代码有点不寻常。这是“网络”的漫长而渐进的成长过程,从一个简单的静态页面网络开始,演化为各种丰富应用程序的平台。保持与 JavaScript 相同的运行时行为是 TypeScript 的基本承诺,因为这意味着可以轻松地在两种语言之间转换,而不必担心可能导致程序停止运行的细微差异。

2023-05-15 16:16:52 310

原创 Java反射

类加载后通过堆内存方法区的Class类型对象就能了解该类的结构信息,这个对象就像该类的一面镜子,通过这面镜子能够看到类的所有结构(无论是不是private的),所以称之为反射。如果没有父类加载器,则要么Parent是根类加载器,要么本身就是根类加载器,则跳到第4步,如果父类加载器存在,则进入第3步。某类需要被使用时,如果还未加载,系统会通过类的加载、类的连接和类的初始化三步来准备类,统称为类加载或类初始化。当前类加载器尝试寻找Class文件,如果找到则执行第6步,如果找不到则执行第7步。

2023-05-15 16:13:24 80 1

原创 JavaScript中深拷贝和浅拷贝的区别

⚠️ 需要注意的是,这些方法只能实现浅拷贝,如果原对象或数组中包含了嵌套的对象或数组,则仍然是共享引用的。在 JavaScript 中,对象和数组是引用类型,当对它们进行赋值或传参时,只是复制了一个引用,指向同一个对象或数组。如果我们想要创建一个与原对象或数组相似,但不共享引用的对象或数组,就需要使用浅拷贝(shallow copy)。如果我们想要完整地复制一个对象或数组,而不是仅仅复制引用,就需要使用深拷贝(deep copy)。// 遍历对象或数组的属性,递归调用深拷贝函数。// 判断是对象还是数组。

2023-05-15 14:53:58 95

原创 layUI弹出层中添加文本框

/ curr: 1 //重新从第 1 页开始。btn: ['确定','取消'], //按钮,title: '请输入不通过原因',

2023-05-09 12:19:24 767

原创 MySql后台线程讲解

一、Master ThreadMaster Thread具备最高的线程优先级。其内部有主循环(loop)后台循环(backgroup loop)刷新循环(flush loop)暂停循环(suspend loop)多个循环(loop)组成。Master Thread会根据数据库的状态在这些循环之间切换。Loop被称为主循环,因为大多数的操作都是在这个循环中,其中有两大部分的操作:每秒钟的操作和每10秒的操作每秒钟的操作包含以下内容:重做日志缓冲刷新到磁盘,即使这个事务还没有提交(总是)

2023-05-04 16:58:14 598

原创 java基础知识

不同类型的对象,相互之间经常有一定数量的共同点。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承,可以快速地创建新的类,可以提高代码的重用,程序的可维护性,节省大量创建新类的时间 ,提高我们的开发效率。Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。都可以包含抽象方法。

2023-04-28 10:43:49 65

原创 java使用抽象类改进面向对象编程test

System.out.println("三角形");System.out.println("圆");

2023-04-27 10:06:43 58 1

原创 java2023多线程面试题

这是一道频率出现比较高的面试题,像阿里、腾讯、京东的Java初中级工程师面试题都出现过、面试过了薪水也能拿个10K~20K,所以掌握这些基础的知识还是有必要的。执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。启动线程使用的是start方法,这样会启动一个新的线程,并执行线程的任务。类似的,无返回值的任务必须实现Runnable接口。注意:get方法是阻塞的,即:线程无返回结果,get方法会一直等待。

2023-04-27 09:55:55 810 1

原创 你真的懂Hello World怎么输出的吗?

但我想说的是,其实看源码的过程正是你学习代码的过程。你可以想想当我们的字符串为null的时候,你会发现输出的是一个字符串的null,而在源码里面正好就是这样的设计。当最小值是一次可以写入最大的长度的时候,我们直接写入最大的长度,这时候初始变量加上写入长度的时候,循环条件是成立的,同时我们也有字符串没有获取,那么将会进入下一次循环,直到b<t不成立时退出。当最小值是我们的字符串长度的时候,我们直接获取字符串的字符数组,让初始变量b加上写入的长度,这个时候我们会发现循环条件已经不成立,那么将会结束循环;

2023-04-27 09:52:30 115 1

空空如也

空空如也

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

TA关注的人

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