自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 跟着我左手右手一个慢动!手把手带你掌握:Redis分布式锁-spring boot aop+自定义注解实现分布式锁~

1、为什么需要 声明式的分布式锁编程式分布式锁每次实现都要单独实现,但业务量大功能复杂时,使用编程式分布式锁无疑是痛苦的,而声明式分布式锁不同,声明式分布式锁属于无侵入式,不会影响业务逻辑的实现。我的为什么要用:使用简单,提升开发效率2、怎么实现使用spring aop + 自定义注解来实现下面来看下spring boot + 自定义注解 如何实现一个声明式的分布式锁3、看代码第一步、引入aop 需要 jar包<!-- SpringBoot AOP start --><.

2021-05-29 15:28:31 38 3

原创 阿里面试题:如何解决缓存常见的坑?

为什么使用缓存在高并发请求时,我们会频繁提到使用缓存技术,最直接的原因是,磁盘IO及网络开销是直接请求内存IO的千百上千倍做个简单计算,如果我们需要某个数据,该数据从数据库磁盘读出来需要0.0045S,经过网络请求传输需要0.0005S,那么每个请求完成最少需要0.005S,该数据服务器每秒最多只能响应200个请求,而如果该数据存于本机内存里,读出来只需要100us,那么每秒能够响应10000个请求。通过将数据存储到离CPU更近的未位置,减少数据传输时间,提高处理效率,这就是缓存的意义。...

2021-05-27 13:49:33 45 1

原创 实战级详解Spring框架中引入阿里开源组件Nacos作配置中心

Nacos的配置中心先来聊聊配置中心是什么,以及为什么要使用配置中心。简单的说,配置中心是可以集中、灵活、动态的管理系统中的各种配置参数的配置管理产品,例如增、删、改、查功能开关、数据库连接配置、服务请求地址等。所谓集中,就是有统一管理的平台;灵活,不需要修改代码,做到自动匹配赋值、配置隔离;动态,不需要通过重启服务来使变更生效,主动推送或拉取变更的值。对于配置参数,早期很传统的做法是通过程序硬编码的方式,将参数值写到代码中,如果要改变参数值,不仅要修改代码,还需要重新部署。重新部署倒是勉强可以接受

2021-05-26 22:05:59 40 3

原创 牛逼!从0到1用Java实现-Redis分布式锁。

1、为什么要使用分布式锁如果在一个分布式系统中,我们从数据库中读取一个数据,然后修改保存,这种情况很容易遇到并发问题。因为读取和更新保存不是一个原子操作,在并发时就会导致数据的不正确。这种场景其实并不少见,比如电商秒杀活动,库存数量的更新就会遇到。如果是单机应用,直接使用本地锁就可以避免。如果是分布式应用,本地锁派不上用场,这时就需要引入分布式锁来解决。由此可见分布式锁的目的其实很简单,就是为了保证多台服务器在执行某一段代码时保证只有一台服务器执行。2、为了保证分布式锁的可用性,至少要...

2021-05-26 15:25:49 34

原创 搞定Tomcat服务配置和服务器优化只需看这一篇文章就够了!

一、Tomcat内存优化① tomcat启动脚本Tomcat内存优化其实也就是JVM优化,启动时告诉JVM需要多大内存(调优内存是最直接的方式)。配置文件为Windows 下的 catalina.bat,Linux 下的 catalina.sh。在linux启动Tomcat通常我们会执行bin/startup.sh文件,查看该文件源码会发现,该文件最后会执行catalina.sh脚本文件。在catalina.sh脚本文件中,会看到如下注释变量释义:该脚本注释说明了一些CATALINA Serve

2021-05-25 19:39:25 30 1

原创 美团面试题:被问缓存一致性,我的这个回答直接让面试官刮目相看!

美团面试题:被问缓存一致性,我的这个回答直接让面试官刮目相看!文末附面试资料~方案分析更新缓存策略方式常见的有下面几种:先更新缓存,再更新数据库先更新数据库,再更新缓存先删除缓存,再更新数据库先更新数据库,再删除缓存下面一 一介绍!方案一:更新缓存,更新数据库这种方式可轻易排除,因为如果先更新缓存成功,但是数据库更新失败,则肯定会造成数据不一致。方案二:更新数据库,更新缓存这种缓存更新策略俗称双写,存在问题是:并发更新数据库场景下,会将脏数据刷到缓存updateDB();upda

2021-05-24 14:05:20 116

