Endpoint
SpringBoot的Endpoint主要是用来监控应用服务的运行状况,并集成在Mvc中提供查看接口
内置Endpoint
- HealthEndpoint 监控dist和db的状态
- MetricsEndpoint 监控内存与gc的状况
netty通过Reactor模型基于多路复用器接收并处理用户请求(能讲就多讲一点),内部实现了两个线程池,boss线程池和work线程池,其中boss线程池的线程负责处理请求的accept事件,当接收到accept事件的请求时,把对应的socket封装到一个NioSocketChannel中,并交给work线程池,其中work线程池负责请求的read和write事件
Netty为什么传输快: 使用ByteBuf在堆外进行,零拷贝
netty是由JBOSS提供的一个java开源框架。
netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
netty:异步非阻塞开源框架
服务发现——Netflix Eureka 服务调用——Netflix Feign
熔断器——Netflix Hystrix 服务网关——Netflix Zuul
分布式配置——Spring Cloud Config 消息总线 —— Spring Cloud Bus
eureka client注册到eureka服务端上,不管服务提供者还是服务消费者都要注册。
eureka服务端和客户端有心跳机制,默认30秒。90秒没有收到,就会剔除掉这个客户端。
服务消费者客户端上有服务注册表缓存,eureka服务端down之后,也能找到服务提供者。
三种方式:轮循
,随机
,根据响应时间加权
默认策略是轮循
。
可以自定义
eureka包含有ribbon的jar包
1 | create database myday default character set utf8mb4 collate utf8mb4_unicode_ci; |
1 | - 设置主键ID自增 |
唐宋八大家之一欧阳修在《卖油翁》中写道:
翁取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。因曰:“我亦无他,唯手熟尔。”
编写代码的”老司机”也是如此,”老司机”之所以被称为”老司机”,原因也是”无他,唯手熟尔”。编码过程中踩过的坑多了,获得的编码经验也就多了,总结的编码技巧也就更多了。总结的编码技巧多了,凡事又能够举一反三,编码的速度自然就上来了。笔者从数据结构的角度,整理了一些 Java 编程技巧,以供大家学习参考。
HashSet 实现 Set 接口,由哈希表(实际上是 HashMap )实现,但不保证 set 的迭代顺序,并允许使用 null 元素。HashSet 的时间复杂度跟 HashMap 一致,如果没有哈希冲突则时间复杂度为 O(1) ,如果存在哈希冲突则时间复杂度不超过 O(n) 。所以,在日常编码中,可以使用 HashSet 判断主键是否存在。
案例:给定一个字符串(不一定全为字母),请返回第一个重复出现的字符。