自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 JavaEE—Java其他一些知识点

- 这三个变量,其实使用让maven默认自带的插件使用的 -->-- 指定hello项目的版本(变量) -->​-- 使用上面定义的变量 -->进入maven官网,然后进入Plugin Developer Centre引入接口后,将自己写的代码当作插件写一个Mojo,给他定义目标,然后重写个execute方法我们自定义的插件和官方给的插件的运行方式、打包方式等都有些不一样项目就是一个插件,我们需要修改打包方式,引入依赖后实现目标。

2024-06-29 14:44:57 986

原创 JavaSE—Java基础知识

abstract可以修饰类、方法抽象类是有构造器的,用来给子类调用,接口就没有构造器抽象方法的特点:只有方法的声明,没有实现,即{}子类必须重写父类的抽象方法,但是可以实现,也可以也定义为abstract,然后不实现内容,但是都必须去重写有抽象方法的类,一定是抽象类抽象类内可以没有抽象方法,只要有abstract修饰符即可抽象类内不是只能有抽象方法,可以有普通方法抽象类不可实例化对象,但可实例化父类引用的子类//不可,因为A是抽象类//可以,父类引用指向子类对象。

2024-06-29 14:40:45 803

原创 AQS源码学习

/ 这个变量指向双向队列中的头节点// 这个变量指向双向队列中的尾节点// 这个变量代表了当前锁的状态,0 就是未被线程占有锁资源,非 0 就是被占有了。

2024-06-29 14:39:32 648

原创 并发—多线程进阶

markword 标记字的长度固定是 8个字节,类型指针就是用来指定该对象的类型,无固定长度,对齐就是用来帮这个对象补成8的倍数,因为JVM读的时候是一块一块读的,这一块就是8个字节,所以对齐就是来补成能被 8 整除,方便JVM读使用的时候:ClassLayout.parseInstance(类对象).toPrintable();变成一个String字符串保证线程间的可见性防止指令重排序 线程会把变量拿到自己的工作空间中,然后使用,线程会一直使用工作空间中的值,线程不会主动去主内存读,除非你规定了。

2024-06-29 14:38:41 743

原创 并发—多线程

ReadWriteLock接口,其只有一个实现类:ReentrantReadWriteLock读的时候可以被多个线程一起读,写的时候只能有一个线程去写。写的时候不允许别人读,即保持数据是最新的,但是自己可以读。读锁就是共享锁,写锁就是独占排他锁。读锁可以在没有写锁的时候被多个线程同时持有;写锁是独占的(排他的)读写锁会比 Lock、ReentrantLock 有更加细粒度的控制Executors 的几个创建线程池的方法的底层其实都是 new ThreadPoolExecutor。

2024-06-29 14:32:45 799

原创 ThreadLocal

ThreadLocal 是 Thread 的 局部变量,意思是说,ThreadLocal 中填充的是当前线程的变量,该变量对其他线程而言是封闭且隔离的,ThreadLocal 为变量在每个线程中创建了一个副本,这样每个线程都可以访问自己内部的副本变量。ThreadLocal 是一个弱引用,当为 null 时,会被当成垃圾回收。ThreadLocal 并不是用来解决共享资源问题的。

2024-06-29 14:30:54 890

原创 Java垃圾回收器GC

单线程GC,在进行垃圾收集时,必须暂停其他所有的工作线程,直至收集结束,Stop The World,即必须暂停其他所有的工作线程,直到它收集结束,- 新生代使用:标记-复制算法,老年代使用:标记-整理算法- 优点:简单,单线程效率高,对于运行在client模式下的虚拟机而言较好- 缺点:Stop The World过长。

2024-06-29 14:29:38 216

原创 JVM—Java Virtual Machine

内存效率(即使用内存的次数,时间复杂度): 复制算法>标记清除算法>标记压缩算法内存整齐度:复制算法=标记压缩算法>标记清除算法内存利用率:标记压缩算法=标记清除算法>复制算法。

2024-06-29 14:26:56 724

原创 集合—HashMap

