• 欢迎访问马东东的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

后端开发探讨。

我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?

我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?

String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西容易被忽略的。就如本文我们要讨论的问题:Java中的String有没有长度限制?这个问题要分两个阶段看,分别是编译期和运行期。不同的时期限制不一样。1 编译期 首先,我们先来合理的推……

高并发架构系列:服务注册与发现的实现原理、及实现优劣势比较

高并发架构系列:服务注册与发现的实现原理、及实现优劣势比较

服务注册与发现的来源首先,服务注册与发现是来自于微服务架构的产物。在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定。而在微服务应用中,服务实例的数量和网络地址都是动态变化的,这对系统运维提出了巨大的挑战。而且服务集群的跨度很大、数量很多(数以百计甚至更多),为保……

阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较

阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较

本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程。微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成……

高并发架构系列:Redis缓存和MySQL数据一致性方案详解

高并发架构系列:Redis缓存和MySQL数据一致性方案详解

需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。读取缓存步骤一般没有什么问题,但是一旦涉及到数据更……

高并发架构系列:分布式锁的由来、特点、及Redis分布式锁的实现详解

高并发架构系列:分布式锁的由来、特点、及Redis分布式锁的实现详解

在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具体什么是分布式锁,分布式锁应用在哪些业务场景、如何来实现分布式锁呢?今天来探讨分布式锁这个话题。什么是分布式锁要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。1.线程锁主要用来给方法、代码块加锁。当某……

分布式消息系列:详解RocketMQ的架构设计、关键特性、与应用场景

分布式消息系列:详解RocketMQ的架构设计、关键特性、与应用场景

内容大纲: RocketMQ的简介与演进 RocketMQ的架构设计 RocketMQ的关键特性 RocketMQ的应用场景RocketMQ的简介RocketMQ一个纯java、分布式、队列模型的开源消息中间件,前身是MetaQ,是阿里研发的一个队列模型的消息中间件,后开源给apache基金会……

高并发编程系列:NIO、BIO、AIO的区别,及NIO的应用和框架选型

高并发编程系列:NIO、BIO、AIO的区别,及NIO的应用和框架选型

谈到并发编程就不得不提到NIO,以及相关的Java NIO框架Netty等,并且在很多面试中也经常提到NIO和AIO、同步和异步、阻塞和非阻塞等的区别。我先简短介绍下几个NIO相关的概念,然后再谈NIO重点掌握内容,以及Java NIO框架选型。高并发编程系列高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK……

高并发编程系列:CountDownLatch、Semaphore等4大并发工具类详解

高并发编程系列:CountDownLatch、Semaphore等4大并发工具类详解

通常我们所说的并发包也就是java.util.concurrent,Java并发编程集中在这个并发包种,主要包含:Java并发工具类和并发容器等。今天主要介绍concurrent包的内容以及4大并发工具类。并发工具包1.并发工具类提供了比synchronized更加高级的各种同步结构:包括CountDownLatch、Cyc……

高并发编程系列:并发容器的原理,7大并发容器详解、及使用场景

高并发编程系列:并发容器的原理,7大并发容器详解、及使用场景

并发容器的由来在Java并发编程中,经常听到Java集合类,同步容器、并发容器,那么他们有哪些具体分类,以及各自之间的区别和优劣呢?只有把这些梳理清楚了,你才能真正掌握在高并发的环境下,正确使用好并发容器,我们先从Java集合类,同步容器谈起。1.什么是同步容器Java的集合容器框架中,主要有四大类别:List、Set、Qu……

最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁

最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁

在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类:公平锁/非公平锁可重入锁独享锁/共享锁乐观锁/悲观锁分段锁自旋锁乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。1.乐观锁顾名思义,就是很……

阿里P8架构师谈:MySQL行锁、表锁、悲观锁、乐观锁的特点与应用

阿里P8架构师谈:MySQL行锁、表锁、悲观锁、乐观锁的特点与应用

我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)。如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素,从这一角度来说,锁对于数据库而言就显得尤为重要。MySQL锁概述相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支……

并发编程系列:Java线程池的使用方式,核心运行原理、以及注意事项

并发编程系列:Java线程池的使用方式,核心运行原理、以及注意事项

