![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试笔试知识
萧2K
我是一个程序猿!
展开
-
深入理解幂等性
什么是幂等性HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。Methods can also have the property of “idempotence” in that (aside from error or expiration issue...原创 2019-10-24 18:35:26 · 103 阅读 · 0 评论 -
linux服务器查询java线程占用的资源
1、使用top命令 ,查询java进程比如选择86184这个进程2、用 top -H -p 86184 ,查询该进程下的线程资源3、使用jstack 86184 > jstack.txt ,输出 该进程下的线程信息,4、比如,观察到86344这个线程占用cpu 大, 将十进制的86344 转换成16进制 15148 (十进制转为其他进制 : echo "obas...原创 2019-08-01 17:18:21 · 1720 阅读 · 0 评论 -
Redis简书
【目录】1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis数据结构 – strings9.redis数据结构 – lists10.redis数据结构 – 集合11.redis数据结构 – 有序集合12.redis数据结构 – 哈希13.聊...原创 2019-01-28 18:47:56 · 474 阅读 · 0 评论 -
InfluxDB基本概念和操作
InfluxdbInfluxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。它有三大特性:时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时大量数据进行计算; 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。同时,它有以下几大特点:schemal...原创 2019-03-14 11:51:55 · 650 阅读 · 0 评论 -
Java NIO
一、概述NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector(选择区)用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道。NIO和传统IO(一下简...原创 2019-03-18 17:11:19 · 82 阅读 · 0 评论 -
Dubbo架构设计详解
Dubbo架构设计详解Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监...原创 2017-12-26 10:59:09 · 163 阅读 · 0 评论 -
可重入锁 VS 非可重入锁以及AQS概述
可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。之前我们说过ReentrantLock和synchronized都是重入锁,那么我们通过重入锁Reent...原创 2019-10-17 18:30:13 · 392 阅读 · 0 评论 -
HashMap的扩容机制------resize()
参考:HashMap的扩容机制------resize()一:首先要知道HashMap什么时候扩容当元素向HashMap容器中添加元素的时候,会判断当前元素的个数,如果当前元素的个数大于等于阈值时,即当前数组table的长度*加载因子就要进行自动扩容。由于HashMap的底层数据结构是“链表散列”,即数组和链表的组合,而数组是无法自动扩容的,所以只能是换一个更大的数组去装填以前的元素和将...原创 2019-10-16 21:44:42 · 239 阅读 · 0 评论 -
CurrentHashMap详解(JDK1.8)
摘要在涉及到Java多线程开发时,如果我们使用HashMap可能会导致死锁问题,使用HashTable效率又不高。而ConcurrentHashMap既可以保持同步也可以提高并发效率,所以这个时候ConcurrentHashmap是我们最好的选择。为什么使用ConcurrentHashMap在多线程环境中使用HashMap的put方法有可能导致程序死循环,因为多线程可能会导致HashMap...原创 2019-10-16 21:38:58 · 4588 阅读 · 1 评论 -
ES分布式架构及底层原理
参考:es详解elasticsearch设计的理念就是分布式搜索引擎,底层实现还是基于Lucene的,核心思想是在多态机器上启动多个es进程实例,组成一个es集群。一下是es的几个概念:接近实时 es是一个接近实时的搜索平台,这就意味着,从索引一个文档直到文档能够被搜索到有一个轻微的延迟 集群(cluster) 一个集群有多个节点(服务器)组成,通过所有的节点一起保存你的全部数据并且...原创 2019-10-14 13:37:27 · 299 阅读 · 0 评论 -
线程池原理
详细内容可参见:Java并发编程:线程池的使用核心线程(corePool):线程池最终执行任务的角色肯定还是线程,同时我们也会限制线程的数量,所以我们可以这样理解核心线程,有新任务提交时,首先检查核心线程数,如果核心线程都在工作,而且数量也已经达到最大核心线程数,则不会继续新建核心线程,而会将任务放入等待队列。等待队列 (workQueue):等待队列用于存储当核心线程都在忙时,继续新增的...原创 2019-10-14 12:39:58 · 100 阅读 · 0 评论 -
Kafka的Log存储解析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/jewes/article/details/42970799Kafka的Log存储解析标签(空格分隔): kafka引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又...原创 2019-09-20 17:29:28 · 144 阅读 · 0 评论 -
分布式锁
一、什么是锁?在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结...原创 2018-11-23 18:27:41 · 187 阅读 · 0 评论 -
深入理解Java并发之synchronized实现原理
深入理解Java并发之synchronized实现原理深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解Java类加载器(ClassLoader)深入理解Java并发之synchronized实现原理Java并发编程-无锁CAS与Unsafe类及其并发包Atomic深入理解J...原创 2019-09-20 17:20:32 · 85 阅读 · 0 评论 -
Java Object类方法
基本描述: (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入; (2)Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。可以使用类型为Object的变量指向任意类型的对象Object的主要方法介绍: 1 2 3 4...原创 2019-09-20 17:10:43 · 85 阅读 · 0 评论 -
深入详解JVM内存模型与JVM参数详细配置
对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。JVM内存结构 由上图可以清楚的看到JVM的内存空间分为3大部分:堆内存 方法区 栈内存其中栈内存可以再细分为java虚拟机栈和本地方法栈,堆内存可以划分为新生代和老年代,新生代中还可以再...原创 2019-09-20 17:06:06 · 124 阅读 · 0 评论 -
java 内存模型 内存溢出 垃圾回收
一、内存模型:1 CPU和内存的交互在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存,用于缓解这种情况。现在cpu和内存的交互大致如下。cpu上加入了高速缓存这样做解决了处理器和内存的矛盾(一快一慢),但是引来的新的问题 -缓存一致性在多...原创 2018-11-23 10:47:58 · 775 阅读 · 0 评论 -
MySQL innoDB索引底层原理详解以及与MyISAM区别
摘要本文介绍MySQL的InnoDB索引相对底层原理相关知识,涉及到B+Tree索引和Hash索引,但本文主要介绍B+Tree索引,其中包括聚簇索引和非聚簇索引,InnoDB数据页结构详解,B+Tree索引的使用以及优化,同时还有B+Tree索引的查询流程简介。此文是我对学习InnoDB索引的一个总结,内容主要参考MySQL技术内幕 InnoDB存储引擎一书,及网上一些博客(参考文献会给出)一、先...原创 2019-09-20 16:50:49 · 875 阅读 · 0 评论 -
Java内存溢出与栈溢出(转)
一、背景知识1、JVM体系结构 2、JVM运行时数据区 3、JVM内存模型JVM运行时内存 = 共享内存区 + 线程内存区 3-1、共享内存区共享内存区 = 持久带 + 堆持久...转载 2018-11-23 11:10:57 · 166 阅读 · 0 评论 -
分布式事物
前言最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事...转载 2018-11-21 15:49:54 · 162 阅读 · 0 评论 -
Java互联网架构-高并发数据库分片技术详解
序言分片技术的由来关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称为Sharding、分片)。同时,流行的分布式系统中间件(例如MongoDB、ElasticSearch等)均自身友好支持Shard...转载 2018-11-20 10:23:33 · 127 阅读 · 0 评论 -
谈谈Java中的volatile
1、内存可见性 volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰当的合理的使用volatile,自然是美事一桩。 为了能比较清晰彻底的理解volatile,我们一步一步来分析...转载 2018-11-09 17:51:16 · 101 阅读 · 0 评论 -
HashSet的实现
1. HashSet概述 HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。2. HashSet的实现 如果不等,则添加到该数组索引对应的链表中。--------------------------------------------------------...转载 2018-11-09 17:24:52 · 173 阅读 · 0 评论 -
数据库隔离级别及实现原理
版权声明:本文为CSDN博主「一粒沙cym」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/chenyiminnanjing/article/details/82714341所谓的数据库事务操作其实就是一组原子性的操作,要么全部操作成功,要么全部操作失败。 并行事务的四大问题: 1...原创 2019-09-23 11:10:44 · 465 阅读 · 0 评论 -
java面试小结
JAVA跨平台的原理由于各操作系统支持的指令集不是完全一致的,这会让我们在不同的操作系统上执行不同的程序代码。JAVA开发了适用于不同操作系统及位数的JAVA虚拟机来屏蔽系统之间的差异,提供统一的接口。开发者只需要在不同的系统上安装对应的JAVA虚拟机,只要编写的程序符合规范就可以在所有的操作系统上运行java程序。Java中一共有八个基本数据类型Int占4个字节,32位...原创 2019-09-23 10:54:54 · 260 阅读 · 0 评论 -
JAVA 23种设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化...原创 2019-09-23 10:56:20 · 125 阅读 · 0 评论 -
Java 之 JUC
1. JUC 简介在 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类, 用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中 的 Collection 实现等;2. volatile 关键字volatile 关键字: 当多个线程进行操作共享数据时,可以保...原创 2019-09-20 21:00:12 · 108 阅读 · 0 评论