- 博客(37)
- 收藏
- 关注
原创 玩转Spring Cloud Alibaba之Gateway
Spring Cloud Gateway是建立在Spring强大的生态系统之上的网关服务,基于Spring 5、Spring Boot 2.0等技术,提供了一种简单有效的方式来对Api进行路由管理,同时还提供了一些强大的过滤器功能,如熔断,限流,重试等。Gateway基于WebFlux框架进行实现,底层则采用高性能的RPC框架Netty进行通信,相比于基于Servlet阻塞模型的zuul,性能更强大。
2023-01-12 10:55:05
740
原创 玩转Spring Cloud Alibaba之Seata「应用篇」
距离上一次学习Spring Cloud全家桶已经是一年前,由于平时工作着CRUD,相关的知识点都忘却了,正好趁着这次复习,温固而知新。为了模拟分布式事务的实际应用场景,以三个微服务来作为示例分别是订单服务、库存服务、账户服务。
2023-01-04 17:14:20
454
原创 玩转Spring Cloud Alibaba之Sentinel
现代微服务架构都是分布式的,由非常多的服务组成。不同服务之间相互调用,组成复杂的调用链路。以上的问题在链路调用中会产生放大的效果。复杂链路上的某一环不稳定,就可能会层层级联,最终导致整个链路都不可用,这便是著名的雪崩效应。
2023-01-03 17:55:22
726
原创 Java单例模式小结
Java单例模式介绍在java中,单例模式是最简单、最基础也是最常见的一种设计模式之一。在运行期间,保证一个类只创造一个实例,并为它提供一个全局的访问点。实现「单例模式」有以下几种常见方式饿汉式 懒汉式 静态内部类 枚举类(推荐)"Talk is cheap,show methe code."饿汉式public class Singleton { private final static Singleton1 INSTANCE = new Si...
2020-12-03 11:34:46
535
2
原创 JAVA WEB中跨域问题的解决方案
什么是跨域?JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。那什么是跨域呢,简单地理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或是c.a.com域名下的对象。当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算作“跨域”为什么会有跨域问题?跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击。因此:跨域问题
2020-08-07 00:07:09
483
原创 Spring AOP 面向切面编程
Spring AOP面向切面编程,目的是将那些与业务无关的,但是却为业务模块公用的(如日志记录)那些操作封装起来,达到减少系统重复代码,降低系统耦合度的效果。应用场景:日志记录权限控制事务管理底层实现原理JDK动态代理——前提是类要实现接口CGLIB代理Spring AOP和AspectJ的关系两者都是为了实现AOP,AOP是基于动态代理,而AspectJ是基于字节码的操作AOP是运行时增强AspectJ是编译时增强如果切面不多,两者.
2020-07-10 16:29:06
278
原创 并发工具类之ThreadLocal——小结
ThreadLocal使用场景每个线程需要一个独享的对象,通常是个工具类每个线程内需要保存全局变量,可让不同方法使用,避免传参的麻烦使用Thread的好处达到线程安全不需要加锁,提高执行效率更高效地利用内存,节省开销免去传参的繁琐Thread原理每个ThreadLocal对象中都有一个ThreadLocalMap成员变量主要方法InitialValue()返回当前线程对应的初始值,延迟加载,只有在调用了get()才会触发除非线程先前调用了set方法,在这种情况下
2020-07-05 11:17:17
240
原创 并发工具类之线程池——小结
线程池线程池的作用方便管理线程、提升效率使线程间相互配合、满足业务逻辑为什么用线程池?线程的生命周期开销是很高的,特别是创建和销毁过多线程会占用太多内存使用线程池的好处加快响应速度合理使用CPU和内存统一管理资源使用场合服务器接收处理大量请求时(Tomcat)日常开发中遇到需要创建5个线程的情况,使用线程池来管理手动创建线程添加规则线程数少于CorePoolSize,即使其他线程处于空间状态,也会创建新的线程来运行任务当线程数等于或大于Core
2020-07-05 11:05:14
184
原创 MySQL索引优化深入
创建test表(测试表)drop table if exists test; create table test( id int primary key auto_increment, c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10) ) ENGINE=INNODB default CHARSET=utf8;insert into test(c1,c2,c3,c4,c5) values(‘a1’,‘
2020-07-05 10:07:42
1238
原创 MYSQL之索引与Explain工具实践
使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈下面是使用 explain 的例子:在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中)使用的表DROP TABLE IF EXISTS actor;CREATE TABLE actor (id in
2020-07-05 09:54:40
215
原创 JVM参数调优详解
JVM调优主要就是调整下面两个指标停顿时间:垃圾收集器做垃圾回收中断应用执行的时间。-XX:MaxGCPauseMillis吞吐量:花在垃圾收集的时间和花在应用时间的占比 -XX:GCTimeRatio=<n,垃圾收集时间占比:1/(1+n) GC调优步骤1、打印GC日志-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./gc.log2、分析日志得到关键性指标3、分析GC原因
2020-07-04 10:40:04
803
原创 深入理解Java虚拟机——JVM小结
JVM指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整的计算机系统。JVM主要由三个子系统组成类装载器子系统运行时数据区(内存结构)执行引擎本地方法接口结构堆(Heap)类加载器(ClassLoader)双亲委派机制先托付父类加载器寻找目标,在找不到的情况下在自己的路径中查找并加载目标类。好处:防止类重复加载:父类完成加载时,子加载器就没必要再加载沙箱安全机制:防止核心API库被恶意串改全盘负责委托机制如果一个类被一个加载器加载,除非显示
2020-07-03 10:22:45
174
原创 深入理解Synchronized关键字
SynChronized官方定义防止线程看绕和内存一致性的错误,如果一个对象对多个线程课件,则该对象的变量的所有读取或写入方法都是通过同步方法来完成的。作用能保证在同一时刻最多只有一个线程执行该段代码,以达到并发安全的效果。地位 ◆ Java的关键字,被Java原生支持 ◆ 最基本的互斥同步手段 ◆ 并发编程中元老级别角色不使用的后果通过一个小Demo体现public class Threadtest implements Runnable{ static Thre
2020-07-02 10:43:40
261
原创 死锁、活锁学习小结
死锁 DeadLock死锁是什么?互不相让:当两个(或更多)线程(或进程)相互持有对方所需要的资源,又不主动释放,导致所有人都无法继续前进,导致程序陷入无尽的阻塞,这就是死锁。死锁的影响死锁的影响在不同系统中是不一样的,这取决于系统对死锁的处理能力数据库中:检测并放弃事务JVM中:无法自动处理死锁发生的几率不高,但危害很大,宛如森林火灾发生死锁的4个必然条件(同时满足) 互斥条件 [不共享] 请求与保持条件 不剥夺条件[不主动释放(mysql)] 循环等待条件[构成环路]
2020-07-02 10:10:28
213
原创 Java内存模型——JMM总结
JMM是什么?是一种规范,是关键字和工具类的原理,各JVM的实现都需要遵循它JVM内存结构 VS Java内存模型 VS Java对象模型【自己过】为什么需要JMM?◇ 运算依赖处理器,不同处理器结果可能不一样◇ 无法保证并发安全◇ 需要一个标准,让多线程的结果可预期◇ C语言不存在内存模型概念JMM最重要的三点内容可见性{为什么会有可见性问题?CPU有多级缓存,导致读的数据过期每个核心都会将需要的数据读到独立缓存中数据修改后也是先写入到缓存中,再等待时机flush到主存
2020-07-02 10:06:30
221
原创 Java并发体系知识点大总结
实现多线程的方法根据Oracle官方文档,实现多线程的方法只有两种一、实现Runnable接口,重写run,运行start()二、继承Thread类,重写run,运行start()准确地讲,实现多线程只有一种方式,构建一个Thread类。而实现线程执行单元有种方式,实现Runnable接口和继承Thread类。两种方式的本质:实现Runnable接口:底层调用了target.run()继承Thread类:重写了整个run方法Runnable和Thread的区别Java不允许多继承,实现
2020-07-02 10:00:58
280
原创 CentOS7下RocketMq创建Topic报错问题
我在使用 ./mqadmin updateTopic -n localhost:9876 -t stock -c DefaultCluster命令创建topic是报如下错误:Java HotSpot™ 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0Java HotSpot™...
2020-04-23 19:49:16
1375
2
原创 玩转Spring Data之ElasticSearch(一)
SpringData Elasticsearch由于Elasticsearch提供的Java客户端有许多不便,像拼接字符串,序列化json对象、反序列化为对象等等,原生的elasticsear api已经很少人使用,所以这时候SpringData Elasticsearch 商量登场。简介Spring Data Elasticsearch是Spring Data项目下的一个子模块。Spr...
2020-04-16 16:02:51
304
原创 ElasticSearch入门小结(六)之聚合
聚合聚合能干什么?聚合可以让我们极其方便的实现对数据的统计、分析。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何?实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现实时搜索效果。一、 基本概念Elasticsearch中的聚合,包含多种类型,最常用的两种,一个叫桶,一个叫度量。桶(bucket)桶...
2020-04-16 15:36:02
350
原创 ElasticSearch入门小结(五)之排序
排序一、单字段排序sort 可以让我们按照不同的字段进行排序,并且通过order指定排序的方式GET /heima/_search{ "query": { "match": { "title": "小米手机" } }, "sort": [ { "price": { "order": "desc" } ...
2020-04-16 15:17:33
293
1
原创 ElasticSearch入门小结(四)之高级查询
高级查询一、布尔组合(bool)bool把各种其它查询通过must(与)、must_not(非)、should(或)的方式进行组合must+must :求交集should+should :求并集GET /jaychan/_search{“query”:{“bool”:{“must”: { “match”: { “title”: “大米” }},“must_not”:...
2020-04-16 15:12:27
278
原创 ElasticSearch入门小结(三)之结果过滤
结果过滤默认情况下,elasticsearch在搜索的结果中,会把文档中保存在_source的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source的过滤直接指定字段示例GET /jaychan/_search{“_source”: [“title”,“price”],“query”: {“term”: {“price”: 2699}}}返回的...
2020-04-16 15:02:56
1168
原创 ElasticSearch入门小结(二)之基本查询
基本查询基本语法GET /索引库名/_search{ "query":{ "查询类型":{ "查询条件":"查询条件值" } }}这里的query代表一个查询对象,里面可以有不同的查询属性查询类型:例如:match_all, match,term , range 等等查询条件:查询条件会根据类型的...
2020-04-16 14:10:35
161
原创 ElasticSearch入门小结(一)
ElasticSearch 实时搜索引擎在这里插入图片描述Elasticsearch简介Elasticsearch(简称ES)是一个基于Apache Lucene™的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。一、基本概念ElasticSarch是基于Lucene的全文检索库,其本质也是存储数据,很多概念与Mysql相...
2020-04-16 13:57:06
697
原创 eureka拉取不到服务的解决办法
今天在做电商项目的时候,发现服务注册不到eureka。在再三确定配置文件无误的情况下,eureka客户端还是拉取不到服务,导致出现负载均衡的错误,Load balancer does not have available server for XXX client这时只要在此服务的pom文件中引入eureka-client依赖即可<dependency> &...
2020-04-10 12:16:53
2767
原创 基于ElasticSearch的电子商城搜索功能的实现一
一、学习目标 实现基本的搜索 实现页面分页 实现结果排序二、具体实现2.1、前端(Vue)添加搜索字段的数据模型:datakey为搜索的关键字<script type="text/javascript"> var vm = new Vue({ el: "#searchApp", data: { key...
2020-04-03 22:07:32
1293
原创 Spring Security快速入门小结
Spring Security 是 Spring 家族中一个提供安全认证服务的强大框架主要提供以下功能认证我们获取用户时可以从mysql、redis、oracle中获取用户的信息、如账户名和密码。交给spring security框架校验授权对已校验成功的用户进行授权,服务器的资源只能被有特定权限的用户访问加密/解密让敏感信息如密码等,不再以明文方式存储到数据库有加密,...
2020-02-13 00:12:39
185
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