![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring boot
文章平均质量分 70
studyday1
多总结,多思考,多批判,多学习
展开
-
【业务功能篇153】解决Maven编译项目报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:co
默认编译环境是JAVA 1.5 ,所以我们需要在pom.xml指定编译插件版本号,这样就可以保证更新Maven project版本不变。结论: 一般就是JDK的问题,需要确保我们编译的版本和我们本地ide配置的版本一致,比如目前用的是1.8。解决方式: 添加指定的版本,这样就不会走默认的1.5.原创 2024-04-29 09:30:49 · 2308 阅读 · 0 评论 -
【业务功能篇152】Maven:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.7:resources
springboot项目中,本地运行程序,报错maven,大多数是版本兼容问题,也就是本地环境的maven配置的版本,与pom文件中的maven的插件依赖版本有差距,那么可以尝试,调整版本一致,或者可以添加maven-filtering 1.3: 依赖。原创 2024-04-29 09:15:01 · 241 阅读 · 0 评论 -
【业务功能篇151】Springboot中接口传递时间格式问题 @JsonFormat与@DateTimeFormat注解的使用
我这里就只贴这两个属性了,这里我两个注解都同时使用了,因为我既需要取数据到前台,也需要前台数据传到后台,都需要进行时间格式的转换,可以同时使用。3.完成上面两步之后,我们用对应的实体类来接收数据库查询出来的结果时就完成了时间格式的转换,再返回给前端时就是一个符合我们设置的时间格式了。提示:@JsonFormat注解可以在属性的上方,同样可以在属性对应的get方法上,两种方式没有区别。2.在你需要查询出来的时间的数据库字段对应的实体类的属性上添加@JsonFormat。1.注解@JsonFormat。原创 2024-04-25 11:09:12 · 1170 阅读 · 0 评论 -
【git仓问题】idea中处理 fork远端仓代码提交及更新
其实就是平常我们需要开发中,当要push代码时,是需要先进行pull获取当前项目的最新状态的,一般就是自己本地开发个人分支,然后推送到dev分支,团队中都是推送到dev分支上,所以多人协作时,就需要在push之前,要pull下来当前的最新代码,有新增代码本地就会合并,再进行push。项目中,一般我们都是直接在git远程仓库A上直接创建分支进行开发,还有另外一种模式,就是通过fork方式,将项目远程仓库A fork到自己的远程代码仓B中上,然后这个代码仓B才是作为我们的远端仓。原创 2024-04-23 15:02:59 · 619 阅读 · 0 评论 -
对比 MyBatis 和 MyBatis-Plus 批量插入、批量更新的性能和区别
https://www.cnblogs.com/SihanLin/p/17681811.html原创 2024-03-16 16:32:07 · 590 阅读 · 0 评论 -
【业务功能篇 146】Sping之RestTemplate http请求封装+配置类
Service层进行调用 第三方请求接口。原创 2024-03-15 16:11:18 · 529 阅读 · 0 评论 -
【业务功能篇 143】Spring容器中的ThreadPoolTaskExecutor多线程,LinkedBlockingQueue问题
【代码】【业务功能篇 143】Spring容器中的ThreadPoolTaskExecutor多线程,LinkedBlockingQueue问题。原创 2024-03-14 16:51:47 · 210 阅读 · 0 评论 -
【业务功能篇 142】多线程池+Semaphore信号量 数据并行处理
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。原创 2024-03-14 16:11:19 · 853 阅读 · 0 评论 -
【业务功能篇】多环境配置、多数据源切换失效@DS解决方式
3.什么情况下@DS会失效?在同一个实现类中,一个非DS注解的常规方法里调用@DS注解的方法,同样存在@DS失效的情况,原因同2,是由spring的aop机制导致的,如果确有这种业务需要,可以将该DS注解方法定义在不同的类中,通过bean注入的方式调用,就不会出现这个问题。在事务方法内调用@DS注解的方法,@DS注解同样不生效,原因是spring只能拦截到最外层方法的@Transactional注解,此时加载该事务的数据源,在事务方法内即使调用了@DS注解的方法,获取的是外层事务的数据源,导致@DS失效。原创 2024-03-14 11:00:47 · 978 阅读 · 0 评论 -
【业务功能篇140】ConcurrentHashMap缓存用户信息
ConcurrentHashMap的简要总结:1、public V get(Object key)不涉及到锁,也就是说获得对象时没有使用锁;2、put、remove方法要使用锁,但并不一定有锁争用,原因在于ConcurrentHashMap将缓存的变量分到多个Segment,每个Segment上有一个锁,只要多个线程访问的不是一个Segment就没有锁争用,就没有堵塞,各线程用各自的锁,ConcurrentHashMap缺省情况下生成16个Segment,也就是允许16个线程并发的更新而尽量没有锁争用。原创 2024-03-12 09:48:43 · 465 阅读 · 0 评论 -
Spring中什么样的Bean存在线程安全问题-有状态bean
在Spring容器中,除了很多Spring内置的Bean以外,其他的Bean都是我们自己通过Spring配置来声明的,然后,由Spring容器统一加载。基于对以上Spring Bean作用域的理解,下面,我们来分析一下在Spring容器中,什么样的Bean会存在线程安全问题。(是否延时加载)等。所以,可想而知,无状态的单例Bean是不存在线程安全问题的。但是,在多线程操作中如果需要对Bean中的成员变量进行数据更新操作,这样的Bean称之为有状态Bean,所以,有状态的单例Bean就可能存在线程安全问题。原创 2024-03-11 16:18:01 · 377 阅读 · 0 评论 -
【业务功能篇139】@Autowired和实现ApplicationContextAware获取容器bean的区别
Autowire。原创 2024-03-11 15:34:27 · 863 阅读 · 0 评论 -
【业务功能篇138】SpringBoot中的事务传播属性运用REQUIRED、REQUIRES_NEW、NESTED 只读属性运用readOnly
假如当前正要运行的事务不在另外一个事务里,那么就起一个新的事务 比方说,ServiceB.methodB的事务级别定义PROPAGATION_REQUIRED, 那么因为执行ServiceA.methodA的时候,ServiceA.methodA已经起了事务。此外,只读事务不能保证数据的一致性,因为在只读事务中,数据可能已经被其他事务修改了,因此在使用只读事务时需要注意这一点。此外,只读事务不能保证数据的一致性,因为在只读事务中,数据可能已经被其他事务修改了,因此在使用只读事务时需要注意这一点。原创 2024-03-10 11:52:30 · 951 阅读 · 0 评论 -
【业务功能篇134】Mysql 连接池HikariCP配置
其中,connection-timeout是连接超时时间,idle-timeout是空闲连接池的超时时间,pool-size是连接池的大小,minimum-idle是连接池中最小的空闲连接数,maximum-pool-size是连接池中最大的连接数,transaction-isolation是事务隔离级别。这意味着在同一时间点,最多可以有10个连接可供使用。其中,url是数据库连接的URL,username和password是登录数据库的用户名和密码,driver-class-name是数据库驱动的类名。原创 2024-01-24 20:10:03 · 868 阅读 · 0 评论 -
【业务功能篇133】 Mysql连接串优化性能问题
可以获得许多优点,从而提高数据库插入性能、减轻负载以及简化代码。MyBatis Plus框架自带的批处理方法 可以直接调用使用,但是要注意mysql连接串要配置参数为true 否则这个性能还是不会起来。1.可以在sql语句后携带分号,实现多语句执行。是一种高效的数据库操作方式。原创 2024-01-24 20:05:50 · 457 阅读 · 0 评论 -
【业务功能126】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere部署三高微服务项目-06部署流水线
2.项目中的deploy.yaml文件存在一些变量传值比如镜像设置, 通过envsubst命令,找到在之前配置流水线配置的环境变量值进行替换赋值 image: $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest。表示运行流水线传递的参数PROJECT_VERSION 是 v开头,那么则进行后续步骤。1.创建.kube 目录 ,将变量配置文件写入 config文件,3. 赋值好之后,apply进行部署。原创 2023-09-22 10:03:44 · 77 阅读 · 0 评论 -
【业务功能篇112】Springboot + Spring Security 权限管理-登录模块开发实战
Component@Override//状态码 401ServletUtils.renderString(response, JSON.toJSONString(BaseResponse.fail(code.toString(),"认证失败,无法访问系统资源")));/*** 用户登录对象**//*** 用户名*//*** 用户密码*//*** 验证码*//*** 唯一标识*/添加permissions属性和构造方法/*** 用户信息。原创 2023-09-21 18:08:29 · 1454 阅读 · 0 评论 -
【业务功能118】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-OpenELB部署及应用
网址: openelb.ioOpenELB 是一个开源的云原生负载均衡器实现,可以在基于裸金属服务器、边缘以及虚拟化的 Kubernetes 环境中使用 LoadBalancer 类型的 Service 对外暴露服务。OpenELB 项目最初由 KubeSphere 社区发起,目前已作为 CNCF 沙箱项目加入 CNCF 基金会,由 OpenELB 开源社区维护与支持。与 MetalLB 类似,OpenELB 也拥有两种主要工作模式:Layer2 模式和 BGP 模式。原创 2023-09-18 21:29:46 · 1640 阅读 · 1 评论 -
【业务功能117】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-公共服务 Harbor镜像仓库
使用阿里云开源软件镜像站。原创 2023-09-16 17:53:34 · 93 阅读 · 0 评论 -
【业务功能116】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-公共服务 DNS
【代码】【业务功能116】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-公共服务 DNS。原创 2023-09-16 17:46:10 · 632 阅读 · 0 评论 -
【业务功能115】微服务-springcloud-springboot-Kubernetes-k8s集群-Kubesphere实现DevOps流水线-CI/CD-SonarQube- Jenkins
持续集成是指软件个人的部分向软件整体部分交付,频繁进行集成以便更快地发现其中错误。全面的自动化测试这是实践持续集成&持续部署的基础,同时,选择合适的自动化测试工具也很重要灵活的基础设施容器、虚拟机的存在让开发人员和QA人员不必再大费周张去做IT基础设施环境的准备版本控制工具如:Git、SNV、Gitlab等自动化的构建和软件发布流程工具如:Jenkins Gitlab Tekton等反馈机制如果构建/测试失败,可以快速地反馈到相关负责人,以尽快速度解决问题,实现软件开发稳定版本推出。原创 2023-09-16 17:39:07 · 1548 阅读 · 0 评论 -
【业务功能114】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere发布应用WordPress
WordPress(使用 PHP 语言编写)是免费、开源的内容管理系统,用户可以使用 WordPress 搭建自己的网站,大多数博客网站都是基于它实现。完整的 WordPress 应用程序包括以下 Kubernetes 对象,由 MySQL 作为后端数据库。原创 2023-09-16 15:01:37 · 498 阅读 · 0 评论 -
【业务功能113】微服务-springcloud-springboot-Kubernetes集群-kubesphere多租户管理系统应用-创建DevOps- Kubesphere开启devops功能
KubeSphere 的多租户系统分层级,即集群、企业空间和项目。您需要创建一个新的企业空间进行操作,而不是使用系统企业空间,系统企业空间中运行着系统资源,绝大部分仅供查看。出于安全考虑,强烈建议给不同的租户授予不同的权限在企业空间中进行协作。可以在一个 KubeSphere 集群中创建多个企业空间,每个企业空间下可以创建多个项目。原创 2023-09-16 12:31:22 · 391 阅读 · 0 评论 -
【业务功能篇112】maven 指定打包某个module子模块 打包命令参数
am --also-make 构建所列模块的所有依赖模块;-pl --projects 构建制定的模块,模块间用逗号分隔;原创 2023-09-15 18:22:45 · 1964 阅读 · 0 评论 -
【业务功能111】微服务-springcloud-springboot-Kubernetes集群-PaaS云平台Kubesphere部署-NFS持久存储-开启devops功能
在安装之前,需要配置kubernetes上的默认存储类型。原创 2023-09-13 20:38:28 · 203 阅读 · 0 评论 -
【业务功能110】微服务-springcloud-springboot-Kubernetes集群部署-kubeadm极速部署-Docker安装
3.虚拟机是由 配置文件 + 硬盘 组成, 那么我们接下来的三台虚拟机部署,就直接用前面的虚拟机模板中的硬盘,来创建(在前面指定的安装目录下 后缀是vmdk的就是磁盘文件),因为系统都已经安装好在硬盘,所以利用模板去安装剩余的三台真实要使用的虚拟机,就很快了,减少重复的安装步骤。4.分别创建三个文件夹,存放三个虚拟机,将前面模板机的vmdk磁盘文件都放到三个文件夹中,然后继续进行三次安装虚拟机操作,只是其中的 磁盘选项步骤,就是选择现有的对应目录下的模板机的磁盘。所有集群主机均需要进行配置。原创 2023-09-13 20:35:43 · 541 阅读 · 0 评论 -
【业务功能109】微服务-springcloud-springboot-Skywalking-链路追踪-监控
Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。数据存储支持:Elasticsearch、MySQL、H2、TiDB。默认是H2,而且是存到内存。实际我们一般将其存到ES。主页:http://skywalking.apache.org/原创 2023-09-13 14:39:21 · 1789 阅读 · 0 评论 -
【业务功能篇108】CDN Nginx
总的来说,CDN和Nginx都可以用于提高静态资源的访问效率,但它们有不同的用途和优势。通常,大型网站可能会同时使用CDN和Nginx来最大程度地提高性能和可用性。CDN用于分发全球静态资源,而Nginx用于缓存和加速内容传输,以及为后端服务器提供反向代理和负载均衡功能。原创 2023-09-12 20:41:59 · 370 阅读 · 0 评论 -
【业务功能107】微服务-springcloud-springboot-Sentinel容器安装-熔断降级限流
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。2012 年,Sentinel 诞生,主要功能为入口流量控制。2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。2018 年,Sentinel 开源,并持续演进。原创 2023-09-12 20:15:17 · 550 阅读 · 0 评论 -
【业务功能篇106】 微服务-springcloud-springboot-电商订单模块--秒杀服务-定时任务【下篇】
秒杀活动必须是在登录状态下进行的,如果没有认证就不让秒杀。当然我们一般是把用户信息存在reids缓存,所以redis依赖也是要引入的。按钮后,对应我们需要把当前的商品信息提交到后端服务。通过拦截器处理:在秒杀活动中并不是所有的请求都是需要在登录状态下的,所有这个拦截器应该只需要拦截部分的请求。秒杀成功后给RocketMQ发送消息,订单服务订阅消息,实现异步下单,从而降低了对秒杀系统的影响。校验的内容有四块:时效性,随机码是否合法,是否满足限购条件,还有幂等性。前端提交的秒杀请求,在后端具体的处理。原创 2023-09-11 17:58:21 · 162 阅读 · 0 评论 -
【业务功能篇105】 微服务-springcloud-springboot-电商订单模块--秒杀服务-定时任务【上篇】
秒杀活动的结构图0 * * * *?每1分钟触发一次0 0 * * *?每天每1小时触发一次0 0 10 * *?每天10点触发一次0 * 14 * *?在每天下午2点到下午2:59期间的每1分钟触发0 30 9 1 *?每月1号上午9点半每月15日上午10:15触发每隔5秒执行一次每隔1分钟执行一次每天5-15点整点触发每三分钟触发一次0 0 0 1 *?每月1号凌晨执行一次。原创 2023-09-11 17:53:14 · 495 阅读 · 0 评论 -
【业务功能篇104】 补充【业务功能篇99】微服务-springcloud-springboot-电商订单模块--整合支付
在前面我们,我们介绍了电商项目中的订单模块服务,那么最后就是需要进行支付动作,那么我们这里就通过订阅第三方平台支付宝的支付调用接口功能,来进一步完成订单提交后的支付动作,支付宝的接口使用可以登录官网开发指南详情去了解。原创 2023-09-11 17:47:19 · 358 阅读 · 0 评论 -
【业务功能篇102】springboot+mybatisPlus分页查询,统一返回封装规范
分页查询原创 2023-09-08 11:08:55 · 1041 阅读 · 0 评论 -
【业务功能101】微服务-springcloud- 分布式事务-本地事务ACID-隔离级别-传播属性-CAP定理-BASE定理-分布式事务解决方案2PC/TCC/seata-RocketMQ
我们在分布式环境下一个业务可能会涉及到多个模块之间的调用,为了保证操作的原子性,分布式事务是最好的解决方案。原创 2023-09-07 11:47:02 · 604 阅读 · 0 评论 -
【业务功能100】补充代码【业务功能88】微服务-springcloud-分布式锁-redis-redisson-springcache
然后基于分布式集群,需要结合本地锁(synchronized )与分布式锁(redissonClient.getLock(“catelog2JSON-lock”)),避免多次重复访问数据库。原先从mysql数据库查询的效率较低,现在将部分固定数据展示比如页面的树形栏目信息等,存储到。与业务逻辑解耦,使用更方便。原创 2023-09-07 10:57:50 · 463 阅读 · 0 评论 -
【业务功能篇99】微服务-springcloud-springboot-电商订单模块-生成订单服务-锁定库存
如果下订单操作成功(订单数据和订单项数据)我们就会操作锁库存的行为。一个是需要生成订单信息一个是需要生成订单项信息。没有库存或者锁定库存失败我们通过自定义的异常抛出。锁定库存的操作,需要操作ware仓储服务。锁定库存失败通过抛异常来使订单操作回滚。原创 2023-09-06 10:45:33 · 813 阅读 · 0 评论 -
【业务功能篇98】微服务-springcloud-springboot-电商订单模块-接口幂等性处理-订单提交防重检查-Fegin调用远程服务的时候会出现请求Header丢失的问题及解决方案
我们需要把相关的静态资源拷贝到nginx,然后动态模板文件拷贝到order项目的templates目录下,然后调整资源的路径。在网关中设置对应的路由即可。原创 2023-09-06 10:43:57 · 248 阅读 · 0 评论 -
【业务功能篇97】微服务-springcloud-springboot-电商购物车模块-获取当前登录用户的购物车信息
我们需要先创建一个cart的微服务,然后添加相关的依赖,设置配置,放开注解。原创 2023-09-04 20:03:32 · 1085 阅读 · 0 评论 -
【业务功能篇96】微服务-springcloud-springboot-认证服务-登录注册功能-Auth2.0-分布式session
通过最基础的登录操作来完成登录处理登录页面处理认证服务的处理会员中心的认证逻辑service中的具体认证处理。原创 2023-09-04 15:17:05 · 2057 阅读 · 1 评论 -
【业务功能篇95】web中的重定向与转发
转发:适用于在同一个应用程序内部的不同组件之间进行页面导航,保持URL不变,共享数据。重定向:适用于跨域页面跳转,或在不同的Web应用程序之间导航,或者在处理表单提交后避免用户刷新时的表单重复提交。重定向:重定向是在客户端浏览器中进行的页面跳转。重定向:重定向是由服务器发送给浏览器的响应,浏览器会根据新的URL地址发起新的请求。转发:转发是服务器内部的操作,浏览器不知道它发生了转发,URL地址保持不变。转发:转发通常比重定向更快,因为它在服务器内部完成,不需要额外的网络请求。重定向:重定向不会共享数据。原创 2023-09-02 22:46:18 · 526 阅读 · 0 评论