- 博客(116)
- 收藏
- 关注
转载 mysql-事务隔离级别
参考文档:https://www.cnblogs.com/fengzheng/p/12557762.html概念说明以下几个概念是事务隔离级别要实际解决的问题,所以需要搞清楚都是什么意思。脏读脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读。可重复读可重复读指的是在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的同一批数据都是一致的。通常针对数据更新(UPDATE)操作。不可
2021-12-21 17:43:32 87
原创 springcloudAlibaba-Sentinel
流控规则流控模式直接关联链路流控效果1.直接->快速失败(默认的流控处理)2. 预热(Warm Up)公式:阈值除以coldFactor(默认值为3),经过预热时长后才会达到阈值3.排队等待降级规则RT(平均响应时间,秒级)平均响应时间 (DEGRADE_GRADE_RT):超过阈值 且 时间窗口内的请求>=5,两个条件同时满足后触发降级,窗口期过后关闭断路器RT 最大4900 ms,更大的需要通过启动配置项 -Dcsp.sentinel.stati
2021-12-20 13:59:49 272
原创 Ribbon负载均衡策略以及使用(基于springcloud G版本)
@Configurationpublic class RestConfig { @LoadBalanced //通过resttemplate结合eureka中的ribbon进行远程调用并实现负载均衡(封装ribbon + eureka + restTemplate) @Bean //如果不加@LoadBalanced 注解就是单独的两个模块之间进行远程调用,如果想通过eureka注册中心的形式完成远程负载调用,就需要加上此注解 public RestTemplate r.
2021-12-12 12:20:35 335
原创 Maven父工程定义的jar包版本号爆红
原因分析:父工程定义依赖版本的时候经常会出现定义的依赖爆红问题,其实原因非常简单标签是用来定义依赖的版本的,如果你定义的依赖包还没下载而你确定义了,maven会去仓库找,找不到自然就爆红了。所以先使用下载并导入依赖,等下载好了在使用标签定义依赖版本问题问题自然解决...
2021-12-08 21:22:30 560
原创 ElasticSearch-聚合查询aggs(八)
参考文档,点击此处聚合查询可以想象成就是mysql的group by分组查询,使用聚合函数min,max,sum,avg进行聚合,返回的是一条数据聚合的模板聚合查询一个aggs里可以有很多个聚合,每个聚合彼此间都是独立的以下语句的含义就是查询出爱好是网吧的数据,然后对age字段进行最小值,最大值,平均值的获取GET /ems/_search?size=0 ##如果有些情况不在意查询结果是什么,而只在意aggs的结果,可以把size设为0,如此可以让返回的hits结果集是0,加快返回的速
2021-12-06 17:44:26 1329
原创 ElasticSearch-倒排索引原理及其分片备份(七)
es是基于倒排索引的形式进行查询的,之所以查询快且准确是因为它会分为索引区和元数据区两部分区域当向es索引库中插入一条文档时,如果某些字段类型支持分词(只有text类型会分词,其他类型都不分词),会对字段分词处理后放在索引区中,并记录符合条件的文档的id。如果某些字段不支持分词的话,直接将该字段整体放在索引区,并标记符合的文档记录的id。当用户进行查询时就会在索引区找到匹配的value,而value中又记录了所有符合条件的文档id...
2021-12-04 21:48:04 1283
原创 ElasticSearch-RestHighLevelClient操作es(六)
引入maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>配置ymlspring: data: elasticsearch: cluster-nodes: 172.
2021-12-01 17:43:55 2489
原创 ElasticSearch-TransportClient客户端操作Es(五)
编程不良人ES教程_rf2261125的博客-CSDN博客 编程不良人ES教程 ...
2021-12-01 16:23:54 1589
原创 Mysql-sql语句(容易出现误区的语句)
流程控制语句类似java中if else语句类似java中switch case语句聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。AVG(),SUM(),MAX(),MIN(),COUNT()group by(SELECT查询的字段必须是group by的字段,反之,group by中声明的字段可以不出现在SELECT中,但是如果查询字段中有聚合函数的话是可以的)...
2021-11-29 09:20:32 5027
原创 ElasticSearch-过滤查询(filter)(四)
Filter Query(执行顺序:先进行过滤,之后再筛选出符合条件的) 1. 过滤查询 其实准确来说,ES中的查询操作分为2种: 查询(query)和过滤(filter)。查询即是之前提到的query查询,它 (查询)默认会计算每个返回文档的得分,然后根据得分排序。而过滤(filter)只会筛选出符合的文档,并不计算 得分,且它可以缓存文档 。所以,单从性能考虑,过滤比查询更快。 换句话说,过滤适合在大范围筛选数据,而查询则适合精确匹配数据。一般应用时, 应先使用过滤操作过滤数据, ...
2021-11-23 14:37:32 9098
原创 ElasticSearch- DSL高级检索(Query)(三)
10.4 DSL高级检索(Query) 0. 查询所有(match_all) match_all关键字: 返回索引中的全部文档 GET /ems/emp/_search{ "query": { "match_all": {} }} 1. 查询结果中返回指定条数(size) size 关键字: 指定查询结果中返回指定条数。 默认返回值10条 GET /ems/emp/_search{ "query": { "match_all": {} }, "size":
2021-11-22 15:22:52 1879
原创 ElasticSearch-文档(document)的基本操作(二)
创建一个索引库# ems为库,emp为类型,name,age,bir,content都是具体属性PUT /ems{ "mappings": { "emp":{ "properties":{ "name":{ "type":"keyword" }, "age":{ "type":"integer" }, "bir":{ "type":"d.
2021-11-22 14:22:16 843
原创 ElasticSearch核心概念,基于6.8版本(一)
es5版本VSes6版本索引(index,相当于是数据库中的一个库)一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。索引类似于关系型数据库中Database 的概念。在一个集群中,如果你想,可以定义任意多的索引。类型(type,相当于数据库中的一个表)在一个索引中,你可以定义一种或多种类
2021-11-20 22:11:39 1954
原创 rabbitmq-延迟队列(十一)
使用场景:比如淘宝下单未支付,过几个小时,就会给你自动取消订单新用户注册成功30分钟后,发送短信问候具体实现操作:在RabbitMQ中并未提供延迟队列功能。但是可以使用:TTL+死信队列 组合实现延迟队列的效果。说白了延迟队列和死信队列没什么区别,就是给正常队列设置消息过期时间,消息到期后,将消息存到死信队列,消费者监听的是死信队列而不再监听正常队列,然后对死信队列里的消息进行具体的业务操作,判断订单是否支付成功,如果成功则不做任何操作,如果没有支付,就取消订单,具体代码就不写了,和死信
2021-11-17 21:00:35 479
原创 rabbitmq-死信队列(死信交换机)(十)
消息进入死信队列的条件队列消息数量到达限制;比如给队列最大只能存储10条消息,当第11条消息进来的时候存不下了,第11条消息就被称为死信消费者拒接消费消息,basicNack/basicReject,并且不把消息重新放入原目标队列,requeue=false;原队列存在消息过期设置,消息到达超时时间未被消费;队列绑定死信交换机(重点,也就是在正常队列里设置者两个参数)给队列设置参数: x-dead-letter-exchange 和 x-dead-letter-routing-keyxml.
2021-11-16 21:52:30 461
原创 rabbitmq-给消息设置过期时间(九)
方式一:通过给队列配置属性设置消息的过期时间 <!--TTL 队列--> <rabbit:queue name="test_queue_ttl" id="test_queue_ttl"> <!--设置queue的参数--> <rabbit:queue-arguments> <!-- 设置x-message-ttl队列的过期时间
2021-11-16 20:48:43 3071 1
原创 rabbitmq-消费端限流,防止消费者垮掉(八)
spring整合mq配置xml<!--prefetch = 1,表示消费端每次从mq拉去一条消息来消费,直到确认消费完毕后,才会继续拉取下一条消息,用此属性来实现限流的效果--><rabbit:listener-container connection-factory="connectionFactory" acknowledge="manual" prefetch="1"> <rabbit:listener ref="ackListener" queue-
2021-11-15 22:21:37 865
原创 rabbitmq-消息可靠传递-消息确认机制,手动确认,针对消费者方向(七)
基于spring整合的rabbitmq <!--定义监听器容器,监听的是test_queue_confirm这个队列 acknowledge="manual":手动签收 --> <rabbit:listener-container connection-factory="connectionFactory" acknowledge="manual"> <rabbit:listener ref="ackListener" queue
2021-11-15 21:42:49 824
原创 rabbitmq-消息可靠传递-消息确认机制,针对生产者方向(六)
在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。confirm 确认模式return 退回模式rabbitmq 整个消息投递的路径为:producer—>rabbitmq broker—>exchange—>queue—>consumer消息从 producer 到 exchange 则会返回一个 confirmCallback 。消息从 exchange–&g
2021-11-14 22:17:06 119
原创 rabbitmq-Topics(通配符)模型(五)
Topic类型与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符!Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割,例如: item.insert通配符规则:#:匹配一个或多个词*:匹配不多不少恰好1个词举例:item.#:能够匹配item.insert.abc 或者 item.insertitem.*:只能匹配item.inser...
2021-11-14 13:41:53 598
原创 rabbitmq-Routing(Direct直连)模型(四)
public class Producer { public static void main(String[] args) throws Exception { Connection connection = ConnectionUtil.getConnection(); Channel channel = connection.createChannel(); String exchangeName = "test_direct"; //.
2021-11-14 12:44:16 603
原创 rabbitmq-Publish/Subscribe(fanout广播)模型(三)
可以有多个消费者每个消费者有自己的queue(队列)每个队列都要绑定到Exchange(交换机)生产者发送的消息,只能发送到交换机交换机把消息发送给绑定过的所有队列队列的消费者都能拿到消息。实现一条消息被多个消费者消费生产者public class Producer { public static void main(String[] args) throws Exception { Connection connection = ConnectionUtil.ge..
2021-11-14 12:29:25 281
原创 rabbitmq-Work模型(二)
简单说就是一个生产者者,多个消费者共同消费消息,比如有10个消息,就会平均分配给每一个消费者,一人5个消息。经典的生产-消费模式生产者public class Provider { public static void main(String[] args) throws IOException, TimeoutException { // 获取连接对象 Connection connection = MQConnection.getConnection(..
2021-11-13 23:39:46 603
原创 rabbitmq-Hello World模型(一)
生产者public class Producer { public static void main(String[] args) throws Exception { //创建连接工厂 ConnectionFactory connectionFactory = new ConnectionFactory(); //主机地址 connectionFactory.setHost("192.168.137.118");
2021-11-13 21:13:52 501
转载 抽象类和接口的区别(重要)
我们从我们实际设计场景中来切入这个话题先来举一个简单的例子:狗都具有 eat() 、sleep() 方法,我们分别通过抽象类和接口定义这个抽象概念//通过抽象类定义 public abstract class Dog { public abstract void eat(); public abstract void sleep(); } //通过接口定义 public interface Dog { public abstract voi
2021-11-11 15:17:49 82
原创 简单的aop环绕通知的案例(自定义注解形式)
自定义注解@Target(ElementType.METHOD) // 表示注解的使用范围@Retention(RetentionPolicy.RUNTIME) // 注解的声明周期@Documentedpublic @interface CheYuHang { // 定义前缀 String prefix() default "cache";}切面类/** * @author cheyuhang on 2021/11/08 */@Component@Aspe
2021-11-09 11:06:39 783
原创 动态代理例子
我理解的动态代理就是在不污染原来代码的前提下(也就是不改动原来的代码)做的代码增强练习版本public class TestAop { public static void main(String[] args) { Cat cat = new Cat(); //这是实现了food接口的类 Dog dog = new Dog(); //这也是是实现了food接口的类 /** * Proxy类的newIns.
2021-11-05 17:04:51 116
原创 @Autowired和@Resource的区别
@Autowired这个注解是按照类型进行注入的,容器中这个类型的bean有一个,那么就直接注入,如果这个类型的bean有多个,那么就需要结合@Qualifier(value = “实例名字”)进行使用,注入指定的bean。@Resource1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常3. 如果指定了type,则从上下文中找到类型匹配的唯
2021-11-05 10:43:29 86
原创 springboot通过ApplicationContextAware获取容器中的bean
/** * 获取容器中的bean工具类 */@Componentpublic class ApplicationContextUtils implements ApplicationContextAware { private static ApplicationContext context; /** * 不少人肯定会问在启动容器时是怎么调用setApplicationContext将context设置值的,其实我也百度搜索了好久。 *解答: *
2021-11-04 11:05:34 472
原创 springboot中ConfigurableApplicationContext对象的使用
@SpringBootApplicationpublic class SpringbootJspShiroApplication { public static void main(String[] args) { ConfigurableApplicationContext run = SpringApplication.run(SpringbootJspShiroApplication.class, args); String[] names = run.ge
2021-11-03 16:14:18 3102
原创 基于springboot框架做oss文件上传功能具体实现
/** * endpoint,accessKeyId,accessKeySecret,bucketName * 这些都不要写死,可以新建一个yml文件,把这些写在文件里, * 因为这些都是在你做了oss存储之后在aliyun获取的, * 放在yml里我就可以动态修改了,没必要每次都要改代码然后重新编译 * @param multipartFile * @param dir * @return */ public sta.
2021-10-28 17:12:23 673
原创 基于springboot的文件上传功能实现
@Servicepublic class UploadService { @Value("${file.uploadFolder}") private String uploadFolder; //这里为了扩展性,把这些路径写在yml文件中,如果项目上线,可以通过修改yml文件实现动态的修改 @Value("${file.staticPath}") private String staticPath; /** * MultipartFile 这
2021-10-28 16:42:01 179
原创 sql语句的使用
查询用逗号分隔的字段,可以用字符串函数FIND_IN_SET();select * from A where find_in_set(‘3’, go_value);
2021-07-22 23:55:10 50
原创 CompletableFuture的使用
也有类似的异步方法,thenAcceptAsync,thenApplyAsyn方法,它们是异步执行的,并行执行
2021-07-22 23:50:12 85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人