自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java对象在内存中的布局

文章目录1、-XX:FieldsAllocationStyle2、-XX:CompactFields3、@sun.misc.Contended4、静态字段的偏移量计算5、示例5.1、-XX:FieldsAllocationStyle5.2、-XX:CompactFields5.3、Contended6、其他6.1、通过Unsafe获取实例字段和静态字段的偏移量6.2、Unsafe是如何进行实例字段和静态字段偏移量的获取,以及如何通过CAS操作改变值Java对象在内存中属于oop-klass二分模型,即对

2021-06-14 23:05:03 1480 1

原创 Java对象比较

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

2019-12-23 21:19:27 440

原创 证明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 1537

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

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

2018-03-13 21:58:05 1312

原创 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 920 1

原创 JDK8--HashMap源码阅读

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

2017-11-08 18:39:21 354

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

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

2017-11-08 11:04:16 1836

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

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

2017-11-07 11:24:07 1481

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

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

2017-11-06 10:17:06 85787 10

原创 Redis学习笔记之九:管道

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

2017-11-04 20:13:31 942

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

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

2017-11-03 14:28:35 707

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

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

2017-11-02 15:06:39 3180

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

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

2017-11-02 13:30:43 1744 1

原创 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 1242

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

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

2017-11-01 16:15:05 550

原创 Redis学习笔记之三:String类型

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

2017-11-01 11:36:57 764

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

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

2017-10-31 18:10:27 3189

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

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

2017-10-31 14:02:17 996

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

待完成

2017-10-29 01:10:16 477

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

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

2017-10-27 17:21:13 3877

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

tomcat的依赖库分为三类,

2017-10-25 18:21:50 2779 2

原创 tomcat学习之二:tomcat的结构

tomcat的结构可以从server.xml中看出一二,例如server包含service,而service包含engine,engine中包含host。

2017-10-24 22:47:47 458

原创 tomcat学习之一:tomcat的安装以及基本配置

Tomcat是Apache软件基金会

2017-10-24 20:29:44 332

原创 设计模式之单例模式

