转载
文章平均质量分 54
a_higher
这个作者很懒,什么都没留下…
展开
-
Java类中的 is-a、is-like-a、has-a
转载:https://blog.csdn.net/qq2632246528/article/details/113619080has a关联关系:聚合凡是能够使用 has a 来描述的,统一以属性的方式存在例如 Customer has a FoodMenu(顾客有一个食物菜单)is a继承关系:继承凡是满足is a的表达式都可以设置为继承例如 Cat is a Animal(猫是一种动物)is like a实现关系:接口满足 is like a 的表达式也是一种继承实现转载 2021-07-09 10:38:46 · 535 阅读 · 0 评论 -
java聚合和组合
转载:https://blog.csdn.net/weixin_29333353/article/details/114205154组合:部分与整体是与生俱来的,部分的存在依赖于整体。比如人与人的某个器官,人一出生,器官就在,人死亡,器官也就没了意义。关系相对紧密A类的生命期受B类的控制开辟新空间聚合:你与你的电脑(或者其它物品),电脑是属于你的吧,但是你是一出生就拥有了电脑吗,电脑是某个厂商生产出来的,然后你买过来才成为了你的一部分。你死了以后,电脑也可以送给别人继续用啊!这就不叫做其转载 2021-07-09 10:15:46 · 510 阅读 · 0 评论 -
Java里面volatile关键字修饰引用变量的陷阱
应用场景如果发现该操作已经在执行中则不再执行(有状态执行)如何使用转载 2021-01-22 14:06:51 · 275 阅读 · 0 评论 -
图解MySQL | [原理解析] Adaptive Hash Index 是如何建立的
本文转载https://zhuanlan.zhihu.com/p/106941474图解MySQL | [原理解析] Adaptive Hash Index 是如何建立的Adaptive Hash Index(以下简称 AHI)估计是 MySQL 的各大特性中,大家都知道名字但最说不清原理的一个特性。本期图解我们为大家解析一下 AHI 是如何构建的。首先我们思考一下 AHI 是为了解决什么问题:随着 MySQL 单表数据量增大,(尽管 B+ 树算法极好地控制了树的层数)索引 B+ 树的层数会转载 2020-12-20 19:33:19 · 148 阅读 · 0 评论 -
AQS的底层原理分析
本文转载:https://blog.csdn.net/weixin_38087538/article/details/107485155?utm_source=app个人认为他的图可能错了J.U.C 简介Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并发包的作者是大名鼎鼎的 Doug Lea。我们在接下来的课程中,回去剖析一些经典的比较常用的组件的设计思想LockLoc转载 2020-11-22 19:00:47 · 442 阅读 · 0 评论 -
单例模式详解--通过源码分析:反射及反序列化破坏单例原理及枚举式单例如果防止其破坏、readResolve()如何防止反序列化破坏单例以及spring容器式单例思想
本文转载:https://blog.csdn.net/weixin_49176063/article/details/107299195?utm_medium=distribute.wap_relevant.none-task-blog-title-6单例模式详解--通过源码分析:反射及反序列化破坏单例原理及枚举式单例如果防止其破坏、readResolve()如何防止反序列化破坏单例以及spring容器式单例思想写在前面本文从最基础的饿汉式及懒汉式demo进行引入,通过jdk源码分别分析了:反射转载 2020-11-14 09:37:25 · 483 阅读 · 0 评论 -
重排序与内存屏障
Java内存模型深度解析:基础部分--转并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。同步是指程序用于控制不同线程之间转载 2020-06-03 12:32:35 · 661 阅读 · 0 评论 -
线程中断
本文转载https://my.oschina.net/ljhlgj/blog/1572376中断线程thread.interrupt()用来中断线程,即将线程的中断状态位设置为true,注意中断操作并不会终止线程,不像stop()会立即终止一个运行中的线程,中断仅仅是将线程中断位设置为true(默认false)。线程会不断的检查中断位,如果线程处于阻塞状态(sleep、join、wait)且中断,就会抛出InterreptException来唤醒线程,交由应用程序处理;如果线程未阻塞且中断,也要交由转载 2020-11-19 14:23:30 · 256 阅读 · 0 评论 -
JVM-内存模型与垃圾回收
本文转载:https://blog.csdn.net/weixin_45676630/article/details/105799329但没有转载完全,gc算法之前已经写过了1.内存模型1.1 JVM 运行时内存Java 堆从GC 的角度可以细分为: 新生代(Eden 区、From Survivor 区和To Survivor 区)和老年代。1.1.1 young区是用来存放新生的对象。一般占据堆的1/3 空间。由于频繁创建对象,所以young区会频繁触发MinorGC 进行垃转载 2020-11-18 20:15:33 · 158 阅读 · 0 评论 -
JVM-基础认识+目录
本文转载:https://blog.csdn.net/weixin_45676630/article/details/105777777参考:https://blog.csdn.net/a_higher/article/details/1046380221 基本概念JVM是可运行Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。2 运行过程我们都知道Java 源文件,通过编转载 2020-11-18 20:09:55 · 271 阅读 · 1 评论 -
RPC原理加手写源码
徒手撸一个简单的RPC框架Java RMI 和 RPC 的区别(转载这篇)RPC 远程过程调用RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。一次RPC调用的过程大概有10步:1.执行客户端调用语句,传送参数2.调用本地系统发送网络消息3.消息传送到远程主机4.服务器得到消息并取得参数5.根据调用请求以及参数执行远程过程(服务)6.执行过程完毕,将结果返回服务器句柄7.服务器句柄返回结果.转载 2020-11-18 14:11:27 · 186 阅读 · 1 评论 -
Java并发之Condition
Java并发之Condition在使用Lock之前,我们使用的最多的同步方式应该是synchronized关键字来实现同步方式了。配合Object的wait()、notify()系列方法可以实现等待/通知模式。Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以及功能特性上还是有差别的。Object和Condition接口的一些对比。摘自《Java并发编程的艺术》一、Condition接口介绍和示例 首先...转载 2020-11-16 23:19:55 · 236 阅读 · 0 评论 -
锁分类和java锁机制
本文转载https://blog.csdn.net/qq_42022528/article/details/87880252一、什么是锁?在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他、并发控制策略。 锁通常需要硬件支持才能有效实施。这种支持通常采取一个或多个原子指令的形式,如"test-and-set", "fetch-and-add" or "compare-and-swap"”。这些指令允...转载 2020-11-16 23:01:25 · 196 阅读 · 0 评论 -
并发理论基础:并发问题产生的三大根源
本文转载:https://zhuanlan.zhihu.com/p/64988344并发理论基础:并发问题产生的三大根源问题根源之一:缓存导致的可见性问题CPU的执行操作数据的过程一般是这样的,CPU首先会从内存把数据拷贝到CPU缓存区。然后CPU再对缓存里面的数据进行更新等操作,最后CPU把缓存区里面的数据更新到内存。磁盘、内存、CPU缓存会按如下形式协作。缓存导致的可见性问题就是指我们在操作CPU缓存过程中,由于多个CPU缓存之间独立不可见的特性,导致共享变量的操作结.转载 2020-11-16 20:08:17 · 514 阅读 · 0 评论 -
单例模式:基于反射和反序列化破解单例模式的漏洞及其解决方法
本文转载:https://blog.csdn.net/fly_as_tadpole/article/details/86655360单例模式:基于反射和反序列化破解单例模式的漏洞及其解决方法单例模式使得在创建类对象的时候只创建一个对象实例。上一节讲解了五种实现单例模式的方式。分别为:饿汉模式、懒汉模式、double check、静态内部类、枚举但是基于反射和反序列化可以破解单例模式的单一实例,在使用反射时可以通过调用setAccesible()直接调用私有构造器,创建新的实例;在反序列化的时转载 2020-11-14 09:29:31 · 186 阅读 · 0 评论 -
30张图带你彻底理解红黑树
本文转载https://www.jianshu.com/p/e136ec79235c30张图带你彻底理解红黑树写在前面当在10亿数据进行不到30次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! —— 学红黑树有感。终于,在学习了几天的红黑树相关的知识后,我想把我所学所想和所感分享给大家。红黑树是一种比较难的数据结构,要完全搞懂非常耗时耗力,红黑树怎么自平衡?什么时候需要左旋或右旋?插入和删除破坏了树的平衡后怎么处理?等等一连串的问题在学习前困扰着我。如果你在学习过程中也会存在我的疑转载 2020-11-12 21:01:55 · 181 阅读 · 0 评论 -
java中的fail-fast(快速失败)机制
本文转载https://blog.csdn.net/zymx14/article/details/78394464java中的fail-fast(快速失败)机制引入在前面介绍ArrayList的扩容问题时对于modCount的操作没有详细说明,该变量的操作在add,remove等操作中都会发生改变。那么该变量到底有什么作用呢?简介fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可.转载 2020-11-12 18:59:01 · 663 阅读 · 0 评论 -
浅谈ArrayList动态扩容
本文转载https://blog.csdn.net/zymx14/article/details/78324464浅谈ArrayList动态扩容环境:eclipse,jdk1.8简介ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与Vector最大的区别就是,Vector是线程安全的,所以ArrayList 性能相对Vector 会好些),它实现了Serializable接转载 2020-11-12 18:56:34 · 199 阅读 · 0 评论 -
Spring系列之FactoryBean(二)
本文转载https://conan.blog.csdn.net/article/details/79588391?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_pa转载 2020-11-10 22:22:23 · 136 阅读 · 0 评论 -
Spring系列之FactoryBean(一)
本文转载https://conan.blog.csdn.net/article/details/79572387#comments_13341441在我们的开发工作中应该都见过或使用过FactoryBean这个类,也许你会看成了BeanFactory这个类。FactoryBean和BeanFactory虽然长的很像,但是他们的作用确实完全不像。这里你可以想象一下,你会在什么样的场景下使用FactoryBean这个接口?FactoryBean是一个工厂Bean,可以生成某一个类型Bean实例,它最大的一个转载 2020-11-10 22:19:44 · 168 阅读 · 0 评论