自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

微信公众号: 后端码匠

但行好事 莫問前程

  • 博客(501)
  • 资源 (10)
  • 收藏
  • 关注

原创 【Java】线程池八股文一

作为 JUC 包下的门面担当,线程池是名副其实的 JUC 一哥,不了解线程池,那说明你对 JUC 包其他工具也了解的不咋样吧,对 JUC 没深入研究过,那就是没掌握到 Java 的精髓,给面试官这样一个印象,那结果可想而知了。可以这样说:计算机发展到现在,摩尔定律在现有工艺水平下已经遇到难易突破的物理瓶颈,通过多核 CPU 并行计算来提升服务器的性能已经成为主流,随之出现了多线程技术。

2023-09-12 13:35:12 68

转载 【Spring Boot】实现接口幂等性的 4 种方案

在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。这里的副作用是不会对结果产生破坏或者产生不可预料的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。幂等性是开发当中很常见也很重要的一个需求,尤其是支付、订单等与金钱挂钩的服务,保证接口幂等性尤其重要。对于下单等存在唯一主键的,可以使用“唯一主键方案”的方式实现;

2023-07-04 09:03:07 166

原创 【MySQL】count()查询性能梳理

使用的数据库是MySQL8,使用的存储引擎是Innodb。通常情况下,分页接口一般会查询两次数据库,第一次是获取具体数据,第二次是获取总的记录行数,然后把结果整合之后,再返回。它没有性能问题。却存在性能差的问题。为什么会出现这种情况呢?

2023-07-03 11:26:49 493 2

原创 【Redis】数据被删除,内存占用还这么大?

内存碎片会造成明明有内存空间空闲,可是却无法存储数据。举个例子,你跟漂亮小姐姐去电影院看电影,肯定想连在一块。假设现在有 8 个座位,已经卖出了 4 张票,还有 4 张可以买。可是好巧不巧,买票的人很奇葩,分别间隔一个座位买票。即使还有 4 个座位空闲,可是你却买不到两个座位连在一块的票,厚礼蟹!如果你发现明明 Redis 存储数据的内存占用远小于操作系统分配给 Redis 的内存,而又无法保存数据,那可能出现大量内存碎片了。

2023-07-03 11:12:05 122

原创 【Java】Spring Boot配置动态数据源

通过实现Spring提供的AbstractRoutingDataSource类,可以实现自己的数据源选择逻辑,从而可以实现数据源的动态切换。1.2 创建动态数据源配置类跟配置静态多数据源一样,需要手动配置下面的三个 Bean,只不过DynamicDataSource类的targetDataSources是空的。1.3 创建动态数据源服务类这是一个比较核心的工具类,提供了一些静态方法从而可以实现一些功能,包括:、、、。在 DynamicDataSource 类中,就是调用了 DynamicData

2023-06-30 09:50:51 1403 1

原创 【CentOS】VirtualBox yum 无法使用

执行修改命令,ifcfg-xxx 后面的xxx就是上面的网卡信息。修改文件,把ONBOOT=no,改为ONBOOT=yes。进入系统,修改网卡信息。然后就可以正常的联网了。

2023-06-30 09:39:59 584

原创 【Java】文本数据的Gzip压缩

在Java中,可以使用Gzip压缩算法对数据进行压缩和解压缩。Gzip算法是一种常见的无损压缩算法,可以将数据压缩为较小的字节数,从而节省网络带宽和存储空间等资源。

2023-05-31 11:56:56 1028 1

原创 Redis性能瓶颈:如何优化大key问题?

Redis大key问题是指在Redis中出现了一个或多个非常大的key,这些key的大小超过了Redis所能处理的最大值,从而导致Redis性能下降甚至宕机的现象。通常情况下,Redis的key大小应该尽量保持在较小的范围内,因为Redis是一个基于内存的数据结构存储系统,大key会占用大量内存资源,导致Redis的性能受到严重影响。多大的数据量才算是大key,具体取决于Redis服务器的内存大小、可用内存空间、系统负载等因素。

2023-05-24 10:18:57 460

原创 【Java】Mybatis Plus LambdaQueryWrapper梳理

