02 2021 档案

摘要:api组件 提供交互接口以及请求的参数对象 // 交互接口 public interface IService { String getToken(String userId); String receiveMsg(); } // 交互数据封装 public class RpcRequestMsg 阅读全文
posted @ 2021-02-22 11:06 祁奇 阅读(207) 评论(0) 推荐(0)
摘要:序列化/反序列化 - 实现内存对象 - 二进制数据的转换,二进制数据用于存储、持久化、网络传输。 技术选型要素:①序列化空间开销(压缩比) ②序列化时间损耗(性能需求) ③是否跨平台 ④使用的难易程度 ⑤是否需要可读性 Java序列化 // 序列化对象需实现Serializable接口,可通过tra 阅读全文
posted @ 2021-02-22 10:21 祁奇 阅读(119) 评论(0) 推荐(0)
摘要:概念 网络编程知识 DNS域名系统(属于应用层):用于将域名解析成IP(单域名解析多IP可实现负载均衡) IP网际互连协议:用于实现广域网中的数据传输(ip是根据网络拓扑分配的,解决我在哪的问题) MAC:用于实现局域网中的数据传输(mac是由网卡制造商分配的,解决我是谁的问题) ARP地址解析协议 阅读全文
posted @ 2021-02-22 01:12 祁奇 阅读(181) 评论(0) 推荐(0)
摘要:架构的本质:功能的拆分与整合(类比:代码模块/类划分,以及模块之间的交互) 互联网架构的演进 单机架构(单台机器上同时部署 Java服务 和 数据库) 一个类中完成所有操作 硬件资源告警:数据库与应用分离。 业务与数据处理分离 单服务支撑能力不足:水平扩容,采用代理服务器解决负载均衡问题 线程并发 阅读全文
posted @ 2021-02-22 01:09 祁奇 阅读(84) 评论(0) 推荐(0)
摘要:分布式开发基础 分布式开发基础知识杂记 分布式开发 - Socket编程 BIO/NIO/AIO 分布式开发 - 序列化Demo 分布式开发 - 基于Socket搭建简易的RPC交互 阅读全文
posted @ 2021-02-22 01:08 祁奇 阅读(112) 评论(0) 推荐(0)
摘要:线程池的种类 线程池名称 描述 FixedThreadPool 核心线程数等于最大线程池,任务队列长度为Integer.MAX_VALUE SingleThreadExecutor 一个线程的线程池,任务队列长度为Integer.MAX_VALUE CachedThreadPool 核心线程为0,最 阅读全文
posted @ 2021-02-21 01:00 祁奇 阅读(73) 评论(0) 推荐(0)
摘要:JDK 1.8中,CHM采用Node数组 + 链表/红黑树(避免hash冲突)。 细化锁 - 1.8中,只对数组元素进行加锁,进一步避免冲突(1.7中为分段锁的设计) 纳入红黑树的实现,当链表长度>=8(且Map.size>=64)时,会将链表转换为红黑树(查询效率 log(n)) put tip 阅读全文
posted @ 2021-02-20 14:11 祁奇 阅读(80) 评论(0) 推荐(0)
摘要:Atomic类 - 线程安全类型 Atomic类的相关操作,底层实现依赖Unsafe类中的原子指令实现(如CAS) + volatile。 public class AtomicInteger extends Number implements java.io.Serializable { priv 阅读全文
posted @ 2021-02-10 02:04 祁奇 阅读(66) 评论(0) 推荐(0)
摘要:ReentrantLock - 独占锁 特性:①独占锁 ②可重入 ③公平/非公平 ④可超时中断 // ReentrantLock public class ReentrantLockTest { private static Lock lock = new ReentrantLock(); priv 阅读全文
posted @ 2021-02-09 14:37 祁奇 阅读(120) 评论(0) 推荐(0)
摘要:AQS Java并发编程核心在于java.util.concurrent包,而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这组行为的实现,就是基于AbstractQueuedSynchronizer(AQS) AQS提供了一套多线程访问共享资 阅读全文
posted @ 2021-02-07 01:26 祁奇 阅读(113) 评论(0) 推荐(0)
摘要:创建线程的三种方式 继承Thread对象,重写run方法 实现runnable接口,作为Thread构造参数 - Thread默认的run()方法中会调用runnable对象的run()方法 实现callable接口,配合FutureTask对象使用 - 底层依然是runnable接口,通过共享变量 阅读全文
posted @ 2021-02-05 17:32 祁奇 阅读(207) 评论(0) 推荐(1)
摘要:并发编程基础知识 AbstractQueuedSynchronizer解析 JUC中常用的并发工具 原子类与阻塞队列 ConcurrentHashMap 线程池原理与解析 阅读全文
posted @ 2021-02-05 17:20 祁奇 阅读(62) 评论(0) 推荐(0)
摘要:核心对象 SqlSessionFactoryBean: 实现InitializingBean接口,在初始化过程中读取配置文件mybatis-config.xml并创建SqlSessionFactory MapperScannerConfigurer: 实现BeanDefinitionRegistry 阅读全文
posted @ 2021-02-03 18:29 祁奇 阅读(64) 评论(0) 推荐(0)
摘要:入口 public static void statementTest() { // 1.0 配置解析入口 // mybatis-config.xml - Configuration // mapper.xml - <Type,MapperProxyFactory> // mapper.xml#<s 阅读全文
posted @ 2021-02-03 18:26 祁奇 阅读(98) 评论(0) 推荐(0)
摘要:缓存 一级缓存(Local cache) 作用范围:单个SqlSession,与SqlSeesion中的Executor组合在一起(当前SqlSession执行select语句则发生缓存写入,发生update类语句则发生缓存清空) 弊端:不能跨会话共享,无法感知到其他SqlSession发生的upd 阅读全文
posted @ 2021-02-03 18:25 祁奇 阅读(154) 评论(0) 推荐(0)
摘要:Mybatis框架 - 半自动的对象关系映射ORM框架 资源管理 封装样板代码 实现对象关系映射(参数处理和结果集处理) SQL语句与业务代码解耦,通过xml配置实现sql的统一管理 动态SQL 缓存机制和插件机制 mybatis中文官方文档 Mybatis使用案例: public static v 阅读全文
posted @ 2021-02-03 17:17 祁奇 阅读(116) 评论(0) 推荐(0)