
Java技术栈
文章平均质量分 59
Java技术栈
后端码匠
道阻且長,行則將至
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Starter 】Spring Boot 3.x 自定义封装Starter 实战
某些中间件没有官方 Starter 支持,开发者需要自行引入相关依赖并手动配置。Spring Boot 版本更新后,部分官方 Starter 未能及时更新,导致无法兼容新版本。在企业中,技术负责人或架构师通常会根据项目的实际需求,封装属于自己团队的自定义 Starter。这种自定义 Starter 通过统一的规范与配置,极大地简化了项目的开发流程,提升了开发效率。例如,封装数据库访问、认证授权、消息服务等,所有项目组成员都可以统一使用,提高了代码的规范性和一致性。,如。,如。原创 2024-09-05 10:17:35 · 1252 阅读 · 0 评论 -
官网上下载tomcat的linux版本
https://archive.apache.org/dist/tomcat/原创 2019-12-02 12:33:17 · 920 阅读 · 0 评论 -
【Java】cmd 启动 Tomcat
首先把项目打包成war包,打开文件夹“Tomcat部署文件”,将该文件夹中的文件拷贝到目录拷贝到你的目录)下。原创 2019-11-24 13:22:00 · 925 阅读 · 0 评论 -
【Java】NoClassDefFoundError: org/mybatis/logging/LoggerFactory
完整错误org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependency原创 2020-12-31 19:53:11 · 10111 阅读 · 11 评论 -
SpringBoot-@PathVariable
URL变量在上一个博客中,学习了如何在@Controller中创建@RequestMapping(或者响应的简写)来处理不同的URL请求。但是在Web应用中URL通常不是一成不变的,例如微博两个不同用户的个人主页对应两个不同的URL:http://weibo.com/user1,http://weibo.com/user2。我们不能对于每一个用户都编写一个被@RequestMapping注解的方...原创 2019-12-10 10:58:50 · 218 阅读 · 0 评论 -
第三方服务整合-阿里云OSS上传文件-填坑
如下,引入aliyun-oss失败:com.alibaba.cloud:aliyun-oss-spring-boot-starter:unknown原因:在2.2.0.RELEASE以后的版本中,OSS依赖被转移到了alibaba/aliyun-spring-boot仓库中。需引入阿里云服务 Spring Boot Starters 工程的依赖管理。解决方法<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://原创 2021-02-17 12:28:08 · 2808 阅读 · 7 评论 -
HttpSecurity初步理解
为什么会有 web security 这么个东西存在?为了阻止假用户冒充真实用户访问网站,所以需要 认证(authentication)。为了阻止真实用户访问本不是他应该访问的页面,所以需要授权(authorization)。为了阻止真实用户与网站之间传输的信息被第三方窃听到,所以需要加密(encryption)。Spring Security是一个强大的、可根据需求高度自定义的用户认证和访问控制框架。Spring Security 怎么保证所有向 Spring application 发送请求原创 2020-12-23 09:02:56 · 1533 阅读 · 0 评论 -
JPA注解@Enumerated映射枚举字段
在javax.persistence包中有这么两个注解@Enumerated,@EnumType */@Target({METHOD, FIELD})@Retention(RUNTIME)public @interface Enumerated { /** (Optional) The type used in mapping an enum type. */ EnumTy...原创 2019-11-04 09:30:36 · 1862 阅读 · 0 评论 -
执行删除操作返回没被删除的信息
本次业务实在原来的返回信息基础上附加一些其他信息(附加信息大包dto)原ChoiceQstDtopublic class ChoiceQstDto { private String id; private String title; private String qstType; @ResourceJsonBaseURL private String c...原创 2019-11-05 11:11:13 · 313 阅读 · 0 评论 -
【排错】net::ERR_ABORTED 404
先说说为什么导不进去,心急的同学可以直接查看解决方法出现这个问题是springboot在启动的时候没有带上static下的js和css文件一起跑,还有可能出现只带一部分跑原创 2019-12-11 16:03:04 · 12273 阅读 · 6 评论 -
Spring-Data-JPA 动态查询黑科技
在开发中,用到动态查询的地方,所有的查询条件包括分页参数,都会被封装成一个查询类XxxQuery比如说上一篇中的Item那么ItemQuery就像这样@Datapublic class ItemQuery { private Integer itemId;//id精确查询 = private String itemName;//name模糊查询 like //价格查询...原创 2019-11-04 09:26:17 · 504 阅读 · 0 评论 -
【Java进阶】初识SpringCloud
初识SpringCloudSpring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。Spring Cloud 是什么?Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行原创 2020-09-13 10:43:57 · 245 阅读 · 0 评论 -
【Java进阶】Eureka讲解与应用
Eureka[juˈriːkə]简介Eureka是Netflix服务发现的服务端与客户端,Eureka提供服务注册以及服务发现的能力,当是Eureka Server时(注册中心),所有的客户端会向其注册,当是Eureka Client时,可以从注册中心获取对应的服务信息,或者是向Eureka Server将自己作为实例注册进去,每个Eureka不仅仅是一个服务端同时还是一个客户端。注册中心当Eureka想要成为注册中心时,必须将注册中心的服务地址指向自己,同时禁用服务检索的功能。Eureka是一个高原创 2020-09-12 07:30:31 · 654 阅读 · 1 评论 -
【Java进阶】Ribbon讲解实现案例
RibbonRibbon [ˈrɪbən]Ribbon是什么Spring Cloud Ribbon是一个基于HTTP和TCP的 客户端 负载均衡 工具简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去原创 2020-09-12 10:02:36 · 506 阅读 · 0 评论 -
【Java进阶】云存储-创建子模块作为第三方整合模块
云存储-创建子模块作为第三方整合模块创建子模块mall-third-party 整合阿里云OSS等第三方模块pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mav原创 2021-04-13 08:22:48 · 289 阅读 · 1 评论 -
RedisUtils
RedisUtilspackage cn.com.codingce.utils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.util.CollectionU原创 2021-01-10 15:08:28 · 224 阅读 · 0 评论 -
基于前后端分离实现阿里云对象存储小案例
前端: vue单文件上传组件<template> <div> <el-upload action="https://codingce-product.oss-cn-beijing.aliyuncs.com" :data="dataObj" list-type="picture" :multiple="false" :show-file-list="showFileList" :file-list="f原创 2021-02-17 17:17:03 · 404 阅读 · 0 评论 -
【Java进阶】SpringBoot整合Redis
SpringBoot整合SpringBoot 操作数据:spring-data jpa jdbc mongodb redisSpringData 也是和 SpringBoot 齐名的项目源码分析 @Bean @ConditionalOnMissingBean( name = {"redisTemplate"} // 我们自己可以自定义一个 redisTemplate 来替换这个默认的 ) public RedisTemplate<Obje原创 2021-01-10 15:05:08 · 257 阅读 · 1 评论 -
【OpenFeign】OpenFeign 简介和使用以及对比 Feign
官网:https://spring.io/projects/spring-cloud-openfeign文档:https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/配置:https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/appendix.htmlOpenFeign是一个显示声明式的WebService客户端。原创 2024-12-15 15:18:34 · 772 阅读 · 0 评论 -
【Java】DigestHttpClientUtil
DigestHttpClientUtil原创 2024-06-18 10:19:53 · 488 阅读 · 0 评论 -
【EasyExcel】多sheet、追加列
最近接到一个导出Excel的业务,需求就是多sheet。原本使用的 pig4cloud 架子,使用 @ResponseExcel注解方式组装返回数据即可,但是实现过程中发现并不是所想要的效果。组件地址:https://github.com/pig-mesh/excel-spring-boot-starter这样写能够实现多 sheet 导出,但是动态的移除列然后在追加列我尝试了并没有好的方案,有可能也是我没有找到,我找到的是下面面动态的修改列名称。多 sheet导出,只需要返List即可。原创 2024-03-31 21:28:33 · 2735 阅读 · 0 评论 -
【Java】线程池八股文一
作为 JUC 包下的门面担当,线程池是名副其实的 JUC 一哥,不了解线程池,那说明你对 JUC 包其他工具也了解的不咋样吧,对 JUC 没深入研究过,那就是没掌握到 Java 的精髓,给面试官这样一个印象,那结果可想而知了。可以这样说:计算机发展到现在,摩尔定律在现有工艺水平下已经遇到难易突破的物理瓶颈,通过多核 CPU 并行计算来提升服务器的性能已经成为主流,随之出现了多线程技术。原创 2023-09-12 13:35:12 · 348 阅读 · 0 评论 -
【MySQL】count()查询性能梳理
使用的数据库是MySQL8,使用的存储引擎是Innodb。通常情况下,分页接口一般会查询两次数据库,第一次是获取具体数据,第二次是获取总的记录行数,然后把结果整合之后,再返回。它没有性能问题。却存在性能差的问题。为什么会出现这种情况呢?原创 2023-07-03 11:26:49 · 1300 阅读 · 2 评论 -
【Redis】数据被删除,内存占用还这么大?
内存碎片会造成明明有内存空间空闲,可是却无法存储数据。举个例子,你跟漂亮小姐姐去电影院看电影,肯定想连在一块。假设现在有 8 个座位,已经卖出了 4 张票,还有 4 张可以买。可是好巧不巧,买票的人很奇葩,分别间隔一个座位买票。即使还有 4 个座位空闲,可是你却买不到两个座位连在一块的票,厚礼蟹!如果你发现明明 Redis 存储数据的内存占用远小于操作系统分配给 Redis 的内存,而又无法保存数据,那可能出现大量内存碎片了。原创 2023-07-03 11:12:05 · 289 阅读 · 0 评论 -
【Java】Spring Boot配置动态数据源
通过实现Spring提供的AbstractRoutingDataSource类,可以实现自己的数据源选择逻辑,从而可以实现数据源的动态切换。1.2 创建动态数据源配置类跟配置静态多数据源一样,需要手动配置下面的三个 Bean,只不过DynamicDataSource类的targetDataSources是空的。1.3 创建动态数据源服务类这是一个比较核心的工具类,提供了一些静态方法从而可以实现一些功能,包括:、、、。在 DynamicDataSource 类中,就是调用了 DynamicData原创 2023-06-30 09:50:51 · 2689 阅读 · 1 评论 -
【CentOS】VirtualBox yum 无法使用
执行修改命令,ifcfg-xxx 后面的xxx就是上面的网卡信息。修改文件,把ONBOOT=no,改为ONBOOT=yes。进入系统,修改网卡信息。然后就可以正常的联网了。原创 2023-06-30 09:39:59 · 854 阅读 · 0 评论 -
【Java】文本数据的Gzip压缩
在Java中,可以使用Gzip压缩算法对数据进行压缩和解压缩。Gzip算法是一种常见的无损压缩算法,可以将数据压缩为较小的字节数,从而节省网络带宽和存储空间等资源。原创 2023-05-31 11:56:56 · 2733 阅读 · 1 评论 -
【Android】NDK开发Crash分析
如上所示,通过addr2line工具,可以看到libndkpractice.so文件中地址000000000000f1f0对应的源码是什么了,它对应的是源码中app/src/main/cpp/native-lib.cpp:7处代码,查看上下文后,确定为空指针问题。等表示的都是函数调用栈中栈帧的编号,其中编号越小的栈帧表示着当前最近调用的函数信息,所以栈帧标号#00表示的就是当前正在执行并导致程序崩溃函数的信息。则表示的是当前执行指令是在哪个文件当中,后面的小括号则是注明对应的是哪个函数。原创 2022-11-21 18:09:57 · 5085 阅读 · 1 评论 -
【Android】NDK封装日志库
Created by 后端码匠 on 2022/11/30.原创 2022-11-30 16:45:26 · 850 阅读 · 0 评论 -
【Android】JNI静态与动态注册介绍
JNI(Java Native Interface),即Java本地接口,JNI是Java调用Native 语言的一种特性。通过JNI可以使得Java与C/C++机型交互.方式静态注册动态注册:需要提供Java中Native方法的方法签名和Native层中对应的实现函数。原创 2022-12-01 12:10:41 · 1890 阅读 · 0 评论 -
【LeetCode】字符串变形
请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。原创 2023-01-31 17:39:49 · 255 阅读 · 0 评论 -
【Java】Mybatis Plus LambdaQueryWrapper梳理
为了更方便的实现动态 SQL,Mybatis Plus 在其基础上扩展了 LambdaQueryWrapper,LambdaQueryWrapper 提供了更加简便的查询语法,同时也避免了 SQL 注入的风险。LambdaQueryWrapper 实现了的全部功能,并提供了基于Lambda表达式的查询方式,使得查询语法更加优雅。使用 LambdaQueryWrapper,可以方便的实现各种查询条件的拼接,如whereandorinlikebetween等条件。原创 2023-03-17 09:52:31 · 7037 阅读 · 0 评论 -
【Java】@EnableAsync@Async使用总结
在使用多线程的时候,往往需要继承Thread类,或者,如果要使用到线程池,还需要来创建Executors,在Spring中已经做了很好的支持。只要要就可以使用多线程。使用@Async就可以定义一个线程任务。通过Spring提供的就可以使用线程池。默认情况下,Spring将搜索相关的线程池定义:要么在上下文中搜索唯一的,要么搜索名为“”的。如果两者都无法解析,则将使用来处理异步方法调用。原创 2023-03-13 12:49:01 · 2121 阅读 · 1 评论 -
【Java】Spring Boot整合WebSocket
WebSocket是一种协议,用于实现客户端和服务器之间的双向通信。它可以在单个TCP连接上提供全双工通信,避免了HTTP协议中的请求-响应模式,从而实现更高效的数据交换。WebSocket协议最初由HTML5规范提出,现在已成为一种通用的网络协议,被广泛用于Web应用程序中。WebSocket协议在Web应用程序中广泛使用,例如实现实时通信、在线游戏、即时消息等功能。原创 2023-03-05 17:48:09 · 3654 阅读 · 4 评论 -
【Java】Spring Boot 2 集成 Nacos
采用自定义的命名空间进行测试,新建命名空间。这里我们已经创建完了,就截一张编辑图片.,nacos-discovery版本。,nacos-config 版本。本次Springboot版本。测试可以实现动态的配置变更.测试可以实现动态的配置变更.原创 2023-02-26 11:00:38 · 1436 阅读 · 0 评论 -
【Java】“com.alibaba.fastjson.JSONObject cannot be cast to“报错问题
通过 debug 断点可以看到,这里拿到虽然是 List,但是里面的对象还是一个 JSONObject,并不是我们需要的 DTO 类,所有导致了后面的报错。查到问题根源,只要把这里的对象转化为我们的 DTO 类就行了,就可以避免报错。原创 2023-02-24 09:33:43 · 10990 阅读 · 0 评论 -
【设计模式】单例模式
单例模式(Singleton Pattern):确保一个类有且只有一个实例,并提供一个全局访问点。在开发中,很多时候有一些对象其实我们缓存(cache)默认设置日志对象等等,这个时候把它设计为单例模式是最好的选择。Java中单例模式是一种广泛使用的设计模式,单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间(比如spring管理的无状态bean);还由于操作多个实例导致的逻辑错误。原创 2023-01-20 10:42:18 · 1674 阅读 · 1 评论 -
【Java】阻塞队列
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这2个附加的操作支持阻塞的插入和移除方法。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。原创 2023-01-09 10:51:01 · 471 阅读 · 0 评论 -
【Kafka】八股文梳理
可以通过实现 org.apache.kafka.clients.consumer.internals.PartitionAssignor 接口来实现。原创 2023-01-08 21:48:36 · 5105 阅读 · 4 评论 -
【MySQL】为什么使用B+树做索引
本篇文从二叉查找树,详细说明了为什么MySQL用B+树作为数据的索引,以及在innodb中数据库如何通过B+树索引来存储数据以及查找数据。一定要记住这句话:数据即索引,索引即数据。原创 2023-01-08 21:47:00 · 971 阅读 · 2 评论