为了更方便的实现动态 SQL,Mybatis Plus 在其基础上扩展了 LambdaQueryWrapper,LambdaQueryWrapper 提供了更加简便的查询语法,同时也避免了 SQL 注入的风险。LambdaQueryWrapper 实现了的全部功能,并提供了基于Lambda表达式的查询方式,使得查询语法更加优雅。使用 LambdaQueryWrapper,可以方便的实现各种查询条件的拼接,如whereandorinlikebetween等条件。

2023-03-17 09:52:31 2363

原创 【MySQL】substring_index 函数详解

截取字符串第个分隔符之前的字符串。如果为正,则从左边开始截取。如果为负,则从右边开始截取。此函数为MaxCompute 2.0扩展函数。返回STRING类型。如果任一输入参数值为NULL,返回NULL。假设有三个 IP:127.0.0.1、192.128.0.15、255.255.255.255,要分别取每一个号段的值并返回。可以说是一个面试题,解法有多种,那么如果用要如何编写呢?

2023-03-14 09:30:03 903

原创 【Java】@EnableAsync@Async使用总结

在使用多线程的时候,往往需要继承Thread类,或者,如果要使用到线程池,还需要来创建Executors,在Spring中已经做了很好的支持。只要要就可以使用多线程。使用@Async就可以定义一个线程任务。通过Spring提供的就可以使用线程池。默认情况下,Spring将搜索相关的线程池定义:要么在上下文中搜索唯一的,要么搜索名为“”的。如果两者都无法解析,则将使用来处理异步方法调用。

2023-03-13 12:49:01 665 1

原创 【Java】Spring Boot整合WebSocket

WebSocket是一种协议,用于实现客户端和服务器之间的双向通信。它可以在单个TCP连接上提供全双工通信,避免了HTTP协议中的请求-响应模式,从而实现更高效的数据交换。WebSocket协议最初由HTML5规范提出,现在已成为一种通用的网络协议,被广泛用于Web应用程序中。WebSocket协议在Web应用程序中广泛使用,例如实现实时通信、在线游戏、即时消息等功能。

2023-03-05 17:48:09 1754 4

原创 【Docker】Hyper-V VirtualBox冲突

Windows 操作系统中的 Hyper-V 技术与其他虚拟化技术(如 VirtualBox、VMware Workstation)有冲突,无法同时运行。这是由于这些虚拟化技术需要使用 CPU 的虚拟化扩展功能,而 Hyper-V 技术也需要使用相同的扩展功能。在 Windows 10 中,如果启用了 Hyper-V,那么其他虚拟化技术就不能使用 CPU 的虚拟化扩展功能。

2023-03-02 13:19:07 959

原创 【Java】Spring Boot 2 集成 Nacos

采用自定义的命名空间进行测试,新建命名空间。这里我们已经创建完了,就截一张编辑图片.,nacos-discovery版本。,nacos-config 版本。本次Springboot版本。测试可以实现动态的配置变更.测试可以实现动态的配置变更.

2023-02-26 11:00:38 831

原创 【Java】“com.alibaba.fastjson.JSONObject cannot be cast to“报错问题

通过 debug 断点可以看到,这里拿到虽然是 List,但是里面的对象还是一个 JSONObject,并不是我们需要的 DTO 类,所有导致了后面的报错。查到问题根源,只要把这里的对象转化为我们的 DTO 类就行了,就可以避免报错。

2023-02-24 09:33:43 3600

原创 【LeetCode】字符串变形

请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。

2023-01-31 17:39:49 112

原创 【设计模式】单例模式

单例模式(Singleton Pattern):确保一个类有且只有一个实例,并提供一个全局访问点。在开发中,很多时候有一些对象其实我们缓存(cache)默认设置日志对象等等,这个时候把它设计为单例模式是最好的选择。Java中单例模式是一种广泛使用的设计模式,单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间(比如spring管理的无状态bean);还由于操作多个实例导致的逻辑错误。

2023-01-20 10:42:18 1568 1

原创 【Java】阻塞队列

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这2个附加的操作支持阻塞的插入和移除方法。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。

2023-01-09 10:51:01 375

原创 【Kafka】八股文梳理

可以通过实现 org.apache.kafka.clients.consumer.internals.PartitionAssignor 接口来实现。

2023-01-08 21:48:36 4720 4

原创 【MySQL】为什么使用B+树做索引

本篇文从二叉查找树,详细说明了为什么MySQL用B+树作为数据的索引,以及在innodb中数据库如何通过B+树索引来存储数据以及查找数据。一定要记住这句话:数据即索引,索引即数据。

