自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 缓存一致性协议之MESI

缓存一致性协议在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存 (MainMemory)。基于高速缓存的存储交互很好地解决了处理器与内存的速度矛盾,但是 也引入了新的问题:缓存一致性(CacheCoherence)。当多个处理器的运算任务都涉及同一 块主内存区域时,将可能导致各自的缓存数据不一致的情况,如果真的发生这种情况,那同步 回到主内存时以谁的缓存数据为准呢?为了解决一致性的问题,需要各个处理器访问缓存时都 遵循一些协议,在读写时要根据协议来进行操作,这类协议有MSI、 MES

2020-11-16 14:07:25 366

原创 HashMap的长度为什么一定要是2的幂次方

HashMap的长度为什么一定要是2的幂次方运算效率首先是运算效率,我们都知道计算机是以二进制存储的。与运算符(&)是计算机中的一中基本的逻辑运算方式它的运算方式是只能两者都为1的时候才等于1,否则等于0。0&0=0;0&1=0;1&0=0;1&1=1;//两者同时为1,结果为1,否则为0我们刚好可以利用这个性质来进行取模运算。相当于传统的取模运算,&与运算符的效率要快的多666%len666&(len-1) //&与运算符

2020-11-15 13:43:50 424 1

原创 MyBatis七大开发步骤

MyBatis开发步骤1.实体2.实体别名3.表4.创建DAO接口5.实现Mapper文件6.注册Mapper文件7.MybaistAPI调用首先先搭建Mybatis开发环境1.准备与之相关的jar包,在pom.xml文件中进行依赖的导入,引入mysql与mybatis相关的jar包 <dependency> <groupId>mysql</groupId> <artifactId>mysql-con

2020-11-14 23:44:20 491

原创 Java中的continue与break的区别

1)continue是跳出本次循环,例如(for i = 0; i < 6; i++){if(i == 2){continue;}System.out.println("i = " + i);}//则结果是://i = 0//i = 1//i = 3//i = 4//i = 5//i = 6即当遇到continue时,本次循环结束,直接开始下一次循环;2)break是跳出本循环体,例如(for i = 0; i < 6; i++){(for j = 0; j

2020-11-14 20:06:17 98

原创 string的==和equals()

1.== 和 equals():(1)“==” 用于比较基本数据类型时比较的是值,用于比较引用类型时比较的是引用指向的地址。(2)Object 中的equals() 与 “==” 的作用相同,但String类重写了equals()方法,比较的是对象中的内容。 public boolean equals(Object anObject) { if (this == anObject) { return true; } else { if (anObject inst

2020-11-14 20:00:06 2584 1

原创 牛客题 string常量池

String test="javaandpython"; String str1="java"; String str2="and"; String str3="python"; System. out. println(test=="java"+"and"+"python"): //结果是trueSystem. out. println(test ==str1 + str2 + str3);//结果是false对于上面这段代码,结果是true false这是因为字符串字面量拼接操作是在Jav

2020-11-04 12:05:00 127

原创 面向对象简单的内存分析

1、java中的栈(stack)和堆(heap)是java在内存(ram)中存放数据的地方2、堆区存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令);jvm只有一个heap区,被所有线程共享,不存放基本类型和对象引用,只存放对象本身。堆的优劣势:堆的优势是可以动态的分配内存大小,生存期也不必事先告诉编译器,java的垃圾收集器会自动收取这些不在使用的数据,但缺点是,由于要在运行时动态分配内存,存取速度慢。3、栈区每一个线程包含一个stack区,只保

2020-11-03 22:11:47 95

原创 synchronized底层原理

synchronized底层原理我们都知道synchronized可以让代码同步,所谓同步代码就是在同一时刻只能有一个线程执行这段代码。synchronized可以锁对象,例如pubilc class Demo{ private Object object; public Demo (Object obj){ this.obj = obj; } pubilc void method(){ synchronized(obj){

2020-11-01 13:53:46 300

原创 i++与++i的区别

先来看一道牛客题答案是0;答案为什么是0呢public static void main(String[] args) { int count = 0; for(int i = 0;i<=10;i++){ count = count++; System.out.println(count);}}

2020-10-23 18:03:35 122

原创 元注解

◆元注解的作用就是负责注解其他注解, Java定义了4个标准的meta -annotation类型,他们被用来提供对其他annotation类型作说明.◆这些类型和它们所支持的类在java.lang.annotation包中可以找到.( @Target,@Retention,@Documented , @Inherited )➢@Target: 用于描述注解的使用范围(即:被描述的注解可以用在什么地方,比如说是类、方法上还是在构造器上)➢@Retention :表示需要在什么级别保存该注释信息,用于描

2020-10-23 17:32:27 127 1

原创 常用内置注解

常用内置注解@Override 重写的注解指示方法声明旨在覆盖超类型中的方法声明。如果使用此注释类型对方法进行注释,则除非至少满足以下条件之一,否则要求编译器生成错误消息:该方法会覆盖或实现在超类型中声明的方法。该方法的签名与Object中声明的任何公共方法的签名等效。@Deprecated 不推荐程序员使用,但是可以使用。或者存在更好的方法注释为@Deprecated的程序元素是不鼓励程序员使用的元素,通常是因为这样做很危险,或者因为存在更好的替代方法。当在不推荐使用的代码中使用或覆

2020-10-23 14:44:19 205

原创 Java基础可变参数

/**可变参数JKD1.5出现新特性*解决,参数的类型明确,参数个数不确定*可变参数定义格式*修饰符 返回值类型 方法名(数据类型…变量名){}调用可变参数的方法,参数可传可不传,个数不限制可变参数就是数组*可变参数的定义注意事项1.可变参数在一个方法里,只能写一个*2.定义可变参数,可变参数必须写在参数列表的最后面*/public class ChangArgs02 {public static void main(String[] args) { getS

2020-09-23 19:50:11 101

原创 牛客网Java题

在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为正确答案: CA.隐藏B.覆盖C.重载D.Java不支持此特性解析:方法重载跟返回值类型和修饰符无关 Java的重载 是发生在本类中的,重载的条件是在本类中有多个方法名相同,但参数列表不同(可能是,参数个数不同,参数类型不同),跟返回值无关。在socket编程中,可以使用方法( )获取本机的ip地址正确答案: BA. getInetAddress()

2020-09-19 19:07:08 1615

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除