designPattern
简单工厂模式12345678910111213141516// 简单工厂模式通常就是,一个工厂类 XxxFactory,里面有一个静态方法,根据我们不同的参数,返回不同的派生自同一个父类(或实现同一接口)的实例对象。public class FoodFactory { public static Food makeFood(String name) { if (name.equals("noodle")) { Food noodle = new LanZhouNoodle(); noodle.addSpicy("more"); return noodle; } else if (name.equals("chicken")) { Food chicken = new HuangMenChicken(); ...
计算机网络基础
网址Url:统一资源定位符协议 :// web服务器名 / 目录名 / … / 文件名如:http://www.baidu.com/dir1/dir2/file.html / 根目录||—dir1/| || |—dir2/| || |—file.html|—dir3/ | ...
TLS
TLS (Transport Layer Security) 是一种安全传输协议,用于保护网络通信的安全性和隐私性。TLS 由记录协议、握手协议、警告协议、变更密码规范协议、扩展协议等几个子协议组成,综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术。 对称加密对称加密算法使用相同的密钥进行加密和解密,加密和解密速度快,适合大数据量的加密。常见的对称加密算法有DES、3DES、AES等。 加密分组模式可以让算法用固定长度的密钥加密任意长度的明文 非对称加密有两个密钥,一个叫公钥(public key),一个叫私钥(private key)。两个密钥是不同的(不对称),公钥可以公开给任何人使用,而私钥必须严格保密。公钥和私钥有个特别的 单向...
BlockingQueue
介绍ArrayBlockingQueue 是 Java 并发包 (java.util.concurrent) 中的一个线程安全的阻塞队列实现。它基于数组实现,具有固定的容量,支持多线程环境下的高效生产和消费操作。 特性 有界队列:ArrayBlockingQueue 是一个有界队列,容量在创建时固定,无法动态扩容。 线程安全:内部通过 ReentrantLock 实现线程安全。 阻塞操作: 当队列满时,插入操作会被阻塞,直到队列有空闲空间。 当队列空时,取出操作会被阻塞,直到队列中有新元素。 方法 插入操作: add(E e):插入元素,如果队列满则抛出异常。 offer(E e):插入元素,如果队列满则返回 false。 put(E e):插入元素,如果队列满则阻塞等待。 取出操作: remove():取出并移除队头元素,如果队列空则抛出异常。 poll():取出并移除队头元素,如果队列空则返回...
CompletableFuture
CompletableFuture诞生于Java 8,是对Future的一种改进,由于使用Future会造成回调地狱,所以CompletableFuture应运而生。CompletableFuture是对Future的一种扩展,可以通过设置回调的方式处理计算结果,同时支持组合操作,一定程度解决了回调地狱的问题。 基本使用supplyAsync123456789101112131415public static void main(String[] args) { System.out.println(); System.out.println(Thread.currentThread().getName() + "冰红茶进入教室"); System.out.println(Thread.currentThread().getName() + "冰红茶坐在座位上"); CompletableFuture<String> cf = CompletableFuture.supplyAsync(()...
限流算法
...
线程池
线程池的TipsThreadPoolExecutor的参数列表 int corePoolSize:核心线程数 int maximumPoolSize:最大线程数 long keepAliveTime:线程空闲时间 TimeUnit unit:时间单位 BlockingQueue workQueue:阻塞队列 ThreadFactory threadFactory:线程工厂 RejectedHandler handler:拒绝策略 动态参数设置 ThreadPoolExecutor.setCorePoolSize(int corePoolSize) ThreadPoolExecutor.setMaximumPoolSize(int maximumPoolSize) ThreadPoolExecutor.setKeepAliveTime(long time, TimeUnit unit) ThreadPoolExecutor.setThreadFactory(ThreadFactory...
技术平台
技术平台用户角色:读者、作者、管理员权限:管理员>作者>读者 读者的所有功能,作者都拥有;但是作者存在部分读者用不了的功能(如文章编辑、修改、发布等) 管理员权限最大,覆盖读者、作者的所有功能点 读者主要是阅读文章作者主要是发布文章管理员主要是管理整个系统,标签、文章审核、分类管理等,通常不参与文章的阅读发布 业务拆分 用户 文章 专栏 消息 评论 运营 搜索 推荐 统计 登录用户首先通过用户中心登录系统具体的登录方式可以是传统的用户名/密码,也可以是手机号验证码,亦或者是第三方OAuth2.0登录登录之后,用户身份识别,可以是单机的cookie/session, 也可以是分布式会话,jwt等形式 消息通知方案消息通知采用异步驱动,通过Event/Listener方式来实现解耦 架构使用MCV三层架构,是模型(Model)、视图(View)和控制器(Controller)的缩写,可以分为三层:表示层、业务逻辑层和数据访问层 实体对象do 领域对象dto 数据传输对象bo 业务对象po 持久化对象vo 视图对象req...
RPC
基本概念 RPC(Remote Procedure Call)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议 代理层代理层用于封装多余的操作,例如:制定协议,编码,从注册中心要服务,负载均衡,调用,容错机制。所有的流程都在代理层封装好了,调用方只需要进行调用方法即可。 注册中心
GC调优
常用参数-Xms -Xmx :堆内存大小-XX:NewSize -XX:MaxNewSize:新生代,young 区-XX:NewRatio :新生代 和 old 区的一个比例-XX:MaxSurvivorRatio :Eden 区和 Survivor 区的比例-XX:MetaspaceSize -XX:MaxMetaspaceSize :Metaspace 大小-XX:UseCompressedClassPointers:是否启用压缩的类指针-XX:CompressedClassSpaceSize:设置类压缩占用空间-XX:InitialCodeCacheSize:CodeCache 初始大小-XX:ReservedCodeCacheSize:CodeCache 最大大小 打印日志相关参数打印时间-XX:+PrintGCTimeStamps时间相关:针对 GC 开始的时间-XX:+PrintGCDateStamps...