- 博客(374)
- 收藏
- 关注
原创 工具篇之Joda-Time
Joda-Time 是一个开源的日期和时间处理库,旨在替代Java标准库中的和类。Joda-Time 提供了直观易用的 API 和丰富的功能,极大地简化了日期和时间的处理。支持多个时间带提供丰富的日期和时间操作方法支持格式化和解析日期时间字符串提供时间间隔和周期的计算。
2024-09-12 10:15:03 464
原创 工具篇之序列化工具
Jackson 允许你自定义序列化和反序列化逻辑。你可以通过实现 JsonSerializer 和 JsonDeserializer 接口来实现自定义逻辑。// Getter和Setter方法省略@Override// 创建一个 ObjectMapper 对象// 创建一个 Person 对象// 将 Person 对象序列化为 JSON 字符串// 输出结果static {// 注册 JavaTimeModule。
2024-09-09 20:58:23 667
原创 工具篇之Apache Commons
ArrayUtils: 用于对数组的操作,如添加、查找、删除、子数组、倒序、元素类型转换等;BitField: 用于操作位元,提供了一些方便而安全的方法;: 用于操作和转换 boolean 或者 Boolean 及相应的数组;: 包含了 Java 环境支持的字符编码,提供是否支持某种编码的判断;CharRange: 用于设定字符范围并做相应检查;CharSet: 用于设定一组字符作为范围并做相应检查;: 用于操作 CharSet;CharUtil。
2024-09-09 15:44:59 1536
原创 Springboot功能模块之EasyExcel
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。
2024-08-20 11:29:50 1445
原创 Springboot功能模块之 使用poi4.1.2 将word转换成html
因为自己的任务需要用到word转html,但是poi3.1.2的版本与我poi4.1.2版本冲突,所以尝试用4.1.2版本来写一个word转html,它是可以同时支持doc和docx两种格式,非常好用,当前文章是关于docx转html的,doc相对来说比较简单,有兴趣的可以尝试一下。
2024-08-19 16:49:49 627
原创 springboot功能模块之POI操作Excel
Apache POI项目的任务是创建和维护Java API,以基于Office OpenXML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)来处理各种文件格式。简而言之,您可以使用Java读写MSExcel文件。此外,您可以使用Java读写MS Word和MS PowerPoint文件。Apache POI是您的Java Excel解决方案(适用于Excel 97-2008)。基本功能HSSF - 提供读写格式档案的功能。XSSF - 提供读写Microsoft。
2024-08-19 16:30:20 972
原创 SpringBoot响应式编程(4)Spring Security Reactive
防止攻击:○ DDos、CSRF、XSS、SQL注入...控制权限○ 登录的用户能干什么。○ 用户登录系统以后要控制住用户的所有行为,防止越权;传输加密○ https○ X509认证:○ OAuth2.0○ JWT。
2024-08-19 10:51:09 565
原创 Kubernetes快速入门
容器技术的诞生虽解决了应用打包和发布的难题,但单一的容器技术工具并无 法支持起生产级大规模容器部署的场景。针对这一场景,容器管理与编排成为了容器技术发展的关键。Kubernetes便是在这样的大背景下诞生的。容器引擎允许你绑定一个和运行一个应用在容器里,这是一个松散隔离的环境。由于隔离性和安全性 ,你可以在一台主机上操作多个容器。容器引擎利用了操作系统的内核资源隔离特性,可以在同一个操作系统上运行多个容器。人们通常把容器引擎比作虚拟机(VMS).
2024-08-15 09:21:23 753
原创 SpringBoot响应式编程(2)WebFlux入门
在 Servlet3.0 之前,Servlet 采用 Thread-Per-Request 的方式处理 Http 请求,即每一次请求都是由某一个线程从头到尾负责处理。如果一个请求需要进行 IO 操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待 IO 操作完成, 而 IO 操作是非常慢的,所以此时的线程并不能及时地释放回线程池以供后续使用,如果并发量很大的话,那肯定会造性能问题。
2024-08-14 10:50:25 1163
原创 SpringBoot响应式编程(1)Reactor核心
可编排性(Composability)以及可读性(Readability)使用丰富的操作符来处理形如流的数据在订阅(subscribe)之前什么都不会发生背压(backpressure)具体来说即消费者能够反向告知生产者生产内容的速度的能力高层次(同时也是有高价值的)的抽象,从而达到并发无关的效果handle()方法是 Reactor 中一个非常强大的操作符,它允许你同时处理和转换流中的元素。它的功能类似于map()和filter()的结合体,能够在处理元素的同时决定是否将其传递给下游。
2024-08-13 11:36:04 869
原创 Springboot功能模块之文件上传(minio)
MinIO存储基于对象存储(Object Storage)是一种数据存储架构,它以对象为单位来处理、存储和检索数据,每个对象都包含了数据本身以及元数据;MinIO存储的元数据主要包括对象的描述信息,如用户(account)、存储桶(bucket)以及存储桶索引(bucket index)等;Bucket 是存储Object的逻辑空间,每个Bucket之间的数据是相互隔离的,对用户而言,相当于存放文件的顶层文件夹;非结构化数据:没有明确结构的数据,比如社交评论、日志文件......
2024-08-03 15:56:00 1058
原创 中间件之异步通讯组件rocketmq入门
RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,RocketMQ 是一款开源的,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。
2024-08-02 15:50:40 1142
原创 Spring框架常见面试题
热部署: 修改代码不需要重启,就可以实现编译并部署到服务器上。(1)在开发时修改代码不需要重启服务,节省了时间。(2)部署在服务器上的程序,可以在不停止的情况下进行升级。①使用devtools。在配置文件中把devtools.restart.enabled 设置为 true。每次都需要build一下才行。②idea设置实现热部署。@SpringBootApplication 注解@SpringBootApplication:包含了三个注解。
2024-06-13 16:57:04 653
原创 Java面经总结
基本数据类型,如int,float,double,boolean,char,byte,不具备对象的特征,不能调用方法。装箱:将基本类型转换成包装类对象拆箱:将包装类对象转换成基本类型的值java为什么要引入自动装箱和拆箱的功能?主要是用于java集合中,List<Inteter> list=new ArrayList<Integer>();list集合如果要放整数的话,只能放对象,不能放基本类型,因此需要将整数自动装箱成对象。
2024-06-13 12:16:26 1087
原创 NEFU服务科学与SOA
有关企业集成 技术层面 非技术层面导致集成失败的一般原因 缺少规划 拘泥于技术 缺乏对经验的利用SOI 应用架构模式SOI的集成模式属于应用集成模式直接连接:服务间点到点的拓扑结构代理: 基于一对多的拓扑结构 将业务应用逻辑和基于代理规则的分布逻辑隔离串行流程及其变体并行流程:从信息角度切入的SOI应用集成模式:数据集中数据联邦双向数据同步SOI 运行架构模式直接连接的简单服务总线模式企业服务总线(ESB)模式。
2024-06-12 08:00:43 684
原创 springboot功能模块之支付宝沙箱支付
支付宝沙箱支付(Alipay Sandbox Payment)是支付宝提供的一个模拟支付环境,用于开发和测试支付宝支付功能的开发者工具。在真实的支付宝环境中进行支付开发和测试可能涉及真实资金和真实用户账户,而沙箱环境则提供了一个安全、隔离的环境,使开发者能够模拟支付过程,测试支付功能,而不会使用真实资金。使用支付宝沙箱支付环境,开发者可以模拟各种支付场景,包括交易创建、支付请求、支付回调等,以验证支付功能的正确性和稳定性。沙箱环境中的所有交易和数据都是虚拟的,不会产生真实的交易或资金流动。
2024-06-06 12:41:18 1018
原创 Spring Cache入门详解
Slf4j// 按默认jdk序列化对象。未声明全局配置,缓存数据永不过期/*@Bean// 全局配置// 独立配置.build();}*/// 持基于jackson的序列化,以及自定义缓存策略@Bean// 全局配置:设置默认的缓存配置,包括过期时间和序列化方式.defaultCacheConfig() // 获取默认的缓存配置.entryTtl(Duration.ofMinutes(4)) // 设置缓存过期时间为4分钟// 使用指定的序列化器进行序列化。
2024-05-24 10:32:03 1100
原创 Spring Security入门
1.1、创建自定义配置实际开发的过程中,我们需要应用程序更加灵活,可以在SpringSecurity中创建自定义配置文件Java自定义配置用来管理用户信息,是UserDetailsService的一个实现,用来管理基于内存的用户信息。创建一个WebSecurityConfig文件:定义一个@Bean,类型是UserDetailsService,实现是InMemoryUserDetailsManager。
2024-05-22 10:47:51 1290 1
原创 Redis高级
主从模式可以解决高可用、高并发读的问题。但依然有两个问题没有解决:海量数据存储高并发写要解决这两个问题就需要用到分片集群了。分片的意思,就是把数据拆分存储到不同节点,这样整个集群的存储数据量就更大了。Redis分片集群的结构如图:分片集群特征:集群中有多个master,每个master保存不同分片数据 ,解决海量数据存储问题每个master都可以有多个slave节点 ,确保高可用master之间通过ping监测彼此健康状态 ,类似哨兵作用。
2024-05-20 17:43:39 1034
原创 Springboot功能模块之常用认证加密方案总结
MD5,全称:Message Digest Algorithm 5,是一种常用的哈希算法,可用于将任意长度的数据转换为固定长度的哈希值(通常为128位,16个字节)。在早些年,MD5被广泛使用过。但现在它已经不再被视为安全的加密算法,因为它存在一些安全漏洞,如碰撞攻击和彩虹表攻击。明文经过加密之后形成密文,无法通过密文反推出原始的明文。无论输入了多长的数据,经过MD5处理后都只会产生一个16字节的散列值。经过MD5处理后得到的散列结果无法计算出原始数据,因此MD5不可用于解密。
2024-05-20 11:47:27 1094
原创 MySQL---JSON的用法讲解
JSON 数据类型是 MySQL 5.7.8 开始支持的。在此之前,只能通过字符类型(CHAR,VARCHAR 或 TEXT )来保存 JSON 文档。MySQL 8.0版本中增加了对JSON类型的索引支持。可以使用CREATE INDEX语句创建JSON类型的索引,提高JSON类型数据的查询效率。存储JSON文档所需的空间与存储LONGBLOB或LONGTEXT所需的空间大致相同。在MySQL 8.0.13之前,JSON列不能有非空的默认值。
2024-05-15 10:46:25 4280
原创 Mysql进阶总结
索引(index)是帮助 MySQL 高效获取数据的数据结构。数据库系统除了维护数据之外,还维护着索引。索引指向着数据。执行的SQL语句为 :无索引情况:全表扫描有索引:改进B+tree优点:提高数据检索效率,降低数据库的I/O成本通过索引对数据进行排序,降低数据排序的成本,降低CPU消耗缺点:索引占用了数据库的空间 (磁盘便宜索引提高了查询的效率,降低了更新表(Insert,update,delete)的速度,因为增删改表也需要同时维护索引。(查询的次数远大于增删改操作的次数。
2024-05-13 11:46:19 1035
原创 中间件之数据库中间件ShardingShpere
概览 :: ShardingSphereApache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
2024-05-11 21:41:07 978
原创 Springai入门
在JavaScript中,prompt()函数用于显示一个包含文本消息和一个输入框的对话框,并等待用户输入信息。message:要显示给用户的消息文本,通常是一个提示用户输入信息的文本。defaultValue:可选参数,表示输入框中的默认值。用户可以在输入框中输入信息,然后点击确定按钮以提交信息。prompt()函数将返回用户输入的内容作为字符串。如果用户点击取消按钮,则返回null。通常,开发人员会将返回值存储在变量中,以便后续使用。
2024-05-07 12:05:18 2905 3
原创 中间件之搜索和数据分析组件Elasticsearch
正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。而倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。正向索引优点:可以给多个字段创建索引根据索引字段搜索、排序速度非常快缺点:根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。倒排索引优点:根据词条搜索、模糊搜索时,速度非常快缺点:只能给词条创建索引,而不是字段。
2024-05-04 15:37:13 1691
原创 中间件之异步通讯组件RabbitMQ进阶
一般情况下,只要生产者与MQ之间的网路连接顺畅,基本不会出现发送消息丢失的情况,因此大多数情况下我们无需考虑这种问题。不过,在少数情况下,也会出现消息发送到MQ之后丢失的现象,比如:MQ内部处理消息的进程发生了异常生产者发送消息到达MQ后未找到Exchange生产者发送消息到达MQ的Exchange后,未找到合适的Queue,因此无法路由针对上述情况,RabbitMQ提供了生产者消息确认机制,包括和两种。在开启确认机制的情况下,当生产者发送消息给MQ后,MQ会根据消息处理的情况返回不同的回执。
2024-05-03 09:25:18 1246 2
原创 中间件之异步通讯组件RabbitMQ入门
connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况`channels:通道,建立连接后,会形成通道,消息的投递获取依赖通道。Exchanges:交换机,用来实现消息的路由Queues:队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列。1:跨系统数据传递2:高并发的流量削峰3:数据的分发和异步处理4:大数据分析与传递5:分布式事务。
2024-05-01 16:09:46 1397 2
原创 微服务之SpringCloud AlibabaSeata处理分布式事务
解决分布式事务的方案有很多,但实现起来都比较复杂,因此我们一般会使用开源的框架来解决分布式事务问题。在众多的开源分布式事务框架中,功能最完善、使用最多的就是阿里巴巴在2019年开源的Seata了。其实分布式事务产生的一个重要原因,就是参与事务的多个分支事务互相无感知,不知道彼此的执行状态。因此解决分布式事务的思想非常简单:就是找一个统一的事务协调者,与多个分支事务通信,检测每个分支事务的执行状态,保证全局事务下的每一个分支事务同时成功或失败即可。大多数的分布式事务框架都是基于这个理论来实现的。TC。
2024-04-30 15:33:01 1395
原创 数据科学导论续
在解决了大数据的可靠存储和高效计算后,如何为数据分析人员提供便利日益受到关注,而最便利的分析方式莫过于交互式查询。这几年交互式分析技术发展迅速,目前这一领域知名的平台有十余个,包括Google开发的Dremel和PowerDrill,Facebook开发的Presto, Hadoop服务商Cloudera和HortonWorks分别开发的Impala和Stinger,以及Apache项目Hive、Drill、Tajo、Kylin、MRQL等。
2024-04-29 10:40:04 1089
原创 微服务之并行与分布式计算
单机存储系统VS分布式存储系统单机存储系统单机存储就是散列表、B树等数据结构在机械硬盘、SSD 等持久化介质上的实现。存储系统的数据模型主要包括三类:文件关系以及键值模型分布式存储系统分布式系统能够将数据分布到多个节点,并在多个节点之间实现负载均衡。其方式主要有两种:散列分布,如一致性散列,代表系统为Amazon的Dynamo系统;顺序分布,即每张表格上的数据按照主键整体有序,代表系统为 Google的Bigtable。
2024-04-27 23:33:48 1296 1
原创 微服务之分布式理论zookeeper概述
安装import syszk.start()zk.stop()zk.close()main()远程过程调⽤过程是什么?过程就是业务处理、计算任务,更直⽩理解,就是程序;像调⽤本地⽅法⼀样调⽤远程的过程.熟悉的Webserveice、restful接⼜调⽤时都是RPC,仅消息的组织⽅式以及消息协议不同.远程过程调⽤较本地调⽤有何不同?速度相对慢;可靠性减弱.
2024-04-26 23:44:30 1388 3
原创 微服务之.SpringCloud AlibabaSentinel实现熔断与限流
Sentinel中的断路器不仅可以统计某个接口的慢请求比例,还可以统计异常请求比例。当这些比例超出阈值时,就会熔断该接口,即拦截访问该接口的一切请求,降级处理;当该接口恢复正常时,再放行对于该接口的请求。断路器的工作状态切换有一个状态机来控制:closed:关闭状态,断路器放行所有请求,并开始统计异常比例、慢请求比例。超过阈值则切换到open状态open:打开状态,服务调用被熔断,访问被熔断服务的请求会被拒绝,快速失败,直接走降级逻辑。Open状态持续一段时间后会进入half-open状态。
2024-04-22 14:25:29 2619
原创 微服务之SpringCloud AlibabaNacos服务注册和配置中心
在微服务远程调用的过程中,包括两个角色:服务提供者:提供接口供其它微服务访问,比如服务消费者:调用其它微服务提供的接口,比如在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了的概念。注册中心、服务提供者、服务消费者三者间关系如下:流程如下:服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心调用者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)调用者自己对实例列表负载均衡,挑选一个实例调用者向该实例发起远程调用。
2024-04-21 20:28:34 1492
原创 NEFU软件质量保证与测试阶段复习
测试不单纯是一个发现错误的过程,而且是软件质量保证的主要职能测试是程序的执行过程,目的在于发现问题。测试是为了证明程序有错,而不是证明程序无错误。一个成功的测试是发现了至今没有发现的错误的测试软件测试的目的 :最少的人力,物力,时间为软件可靠性分析提供相关数据对软件质量进行度量和评估软件未达到产品说明书中标明的功能。软件出现了产品说明书中指明的不会出现的功能。软件功能超出了产品说明书中指明的范围。软件未达到产品说明书中指明应达到的日。
2024-04-18 16:43:25 884
原创 微服务之网关路由
Gateway是在Spring生态系统之上构建的API网关服务,基于Spring6,Spring Boot 3和Project Reactor等技术。它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式,并为它们提供跨领域的关注点,例如:安全性、监控/度量和恢复能力。在SpringCloud当中,提供了两种网关实现方案:Netflix Zuul:早期实现,目前已经淘汰SpringCloudGateway:基于Spring的WebFlux技术,完全支持响应式编程,吞吐能力更强反向代理。
2024-04-16 23:29:55 1594 1
原创 NEFU软件项目管理阶段复习总结
软件项目管理是为了让软件项目要能够按照预定的成本、质量、质量顺利完成,而对于人员产品过程和项目进行的分析和管理活动项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。软件项目管理是为了让软件项目要能够按照预定的成本、质量、质量顺利完成,而对于人员、产品、过程和项目进行的分析和管理活动项目管理是一系列的伴随着项目的进行而进行的,目的是为了确保项目能够到达期望结果的一系列管理行为软件项目管理的四个要素:成本 进度 质量 风险。
2024-04-16 22:07:25 1100
原创 微服务之分布式链路追踪
分布式链路追踪技术要解决的问题,分布式链路追踪(Distributed Tracing),就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。
2024-04-15 23:27:50 1205
原创 微服务之CircuitBreaker断路器
有问题的节点,快速熔断(快速返回失败处理或者返回默认兜底数据【服务降级】)。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack)而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。服务熔断。
2024-04-15 17:29:11 1812
NEFU-计算机网络实验4
2023-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人