自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【线程池总结】

线程池是一种线程管理的机制,它可以在应用程序中重复使用固定数量的线程,以减少线程创建和销毁的开销,提高资源利用率,并且可以控制并发线程数量,防止资源耗尽和系统崩溃。在 Java 中,线程池通常使用 java.util.concurrent 包中的 ThreadPoolExecutor 类来实现。通过 ThreadPoolExecutor,你可以创建一个线程池,并指定线程池的大小、任务队列、拒绝策略等。

2024-04-24 21:45:08 570

原创 【Netty框架问题总结】

Netty 是一个基于 Java NIO 的异步事件驱动的网络应用框架,用于快速开发高性能、可维护的网络服务器和客户端。它提供了简单易用的 API,使得网络编程更加轻松。Netty 的设计重点在于提供高性能、高可靠性和灵活性,适用于各种网络应用场景,包括但不限于服务器通信、分布式系统、即时通讯等。Netty 的主要特点包括:1.异步事件驱动:Netty 使用基于事件驱动的模型,通过回调机制实现非阻塞式的网络通信,提高了系统的并发性能。

2024-04-24 12:54:20 846

原创 【JVM常见问题总结】

Java虚拟机(JVM)是Java程序运行的核心组件之一,它负责将Java字节码(Java编译后的中间代码)解释或编译为特定平台上的机器码,并在运行时提供内存管理、垃圾回收、线程管理等功能。以下是JVM的主要特点和组成部分:1.字节码执行环境: JVM是一个能够执行Java字节码的虚拟机,它将编译后的Java源代码转换为字节码,然后在运行时加载并执行这些字节码。

2024-04-21 17:19:15 647

原创 【Redis常见问题总结】

Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,也可以用作缓存和消息队列代理。它支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。Redis最初由Salvatore Sanfilippo开发,于2009年首次发布。数据结构存储:Redis支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。这些数据结构使得Redis可以存储和操作各种类型的数据。内存存储:Redis的数据通常存储在内存中,这使得它具有非常高的读写速度。

2024-04-16 21:39:22 769

原创 【理解-IO多路复用】

IO多路复用是一种技术,允许单个线程同时管理多个输入/输出通道,如网络套接字或文件描述符。在IO多路复用中,这些通道被注册到一个事件管理器,然后通过阻塞方式等待事件(例如数据可读或可写)的发生。一旦有事件发生,线程就会被唤醒,并针对具体事件进行处理。这种技术的优点包括提高系统并发性能、减少资源消耗、简化编程模型、提高可扩展性。但也有缺点,如学习曲线较陡、对编程模型要求较高、不适用于CPU密集型任务。常见的io多路复用包括select、poll、epoll。

2024-04-11 21:39:17 838

原创 【Spring总结】

例如,Spring Boot为开发人员提供了快速启动和配置Spring应用程序的能力,Spring Cloud用于构建基于微服务架构的应用程序,Spring Data用于简化与数据访问相关的操作等。7、 多线程调用,在项目开发过程中多线程的应用场景是很多的,在多线程的场景下,主线程所在的 Context 和多线程执行下的方法不在同一个上下文,我们知道 spring 的事务是通过数据库连接来实现的,数据库连接是存放在一个 ThreadLocal 中的,只有在同一个线程上下文下,事务的操作才能生效。

2024-04-10 15:37:03 613 1

原创 【数据库总结】

数据库是一种用于组织、存储和管理数据的系统。它可以被视为一个电子化的文件柜,用于存储大量结构化或非结构化的信息,供后续检索、更新和管理。数据库系统通常由以下几个组件组成:数据: 数据库存储的实际信息,可以是文本、数字、图像、音频等形式。数据按照一定的结构进行组织,以便于有效地管理和检索。数据库管理系统(DBMS): 数据库管理系统是一个软件,负责管理数据库中的数据。它提供了一组功能和工具,使用户可以定义、创建、查询、更新和管理数据库。

2024-04-08 11:12:38 859

原创 【java的本地锁到分布式锁介绍】

在理解锁实现原理之前先了解一下Java的对象头和Monitor,在JVM中,对象是分成三部分存在的:对象头、实例数据、对其填充。实例数据和对其填充与synchronized无关,这里简单说一下(我也是阅读《深入理解Java虚拟机》学到的,读者可仔细阅读该书相关章节学习)。实例数据存放类的属性数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分内存按4字节对齐;对其填充不是必须部分,由于虚拟机要求对象起始地址必须是8字节的整数倍,对齐填充仅仅是为了使字节对齐。

2024-04-07 13:10:34 638 1

原创 【事务的总结】

就是一组操作数据库的动作集合,事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态,从而保证时间的一致性。

2024-04-01 18:46:06 1041

原创 【mac 解决eclipse意外退出】

终端输入:sudo codesign --force --deep --sign - /Applications/Eclipse.app/打开eclipse时提示报错信息应用程序"Eclipse.app"无法打开(这里忘了截图就不上图了)。点击 “好” 的按钮后会弹出发送报告的弹窗。

2023-10-14 10:57:18 236

原创 【redis总结】

