自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(664)
  • 资源 (4)
  • 收藏
  • 关注

转载 SpringBoot整合kafka配置多个kafka配置

SpringBoot整合kafka的简单应用及配置说明(包含账号密码配置)、Kerberos证书连接方式:https://www.cnblogs.com/pxblog/p/14821853.html。yml配置 有几个就配置几个 ,这里只配置两个。读取第一个kafka配置。读取第二个kafka配置。

2024-02-23 22:34:02 231

原创 玩转Spring中强大的spel表达式!

spring spel表达式

2023-11-28 20:24:49 786

转载 并发容器ConcurrentHashMap与synchronized联合使用达到线程安全

换句话说,上面的代码中,可以采用任何一个常量,或者每个线程都共享的变量,或者MyTask类的静态变量,来代替map。当线程A执行map.get的时候,其它线程可能正在执行map.put,这样一来当线程A执行到map.put的时候,线程A的值就已经是脏数据了,然后脏数据覆盖了真值,导致线程不安全。修饰方法时,锁上的是调用这个方法的对象,即this;查了一些资料后发现,原来ConcurrentHashMap的线程安全指的是,它的每个方法单独调用(即原子操作)都是线程安全的,但是代码总体的互斥性并不受控制。

2023-11-13 18:41:35 645

转载 Maven中optional和scope元素的使用

其中B依赖A,C依赖B,传递性的关键是B依赖A时所设置的scope值,当B采用不同的值时对应的依赖关系如下:当B通过test或provided依赖A时,C不依赖A;经过上面对Maven的optional和scope元素的详细讲解,想必你已经可以对项目中的配置进行排查,确保精确的使用项目与项目之间的依赖,而不是每个项目都引入大而全的依赖文件,导致项目臃肿,编译缓慢,冲突不断。此时,如果B项目需要Junit的jar包,可以直接在项目中引入,这里父项目中的optional配置对子项目并无影响。

2023-07-15 12:35:05 610

转载 java 8 去重

// 取差集List<SoDetail> chajiDetails = SoDetailList.stream() .filter(item -> !upSoDetailList.stream() .map(e -> e.getSkuCode()) .collect(Collectors.toList()) .contains(it

2022-05-15 21:34:42 2431 1

转载 java 8 根据map 字段值 去重

java 8 根据map 字段值 去重 List<Map<String, Object>> msgId = list1.stream().filter(distinctByKey(deviceRecord -> deviceRecord.get("msgId"))).collect(Collectors.toList());public static <T> Predicat<T> distinctByKey(Function<? suppe

2022-05-15 21:21:05 1068

原创 classpath*作用

classpath*: It refers to a list of resources and loads all such files present in the classpath and list can be empty and if no such file is present in the classpath then application does not throw any exception(just ignores the error).classpath: It refers

2021-09-14 14:42:39 342

转载 mysql中key 、primary key 、unique key 与index区别

索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快100倍。注意你需要存取几乎所有1000行,它较快的顺序读取,因为此时我们避免磁盘寻道。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。字符串是自动地压缩前缀和结尾空间。索引用于:

2021-08-11 10:47:48 675

转载 Flink的Watermark机制

原博客地址:https://www.cnblogs.com/rossiXYZ/p/12286407.html摘要对于Flink来说,Watermark是个很难绕过去的概念。本文将从整体的思路上来说,运用感性直觉的思考来帮大家梳理Watermark概念。01问题关于Watermark,很容易产生几个问题Flink 流处理应用中,常见的处理需求/应对方案是什么?Watermark究竟应该翻译成水印还是水位线?Watermark本质是什么?Watermark是如何解决问题?下面我们就来简要解答

2021-07-23 10:51:21 334

原创 java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/datastream/DataStream

Flink程序编译都是通过的,但是进行Debug调试时,出现如下异常;java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/source/SourceFunction at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at jav

2021-07-09 16:56:16 5809 2

转载 Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建完整版

Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建完整版1. 了解各个组件的作用Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读)Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据Logstash是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根

2021-07-09 11:18:35 822

转载 @Transaction 单元测试回滚

在单元测试中 Transaction注解会对数据库的更新(insert update delete)进行回滚 ,以保证数据不污染Junit单元测试中,测试方法默认自动回滚,若要关闭自动回滚,需要使用注解@Rollback(false)显式关闭,默认回滚式@Rollback(true)package com.xiaolyuh.service;import java.util.Date;import org.junit.Assert;import org.junit.Test;import

2021-06-18 14:48:17 614

转载 MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况

