CompletableFuture
Future和Callable接口Future接口(FutureTask实现类)定义了操作异步任务执行的一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。
12345678public interface Future<V> { boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException; V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;}
Future接口可以为主线程开一个异步线程,专门为主线程处理耗时和费力的复杂业务。
Callable接口中定义了需要有返回的任务需要实现的方法
123456789101112 ...
油猴编写CSDN脚本
直达底部的文章推荐原本CSDN点击评论按钮,页面会滚到到下面的评论区,很方便看推荐文章;但现在点击评论按钮,评论会在侧边栏展开,所以写了个油猴脚本方便自己浏览CSDN。
效果如图:
分析:
右键侧边栏工具“检查”该元素,找到对应的html
可以看到在class="csdn-side-toolbar" 的div块中有各个侧边栏所对应的a标签
我们只需在该div块下加入自己的按钮,同时绑定点击事件(获取评论模块的高度,点击按钮滚动到指定位置)即可
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354// ==UserScript==// @name CSDN直达底部// @version 1.0// @description CSDN直达底部// @author Nan// @match https://blog.csdn.net/*/article/details ...
Kafka
参考视频:【尚硅谷】2022版Kafka3.x教程 https://www.bilibili.com/video/BV1vr4y1677k
概述定义Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。
Kafka最新定义: Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
应用场景缓冲/消峰:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况
解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
异步通信:允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。
消息队列的两种模式
点对点模式(一个生产者,一个消费者)
消费者主动拉取数据,消息收到后清除消息
发布订 ...
Redis
参考视频:【尚硅谷】Redis 6 入门到精通超详细教程 https://www.bilibili.com/video/BV1Rv41177Af
NoSQL数据库简介技术发展技术的分类
解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis
解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch
Web1.0的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。
随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。
解决CPU及内存压力:
解决IO压力:
NoSQL数据库NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。
NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存 ...
微信支付开发
参考视频:【尚硅谷】微信支付开发 https://www.bilibili.com/video/BV1hh411D7sb?p=1
微信支付介绍和接入指引微信支付产品介绍https://pay.weixin.qq.com/static/product/product_intro.shtml?name=qrcode
付款码支付:
用户展示微信钱包内的“付款码”给商家,商家扫描后直接完成支付,适用于线下面对面收银的场景。
JSAPI支付:
线下场所:商户展示一个支付二维码,用户使用微信扫描二维码后,输入需要支付的金额,完成支付。
公众号场景:用户在微信内进入商家公众号,打开某个页面,选择某个产品,完成支付。
PC网站场景:在网站中展示二维码,用户使用微信扫描二维码,输入需要支付的金额,完成支付。
特点:用户在客户端输入支付金额
小程序支付:
在微信小程序平台内实现支付的功能。
Native支付:
Native支付是指商户展示支付二维码,用户再用微信“扫一扫”完成支付的模式。这种方式适用于PC网站。
特点:商家预先指定支付金额
APP支付:
商户通过在移动端 ...
Centos7安装配置java环境
通过yum安装
查看本地是否自带java环境:java -version 和 yum list installed |grep java
查看yum仓库中的java安装包:yum -y list java*
安装java 1.8版本(可根据yum仓库选择安装):yum -y install java-1.8.0-openjdk*
配置环境变量,在文件末尾添加:vi /etc/profile
1234export JAVA_HOME=/usr/lib/jvm/java-1.8.0export JRE_HOME=$JAVA_HOME/jre export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
输入source /etc/profile,使配置立即生效
输入java -version,检查Java是否安装成功
通过下载jdk上传安装
官网下载压缩包:https://www.oracle ...
ElasticSearch的集群部署
相关概念单机 & 集群单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中。
除了负载能力,单点服务器也存在其他问题:
单台机器存储容量有限
单服务器容易出现单点故障,无法实现高可用
单服务的并发处理能力有限
配置服务器集群时,集群中节点数量没有限制,大于等于 2 个节点就可以看做是集群了。一般出于高性能及高可用方面来考虑集群中节点数量都是 3 个以上。
集群 Cluster一个集群就是由一个或多个服务器节点组织在一起,共同持有整个的数据,并一起提供索引和搜索功能。一个 Elasticsearch 集群有一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字来加入这个集群。
节点 Node集群中包含很多服务器,一个节点就是其中的一个服务器。作为集群的一部分,它存储数据,参与集群的索引和搜索功能。
一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的漫威漫画角色的名字,这个名 ...
ElasticSearch的Java操作
Elasticsearch 软件是由 Java 语言开发的,所以也可以通过 Java API 的方式对 Elasticsearch服务进行访问。
环境准备pom文件导入相关依赖:
123456789101112131415161718192021222324252627282930313233343536373839404142<dependencies> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.8.0</version> </dependency> <!-- elasticsearch 的客户端 --> <dependency> <groupId>org.elasticsearch.client</g ...
ElasticSearch的HTTP操作
RESTful REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和DELETE。
在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标 ...