摘要:
fastjson可以自动映射pos_id到posId。 JSON.parseObject(String, Class): 从String到POJO (JSONObject) JSONObject.parseObject(String): 从String到JsonObject (JSONArray) 阅读全文
摘要:
一. 缓存穿透 当热点数据为空时,将会有大量请求到缓存,一旦数据库承受不了用户请求,查询就会变慢,大量的请求也会阻塞在数据库查询上,造成应用服务器的连接和线程资源被占满,最终导致系统崩溃,这样称为缓存穿透。 通常解决方案: 返回空值 我们从数据库中查询到空值或者发生异常时,我们可以向缓存中回种一个空 阅读全文
摘要:
1. Cache Aside(旁路缓存) 这个策略数据以数据库中的数据为准,缓存中的数据是按需加载的。 数据更新: 更新数据库中的记录; 删除缓存记录 从缓存中读取数据; 如果缓存命中,则直接返回数据; 如果缓存不命中,则从数据库中查询数据,并将数据写入到缓存中,并且返回给用户。 2. read、W 阅读全文
摘要:
六、分布式Trace简述 1. 请求要在多个服务之间调用,如何排查慢请求问题? 给同一个请求的每一行日志增加一个相同的标记,比如我们可以在程序的入口处生成一个requestId,然后把它放在线程的上下文中,这样就可以在需要时随时从线程上下文中获取到requestId了。 String request 阅读全文
摘要:
4.6 轻量级锁、偏向锁——Monitor升级 JDK6之前的加锁方式是:关联锁对象到Monitor进行加锁,Monitor是由操作系统提供的,加锁代价高。 JDK6之后,对加锁方式进行了优化,引入了轻量级锁、偏向锁等。 1. 轻量级锁 如果一个对象虽然有多个线程要加锁,但是加锁的时间是错开的(没有 阅读全文
摘要:
4.5 Monitor (重量级锁) Monitor被翻译为监视器或管程, 在Java中每个对象可以关联一个Monitor对象,Monitor是操作系统提供的、用于实现对象的加锁机制的角色。 使用Monitor(重量级锁)给synchronized对象加锁的过程: Java对象被加锁,则MarkDo 阅读全文
摘要:
4.3 线程安全类 线程安全类:String、Integer、StringBuffer、Random、Vector、Hashtable、java.util.concurrent(JUC)包下的类 注意:它们每个方法是原子的,但是多个方法的组合不是原子的。 String和Integer String和 阅读全文
摘要:
Java对象由对象头+对象体组成。对象头大小为64比特,用于存储对象信息。对象头的分类为: 普通对象头: 64b 32b Mark Word:对象信息 32b Klass World:类名信息 数组对象头:96位 32b Mark Word:对象信息 32b Klass World:类名信息 32b 阅读全文
摘要:
zebra是一个基于JDBC API协议上开发出的高可用、高性能的数据库访问层解决方案。通俗来说就是数据库访问的中间件,在JDBC和数据库连接池之上实现读写分离、分库分布等功能。一般来说Zebra在数据访问架构中位置如下^[2]^: Zookeeper/OCTO/Nacos:注册中心,存储了数据库的 阅读全文
摘要:
一、mapStruct映射工具 1.1 功能 在编译时期是处理映射注解,实现类到类之间的映射 MapStruct vs BeanUtils BeanUtils: 在运行时根据反射动态赋值 缺点:动态赋值,存在大量的反射调用,性能较低;内存占用多,不适合高并发应用场景 MapStruct:在编译时静态 阅读全文