java
Java技术小吴
+V:YDT929 领取主流架构师资料和大厂面试题
展开
-
现阶段整理最新最常问的SpringBoot面试题
今天写的这篇主要总结了SpringBoot相关的问题。还有更多面试专题及java资料、笔记等可以添加微信:YDT929免费获取Q:什么是SpringBoot?用来简化spring应用的初始搭建以及开发过程,使用特定的方式来进行配置(properties或yml文件)创建独立的spring引用程序 main方法运行,嵌入的Tomcat 无需部署war文件,简化maven配置,自动配置spring添加对应功能starter自动化配置。Q:Spring Boot、Spring MVC...原创 2020-10-13 21:05:58 · 108 阅读 · 1 评论 -
7600字的硬核干货带你快速学会 Redis 性能优化点
在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题。比如微博,把热点微博[1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不走 MySQL。那么,针对 Redis 服务,我们能做哪些性能优化呢?或者说,应该避免哪些性能浪费呢?Redis 性能的基本面在讨论优化之前,我们需要知道,Redis 服务本身就有一些特性,比如单线程运行。除非修改 Redis 的源代码,不然这些特性,就是我们思考性能优化的基本面。那么,有.原创 2020-10-13 16:18:47 · 68 阅读 · 1 评论 -
Dubbo面试题精选
dubbo是什么dubbo是一个分布式框架,远程服务调用的分布式框架,其核心部分包含: 集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。dubbo能做什么透明化的远程方法调用,就...原创 2020-10-13 15:01:14 · 122 阅读 · 1 评论 -
大牛是怎么把MySQL千万级大表优化的
千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。从一开始脑海里开始也是火光四现,到不断的自我批评,后来也参考了一些团队的经验,我整理了下面的大纲内容。既然要吃透这个问题,我们势必要回到本源,我把这个问题分为三部分:“千万级”,“大表”,“优化”,也分别对应我们在图中标示的“数据量”,“对象”和“目标”。我来逐步展开说明一下,从而给出一系列的解决方案。..原创 2020-10-13 11:28:24 · 257 阅读 · 0 评论 -
整理了一些最近的MySQL面试题
扫一扫免费获取全部面试题1.1. MySQL的binlog(主从复制机制)开启-- 配置文件中开启-- 开启binloglog_bin=ON-- 指定名称log_bin_basename=/var/lib/mysql/mysql-bin-- 索引名称log_bin_index=/var/lib/mysql/mysql-bin.indexmysql 使用binlog 实现主从复制从库中开启线程去主库中读取binlog,然后同步从库数据(就是执行binlog中的s..原创 2020-10-13 10:27:59 · 65 阅读 · 1 评论 -
笔者总结:HTTP协议,HTTP请求完整过程(内含更多资料)
我所整理的东西都是曾经看视频,帖子,或者某个大佬说的话最后写成的笔记。现在相当于把笔记重新整理成一篇文章。所以哪怕有一些引用也找不到出处了,就不标明了!什么是HTTP协议?HTTP协议是超文本传输协议(默认端口80)。服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传送数据的。HTTP就是客服端→服务端的数据传输。大致工作流程:(1)客户与服务器建立连接;(2)客户向服务器提出请求;(3)服务器接受请求,并根据请求返回相应的文件作为应答;(4)客户..原创 2020-10-12 21:33:44 · 228 阅读 · 0 评论 -
一些面试官问的很多的Redis面试题和答案整理
点关注,不迷路;持续更新Java相关技术及资讯!!!关注、转发、评论头条号每天分享java 知识,私信回复“源码”赠送Spring源码分析、Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式资料Redis 是完全开源免费的, 遵守 BSD 协议, 是一个高性能的 key-value 数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。..原创 2020-10-12 19:59:21 · 121 阅读 · 0 评论 -
分享一篇2.3k点赞的RabbitMQ 使用指南
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见角色大致也就有 Producer(生产者)、Consumer(消费者)。常见的消息中间件产品:1). ActiveMQActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现。我们..原创 2020-10-12 17:57:11 · 235 阅读 · 0 评论 -
微服务架构篇之由浅入深彻底掌握SpringCloud
微服务架构Spring Cloud作为当下主流的微服务框架,可以让我们更简单快捷地实现微服务架构。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包对于目前的Java程序员来讲,熟悉并且理解微服务,成为了不可或缺的一项技能!微服务设计其实是很早就有的设计思想,因为随着虚拟化技术的崛起,微服务可..原创 2020-10-12 16:25:07 · 111 阅读 · 1 评论 -
一些大牛常用的 Java 编程技巧
任何事情有可能出错,没错,的确如此。这就是为什么我们要采用“防御性编程”,即一些偏执习惯的原因。下面是我个人认为的 10 个最有用但偏执的 Java 编程技术。一起来看一看吧:1.将 String 字符串放在最前面为了防止偶发性的 NullPointerException 异常,我们通常将 String 放置在 equals() 函数的左边来实现字符串比较,如下代码://Badif(variable.equals("literal")){...}//Goodif("...原创 2020-10-12 10:39:16 · 96 阅读 · 1 评论 -
Redis必学的核心知识点
是数据结构而非类型很多文章都会说,redis支持5种常用的数据类型,这其实是存在很大的歧义。redis里存的都是二进制数据,其实就是字节数组(byte[]),这些字节数据是没有数据类型的,只有把它们按照合理的格式解码后,可以变成一个字符串,整数或对象,此时才具有数据类型。这一点必须要记住。所以任何东西只要能转化成字节数组(byte[])的,都可以存到redis里。管你是字符串、数字、对象、图片、声音、视频、还是文件,只要变成byte数组。 因此redis里的String指的并不是字符串,它其实表示原创 2020-10-08 20:38:20 · 123 阅读 · 0 评论 -
各类java、spring面试资料,总有一款是你需要的
领取方式各面试资料需要加关注获取:关注我,私信回复:“面试资料”即可获取整个文档比较全面,内容比较多,由于篇幅的限制,文章中没有全部附上详细的解析,需要加关注获取:关注我,私信回复:“面试资料”即可获取如何获取?转发这篇文章,关注我,私信回复“面试资料”即可获取高清大纲,以上 springMVC,源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构如何私信?关注我后,在手机,点击头..原创 2020-10-08 16:59:50 · 70 阅读 · 1 评论 -
Spring面试系列——MVC
SpringMVC执行流程及原理?用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载SpringMVC.xml配置文件。前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在SpringMVC.xml中配置的或者注解的url与对应的处理类找到并进行存储,用Map这样的方式来存储。..原创 2020-10-08 15:01:35 · 57 阅读 · 0 评论 -
总结出来的HTTP&HTTPS协议
前言 & 初衷希望能对后面面试前端工程师实习生这一岗位的小伙伴们有所帮助,也希望自己能在这次总结中能力有所提升。了解一下TCP/IP协议TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。HTTP协议是构建在TCP/IP协议之上的,是TCP/IP协议的一个子集,所以要理解HTTP协议,有必要先了解下TCP/IP协议相关的知识。 由于TCP/IP协议族包含众多的协议,在这里我们无法一一讨论。接下来,我..原创 2020-10-08 11:05:50 · 140 阅读 · 0 评论 -
交流下Mybatis 的设计模式,文章内附源码
虽然我们都知道有20多个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;工厂模式,例如SqlSessionFactory、Objec..原创 2020-10-08 10:17:31 · 65 阅读 · 0 评论 -
总结了一些jvm面试题
更多更详细的面试资料点赞+关注,私信我获取JVM加载流程和运行时数据区如下图所示:运行时数据区方法区方法区用于存储已经被加载的类信息、常量、静态变量、编译后的代码以及 运行时常量池等。堆堆主要存放一些数据,比如对象实例、数组等。堆内存会划分为年轻代和老年代,年轻代又会分为Eden和Servivor区,Survivor也会分为FromPlace和ToPlace。虚拟机栈虚拟机栈描述的是JVAV方法执行的内存模型。每个方法被执行的时候同时都会创建一个...原创 2020-10-07 20:30:20 · 360 阅读 · 0 评论 -
17个经典kafka面试题
1.Kafka 的设计时什么样的呢?Kafka将消息以topic为单位进行归纳将向Kafka topic发布消息的程序成为producers.将预订topics并消费消息的程序成为consumer.Kafka以集群的方式运行,可以由一一个或多个服务组成,每个服务叫做一个broker.producers通过网络将消息发送到Kafka集群,集群向消费者提供消息2数据传输的事物定义有哪三种?数据传输的事务定义通常有以下三种级别:(1) 最多一次:消息不会被重复发送,最多被传输一次,..原创 2020-10-07 17:04:48 · 191 阅读 · 0 评论 -
5年面试生涯总结出的RabbitMQ面试题
需要后续RabbitMQ面试题的点赞+关注,私信我获取1.RabbitMQ是什么?RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。2.RabbitMQ特点?可靠性: RabbitMQ使用一些机制来保证可靠性, 如持久化、传输确认及发布确认等。灵活的路由 : 在消息进入队列之前,通过交换器来路由消..原创 2020-10-07 15:58:07 · 142 阅读 · 0 评论 -
大佬教你区分Redis 缓存穿透、击穿、雪崩的办法
前言如何有效的理解并且区分 Reids 穿透、击穿和雪崩之间的区别,一直以来都挺困扰我的。特别是穿透和击穿,过一段时间就稀里糊涂的分不清了。为了有效的帮助笔者自己,以及拥有同样烦恼的朋友们区分这三种场景。笔者总结了一些关键词,希望大家可以和我一样通过联想的方式来区分并理解这三种场景的区别!缓存穿透关键词:穿过 Redis 和数据库当 Redis 和数据库中都没有我们想要的数据时,就需要考虑缓存穿透的问题了。下面这段逻辑大家用的会比较多:先去 Redis 中查找某资源,Redis 中查..原创 2020-10-07 14:51:13 · 134 阅读 · 1 评论 -
MySQL性能优化21个最佳实践及技巧
一、背景最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久。原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在执行 SQL 语句时索引失效,进行全表扫描。原本负责优化的同事有事请假回家,因此优化查询数据的问题落在笔者手中。笔者在查阅网上 SQL 优化的资料后成功解决了问题,在此从==全局角度==记录和总结 MySQL 查询优化相关技巧。二、优化思路数据查询慢,不代表 SQL 语句写法有问题。 首先,我们需要找到问题的源头..原创 2020-10-07 11:18:49 · 1185 阅读 · 1 评论 -
谷歌工程师的一番话
每周,谷歌员工都会在厕所的墙壁上粘贴一页来分享本周的测试小建议。有时这页纸会讨论依赖注入,并提供一个简单的示例展示如何用不同语言使用它;有时它可能会分享如何安装一个用于测量团队代码库测试覆盖率的软件。“Testing on the Toilet”起初是个奇怪又有趣的方式,来教给工程师在工作中会用到的一些新的东西,这也被突出为Google文化中的核心力量:向工程师组织有效的传播一系列最佳实践。这有从谷歌工程文化中获得的六个核心原则,你可能能够从中获益。把工程资源用于共享工具和抽象概念。在早期谷..原创 2020-09-30 20:41:16 · 170 阅读 · 0 评论 -
RabbitMQ经典面试题及几个核心知识点
什么是RabbitMQRabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。RabbitMQ使用的是AMQP协议,它是一种二进制协议1.用户的请求,服务器收到之后,首先写入消息队列,加入消息队列长度超过最大值,则直接抛弃用户请求或跳转到错误页面.2.秒杀业务根据消息队列中的请求信息,再做后续处理.为什么要使用RabbitMQ?1.在分布式系统下具备异步,削峰,负载均衡等一系列高级功能;2.拥有持久化的机制,进程消息...原创 2020-09-30 16:39:03 · 277 阅读 · 0 评论 -
Nginx各大知识点及最新面试题
Nginx的作用这个问题是入门级知识点,讨论Nginx的用处。我觉得只要几个重要的点都回答到位就可以了,可以考虑这样的一个回答:Nginx是一个高性能web服务器和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。不仅可以实现负载均衡,还可以做接口限流,缓存等功能。使用Nginx的优势点 Nginx由于使用了epoll和kqueue网路I/O模型,在实际生产环境能够支撑3万左右并发连接。 Nginx内存消耗低。 Nginx跨平台,而且配置相对来说难...原创 2020-09-30 15:49:47 · 110 阅读 · 0 评论 -
spring最全!从基础到高级我都有!
SpringMVC执行流程及原理?用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载SpringMVC.xml配置文件。前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在SpringMVC.xml中配置的或者注解的url与对应的处理类找到并进行存储,用Map这样的方式来存储。..原创 2020-09-30 15:02:12 · 99 阅读 · 0 评论 -
Kafka给你整明白,还怕面不上大厂?
1、请说明什么是Apache Kafka?Apache Kafka是由Apache开发的一种发布订阅消息系统,它是一个分布式的、分区的和可复制的提交日志服务。2、说说Kafka的使用场景?①异步处理②应用解耦③流量削峰④日志处理⑤消息通讯等。3、使用Kafka有什么优点和缺点?优点:①支持跨数据中心的消息复制;②单机吞吐量:十万级,最大的优点,就是吞吐量高;③topic数量都吞吐量的影响:topic从几十个到几百个的时候,吞吐量会大幅度下降。所以在同等机器..原创 2020-09-30 10:59:26 · 215 阅读 · 0 评论 -
你还在找《微服务》的资料吗,有这一篇就够了
过去几年,“微服务架构”这个术语出现了,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。49页PPT干货:微服务架构起源、简介及设计尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署,端点智能以及语言和数据的分散控制等方面存在着某些共同特征。“微服务” 是在拥挤的软件架构街道上又一个新名词。尽管我们的自然倾向是以轻蔑的眼光来传递这样的东西,但这些术语描述了一种我们发现越来越吸引人的软件系统风格。我们已经看到许多项目在过去几年中都采用了这种风格,迄今为止的结果...原创 2020-09-29 15:48:45 · 74 阅读 · 0 评论 -
springmvc必看面试题!文章底部福利菌在等你
什么是springMVC?作用?springMVC是一种web层mvc框架,用于替代servlet(处理|响应请求,获取表单参数,表单校验等)。为什么要用springMVC?基本上,框架的作用就是用来简化编程的,相对于servlet来说,获取表单参数,响应请求等变得更简单了。说出spring mvc底层执行流程(工作原理)说说spring mvc中常用注解有哪些,分别什么作用?@Controller标识这个类是一个控制器@RequestMapping..原创 2020-09-29 14:55:22 · 74 阅读 · 0 评论 -
最新大厂MySQL面试题
Mysql中有哪几种锁?1.表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。2.行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。3. 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。Mysql中有哪些不同的表格?共有5种类型的表格:MyISAM Heap Merge INNODB ISAM简述在MySQL数据库中MyISAM和InnoDB的区别...原创 2020-09-29 11:27:56 · 127 阅读 · 0 评论 -
华为流出!!!2020最新SpringMVC面试题(附答案)
1、什么是Spring MVC ?简单介绍下你对springMVC的理解?Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。2、SpringMVC的流程?用户发送请求至前端控制器DispatcherServlet;DispatcherServlet收到请求后,调用HandlerMa..原创 2020-09-29 10:22:42 · 328 阅读 · 0 评论 -
编程学得慢?阿里大牛来教你秘诀
Step 1 : 建造时光机我在学习新技术时,会用到两个东西。第一个是 Git,第二个是 Redmine。Gitgit 是新手的时光机。我认为如果一般人学习任何编程语言,甚至写任何笔记,都应该上个 git 版本控制。起码看你上一次写了什么东西。其实 git 一开始也不用学太多指令,练习以下几个就够: git init (初始一个 Repo); git add [档案名称] (将某某档案加入版本控制); git commit -m “储存讯息” (将这次要加入版本控制..原创 2020-09-28 19:30:47 · 95 阅读 · 0 评论 -
阿里大牛说:Nginx这八道面试题必须看
1.nginx常用命令启动nginx ./sbin/nginx停止nginx ./sbin/nginx -s stop ./sbin/nginx -s quit重载配置 ./sbin/nginx -s reload(平滑重启) service nginx reload重载指定配置文件 ./sbin/nginx -c /usr/local/nginx/conf/nginx.conf查看nginx版本 ./sbin/nginx -v检查配置文件是否正确 ./sbin/nginx -t..原创 2020-09-28 16:45:56 · 348 阅读 · 0 评论 -
最新KAFKA面试资料,亲身经历!!!
在这里就简单记录一下期间我问到的一些关于 Kafka 的面试题目,这些都是我平时在学习 Kafka 的一些总结要点。谈谈你对 kafka 的整体认识?问这个问题主要是想知道面试者对 Kafka 的整体认识如何,能够大致了解面试者对 Kafka 的相关概念的熟悉程度,比如消息、topic、partition、replica、offset、重平衡、leader/follower、ISR 等等。谈谈 Kafka 吞吐量为何如此高?多分区、batch send、kafka Reator 网络模型、p..原创 2020-09-28 14:56:46 · 85 阅读 · 1 评论 -
jvm!他来了!JVM调优操作及OOM解决方法
近几年深入学习JVM调优的人越来越多,因为互联网一线大厂的Java高级开发工程师JD**中都明确要求了“JVM调优”的能力。**所以掌握JVM调优是深入学习Java必不可少的一环,也是Java开发人员迈向更高水平的一个阶梯。那么到底什么是JVM调优呢?JVM调优主要是针对垃圾收集器的收集性能优化,令运行在虚拟机上的应用能够使用更少的内存以及延迟获取更大的吞吐量。...原创 2020-09-28 14:29:12 · 154 阅读 · 0 评论 -
字节跳动的2020面试题,看完就是赚到
见过真正头铁的程序员吗?如题所示,真人真事,这位二本的兄弟在这短短几个月内海投了638份简历,全挑的大厂岗位投的,仅字节跳动就前前后后面试了九次,他说:没有撤退可言。九次面试经历也是奇了——网友们的评论真相了:“字节这么缺人?大家可以去投了”“看来字节跳动就是要定你了!”“哥们你这得累积多少大厂面试经验啊!快点传授一波!”“我的天哪,638份简历,9次字节面试,吾辈楷模。”真正的海量面经!问及面试考题,这位兄弟言辞中有些许惭愧:面试官已经给了一些提示,但无奈自己准备得...原创 2020-09-28 11:09:23 · 280 阅读 · 1 评论 -
阿里金服最全的Redis面试题
Redis 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value DB。Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的数据,因此 Redis..原创 2020-09-27 20:18:45 · 100 阅读 · 1 评论 -
支付宝4面最全最稳面试题大全
一面介绍项目 java 线程池的实现原理,threadpoolexecutor关键参数解释 hashmap的原理,容量为什么是2的幂次 为什么要同时重写hashcode和equals ConcurrentHashMap如何实现线程安全? 介绍Java多线程的5大状态,以及状态图流转过程 介绍下Synchronized、Volatile、CAS、AQS,以及各自的使用场景 B+树和红黑树时间复杂度 如果频繁老年代回收怎么分析解决 JVM内存模型,新生代和老年的回收机制 mysql ..原创 2020-09-27 16:46:38 · 1304 阅读 · 0 评论 -
阿里大牛整理的高性能MySQL笔记
一、MySQL架构与历史A.并发控制1.共享锁(shared lock,读锁):共享的,相互不阻塞的2.排他锁(exclusive lock,写锁):排他的,一个写锁会阻塞其他的写锁和读锁B.事务1.事务ACID* 原子性(atomicity)一个事务必须被视为一个不可分割的最小工作单元,整个事务中所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作* 一致性(consistency)数据库总是从一个一致性的状态转换到另外一个一致性的状态*..原创 2020-09-27 15:42:08 · 244 阅读 · 1 评论 -
Java必学(2)之Redis设计规范
一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:(3)【强制】:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符2. value设计(1)【强制】:拒绝bigkey(防止网卡流量、慢查询)string类型控制在10KB以内,hash、list、se..原创 2020-09-27 15:15:56 · 85 阅读 · 0 评论 -
JAVA必学:Redis BigKey
一、什么是bigkey在Redis中,一个字符串最大512MB,一个二级数据结构(例如hash、list、set、zset)可以存储大约40亿个(2^32-1)个元素,但实际上中如果下面两种情况,我就会认为它是bigkey。字符串类型:它的big体现在单个value值很大,一般认为超过10KB就是bigkey。 非字符串类型:哈希、列表、集合、有序集合,它们的big体现在元素个数太多。二、危害bigkey可以说就是Redis的老鼠屎,具体表现在:1.内存空间不均匀这样会不利于集群对内原创 2020-09-27 10:44:55 · 219 阅读 · 0 评论 -
JVM优化之循环展开
在JVM内部实现系列的前几篇文章中,我们已经看到了Java的HotSpot虚拟机的just-in-time (JIT)编译技术,包括逃逸分析和锁消除。本文我们将要讨论另一种自动优化,叫作循环展开。JIT编译器使用这项技术来让循环(比如Java的for或者while循环)执行得更加高效。由于我们要对JVM的内部机制进行深入分析,所以你会时不时看到用于讲解介绍的各种C的代码甚至是汇编语言,扶稳了!我们先从下面这段C代码开始,它会去分配100万个long类型的空间,然后用100万个随机的long值来填充。原创 2020-09-26 20:00:36 · 412 阅读 · 0 评论