Redis(Remote Dictionary Server)是一个高性能的开源内存数据库系统,它可以用作数据库、缓存和消息代理。Redis最初由Salvatore Sanfilippo开发,后来成为开源项目,得到了广泛的应用和支持。Redis主要将数据存储在内存中,这使得它具有非常高的读写速度。它的速度比许多传统的磁盘存储数据库快得多。Redis是一个键值存储数据库,其中的数据以键值对的形式存储。这使得它非常适合存储缓存、配置信息、会话数据等。

2023-09-21 15:32:36 366

原创 【接口设计注意点】

然后的话,接口的正确还体现在,多线程并发的时候,保证数据的正确性,等等。如果是串行一个一个查,比如查用户信息200ms,查banner信息100ms、查弹窗信息50ms,那一共就耗时350ms了,如果还查其他信息,那耗时就更大了。比如一些平时变动很小或者说几乎不会变的商品信息,可以放到缓存,请求过来时,先查询缓存,如果没有再查数据库,并且把数据库的数据更新到缓存。比如:你实现转账业务,转个几百万,然后转失败了,接着客户投诉,然后你还没有打印到日志,想想那种水深火热的困境下,你却毫无办法。

2023-09-15 16:46:41 195 1

原创 Mybatis-Genertor逆向工程

2、写generator.xml文件。1、导入mybaties插件。

2023-09-13 21:57:10 1054

原创 【mac M1上好用的免费客户端推荐】

支持Json视图、Hex视图、Serialize视图、Gzip等,还能自定义格式化脚本,可以说功能非常之全了!另外Redis新的Stream、ReJSON数据格式也都支持,甚至不常用的命令行功能也都有,还能查看执行命令历史,对于新手学习Redis也有很大的帮助,一般用户需求都能满足了。

2023-08-30 21:54:07 142

原创 【接口优化方案解决】

在工作中大家会遇到接口响应慢的问题,导致线上用户在等待,现在总结出了18中接口方案的优化,供大家参考,如果有遗漏请大家也留言补充。

2023-08-23 21:54:54 148

原创 【JVM满分总结】

JVM就是虚拟机,他是Java Virtual Machine 的英文简称。它是java运行环境的一部分,是一个虚构出来的计算机,它是通过在实际的计算机上仿真模拟各种运算计算机功能来实现的。它可以使编译后的java字节码文件解释成具体平台上的机器码指令执行,所以也使得java语言具有跨平台性。

2023-08-08 21:58:58 127

原创 【ES问题总结】

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档,一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置情况。

2023-08-07 21:52:46 845

原创 【SpringBoot面试题整理-超级有效】

Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean。因此,当应用程序在开发中运行时,只有某些 bean 可以加载,而在 PRODUCTION中,某些其他 bean 可以加载。假设我们的要求是 Swagger 文档仅适用于 QA 环境,并且禁用所有其他文档。这可以使用配置文件来完成。Spring Boot 使得使用。

2023-08-06 21:14:07 480

原创 【SpringCloud 面试题整理-超级有用】

Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成。Spring Cloud为微服务架构开发涉及配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态。

2023-08-06 21:07:04 145

原创 生产中出现CPU或者内存飙升如何进行解决

上面所描述的是通常的内存泄露方式,当然也适用于java,但是对于java而言,问题似乎变得简单了,JAVA的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C或者C++不同而已。对于问题一,举一个常见的设计规约:线程池的创建应该显示指定阻塞队列得到小,避免默认值失去控制,极坏的情况下创建了大量的线程,导致OOM。内存溢出就是内存越界。

2023-07-31 15:45:25 240

原创 SQL编写规范

2.库名、表名、字段名,禁止出现数字开头,禁止两个下划线中间只出现数字。因此,数据库名、表名、字段名 ,都不允许出现任何大写字母,避免节外生枝 正例: aliyun _ admin , rdc _ config , level 3_ name 反例: AliyunAdmin , rdcConfig , level。3.库名、表名、字段名,必须见名知意,使用下划线分割,禁止使用MySQL保留字 ,如 desc 、 range 、 match 、 delayed 等,请参考 MySQL 官方保留字。

2023-07-31 15:08:11 617

原创 Java面试突击

​ 面向对象编程是利用类和对象编程的一种思想。万物可归类,类是对于世界事物的高度抽象 ,不同的事物之间有不同的关系 ,一个类自身与外界的封装关系,一个父类和子类的继承关系, 一个类和多个类的多态关系。万物皆对象,对象是具体的世界事物,面向对象的三大特征封装,继承,多态。封装,封装说明一个类行为和属性与其他类的关系,低耦合,高内聚;继承是父类和子类的关系,多态说的是类与类的关系。​ 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露

2023-07-17 21:53:53 1229

原创 redis分布式锁

【代码】redis分布式锁。

2023-06-15 22:09:14 99

原创 ubuntu20.04 执行sudo apt-get update报错E: Failed to fetch https://mirrors.ustc.edu.cn/ubuntu/dists/f

