4 yamikaze

尚未进行身份认证

我要认证

新人

等级
TA的排名 9w+

Java对象比较

对于Java的对象比较,聊一下个人的看法。我们知道Java里面比较对象相等,有2种方式 ,== 或者 equals方法。equals比较方式比较简单,在这儿不做过多说明,主要对==方式进行说明。1、基本类型比较Java的8大基本类型可以直接使用==进行比较,可以认为这儿的基本类型的比较是值比较。 例如下面的代码块: int i = 1; int j = 2; Syste...

2019-12-23 21:19:27

证明Java中int类型内存大小为4个字节

序不久前看到一代码片段,如下:int wordlength(void) { int i = 1; unsigned j = (unsigned)~0; for(; (j = j >> 1) > 0; i++) ; return i;}上述代码片段用于计算计算机的字长(计算机一次性可操作的字节数),例如 32位操作系统可以一次性读取4个字节,64位操作系统可...

2019-12-21 20:27:39

如何让三条线程依次输出Hello World!

1、线程睡眠法    启动三条线程,每条线程睡眠指定的时间,从而达到效果。private static void sleep() { System.out.println("========enter sleep========"); ThreadFactory factory = ThreadFactoryBuilder.getThreadFactory("pri...

2018-03-13 21:58:05

Redis学习笔记之十三:Redis集群

1、Redis开启集群    默认情况下Redis并没有开启集群模式,如果想要开启,需要将配置中的cluster-enabled修改为yes便开启了集群模式。在这个模式下与单机模式有点区别:只能使用0号数据库。 Redis在启动时会默认创建16个数据库,编号 0 ~ 15,使用指令SELECT可以选择数据库,默认是0号,如果你的Redis开启了AOF,打开AOF文件最上面的指令一定是SELEC

2017-11-10 18:02:17

JDK8--HashMap源码阅读

HashMap作为Java最常用的集合类之一,内部采用了数组 + 链表 + 树的形式来存储Key-Value。内部结构如下图所示:    链表在大于一定长度时会转换为树形式存储,这个长度默认是8.1、HashMap的初始化    HashMap提供了多个构造函数进行初始化,各个构造函数如下:/** * initialCapacity 容量,会作为table数组的长度,默认

2017-11-08 18:39:21

Redis学习笔记之十二:Redis复制(数据同步)

虽然Redis提供了持久化的功能保证了在Redis服务器重启时数据不会丢失,但保存在磁盘上的数据文件依旧有可能因为磁盘损坏而丢失,所以Redis提供了复制功能来在多台Redis服务器上同步数据,这样即使有一台Redis服务器保存数据的文件损坏,数据也不会丢失。    同步后的Redis数据库分为两类:主数据库(master),从数据库(slave),它们结构如下图:    主从是相

2017-11-08 11:04:16

Redis学习笔记之十一:Redis数据持久化

Redis在用作缓存服务器、队列等之前,是先作为数据库来使用的,Redis开发的初衷也是为了替代Mysql。Redis作为数据库,当然也支持将内存中的数据写到磁盘上或者从磁盘上读取数据。Redis支持写入两种格式的文件,RDB和AOF。    1、RDB写入方式    Redis默认是使用RDB方式进行持久化的,打开redis.conf配置文件,可以看到以下配置:save 900 1

2017-11-07 11:24:07

Redis学习笔记之十:Redis用作消息队列

Redis不仅可作为缓存服务器,还可用作消息队列。它的列表类型天生支持用作消息队列。如下图所示:  由于Redis的列表是使用双向链表实现的,保存了头尾节点,所以在列表头尾两边插取元素都是非常快的。  所以可以直接使用Redis的List实现消息队列,只需简单的两个指令lpush和rpop或者rpush和lpop。简单示例如下:存放消息端(消息生产者):消息

2017-11-06 10:17:06

Redis学习笔记之九:管道

由于Redis客户端和服务端采用TCP连接,所以每次放送一条指令都需要建立一次连接。但建立连接是比较昂贵的操作,所以Redis底层协议对管道提供了支持,用于在一次连接中发送多条指令,你可以将其与HTTP协议中的长连接进行对比(一次连接发起多个请求)。    测试代码如下:package org.yamikaze.redis.test;import org.junit.After;im

2017-11-04 20:13:31

Redis学习笔记之八:Redis的事务

Redis作为数据库,当然也有事务。但它的事务与Mysql等关系型数据库的事务不同。    Redis中的事务同Redis的执行命令一样,都是最小执行单元,这是与Mysql的第一点区别。为什么?因为Mysql默认开启了自动事务提交,每一条Sql语句都会被当做一个事务提交,而关闭Mysql事务后需要使用commit指令提交后才开启下一个事务。但Redis中的指令就是一个最小执行单元,这点可以认为

2017-11-03 14:28:35

Redis学习笔记之七:有序集合类型

Redis最后一种类型是有序集合类型ZSet,即排序的Set,但又与Set不同的是,它比Set多一个字段分数(score)用于排序等操作,从这点来看,相当于Java中的TreeMap,但与Java的TreeMap不同的是,TreeMap排序是指定Comparator对象来排序,通过比较Key来排序,最后构成一棵树。而Redis的ZSet在存储结构上类似于Set。    1、设值/取值

2017-11-02 15:06:39

Redis学习笔记之六:集合类型Set

Redis的Set类型可以对比Java中的Set,但两者又有所不同。下面开始练习操纵Set类型的指令吧!    1、设置/取值(add)    SADD 指令用于向集合中插入元素,返回值为成功插入的元素个数。    可以看到,集合中不能有重复的元素,所以返回值为3.    使用SMEMBERS指令取值(整个Set)    Redis的Set也有有序的。不

2017-11-02 13:30:43

Redis学习笔记之五:散列类型

Redis的散列类型可以看做Java中的Map结构,后文简称Map,同时Redis中操纵Map的指令均已H开头。    可以将Map当做Java中的HashMap,这样便于快速理解。既然将其看做Map,那Redis的这个Map肯定与Java中的Map有相似之处,如下图:    可以看到Key对应的Value是一个Map,而Map内部又有Key-Value键值对。内部的Key也是不能

2017-11-01 17:50:16

Redis学习笔记之四:列表类型

Redis的列表类型可以跟编程语言中的列表对应,如果要与Java对应的话,可以认为Redis的列表相当于Java中的Stack吧,但在实现上可以认为相当于Java的LinkedList,但Redis的这个LinkedList是双向的,下面看看Redis关于List的操作吧!        1、设值/取值    由于List相当于一个双向的LinkedList,所以可以往这个链表的两端都

2017-11-01 16:15:05

Redis学习笔记之三:String类型

String类型是Redis最重要的数据类型,其他4种类型都是以String作为基础的。Redis为操纵String类型的数据提供了许多指令,指令数量算是5种类型最多的了。虽然Redis提供的String指令没有Java等编程语言中String的API丰富,但在我看来,其实各有千秋,你可以使用一个简单的指令完成Java中需要10行左右的代码才能完成的事。但String类型存储是有限制的,Value

2017-11-01 11:36:57

Redis学习笔记之二:Redis的数据存储结构

Redis提供Key-Value形式的存储格式,与编程语言中的类型不同的是,Key只能是String类型,在Java的Map中,Key可以是除基本类型外的所有类型。Redis的Value类型有5中,Value可以为String,List,散列类型,Set(集合类型),ZSet(有序集合类型)

2017-10-31 18:10:27

Redis学习笔记之一:Redis的安装以及Redis的初步使用

什么是Redis?          Redis作为一个由C语言开发的NoSql数据库,自2009年完成开发以来,受到了广大程序员和许多公司的青睐。 Redis的主要开发者是Salvastore Sanfilippo,在推出LLOOGG系统后对Mysql的性能感到失望,决定重新为LLOOGG定制一个数据库,并于2009开发完成,且同一年将其开源,这就是Redis的由来。(ps:可能这就是大佬吧

2017-10-31 14:02:17

tomcat学习笔记之五:tomcat中的设计模式

待完成

2017-10-29 01:10:16

tomcat学习之四:tomcat的类加载机制

tomcat的类加载机制继承了java类加载机制中经典的双亲委派模型。所以要了解tomcat的类加载机制需要先了解双亲委派模型。        在程序中用到的类需要由类加载器将类的class文件加载到内存中,然后经由JVM验证、解析、初始化后才能使用,如下段代码:public static void main(String[] args) throws Exception { User

2017-10-27 17:21:13

tomcat学习之三:tomcat的线程模型

tomcat的依赖库分为三类,

2017-10-25 18:21:50

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。