1 ClawHub的技术分享

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 19w+

JVM内存区域与垃圾回收

1、JAVA内存区域与内存溢出1.1、概述Java中JVM提供了内存管理机制,Java虚拟机在执行Java程序的过程中会把内分分为不同的数据区,如图:1.2、程序计数器程序计数器是当前线程所执行的字节码的行号指示器,作用就是根据计数器的值获取下一条要执行的字节码指令。当执行的是java方法,则记录的是正在执行的虚拟机字节码指令的地址,如果是Native方法,则这个计数器的...

2019-12-24 21:08:20

JAVA线程池原理与源码分析

1、线程池常用接口介绍1.1、Executorpublic interface Executor {void execute(Runnable command);}执行提交的Runnable任务。其中的execute方法在将来的某个时候执行给定的任务,该任务可以在新线程、池化线程或调用线程中执行,具体由Executor的实现者决定。1.2、ExecutorServic...

2019-12-18 22:56:23

面试【JAVA基础】其他

1、自定义注解@target说明了Annotation所修饰的对象范围: constructor、method、field、package、type等等。@retention定义了该Annotation被保留的时间长短, source(源文件保留)、class( class保留)、runtime(运行时有效)。@inherited某个被标记的类型是被继承的。一个类标记了带有@...

2019-12-18 22:54:27

面试【JAVA基础】JVM

1、内存模型1.1、堆堆是所有线程共享的,主要存放对象实例和数组。新生代和老年代的比例是1:2。新生代中三个区域的比例是 8 : 1 : 1。1.1.1、新生代对象分配在eden区中,当eden区满时会触发minor gc,将eden区中存活的对象,复制到survivor0区中,清空eden区,当survivor0中满了时,会将存活的对象复制到survivor1区...

2019-12-18 22:52:48

面试【JAVA基础】Web与网络

1、转发与重定向的区别转发是服务器请求资源,服务器直接访问目标地址url,把响应内容返回给浏览器。 重定向根据服务器返回的状态码重新请求地址。转发是服务器行为,重定向是客户端行为。转发显示的url不变而重定向显示新的url。转发页面和转发到的页面共享request的信息,重定向不共享数据。转发一般用于用户登录,根据角色转发到响应的模块, 重定向一般用于用户注销,跳...

2019-12-18 22:51:35

面试【JAVA基础】类加载机制

1、类加载过程1.1、加载查找和导入class文件。1.2、链接验证检验载入的class文件的正确性,完整性。准备给类的静态变量分配存储空间,会赋对象类型的默认值。解析将class常量池中的符号引用转换成直接引用。符号引用和直接引用的区别:符号引用:java编译阶段不知道所引用的对象的实际地址,使用符号引用来代替直接引用:能够直接定位到对象的指...

2019-12-18 22:50:13

面试【JAVA基础】锁

1、锁状态锁的状态只能升级不能降级。无锁没有锁对资源进行锁定,所有线程都能访问并修改同一个资源,但同时只有一个线程能修改成功。其他修改失败的线程会不断重试,直到修改成功,如CAS原理和应用是无锁的实现。偏向锁偏向锁是指一段同步代码一直被一个线程访问,那个该线程会自动获取锁,降低获取锁的代价。轻量级锁是指当锁是偏向锁的时候,被另外的线程所访问,偏向锁就会升级为轻量级锁,其...

2019-12-18 22:48:57

面试【JAVA基础】阻塞队列

1、五种阻塞队列介绍ArrayBlockingQueue有界队列,底层使用数组实现,并发控制使用ReentrantLock控制,不管是插入操作还是读取操作,都需要获取锁之后才能执行。LinkedBlockingQueue底层基于单向链表实现,既可以当做有界队列,也可以当做无界队列使用。使用两个ReentrantLock实现并发控制:takelock和putlock。Synch...

2019-12-18 22:47:35

面试【JAVA基础】集合类

1、ArrayList的扩容机制每次扩容是原来容量的1.5倍,通过移位的方法实现。使用copyOf的方式进行扩容。扩容算法是首先获取到扩容前容器的大小。然后通过oldCapacity (oldCapacity >> 1) 来计算扩容后的容器大小newCapacity。这里用到了>> 右移运算,即容量增大原来的1.5倍。还要注意的是,这里扩充容量时,...

2019-12-18 22:46:03

面试【JAVA基础】多线程