原创 面试被虐后,我忍痛把JVM调优原理的知识和经验分享了出来!

前言:先了解原理,然后在进行调优。一定要记住的是任何的调优都不是一蹴而就,不要指望改动一个参数就达到调优的目的,也不要仅仅改动了一个参数,就认为是做了调优。调优是在已有的资源和要达到的目标的前提上,进行权衡。‍从类加载到整个JVM的运行周期内大致流程和结构如下:从上图可以看到,JVM 可以划分为这些部分:执行引擎,包括:GC、JIT 编译器类加载子系统,这部分的问题,一般在开发过程中出现JNI 部分,这部分问题一般在 JVM 之外运行时数据区;Java 将内存分为 2 大块:堆内存和栈内

2021-05-21 14:56:07 53 2

原创 用5年算法经验:来讲透什么是时间复杂度和空间复杂度?

养成阅读好习惯,从关注开始!文末附相关资料前言所谓算法,其实就是我们用来操作数据、解决程序问题的一组方法。针对同一个问题,我们可以采用不同的算法,然后实现相同的结果。但是针对不同的算法,对于时间和资源的消耗却有不同的差别。而为了分析不同算法的效率,我们常常从 时间 和 空间 两个方面来对比,然后从中挑出最适合我们的解决方案。本文主要从时间复杂度和空间复杂度的定义说起,然后介绍常见的时间复杂度和空间复杂度,最后则是对常见排序算法进行了总结。时间复杂度定义若存在函数 f(n)f(n)f(n),使

2021-05-20 20:04:10 42

原创 【最新】不负众望,成功拿下了阿里面试!岗位:Java高级工程师,附答案!

养成阅读好习惯,从关注开始!这是5月份最新出的Java高级面试题,题目覆盖面比较广,面试前还是需要好好去准备。除了这些技术上的问题之外,都是一些会问的常规性的问题了,比如为啥在前一家公司干的挺好的还是决定出来跳槽,喜欢安稳还是挑战,期待薪资是多少等等,相关答案文末自取!1.数据库· 使用mysq1索引都有哪些原则?· 索引什么数据结构?· B+tree和Btree什么区别?· mysq有哪些存储引擎啊?都有啥区别?要详细!!· 设计高并发系统数据库层面该怎么设计?· 数据库锁有哪些类型?如

2021-05-20 14:54:26 117 6

原创 我已迷失在MySQL的锁世界无法自拔~~~!

1.饮料这是一杯饮料。这是3杯饮料,每杯饮料的味道各不相同。但是人类并不称呼【饮料】为【饮料】,而是称呼【饮料】为【记录】。2.红章鱼这个红色的,长的像章鱼????的家伙,我们就叫它红章鱼~红章鱼分为头部和触手两个部分。红章鱼有触手,且可以有任意根触手。红章鱼爱喝饮料,把触手伸进杯子就能吸到饮料。红章鱼将不同的触手伸进不同的杯子,就可以同时喝多杯饮料。多只红章鱼可以同时出现。但是正在喝饮料的红触手会排...

2021-05-19 19:56:50 40 1

原创 线程不安全类的产生的原因是什么?我们来分析一下!

