一、什么是观察者模式观察者模式又叫做发布-订阅模式或者源-监视器模式。结合它的各种别名大概就可以明白这种模式是做什么的。其实就是观察与被观察,一个对象(被观察者)的状态改变会被通知到观察者,并根据通知产生各自的不同的行为。以下为《设计模式的艺术》中给出的定义:观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并
一、什么是策略模式定义一些列算法类,将每一个算法封装起来,并让它们可以互相替换。策略模式让算法独立于使用它的客户而变化,是一种对象行为型模式。以上是策略模式的一般定义,属于是课本内容。在没有真正理解策略模式之前并不需要对此定义下过多功夫,读一遍直接进入下一章节。二、为什么要用策略模式我们应该知道,所谓的设计模式实际上是一种经过检验的、科学高效的、针对某种场景的最佳编程设计实践。所以要理解某一种设计
首先,跨域的域是什么? 跨域的英文是:Cross-Origin。Origin 中文含义为:起源,源头,出生地。在跨域中,"域"指的是一个 Web 资源(比如网页、脚本、图片等)的源头。包括该资源的协议、主机名、端口号。在同源策略中,如果两个资源的域相同,则它们属于同一域,可以自由进行交互和共享数据。反之,如果两个资源的域不同,就会出现跨域。这时就需要特殊的方式来处理,如跨
一、程序计数器 程序计数器内存很小,可以看作是当前线程所执行字节码的行号指示器。有了它,程序就能被正确的执行。因为有线程切换的存在,则每个线程必须有各自独立的程序计数器,即线程私有的内存。这里再解释一下什么是线程切换,线程切换指的是:单处理器在执行多线程时所进行的线程切换,多线程的交替运行会产生同时运行的错觉。程序计数器不会发生OOM原因:占用内存非常小,当线程结束时程序计数器也会随之
当我们学习 apple 时候,我们很容易记住 apple 是什么。我们也不会对 apple 的概念产生模糊混淆。为什么?因为字典上明确说了,apple = 苹果。那苹果是什么?苹果就是圆圆的红红的,吃起来甜甜的水果。我们学习 apple 如此简单,就是因为我们对苹果这个概念的理解已经通透到不能再通透。那现在我们问,事务是什么?我们百度一下。在最开始,我死记硬背各种博客笔记对事务的定义。好像理解了。
一、java锁存在的必要性要认识java锁,就必须对2个前置概念有一个深刻的理解:多线程和共享资源。对于程序来说,数据就是资源。在单个线程操作数据时,或快或慢不存在什么,一个人你爱干什么干什么。多个线程操作各自操作不同的数据,各干各的,也不存在什么。多个线程对共享数据进行读取操作,我就四处看看,什么也不动,也不存在什么。但如果多个线程对共享数据进行写操作,就来了。经典库存:my
聚簇索引一般指的是主键索引(如果存在主键索引的话)。作为一个正常开发,建表时主键肯定是必须的。而即使如果表中没有定义主键,InnoDB 会隐式选择一个唯一的非空索引代替。所以我们就直接含糊点说:聚簇索引就是主键索引!其余的都是非聚簇索引。那到底什么是聚簇索引,什么是非聚簇索引?聚簇就是扎一堆儿。聚簇索引就是将数据存储与索引放到了一块,找到索引也就找到了数据。在 innodb 中,在聚簇索引之上创建
开发中经常遇到需要判空的地方,比如对字符串进行判空操作。而有时候工具包太多不知道用哪个。就像下图,光一个 StringUtils 就有十几个包弹出来。怎么选?其实用哪个都行。最重要的是:有一套自己用的顺手的工具。或者换句话说:要养成自己的开发习惯。有了自己专属的开发习惯,不管客观上这个习惯是否是最优的,但一定要有一套,然后随着经验积累和实践,将这套习惯不断修整精进,达到个人开发效率的最高程度。而且
技术总是在不断更新变化的,尤其是在IT编程领域。有时候我们理所当然的用着现成的框架,以至于用的太过于顺手,更要时不时的骂一句:什么垃圾框架?我家狗都不会用!如果那些被拍死在沙滩的“前浪”听到这话,怕是要顶开棺材板给你点个赞。为什么?因为太安逸了,安逸到一出生就开着拖拉机耕地,还嫌拖拉机费油。今天来看看不费油的,费人。现在MyBatis框架用的比较熟练了,但是有时候不明白原理,也不知道MyBatis
场景描述:前一阵子接手的新项目中需要使用2个数据源。一个叫行云数据库,一个叫OceanBase数据库。就是说,我有时候查询要查行云的数据,有时候查询要查 OceanBase 的数据,咋办?废话不多说, 下面以mysql为例,开整。一、环境依赖<dependency> <groupId>org.springframework.boot</groupId>
张麻子:汤师爷,翻译翻译,什么叫AOP?汤师爷:这还用翻译。张麻子:我让你翻译给我听,什么叫AOP?汤师爷:不用翻译,切面编程就是AOP啊。黄四郎:难道你听不懂什么叫AOP?张麻子:我就想让你翻译翻译,什么叫AOP!汤师爷:AOP嘛。张麻子:翻译出来给我听,什么他妈的叫AOP!什么他妈的叫他妈的AOP!汤师爷:什么他妈的叫AOP啊?黄四郎:AOP就是Aspect Oriented Programm
学习 SpringBoot 自动配置之前我们需要一些前置知识点。
首先我们要明确:@Import 注解是 Spring 提供的。 然后我们看一下该注解的官方注释:Indicates one or more component classes to import — typically @Configuration classes. Provides functionality equivalent to the <import/> el
日拱一卒,功不唐捐。在了解 @Conditional 之前先花 10 秒钟复习一下 @Configuration 这个注解。@Configuration 是干什么?是配合 @Bean 注解来配置 Spring 容器的 bean 的。那它为什么会出现呢?因为配置 bean 的另一种方式是 xml ,狗都不用。那给个示例看看呗?简单。@Configuration public class AppCon
学习 @ConfigurationProperties 之前我们需要一些前置知识点:@Value是个什么东西首先明确:@ConfigurationProperties 是 SpringBoot 注解。我们在讲 @Value 时知道了如何将配置文件的属性注入到变量中,废话不多说,直接上代码。这是配置文件配置:spring.datasource.dynamic.mysql.driverClassNam
对注解不了解的可以看一下:Java注解,看完就会用首先我们要明确:@Value 是 Spring 框架的注解。它有什么作用呢?作用@Value 通过注解将常量、配置文件中的值、其他bean的属性值注入到变量中,作为变量的初始值。使用方式常量注入顾名思义,就是把一个写死的值赋给对应变量,形式如下:// 注入普通字符串 @Value("Bin") private String username;
什么是注解定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。内置注解• @Override: 标记在成员方法上,用于标识当前方法是重写父类(父接口)方法,编译器在对该方法进行编译时会检查是否符合重写
学习动态代理之前我们需要一些前置知识点:学一点关于JVM类加载的知识Java反射,看完就会用然后我们从设计模式中的代理模式开始说。代理模式代理模式中有3个角色:• 抽象角色:负责定义RealSubject和Proxy应该实现的接口。• 真实角色:真正完成业务服务功能。• 代理角色:包含对RealSubject的引用,自己不做业务。代理模式在实际生活中的应用实例有:明星
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号