2023-01-08 21:47:00 826 2

原创 【Java】生产者消费者模型

生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。

2023-01-08 20:56:39 420

原创 【Java】包装类型与引用类型的使用场景

Java的基本数据类型总共有种,包括3类:,,,其中数值型:字符型:布尔型:又有种包装类型:从上面可以看到除了 char 和i nt 其它的包装类型名称和对应的基本类型一样只是首字母大写了。另外假设我们要定义一个变量表示分数,如果用基本类型表示的话:int score;默认值为零,如果想表示分数为空也就是没有参加考试就没法表现了因为值类型是无法赋空值的,如果使用包装类型Integer score,就可以表示这种情况,因为Integer的默认值为空。假设有这样一个场景,接收到一个String型的数据想把它

2023-01-07 21:17:27 899

原创 【Kafka】Java实现数据的生产和消费

Kafka 是由Linkedin公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的。

2023-01-05 20:40:17 2502

原创 【Docker】搭建Zookeeper集群

默认端口是8080。ZOO_MY_ID 和 ZOO_SERVERS 是搭建 Zookeeper 集群需要设置的两个环境变量, 其中 ZOO_MY_ID 表示 Zookeeper 服务的 id, 它是1-255 之间的整数, 必须在集群中唯一。默认是 no,表示不重启。上述配置将以副本模式启动 Zookeeper 3.5.8,同时会告诉 Docker 运行三个 Zookeeper 容器:zoo1、zoo2、zoo3,并分别将本地的 2181, 2182, 2183 端口绑定到对应的容器的 2181 端口上。

2023-01-05 14:11:27 1273

原创 【Windows】安装 netcat(nc)

解压netcat-win32-1.12文件夹。第一个窗口输入 第二个窗口就会接收。

2023-01-05 11:10:26 440

原创 【Java】原子类

保证线程安全是 Java 并发编程必须要解决的重要问题。Java 从原子性、可见性、有序性这三大特性入手,确保多线程的数据一致性。

2023-01-04 15:16:03 263

原创 【Java】JMM梳理

在开发时会经常遇到这样的场景,开发完成的代码在自己的运行环境上表现良好,但是当把它放在其它硬件平台上时,就会出现各种各样的错误,这是因为在不同的硬件生产商和不同的操作系统下,,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。为了解决这个问题,Java 内存模型(JMM)的概念就被提出来了,它的出现,让一套代码在不同平台下能到达相同的访问结果,,使得 Java 程序能够。

2023-01-04 12:59:43 226

原创 【Java】线程池梳理

线程池:本质上是一种对象池,用于管理线程资源。在任务执行前,需要从线程池中拿出线程来执行。在任务执行完成之后,需要把线程放回线程池。通过线程的这种反复利用机制,可以有效地避免直接创建线程所带来的坏处。优点:1、降低资源的消耗。线程本身是一种资源,创建和销毁线程会有CPU开销;创建的线程也会占用一定的内存;2、提高任务执行的响应速度。任务执行时,可以不必等到线程创建完之后再执行;3、提高线程的可管理性。线程不能无限制地创建,需要进行统一的分配、调优和监控。

2023-01-02 12:55:45 689

原创 【Java】PriorityQueue梳理

PriorityQueue是优先队列的意思。优先队列的作用是能保证每次取出的元素都是队列中权值最小的。这里牵涉到了大小关系,元素大小的评判可以通过元素本身的自然顺序(natural ordering),也可以通过构造时传入的比较器。PriorityQueue实现了Queue接口,最大的特点是存取具有优先级,就是根据元素的顺序来决定;PriorityQueue是一个无界的容器;PriorityQueue底层是基于堆实现的;不允许放入null元素;PriorityQueue不是线程安全的;

2023-01-01 17:44:35 565

原创 【C++】初级面试整理

宏定义没有类型检查和安全检查,所以会导致边际效应,出现不可预知的错误;enum在编译阶段进行类型检查,但是只能进行整型的定义;宏定义仅仅是替换和展开,并不进行内存的分配;enum常量存储在内存数据段的静态存储区;define是在预处理阶段对所定义的常量进行替换展开;enum是程序运行时起作用;枚举常量具有类型,但宏没有类型;动态分配内存所开辟的空间,在使用完毕后未释放,导致一直占据该内存,即为内存泄漏。谁开辟谁释放;使用智能指针;指针指向新地址时参考规则;

