05 2022 档案

摘要:https://blog.csdn.net/antma/article/details/85882603 阅读全文
posted @ 2022-05-26 20:26 狂热搬砖家 阅读(25) 评论(0) 推荐(0) 编辑
摘要:一. 步骤: 1. 从node.js官网下载并安装node,一路“下一步”(傻瓜式安装)。 安装完成,打开cmd命令行工具,输入 node -v,查看版本号,则说明安装成功。2.npm包管理器是集成在node中的,输入 npm -v,显示npm版本号3.创建package.json文件,输入命令 n 阅读全文
posted @ 2022-05-26 19:32 狂热搬砖家 阅读(4178) 评论(0) 推荐(0) 编辑
摘要:1.入门篇 https://www.cnblogs.com/CarpenterLee/p/6545321.html 2.高级篇 https://www.cnblogs.com/CarpenterLee/p/6550212.html 阅读全文
posted @ 2022-05-26 17:12 狂热搬砖家 阅读(18) 评论(0) 推荐(0) 编辑
摘要:7.1 为什么要使用 Elasticsearch? 系统中的数据,随着业务的发展,时间的推移,将会非常多,而业务中往往采用模糊查询进行数据的 搜索,而模糊查询会导致查询引擎放弃索引,导致系统查询数据时都是全表扫描,在百万级别的数据库中, 查询效率是非常低下的,而我们使用 ES 做一个全文索引,将经常 阅读全文
posted @ 2022-05-22 00:48 狂热搬砖家 阅读(318) 评论(0) 推荐(0) 编辑
摘要:6.1 硬件选择 Elasticsearch 的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的 路径可在 ES 的配置文件../config/elasticsearch.yml 中配置,如下: # Paths # # Path to directory where to st 阅读全文
posted @ 2022-05-21 22:58 狂热搬砖家 阅读(39) 评论(0) 推荐(0) 编辑
摘要:5.1 Spring Data 框架集成 5.1.1 Spring Data 框架介绍 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的 开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce 框架和云计 算数据服务。 Spring 阅读全文
posted @ 2022-05-21 22:41 狂热搬砖家 阅读(154) 评论(0) 推荐(0) 编辑
摘要:4.1 核心概念 4.1.1 索引(Index) 一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的 索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必 须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时 候,都要 阅读全文
posted @ 2022-05-17 11:49 狂热搬砖家 阅读(22) 评论(0) 推荐(0) 编辑
摘要:3.1 相关概念 3.1.1 单机 & 集群 单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器 性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中。 除了负载能力,单点服务器也存在其他问题:  单台机器存储容量有限  单服务器 阅读全文
posted @ 2022-05-17 10:57 狂热搬砖家 阅读(27) 评论(0) 推荐(0) 编辑
摘要:2.1 Elasticsearch 安装 2.1.1 下载软件 Elasticsearch 的官方地址:https://www.elastic.co/cn/ Elasticsearch 最新的版本是 7.11.2(截止 2021.3.10),我们选择 7.8.0 版本(最新版本半 年前的版本) 下载 阅读全文
posted @ 2022-05-14 18:53 狂热搬砖家 阅读(52) 评论(0) 推荐(0) 编辑
摘要:1.1 Elasticsearch 是什么 The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。 能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视 化。Elaticsea 阅读全文
posted @ 2022-05-14 17:23 狂热搬砖家 阅读(41) 评论(0) 推荐(0) 编辑
摘要:10.1. clustering 10.1.1. 使用集群的原因 最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的 要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ 服务器可以满足每秒 1 阅读全文
posted @ 2022-05-14 16:14 狂热搬砖家 阅读(66) 评论(0) 推荐(0) 编辑
摘要:9.1. 幂等性 9.1.1.概念 用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询 阅读全文
posted @ 2022-05-14 16:00 狂热搬砖家 阅读(28) 评论(0) 推荐(0) 编辑
摘要:在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢? 特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如 阅读全文
posted @ 2022-05-14 15:51 狂热搬砖家 阅读(39) 评论(0) 推荐(0) 编辑
摘要:7.1. 延迟队列概念 延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望 在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的 元素的队列。 7.2. 延迟队列使用场景 1.订单在十分钟之内未支付则自动取消 2.新创建的店铺, 阅读全文
posted @ 2022-05-14 15:14 狂热搬砖家 阅读(53) 评论(0) 推荐(0) 编辑
摘要:6.1. 死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理 解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因导致 queue 中的某 阅读全文
posted @ 2022-05-14 15:07 狂热搬砖家 阅读(16) 评论(0) 推荐(0) 编辑
摘要:在上一节中,我们创建了一个工作队列。我们假设的是工作队列背后,每个任务都恰好交付给一个消 费者(工作进程)。在这一部分中,我们将做一些完全不同的事情-我们将消息传达给多个消费者。这种模式 称为 ”发布/订阅”. 为了说明这种模式,我们将构建一个简单的日志系统。它将由两个程序组成:第一个程序将发出日志 阅读全文
posted @ 2022-05-14 14:17 狂热搬砖家 阅读(18) 评论(0) 推荐(0) 编辑
摘要:4.1. 发布确认原理 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的 消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已 阅读全文
posted @ 2022-05-14 13:56 狂热搬砖家 阅读(29) 评论(0) 推荐(0) 编辑
摘要:工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。 相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进 程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。 3.1. 轮训分发消息 在这个案例中我们会启动 阅读全文
posted @ 2022-05-14 11:23 狂热搬砖家 阅读(26) 评论(0) 推荐(0) 编辑
摘要:在本教程的这一部分中,我们将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印 出来的消费者。我们将介绍 Java API 中的一些细节。 在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ 代 表使用者保留的消息缓冲区 2.1. 依赖 <! 阅读全文
posted @ 2022-05-14 11:17 狂热搬砖家 阅读(8) 评论(0) 推荐(0) 编辑
摘要:1.1. MQ 的相关概念 1.1.1.什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游“逻辑解耦+物理解耦 阅读全文
posted @ 2022-05-14 11:09 狂热搬砖家 阅读(28) 评论(0) 推荐(0) 编辑
摘要:1.官网下载zookeeper https://zookeeper.apache.org/releases.html#download 如下: 1.解压到指定文件夹后,进入到bin目录 2.从当前目录进入到cmd命令行,输入 zkServer.cmd ,回车执行后,会提示如下错误 3.切换到conf 阅读全文
posted @ 2022-05-13 21:19 狂热搬砖家 阅读(19) 评论(0) 推荐(0) 编辑
摘要:2.1)、简介 Apache Dubbo (incubating) I 'dnbao|是一款高性能、 轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。官网:http://dubbo.apache.org/ 核心能力: 架构: 阅读全文
posted @ 2022-05-13 20:35 狂热搬砖家 阅读(22) 评论(0) 推荐(0) 编辑
摘要:1、分布式基础理论。 1.1)、什么是分布式系统? 《分布式系统原理与范型》定义:小“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统"。分布式系统( distributed system)是建立在网络之上的软件系统。小随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用 阅读全文
posted @ 2022-05-13 19:44 狂热搬砖家 阅读(10) 评论(0) 推荐(0) 编辑
摘要:以下为jdk源码阅读教程: 前置条件: 1.电脑安装了IDEA 2.会DEBUG调试 步骤1:创建Java工程sourceStudy,在工程目录下src中创建jdksource目录 步骤2:找到源码:首先打开project structure弹框,看到jdk安装目录,然后进入到路径中,看到src.z 阅读全文
posted @ 2022-05-04 10:30 狂热搬砖家 阅读(80) 评论(0) 推荐(0) 编辑
摘要:编程核心前置知识: 技术是不断更新迭代的,我们更需要掌握的是不变性的知识。不管技术栈有多么新,多么庞杂,都离不开以下四个方面: 1.计算机组成原理 2.操作系统 3.计算机网络 4.数据结构 书籍推荐: C语言: 入门: C Primer Plus C++: 入门: C++ Primer Plus 阅读全文
posted @ 2022-05-04 09:40 狂热搬砖家 阅读(566) 评论(0) 推荐(0) 编辑
摘要:同步:我去教室找张三,张三不在座位上,我就在座位上等张三回来 异步:我去教室找张三,张三不在座位上,我就让旁边同学等张三回来就通知我,这个时候我可以去做其他事情 package JUC.completable; import java.util.concurrent.CompletableFutur 阅读全文
posted @ 2022-05-03 23:38 狂热搬砖家 阅读(10) 评论(0) 推荐(0) 编辑
摘要:把复杂任务拆分成多个子任务,最终把子任务结果再做一个合并 package JUC.forkJoin; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import ja 阅读全文
posted @ 2022-05-03 23:21 狂热搬砖家 阅读(36) 评论(0) 推荐(0) 编辑
摘要:11.1 线程池简介 线程池(英语: thread pool) : 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度 阅读全文
posted @ 2022-05-03 22:48 狂热搬砖家 阅读(14) 评论(0) 推荐(0) 编辑
摘要:10.1 Block ingQueue简介 Concurrent包中, BlockingQueue很好的解决了多线程中,如何高效安全"传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们 阅读全文
posted @ 2022-05-03 20:55 狂热搬砖家 阅读(19) 评论(0) 推荐(0) 编辑
摘要:9.1.读写锁 1.读锁发生死锁的情况:线程1修改记录1,同时线程2在读取记录1;线程2修改记录1,同时线程1在读取记录1, 线程1需要等待线程2读完后释放锁才能修改,线程2也需要等待线程1读完后释放锁才能修改。互相持有对方所需的锁。 2.写锁发生死锁的情况:线程1写操作记录1的同时操作记录2;线程 阅读全文
posted @ 2022-05-03 19:29 狂热搬砖家 阅读(42) 评论(0) 推荐(0) 编辑
摘要:8.1 减少计数CountDownLatch CountDownLatch类可以设置一个计数器,然后通过countDown方法来进行减1的操作,使用await方法等待计数器不大于0 ,然后继续执行await方法之后的语句。● CountDownLatch主要有两个方法,当一个或多个线程调用await 阅读全文
posted @ 2022-05-03 17:22 狂热搬砖家 阅读(15) 评论(0) 推荐(0) 编辑
摘要:1.FutureTask充当Runnable接口与Callable的中间对象 package JUC.callable; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; imp 阅读全文
posted @ 2022-05-03 15:56 狂热搬砖家 阅读(19) 评论(0) 推荐(0) 编辑
摘要:6.1 synchronized 6.2 公平锁和非公平锁 源码: 6.3 可重入锁 6.3.1 synchronized(隐式) package JUC.lock; public class SyncLockDemo { public synchronized void add() { add() 阅读全文
posted @ 2022-05-03 14:00 狂热搬砖家 阅读(18) 评论(0) 推荐(0) 编辑
摘要:5.1 集合线程不安全演示 package JUC.lock; import java.util.ArrayList; import java.util.List; import java.util.UUID; /** * 演示:List集合线程不安全 */ public class ThreadD 阅读全文
posted @ 2022-05-03 11:13 狂热搬砖家 阅读(22) 评论(0) 推荐(0) 编辑
摘要:线程间定制化通信 方案:给每个线程定义一个标志位。 package JUC.lock; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.conc 阅读全文
posted @ 2022-05-03 10:22 狂热搬砖家 阅读(28) 评论(0) 推荐(0) 编辑
摘要:线程间通信 对于两个线程a,b; 首先线程a: (1) 判断:变量值如果为0 (2) 干活:变量值+1 (3) 通知:a线程通知b线程对变量-1 其次线程b: (1) 判断:变量值如果为1 (2) 干活:变量值-1 (3) 通知:b线程通知a线程对变量+1 依次类推。。。 代码实现:方式一:sync 阅读全文
posted @ 2022-05-03 00:12 狂热搬砖家 阅读(22) 评论(0) 推荐(0) 编辑
摘要:2.1 Synchronized 2.1.1 Synchronized 关键字回顾 synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1.修饰一个代码块 , 被修饰的代码块称为同步语句块 , 其作用的范围是大括号{}括起来的代码 , 作用的对象是调用这个代码块的对 阅读全文
posted @ 2022-05-02 20:00 狂热搬砖家 阅读(24) 评论(0) 推荐(0) 编辑
摘要:1.1 JUC简介 在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的。JUC就是java.util.concurrent工具包的简称。这是一一个处理线程的工具包, JDK1.5开始出现的。 1.2 进程与线程 进程( Process )是计算机中的程序关于某数据集合上的一次运行活动 阅读全文
posted @ 2022-05-02 19:18 狂热搬砖家 阅读(103) 评论(0) 推荐(0) 编辑
摘要:参考自尚硅谷 附上链接:https://www.bilibili.com/video/BV1Kw411Z7dF?spm_id_from=333.999.0.0 阅读全文
posted @ 2022-05-02 17:45 狂热搬砖家 阅读(33) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示