- 博客(749)
- 收藏
- 关注
原创 声明式事务和编程式事务,讲解Spring的事务机制
Spring的事务机制是Spring框架中的一个核心功能,用于确保数据的一致性和完整性,尤其是在多个操作需要作为一个原子单元执行时。REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。3. 事务隔离级别(Isolation Level)事务的隔离级别定义了事务与其他事务之间的隔离程度,以防止多个事务并发执行时由于交叉执行而导致数据的不一致。这意味着当这个方法被调用时,Spring将启动一个新的事务(如果当前没有事务的话),并且在方法执行完毕后提交事务。
2024-09-11 16:40:47 1070
原创 java -jar`命令详解:运行JAR文件、传递参数与性能调优
如果你希望JAR文件在后台运行,并且想要将输出重定向到文件中,可以使用nohup命令(Linux/macOS)或start /B命令(Windows)。依赖管理:如果JAR文件依赖了其他的库或JAR包,你需要在MANIFEST.MF文件中使用Class-Path属性指定这些依赖的路径,或者在运行时通过-cp或-classpath参数指定。运行这个命令时,Java虚拟机(JVM)会查找JAR文件中的MANIFEST.MF文件,该文件位于JAR文件的META-INF目录下。
2024-08-22 10:10:18 1678
原创 Spring Boot结合Redis与布隆过滤器:有效应对缓存穿透问题
初始化布隆过滤器:在Spring Boot应用中,可以在启动时从数据库中读取所有商品的ID,并使用这些ID初始化布隆过滤器。通过引入布隆过滤器,可以在不查询数据库的情况下快速判断商品ID是否可能存在,从而过滤掉大量无效的查询请求,减轻数据库压力,提高系统稳定性和用户体验。然而,有些恶意用户会利用不存在的商品ID来发起大量查询请求,这些请求会穿透缓存直接到达数据库,对数据库造成巨大压力,这就是缓存穿透问题。确定布隆过滤器的大小和误判率:根据预计存储的商品ID数量和可接受的误判率来确定布隆过滤器的大小。
2024-08-22 10:09:22 954
原创 java实例化对象到底有几种方式?超乎你的想象
不过,需要注意的是,从Java 9开始,newInstance方法已被标记为过时(deprecated),推荐使用Class的getDeclaredConstructor()方法与Constructor的newInstance()方法组合使用。例如,在Spring框架中,你可以通过配置文件或注解来声明对某个类的依赖,Spring容器会在运行时自动为你创建这些类的实例,并将它们注入到需要的地方。需要注意的是,上述方式中的“工厂模式”、“依赖注入框架”和“单例模式”并不直接创建新的对象实例,
2024-08-19 18:43:12 658
原创 SpringBoot结合MDC实现链路追踪设计
然而,在大多数情况下,如果你的拦截器已经正确地在每个请求开始时设置了MDC,并且你使用的是支持InheritableThreadLocal的线程池(如上面的ThreadPoolTaskExecutor),那么子线程应该会自动继承父线程的MDC,你不需要在MdcTaskDecorator中显式设置它。注意:上面的MDC.get(“traceId”)和MDC.put(“traceId”, traceId)是假设的调用,因为MDC本身并不直接提供这样的静态方法。
2024-08-19 18:40:08 816
原创 Spring Cloud使用Zuul
Spring Cloud中的Zuul是一个基于Java的API网关服务,用于代理和路由传入的请求。它提供了一些强大的功能,如路由、负载均衡、动态路由、认证和授权等。然后,您需要在您的应用程序的配置文件中配置Zuul的路由规则。最后,您可以使用Zuul的一些功能,如负载均衡和过滤器。以上是使用Zuul的基本步骤。您可以根据您的需求进行更多的配置和定制化。接下来,在您的应用程序的主类上添加。开头的请求都路由到名为。
2024-06-25 18:04:50 263
原创 Spring Cloud使用Hystrix
Hystrix通过实现断路器模式来提供这些功能,通过实现断路器模式,Hystrix能够在出现故障时,防止故障向整个系统扩散,并提供了故障恢复的机制。Hystrix是一个开源的容错和降级库,可以在分布式系统中提供容错能力,防止一个服务的故障导致整个系统的崩溃。这个配置用于定义Hystrix Command的超时时间,如果某个Hystrix Command的执行时间超过了这个超时时间,Hystrix将会中断该Command的执行。以上就是使用Hystrix实现服务的容错和降级的基本步骤。
2024-06-25 17:59:48 566
原创 Spring Cloud使用Spring Cloud Config
它基于Spring Boot和Spring Cloud框架,使您可以将应用程序的配置存储在集中的配置存储库中,并在运行时从应用程序中获取配置。您可以将应用程序的配置存储在Git、SVN或文件系统等配置存储库中,并在运行时从配置服务器获取配置。使用Spring Cloud Config,您还可以使用配置的版本控制、动态刷新配置等功能。它还支持安全性,可以使用HTTPS保护配置的传输。总之,Spring Cloud Config是一个非常有用的工具,可简化应用程序的配置管理,并使配置更加灵活和可管理。
2024-06-25 17:57:28 293
原创 Spring Cloud使用Feign
Spring Cloud中的Feign是一个声明式的Web服务客户端。它使得编写Web服务客户端变得更加简单,只需要创建一个接口并使用注解来配置HTTP请求,即可实现对Web服务的调用。通过以上步骤,我们可以方便地使用Feign来调用Web服务,并且可以从服务注册中心中自动发现服务。Feign还提供了其他注解,用于配置HTTP请求的参数、路径、请求方法等。可以根据需要进行使用。
2024-06-25 17:55:14 234
原创 Spring Cloud使用Ribbon
Ribbon通过在客户端中嵌入自己的负载均衡算法来实现负载均衡的功能。这样,当使用RestTemplate发送HTTP请求时,Ribbon会自动根据负载均衡算法选择一个可用的服务实例来发送请求。在Spring Cloud中,可以通过添加相应的依赖来使用Ribbon。注解,这样应用程序就可以将自己注册到服务发现组件(例如,Eureka)中。接下来,在需要使用负载均衡的地方,可以使用。注解来开启负载均衡功能。例如,可以在使用RestTemplate发送HTTP请求的地方使用。然后,在应用程序的启动类上添加。
2024-06-25 17:53:46 430
原创 Spring Cloud使用Eureka
通过以上配置,服务会自动注册到Eureka Server,并且可以通过Eureka Server进行服务发现和负载均衡。在其他微服务中,可以使用注解@LoadBalanced来实现负载均衡,使用注解@FeignClient来实现服务间的调用。Spring Cloud使用Eureka作为服务发现和注册中心。Eureka是Netflix开源的一款服务发现组件,具有高可用性和灵活性。Spring Cloud集成了Eureka,并提供了简单易用的API和注解来实现服务的注册和发现。
2024-06-25 17:51:53 299
原创 Spring Cloud源码分析
通过对Spring Cloud的源码分析,我们可以更好地理解分布式系统的设计和实现原理,并能够深入理解Spring Cloud的各个组件和功能。Spring Cloud的源码分析可以帮助我们深入理解Spring Cloud的设计原理和实现细节,从而更好地使用和扩展Spring Cloud。可以分析Spring Cloud Config的源码,了解它的配置管理机制和相关实现。可以分析Eureka的源码,了解它的工作原理和相关接口的实现。可以分析Feign的源码,了解它的服务调用方式和相关实现。
2024-06-25 17:50:23 474
原创 SpringBoot 原理深入及源码剖析
嵌入式容器:Spring Boot提供了嵌入式容器的支持,可以将应用程序打包为可执行的JAR文件,并且内置了Tomcat、Jetty等常用的容器。起步依赖是一种经过精心选择和配置的依赖项集合,它可以一次性引入一组相关的依赖,减少了人工管理依赖的复杂性。通过深入研究Spring Boot的原理及源码剖析,我们可以更好地理解和使用Spring Boot,提高应用程序的开发效率和性能。起步依赖原理:研究Spring Boot是如何选择和配置起步依赖的,以及起步依赖是如何管理和解析依赖的。
2024-06-25 17:47:36 627
原创 介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用
灵活性:使用Docker,可以将应用程序及其依赖项打包成一个容器,方便在不同的环境中进行部署和运行。无论是开发、测试还是生产环境,都可以使用相同的镜像进行部署,保证了应用程序在不同环境中的一致性。它可以提高开发人员的工作效率,加速应用程序的交付速度,并提供更好的可移植性和一致性。自动化测试:通过在Docker容器中运行自动化测试,可以确保在不同的测试环境中都可以获得相同的测试结果。Docker是一个开源的容器化平台,可以将应用程序及其依赖项打包成容器,以便在不同的环境中运行。
2024-06-18 14:33:28 406
原创 使用Docker部署Kubernetes(K8s)详解+代码
Docker是一种容器化技术,可以将应用程序及其依赖项打包为一个独立的镜像,并在不同的环境中运行。而Kubernetes(简称为K8s)是一个容器编排和管理系统,可以帮助我们快速部署、管理和扩展容器化应用。下面是一个详细的步骤,介绍如何使用Docker部署Kubernetes。安装Docker:首先需要安装Docker,可以通过官网下载适合自己系统的安装包,并按照官方文档进行安装。配置Docker镜像加速器:在国内使用Docker时,由于网络原因,访问Docker Hub速度较慢。
2024-06-07 14:49:05 1659
原创 Maven-工作原理详解
总的来说,Maven的工作原理就是通过pom.xml文件来定义项目的基本信息和依赖关系,然后根据这些信息自动下载所需的依赖、执行一系列的构建任务,并生成相应的构建报告和可执行文件。构建过程:当执行Maven命令时,Maven会根据pom.xml文件中的配置信息,按照定义的生命周期和插件执行构建过程。具体的构建过程包括编译代码、运行测试、打包生成可执行的Jar文件等。Maven是一个用于构建和管理Java项目的工具,它提供了一种结构化的项目管理方法,能够自动化地下载依赖、编译代码、运行测试和打包部署等操作。
2024-06-07 14:42:25 301
原创 Maven-本地文件系统(或其他系统级位置)中获取依赖包
请注意,包含 system scope 的依赖项可能会导致构建过程在不同的环境中产生不一致的结果,因为它们依赖于本地文件系统中的特定文件。因此,建议谨慎使用 system scope 的依赖项,并确保在不同环境中保持一致的文件路径。system scope 的依赖项是一种特殊的依赖项,它们不会从 Maven 仓库中下载,而是从本地文件系统(或其他系统级位置)中获取。在上述示例中,我们指定了一个 system scope 的依赖项。系统路径指定了该依赖项在本地文件系统中的位置。在Maven中,可以使用。
2024-06-07 14:41:37 241
原创 springboot和zookeeper写一个分布式端口扫描系统
方法会遍历指定的端口范围,检查每个端口是否可用(没有被占用)。如果端口可用,它会在Zookeeper上创建一个对应的节点。我可以为您提供一个使用Spring Boot和Zookeeper编写的简单分布式端口扫描系统的示例代码。在上面的示例代码中,我们使用了Curator Framework库来连接和操作Zookeeper。现在,您可以运行应用程序并使用Zookeeper监视和管理您的端口扫描系统了。
2024-06-07 14:31:33 633
原创 Redisson分布式锁原理
分布式锁的实现原理:Redisson的分布式锁实现主要是基于Redis的原子操作(setnx和expire)来实现的。锁续期:在获取分布式锁的同时,可以指定锁的过期时间。如果线程在持有锁的过程中,锁的过期时间到了,Redisson会自动续期,防止锁过期导致其他线程获取到锁。Redisson的分布式锁实现基于Redis实现,利用Redis的原子操作特性实现了高性能的分布式锁。公平锁和非公平锁:Redisson支持公平锁和非公平锁的实现。公平锁是按照获取锁的请求顺序来分配锁的,而非公平锁则是无序的。
2024-06-07 14:19:54 349
原创 常见设计模式是哪些?请详细说明并写出代码
解释器模式(Interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。外观模式(Facade):为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
2024-05-23 16:07:35 482
原创 Spring Boot中比较好用的工具
Lombok:一个Java库,可以通过注解来自动生成一些常用的代码,如getter和setter方法、构造函数等,可以减少样板代码的编写。Spring Boot DevTools:一个用于提高开发效率的工具,提供了快速重启应用程序的能力,以及自动重新加载静态资源和模板文件。以上只是一些比较常用和流行的工具,实际上Spring Boot还有很多其他的工具和库,根据具体需求可以选择适合自己的工具来简化开发过程。Spring Boot是一个非常流行的Java开发框架,它提供了很多方便的工具和库来简化开发过程。
2024-03-08 08:40:14 466
原创 2019年系统分析师综合知识
B 的前一刻,B 开始发送帧。这样,当 A 的帧到达 B 时,B 检测到冲突,于是发送冲突信号。(11) A .受保护的软件必须固化在有形物体上,如硬盘、光盘、软盘等 B .合法复制品所有人的权利包括出于学习研究目的,安装、储存、显示等方式使用复制品,必须。(6)A.AES B.RSA C.IDEA D.DES (7) A.甲的公钥 B.甲的私钥 C.乙的公钥 D.乙的私钥。TMS320C63xx),通常 DSP 芯片采用哈佛(HarVard)体系结构,以下关于哈佛结构特征的描述,不正确的。
2024-03-06 09:00:22 380
原创 2022下半年软件设计师案例分析题级答案
此时堆的规模为 n,堆顶元素R[1]就是序列中最大的元素, R[n]是堆中最后一个元素。职员只属于一家专卖店。考虑数据序列R=(7,10,13,15,4,20,19,8),n=8,则构建的初始大。根据说明中的描述,给出图3-3中C1~C8所对应的类名(类名使用图3-1中标注。(1)将含n个元素的待排序数列构造成一个初始大顶堆,存储在数组R(R[1],(3)重复步骤(2),直到只剩下最后一个元素在堆结构中,此时数组R是一个非递。录,对充电桩进行检定,提交检定结果:系统更新充电桩中的检定信息(检定结果和。
2024-03-06 08:57:41 753
原创 2022下半年系统分析师综合知识
26.基于模型的系统工程作为一种( ), 为了应对基于文档的传统系统工程工作模式在复杂产品和系统研发时面临的挑战,以逻辑连贯一致的多视角系统模型为桥梁和框架,实现跨领域模型的可追踪、可验证和动态关联,驱动人工系统生存周期内各阶段和各层级内的系统工程过程和活动,使其可管理、可复现、可重用,进而打破专业壁垒,破解设计和工艺、研发和制造、研制和使用维护的分离,极大地提高沟通协同效率,实现以模型驱动的方法来采集、捕获和提炼数据、信息和知识。其中,系统层级是对与企业生产活动相关的组织结构的层级划分,包括( )。
2024-03-06 08:55:46 683
原创 2022下半年软件设计师综合知识真题与答案
对有序数组(3,14,27,39,42,55,70,85,93,19、以下关于风险管理的叙述中,不正确的是()。50、在Python3中,执行语句x-imput(),如果从键盘输入123并按回车键,则x。49、在Python3中,表达式list(range(11)【10∶0∶-2】的值为()Pn,若P3-4,则P1,P2不可能的取为()。41、42、UML活动图用于建模(41)以下活动图中,活动A1之后,可能的活动执。系P(工程号,工程名,前期工程号)、参与关系EP(员工号,工程号,工作量)。
2024-03-06 08:53:10 1108
原创 Centos7配置jdk环境并安装最新版本Jenkins
在浏览器中输入您的服务器IP地址,后跟端口号8080(例如http://your_server_ip_address:8080),然后按照屏幕上的指示完成Jenkins的设置。在浏览器中打开Jenkins后,将出现一个页面要求您输入初始密码。完成设置后,您将能够访问Jenkins的控制面板,并可以开始使用Jenkins进行持续集成和部署。这是在CentOS 7上配置JDK环境并安装最新版本Jenkins的步骤。复制初始密码,粘贴到Jenkins页面中并按照屏幕上的指示完成Jenkins的设置。
2024-01-04 19:08:26 733
原创 linux安装jdk环境
以上就是在Linux上安装JDK环境的步骤。根据不同的Linux发行版和版本,可能会有一些细微的差异,但大致步骤是相似的。下载所需的JDK版本。可以从Oracle官网下载最新版本的JDK,也可以选择OpenJDK等其他版本。打开终端并以root用户身份登录。
2024-01-04 19:07:40 461
原创 uniapp数据缓存(存储/获取/移除/清空)
在uni-app中,可以使用uni.setStorageSync和uni.getStorageSync来进行数据的存储和获取。而移除缓存数据可以使用uni.removeStorageSync,清空缓存数据可以使用uni.clearStorageSync。注意:以上方法都是同步方法,如果需要异步操作,可以使用uni.setStorage和uni.getStorage方法。以上就是在uni-app中进行数据缓存的常用方法。
2023-12-20 21:47:43 3974
原创 Flutter开发实践:用一套代码构建多端精美应用
使用Flutter的Material Design和Cupertino风格:Flutter提供了一套标准的Material Design和Cupertino风格的组件,可以帮助你快速构建出符合各个平台设计规范的应用。使用Flutter的状态管理库:Flutter提供了多个状态管理库,如Provider、GetX等,可以帮助开发者更好地管理应用的状态。使用Flutter的动画和过渡效果:Flutter内置了丰富的动画和过渡效果,可以让应用界面更加生动和流畅。
2023-12-20 21:46:40 561
原创 uniapp开发云打包详细流程
UniApp开发云打包的详细流程如下:创建UniApp项目:使用HBuilderX等开发工具创建UniApp项目,并进行项目的配置、目录结构的梳理等。编写代码:根据项目需求,编写UniApp的前端代码,包括HTML、CSS和JavaScript等。适配不同平台:UniApp支持多个平台,包括iOS、Android、微信小程序、支付宝小程序等,在编写代码时需要考虑不同平台的适配。调试测试:在开发过程中,可以使用开发工具提供的模拟器或真机调试工具,在不同的平台上进行调试和测试,确保代码的
2023-12-20 21:44:25 523
原创 解释 Git 的基本概念和使用方式。
分支(Branch):分支是仓库中独立的开发路径。默认的分支是主分支(master/main),可以创建新的分支来实现不同的功能和实验。远程仓库(Remote Repository):远程仓库是存储在网络上的Git仓库,可以与他人共享和协同开发。当一个分支的开发完成后,可以将其合并到主分支,以保持代码的整洁和稳定。拉取(Pull):拉取是将远程仓库的最新更改合并到本地仓库的操作。Git的基本概念和使用方式可以帮助团队协同开发,跟踪和管理项目的版本历史,并提供了一种有效的方式来处理代码的变更和合并。
2023-12-14 19:53:14 536
原创 帮我写一个mysql,统计用户当月每一周的上单量,某一个周为0也要显示出来
MySQL的DATE_FORMAT函数将日期格式化为指定的格式,然后使用GROUP BY和COUNT函数统计每周的上单量。如果某一个周的上单量为0,也要显示出来,可以使用LEFT JOIN将所有周都包括进来。查询的结果将包含每一周的开始日期和对应的上单量。如果某一个周的上单量为0,也会显示出来。可以根据需要对结果进行进一步处理和格式化。是订单日期的列名,你需要根据实际情况进行修改。请注意,上述查询中的。
2023-12-14 19:52:10 483
原创 mysql查询单天,当周,当月函数
请注意,在上述查询中,我们使用了MySQL的日期和时间函数。这将返回指定日期的所有数据,其中。这将返回当前周的所有数据,其中。这将返回当前月的所有数据,其中。函数返回当前日期和时间。希望这些信息对你有所帮助!
2023-12-14 19:51:34 593
原创 Python基于PyTorch实现卷积神经网络回归模型
这个示例代码使用了CIFAR10数据集,卷积神经网络模型包括3个卷积层和2个全连接层,优化器使用Adam,训练10个epoch。在训练期间,使用了PyTorch的DataLoader和tqdm库来进行数据迭代和进度条显示,同时计算训练集和测试集的损失。
2023-11-30 17:21:10 1052
原创 Python CNN卷积神经网络实例讲解
卷积神经网络(Convolutional Neural Network,CNN)是一种常用于图像识别、语音识别和自然语言处理等领域的神经网络模型。在本文中,我们将介绍如何用 Python 实现一个简单的卷积神经网络,来对手写数字进行分类。
2023-11-30 17:19:36 923
原创 如何使用python识别车牌号码案例代码
需要注意的是,在运行代码前需要安装pytesseract库,并下载tesseract-ocr软件。同时,需要将适配于车牌的haar分类器文件haarcascade_russian_plate_number.xml下载到本地与代码文件在同一目录下。
2023-11-30 17:18:46 853
原创 C语言数据结构顺序表的初始赋值
顺序表是C语言中常见的数据结构之一,可以实现快速的随机访问和插入删除操作。在顺序表中,数据元素是按照一定的顺序存储在连续的存储空间中的。函数用于初始化顺序表。在函数中,首先将数组元素全部清零,然后将顺序表的长度设为0。在C语言中,可以使用数组来实现顺序表。这样,顺序表就被初始化完成了。可以根据需要进行插入、删除、查找等操作。在上面的代码中,使用了定义了一个。结构体来表示顺序表。数组用于存储数据元素,表示当前顺序表的长度。在主函数中,先声明一个。函数来初始化顺序表。
2023-11-29 08:47:56 712
原创 C语言函数(带你轻松理解和使用函数~)
函数是C语言中封装了一定功能的代码段,可以在程序中重复使用。C语言中的函数分为库函数和用户自定义函数两种。库函数是在标准头文件中定义好的函数,可以直接调用;用户自定义函数则需要自己编写,并在需要时进行调用。函数的定义一般包括返回值类型、函数名、参数列表和函数体。return sum;这个函数的返回值类型是int,函数名是add,参数列表是int a和int b,函数体中计算了两个整数的和,并将结果返回。输出结果为7,说明函数调用成功。
2023-11-28 09:08:31 522
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人