HashMap 是由数组+链表+红黑树实现的,数组长度固定,一个元素进来,先计算其 hash值,然后 hash值 & 数组长度,得到的值就是该元素存放在数组上的下标位置,然后放入链表,假如链表长度大于8,就从数组转变成红黑树。假如此时整个数组的链表节点大于64,创建新链表的时候就会默认创建红黑树。红黑树可以加快搜索的效率。HashMap 的主干是一个 Entry数组。Entry 是 HashMap 的基本组成单元,每一个 Entry包含一个 key-value 键值对,

2024-06-29 14:25:49 840

原创 各种出错以及解决方法(持续更新)

我这是修改 SpringBoot版本后出现的问题。// 改成这样就行@Override// 之前是 .allowedOriginPatterns("*")

2024-06-22 10:53:34 1025

原创 参数校验—自定义参数校验方法

lang = "javascript", message = "配送费金额不可小于配送费减免金额!")@Getter@Setter/*** 配置名称*/@NotBlank/*** 公告信息*/@NotBlank/*** 配送时效*/@NotBlank/*** 配送费金额*/@NotNull@Min(0)/*** 配送费减免金额*/@NotNull@NotNull@NotNull/*** num1 不可小于 num2。

2024-06-22 10:40:52 826

原创 参数校验—JSR303 校验

使用 Java规范校验 303号,JSR303。日期出入格式化。第一步,在需要进行校验的参数前加上 @Valid注解。一般加在 Controller 的入参中。

2024-06-22 10:38:52 732

原创 版本控制—Git

工作目录:存放我们正在写的代码(当我们新版本开发完成之后,就可以进行新版本的提交)暂存区:暂时保存待提交的内容(新版本 提交后会存放到本地仓库)本地仓库:位于我们电脑上的一个版本控制仓库(存放的就是当前项目各个版本代码的增删信息)远程仓库:位于服务器上的版本控制仓库(服务器上的版本信息可以由本地仓库推送上去,也可以从服务器抓取到本地仓库)

2024-06-22 10:22:57 773

原创 Docker

docker compose 是用来 docker 中的容器编排的。站在项目的角度,把一组容器关联到一起,然后对这组容器做项目编排,可以按照指定顺序启动。docker-compose.yml 就是应用(project),应用(project)就是docker-compose.yml。Compose 中有两个重要的概念:项目(project):由一组关联的应用容器(服务)组成的一个完整业务单元,完整业务单元在 docker-compose.yml文件中定义,

2024-06-22 10:20:17 678

原创 cron表达式

")在线生成 cron表达式,但是它生成的不是最简形式的spring支持的 cron有 6个字段:秒、分、时、日、月、星期,以 空格分隔,并且 Spring只支持?这一个符号。

2024-06-22 10:18:30 126

原创 定时任务—Spring定时任务

Spring 为我们提供了异步执行任务调度的方式,提供了 TaskExecutor、TaskScheduler接口,还有两个注解 @EnableScheduling、@Scheduled。

2024-06-22 10:15:40 718

原创 定时任务—XXL-JOB

项目中只做定时任务的代码,调度由任务调度中心去做,即使项目停止了,任务调度中心的任务若还在,则会继续去寻找该调度的定时任务。定时任务代码项目和调度中心是两个端口,任务调度中心通过访问调度中心来找到定时任务然后进行调度。

2024-06-22 10:13:46 971

原创 分布式配置—Apollo

Apollo 是一款可靠的分布式配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。数据我的应用就是我创建的应用,这个显示列表是有权限控制的,你只能看到拥有权限的应用,这些就是专门给某个项目的配置,然后在里面可以区分环境并发布到不同环境。公开 Namespace 就是一些公开的配置,我的应用 里面可以随便使用这些公开配置,使用方式就是 ${aa.bb.cc}。

2024-06-22 10:12:17 772

原创 分布式事务—Seata

seata 是事务,是保持一致性的,在高并发情况下不安全,需要加分布式锁。

2024-06-22 10:10:42 969

原创 分布式事务简介

本地消息表与业务数据表处于同一个数据库中,这样就能利用本地事务来保证在对这两个表的操作满足事务特性,并且使用了消息队列来保证最终一致性。在分布式事务操作的一方,完成写业务数据的操作之后,向本地消息表发送一个消息,本地事务能保证这个消息一定会被写入本地消息表中。之后将本地消息表中的消息转发到 Kafka 等消息队列中,如果转发成功则将消息从本地消息表中删除,否则继续重新转发。在分布式事务操作的另一方从消息队列中读取一个消息,并执行消息中的操作。

2024-06-22 10:09:02 930

原创 Redisson

自己去做分布式锁,因为锁的超时时间不太好衡量,所以很容易出现各种问题。我们可以借助一下 Redisson框架,它是 Redis 官方推荐的 Java版的 Redis客户端。Redisson 内部提供了一个监控锁的看门狗(前提是不设置超时时间),它的作用是在 Redisson实例被关闭前,不断的延长锁的有效期,它为我们提供了很多种分布式锁的实现。

2024-06-22 10:07:00 1013

原创 分库分表—ShardingJDBC

定位为轻量级 Java框架,在 Java 的 JDBC层提供的额外服务,它使用客户端直连数据库,以 jar包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC驱动,完全兼容 JDBC 和各种 ORM框架。适用于任何基于 JDBC 的 ORM框架,如:JPA、Hibernate、Mybatis、Spring JDBC Template 或是直接使用 JDBC;支持任何第三方的数据库连接池,如:DBCP、C3P0、BoneCP、HikariCP 等;

2024-06-22 10:04:11 593

原创 服务调用—Dubbo

是一款高性能、轻量级的开源 Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。dubbo 是阿里开发的,2018年初阿里把 dubbo 开源给了 apache。

2024-06-22 10:02:25 1004

原创 Feign、OpenFeign

Feign 中全是远程调用接口,可以把 Feign 抽离成一个模块,让 consumer 更干净简洁。Feign 是一个声明式的 WebService客户端。springcloud 对 Feign进行了封装,使其支持了 Spring MVC 的相关注解。Feign默认还集成了 Ribbon,并可以和 Eureka结合,默认实现了负载均衡的效果。从 consumer -> 注册中心 -> producer的架构,抽离出一层远程服务调用,

2024-06-22 10:00:30 894

原创 服务调用—Ribbon

Ribbon+RestTemplate,组合使用刚好可以完成微服务的调用,并且实现内置的负载均衡。优点:跨域通过服务名称进行远程访问可以做负载均衡,服务中心访问资源的时候做负载均衡缺点:负载均衡的配置策略写在了 Controller层,而不是在实现层,不合适虽然是通过服务名称访问,但是是通过 RestTemplate 去访问的,所以 url 还是写死的,应该把服务名称这一段可重复拼接的地址抽离出去。

2024-06-15 12:17:42 540

原创 服务降级—Hystrix

该项目的依赖在 SpringCloud 父项目中已经不包含了,需要我们自己引入对应的版本,不能依赖于 SpringCloud 的版本了。

2024-06-15 12:16:12 735

原创 服务降级—Sentinel

是一个 SpringBoot项目。“哨兵”,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。它就是一个分布式系统的流量防卫兵。它相比 Hystrix 更加的强大。丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。

2024-06-15 12:15:26 967

原创 搜索引擎数据库—ElasticSearch

ES:全文搜索、结构化搜索、分析。Solr 也是 Apache下的项目,也是使用 Java 开发的,也是基于 Lucene。es 基本是开箱即用,非常简单。Solr安装略微复杂Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。Solr 支持更多格式的数据,比如 JSON、XML、CSV,而 ES 仅支持 json 文件格式。

2024-06-15 12:13:36 841

原创 领域驱动设计

学习文档:基于DDD的微服务设计和开发实战_文化 & 方法_欧创新_InfoQ精选文章领域驱动实践总结(基本理论总结与分析+架构分析与代码设计V+具体应用设计分析)_l领域驱动实践总结-CSDN博客Dao层service层controller层mannager层和biz层详解-CSDN博客https://juejin.cn/post/6844903636334542856领域模型 + DDD分层思想,通过事件风暴建立领域模型,合理划分领域逻辑和物理边界,建立领域对象及服务矩阵和服务架构图,定义符合 DDD

2024-06-15 12:12:15 954

原创 NoSQL—MongoDB

MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为 WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。

2024-06-15 12:09:33 714

原创 前端—Nuxt

服务端渲染技术NUXT,即数据的操作过程在服务端实现,客户端只负责做显示,利于 SEO服务端渲染又称 SSR (Server Side Render)是在服务端完成页面的内容,而不是在客户端通过AJAX获取数据。即原来是客户端发送 ajax请求,然后服务端得到数据,返回并做渲染,即异步,但异步不利于做 SEO,当爬虫抓取的时候,抓取工具并不会等待异步完成后再进行页面内容的抓取,又因为是异步,所以内容可能还没有渲染成功,会造成网站排名靠后。

2024-06-15 12:08:49 981

原创 前端—Node.js+NPM

Node.js 是一个基于 Chrome V8引擎的 JavaScript运行环境:即 Node.js 内置了 Chrome 的 V8引擎,可以在 Node.js环境中直接运行 JavaScript程序。既是一个 JavaScript引擎,也可以说是一个 JavaScript环境,通过它可直接运行 JavaScript。所以我们不需要引入 vue、axios等的 js文件了。浏览器的内核包括两部分核心:DOM渲染引擎、JavaScript解析引擎。

2024-06-15 12:07:54 947

原创 前端—Vue

在 api文件夹下创建 js文件,并定义接口路径,然后使用的时候 import即可。

2024-06-15 12:06:20 514

原创 前后端分离—跨域问题

CORS(Cross-origin resource sharing),是一个 W3C标准,全称是”跨域资源共享”。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的 AJAX通信没有差别,代码完全一样。浏览器一旦发现 AJAX 请求跨源,就会自动添加一些附加的头信息。(Origin)有时还会多出一次附加的请求,但用户不会有感觉。(options方式的请求) 浏览器将 cors请求分为两种:简单请求、非简单请求。

2024-06-15 12:05:09 775

原创 OAuth2+JWT

这样是对资源服务器进行深度自定义,我们可以为每个微服务编写一个配置类,比如我们现在希望用户授权了某个 Scope 才可以访问此服务。public class ResourceConfiguration extends ResourceServerConfigurerAdapter { //继承此类进行高度自定义@Override。

2024-06-15 12:03:08 674

原创 Shiro

Apache Shiro 是一个功能强大且易于使用的 Java安全(权限)框架。Shiro 可以完成:认证、授权、加密、会话管理、与 Web 集成、缓存等功能。

2024-06-15 12:01:50 999

原创 Spring学习笔记

类交给Spring容器管理的方式:使用注解、配置xml、java代码xml配置的好处:配置集中在同一个文件中注解配置的好处:虽然写得少了,但是不好维护,配置分散@RunWith(SpringJUnit4ClassRunner.class) : 指明使用什么类来创建容器,也可以写成 @RunWith(SpringRunner.class)

2024-06-15 12:00:54 518

原创 SpringMVC学习笔记

这是最传统的方式,最简单也最实用。不会导致静态文件(jpg,js,css)被拦截。但是Controller的后缀只能固定成某一种自主创建interceptor包,自定义拦截器,让其实现HandlerInterceptor或继承HandlerInterceptorAdapter@Override@Override@Override实现接口 HandlerExceptionResolver ,实现类中指定不同的异常跳转不同的错误页面。

2024-06-15 11:54:09 822

原创 SpringData

Spring Data JPA(Java Persistence API) 是 Spring Data 下面的一个子项目,其提供了对 JPA 的操作支持,Spring Data JPA 是 Spring 基于 ORM(Object Relational Mapping) 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,使用 Spring Data JPA 可以极大提高开发效率!

2024-06-15 11:52:23 655

原创 SpringBoot学习笔记

mvn、mvnw、mvnw.cmd 这几个文件删了都可以,就是解决如果没有 maven 环境的话。HELP.md 也可以直接删掉。主函数类、pom.xml、application.properties、.gitignore 这几个文件比较重要.gitignore 是 git 版本控制的忽略清单application.properties 是配置类,在里面可以修改许多 SpringBoot 默认的配置,还可以自定义一些属性,然后在代码的变量上 @Value("${aaa.bbb}") 就可以取到了。

2024-06-08 12:43:48 746

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除