1、什么是单例模式?          单例模式是一种常用的软件设计模式,是软件设计模式中最简单的形式之一,目的是为了使类的一个对象成为系统中的唯一实例。2、为什么需要单例模式?           单例模式是为了保证程序运行期间某些对象只有一个实例,比如代表打印资源的打印机(ps: 有多台打印的别打我)、例如window只能打开一个任务管理器(ps :可以试下ctrl + shift

2017-10-23 18:48:17 250

原创 记一次OOM总结

前言:项目将要上线之际,后台管理交给乙方添加数据+上传资料等等,前台正微调中,在快要下班之际,乙方突然反应传一个300MB的视频没传上去,报错了(这儿就不要吐槽为啥用web传大视频了,已经被吐槽过了)。然后上服务器查看日志,错误信息是OutOfMemoryError :Java heap space。 项目是使用Spring boot搭建,文件上传到服务器,服务器再上传到七牛云。

2017-10-18 20:27:04 415

原创 Spring IOC三种注解注入Inject、Resource、AutoWired区别与IOC注入过程

Spring三种注解方式的区别:@AutoWired、@Resource、@Inject1、  @AutoWired是Spring自带的方式  @Resource是JSR-250标准,JDK6以上自带,Spring版本要求2.5以上  @Inject是JSR-303标准,Spring版本3以上。需要导入外部依赖。2、  @AutoWired可以用在构造器、方法、属性

2017-09-09 01:08:14 3862 1

原创 Java语言中的线程安全--《深入理解Java虚拟机》笔记

《Java Concurrency In Practice》作者Brian Goetz对“线程安全”有一个比较恰当的定义:当多个线程访问访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。Java语言中的线程安全 按照线程安全的“安全程度”

2017-09-08 23:41:41 291

原创 Bootstrap-fileinput控件的使用

最近由于公司需求,用到了bootstrap-fileinput插件上传文件,简单写个博客记个笔记。 1、上传文件用的比较广泛,所以还是比较重要的。       虽然可以在表单中使用来上传文件,但效果是比较简陋的,而且不支持预览,当然使用bootstrap-fileinput可以解决这个问题。 2、使用步骤。     2.1、由于bootstrap-fileinput是一个第三方插件

2017-08-07 19:37:27 5030

原创 Java注解Annotation的写法以及注意

现许多流行框架都有注解配置,Java注解是JDK1.5以后引入的一个特性。它可以使用在类、方法、数据字段上。注解是与反射配合使用的,可以通过Class类的getAnnatation等方法获取注解。先来看看怎么编写注解吧。1、声明。声明类使用的是class关键字,接口是interface关键字,声明注解使用的是@interface关键字,如下:public @interface My

2017-08-06 21:55:15 2581

原创 Spring MVC的几个注解

1、@RestController与@Controller。这两个注解用于声明WEB控制器,那么区别在哪儿呢?我们知道使用Spring MVC,一个方法对应一个url,然后相应处理后返回对应的视图,但有时候不会返回视图,返回的是JSON数据,那么我们需要在方法上加上@ResponseBody像下面这样: @RequestMapping("/checkUser") @Respons

2017-08-06 19:11:42 9275

原创 Mybatis学习笔记之五:Mybatis3.X与Spring4.X的整合

在开始项目前,先做好一下准备工作:1、Mybatis3.X的jar包。2、Spring4.X的jar包。3、Sping与Mybatis的插件包。

2017-07-13 16:47:42 379

原创 Mybatis学习笔记之四:动态SQL

Mybatis的另一个优势在于它的动态SQL语言拼接。

2017-07-12 14:12:00 240

原创 Mybatis学习笔记之三:Mybatis的常用配置介绍

现在许多框架都提供了两种配置方式,文件配置和注解配置文件配置主要使用xml文件,其他的还有properties,yml等。注解则是嵌入代码中。看到这儿应该明白,注解配置是与代码嵌在一起,没有解耦。而配置文件则是与代码分离开来,但是在实际开发中,很少有这种情况:修改配置文件但不修改代码的。Mybatis也提供了注解和文件两种配置。这儿着重介绍文件配置的方式,因为Mybatis主要就是使用文件

2017-07-11 11:10:02 522

原创 Mybatis学习笔记之二:在项目中使用Mybatis

在开发之前,需要做好以下准备工作:1、JDK以及IDE已经配置完成2、数据库安装完成3、相关依赖(Mybatis的jar文件以及JDBC的驱动)笔者这儿使用的是JDK8,开发工具STS,数据库Mysql 5.6.26,Mybatis版本3.3。准备好上诉工作就可以开始编写了。1、创建数据库以及表2、创建项目并将依赖的jar包加入到类路径中。3、编写mybat

2017-07-09 22:36:37 849

原创 Mysql的事务

前几天阅读了《高性能MySQL》第一章,里面讲解了一些Mysql事务相关的知识,一下就帮我解决了对Mysql事务的一些疑惑。先讨论一个问题:假设有两个人A和B,A要往B的银行卡里面转200块钱,那么这涉及到两步数据库操作:1、从A的账户扣200块,2、把B账户的钱加200。如果只完成了第一步,第二步执行失败,那么B肯定不会答应。如果只完成了第二步,银行又不会答应。所以银行必须保

2017-07-08 14:32:22 291

原创 Mybatis学习笔记之一:Mybatis介绍

1、Mybatis的由来Mybatis前身为Ibatis。ibatis是Internet与abatis的组合,它是由Clinton Begin在2002年发起的一个开源项目,在2010年6月被谷歌托管,更名为Mybatis。版本更替:ibatis1.x --> ibatis2.x -->mybatis3.x。2、Mybatis用来做什么?Mybatis是一个半自动化的基于SQL

2017-07-02 21:48:03 502 4

空空如也

空空如也

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

TA关注的人

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