- 博客(296)
- 资源 (3)
- 收藏
- 关注
原创 推荐一个Java全能学习+面试指南的站点,yyds
从这出的docsify部署,再到用vuepress部署,然后再使用一些主题reco,最后到现在的主题hope,折腾路上真的很难,有时候没解决,查各种也没查到解决办法,好之,结果还是不错的,达到了自己理想的效果,后续也会持续不断完善自己的网站!另外,最近创建了一个编程资料共享群,不定期分享最新资料,有需要的朋友可以扫码进群xiaobear_docsify地址:https://yhx1001.github.io/xiaobear_docsify/#/部分内容有密码,公众号回复密码。
2023-07-14 16:18:05 244 1
原创 毕业设计目前现状及避坑指南
这篇文章其实在前天的时候就想写了,但是想了想又没写了,但今天已经有好几个同学来找我说这个事情,所以决定写下这篇毕业设计避坑指南吧。自己接触接私单也差不多两年时间了,也接触了很多同学和商家,就聊聊这个行业目前的情况哈。
2024-04-23 01:53:40 355 2
原创 面试官:HashMap为什么是线程不安全的?
今天我们主要讲解为什么 HashMap 是线程不安全的?而对于 HashMap,相信你一定并不陌生,HashMap 是我们平时工作和学习中用得非常非常多的一个容器,也是 Map 最主要的实现类之一,但是它自身并不具备线程安全的特点,可以从多种情况中体现出来,下面我们就对此进行具体的分析。
2024-04-05 20:02:55 128
原创 ConcurrentHashMap在Java 7和Java 8中有何不同?
在 Java 8 中,对于 ConcurrentHashMap 这个常用的工具类进行了很大的升级,对比之前 Java 7 版本在诸多方面都进行了调整和变化。不过,在 Java 7 中的 Segment 的设计思想依然具有参考和学习的价值,所以在很多情况下面试官都会问你:ConcurrentHashMap 在 Java 7 和 Java 8 中的结构分别是什么?它们有什么相同点和不同点?所以本课时就对 ConcurrentHashMap 在这两个版本的特点和性质进行对比和介绍。
2024-04-04 03:45:50 57
原创 数据库分析查询语句Explain详解,一步一步带你分析字段的含义
EXPLAIN 关键字可以模拟优化器执行 SQL 语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字 ,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条 SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中官网:https://dev.mysql.com/doc/refman/5.7/en/explain-extended.html。
2024-03-31 11:43:45 51
原创 【毕设项目推荐】SpringBoot的图书馆管理系统
借阅记录中可以进行借阅者,书籍详情,未归还书籍的查询;(4)一般用户,只能查询图书,并进行借书操作(提出借书申请),每个用户最多借阅8本,即当目前借书已经是8本,则不能再借书了,只有还书后,才可以再借阅。(3)管理员可以实现对注册用户的管理(查询、删除、密码修改)、用户的借书申请的确定和还书操作,并实现对图书的创建、查询、修改和删除等有关的操作。登录后,系统会根据用户ID自动判别用户类别,如果是r开头的,为读者登录,如果是m开头的则为管理员。除了个人信息更改,还包括用户管理,书籍管理,借阅管理三大模块。
2024-03-28 12:42:49 569
原创 分享SQL的7种进阶用法
在MySQL中ORDER BY排序除了可以用ASC和DESC之外,还可以使用自定义排序方式来实现。('咱们结婚吧', '靳东', 43.2, '2013-04-12'),('四大名捕', '刘亦菲', 62.5, '2013-12-21'),('猎场', '靳东', 68.5, '2017-11-03'),('芳华', '范冰冰', 55.0, '2017-09-15'),('功夫瑜伽', '成龙', 91.8, '2017-01-28'),
2024-03-18 10:41:33 398
原创 案例分析:分库分表后,我的应用崩溃了
今天以 Spring Boot 项目常见的分层结构,介绍了每一层可能会引起的内存问题,我们把结论归结为一点,那就是保持输入集或者结果集的简洁。一次性获取非常多的数据,会让中间过程变得非常不可控。最后,我们分析了一个驱动层的数据库中间件,以及对内存使用的一些问题。很多时候我们把这些耗时又耗内存的操作,写了非常复杂的 SQL 语句,然后扔给最底层的数据库去解决,这种情况大多数认为换汤不换药,不过是把具体的问题冲突,转移到另一个场景而已。
2024-03-14 00:00:55 786 1
原创 MySQL大表优化方案(应该是最完整最全的了)
水平拆分是通过某种策略将数据分片来存储,分库内分表和分库两部分,每片数据会分散到不同的MySQL表或库,达到分布式的效果,能够支持非常大的数据量。前面的表分区本质上也是一种特殊的库内分表库内分表,仅仅是单纯的解决了单一表数据过大的问题,由于没有把表的数据分布到不同的机器上,因此对于减轻MySQL服务器的压力来说,并没有太大的作用,大家还是竞争同一个物理机上的IO、CPU、网络,这个就要通过分库来解决前面垂直拆分的用户表如果进行水平拆分,结果是:实际情况中往往会是垂直拆分和水平拆分的结合,即将。
2024-03-13 23:20:59 1382
原创 遇到问题不要慌,轻松搞定内存泄露
今天介绍了很多 Linux 命令,用于定位分析问题,所有的命令都是可以实际操作的,能够让你详细地把握整个 JVM 乃至操作系统的运行状况。其中,jinfo、jstat、jstack、jhsdb(jmap)等是经常被使用的一些工具,尤其是 jmap,在分析处理内存泄漏问题的时候,是必须的。同时还介绍了保留现场的工具和辅助分析的方法论,遇到问题不要慌,记得隔离保存现场。接下来我们看了一个实际的例子,由于 SWAP 的启用造成的服务卡顿。SWAP 会引起很多问题,在高并发服务中一般是关掉它。
2024-01-16 22:17:06 832
原创 Synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别?
今天讲了 synchronized 和 ReentrantLock 的实现过程,然后讲了 synchronized 和 ReentrantLock 的区别,最后通过源码的方式讲了 ReentrantLock 加锁和解锁的执行流程。接着又讲了 JDK 1.6 中的锁优化,包括自适应式自旋锁的实现过程,以及 synchronized 的三种锁状态和锁升级的执行流程。synchronized 刚开始为偏向锁,随着锁竞争越来越激烈,会升级为轻量级锁和重量级锁。如果大多数锁被不同的线程所争抢就不建议使用偏向锁了。
2024-01-16 21:58:20 970
原创 【搜索引擎设计:信息搜索怎么避免大海捞针?
PageRank 算法我们现在看起来平平无奇,但是正是这个算法造就了 Google 近 2 万亿美元的商业帝国。在 Google 之前,Yahoo 已经是互联网最大的搜索引擎公司。按照一般的商业规律,如果一个创新公司不能带来十倍的效率或者体验提升,就根本没有机会挑战现有的巨头。而 Google 刚一出现,就给 Yahoo 和旧有的搜索引擎世界带来摧枯拉朽的扫荡,用户体验的提升不止十倍,这其中的秘诀正是 PageRank。
2024-01-13 20:52:15 1324
原创 Java并查集设计以及路径压缩实现
并查集是一种树型的数据结构 ,并查集可以高效地进行如下操作:- 查询元素p和元素q是否属于同一组- 合并元素p和元素q所在的组
2024-01-13 20:10:20 1052
原创 B-树和B+树的特性,以及B+树在数据库中的应用
由于B+树在非叶子结点上不包含真正的数据,只当做索引使用,因此在内存相同的情况下,能够存放更多的key。由于B树的每一个节点都包含key和value,因此我们根据key查找value时,只需要找到key所在的位置,就能找到value,但B+树只有叶子结点存储数据,索引每一次查找,都必须一次一次,一直找到树的最大深度处,也就是叶子结点的深度,才能找到value。在实际应用中B树的阶数一般都比较大(通常大于100),所以,即使存储大量的数据,B树的高度仍然比较小,这样在某些应用场景下,就可以体现出它的优势。
2024-01-11 12:59:17 1148
原创 Java平衡树--红黑树,如何平衡化以及操作实现
红链接均为左连接没有任何一个节点同时和两条红链接相连该树是完美黑色平衡的,即是任意空链接到根节点的路径上的黑链接数量相同。
2024-01-11 12:57:15 1174
原创 Java平衡树--查找树的新建与树的实现
一棵2-3查找树要么为空,要么满足满足下面两个要求:2-结点含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。3-结点含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。
2024-01-10 13:23:31 882
原创 详解 ThreadPoolExecutor 的参数含义及源码执行流程?
new RejectedExecutionHandler() { // 添加自定义拒绝策略@Override// 业务处理方法System.out.println("执行自定义拒绝策略");});i < 6;i++) {});执行自定义拒绝策略可以看出线程池执行了自定义的拒绝策略,我们可以在 rejectedExecution 中添加自己业务处理的代码。
2024-01-10 13:21:04 1048
原创 Java二叉树的遍历以及最大深度问题
树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。树是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。每个结点有零个或多个子结点;没有父结点的结点为根结点;每一个非根结点只有一个父结点;每个结点及其后代结点整体上可以看做是一棵树,称为当前结点的父结点的一个子树;
2024-01-07 23:01:00 1078
原创 数据结构与算法——符号表API设计及有序符号表设计
符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据,我们可以根据键来查找对应的值。符号表中,键具有唯一性。
2024-01-01 20:47:49 401
原创 Zookeeper注册中心实战
Spring Cloud Zookeeper通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯用法,为 Spring Boot 应用程序提供通过一些简单的注释,您可以快速启用和配置应用程序内的常见模式,并使用 Zookeeper 构建大型分布式系统。提供的模式包括服务发现和分布式配置。官方地址:https://spring.io/projects/spring-cloud-zookeeper#lea。
2024-01-01 20:42:52 1549
原创 线性表之队列API设计思路
Java学习手册+面试指南:https://javaxiaobear.cn队列是一种基于先进先出(FIFO)的数据结构,是一种只能在一端进行插入,在另一端进行删除操作的特殊线性表,它按照先进先出的原则存储数据,先进入的数据,在读取数据时先读被读出来。
2023-12-29 11:31:51 380
原创 线性表:顺序表的实现以及遍历扩容
Java学习手册+面试指南:https://javaxiaobear.cn顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素、使得线性表中再逻辑结构上响铃的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。
2023-12-29 10:53:18 937
原创 栈:从简单栈到解决经典栈问题
Java学习手册+面试指南:https://javaxiaobear.cn栈是一种基于先进后出(FILO)的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。我们称数据进入到栈的动作为压栈,数据从栈中出去的动作为弹栈。
2023-12-29 10:49:18 352
原创 链表:如何利用“假头,新指针,双指针”解决链表问题
链表是一种线性数据结构,其中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只管的表示数据元素的逻辑顺序,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成。
2023-12-28 22:29:50 859
原创 Java 17 变量与运算符最全解读2w字
Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。定义long类型的变量,赋值时需要以"l"或"L"作为后缀。Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long。Java的整型常量默认为`` int ``型。
2023-12-28 13:53:42 933
原创 Java数据结构与算法初认识以及带你如何进行算法分析
算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。简单的说:根据一定的条件,对一些数据进行计算,得到需要的结果。
2023-12-27 11:07:52 759
原创 如何手写一个消息队列和延迟消息队列?
我们可使用 Queue 来实现消息队列,Queue 大体可分为以下三类:**双端队列(Deque)**是 Queue 的子类也是 Queue 的补充类,头部和尾部都支持元素插入和获取;阻塞队列指的是在元素操作时(添加或删除),如果没有成功,会阻塞等待执行,比如当添加元素时,如果队列元素已满,队列则会阻塞等待直到有空位时再插入;非阻塞队列,和阻塞队列相反,它会直接返回操作的结果,而非阻塞等待操作,双端队列也属于非阻塞队列。
2023-12-27 10:58:31 454
原创 Zookeeper在分布式命名服务中的实践
Java学习+面试指南:https://javaxiaobear.cn命名服务是为系统中的资源提供标识能力。ZooKeeper的命名服务主要是利用ZooKeeper节点的树形分层结构和子节点的顺序维护能力,来为分布式系统中的资源命名。哪些应用场景需要用到分布式命名服务呢?典型的有:分布式API目录分布式节点命名分布式ID生成器。
2023-12-26 17:18:25 1191 2
原创 Zookeeper应用场景有哪些?
在通常的Java开发编程中,有两种常⻅的⽅式可以⽤来定义锁,分别是synchronized机制和JDK5提供的ReentrantLock。
2023-12-26 17:15:52 1112
原创 String 的特点是什么?它有哪些重要的方法?
我们从 String 的源码入手,重点讲了 String 的构造方法、equals() 方法和 compareTo() 方法,其中 equals() 重写了 Object 的 equals() 方法,把引用对比改成了字符串值对比,也介绍了 final 修饰 String 的好处,可以提高效率和增强安全性,同时我们还介绍了 String 和 JVM 的一些执行细节。。
2023-12-25 23:55:22 1037
原创 Zookeeper整合Java实战,不同客户端使用汇总
Java学习+面试指南:https://javaxiaobear.cnZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有:ZooKeeper官方的Java客户端API。第三方的Java客户端API,比如Curator。ZooKeeper官方的客户端API提供了基本的操作。例如,创建会话、创建节点、读取节点、更新数据、删除节点和检查节点是否存在等。
2023-12-25 17:17:45 2522
《小熊学Java 面试手册》v1.0.pdf
2023-10-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人