ThreadPoolExecutor和ThreadPoolTaskExecutor
ThreadPoolExecutor和ThreadPoolTaskExecutor
ThreadPoolExecutor简介![[Executor.png|800x500]]
这个类是JDK中的线程池类,继承自Executor, Executor 顾名思义是专门用来处理多线程相关的一个接口,所有线程相关的类都实现了这个接口,里面有一个execute()方法,用来执行线程,线程池主要提供一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁的额外开销,提高了响应的速度。相关的继承实现类图例如ScheduledThreadPoolExecutor。
线程池接口
ExecutorService为线程池接口,提供了线程池生命周期方法,继承自Executor接口,ThreadPoolExecutor为线程池实现类,提供了线程池的维护操作等相关方法,继承自AbstractExecutorService,AbstractExecutorService实现了ExecutorService接口。
java.util.concurrent.Executor 负责线程的使用和调度的根接口123 ...
线程池
线程池
创建线程池调度线程池(ScheduledExecutorService)引入依赖
12345<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version></dependency>
创建
123456// 需要引入commons-lang3依赖ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1, new BasicThreadFactory .Builder() ...
Docker命令
Docker命令
docker top查看一个容器里面的进程信息的
docker load && docker save123456docker save可以把一个镜像保存到tar文件中,你可以这么做docker save registry:2.7.1 >registry-2.7.1.tar同时docker load可以把镜像从tar文件导入到docker中docker load < registry-2.7.1.tar
docker search这个命令可以帮助你在命令行中方便的搜索dockerhub中的镜像
docker events这个命令可以帮助你实时获取docker的各种事件信息,比如创建了一个容器什么的
docker update当你docker run 了之后却发现里面有一些参数并不是你想要的状态比如你设置的nginx容器cpu或者内存太小,这个时候你就可以使用docker update去修改这些参数
docker history当你修改了一个镜像,但是忘记了每一层的修改命令,或者你想查看一个镜像是怎么构建的时候就可以使用这个命令
doc ...
SpringBoot - 拦截器(Interceptor)、过滤器(Filter)、监听器(Listener)及AOP
Git常用命令
Git
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
新建代码库123456# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个项目和它的整个代码历史$ git clone [url]
配置Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)
1234567891011121314# 显示当前的Git配置$ git config --list# 编辑Git配置文件$ git config -e [--global]# 设置提交代码时的用户信息$ git config [--global] user.name "[name]"$ git config [--global] user.email "[email address]"# 颜色设置git config --gl ...
CentOS安装Kafka
本文主要讲CentOS7下安装Kafka集群
安装vim输入命令
1rpm -qa |grep vim
如果未出现以下安装包
vim-common-7.4.629-8.el7_9.x86_64vim-filesystem-7.4.629-8.el7_9.x86_64vim-enhanced-7.4.629-8.el7_9.x86_64vim-minimal-7.4.629-7.el7.x86_64
则使用命令,安装缺少的
123yum -y install vim-minimalyum -y vim-commonyum -y install vim-enhanced
如果都没有则使用命令
123yum -y install vim-enhanced或者yum -y install vim*
JDK安装安装openjdk
查看服务器上是否已经安装过jdk
12[root@Centos7 ~]# java -version-bash: java: 未找到命令
如果没有则搜索jdk 的yum源,执行yum安装jdk
12yum search java | grep jdkyu ...
IntelliJ IDEA 常用插件
为了使我们的开发工具IntelliJ IDEA使用的更加方便顺手,所以我推荐一些好用的插件
.ignoregit提交时过滤掉不需要提交的文件,很方便,有些本地文件是不需要提交到Git上的
activate-power-mode这是一款让你在编码的时候,整个屏幕都为之颤抖的插件
AiXcoder Code CompleterAiXcoder是一个强大的代码完成器和代码搜索引擎,基于最新的深度学习技术。 它有可能向您推荐一整套代码,这将帮助您更快地编写代码。 AiXcoder还提供了一个代码搜索引擎,以帮助您在GitHub上搜索API用例。http://localhost:8788/ 本地启动服务器。
Alibaba Java Code Guidelines阿里代码规约检测插件实现了开发手册中的的 53 条规则,大部分基于 PMD 实现,其中有 4 条规则基于 IDEA 实现,并且基于 IDEA Inspection 实现了实时检测功能。部分规则实现了 Quick Fix 功能。目前,插件检测有两种模式:实时检测、手动触发。参考详细使用文档 还有 阿里巴巴 Java 开发手册(详尽版 ...
MySQL数据同步到ES7
本文主要讲述MySQL数据如何同步到ES7
使用go-mysql-elasticsearch开源同步工具简介参考地址
开源工具github地址
go-mysql-elasticsearch的基本原理是:如果是第一次启动该程序,首先使用mysqldump工具对源mysql数据库进行一次全量同步,通过elasticsearch client执行操作写入数据到ES;然后实现了一个mysql client,作为slave连接到源mysql,源mysql作为master会将所有数据的更新操作通过binlog event同步给slave, 通过解析binlog event就可以获取到数据的更新内容,之后写入到ES。
另外,该工具还提供了操作统计的功能,每当有数据增删改操作时,会将对应操作的计数加1,程序启动时会开启一个http服务,通过调用http接口可以查看增删改操作的次数。
使用事项
MySQL binlog必须是ROW模式;
要同步的mysql数据表必须包含主键,否则直接忽略,这是因为如果数据表没有主键,UPDATE和DELETE操作就会因为在ES中找不到对应的document而无法进 ...
Spring Boot集成Elasticsearch(7.x 版本)实现各种搜索(后续可以再补充)
本文主要讲述了 Spring Boot 如何集成 ElasticSearch 搜索引擎,并使用 ElasticSearch 官方提供的 Java High Level REST Client官方文档 进行 Java 客户端操作
添加依赖在 pom.xml 文件中,添加 ElasticSearch 提供的 Java High Level REST Client 相关依赖。
1234567891011121314151617181920212223<properties> <java.version>1.8</java.version> <elasticsearch.version>7.9.2</elasticsearch.version></properties><!-- ElasticSearch High Level Client --><dependency> <groupId>org.elasticsearch.client</groupId&g ...
单点登录落地实现技术
单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问所有相互信任的应用系统(一次访问,到处运行)。
单点登陆通俗的讲就是要解决如何产生和存储那个信任,以及其他系统如何验证这个信任的有效性;
单点登录的要点:1.存储信任;2.服务器生产以及验证信任;3.拿到之后服务器再次验证;
SSO原理SSO体系中的角色
User(多个)
Web应用(多个)
SSO认证中心(1个)
SSO实现模式的原则
所有的认证登录都在SSO认证中心进行;
SSO认证中心通过一些方法来告诉Web应用当前访问用户究竟是不是已通过认证的用户;
SSO 认证中心和所有的 Web 应用建立一种信任关系,也就是说 web 应用必须信任认证中心。(单点信任)
SSO主要实现方式
共享cookies
基于共享同域的cookie是Web刚开始阶段时使用的一种方式,它利用浏览同域名之间自动传递cookies机制,实现两个域名之间系统令牌 传递问题;另外,关于跨域问题,虽然 cookies本身不跨域,但可 ...
各个环境搭建Elasticsearch-7.9.2多节点配置
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况,elasticsearch官方文档。
Elasticsearch核心概念
接近实时(NRT)
Elasticsearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)。
集群(cluster)
一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。在产品环境中显式地设定这个名字是一个好习惯,但是使用默认值来进行测试/开发也是不错的。
节点(node)
一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随 ...