09 2020 档案

摘要:前言 现在大多数项目都使用了springboot,所以本文主要讲springboot与quartz的完美整合,简化配置、持久化数据并自定义quartz数据源。 正文 一、增加依赖 我们使用的spring-boot-starter-quartz,所以不用显示指定版本号: <!--quartz相关依赖- 阅读全文
posted @ 2020-09-29 23:41 47号Gamer丶 阅读(3520) 评论(0) 推荐(1) 编辑
摘要:Spring Cloud Stream是构建消息驱动的微服务应用程序框架。提供统一的接收发送管道以连接到消息代理。通过@EnableBinding注解开启SpringCloudStream的支持。通过@StreamListener注解,使其接收流处理的时间。 一、引入依赖包 <dependency> 阅读全文
posted @ 2020-09-29 21:58 47号Gamer丶 阅读(540) 评论(0) 推荐(0) 编辑
摘要:消息中间件的背景分析 场景分析 前面,我们可以使用阻塞队列+线程池来实现生产者消费者模式。比如说在一个应用中,A方法调用B方法去执行一些任务处理。我们可以同步调用。但是 如果这个时候请求比较多的情况下,同步调用比较耗时会导致请求阻塞。我们会使用阻塞队列加线程池 来实现异步任务的处理。 那么,问题来了 阅读全文
posted @ 2020-09-29 15:22 47号Gamer丶 阅读(269) 评论(0) 推荐(0) 编辑
摘要:参看 :https://www.jianshu.com/p/3c51832f1051 fastdep整合可以了解下。 阅读全文
posted @ 2020-09-28 22:53 47号Gamer丶 阅读(85) 评论(0) 推荐(0) 编辑
摘要:本篇博文介绍spring integration sftp技术中的sftp outbound gateway相关内容。Sftp outbound gateway 其实质就是提供一组命令(如图1)来实现对服务器上文件的交互操作,包括文件的获取(文件对象和文件名等)、上传(单文件和多文件)、下载(单文件 阅读全文
posted @ 2020-09-28 21:57 47号Gamer丶 阅读(2046) 评论(0) 推荐(0) 编辑
摘要:如何处理所有的Replica不工作的情况 在ISR中至少有一个follower时,Kafka可以确保已经commit的数据不丢失,但如果某个Partition的所有Replica都宕机了,就无法保证数据不丢失了 1. 等待ISR中的任一个Replica“活”过来,并且选它作为Leader; 2. 选 阅读全文
posted @ 2020-09-28 21:54 47号Gamer丶 阅读(272) 评论(0) 推荐(0) 编辑
摘要:消息中间件能做什么 消息中间件主要解决的就是分布式系统之间消息传递的问题,它能够屏蔽各种平台以及协议之间的特性,实现应用程序之间的协同。举个非常简单的例子,就拿一个电商平台的注册功能来简单分析下,用 户注册这一个服务,不单单只是insert一条数据到数据库里面就完事了,还需要发送激活邮件、发送新人红 阅读全文
posted @ 2020-09-28 21:51 47号Gamer丶 阅读(840) 评论(0) 推荐(0) 编辑
摘要:前言: Redis之所以速度这么快,是因为Redis是基于内存的数据库,进行读写操作时,redis都会现在内存中完成,然后定时的刷新到磁盘中去,RDB和AOF就是两种持久化内存中数据的方式。笼统来讲,RDB可以将某一时刻的所有数据写入硬盘中,相当于复制了一份数据;而AOF会在redis执行写命令时, 阅读全文
posted @ 2020-09-27 15:43 47号Gamer丶 阅读(437) 评论(0) 推荐(0) 编辑
摘要:目标 1、 Redis 主从复制的配置和原理; 2、 Redis 哨兵机制(Sentinel)原理和实战; 3、 Redis分布式的各种方案对比,包括客户端Sharding、代理Proxy和RedisCluster。 1.为什么需要Redis集群 1.1 为什么需要集群? 1.1.1性能 Redis 阅读全文
posted @ 2020-09-26 23:56 47号Gamer丶 阅读(662) 评论(0) 推荐(0) 编辑
摘要:一、原理: 一个单体服务,拆成多个微服务A、B、C,一切正常的时候还好,万一A有个功能需要调用B的方法,B的这个方法又要调用C的方法。这个时候C出幺蛾子了,B一直请求不到C就没办法返回结果,A又不断的在请求B。这个时候就会耗尽资源,导致整个系统崩溃掉,就是所谓的雪崩效应。 那么有什么防止措施吗?那就 阅读全文
posted @ 2020-09-24 23:56 47号Gamer丶 阅读(211) 评论(0) 推荐(0) 编辑
摘要:事务 Redis 事务可以一次执行多个命令,有两个特性: 隔离性:事务的所有命令都会序列化、按顺序的执行,事务执行完后才会执行其他客服端的命令。 原子性: 事务中的命令要么全部被执行,要么全部不执行。 使用你事务时会遇到两个错误: 入队时出错,一般时因为语法错误引起的,加入事务队列就会报错,遇到这类 阅读全文
posted @ 2020-09-24 23:47 47号Gamer丶 阅读(793) 评论(0) 推荐(0) 编辑
摘要:引言 之所以谈到布隆过滤器主要是因为以前工作中用到redis,为了防止缓冲穿透而使用了布隆过滤器(BloomFilter)。这次温故而知新,再深入学习它的原理,顺带提提它的其他用途。 1、简介 简单来说,布隆过滤器(BloomFilter)是一种数据结构。特点是存在性检测,如果布隆过滤器中不存在,那 阅读全文
posted @ 2020-09-24 23:39 47号Gamer丶 阅读(519) 评论(0) 推荐(0) 编辑
摘要:一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存 阅读全文
posted @ 2020-09-24 23:02 47号Gamer丶 阅读(172) 评论(0) 推荐(0) 编辑
摘要:一:redis中发布订阅功能 PSUBSCRIBE pattern [pattern …]:订阅一个或者多个符合pattern格式的频道 PUBLISH channel message:发布消息到chanel中 PUBSUB subcommand [argument [argument …]]:查看 阅读全文
posted @ 2020-09-24 20:38 47号Gamer丶 阅读(688) 评论(0) 推荐(0) 编辑
摘要:文章目录 一、使用同一个共享变量控制 Synchronized、wait、notify Lock、Condition 利用volatile 利用AtomicInteger 二、PipedInputStream、PipedOutputStream 三、利用BlockingQueue 四、利用LockS 阅读全文
posted @ 2020-09-24 17:46 47号Gamer丶 阅读(1189) 评论(0) 推荐(0) 编辑
摘要:有时候,对于在多线程中使用static变量有没有冲突,是否存在安全问题不能十分的确定。在使用过程中有点含糊,总想找点时间好好追究一下,可总因开发项目时间的紧迫而搁浅。 线程,是我们项目中绕不过的重点领域。提到线程,就常会听到线程安全的术语。那什么是线程安全呢?通俗点说,就是线程访问时不产生资源冲突。 阅读全文
posted @ 2020-09-24 16:24 47号Gamer丶 阅读(331) 评论(0) 推荐(0) 编辑
摘要:目录 JPA & Spring Data JPA 配置Maven依赖 配置数据源和JPA 创建POJO实体 数据持久化 使用Spring Data JPA接口(方式一) CrudRepository PagingAndSortingRepository JpaRepository QueryByEx 阅读全文
posted @ 2020-09-24 13:52 47号Gamer丶 阅读(280) 评论(0) 推荐(1) 编辑
摘要:概述 服务端编程的一个经典场景是在接收和处理客户端请求时,为了避免对每一个请求都分配线程而带来的资源开销,服务一般会预先分配一个固定大小的线程池(比如Tomcat connector maxThreads),当客户端请求到来时,从线程池里寻找空闲状态的线程来处理请求,请求处理完毕后会回到线程池,继续 阅读全文
posted @ 2020-09-23 11:51 47号Gamer丶 阅读(354) 评论(0) 推荐(0) 编辑
摘要:Redis五大数据类型详解 JedisUtil 这里的测试用例采用junit4进行运行,准备代码如下: private static final String ipAddr = "10.10.195.112"; private static final int port = 6379; privat 阅读全文
posted @ 2020-09-22 00:27 47号Gamer丶 阅读(158) 评论(0) 推荐(0) 编辑
摘要:1. Redis 入门 1.1. Redis 诞生历程 1.1.1.从一个故事开始 08 年的时候有一个意大利西西里岛的小伙子,笔名 antirez(http://invece.org/),创建了一个访客信息网站 LLOOGG.COM。有的时候我们需要知道网站的访问情况,比如访客的 IP、操作系统、 阅读全文
posted @ 2020-09-20 23:23 47号Gamer丶 阅读(185) 评论(0) 推荐(0) 编辑
摘要:概述 为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。 为什么要使用分布式锁 成员变量 A 存在 JVM1、JVM2、JVM3 三个 JVM 内存中 成员变量 A 同时都会在 JVM 分配一块内存,三个请求 阅读全文
posted @ 2020-09-20 21:45 47号Gamer丶 阅读(158) 评论(0) 推荐(0) 编辑
摘要:这篇文章将介绍什么是分布式事务,分布式事务解决什么问题,对分布式事务实现的难点,解决思路,不同场景下方案的选择,通过图解的方式进行梳理、总结和比较。 相信耐心看完这篇文章,谈到分布式事务,不再只是有“2PC”、“3PC”、“MQ的消息事务”、“最终一致性”、“TCC”等这些知识碎片,而是能够将知识连 阅读全文
posted @ 2020-09-20 21:25 47号Gamer丶 阅读(210) 评论(0) 推荐(0) 编辑
摘要:第一种: public void test1() { flag: for (int i = 1; i < 4; i++) { for (int j = 0; j < 4; j++) { if (i == 2) { break flag; } else { System.out.println("i= 阅读全文
posted @ 2020-09-18 17:36 47号Gamer丶 阅读(211) 评论(0) 推荐(0) 编辑
摘要:创建表 1、建表语句如下所示: DROP TABLE IF EXISTS `p_user`; CREATE TABLE `p_user` ( `id` int(11) NOT NULL auto_increment, `name` varchar(10) default NULL, `sex` ch 阅读全文
posted @ 2020-09-18 16:26 47号Gamer丶 阅读(2282) 评论(0) 推荐(0) 编辑
摘要:在应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD。 一,TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。 说明: 返回日期或日期时间表达式datetime_expr1 和 阅读全文
posted @ 2020-09-18 16:07 47号Gamer丶 阅读(240) 评论(0) 推荐(0) 编辑
摘要:mysql-5.6.28主从备份,异地容灾 2018mysql5.7.21主从异地热备份(容灾) 一、主服务器配置 1.首先修改my.cnf文件,添加 server-id = 200 #设置主服务器ID log-bin = mysql-bin-200 #binlog日志文件名 sync_binlog 阅读全文
posted @ 2020-09-18 16:02 47号Gamer丶 阅读(1130) 评论(0) 推荐(0) 编辑
摘要:当我们规划了数据分片,而数据已经超过了单个节点的存储上线,或者需要下线节 点的时候,就需要对数据重新分片。 Mycat 自带的工具 准备工作: 1、mycat 所在环境安装 mysql 客户端程序。 2、mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包。 3、对扩容缩容的表所有节 阅读全文
posted @ 2020-09-18 15:28 47号Gamer丶 阅读(267) 评论(0) 推荐(0) 编辑
摘要:1.Mycat 高可用 目前 Mycat 没有实现对多 Mycat 集群的支持,可以暂时使用 HAProxy 来做负载。 思路:HAProxy 对 Mycat 进行负载。Keepalived 实现 VIP。 2.Mycat 注解 注解的作用 当关联的数据不在同一个节点的时候,Mycat 是无法实现跨 阅读全文
posted @ 2020-09-18 14:30 47号Gamer丶 阅读(584) 评论(0) 推荐(0) 编辑
摘要:1.主从复制的含义 在 MySQL 多服务器的架构中,至少要有一个主节点(master),跟主节点相对的,我们把它叫做从节点(slave)。主从复制,就是把主节点的数据复制到一个或者多个从节点。主服务器和从服务器可以在不同的 IP 上,通过远程连接来同步数据,这个是异步的过程。 2.主从复制的形式 阅读全文
posted @ 2020-09-17 23:46 47号Gamer丶 阅读(672) 评论(0) 推荐(0) 编辑
摘要:ZipUtil: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce 阅读全文
posted @ 2020-09-17 12:48 47号Gamer丶 阅读(656) 评论(0) 推荐(0) 编辑
摘要:package com.sckj.base.util; import java.io.IOException; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.HashMap; im 阅读全文
posted @ 2020-09-17 11:47 47号Gamer丶 阅读(618) 评论(0) 推荐(0) 编辑
摘要:场景 在分片上传的时候,有返回对应的etag,所以,我需要在分片上传完成之后,对返回的数据进行封装,封装完成后调最后的完成接口.出现问题,总是缺少部分分片,偶尔会报错… 模拟 for循环创建CompletableFuture,然后执行allOf方法看看: public static void mai 阅读全文
posted @ 2020-09-17 11:34 47号Gamer丶 阅读(1609) 评论(0) 推荐(0) 编辑
摘要:我喜欢Java 8的CompletableFuture,但它有它的缺点: 惯用的超时处理就是其中之一。 JAVA 8我们只能收集异常信息,再次执行什么的(以下是JAVA8解决超时的方式,获取结果后你该做什么做什么): //我们让list里传入方法的参数1号报错和5号超时 public class T 阅读全文
posted @ 2020-09-17 11:19 47号Gamer丶 阅读(8094) 评论(0) 推荐(0) 编辑
摘要:最近在项目使用Java8 的CompletableFuture执行一些异步多线程任务,一时疏忽,导致ArrayList出现线程安全问题 就算在方法内使用局部变量,但使用异步多线程执行任务,还是会出现线程安全问题 以下是错误、正确使用的示例方法: package test; import java.t 阅读全文
posted @ 2020-09-17 10:32 47号Gamer丶 阅读(1433) 评论(0) 推荐(1) 编辑
摘要:1. 前言 在上一文中我们封装了一个Mybatis通用Mapper。为了获得实体类属性我使用了反射。大多数同学也第一感觉会用反射实现,其实还有一种技术也能实现,这就是内省(Introspector)。 2. 什么是内省 在计算机科学中,内省是指计算机程序在运行时(Runtime)检查对象(Objec 阅读全文
posted @ 2020-09-17 00:26 47号Gamer丶 阅读(183) 评论(0) 推荐(0) 编辑
摘要:1.前言 Java 8提供了非常好用的 Stream API ,可以很方便的操作集合。今天我们来探讨两个 Stream 中间操作 map(Function<? super T, ? extends R> mapper) 和 flatMap(Function<? super T, ? extends 阅读全文
posted @ 2020-09-17 00:16 47号Gamer丶 阅读(752) 评论(0) 推荐(0) 编辑
摘要:传统的,在JAVA中得MAP中删除元素,可以这样,假设有个MAP: Map<Integer, String> map = new HashMap<>(); map.put(1, "value 1"); map.put(2, "value 2"); map.put(3, "value 3"); for 阅读全文
posted @ 2020-09-16 23:17 47号Gamer丶 阅读(4826) 评论(0) 推荐(1) 编辑
摘要:1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是 阅读全文
posted @ 2020-09-16 11:11 47号Gamer丶 阅读(152) 评论(0) 推荐(0) 编辑
摘要:1.1 监控 1.1.1 命令行监控 连接到管理端口 9066,注意必须要带 IP mysql -uroot -h127.0.0.1 -p123456 -P9066 全部命令: mysql>show @@help; 命令 作用 show @@server 查看服务器状态,包括占用内存等 show @ 阅读全文
posted @ 2020-09-14 23:39 47号Gamer丶 阅读(1658) 评论(0) 推荐(0) 编辑
摘要:1.1 Mycat 介绍与核心概念 1.1.1 基本介绍 历史:从阿里 cobar 升级而来,由开源组织维护,2.0 正在开发中。 定位:运行在应用和数据库之间,可以当做一个 MySQL 服务器使用,实现对 MySQL数据库的分库分表,也可以通过 JDBC 支持其他的数据库。 Mycat 的关键特性 阅读全文
posted @ 2020-09-14 22:29 47号Gamer丶 阅读(318) 评论(0) 推荐(0) 编辑
摘要:一、使用zookeeper管理远程Mycat配置文件 环境准备: 虚拟机192.168.152.130: zookeeper,具体参考前面文章 搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下) 虚拟机192.168.152.128: 安装好Mycat,具 阅读全文
posted @ 2020-09-14 22:28 47号Gamer丶 阅读(488) 评论(0) 推荐(0) 编辑
摘要:一、mycat的安装 环境准备:准备一台虚拟机192.168.152.128 1. 下载mycat cd /software wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.g 阅读全文
posted @ 2020-09-14 22:27 47号Gamer丶 阅读(503) 评论(0) 推荐(0) 编辑
摘要:1.zookeeper注册中心的配置安装 1.1 下载zookeeper包(zookeeper-3.4.6.tar.gz),ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一 阅读全文
posted @ 2020-09-14 22:25 47号Gamer丶 阅读(168) 评论(0) 推荐(0) 编辑
摘要:从维度来说分成两种,一种是垂直,一种是水平。垂直切分:基于表或字段划分,表结构不同。我们有单库的分表,也有多库的分库。水平切分:基于数据划分,表结构相同,数据不同,也有同库的水平切分和多库的切分。 1.1 垂直切分 垂直分表有两种,一种是单库的,一种是多库的。 1.1.1 单库垂直分表 单库分表,比 阅读全文
posted @ 2020-09-13 23:58 47号Gamer丶 阅读(606) 评论(0) 推荐(0) 编辑
摘要:为什么要分库分表 1.1 数据库性能瓶颈的出现 对于应用来说,如果数据库性能出现问题,要么是无法获取连接,是因为在高并发的情况下连接数不够了。要么是操作数据变慢,数据库处理数据的效率除了问题。要么是存储出现问题,比如单机存储的数据量太大了,存储的问题也可能会导致性能的问题。归根结底都是受到了硬件的限 阅读全文
posted @ 2020-09-13 23:57 47号Gamer丶 阅读(402) 评论(0) 推荐(0) 编辑
摘要:1.下载mysql5.7并解压 可以自己去下载5.7.22版本 2.可以把解压的内容随便放到一个目录,我的是如下目录(放到C盘的话,可能在修改ini文件时涉及权限问题,之后我就改放D盘了): D:\MySQL\MySQL Server 5.7.22 如下图:此时加压后的文件中没有data目录和ini 阅读全文
posted @ 2020-09-11 21:53 47号Gamer丶 阅读(336) 评论(0) 推荐(0) 编辑
摘要:日期 编号 仓库 数量 2012-05-31 C001 A店 136 2012-05-29 C001 A店 139 2012-05-29 C001 B店 5 2012-05-30 C001 B店 6 我只显示最大日期的记录,这个SQL怎么写呀?即 日期 编号 仓库 数量 2012-05-31 C00 阅读全文
posted @ 2020-09-11 16:45 47号Gamer丶 阅读(2307) 评论(0) 推荐(0) 编辑
摘要:Java集合类的源码是深入学习Java非常好的素材,源码里很多优雅的写法和思路,会让人叹为观止。HashMap的源码尤为经典,是非常值得去深入研究的,jdk1.8中HashMap发生了比较大的变化。 一、初窥HashMap HashMap是应用更广泛的哈希表实现,而且大部分情况下,都能在常数时间性能 阅读全文
posted @ 2020-09-11 14:00 47号Gamer丶 阅读(153) 评论(0) 推荐(0) 编辑
摘要:Spring Bean的生命周期? 首先说一下Servlet的生命周期:实例化,初始init,接收请求service,销毁destroy; Spring上下文中的Bean生命周期也类似,如下: (1)实例化Bean: 对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始 阅读全文
posted @ 2020-09-10 17:24 47号Gamer丶 阅读(104) 评论(0) 推荐(0) 编辑
摘要:字符串是在程序开发中最常见的,Apache Commons开源项目在org.apache.commons.lang3包下提供了StringUtils工具类,该类相当于是对jdk自带的String类的增强,主要做了几方面的处理: 1.核心设计理念就是对于null的进行内部处理,使用时不再需要进行繁琐的 阅读全文
posted @ 2020-09-09 20:30 47号Gamer丶 阅读(547) 评论(0) 推荐(0) 编辑
摘要:先来铺垫下已经存在的 Java8 定义的函数式接口: Java8 Optional库实用操作【简化if else】 我们基本不需要定义自己的函数式接口,Java8 已经给我们提供了大量的默认函数式接口,基本够用,在 rt.jar 包的 java.util.function 目录下可以看到所有默认的函 阅读全文
posted @ 2020-09-09 11:30 47号Gamer丶 阅读(1290) 评论(0) 推荐(0) 编辑
摘要:对于数据库中的树形结构数据,如部门表,有时候,我们需要知道某部门的所有下属部分或者某部分的所有上级部门,这时候就需要用到mysql的递归查询。 1、创建表 DROP TABLE IF EXISTS `t_areainfo`; CREATE TABLE `t_areainfo` ( `id` int( 阅读全文
posted @ 2020-09-09 09:50 47号Gamer丶 阅读(164) 评论(0) 推荐(0) 编辑
摘要:存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结 阅读全文
posted @ 2020-09-09 00:05 47号Gamer丶 阅读(948) 评论(0) 推荐(0) 编辑
摘要:静态行转列: 场景: 比如说一个订单对应多条数据,当状态(status)=1的时候, 数量(num)=25,当状态(status)=2的时候, 数量(num)=45,现在想用一条sql记录下不同状态对应的数量为多少,如下图所示: sql语句示例: SELECT trades_id, MAX(CASE 阅读全文
posted @ 2020-09-08 22:58 47号Gamer丶 阅读(633) 评论(0) 推荐(0) 编辑
摘要:一、深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索 阅读全文
posted @ 2020-09-08 00:40 47号Gamer丶 阅读(165) 评论(0) 推荐(0) 编辑
摘要:1.第一范式1NF(确保每列保持原子性) 每一列属性都是不可再分的属性值,确保每一列的原子性 两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。 根据实际需求设计的字段值不可再分解。比如“部门”和“角色”在需求中都较常用,应该分开两个字段。 2.第二范式2NF(确保表中的每列都和 阅读全文
posted @ 2020-09-07 22:55 47号Gamer丶 阅读(1574) 评论(0) 推荐(0) 编辑
摘要:一、引言 本人最近一直在使用springboot框架开发项目,毕竟现在很多公司都在采用此框架,之后本人也会陆续写关于springboot开发常用功能的文章。 什么场景下会要使用到websocket的呢? websocket主要功能就是实现网络通讯,比如说最经典的客服聊天窗口、您有新的消息通知,或者是 阅读全文
posted @ 2020-09-07 22:00 47号Gamer丶 阅读(991) 评论(2) 推荐(0) 编辑
摘要:1.clone方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。 主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复 阅读全文
posted @ 2020-09-07 11:31 47号Gamer丶 阅读(306) 评论(0) 推荐(0) 编辑
摘要:在分布式计算中,leader election 是很重要的一个功能,这个选举过程是这样子的:指派一个进程作为组织者,将任务分发给各节点。在任务开始前,哪个节点都不知道谁是 leader 或者 coordinator。当选举算法开始执行后,每个节点最终会得到一个唯一的节点作为任务 leader。除此之 阅读全文
posted @ 2020-09-06 23:42 47号Gamer丶 阅读(535) 评论(0) 推荐(0) 编辑
摘要:分布式锁的基本场景 如果在多线程并行情况下去访问某一个共享资源,比如说共享变量,那么势必会造成线程安全问题。那么我们可以用很多种方法来解决,比如 synchronized、 比如 Lock 之类的锁操作来解决线程安全问题,那么在分布式架构下,涉及到多个进程访问某一个共享资源的情况,比如说在电商平台中 阅读全文
posted @ 2020-09-06 23:13 47号Gamer丶 阅读(435) 评论(0) 推荐(0) 编辑
摘要:服务端接收数据请求 服务端收到的数据包应该在哪里呢?在上节课分析过了,zookeeper 启动的时候,通过下面的代码构建了一个ServerCnxnFactory cnxnFactory = ServerCnxnFactory.createFactory(); NIOServerCnxnFactory 阅读全文
posted @ 2020-09-02 22:34 47号Gamer丶 阅读(301) 评论(0) 推荐(0) 编辑
摘要:前面这么长的说明,只是为了清洗的说明事件的注册流程,最终的触发,还得需要通过事务型操作来完成。 在我们最开始的案例中,通过如下代码去完成了事件的触发。 zookeeper.setData(“/mic”, “1”.getByte(),-1) ; //修改节点的值触发监听 前面的客户端和服务端对接的流程 阅读全文
posted @ 2020-09-02 22:01 47号Gamer丶 阅读(414) 评论(0) 推荐(0) 编辑
摘要:ClientCnxnSocketNIO.doIO 服务端处理完成以后,会通过 NIOServerCnxn.sendResponse 发送返回的响应信息,客户端会在 ClientCnxnSocketNIO.doIO 接收服务端的返回,注意一下 SendThread.readResponse,接收服务端 阅读全文
posted @ 2020-09-01 10:43 47号Gamer丶 阅读(570) 评论(0) 推荐(0) 编辑

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