在 /etc/apt/sources.list 文件中,将软件源的地址改为 http://mirrors.ustc.edu.cn/ubuntu-ports。参考文章:http://cmcc.mirrors.ustc.edu.cn/help/ubuntu.html。对于 Ubuntu 不再支持的版本,请参考 Ubuntu Old Releases 源使用帮助。手动更改配置文件:sudo vi /etc/apt/sources.list。Ubuntu Ports 源使用帮助。Ubuntu 软件源。

2023-05-11 22:01:45 1506 1

原创 sql表字段设计规则

使用unsigned的好处有标识数据特点(没有负数),提高空间利用率,在确定不会有负数出现的字段上都应加上此标识。bool使用tinyint(1) unsigned ,在java中对应boolean。枚举使用tinyint unsigned ,在java中对应int。为方便代码生成工具识别,以下为特别规范。

2023-05-10 22:11:23 484

原创 mysql 8.0.32启动失败且没有报错日志

datadir=\usr\local\mysql-8.0.32-macos13-arm64\data(mysql所在的data目录)basedir=\usr\local\mysql-8.0.32-macos13-arm64 (mysql所在的目录)在mysqld下面增加。

2023-05-10 22:10:50 229

原创 shell脚本输出的文件乱码

需要指定export lang= zh_CN.GBK。因为shell脚本默认的文件格式是utf-8。因此如果我们的格式为gbk格式的话。

2023-05-10 16:46:40 1235

原创 java模拟长连接发送

【代码】java模拟长连接发送。

2023-04-10 21:00:28 223

原创 ByteBuffer总结

Buffer 类是 java.nio 的构造基础。一个 Buffer 对象是固定数量的、数据的容器,其作用是一个存储器或者分段运输区。在这里,数据可被存储并在之后用于检索。缓冲区可以被写满或释放。对于每个非布尔类型的、原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer 和 ShortBuffer,是没有 BooleanBuffer 之说的。

2023-04-09 17:24:29 509

原创 RocketMq解决消息重复消费的问题

1、消费端接收到消息的时候,调用redis提供的incr自增方法,以msgID作为key(具有唯一性),value则默认从1开始递增。2、当incr返回值为1时,设置其失效时间为两分钟以后(每个msgID保留两分钟足矣!),并且该消息需要被消费。2、新消息来的时候,查看该消息的msgID是否已记录,是则抛弃,否则消费。二、RocketMq一般用redis进行记录,该msg是否被记录。3、当incr返回的值大于1时,直接跳过,不消费。1、记录下每个消息的msgID。

2023-04-08 21:13:04 2625 1

原创 RocketMq消费者拉取消息源码

发起拉取请求之前,会进行一系列的校验,例如服务状态校验、流控校验、顺序消费和并发消费的校验,都通过之后,创建拉取消息的回调函数对象PullCallback,当拉取消息的请求返回之后,将会调用回调函数。那么延迟发送拉取消息请求。MQClientAPIImpl的方法,首先构建构建请求命令对象,请求Code为PULL_MESSAGE,然后根据设置的消息拉取模式,调用不同的方法发起不同请求进行消息拉取。创建拉取消息的回调函数对象PullCallback,当拉取消息的请求返回之后,将会调用回调函数。

2023-04-05 10:54:14 523

原创 Spring如何实现注解开发

1、实现一个类需要继承。

2023-03-26 21:46:22 73

原创 RocketMq如何保证消息的顺序性

实际上,采用队列选择器的方法不能保证消息的严格顺序,我们的目的是将消息发送到同一个队列中,如果某个broker挂了,那么队列就会减少一部分,如果采用取余的方式投递,将可能导致同一个业务中的不同消息被发送到不同的队列中,导致同一个业务的不同消息被存入不同的队列中,短暂的造成部分消息无序。普通发送消息的模式下,生产者会采用轮询的方式将消费均匀的分发到不同的队列中,然后被不同的消费者消费,因为一组消息在不同的队列,此时就无法使用 RocketMQ 带来的队列有序特性来保证消息有序性了。

2023-03-25 21:59:41 1852 1

原创 dfa基于敏感词构建敏感词树

基于敏感词,构建敏感词树。

2023-03-07 20:56:20 126

原创 RabbitMq配置

【代码】RabbitMq配置。

2023-03-06 21:39:48 438

原创 雪花算法生成全局唯一ID

RocketMq流程图

2023-03-03 21:53:47 172

原创 RocketMq流程图

RocketMq流程图

2023-01-08 12:57:54 112

原创 IO性能测试

【代码】IO性能测试。

2023-01-05 19:27:17 381

原创 Spring编写实例

};}.} };}.} };}.} };}.} };}.} };}.} };}.} };}.} };}.} };}.} };}.} };}.

2022-12-26 22:05:10 271

原创 java设计模式三

第一步: 将我们写好的自定义IOC容器项目,安装到maven仓库中,使其他项目可以引入其依赖//依赖信息 < dependencies > < dependency > < groupId > com.mashibing < artifactId > user_defined_springioc < version > 1.0-SNAPSHOT

2022-12-26 17:37:05 682

空空如也

空空如也

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

TA关注的人

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