并发编程系列:高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景线程池的缘由java中为了提高并发度,可以使用多线程共同执行,但是如果有大量线程短时间之内被创建和销毁,会占用大量的系统时间,影响系统效率。为了解决上面的问题,java中引入了线程池,可以使创建好的线程在指定的时间内由系统统一管理,而不是在执行时创……

高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景

高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景

多线程的缘由在出现了进程之后,操作系统的性能得到了大大的提升。虽然进程的出现解决了操作系统的并发问题,但是人们仍然不满足,人们逐渐对实时性有了要求。使用多线程的理由之一是和进程相比,它是一种非常花销小,切换快,更”节俭”的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段……

直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解

直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解

JVM系列直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势、及使用场景直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置JVM内存调优对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。1.Full ……

直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势、及使用场景

直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势、及使用场景

直通BAT之JVM系列直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。常见的垃圾收集器有3类:1.新生代的收集器包括:……

直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结

直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结

BAT必考JVM系列专题 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置 垃圾回收算法1.标记清除标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象。然后,在清除……

直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核。BAT必考JVM系列专题1.JVM内存模型2.JVM垃圾回收算法3.JVM垃圾回收器4.JVM参数详解5.JVM性能调优JVM内存结构由上图可以清楚的看到JVM的内存空间分为3……

阿里蚂蚁金服中间件(Java 4轮面试题含答案):Redis缓存+线程锁+微服务等

阿里蚂蚁金服中间件(Java 4轮面试题含答案):Redis缓存+线程锁+微服务等

第一轮 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点? 讲讲jdk1.7和1.8的区别? 几种内置的线程池 MySQL事务隔离级别以及MVCC机制 Redis缓存雪崩、缓存穿透以及如何解决? 分布式架构简单介绍&nbs……

阿里P8架构师谈:深入探讨HashMap的底层结构、原理、扩容机制

阿里P8架构师谈:深入探讨HashMap的底层结构、原理、扩容机制

摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介……

高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)

高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)

HashMap、CurrentHashMap 的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap的底层结构、原理、扩容机制深入谈过hashmap的实现原理以及在JDK 1.8的实现区别,今天主要谈CurrentHashMap的实现原理,以及在JDK1.7和1.8的区别。内容目录:1.哈希表2.ConcurrentHash……

vim常用命令

vim常用命令

删除法一:单行删除,:1(待删除行)d多行删除 ,:1,10d法二:光标所在行,dd光标所在行以下的N行,Ndd多行注释  1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;  2. 在行首使用上下键选择需要注释的多行;  3. 按大写的的I键,此时下方会提示进入“insert”模式,输入你要插入的注释符……

华为实施微服务架构的五大军规

华为实施微服务架构的五大军规

老司机简介李林锋,2007年毕业于东北大学,2008年加入华为,从事电信软件的架构设计和开发。8年Java NIO通信框架、网关平台和中间件设计和开发经验,精通Java NIO、Netty和Mina等NIO通信框架,《Netty权威指南》作者,目前从事云平台相关的架构设计和开发。前言随着业务的发展,代码量的膨胀和团队成员的增加,传……

【译】使用示例带你提前了解 Java 9 中的新特性

【译】使用示例带你提前了解 Java 9 中的新特性

Java 作为 Android 的基础编程语言,每一次迭代也是备受安卓开发人员的关注。这不,Oracle 公司在今年即将发布 Java 9 正式版,一些新的特性和改进很是值得期待。周末时间,拜读了国外的一个 Java 大牛写的有关 Java SE 9 的新功能介绍,简明扼要,示例得当。于是,一时兴起,以拙劣的英语水平磕磕绊绊翻译至此,供大家了解一番。作……

java int与integer的区别

java int与integer的区别

int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别:int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象1.Java 中的数据类型分为基本数据类型和复杂数据类型int 是前者而integer 是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null.……

java自动装箱与拆箱

java自动装箱与拆箱

这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆:java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱);其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象;例如用int来举例://声明一个……

java中 == 与 equal 的区别

java中 == 与 equal 的区别

废话不多说了,开门见山吧,先来看一段代码:String str1 = new String("str"); String str2 = new String("str"); System.out.println("==比较 :"+ (str1 == str2)); System.out.println……

why在重写equals时还必须重写hashcode方法

why在重写equals时还必须重写hashcode方法

首先我们先来看下String类的源码:可以发现String是重写了Object类的equals方法的,并且也重写了hashcode方法public boolean equals(Object anObject) { if (this == anObject) { return true; } if (……