摘要:* 可参见 Java 中的 IO 与 socket 编程 [ 复习 ] ByteBuffer 数据类型的说明 public abstract class ByteBuffer { // buff即内部用于缓存的数组 final byte[] hb; //为某一读过的位置做标记,便于某些时候回退到该位
阅读全文
摘要:mysql-demo.yml input { jdbc { jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/db_example" jdbc_use
阅读全文
摘要:关于泛型基础 协变 ① 为什么数组是协变的? jdk1.5 之前不支持泛型,,想要为每个数组类型添加通用的 equals方法,所以设计成是协变的。 ② 为什么数组需要在运行时保留类型信息? 由于数组是协变的,利用其多态特性,即 Integer[]的实例对象可以赋给 Number[]类型的变量。则可以
阅读全文
摘要:原生的 socket 编程:Java 中的 IO 与 socket 编程 [ 复习 ] 介绍 Netty 项目是一个提供异步事件驱动网络应用框架。 示例 1.discord 服务 handler public class DiscardServerHandler extends ChannelInb
阅读全文
摘要:一、基础配置 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> 客户端配置
阅读全文
摘要:基本环境的部署请参考 RabbitMQ 入门 添加并启动该插件 wget --no-check-certificate --content-disposition https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releas
阅读全文
摘要:前篇 消息队列客户端开发向导(基于 Spring 的 amqp 实现) 一、应答模式与重试机制 NONE 自动应答 即 autoAck 等于 true,rabbitmq 会自动把发送出去的消息置为确认,然后从内存/磁盘中删除,而不管消费者是否真正消费了消息。 MANUAL 需要手动 ACK/NACK
阅读全文
摘要:问题代码: private final ConcurrentHashMap<String, List<Region>> store = new ConcurrentHashMap<>(); @Override public List<Region> tree(boolean province) {
阅读全文
摘要:不要使用 docker:maven 镜像作为基础镜像构建 Dockerfile 。 如果非要使用的话,需要将 settings.xml 等文件手动添加到 /usr/share/maven/ref/repository 目录下,再执行构建(因为 docker:maven 镜像默认设定本地仓库为 /us
阅读全文
摘要:上篇文章 RabbitMQ 入门 通过 4个基本实例展示了 RabbitMQ 的基本用法。下面,继续介绍相关的 API 1.声明交换器 几个常见交换器都是实现的 Exchange,该接口有几个重要属性 //交换器名称 String name; //交换器类型 String type; //是否可持久
阅读全文
摘要:1.创建 Mapper 测试数据 示例1: 总共发出了 3条请求,并且每个请求都会创建一个新的 sqlSession 示例2: 公用一个 sqlSession,只发了 2条请求,其中第2个语句没有发请求(利用了 mybatis 一级缓存) 示例3: 类似于示例2,只创建一个 sqlSession,并
阅读全文
摘要:* 基于 spring boot 请阅读下方参考文档 启动一个 rabbitmq version: "3.2" services: some-rabbit: image: rabbitmq:3-management hostname: "my-host" environment: RABBITMQ_
阅读全文
摘要:Spring Cloud 网关主要有三大模块:route、predicates、filters 其中 filter 最为关键,是功能增强的核心组件。 列举出一些功能组件: 5.6 CircuitBreaker 5.7 FallbackHeaders 5.11 RequestRateLimiter 5
阅读全文
摘要:作用与功能 ① 资源隔离, 每个依赖配备单独的线程池,为每个依赖提供一个小的线程池(或信号),如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。② 依赖超时,可配置依赖调用超时时间,超时时间一般设为比99.5%平均时间略高即可.当调用超时时,直接返回或执行fallback逻辑。③ 依
阅读全文
摘要:java.util.function中定义了几组类型的函数式接口以及针对基本数据类型的子接口。 233
阅读全文
摘要:Java 中的异常分为运行时异常与受检异常。 受检异常(比如 IOException) 优点:需要手动检查try catch或者继续向上抛出,可以说异常是类型安全的,可以保证程序的健硕性。 缺点:此类异常要么改变签名(向上抛出)要么手动捕获。如果某个方法添加了这类异常,可能导致一系列方法受影响。或者
阅读全文
摘要:TypeScript 中的接口,有点类似抽象类的概念。Java 中抽象类属于包含属性与抽象行为,而接口通常只是抽象行为。抽象类可以实现模板模式。 参考 https://www.cnblogs.com/dolphin0520/p/3811437.html
阅读全文
摘要:概念 序列化:把对象转化为可传输的字节序列过程称为序列化。 反序列化:把字节序列还原为对象的过程称为反序列化。 为什么需要序列化 序列化最终的目的是为了对象可以跨平台存储,和进行网络传输。而我们进行跨平台存储和网络传输的方式就是IO,而我们的IO支持的数据格式就是字节数组。 因为我们单方面的只把对象
阅读全文
摘要:1. 什么时候需要实现幂等性接口? 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。既然是这样我们的查询和删除不就是多次执行的结果和一次执行的相同吗。是的,查询和删除拥有天然的幂等性,当然删除这个第一次执行和后面执行的返回值可能会有所不同,但是最终的效果是一致的。所以需
阅读全文
摘要:官方指南 1.逻辑删除 在相应字段上添加注解 说明: 使用mp自带方法删除和查找都会附带逻辑删除功能 (自己写的xml不会) 2.通用枚举类 比如一些状态属性 ① 声明枚举 定义枚举 使用枚举 ②配置扫描枚举 3.自动填充功能 自动填充,意味着就是设置默认值,不依赖数据库设置默认值,依赖程序实现。
阅读全文