2022-12-29 17:08:03 434 1

原创 【C++】const关键字

C++定义常量有两种方式

2022-12-28 22:38:15 295

原创 【LeetCode】2099. 找到和最大的长度为 K 的子序列

给你一个整数数组 nums 和一个整数 k。你需要找到 nums 中长度为 k 的 子序列 ,且这个子序列的 和最大。请你返回 任意 一个长度为 k 的整数子序列。子序列 定义为从一个数组里删除一些元素后,不改变剩下元素的顺序得到的数组。

2022-12-24 22:37:47 307

原创 【Redis】简单梳理

官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)。1、这里一直在强调的单线程,只是在处理网络请求的时候只有一个线程来处理,一个正式的Redis Server运行的时候肯定是不止一个线程的,这里需要大家明确的注意一下!例如Redis进行持久化的时候会以子进程或者子线程的方式执行(具体是子线程还是子进程待读者深入研究)

2022-12-24 19:55:19 77

原创 【LeetCode】415. 字符串相加(面试题)

上来自我介绍完就做题了。

2022-12-22 16:23:33 165 1

原创 【LeetCode】119. 杨辉三角 II

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。

2022-12-21 16:39:27 108

原创 【LeetCode】118. 杨辉三角

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。

2022-12-21 15:44:52 139 1

原创 【Java】多叉树的遍历

- 递归。- 广度优先,需要借助队列。- 深度优先,需要借助栈。

2022-12-20 14:08:40 828

原创 【C++】unordered_map梳理

unordered_map 容器,直译过来就是"无序 map 容器"的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。头文件。

2022-12-17 17:12:21 412

原创 【LeetCode】645. 错误的集合

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

2022-12-16 13:41:37 63

原创 【LeetCode】628. 三个数的最大乘积

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

2022-12-09 13:24:20 140

计算机-职业规划方案

九年义务教育,我们在儿童的懵懂、自由的嬉戏和父母的纵容中,快乐的度过;三年的高中生活,我们在学生们逐渐激烈的竞争、老师日益严肃的面孔和漫天飞舞的试卷中,艰难的熬过;初入大学的第一年,我们在脱离了父母与老师的牵制,怀着对大学生活的陌生与好奇,自由的飞过了。大学的第二年,当我们面对众多的课程扑溯迷离时,在迷茫中悄悄地溜过;大学第三年……开始对未来的生活产生了一点点茫然,大学五年,难道就要这样混混噩噩地度过么?当然不!成功往往是留给有计划、有目标的人!

2020-12-05

jQuery多步骤注册表单页面.rar

jQuery多步骤注册表单页面.rar:仅供大家借鉴,欢迎下载,希望下载的你能够用得上,希望能够帮得到你。

2020-11-27

web期末实训模板+报告

web期末实训模板+报告:大学的时候做的web期末实训,已上传仅仅供大家借鉴,希望下载的人能够用得到,希望能够帮得到你。html+css+js

2020-11-27

手机端购物商城秒杀app前端模板

手机端购物商城秒杀app前端模板:一整套商城官网模板,包含(登录页面、商城首页、商品分类、购物车、结算页面、个人中心等等。

2020-11-27

JavaSE期末复习知识点

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。本文件为SE期末复习资料

2020-08-03

网络规划师-复习资料

网络规划师就是网络规划设计师,属“全国计算机技术与软件专业技术资格(水平)考试”的高级考试,适用于计算机类所有专业。这个分级要求考生能根据系统需求规格说明书,完成逻辑结构设计、物理结构设计,选用适宜的网络设备,按照标准规范编写系统设计文档及项目开发计划。能指导制订用户的数据和网络战略规划,能指导网络工程师进行系统建设实施等。

2020-08-02

cmder_mini.zip

cmder简化版-精简版, 其实cmder是Windows下cmd终端最理想的替代品,它支持了大部分的Linux命令。支持ssh连接linux,使用起来非常方便。比起cmd、powershell、conEmu,其界面美观简洁,功能强大。

2020-08-02

2012练习册C答案.doc

答案和题,对入门c语言小白很有用处,避免采坑,做完题及时对照答案。

2019-10-08

Postman-win64-7.0.5

接口测试神器,Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。

2019-03-13

空空如也

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

TA关注的人

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