
Java开发
文章平均质量分 84
不止是后端技术,更强调前后端分离开发。
SpringBoot、SpringCloud全家桶、分布式开发、微服务、缓存、消息队列
单点登录、前后端分离、分布式事务、高并发处理
蜗牛学苑_武汉
这个作者很懒,什么都没留下…
展开
-
工厂方法 模式 【Factory Method Pattern】
工厂方法模式还有一个非常重要的应用,就是延迟始化(Lazy initialization)原创 2024-11-28 19:48:03 · 265 阅读 · 0 评论 -
Classpath 在哪?
Java classpath在哪里原创 2024-11-20 20:40:17 · 629 阅读 · 0 评论 -
MySQL 的认证插件
MySQL数据库认证插件2059错误 解决原创 2024-11-13 20:27:52 · 303 阅读 · 0 评论 -
Promise 对象
JavaScript 是一个单线程的编程语言,通过异步、回调函数来处理各种事件原创 2024-11-10 23:32:18 · 849 阅读 · 0 评论 -
Prometheus+Grafana实现企业级监控
目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。官网:https://grafana.com/zh-cn/grafana/原创 2024-11-05 14:10:39 · 460 阅读 · 0 评论 -
Prometheus+Grafana实现企业级监控
目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。官网:https://grafana.com/zh-cn/grafana/原创 2024-11-05 14:09:08 · 1065 阅读 · 0 评论 -
浏览器中的事件循环
浏览器是多进程的,每当你打开一个 Tab ,都会有一个进程被系统创建出来。 这就是为什么你会在任务管理器中看见多个 chrome.exe 的原因。原创 2024-11-04 11:32:36 · 985 阅读 · 0 评论 -
Lombok 常用注解
Lombok是一个Java库,提供一些实用的注解来简化Java代码的编写。它可以自动生成常见的Java代码,如getter、setter、构造函数、toString方法、hashCode和equals方法等。这些注解可以使Java代码更加简洁、易读、易维护,从而提高Java应用程序的开发效率。原创 2024-10-13 23:32:49 · 934 阅读 · 0 评论 -
Java 的引用和对象
「是否完全掌握 Java 的引用?」是 Java 基础是否入门的重要标志,甚至没有之一。相较于其它的 Java 基础问题,其它问题都是语法层面的熟悉度、熟练度的问题,基本是不用动脑子思考的,直接怼就完事了。只有「Java 的引用」在概念上需要反复揣摩思考,才能彻底掌握。原创 2024-10-06 00:18:57 · 806 阅读 · 0 评论 -
Springboot3保存日志到数据库
请求日志几乎是所有大型企业级项目的必要的模块,请求日志对于我们来说后期在项目运行上线一段时间用于排除异常、请求分流处理、限制流量等。请求日志一般都会记录请求参数、请求地址、请求状态(Status Code)、SessionId、请求方法方式(Method)、请求时间、客户端IP地址、请求返回内容、耗时等等。如果你得系统还有其他个性化的配置,也可以完成记录。在实际的项目中,特别是管理系统中,对于那些重要的操作我们通常都会记录操作日志。原创 2024-09-28 10:37:54 · 1332 阅读 · 0 评论 -
java通过redis完成幂等性操作
第二阶段:注册页面拿着申请到的token发起注册请求,控制器会获取客户端发送的token,然后去检查redis中有没有该token,如果存在,则表示是一次发出注册请求,则开始处理注册逻辑,处理完毕后并从redis中删除当前token;第一阶段,在进入到注册页面之前,需要注册页面根据用户信息向后台控制器发送一次请求,申请token,后台控制器会将生成的token回送给客户端,同时也会将token存入redis缓存中,为第二阶段的注册业务使用。幂等这个词源自数学,幂等性是数学中的一个概念,常见于抽象代数中。原创 2024-09-27 14:30:15 · 1181 阅读 · 0 评论 -
Swagger3基本使用
在Swagger 2.0后,Swagger规范正式更名为OpenAPI规范,并且根据OpenAPI规范的版本号进行了更新。因此,Swagger 3.0对应的就是OpenAPI 3.0版本,它是Swagger在OpenAPI阶段推出的一个重要版本。而 swagger 相关的 .html 等静态资源是在依赖包含的 swagger-ui 项目(jar包) 下。启动项目后输入:http://localhost:8080/swagger-ui/index.html 可看到swagger页面。原创 2024-09-27 14:28:44 · 2159 阅读 · 0 评论 -
设计模式之代理模式
代理模式与动态代理模式的对比原创 2024-09-19 19:53:27 · 1062 阅读 · 0 评论 -
SpringBoot3整合ELK实现日志可视化
Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统ELK中各个服务的作用Elasticsearch:用于存储收集到的日志信息;Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给Logstash,Logstash再把日志转发给Elasticsearch;Kibana:通过Web端的可视化界面来查看日志。原创 2024-09-12 16:18:44 · 816 阅读 · 0 评论 -
MySQL 解决时区相关问题
为了保证不出现存取的日期时间有偏差的情况,大家务必确保如下几点:1. MySQL Server 所在的服务器的系统时区尽量是正确的、真实的、物理时区;2. 无论服务器的系统时区是否是对的,MySQL Server 的 time_zone 的值要通过修改配置文件的方式,一劳永逸地确定下来,保证是正确的、真实的、物理时区;3. JDBC 的 URL 中现在规定必须要带上 serverTimezone 参数,这个参数的值必须是 MySQL。原创 2024-09-10 21:08:52 · 1426 阅读 · 0 评论 -
SpringBoot整合Email
测试时需要将 spring.mail.username 和 spring.mail.password 改成自自己邮箱对应的登录名和密码,这里的密码不是邮箱的登录密码,是开启 POP3 之后设置的客户端授权密码。因为springboot提供了java操作邮件发送的启动器,所以在springboot 项目中完成邮件发送的功能,还是很简单、方便的。和文本邮件发送代码对比,富文本邮件发送使用 MimeMessageHelper 类,该类支持发送复杂邮件模板,支持文本、附件、HTML、图片等。原创 2024-09-06 18:36:33 · 1139 阅读 · 0 评论 -
网络编程-echo-back-server-上
Echo-Back-Server 是在学习 TCP/IP 网络编程时惯常使用、实现的一个服务端原创 2024-09-02 23:24:59 · 1057 阅读 · 0 评论 -
Springboot3整合ELK实现日志可视化
Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给Logstash,Logstash再把日志转发给Elasticsearch; 复制ik分词器到/usr/local/elasticsearch/plugins目录中即可。Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统。是否有镜像,可通过 docker images 命令查看。创建/usr/local/kibana/config/kibana.yml。原创 2024-08-30 11:30:00 · 986 阅读 · 0 评论 -
SpringBoot整合Minio完成图片上传
基于Springmvc整合Minio时,我们在MinioConfig中注入过MinioClient对象,而MinioClient对象就是操作minio服务器的核心对象,该对象提供了在minio服务器上创建桶、上传文件,分享外链给用户使用的功能。在商品信息管理时,我们可能会对商品的封面照片进行修改。用户头像显示问题:element组件中el-table默认循环时,没有给每一行指定key,用于标识数据渲染的位置,所以在使用el-avatar显示图片时,会出现图片url地址正确的情况下,图片无法正常显示问题,原创 2024-08-28 18:41:26 · 1186 阅读 · 0 评论 -
JVM理论篇(一)
深入了解JVM类加载子系统原创 2024-08-27 00:01:30 · 1361 阅读 · 0 评论 -
规范化JavaBean
Java Bean 是一个很常见的概念,简单来说就是一个 Java 类,其中的内容就是各种属性,以及各个属性的getter/setter原创 2024-08-20 22:33:06 · 1157 阅读 · 1 评论 -
SpringSecurity6
是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring IoC(Inversion of Control 控制反转),DI(Dependency Injection 依赖注入)和 AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。对身份验证和授权的全面且可扩展的支持防御会话固定、点击劫持,跨站请求伪造等攻击。原创 2024-08-20 19:23:30 · 1060 阅读 · 0 评论 -
多线程的典型应用场景---多个生产者多个消费者对共享资源的处理
多线程的典型应用场景原创 2024-08-14 20:44:36 · 251 阅读 · 0 评论 -
Micrometer Tracing和Zipkin实现链路追踪
Zipkin是一种分布式链路跟踪系统图形化的工具,Zipkin 是 Twitter 开源的分布式跟踪系统,能够收集微服务运行过程中的实时调用链路信息,并能够将这些调用链路信息展示到Web图形化界面上供开发人员分析,开发人员能够从ZipKin中分析出调用链路中的性能瓶颈,识别出存在问题的应用程序,进而定位问题和解决问题。在Micrometer Tracing中,每个请求都被赋予一个唯一的跟踪ID,跟踪ID会被传递到所有服务和组件中,以便将整个请求路径的类。传递协议,以便于不同的跟踪工具之间的互操作性。原创 2024-08-09 13:57:57 · 1311 阅读 · 0 评论 -
Java之BigDecimal详解
Java 在java.math包中提供的API类 BigDecimal,用来对超过16位有效位的数进行精确运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。原创 2024-08-08 00:13:30 · 983 阅读 · 0 评论 -
SpringBoot服务端数据校验
在 Web 应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对数据进行验证。数据验证分为:客户端验证服务端验证在Spring Boot 3中,参数校验是通过Bean Validation API实现的,这个API是JSR 380规范的一部分。Spring Boot集成了Hibernate Validator作为默认的校验器。所有的这些注解都有 message 属性,用于设置错误提示信息(如果没有设置,则会有默认的错误提示信息)。Hibernate Validator 实现了 JSR 303,它除了原创 2024-08-03 14:18:38 · 879 阅读 · 0 评论 -
六大设计原则
再论六大设计原则原创 2024-07-31 21:04:24 · 345 阅读 · 0 评论 -
雪花算法及MP实现方式
不过,这个主键自增长的方案好不好呢?如果发现有时钟回拨,时间很短比如 5 毫秒,就等待,然后再生成。面试常问:如果是并发量高,同一台机器一毫秒有5000个id,那么id会不会重复,不会,根据源码如果一毫秒内超过4096个id,则会阻塞到下一毫秒再生成。原生的 Snowflake 算法是完全依赖于时间的,如果有时钟回拨的情况发生,会生成重复的 ID,市场上的解决方案也是不少。如果发现有时钟回拨,时间很短比如 3 毫秒(一般大于3毫秒就不建议等待),就等待(线程睡3秒再来生成id),然后再生成。原创 2024-07-25 13:22:51 · 948 阅读 · 1 评论 -
TypeScript入门
TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准(ES6 教程)。TypeScript 由微软开发的自由和开源的编程语言。TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。编程语言,分为了“强类型语言”和“弱类型语言”。强类型语言,对于数据类型要求非常严格,不允许不同类型的数据之间做隐式转换。原创 2024-07-24 17:44:46 · 1140 阅读 · 0 评论 -
java是如何计算散列码hashcode的?
探查Java对象HashCode生成原理原创 2024-07-24 00:18:59 · 673 阅读 · 0 评论 -
SpringBoot整合邮件发送
测试时需要将 spring.mail.username 和 spring.mail.password 改成自自己邮箱对应的登录名和密码,这里的密码不是邮箱的登录密码,是开启 POP3 之后设置的客户端授权密码。因为springboot提供了java操作邮件发送的启动器,所以在springboot 项目中完成邮件发送的功能,还是很简单、方便的。和文本邮件发送代码对比,富文本邮件发送使用 MimeMessageHelper 类,该类支持发送复杂邮件模板,支持文本、附件、HTML、图片等。原创 2024-07-17 12:24:41 · 563 阅读 · 0 评论 -
java 堆 栈 方法区的分析
基础数据类型(Value type)直接在栈(stack)空间分配,方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。原创 2024-07-15 21:01:06 · 1012 阅读 · 0 评论 -
Mybatis进阶の常用配置&级联查询
autoMapping:开启结果集自动映射,通常在配置ResultMap时,如果查询结果集列名和映射实体类的属性名一样(不区分单词大小写的情况)可以开启自动映射:autoMapping=“true”。extends:配置结果集时,如果多个结果集存在“相同”的配置代码,可以将这些“重复”的配置抽取成一个公共的ResultMap,然后通过继承的方式沿用。不过,偶尔也会有人想着:批量起别名的情况下,给某个特定类指定特定的别名,这个需求我们可以借助在实体类上添加@Alias的方式解决。原创 2024-07-10 13:23:43 · 1018 阅读 · 0 评论 -
ES6中的新特性
ECMAScript6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。原创 2024-07-09 23:21:56 · 450 阅读 · 0 评论 -
Centos配置Docker
1、Docker 是一个开源的应用容器引擎2、诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)3、Docker 是一个可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器引擎(好比汽车发动机),然后发布到任何流行的 Linux 机器上。4、容器是完全使用沙箱机制,相互隔离5、容器性能开销极低。原创 2024-07-07 14:18:14 · 969 阅读 · 0 评论 -
Mybatis入门の基础操作
真相是:mybatis在openSession()时,默认开启了事务手动提交模式,所以在没有代码明确写明“commit()"的情况下,程序操作的结果不会物理更新到数据表中。注意:使用mapper代理开发时不用为dao接口编写实现类,但是在mapper.xml文件中的mapper节点中的namespace必须指定与同名接口类的全限定名。注意:使用mapper代理开发时不用为dao接口编写实现类,但是在mapper.xml文件中的mapper节点中的namespace必须指定与同名接口类的全限定名。原创 2024-07-03 13:46:39 · 549 阅读 · 0 评论 -
项目中登录验证码
项目实战中登录验证码如何做比较合理原创 2024-07-02 21:43:28 · 735 阅读 · 0 评论 -
SpringMvc实现服务器端验证
可以结合全局异常处理,当 result.hasErrors() == true 时,在 Controller 中直接抛出异常,由 Controller 的异常处理类来解析 BindingResult 中的异常信息,并返回对应的错误信息给客户端。JSR 只是一套规范,其具体的实现中 Hibernate Validator 是最常见的实现,它即实现了 JSR 303 的要求,又实现了更新的 JSR 349 的要求。在 Web 应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对数据进行验证。原创 2024-06-28 13:38:17 · 946 阅读 · 0 评论 -
分布式数据库系统MyCat
MyCAT主要解决的是数据库的分库分表,以及对数据的读写分离。来达到提高数据存储量,以及提升数据查询效率等原创 2024-06-24 21:24:54 · 618 阅读 · 0 评论 -
Spring Cloud Sleuth
Sleuth是SpringCloud的子项目,全称SpringCloud-Sleuth,提供分布式系统中链路追踪解决方案,同类产品还有Cat由大众点评开源,基于java开发的实时应用监控平台,包括实时应用监控、业务监控。集成方案是通过代理码埋点的方式来实现监控原创 2024-06-22 18:39:08 · 1049 阅读 · 0 评论