- 博客(65)
- 收藏
- 关注
原创 Apache POI
Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。银行网银系统导出交易明细各种业务系统导出Excel报表批量导入业务数据。
2024-12-18 04:06:24
881
原创 Spring Cache
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:EHCacheCaffeineRedis(常用)
2024-12-18 03:57:17
882
原创 WebSocket
WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。HTTP是短连接WebSocket是长连接HTTP通信是单向的,基于请求响应模式WebSocket支持双向通信HTTP和WebSocket底层都是TCP连接既然WebSocket支持双向通信,功能看似比HTTP强大,那么我们是不是可以基于WebSocket开发所有的业务功能?
2024-12-17 23:38:55
1056
原创 Spring Task
是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定时任务框架定时自动执行某段Java代码1). 信用卡每月还款提醒2). 银行贷款每月还款提醒3). 火车票售票系统处理未支付订单4). 入职纪念日为用户发送通知只要是需要定时处理的场景都可以使用Spring Task。
2024-12-17 23:26:30
810
原创 Mysql的体系结构概览
和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。
2024-12-08 03:48:27
892
原创 MySQL索引
MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的==示意图==所示 :左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。
2024-12-07 22:56:53
1068
原创 SQL优化
如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。1).优化方案一批量插入数据2).优化方案二手动控制事务3).优化方案三主键顺序插入,性能要高于乱序插入。如果一次性需要插入大批量数据比如几百万的记录,使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。操作如下:可以执行如下指令,将数据脚本文件中的数据加载到表结构中主键顺序插入性能高于乱序插入示例演示A.创建表结构B.设置参数C. load加载数据。
2024-11-30 04:34:00
699
原创 MySQL主从复制
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制MySQL复制的优点主要包含以下三个方面:主库出现问题,可以快速切换到从库提供服务。实现读写分离,降低主库的访问压力。可以在从库中执行备份,以避免备份期间影响主库服务。
2024-11-30 02:54:06
820
原创 MySQL查看日志
默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。的配置文件中配置二进制日志的过期时间,设置了之后,二进制日志过期会自动删除。由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具。之后所有的客户端的增删改查操作都会记录在该日志文件之中,长时间运。查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的。如果我们需要配置二进制日志的格式,只需要在。的索引文件,里面记录了当前服务器关联的。中最重要的日志之一,它记录了当。如果需要开启慢查询日志,需要在。
2024-11-30 02:43:36
4501
原创 IO流案例
/PrintWriter(String fileName) :使用指定的文件名创建一个新的PrintWriter,而不需要自动执行行刷新。//Set<String> stringPropertyNames():从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串。//PrintWriter(Writer out, boolean autoFlush):创建一个新的PrintWriter。//PrintStream(String fileName):使用指定的文件名创建新的打印流。
2024-11-03 02:01:10
597
原创 类加载器及反射
是指在运行时去获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展Java语言随着这些年的发展已经成为了一门影响深远的编程语言,无数平台,系统都采用Java语言编写。但是,伴随着发展,Java也越来越庞大,逐渐发展成为一门“臃肿” 的语言。而且,无论是运行一个大型的软件系统,还是运行一个小的程序,即使程序只需要使用Java的部分核心功能, JVM也要加载整个JRE环境。
2024-11-03 01:58:46
1068
原创 函数式接口
概念有且仅有一个抽象方法的接口如何检测一个接口是不是函数式接口放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败注意事项我们自己定义函数式接口的时候,@FunctionalInterface是可选的,就算我不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。但是,建议加上该注解。
2024-11-03 01:53:22
1009
原创 网络编程入门
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换。
2024-11-03 01:47:11
1118
原创 多线程的实现
概述生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。所谓生产者消费者问题,实际上主要是包含了两类线程:一类是生产者线程用于生产数据一类是消费者线程用于消费数据为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为Object类的等待和唤醒方法方法名说明。
2024-11-03 01:44:35
755
原创 redis缓存雪崩、击穿、穿透
Redis 雪崩 是在缓存失效后,大量请求直接打到数据库,导致数据库压力骤增甚至崩溃的问题。在高并发场景下,Redis 雪崩可能会带来严重后果。为了避免 Redis 雪崩,可以采取多种措施,如 缓存预热、设置不同过期时间、使用互斥锁防止缓存击穿、缓存降级、限流与熔断机制 等。持久化与集群 是提升 Redis 可用性的关键,确保即便在单个节点失效的情况下,服务依然能够正常工作。缓存穿透:缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。
2024-10-30 13:26:06
1610
原创 JVM快速入门
内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度)内存整齐度:复制算法=标记压缩算法>标记清除算法内存利用率:标记压缩算法=标记清除算法>复制算法思考一个问题:难道没有最优算法吗?答案:没有,没有最好的算法,只有最合适的算法——》GC:分代收集算法存活率低复制算法区域大:存活率高标记清除(内存碎片不是太多)+标记压缩混合实现lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。
2024-10-22 00:26:14
886
原创 分布式搜索引擎03
默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。elasticsearch中分词器(analyzer)的组成包含三部分:character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smarttokenizer filter:将tokenizer输出的词条做进一步处理。
2024-10-20 01:42:18
1004
原创 分布式搜索引擎02
match和multi_match的区别是什么?match:根据一个字段查询multi_match:根据多个字段查询,参与查询字段越多,查询性能越差精确查询常见的有哪些?term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段range查询:根据数值范围查询,可以是数值、日期的范围查询的DSL是一个大的JSON对象,包含下列属性:query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件。
2024-10-19 13:33:44
1172
原创 分布式搜索引擎01
什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch什么是Lucene?是Apache的开源搜索引擎类库,提供了搜索引擎的核心API分词器的作用是什么?创建倒排索引时对文档分词用户搜索时,对输入的内容分词IK分词器有几种模式?ik_smart:智能切分,粗粒度。
2024-10-18 02:44:30
872
原创 服务异步通信-高级篇
每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目加载时配置:修改publisher服务,添加一个:@Slf4j@Override// 获取RabbitTemplate// 设置ReturnCallback// 投递失败,记录日志log.info("消息发送失败,应答码{},原因{},交换机{},路由键{},消息{}",// 如果有业务需要,可以重发消息});
2024-10-17 02:04:15
1009
原创 多级缓存-
传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图:存在下面的问题:•请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈•Redis缓存失效时,会对数据库产生冲击多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能:浏览器访问静态资源时,优先读取浏览器本地缓存访问非静态资源(ajax查询数据)时,访问服务端请求到达Nginx后,优先读取Nginx本地缓存如果Nginx本地缓存未命中,则去直接查询Redis(不经过Tom
2024-10-15 02:47:56
937
原创 安装OpenResty
首先你的Linux虚拟机必须联网首先要安装OpenResty的依赖开发库,执行命令:你可以在你的 CentOS 系统中添加openresty仓库,这样就可以便于未来安装或更新我们的软件包(通过命令)。运行下面的命令就可以添加我们的仓库:如果提示说命令不存在,则运行:然后再重复上面的命令然后就可以像下面这样安装软件包,比如openrestyopm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。
2024-10-15 02:30:01
1097
原创 RabbitMQ
基本消息队列的消息发送流程:建立connection创建channel利用channel声明队列利用channel向队列发送消息基本消息队列的消息接收流程:建立connection创建channel利用channel声明队列定义consumer的消费行为handleDelivery()利用channel将消费者与队列绑定Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?
2024-10-14 14:59:37
1036
原创 Centos7安装Docker
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的,这里主要介绍 Docker CE 在 CentOS上的安装。
2024-10-14 14:48:57
680
原创 SpringCloud实用篇02
使用Feign的步骤:① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplate类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。
2024-10-14 14:46:40
662
原创 Nacos集群搭建
官方给出的Nacos集群图:其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。
2024-10-14 14:29:29
699
原创 SpringCloud01
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案①优点:拆分粒度更小、服务更独立、耦合度更低②缺点:架构非常复杂,运维、监控、部署难度提高SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。
2024-10-14 14:23:13
608
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人