java
文章平均质量分 78
xidianhuihui
这个作者很懒,什么都没留下…
展开
-
Guava Cache实现原理及最佳实践
expireAfterWrite 是允许一个线程进去load方法,其他线程阻塞等待。refreshAfterWrite 是允许一个线程进去load方法,其他线程返回旧的值。在上一点基础上做成异步,即回源线程不是请求线程。异步刷新是用线程异步加载数据,期间所有请求返回旧的缓存值。Guava Cache是一个很优秀的本地缓存工具,缓存的作用不多说,一个简单易用,功能强大的工具会使你在开发中事倍功半。原创 2024-09-03 18:12:08 · 893 阅读 · 0 评论 -
Guava Cache实现原理及最佳实践
expireAfterWrite 是允许一个线程进去load方法,其他线程阻塞等待。refreshAfterWrite 是允许一个线程进去load方法,其他线程返回旧的值。在上一点基础上做成异步,即回源线程不是请求线程。异步刷新是用线程异步加载数据,期间所有请求返回旧的缓存值。Guava Cache是一个很优秀的本地缓存工具,缓存的作用不多说,一个简单易用,功能强大的工具会使你在开发中事倍功半。原创 2024-08-30 18:27:21 · 1221 阅读 · 0 评论 -
记一次dubbo provider获取不到dubbo.tag问题排查
项目里通过dubbo.tag=gray传递灰度标,但是上游consumer已经在attachment里面设置dubbo.gray了,下游却拿不到。原创 2024-03-29 15:52:34 · 417 阅读 · 0 评论 -
SOLID六大设计原则
六大设计原则SOLID单一职责原则:Single Responsibility Principle开闭原则:Open Closed Principle里氏替换原则:Liskov Substitution Principle迪米特法则:Law of Demeter接口隔离原则:Interface Segregation Principle依赖倒置原则:Dependence Inversion Principle单一职责原则:Single Responsibility Principle一个类只原创 2021-03-15 21:04:12 · 163 阅读 · 0 评论 -
阿里JVM SANDBOX原理
一、前言在开始之前,我们先来模拟一下以下的场景:小李:“小明,你的接口没有返回数据,麻烦帮忙看一下?”小明:“我这边的数据也是从别人的服务器中拿到的,但是我不确定是因为逻辑处理有问题导致没有结果,还是因为我依赖的服务有问题而没有返回结果,我需要确认一下。”小明:“哎呀,线上没有日志,我需要加个日志上个线。”30 分钟之后……小明:“不好意思,日志加错地方了……稍等……”接来下隆重登场的就是本文的主角 JVM SandBox 了。基于 JVM SandBox,我们可以很容易地做到在不重新部署应用转载 2021-03-11 23:06:02 · 1671 阅读 · 1 评论 -
jdk 1.7 hashMap多线程下循环引用问题
问题的症状从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()这个方法上了,重启程序后问题消失。但是过段时间又会来。而且,这个问题在测试环境里可能很难重现。我们简单的看一下我们自己的代码,我们就知道HashMap被多个线程操作。而Java的文档说HashMap是非线程安全的,应该转载 2021-03-10 21:31:55 · 452 阅读 · 1 评论 -
数据库一致性
数据库一致性特性ACIDACID是事务的四个特性,指的是atomicity,原子性;consistency,一致性;isolation,隔离性;durability,持久性A:atomicity,原子性C:consistency, 一致性I: isolation,隔离性D:durability,持久性内部不一致性情况: 丢失修改\脏读\幻读\不可重复读导致数据不一致原因修改丢失、脏读、幻读、不可重复读提交读、串行化隔离这些概念是什么修改丢失修改丢失是事务A和B先后更改数据数据x(原创 2021-03-08 16:42:32 · 2995 阅读 · 3 评论 -
B+树、B树、红黑树等各种树的关系
二叉树二叉树又名二叉排序树,亦称二叉搜索树、二叉查找树。是每个结点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。定义若左子树不空,则左子树上所有节点的值均小于它的根节点的值;若右子树不空,则右子树上所有节点的值均大于它的根节点的值;左、右子树也分别为二叉排序树;没有键值相等的节点。平衡二叉树平衡二叉树是基于二叉查找树优化而来的。定义非叶子结点最多只能有两个子结点,且左边子结点点小于当前结点值,右边子结点大于当前结点树,并且为保证查询性能增增删结点时要保证左右两边结点层级相原创 2021-03-07 10:38:19 · 210 阅读 · 0 评论 -
java类加载机制
java类加载机制参考资料:java类加载机制[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bX7ZG3sG-1614827353041)(https://pics0.baidu.com/feed/37d12f2eb9389b50828b0dfd61271ed9e6116ec5.jpeg?token=d636526e80bfc081f77f2572a772fe0f&s=B1B25D32819E4DCA56C9C0CE020090B2)]各个区域作用参考原创 2021-03-04 11:09:21 · 111 阅读 · 1 评论 -
java类加载机制
java类加载机制参考资料:java类加载机制[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-emugNfh6-1614761394684)(https://pics0.baidu.com/feed/37d12f2eb9389b50828b0dfd61271ed9e6116ec5.jpeg?token=d636526e80bfc081f77f2572a772fe0f&s=B1B25D32819E4DCA56C9C0CE020090B2)]各个区域作用原创 2021-03-03 16:50:11 · 78 阅读 · 1 评论 -
hashMap原理
各种集合类继承关系hashMap put原理首先写个测试方法, 初始化size为2,put几个值,再get查询,debug看方法里执行了什么HashMap<Integer, String> hashMap = new HashMap<>(2);hashMap.put(1, "aaaPh1");hashMap.put(2, "aaaPh2");hashMap.put(3, "aaaPh3");hashMap.put(4, "aaaPh4");hashMa.原创 2021-02-26 14:13:54 · 97 阅读 · 0 评论 -
spring怎么解决循环依赖
1. 过程演示关于Spring bean的创建,其本质上还是一个对象的创建,既然是对象,一定要明白一点就是,一个完整的对象包含两部分:当前对象实例化和对象属性的实例化。在Spring中,对象的实例化是通过反射实现的,而对象的属性则是在对象实例化之后通过一定的方式设置的。理解这一个点之后,对于循环依赖的理解就已经帮助一大步了,我们这里以两个类A和B为例进行讲解,如下是A和B的声明:@Componentpublic class A { private B b; public void setB原创 2021-02-24 16:01:16 · 87 阅读 · 0 评论 -
秒杀系统设计
秒杀系统特点时间短,访问量大读多写少难点防止超卖保障系统不崩防止缓存雪崩,缓存击穿,缓存穿透拦截恶意请求防止链接暴露保障数据库稳定不挂优化方法url动态加密请求的url加上动态加密串,到了服务端解密,判断是否是合法请求,不合法的直接pass,增加作弊成本前端资源静态化将前端资源放到cdn上,只有动态接口才到服务端前端拦截用户点了按钮后,按钮灰掉,等过几秒才能再点。通过这个方法,已能拦截80%的流量后端拦截同一个uid,限制访问频率,x秒.原创 2021-02-23 19:53:15 · 129 阅读 · 2 评论 -
使用netty搭建一个简单的http服务
到github上下载netty源码:https://github.com/netty/netty查看example首先创建一个HttpHelloWorldServer作为启动类/** * An HTTP server that sends back the content of the received HTTP request * in a pretty plaintext form. */public final class HttpHelloWorldServer {..原创 2021-02-22 10:06:41 · 173 阅读 · 0 评论 -
android NDK配置及使用demo
一、关于NDK:NDK全称:Native Development Kit。 1、NDK是一系列工具的集合。 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要转载 2013-11-01 17:12:09 · 1431 阅读 · 0 评论 -
android java.lang.UnsatisfiedLinkError: Native method not found及.so找不到无法加载问题
最近项目中使用NDK遇到一些问题,由于项目要打成jar包提供给其他人用,遇到一些平时apk使用.so时没有遇到的问题,在网上找了很多资料都没有说明,经过很长时间探索,终于把相关问题解决了,有几个注意的地方分享给大家,希望对大家有帮助一.关于NDK的配置及使用,请参考我的上一篇博文http://blog.csdn.net/xidianhuihui/article/details/14003991原创 2013-11-01 17:31:14 · 1953 阅读 · 1 评论 -
强软弱虚---强引用、软引用、弱引用、虚引用
强软弱虚---强引用、软引用、弱引用、虚引用博客出自:http://blog.csdn.net/liuxian13183由于最近要研究大数据,流媒体问题,所以专门来研究下java的几种引用其被垃圾回收的优先级依次往下排:强引用、软引用、弱引用、虚引用以下内容皆作者摘抄总结如下,以飨读者!网络资料转载 2014-01-13 00:35:02 · 999 阅读 · 0 评论 -
anroid内存分析
1.http://bjyzxxds.iteye.com/blog/1532937原创 2014-10-22 11:25:12 · 436 阅读 · 0 评论 -
java正则表达式
在Java中,我们为了查找某个给定字符串中是否有需要查找的某个字符或者子字串、或者对字符串进行分割、或者对字符串一些字符进行替换/删除,一般会通过if-else、for 的配合使用来实现这些功能 。如下所示: Java代码 public class Test{ public static void main(String args[]) {转载 2015-01-26 09:32:49 · 393 阅读 · 0 评论 -
java反射机制超简单Demo
Demo里包括构造方法的获取,使用反射机制新建对象,成员变量的获取,成员方法的获取,方法参数的获取以及通过反射机制对方法的使用,完整Demo见附件,正文只贴出主要代码,代码里面注释很多,就不再一一解释了。package zh.Reflect;import java.lang.reflect.Field;import java.lang.reflect.InvocationTar原创 2013-10-19 10:22:10 · 816 阅读 · 0 评论