1.前言我们都知道,对于线程不安全的类,我们需要采用一些方法去保证线程安全;那么,我们首先要知道什么类是线程不安全的。2.set相关如果说:对于,一个资源来说:所有的线程都是去读的,那么,这个资源就是线程安全的。(不涉及资源的更改)但是,如果,有写操作时,就可能导致线程不安全了;线程安全类定义:不存在竞态条件(类中不存在被修改的成员变量),或存在时进行了同步控制举例说明:SimpleDateFormatprivate StringBuffer format(Date date, StringBu

2021-05-18 14:19:04 383 10

原创 问:高并发场景下,如何保证数据的一致性的?

面试的时候,总会遇到这么一个场景。1. 场景分析面试官:你们的服务的QPS是多少?我:我们的服务高峰期访问量还挺大的,大约是3万吧。面试官:这么大的访问量,你们的服务器能撑住吗?有加缓存吗?我:有的,我们使用了Redis做缓存,接口优先查询缓存,缓存不存在,才访问数据库。这样可以减少数据库访问压力,加快查询效率。面试官:一份数据存储在两个地方,更新数据的时候,你们是怎么保证数据的一致性的?看到了吧,好的面试官一般不直接问你数据一致性的解决方案,而是循循善诱,结合具体的使用场景,再问你解决方法.

2021-05-15 17:37:08 184

原创 厉害了!阿里大佬把 HashMap 剖析得只剩渣渣了

前言HashMap是一个非常重要的集合,日常使用也非常的频繁,同时也是面试重点。本文并不打算讲解基础的使用api,而是深入HashMap的底层,讲解关于HashMap的重点知识。需要读者对散列表和HashMap有一定的认识。HashMap本质上是一个散列表,那么就离不开散列表的三大问题:散列函数、哈希冲突、扩容方案;同时作为一个数据结构,必须考虑多线程并发访问的问题,也就是线程安全。这四大重点则为学习HashMap的重点,也是HashMap设计的重点。HashMap属于Map集合体系的一..

2021-05-15 13:48:28 28

原创 【Java后端面经】2021-5月字节跳动热乎凉经!

一面:时间5月10号 20:00,1.项目相关(我是做支付交易相关的,刚好面的也是支付部门)其中有个问题:① 热点账户如何解决的;② 只出账户拆分成多个子账户,那某个子账户进行扣减的时候,该子账户钱不够了怎么办?2.如何解决资源竞争激烈问题,转换一下问题就是并发场景下如何提升性能。说我使用java,那就已java语言为例,说说你使用的说了:乐观锁、悲观锁(java各种锁相关,不过字节不是java,所以没有详细说,大概说了下思路),这个主要还是往如何在并发场景下提升处理性能,两个大方向:① 尽量实现

2021-05-13 21:03:25 1076 5

原创 【Java开发】5月最新美团Java实习面经!

1.自我介绍 , 能过来实习的时间?2.java的最大优势,跟golang相比?知道字节为什么选择golang?3.你说了解java编译和解释过程,class文件和动态链接库so文件有看过吗?会汇编吗?4. 你说你看过很多源码是吗?那你说说hashmap的底层实现?什么条件下会自动扩容的?为什么要有 红黑树 ?什么条件下会有?扩容因子为什么是0.75有研究过吗?5.jvm你说熟悉是吧? 源码了解吗?说说类加载过程?还有说说gc和内存分配机制?知道怎么优化吗?6. 熟悉 红黑树是...

2021-05-11 21:10:25 76 3

原创 4月面试,5月收获offer!美团后端开发实习面经真实分享!祝大家都拿到心仪的offer!

话不多说,直接进入主题:4月23日:美团一面(1h):前半小时忘记录音了QAQ,尽量写一些印象深的吧:1.MySQL;索引相关,mysql中都有哪些日志,讲一下mvcc的实现2.平衡二叉树与红黑树比较3.经典问题:地址栏输入一个网址到返回一个网页的过程4.看到简历上写了了解多线程基础及线程池相关,于是问了线程池七个参数,详细问了任务队列5.介绍ArrayBlockingQueue和LinkedBlockingQueue的底层区别,比较这两种任务队列高并发场景下谁效率高,为什么。6.计

2021-05-10 21:06:46 99 1

原创 2021年5月Spring核心面试题合集,建议收藏!

1、什么是 Spring 框架?Spring 框架有哪些主要模块?Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spring 帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring 框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成 Spring 框架,不必担心 Spring 是如何在后台进行工作的。Spring 框架至今已集成了 20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/.

2021-05-10 20:56:11 64

原创 笔试必备,8种排序算法的Java实现,附标准答案!

一、Java版希尔排序(缩小增量排序)复杂度 平均 O(n^1.3) 最好O(n) 最差O(n^s)[1内循环通过模拟并行的方式完成分组的内部直接插入排序,而不是一个一个分组分组的排,在10w的随机数据20w的随机数据均表现优异。public void shellSort(int[] a) { if (null == a || a.length < 2) { return; } for (int d = a.length/2; d > 0; d/=2) { // 从1

2021-05-08 20:53:49 37 1

原创 分布式session的几种解决方案,你中意哪种?

前言:我发现了一个商城,我还没有登录,就可以往购物车中添加商品,加了好几件后,我准备付款,需要我先去登录,登录完之后付款。现在很多商城,都会要求用户先去登录,登录之后再往购物车中添加商品,这样用户、购物车、商品,三个对象之间就有了绑定关系。而针对我最开始说的那种情况,其实就是基于session做的,客户端往购物车中添加第一个商品的时候,发送一个请求,服务器收到请求之后,创建session,然后返回当前session对应的一个JessionId,浏览器存储在cookie中,客户端往购物车...

2021-05-08 13:42:48 37

原创 最新最全35问:2021 - JVM面试题总结(附答案)自取!

最新最全35问:2021 - JVM面试题总结JVM作为后端开发的核心技术,必须得掌握!本篇文章JVM面试题总结,包含JVM类文件结构,JVM类加载工程,JVM类加载器,JVM垃圾回收请看题:1.请概述一下Java 类文件结构?2.请总结一下Class 文件结构?3.请谈谈你对JVM的理解?4.从 JVM 角度说进程和线程之间的关系5.JVM 配置常用参数有哪些?6.常用 GC 调优策略有哪些?7.虚拟机栈和本地方法栈为什么是私有的?8.一句话简单了解堆...

2021-05-07 14:17:26 141

原创 Java面试:BIO,NIO,AIO 的区别,别再傻傻分不清楚

既然你能看到这,说明你有一定的Java基础了,不然咋面试呢?同步&异步, 阻塞&非阻塞 基本了解同步(阻塞): 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。 异步(非阻塞): 异步就是发起一个调用后,立刻得到被调用者的回应表示已接收到请求,但是被调用者并没有返回结果,此时我们可以处理其他的请求,被调用者通常依靠事件,回调等机制来通知调用者其返回结果BIO: (Blocking I/O) - 阻塞IO也叫传统IO1) 先将文件内容从...

2021-05-06 14:09:50 126

原创 字节一二三面,面经(已经OC)四月底真实面试经历!

一面:自我介绍,简单问了下项目实现流程,算法题1:然后函数计算n以内三的倍数和五的倍数和,开始写了时间复杂度O(n),面试官说不行,然后优化到了时间空间都是O(1):算法题2:最长无重复子串长度,一遍过力扣原题算法题3:SQL,由于我准备面试忘记准备SQL了,只会简单查询,这个需要左链接子查询直接放弃mysql索引:B+树,哈希索引,聚簇索引,非聚簇索引集合类:set,list,map,然后到了HashMap,TreeMap实现原理,然后到了红黑树实现原理和优点,然后到Con..

2021-05-05 14:13:40 159

原创 什么,你管这叫“线程安全”?

前言:1.什么叫线程安全?2.线程安全与变量的关系?变量又与堆/栈/静态存储区有密切关系什么叫线程安全?我们以常见的一行代码i++ ,i-- 为例, 计算机的操作姿势可能与你想象的不一样。在大多数计算机中, 给变量自增并不是原子操作, 需要下面三步:① 将变量值加载进寄存器② 寄存器自增/自减值③ 将寄存器值加载回原变量多线程环境下,如果你不使用一些原子锁操作:线程A ( i++ )可能只执行了前面两步后,之后CPU轮询切换到其他线程或者线程A被抢占CPU; 线程B ( i-- )欻.

2021-04-30 14:58:16 100 2

原创 【2021最新】Spring 全家桶:Java之Sping MVC SpringBoot常见面试题总结,附答案解析!

Spring 全家桶100问,常见面试题总结,一共分为三篇 上 中 下,本篇为上篇!一,Spring boot 有哪些方式可以实现热部署?使用 devtools 启动热部署,添加 devtools 库,在配置文件中把 spring. devtools. restart. enabled 设置为 true; 使用 Intellij Idea 编辑器,勾上自动编译或手动重新编译。 109.jpa 和 hibernate 有什么区别? jpa 全称 Java Persistence API,是...

2021-04-28 15:49:10 87

原创 记录一下,我的「Java」面试日记!

背景:在老东家五年了,总共工作整八年,经历两家公司。2020-10-31日离职。公司规模较小,项目压力不大,非985/211毕业,统招本科,计算机专业。目标:中大型公司,最好是大厂,嘿嘿,不过不抱希望,毕竟背景不太好。准备:撰写简历,每天下班回家 7-12点看视频,刷博客,看面试题。学习内容:《某某课堂》学习视频。准备内容:Java 基础,集合,线程池,锁,MySQL索引,事务,Spring等。2020-10.31提了离职已经有二十多天了,今天老板签了字,办了离职手续,《某...

2021-04-27 21:30:36 747 9

原创 万级并发!电商库存扣减如何设计,如何做到不超卖?

前言:随着中国消费认知的不断升级,网购走近千家万户,越来越被人们所接受。淘宝、唯品会、考拉、京东、拼多多等逐渐成为我们生活的重要组成部分。除了常规的购物下单外,这些电商平台还经常搞一些双十一活动,秒杀、大促、限时购,各种营销玩法,层出不穷!今天就来跟大家聊一聊电商技术里的库存扣减。当有很多人同时在买一件商品时(假设库存充足),每个人几乎同时下单成功,给人一种并行的感觉。但真实情况, 库存只是一个数值,无论是存在mysql数据库还是redis缓存,减值时都要控制顺序,只能串行...

2021-04-27 14:11:48 318

原创 拜托,不要再问我Java需要学到什么程度才能找到工作了

前言:最近有很多粉丝朋友私信我,说找工作太难了,Java需要学到什么程度才能找到工作,这不 我针对了企业用人需求 做了个技术栈,基本上掌握个70%以上就能找到一个不错的开发工作,技术栈如下:一:Java基础-语言语法数据类型运算符流程控制方法的定义,调用,重载数组二:面向对象继承封装多态三:JavaSE进阶异常常用类集合IO流多线程网络编程JUnit枚举注解反射机制四:数据库+JDBCOeacle+MyQSL+JDBC...

2021-04-26 17:42:59 185 1

原创 MySQL是如何和系统打交道的?

前言作为一名开发人员,了解和学习数据库为重中之重。系统和mysql的连接通道要在Java系统和MySQL之间建立联系,需要用到MySQL的连接驱动 mysql-connector-java ,所以在项目的依赖中我们常常会发现加入的 mysql-connector-java 连接驱动。mysql-connector-java 职能底层实现 程序 与 mysql 服务器的网络连接。数据库连接池当一个用户对数据库进行操作时,程序就会和数据库建立一次连接。当多个用户同时对数据库进行操作时,而程序和数

2021-04-24 14:45:28 41

原创 总是记不住Java的IO流用法?用N个问题教你掌握Java IO流

前言:Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了。在设计 IO 相关的类时,编写者也不是从同一个方面考虑的,所以会给人一种很乱的感觉,并且还有设计模式的使用,更加难以使用这些 IO 类,所以特地对 Java 的 IO 做一个总结。Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了。在设计 IO 相关的类时,编写者也不是从同一个方面考虑的,所以会给人一种很乱的感觉,并且还有设计模式的使用,更加难以使用这些 IO 类,所以特地对 Java 的

2021-04-23 16:29:07 108

原创 腾讯大佬把Redis进阶笔记分析的淋漓尽致!

一、Redis 基础数据结构StringRedis 里的字符串是动态字符串,会根据实际情况动态调整。类似于 Go 里面的切片-slice,如果长度不够则自动扩容。至于如何扩容,方法大致如下:当 length 小于 1M 的时候,扩容规则将目前的字符串翻倍;如果 length 大于 1M 的话,则每次只会扩容 1M,直到达到 512M。1. StringRedis 里的字符串是动态字符串,会根据实际情况动态调整。类似于 Go 里面的切片-slice,如果长度不够则自动扩容。至于如何扩容,方法大致如下

2021-04-22 17:14:45 111

原创 万字长篇,图文并茂!一篇与面试官和蔼交流的深入了解JVM(JDK8)果断收藏了!

文章目录面试系列1、类加载机制类加载过程分为 加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载1、加载 在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口2、验证 校验字节码文件的正确性3、准备 给类的静态变量分配内存,并赋予

2021-04-21 19:25:37 80 1

原创 架构大佬硬核解析 M1 上如何使用 Docker

前言出于开源项目的需要,我准备把之前在 Windows 下运行的开源项目移植到 Mac 上跑得试下,但是之前 Mac M1 芯片并不能很好地支持 Docker,这不,发现 Docker 也正式支持 Mac 了,M1 看了 Docker 的芳容,竟悄悄爱上了 Docker。本文主要内容如下:一、官宣1.1 官宣版之前 Docker 只支持在 Intel 芯片的 X86 架构上运行,Docker 已经正式支持苹果 M1 芯片了,而 M1 芯片是 ARM 架构的,所以说 D...

2021-04-21 16:25:08 490

原创 8张图,5大组件!了解MySQL查询语句执行过程。

开篇相信广大程序员朋友经常使用MySQL数据库作为书籍持久化的工具,我们最常使用的就是MySQL中的SQL语句,从客户端向MySQL发出一条条指令,然后获取返回的数据结果进行后面的逻辑处理。尽管大家经常使用SQL语句完成工作,你是否关注过其执行的阶段,利用了哪些技术完成?今天,就带大家一起看看MySQL数据库处理SQL请求的全过程。下面将会讲述如下内容:查询请求在MySQL中的处理流程MySQL 中处理SQL的组件介绍,包括:连接器查询缓存分析器优化器执行器查询请求的执行流程众所周知

2021-04-20 21:32:57 54

原创 太牛了!2021年最新最全Java后端学习路线,我建议你先收藏再观看!全平台已疯转100000+次! 不要错过!

前言:深知广大爱好Java的人学习是多么困难,专门整理了新版的学习路线图,不管你是不懂电脑的小白,还是已经步入开发的大牛,这套路线路绝对不容错过!知识点和学习路线图的宗旨就是分享,专业,便利,让喜爱Java的人,都能平等的学习。从今天起不要再找借口,不要再说想学Java却没有资源,赶快行动起来,Java等你来探索,高薪距你只差一步!万字长篇,图文并茂!慢慢品!话不多说,直接开整!第一阶段:JAVA开篇1.计算机语言的发展历史2.JAVA简史3.JAVA体系结.

2021-04-20 16:55:15 106

原创 推荐!【2021最新版】Java面试真题手册:面试题(1000道)+Java集合/泛型+IO与NIO+多线程&并发+ JVM+Mysql+Redis+MongoDB+ssm等,面试大全!!!

金三银四接近尾声!!!!最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、Elasticsearch、Kafka、微

2021-04-19 21:50:26 44

原创 Netty高级特性及源码详解

Netty的编码与解码编解码:出站消息会把Java对象转换成字节,入站消息则将字节转成Java对象Netty内部提供了一系列内置编解码API如StringEncoder和StringDecoder和编解码对象的ObjectEncoder和ObjectDecoder如果要实现高效的编解码可以用protobufprotobuf要维护大量proto文件,比较麻烦,一般可以使用protostuff,使用简单Netty粘包拆包Netty心跳检测机制断线重连Netty高并发高性能架构设计精髓

2021-04-19 21:11:10 54

原创 死磕Spring之IoC篇 - 深入了解Spring IoC(面试题)

目录什么是 Spring Framework ?Spring Framework 的优势和不足?你对 IoC 的理解?为什么需要 IoC ?IoC 和 DI 的区别?IoC 容器的职责?什么是 Spring IoC 容器?构造器注入和 Setter 注入BeanFactory 和 ApplicationContext 谁才是 Spring IoC 容器?Spring Bean 的生命周期?BeanDefinition 是什么?Spring 内建的 Bean 作用域有哪些?Bean

2021-04-19 18:01:35 94

原创 RabbitMQ 中 7 种消息队列

七种模式介绍与应用场景简单模式(Hello World)做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B应用场景:将发送的电子邮件放到消息队列,然后邮件服务在队列中获取邮件并发送给收件人工作队列模式(Work queues)在多个消费者之间分配任务(竞争的消费者模式),一个生产者对应多个消费者,一般适用于执行资源密集型任务,单个消费者处理不过来,需要多个消费者进行处理应用场景:一个订单的处理需要1...

2021-04-19 17:03:58 35

原创 JVM 基础系列 - Java 内存模型引入

目录:JVM 基础 - Java 内存模型引入JMM引入 从堆栈说起 堆栈里面放了什么? 线程栈如何访问堆上对象? 线程栈访问堆示例 JMM与硬件内存结构关系 硬件内存结构简介 JMM与硬件内存连接 - 引入 JMM与硬件内存连接 - 对象共享后的可见性 JMM与硬件内存连接 - 竞态条件 JMM引入从堆栈说起JVM内部使用的Java内存模型在线程栈和堆之间划分内存。 此图从逻辑角度说明了Java内存模型:堆栈里面放了什么?线...

2021-04-16 20:55:50 914 5

原创 如何设计好分布式数据库,这个策略很重要不信你点开!

摘要:GaussDB(for openGauss)是分布式架构,数据分布在各个DN上,设计好的数据分布策略是分布式数据库设计中最关键的环节。数据库是应用和计算机的核心组成,试想,如果没有数据库,就像人的大脑没有了记忆一样,信息也得不到共享,那么,对开发者来说,如何设计一款高效易用的数据库至关重要。GaussDB(for openGauss)是企业级分布式数据库,具备分布式强一致、有效降低容灾成本、支持PB级海量数据、智能诊断等优点,是当下炙手可热的主流数据库,那么如何更好的设计分布式数据库的数据分布

2021-04-16 16:32:09 44

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除