- 博客(64)
- 收藏
- 关注
原创 10+ 张图解|高并发分布式架构演进
章在介绍一些基本概念后,按照以下过程阐述了整个架构的演进过程:单机架构第一次演进:Tomcat 与数据库分开部署第二次演进:引入本地缓存和分布式缓存第三次演进:引入反向代理实现负载均衡第四次演进:数据库读写分离第五次演进:数据库按业务分库第六次演进:把大表拆分为小表第七次演进:使用 LVS 或 F5 来使多个 Nginx 负载均衡第八次演进:通过 DNS 轮询实现机房间的负载均衡第九次演进:引入 NoSQL 数据库和搜索引擎等技术第十次演进:大应用拆分为小应用
2022-09-03 14:28:34 2456 1
原创 Redis Pipeline原来是这么用的
最近项目碰到这么一个技术上的需求:前端通过长轮询的机制(http long polling),获取服务端的消息数据。而服务端是需要订阅所有业务方的业务消息,再通知到给前端。长轮询,其实简单来说,就是前端发起一个http请求,服务端把当前的请求 hang 住,直到超时或者有需要返回的内容,才return。 Apollo 配置中心就是使用这个机制实现配置的更新通知。但有这么一种情况,假如服务端消费到消息,但此时前端与服务端的连接刚好断开了,那这个消息就没法通知到前端。所以,我们得需要把服务端消费
2022-06-13 17:15:50 219
原创 微服务设计指导-让Redis循环写入时提高10倍的技巧
有微服务的架构不代表性能好,而使用微服务的架构必须要求性能好。这句话不矛盾。矛盾在外面很多人认为微服务架构代表高并发,实际上不是。我们有“书面微服务”和“实际微服务”之说。比如说网上大量教人把httpConnection或者是FeignClient的timeout改成30秒就不会超时了?那这要什么微服务呢?微服务解决的到底是什么呢?......
2022-06-13 17:09:39 159
原创 Redis+Caffeine两级缓存,让访问速度纵享丝滑
在高性能的服务架构设计中,缓存是一个不可或缺的环节。在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时,也能降低数据库的压力。...
2022-06-13 17:03:13 236
原创 设计模式学习笔记:观察者模式及应用场景
观察者模式(Observer Design Pattern),也叫做发布订阅模式(Publish-Subscribe Design Pattern)、模型-视图(Model-View)模式、源-监听器(Source-Listener)模式、从属者(Dependents)模式。指在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。...
2022-06-13 16:51:11 106
原创 Canal Java 入门与使用
在如今时代数据是最关键的,大的数据量势必会影响用户体验,在我的日常开发中遇到了一个类似的问题,由于数据库中数据量过于庞大造成查询效率低,决定采用redis来存取最新的数据,由于系统为其它语言编写本人并不擅长,便采取canal来通过增量的方式更新数据。下面让我们了解一下canal。...
2022-06-10 19:11:24 669
原创 面试官:小伙子我们先来唠唠并发编程的几大核心知识点
并发编程算是Java的一个难点,经常做业务相关的程序员基本上用不到juc的包,但是这些知识点十分重要,所以不管在哪里,时刻保持学习真的很重要。
2022-06-10 17:23:08 80
原创 阿里二面:说一下Hashmap散列表的三大问题与线程安全问题
很高兴遇见你~ HashMap是一个非常重要的集合,日常使用也非常的频繁,同时也是面试重点。本文并不打算讲解基础的使用api,而是深入HashMap的底层,讲解关于HashMap的重点知识。需要读者对散列表和HashMap有一定的认识。 HashMap本质上是一个散列表,那么就离不开散列表的三大问题: 散列函数、哈希冲突、扩容方案 ;同时作为一个数据结构,必须考虑多线程并发访问的问题,也就是 线程安全 。这四大重点则为学习HashMap的重点,也是HashMap设计的重点。 HashMap属于Map集合体系
2022-06-10 17:16:11 285
原创 榨干服务器:一次惨无人道的性能优化
做过2B类系统的同学都知道,2B系统最恶心的操作就是什么都喜欢批量,这不,我最近就遇到了一个恶心的需求——50个用户同时每人导入1万条单据,每个单据七八十个字段,请给我优化。
2022-06-10 17:10:12 78
原创 SpringBoot自动装配加载过程全梳理!你能get多少
首先对于一个SpringBoot工程来说,最明显的标志的就是 @SpringBootApplication它标记了这是一个SpringBoot工程,所以今天的 SpringBoot自动装配原理也就是从它开始说起。
2022-06-10 17:07:48 129
原创 ElasticSearch新版Java客户端ElasticClient快速上手
ElasticSearch新版Java客户端ElasticClient快速上手
2022-06-09 16:03:09 1115
原创 Java网络编程指南
网络编程在我们的日常开发中是最为常见的,尤其是在通信这一块显得更加的突出,比如我们最为常见的微信和QQ其基本原理就是网络编程。本文详细介绍网络编程的相关知识。首先介绍的就是网络编程的相关概念。...
2022-06-08 14:12:44 84
原创 Java并发编程-Android的UI框架为什么是单线程的?
众所周知,Android 会在ViewRootImpl中调用checkThread方法检测是否是在 UI 线程中更新
2022-06-08 14:00:33 198
原创 详解Java的交互式编程环境:jshell
什么是交互式编程环境?重点词交互,在这样的编程环境中,你每输入一行代码,环境都会给你一个反馈,这就是交互式的编程环境。这种编程环境并不太适合工程化的复杂性需求,但在一些快速验证、简单计算之类的场景下还是非常好用的。其实交互式编程环境在其他高级语言中很早就有了,而Java直到Java 9才正式推出了这样的工具。...
2022-06-08 13:58:48 1196 1
原创 Java并发编程 | 局部变量为什么是线程安全的
本篇文章说一个比较简单的东西,就是局部变量为什么是线程安全的,对于熟悉JVM的开发者来说这个问题可以忽略不计。所以本篇文章作为知识回顾和扩展。
2022-06-08 13:55:53 111
原创 Java并发编程 | Lock和Condition(1)
我们回顾下前面文章所说的Java并发编程的万能钥匙:管程,管程是把共享变量和对共享变量的操作给封装起来实现互斥,然后管程内部的条件变量以及条件变量的等待队列实现了线程的同步。同时Java语言的synchronized是管程的一种实现,只不过只有一个条件变量的管程模型;那Java并发包为什么还给出其他的管程实现呢就比如本篇内容就是通过Lock和Condition这俩个接口来实现管程,其中Lock用于解决互斥问题,Condition用于解决同步问题。所以理解为什么Java并发包要开发这俩个工具很关键
2022-06-08 13:53:58 124
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人