java
文章平均质量分 84
Lambdas
千里之行,始于足下
展开
-
JAVA 类型简写对照表
Java类型 符号 Boolean Z Byte B Char C Short S Int I Long L Float F Double D...原创 2020-10-21 10:51:29 · 992 阅读 · 0 评论 -
Redis简单介绍-内存优化
Redis是一种基于内存的数据存储,内存的大小决定Redis的容量,在Redis的使用过程中,可以使用一些技巧,减少内存的消耗Redis的内存分配:当key被移除时,Redis不会总是释放(返回)内存到操作系统。这不是Redis的特殊之处,但它是大多数malloc()实现的工作方式。例如,如果用5GB的数据填充一个实例,然后删除相当于2GB的数据,那么常驻集大小(也称为RSS,它是进程消耗的内存页数)可能仍然在5GB左右,即使Redis会声称用户内存在3GB左右。发生这种情况的原因是底层分配器无法轻原创 2020-05-31 18:45:30 · 226 阅读 · 0 评论 -
Zookeeper的Watch机制
一、什么是Watcher机制Zookeeper可以理解为是一种提供持久化功能的内存树状结构存储,树的每一个节点被称为znode,当一个zonde节点执行了更新操作,我们称之为事件,而一个监视点表示一个与之关联的znode节点和事件类型组成的一个单次触发器,当一个监视点被一个事件触发时,就会产生一个通知,通知是注册了监视点的应用客户端收到事件的报告信息。当客户端注册了一个监视点来接收通知,匹配该监视点条件的第一个事件会触发监视点的通知并且最多只触发一次。Watcher机制采用Push/Pull的方式进行数原创 2020-05-26 11:48:36 · 966 阅读 · 0 评论 -
Zookeeper服务启动过程与服务器角色
最近在看Zookeeper,想把学习Zookeeper的过程记录下来,这篇博客主要是为了对Zookeeper做一个宏观的记录。一、什么是Zookeeper:ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步和提供组服务。它可以在分布式系统中协作多个任务,在分布式系统中,开发面临的困难主要有:消息延迟、处理器性能和时钟偏移,后面两个会间接引起第一个问题,当我们面临一个网络错误时,很难确定是网络超时还是系统崩溃,Zookeeper提供了一套功能强大的API去解决这些问题,这些功能原创 2020-05-22 21:22:25 · 631 阅读 · 0 评论 -
Reactor模式与NIO网络模型
在web开发中, 我们最常用的模式就是MVC,将web程序的不同部分分而治之。在Nio网络程序开发中,也有一些类似的开发模式,比如Reactor模式,来方便我们对程序进行解耦和控制。维基百科对Reactor pattern的解释:The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one原创 2020-05-18 13:27:23 · 297 阅读 · 0 评论 -
Java NIO
对Java Nio 相关的api在很早之前就使用过,但一直对nio感到陌生,我想把对这个问题的理解思路写出来,以便以后对自己的理解进行矫正。一、Java IO 是什么?IO 用来处理设备之间的数据传输,Java程序中,对于数据的输入/输出操作 都是以“流”的方式进行的。这些设备主要是网络和磁盘。二、用户态和内核态的数据交换。操作系统是管理计算机硬件与软件资源的计算机程序。其中的一个...原创 2020-05-07 20:48:35 · 160 阅读 · 0 评论 -
JAVA内存模型
JVM规范中实图定义一种统一的JAVA内存模型(Java Memory Model, JMM)来屏蔽掉各种硬件和操作系统访问内存的差异,实现让Java程序在各种平台下都能达到一致的内存访问效果。在JMM中,所有数据都存储在主内存中,每个线程都有自己的工作内存,当线程操作数据时,每个线程不能直接操作主内存,只能操作自己的工作内存,并且线程间的工作内存是相互不可见的。因此,需要先把数据从主内存加载...原创 2020-04-30 16:33:14 · 129 阅读 · 0 评论 -
JVM方法调用原理
在JVM中,方法调用主要通过四条指令:invokestatic 调用类定义的静态方法invokespecific 调用类的初始化方法<cinit>,实例的初始化方法<init>,私有方法和父类方法invokevirtual 调用实例方法invokeinterface 调用接口方法在类加载到内存中时,方法的引用是符合号引用,在连接的解析阶段,虚拟机...原创 2020-04-29 16:53:38 · 304 阅读 · 0 评论 -
对象的创建和访问
一、对象的组成:JVM堆上的对象主要由三部分组成:对象头、对象实例数据和对齐填充。对象头:对象头主要由两部分组成,对象运行时的数据和指向对象所属类信息的指针。数组对象还包含一个数组长度信息。对象运行时的数据主要包含对象的hashcode 25b,GC 分代年龄4位,锁状态标志,线程持有的锁,偏向线程ID,偏向线程时间戳等。通过句柄访问对象指向对象所属类信息的指针为空。对象的实例...原创 2020-04-29 15:01:20 · 201 阅读 · 0 评论 -
JAVA类加载器
JAVA类加载器的作用主要是将class格式的二进制字节流加载到JVM中并在JVM的方法区创建该类的运行时结构,二进制字节流可以存储在任何地方,例如本地磁盘,网络等,只要符合jvm要求的class文件格式即可。从JVM的角度来看,主要有两类类加载器,由JVM自己用C++实现的Bootstrap类加载器和实现ClassLoader抽象类的用户自定义类加载器。Bootstrap类加载器由JVM自己...原创 2020-04-29 11:20:25 · 119 阅读 · 0 评论 -
JVM类加载过程
理解JVM的类加载过程,主要要回答两个问题:1、类在什么时候被加载。2、类是怎样被加载的。一、触发类加载的条件:类的加载过程主要分为七个阶段:加载、验证、准备、解析、初始化、使用、卸载7个过程,加载、验证、准备、初始化、卸载这五个过程顺序是确定的,jvm必须严格按照这个顺序执行,jvm没有规定类加载的时机,但却严格规定了五种情况下必须立即对类进行初始化,加载自然要在此之前。1、...原创 2020-04-28 20:47:51 · 2872 阅读 · 0 评论 -
JVM 自动内存管理
本文主要整理自《深入理解Java虚拟机》,有不合理的地方可以直接参考书籍,写这篇博客的目的主要是为这一章做一个自我总结。内存自动管理主要是回答三个问题?1、哪些对象可以回收--回收判定算法:引用计数法和可达性分析。2、什么时候可以回收--回收位置:安全点和安全区。3、怎么进行回收--回收算法:标记-清楚算法、复制算法、标记整理。一、回收判定算法:1、引用计数法:引用计数法是...原创 2020-04-27 12:55:36 · 143 阅读 · 0 评论 -
JAVA虚拟机内存结构
最近在看JAVA虚拟机规范《jvms8》,分享一写里面的内容。1、class文件格式:Java虚拟机执行二级制格式class文件来执行操作指令。2、数据类型:Java的数据类型主要有基本类型(primitive type)和 引用类型(reference type)3、基本类型:类型 内存(字节) 范围 描述 boolean 4 ...原创 2020-04-23 20:49:35 · 162 阅读 · 0 评论 -
Apache Tomcat 学习(由浅入深)
今天,我们一起学习一下Tomcat,本文内容主要参考与 Apache Tomcat 7官方文档,以及Tomcat 7源码。内容主要分为一下五个方面:一、什么是Tomcat?Apache Tomcat 是一个Java Servlet、JavaServer Pages、Java Expression Language 和Java WebSocket技术的开源实现。二、Tomcat安装和配...原创 2020-04-12 18:27:49 · 408 阅读 · 1 评论 -
HashMap内部原理详解
1、什么是HashMap?答:HashMap 根据hash实现的一种Map接口实现类。2、HashMap的底层数据结构?答:在1.8之前,HashMap的数据结构:数组+链表 在1.8之后,HashMap的数据结构:数组+链表+红黑树3、HashMap的初始值?答:capacity:代表table.length loadfactor:加载因子 threhold:扩容的门槛值1)、DE...原创 2020-01-03 10:08:46 · 279 阅读 · 0 评论 -
java打印类信息的工具类
/*今天在看Java编程思想,发现了一个比较有用的工具类,来分享一下*/在Java中类的信息通常通过Class类来保存,我们可以该类提供的getMethods()和getConstructors()方法获取类的普通方法和构造方法的简要信息,当我们不想从官网JDK API查询这些信息时,我们可以通过这个工具打印出这些信息package test;import java.lang.reflect....原创 2018-05-23 23:42:35 · 1319 阅读 · 0 评论 -
maven+spring+dubbo简单demo搭建
总览Apache Dubbo是一款高性能、轻量级基于java的RPC框架。Apache Dubbo提供三个主要功能,基于接口的远程过程调用、容灾和负载均衡以及服务的自动注册与发现。Dubbo是一种典型的面向服务的架构(SOA),根据服务的功能,将服务分为服务消费者和服务提供者两个角色。Apache Dubbo的主要架构如图所示:Provider: 暴露服务的服务提供方。Consumer: 调用远程...原创 2018-07-03 15:56:18 · 1027 阅读 · 0 评论 -
秒懂,Java 注解 (Annotation)你可以这样学
文章开头先引入一处图片。 这处图片引自老罗的博客。为了避免不必要的麻烦,首先声明我个人比较尊敬老罗的。至于为什么放这张图,自然是为本篇博文服务,接下来我自会说明。好了,可以开始今天的博文了。Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我个人认为,比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如:J...转载 2018-07-04 22:16:27 · 175 阅读 · 0 评论 -
mybatis demo简单实现
开发工具:IDEA开发步骤:一、建立maven项目 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...原创 2018-07-07 15:49:17 · 240 阅读 · 0 评论 -
ibatis demo简单实现
开发平台:idea开发步骤:一、引入maven项目<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...原创 2018-07-07 15:58:48 · 683 阅读 · 0 评论 -
深入理解Java:注解(Annotation)自定义注解入门
深入理解Java:注解(Annotation)自定义注解入门 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定...转载 2018-09-30 10:59:51 · 97 阅读 · 0 评论 -
Java多线程互斥Demo
今天看java编程思想的并发篇,看到了一个熟悉而又总是出错的并发互斥问题。WaxOMatic.java有两个过程:一个是将蜡涂到Car上,一个是抛光他。在抛光任务在涂蜡任务完成之前,是不能执行其工作的,而涂蜡任务在涂另一层蜡之前,必须等待抛光任务完成。我们根据题目建立一个数学模型: 根据我们的数学模型,我们建立了两个类WaxOn和WaxOff分别表示上蜡和抛光任务,在上蜡动任务中,分...原创 2018-05-27 12:11:58 · 765 阅读 · 0 评论