- 博客(92)
- 收藏
- 关注
原创 Dubbo传输序列化自定义异常时错误
解决方案:是因为通用模块的自定义异常需要增加一个无参构造方法,否则consumer将报HessianProtocolException: ‘xxxxException’ could not be instantiated异常并无法获取provider端的异常信息。
2023-08-16 09:57:46 550
原创 分布式配置中心Nacos
默认Nacos使用嵌入式数据库Derby实现数据的存储。如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。Nacos支持三种部署模式1)单机模式 - 用于测试和单机试用。2)集群模式 - 用于生产环境,确保高可用。3)多集群模式 - 用于多数据中心场景。即Namespace可以实现部署环境的区分,而DataID可以实现微服务的区分,而Group可以将多个微服务归属于同一个组。
2023-07-31 22:28:12 1045
原创 Nacos的搭建及服务调用
在高并发场景下使用Dubbo,因为Dubbo长连接,如果不是高并发会浪费资源;低并发或者性能要求不高使用OpenFeign,因为OpenFeign不是长连接并且便于使用。
2023-07-29 15:17:33 5951
原创 Java基础
即JDK包含JRE,JRE包含JVM;由JDK中的Java编译器javac将java文件编译成.class字节码文件,再由JDK的JRE的JVM来运行字节码文件。JDK1.8造成死锁的原因:造成死锁必须要达到这4个条件,如果要避免死锁,只需要不满足其中一个条件即可。而其中前三个条件是作为锁要符合的条件,所以要避免死锁就需要打破第四个条件,即不出现循环等待锁的关系。在开发中避免死锁:JDK自带有3个类加载器:BootStrapClassLoader、ExtClassLoader、AppClassLoaderR
2023-07-25 22:53:35 402
原创 Spring、SpringMVC、MyBatis框架的作用
MVC全称Model View Controller,是一种设计创建Web应用程序的模式。SpringMVC的工作流程。SpringMVC的组件。
2023-06-16 11:55:59 1276
原创 MySQL优化
id参数id:select查询的序号,表示执行select操作时表的顺序。id相同按顺序走id不同,序号大的先执行id相同与不同同时存在select_type参数查询类型,主要用于区别普通查询、联合查询、子查询SIMPLE:简单select查询,查询中不包含子查询或union;PRIMARY:主键查询SUBQUERY:where条件包含了子查询DERIVED:from的表中包含子查询,被标记为derived(衍生),把子查询的结果放在临时表中。
2023-06-01 10:25:55 815
原创 微服务项目租房网
前端页面开发使用vue.js后端技术使用SpringBoot + Spring Cloud + SpringMVC + Spring Security + MongoDB + Redis + ElasticSearch + Maven + FastDFS + Docker虚拟机CentOS7JDK17SpringCloud 2022.0.2用注解方式实现对Spring框架的自动配置SpringBoot 3.0.5项目配置中心SpringCloudConfig 4.0.2消息中间件RabbitMQ
2023-05-26 20:22:55 1269
原创 SpringCloud使用SkyWalking实现分布式链路追踪2以及Prometheus全方位监控告警系统
在cloud-provider-skywalking-payment8001项目的POM文件中,添加如下数据库依赖-- 数据库驱动 -- >
2023-05-14 10:50:13 2542 1
原创 SpringCloud使用SkyWalking实现分布式链路追踪1
因为SpringBoot3.0以上移除了Sleuth,迁移到了MicrometerTracingBrave,所以直接使用MicrometerTracingBrave即可。1)MicrometerTracing组件主要解决链路追踪的问题。MicrometerTracingBrave只负责产生监控数据,通过日志的方式展示出来,并没有提供可视化的UI界面。MicrometerTracingBrave核心概念,有Span、Trace、Annotation。Span是微服务调用链的节点;
2023-05-11 08:36:57 2061
原创 SpringCloud_Config配置中心和Bus消息总线和Stream消息驱动
1)在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件SpringCloudConfig。即SpringCloudConfig项目是一个解决分布式系统的配置管理问题。2)SpringCloudConfig的配置文件需要存在gitee上,需要创建gitee仓库并设置为开源;创建完gitee的仓库后,需要在本地创建文件夹来存储配置文件,然后在该文件夹中打开git命令行,将gitee中的HTTPS链接复制到该命令行中,从而拉取该gitee远程仓库;
2023-05-07 11:58:39 1015
原创 SpringCloud_Gateway服务网关
在gateway9527服务的com.zzx.config包下,创建日志网关过滤器类LogGatewayFilterFactory/*** 日志网关过滤器} /*** 表示配置填写顺序* @return} /*** 执行过滤的逻辑* @returnlog . info("********* consoleLog日志 开启 ********");});} /*** 过滤器使用的配置内容} }/*** 日志网关过滤器} /**
2023-05-04 23:19:33 3563
原创 SpringCloud_OpenFeign服务调用和Resilience4J断路器
1)客户端负载均衡,可以使用Eureka来获取微服务实例清单,缓存到本地;然后通过Loadbalancer根据负载均衡策略从服务实例清单列表中选择具体实例。2)服务端负载均衡,发起服务间调用的时候,服务请求并不直接发向目标服务器,而是发给这个全局负载均衡器,它再根据配置的负载均衡策略将请求转发到目标服务。3)客户端负载均衡,SpringCloudRibbon在Ribbon2已经停更,并且1和2不兼容,后面SpringCloud将SpringCloudLoadBalancer作为新的客户端负载均衡器。
2023-04-26 22:19:21 2630 1
原创 SpringCloud_Eureka服务的注册与发现
在服务提供者和消费者的POM文件中引入Actuator依赖-- actuator监控信息完善 -- > < dependency > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - actuator < / artifactId > < / dependency >在服务提供者的application.yml文件中添加如下。
2023-04-21 19:41:06 844
原创 SpringCloud错误集
因为我用的是最新版,SpringBoot使用了3.0或者3.0以上,因为Spring官方发布从Spring6以及SprinBoot3.0开始最低支持JDK17。解决:可以将SpringBoot版本降低,或者使用JDK17。
2023-04-20 09:54:28 1265
原创 MAVEN安装与配置
2)在系统变量的path中配置:%MAVEN_HOME%\bin。选择这两个进行下载,然后直接解压缩到指定的安装目录即可。1)MAVEN_HOME设置为maven的安装目录。2)输入mvn -version 看是否显示版本号。1)win+r输入cmd打开命令行界面。配置setting.xml文件。
2023-04-19 11:26:35 465
原创 VUE3的使用
Vue CLI Vue.js 开发的标准工具,Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统项目src根目录下的assets,相当于java的static,都是存放公共资源的,存放类似于js等。项目src根目录下的components使用来存放组件的,也就是其他的.vue文件。而App.vue是主入口的组件,即所有组件都从该文件开始。main.js相当java的main方法,即程序的入口文件。文本数据,文本数据绑定最常见的形式就是使用“Mustache” (双大括号{{}}) 语法的文
2023-04-18 13:02:36 1692
原创 MySQL8.0.32安装以及环境配置
此时先看看安装目录mysql-8.0.32-winx64下是否有my.ini文件,即Mysql的配置文件,如果没有,则需要配置。此时会出现一个初始密码,需要使用它来修改密码。在搜索框输入cmd,然后以管理员身份运行。2)将刚刚的初始密码粘贴,然后回车。将压缩包解压到你要安装的目录中。1)先创建一个my.ini文件。测试可视化工具navicat。
2023-04-17 09:23:20 2119 2
原创 AndroidStudio运行java类
在项目的.idea下的gradle.xml文件中的GradleProjectSettings标签下添加如下代码。即不让gradle接管构建任务,防止当作gradle的task来执行。
2023-03-16 08:57:15 327
原创 VUE_ES6新特性
1)安装Nodejs环境,会带有npm命令,但是npm镜像是国外的,安装国内的cnpm,但好像现在cnpm安装完成后,要用npm指令。即指令还是npm,但是此时的镜像已经改成国内的镜像。2)创建VUE项目时,直接在VSCODE中打开一个新文件夹,在文件夹内可以在创建文件夹,然后在准备放项目的文件夹中直接打开终端,进入到文件夹中,通过cnpm指令直接创建VUE项目。Babel的作用是ES6代码转换成ES5,实现向下兼容。1)let和const命令,都是不存在提升、不可重复声明、块级作用域。
2023-03-11 13:16:54 1155
原创 Elasticsearch集群搭建、优化及实践
当索引足够大时,需要建立ES集群,此时需要将索引拆分成多分,分别放入不同的服务器中,几台服务器维护同一个索引。每一台服务器为一个节点,每一台服务器中的数据称为一个分片。防止节点故障导致集群无法正常运行,分片和该分片的副本不会存放在同一个节点上。安装完ES服务后,再安装分词器,然后修改ES的配置文件elasticsearch.yml,配置成集群的参数即可完成集群的搭建。安装Kibana需要修改Kibana的配置文件kiabana.yml,配置集群的连接即可。
2023-03-06 00:27:53 1437 1
原创 Elasticsearch报错汇总
问题:bootstrap check failure [1] of [1]: Transport SSL must be enabled if security is enabled. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]
2023-03-04 02:49:14 2338
原创 SpringBoot整合Elasticsearch
1)使用Repository接口实现操作ElasticSearch,需要yml文件配置ES的主机和端口号,用一个接口去继承ElasticsearchRepository类,调用该类提供的方法即可。2)DSL实现的话,用一个接口去继承ElasticsearchRepository类,通过@Query注解编写DSL语句,调用@Query注解下的方法即可。3)按照规则命名方法查询,既不用编写DSL语句,也不用使用固定的方法,而是根据查询的需要按照规则命令该方法即可查询。命名以findBy开头。
2023-03-01 23:58:33 1238
原创 Elasticsearch_分词器、搜索文档以及原生JAVA操作
需要对一段内容既进行文字分词,又进行拼音分词,此时需要自定义ik+pinyin分词器。在创建索引时设置自定义分词器//自定义分词器名 "tokenizer" : "ik_max_word" , //基本分词器 "filter" : "pinyin_filter" //配置过滤分词器 } } , "filter" : {
2023-02-21 15:45:18 2825
原创 Elasticsearch的安装及常用操作
Elasticsearch是一个全文检索服务器,全文检索是一种非结构化数据的搜索方式。结构化数据:指具有固定长度的数据,如数据库中的字段。非结构化数据:指格式和长度不固定的数据。结构化数据一般存入数据库,使用sql语句即可快速查询。但由于非结构化数据量大且格式不固定,需要采用全文检索的方式进行搜索。全文检索通过建立倒排索引加快搜索效率。索引:将数据中的一部分信息提取出来,重新组织成一定的数据结构,可以根据该结构进行快速搜索,这样的结构称之为索引。索引分为正排索引和倒排索引。
2023-02-19 20:36:45 1526
原创 JVM_内存区域与内存溢出异常
创建包stackoverflowerror,创建类JavaVMStackSOF2stack();} } }跟前面方法一样,并且多了很多本地变量,但是不设置栈的内存容量,直接运行即可。此时会因为本地变量太多,并且递归,使得栈溢出。运行时数据区域有1、Method Area方法区 2、VM Stack虚拟机栈 3、Native Method Stack本地方法栈 4、Heap堆 5、Program Counter Register程序计数器。
2023-02-15 21:32:58 591
原创 Java多线程_线程池ThreadPoolExecutor
Executor的子接口是ExecutorService,ExecutorService的唯一子实现类AbstractExecutorService,AbstractExecutorService的子类ThreadPoolExecutor。使用Executors工厂类的newCachedThreadPool()方法创建无界线程池,并且进行复用线程池中线程,只需要创建的线程闲置后即复用。
2023-02-07 16:41:01 1131
原创 Java多线程_并发集合框架
Iterator接口是集合框架的父接口,Collection接口继承了Iterator接口;而接口List、Set、Queue继承了Collection接口;而Deque接口继承了Queue接口。使用接口继承接口可以让继承的接口对被继承的接口进行扩展。List接口的实现类中的元素是有序可重复的,而Set接口的实现类中的元素是无序不可重复的。接口Queue支持对表头的操作,而Deque对Queue进行扩展,也支持对表尾进行操作。java.util.Concurrent包下的类都是线程安全的。
2023-01-14 20:59:52 1256
原创 Java多线程_多线程的补充
线程在不同的运行时期存在不同的状态,状态信息存在于State枚举类中。在调用与线程有关的方法后,线程会进入不同的状态。线程可以处于NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED六种状态。创建包threadstate.test,在包下创建类Run即在new一个MyThread线程对象时,会调用构造方法中输出执行构造方法的线程的状态,以及MyThread线程的状态。然后再次打印MyThread线程对象的状态,然后启动线程,启动后调用运行run
2022-12-06 20:13:30 555 1
原创 Java多线程_定时器和单例模式
Timer类的主要作用就是设置计划任务,即在指定的时间开始执行某一个任务。封装任务的类却是TimerTask(抽象类)的子类。schedule(TimerTask task,Date time),作用是在指定的日期执行一次某一任务。schedule(TimerTask task,Date firstTime,long period),作用是在指定日期之后按指定的间隔周期无限循环的执行某一任务。
2022-11-30 15:04:18 1109
原创 JAVA多线程2_Lock
使用Condition对象,Condition对象是跟ReentrantLock对象绑定的。Condition有await和signal、signalAll方法,通过awiat方法使线程进入等待状态,signal唤醒线程,signalAll唤醒全部线程。通知部分线程时,可以使用创建多个Condition实例,通过调用指定的Condition对象的signal/signalAll方法唤醒指定部分的线程。
2022-11-25 19:34:17 467
原创 Java多线程
变量的并发访问(1)执行完notify后,按照执行wait的顺序唤醒其他线程,notify所在的同步代码块执行完才会释放对象锁,最后其他线程继续执行wait后的代码。(2)在同步代码块中,遇到异常导致线程终止,锁也会被释放。(3)在同步代码块中,执行了锁对象的wait方法,这个线程会立即释放对象锁,等待被唤醒。(4)一生产一消费可以使用wait/notify机制,条件判断可以用if。其中只要有一个属于多时,就要使用wait/notifyAll,并且条件判断要用while。
2022-11-22 14:51:33 322
原创 下载安装VMware Workstation Pro 16.25
选择VMwareWorkstation Pro,点击查看下载组件。选择16.25版本,点击立即下载即可。选择16.0版本,点击转至下载。
2022-09-21 12:26:05 1315
原创 IDEA操作Sharding-JDBC实战2
强制路由,即自定义强制路由算法,实现HintShardingAlgorithm接口,在配置文件中指定该算法,需要时直接获取强制路由hint实例,并设置路由键即可。数据脱敏,即使用配置文件配置需要脱敏的逻辑列、加密的算法和盐值等,将插入的列进行加密,Sharding-JDBC在数据库中将未加密的放在明文列,加密的放在密文列。可不配置明文列。encryptor,加密的算法分为AES、MD5和RC4。在写操作时,会对逻辑列进行加密操作,在读操作时,进行解密操作。分布式事务。
2022-09-19 12:32:32 442
原创 IDEA操作Sharding-JDBC实战1
Sharding-JDBC分库,首先需要引入Sharding-JDBC相关依赖,其次是在配置文件中配置Sharding-JDBC。因为使用JPA的ORM框架,所以采用在repository接口继承JpaRepository类,并传入实体类以及主键类型。在使用JPA时,只需要@Resouce注入对应的接口类,直接引用即可。sharding-jdbc读写分离方案有三种,分库+读写分离、分表+读写分离和分库分表+读写分离。
2022-09-17 22:01:46 1524
原创 Sharding-JDBC概述
随着通信技术的革新,全新领域的应用层出不穷,数据存量随着应用的探索不断增加,数据的存储和计算模式无时无刻不面临着创新。面对交易、大数据、关联分析、物联网等场景越来越细分,单一数据库再也无法适用于所有的应用场景。于此同时,场景内部也愈加细化,相似场景使用不同数据库已成为常态。由此可见,数据库碎片化的趋势已经不可逆转。Sharding-JDBC是Apache ShardingSphere生态圈中一款开源的分布式数据库第三方组件。
2022-09-08 21:53:42 1532
原创 MyCat的高可用及安全
通过MyCat来实现MySQL的读写分离,从而完成MySQL集群的负载均衡但是以上架构存在问题,由于MyCat中间件时单节点的服务,前端客户端所有的压力过来都直接请求这一台MyCat,存在单点故障。这时就需要考虑MyCat的集群。MyCat集群架构,通过MyCat来实现后端MySQL的负载均衡,再通过HAProxy来实现MyCat集群的负载均衡。
2022-09-08 03:09:30 1095
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人