在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作。另外,ON DUPLICATE KEY UPDATE不能写where条件。示例:create table kid_score(id tinyint unsigned not null,birth_day date not null,sco

2021-06-02 14:35:41 577

转载 Java创建线程的三种主要方式

一、继承Thread类创建通过继承Thread并且重写其run(),run方法中即线程执行任务。创建后的子类通过调用 start() 方法即可执行线程方法。通过继承Thread实现的线程类,多个线程间无法共享线程类的实例变量。(需要创建不同Thread对象,自然不共享)/** * 通过继承Thread实现线程 */public class ThreadTest extends Thread{    private int i = 0 ; @Override public void

2021-06-01 11:34:22 651

转载 JAVA 系统变量之System.getenv()和System.getProperty() 用法

JAVA 系统变量之System.getenv()和System.getProperty() 用法Java提供了System类的静态方法getenv()和getProperty()用于返回系统相关的变量与属性,getenv方法返回的变量大多于系统相关,getProperty方法返回的变量大多与java程序有关。System.getenv() 方法是获取指定的环境变量的值。System.getenv(String str) 接收参数为任意字符串,当存在指定环境变量时即返回环境变量的值,否则返回null。

2021-03-09 16:25:00 2165

转载 两道Flink面试题,你会了么?

https://zhuanlan.zhihu.com/p/269610943一 . 你在开发Flink任务时,有没有遇到过背压问题,你是如何排查的?1. 背压产生的原因背压常常出现在大促或者一些热门活动等场景中, 在上面这类场景中, 短时间内流量陡增导致数据的堆积,系统整体的吞吐量无法提升。2. 监控背压方法可以通过 Flink Web UI 发现背压问题Flink 的 TaskManager 会每隔 50 ms 触发一次反压状态监测,共监测 100 次,并将计算结果反馈给 JobManager

2021-03-08 18:53:25 201

转载 如何理解Flink两阶段提交?

在分布式系统中,为了让每个节点都能够感知到其他节点的事务执行状况,需要引入一个中心节点来统一处理所有节点的执行逻辑,这个中心节点叫做协调者(coordinator),被中心节点调度的其他业务节点叫做参与者(participant)。接下来正式介绍2PC。顾名思义,2PC将分布式事务分成了两个阶段,两个阶段分别为提交请求(投票)和提交(执行)。协调者根据参与者的响应来决定是否需要真正地执行事务,具体流程如下。提交请求(投票)阶段协调者向所有参与者发送prepare请求与事务内容,询问是否可以准备事务提

2021-03-08 17:34:00 1095

转载 图文解析 Nacos 配置中心的实现

什么是 NacosNacos 是阿里发起的开源项目,地址:https://github.com/alibaba/nacos。Nacos 主要提供两种服务,一是配置中心,支持配置注册、变更下发、层级管理等,意义是不停机就可以动态刷新服务内部的配置项;二是作为命名服务,提供服务的注册和发现功能,通常用于在 RPC 框架的 Client 和 Server 中间充当媒介,还附带有健康监测、负载均衡等功能。本文聚焦于 Nacos 的第一块功能,即配置中心的实现。先叙述一个配置中心通常需要哪些组成部分,再结合 Na

2021-02-25 16:09:59 445

转载 生产者消费者模式-Java实现

生产消费者模型生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。生产消费者模式如下图。在日益发展的服务类型中,譬如注册用户这种服务,它可能解耦成好几种独立的服务(账号验证,邮箱验证码,手机短信码等)。它们作为消费者,等待用户输入数据,在前台数据提交之后会经过分解并发送到各个服务所在的url,分发的那个角色就相当于生产者。消费者在获取数据时候有可能一次不能处理完,那么它们各自有一个请求队列,那就是内存缓冲区

2021-02-24 11:17:37 637

转载 java-获取比a大,最接近a的2的次方的数(最小二次幂,位运算)

a = 5, 返回 8;a = 13, 返回 16;a = 1021, 返回 1024;位运算知识储备说明 (参考引用地址:https://www.cnblogs.com/yinfj/p/10647393.html):1.左移->左移运算符“<<” - 使指定值的所有位都左移规定的次数。->左移m<<n 代表把数字m在无溢出的前提下乘以2的n次方。2.右移 右移运算符“>>” - 使指定值的所有位都右移规定的次数。右移m>&g

2021-02-20 16:59:12 912

转载 kafka是如何保证消息不被重复消费的

一、kafka自带的消费机制kafka有个offset的概念,当每个消息被写进去后,都有一个offset,代表他的序号,然后consumer消费该数据之后,隔一段时间,会把自己消费过的消息的offset提交一下,代表我已经消费过了。下次我要是重启,就会继续从上次消费到的offset来继续消费。但是当我们直接kill进程了,再重启。这会导致consumer有些消息处理了,但是没来得及提交offset。等重启之后,少数消息就会再次消费一次。其他MQ也会有这种重复消费的问题,那么针对这种问题,我们需要从业务

2021-01-24 09:46:22 3806 1

转载 SQL各种连接——自连接、内连接、外连接、交叉连接的使用

首先准备了两个表 (Student 和 Course),其中 Student 表中的 C_S_Id 字段为外键列,关联的是 Course 表的 C_Id 主键列。内连接(inner join):满足on条件表达式,内连接是取满足条件表达式的两个表的交集(即两个表都有的数据)。 select * from Student s inner join Course c on s.C_S_Id=c.C_Id**外连接(outer join)**分为:左外连接(left join / left outer

2021-01-21 14:18:23 1173

转载 ES读写数据的工作原理

es写入数据的工作原理是什么啊?es查询数据的工作原理是什么?底层的lucence介绍一下呗?倒排索引了解吗?一、ES写数据过程客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)coordinating node对document进行路由,将请求转发给对应的node(有primary shard)实际的node上的primary shard处理请求,然后将数据同步到replica node。coordinating node如果发现primary

2021-01-19 22:47:19 501

转载 Spring Kafka中关于Kafka的配置参数

#################consumer的配置参数(开始)##################如果'enable.auto.commit'为true,则消费者偏移自动提交给Kafka的频率(以毫秒为单位),默认值为5000。spring.kafka.consumer.auto-commit-interval;#当Kafka中没有初始偏移量或者服务器上不再存在当前偏移量时该怎么办,默认值为latest,表示自动将偏移重置为最新的偏移量#可选的值为latest, earliest, none

2021-01-18 18:50:18 1208

转载 全面分析 Spring 的编程式事务管理及声明式事务管理

关于本教程本教程将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务。通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之。先决条件本教程假定您已经掌握了 Java 基础知识,并对 Spring 有一定了解。您还需要具备基本的事务管理的知识,比如:事务的定义,隔离级别的概念,等等。本文将直接使用这些概念而不做详细解释。另外,您最好掌握数据库的基础知识,虽然这不是必须。系统需求要试验这份教程中的工具和示例,硬件配置需求为:至少带有 512MB 内存(

2021-01-14 14:26:18 1049 1

转载 Java检查异常、非检查异常、运行时异常、非运行时异常的区别

Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类。Java的异常(Exception和Error)分为检查异常和非检查的异常。其中根据Exception异常进行分类,可分为运行时异常和非运行时异常。检查异常:就是编译器要求你必须处理的异常。比如我们在编程某个文件的读于写时,编译器要求你必须要对某段代码try…catch… 或者 throws exception,这就是检查异常,简单的来说,你代码还没有运行,编码器就会检查你的代码,对

2021-01-13 20:37:07 172

转载 MySQL的四种事务隔离级别

MySQL的四种事务隔离级别本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDBhttps://www.cnblogs.com/huanongying/p/7021555.html一、事务的基本要素(ACID)1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。2

2021-01-12 20:44:45 99

转载 Elasticsearch 三种分页方式

from + size 浅分页"浅"分页可以理解为简单意义上的分页。它的原理很简单,就是查询前20条数据,然后截断前10条,只返回10-20的数据。这样其实白白浪费了前10条的查询。GET test_dev/_search{ "query": { "bool": { "filter": [ { "term": { "age": 28 } } ] } },

2021-01-07 20:13:02 191 1

转载 详解nginx中location、rewrite用法总结

一、location用法总结location可以把不同方式的请求,定位到不同的处理方式上.1.location的用法location ~* /js/.*/.js以 = 开头,表示精确匹配;如只匹配根目录结尾的请求,后面不能带任何字符串。以^~ 开头,表示uri以某个常规字符串开头,不是正则匹配以~ 开头,表示区分大小写的正则匹配;以~* 开头,表示不区分大小写的正则匹配以/ 开头,通用匹配, 如果没有其它匹配,任何请求都会匹配到location的匹配顺序是“先匹配正则,再匹配普通”。

2021-01-06 16:18:16 644 1

转载 java正则表达式忽略大小写

// 第一种:直接用正则,(?!)表示整体忽略大小写,如果单个,则可以写成"^d(?!)oc"表示oc忽略大小写,"^d((?!)o)c"表示只有o忽略大小写String regex1 = "^(?i)doc$";// 第二种,采用Patter编译忽略大小写String regex = "^doc$";String s = "DoC";System.out.println(s.matches(regex1)); //truePattern p = Pattern.compile(regex, P

2021-01-05 19:09:43 5076

转载 云端飘 String s=new String(“abc“)创建了几个对象?

String s=new String(“abc”)创建了几个对象?String str=new String(“abc”); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。我们可以把上面这行代码分成String str、=、"abc"和new String()四部分来看待。String str只是定义了一个名为str的St

2021-01-05 14:35:15 144

转载 注解@MappedSuperclass的作用

使用条件:当我们进行开发项目时,我们经常会用到实体映射到数据库表的操作,此时我们经常会发现在我们需要映射的几个实体类中,会有共同的属性,例如编号ID,创建者,创建时间,修改者,修改时间,备注等。遇到这种情况,我们可能会想到把这些属性抽象出来当成一个父类,然后再以不同的实体类来继承这个父类。那么,我们便可以使用@MappedSuperclass注解通过这个注解,我们可以将该实体类当成基类实体,它不会映射到数据库表,继承它的子类实体在映射时会自动扫描该基类实体的映射属性,添加到子类实体的对应数据库表中。

2020-12-04 17:00:33 422

转载 RabbitMQ的优劣势

RabbitMQ的优劣势优势:解耦,比如说系统A会交给系统B去处理一些事情,通过将A,B中间加入消息队列,A将要处理的事情交给消息队列 ,B的输入来源于与消息队列有序性。先来先处理,比如一个系统处理某件事需要很长一段时间,但是在处理这件事情时候,有其他人也发出了请求,可以把请求放在消息队里,一个一个来处理消息路由:按照不同的规则,将队列中消息发送到不同的其他队列中异步处理: 处理一件事情,需要 甲先做A , 然后做乙丙丁分别处理B C D ,B C D这三件事情在A之后,但是相互之

2020-12-01 20:31:49 312

转载 for update行级锁的作用

1、for update叫排它锁,是一种行级锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁.即使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占方式锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。只有当出现如下之一的条件,便释放共享更新锁:(1)、执行提交(COMMIT)语句;(2)、退出数据库(LOG OFF

2020-11-29 18:49:52 594

转载 Java程序员必备:常见OOM异常分析

前言放假这几天,温习了深入理解Java虚拟机的第二章, 整理了JVM发生OOM异常的几种情况,并分析原因以及解决方案,希望对大家有帮助。Java 堆溢出Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。Java 堆溢出原因无法在 Java 堆中分配对象应用程序保存了无法被GC回收的对象。应用程序过度使用 finalizer。Java 堆溢出排查解决思路查

2020-11-29 12:38:58 625

转载 Connection reset by peer的常见原因及解决办法

转自:https://blog.csdn.net/xc_zhou/article/details/809507531,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。Socket默认连接60秒,60秒之内没有进行心跳交互,即读写数据,就会自动关闭连接。2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接

2020-11-20 20:53:44 3732

转载 正则表达式 - (?!), (?:), (?=)

正则表达式 - (?!), (?:), (?=)(?:pattern)非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。(?=pattern)非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“

2020-09-27 10:06:05 3166

原创 Deepin+win7双系统启动项问题解决

问题1:window系统无法启动,修复或添加windows启动项:参考deepin wiki:修复或添加windows启动项问题2:deepin系统无法遮盖正常迩来启动,找不到in

2020-09-12 11:58:58 2353

原创 Deepin启动错误emergency mode解决

在使用Deepin系统的过程中由于个人误操作,导致系统启动之后就进入了emergency mode 启动节目,无法进入图形界面,试了很多种方法,最终用下面的方法得到解决,系统恢复正常启动。网上查了下这个问题,很有可能是强制重启导致的磁盘损坏(具体是怎么损坏了也不是很清楚),所以解决的办法就是修复磁盘。通过Deepin安装优盘,电脑重启之后选中从优盘启动,进入安装deepin系统界面,当出现选中安装系统语言的时候,按ctrl+alt+f1(或者f2),进入终端,然后执行如下命令:lsblk 查看自己系

2020-09-12 11:38:39 1836

转载 RESTful API 设计最佳实践

项目资源的URL应该如何设计?用名词复数还是用名词单数?一个资源需要多少个URL?用哪种HTTP方法来创建一个新的资源?可选参数应该放在哪里?那些不涉及资源操作的URL呢?实现分页和版本控制的最好方法是什么?因为有太多的疑问,设计RESTful API变得很棘手。在这篇文章中,我们来看一下RESTful API设计,并给出一个最佳实践方案。每个资源使用两个URL资源集合用一个URL,具体某个资源用一个URL:/employees #资源集合的URL/employees/56

2020-09-06 13:18:14 208

数学之美(第一版)

《数学之美》是一本非常值得读的书。这本书展现了吴军博士咋他度年的科研经历中对科学问题的深入思考

2015-12-06

程序员健康指南

本书是为程序员量身制作的健康指南,针对头痛、眼部疲劳、背部疼痛和手腕疼痛等常见的问题,简要介绍了其成因、测试方法,并列出了每天的行动计划,从运动、饮食等方面给出详细指导,帮助程序员在不改变工作方式的情况下轻松拥有健康。 本书适合程序员、长期伏案工作的其他人群以及所有关心健康的人士阅读。

2015-12-06

clock()函数的使用

通过clock来计算程序运行时间的方法,计算自己所写的程序的执行时间

2014-07-18

空空如也

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

TA关注的人

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