本次整理的内容如下:1、进程与线程的区别进程是一个可执行的程序,是系统资源分配的基本单位;线程是进程内相对独立的可执行单元,是操作系统进行任务调度的基本单位。2、进程间的通信方式2.1、操作系统内核缓冲区由于每个进程都有独立的内存空间,进程之间的数据交换需要通过操作系统内核。需要在操作系统内核中开辟一块缓冲区,进程 A 将需要将数据拷贝到缓冲区中,进程 B 从缓冲区...

2019-12-18 01:01:02

LeetCode|234.回文链表

题目描述等级: 简单请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路对于单链表,回文,快慢指针,链表反转的考察。>“回文”是指正读反读都能读通的句子,它是古今...

2019-12-18 00:46:48

RedisTemplate: Failed to deserialize payload

问题org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to de...

2019-12-13 21:13:18

分布式文件存储:FastDFS简单使用与原理分析

引言FastDFS 属于分布式存储范畴,分布式文件系统 FastDFS 非常适合中小型项目,在我接手维护公司图片服务的时候开始接触到它,本篇文章目的是总结一下 FastDFS 的知识点。用了 2 台 2 核 4G 的阿里云服务器做集群部署,具体部署步骤请参考:https://github.com/happyfish100/fastdfs/wiki1、FastDFS 分布式文件系...

2019-12-12 21:22:13

分布式锁的实现分析

1、设计目标分布式部署的应用集群中保证数据更新的互斥性,且程序出现异常时,锁能够自动释放,避免死锁发生。2、为什么要使用分布式锁为了保证分布式部署的应用集群中同一时间只有一个客户端对共享资源进行操作。根据锁的用途再细分:对共享资源的操作是幂等性的,使用分布式锁能够避免重复操作,从而提高效率。对共享资源的操作是非幂等的,比如订单状态的修改,如果多个客户端同时操作,最后的结...

2019-12-12 21:14:33

深入了解Redis【二】对象及数据结构综述

引言Redis中每个键值对都是由对象组成:- 键总是一个字符串对象(string)- 值可以是字符串对象(string)、列表对象(list)、哈希对象(hash)、集合对象(set)、有序集合对象(zset)。介绍redis官方网站中对其数据类型的简单介绍:An introduction to Redis data types and abstractions摘抄一段...

2019-12-10 23:21:10

深入了解Redis【一】源码下载与参考资料准备

引言一直在使用redis,但是却没有系统的了解过它的底层实现,准备边学习边记录,深入了解redis。打算分析以下几个方面:redis的基本类型及底层原理与java对比,每种数据类型的使用场景redis底层对象key的一致性Hash算法单线程的redis“快”redis的过期策略以及内存淘汰机制redis分布式锁原理redis备份方式多机环境下主从赋值、哨兵、集群的...

2019-12-10 23:14:12

Java内存模型分析

在学习Java内存模型之前,先了解一下线程通信机制。1、线程通信机制在并发编程中,线程之间相互交换信息就是线程通信。目前有两种机制:内存共享与消息传递。1.1、共享内存Java采用的就是共享内存,本次学习的主要内容就是这个内存模型。内存共享方式必须通过锁或者CAS技术来获取或者修改共享的变量,看起来比较简单,但是锁的使用难度比较大,业务复杂的话还有可能发生死锁。1.2...

2019-12-10 23:09:37

关于`ClawHub的技术分享`公众号

生命不息,折腾不止!该公众号的内容大部分为平时学习积累所整理的笔记,包括但不限于源码、原理、经验等。如果感兴趣,也可以访问clawhub的博客主站https://clawhub.club...

2019-12-08 22:32:50

深入了解Kafka【五】Partition和消费者的关系

![]https://cdn.jsdelivr.net/gh/clawhub/image/diffuser/top/19/11/27/e3b34c09eeaadd7d63a297deee7ca2a8.jpg()1、消费者与Partition以下来自《kafak权威指南》第4章。假设主题T1有四个分区。1.1、一个消费者组1.1.1、消费者数量小于分区数量只有一个消费者时,...

2019-12-08 22:00:04

深入了解Kafka【四】消费者的Offset管理

1、Offset TopicConsumer通过提交Offset来记录当前消费的最后位置,以便于消费者发生崩溃或者有新的消费者加入消费者组,而引发的分区再均衡操作,每个消费者可能会分到不同的分区。我测试的kafka版本是:0.11.0.2,消费者往一个特殊的主题“_consumer_offset”发送消息,如图:消息的内容包括:fields| content-|-Key ...

2019-12-08 21:58:26

查看更多

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