java Spring菜鸟教程,只需一篇文章吃透Java多线程技术

【Java学习路线之JavaWeb】Spring Cloud教程(非常详细) 文章目录读者阅读条件微服务是什么微服务,我们可以从字面上去理解,即“微小的服务”,下面我们从“服务”和“微小”两个方面进行介绍。微服务架构微服务架构 vs 单体架构微服务的特点微服务框架Java 微服务框架Go 语言微服务框Phyton 微服务框架NodeJS微服务框架Spring Cloud是什么Spring Cloud 常用组件Spring Boot 和 Spring Cloud 的区别与联系1. Spring Boot 和 Spring Cloud 分工不同2. Spring Cloud 是基于 Sp 阅读详情

开头

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。Spring更是 避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新 ,很多研发人员把spring看作心目中最好的Java项目,没有之一。

可以毫不夸张的说,Spring重新定义了Java,所以这是重点也是难点,工作中必须会,面试时肯定考,不过很多人在面试的时候在简历上写着熟悉Spring,但也不过只是会用SSM,在这个基础上做crud罢了,对于Spring全家桶里面其他技术点真的有所掌握吗?

Spring系列包含非常多的项目,可以满足Java开发中的方方面面,先来看下常用框架的知识点汇总:

接下来不多哔哔,直接上干货!

异步复制

MySQL的复制默认是异步的,主从复制至少需要两个MYSQL服务,这些MySQL服务可以分布在不同的服务器上,也可以在同一台服务器上。

MySQL主从异步复制是最常见的复制场景。数据的完整性依赖于主库BINLOG的不丢失,只要主库的BINLOG不丢失,那么就算主库宕机了,我们还可以通过BINLOG把丢失的部分数据通过手工同步到从库上去。

注意:主库宕机的情况下,DBA可以通过mysqlbinlog工具手工访问主库binlog,抽取缺失的日志并同步到从库上去;也可以通过配置高可用MHA架构来自动抽取缺失的数据补全从库,或者启用Global Transaction Identifiers(GTID)来自动抽取缺失binlog到从库。

MySQL在BINLOG中记录事务(或SQL语句),也就是说对于支持事务的的引擎(例如InnoDB)来说,每个事务提交时都需要写BINLOG;对于不支持事务的引擎(例如MyISAM)来说,每个SQL语句执行完成时,都需要些BINLOG。为了保证Binlog的安全,MySQL引入sync_binlog参数来控制BINLOG刷新到磁盘的频率。

show variables like 'sync_binlog';

  • 在默认情况下,sync_binlog=1,表示事务提交之前,MySQL都需要先把BINLOG刷新到磁盘,这样的话,即使出现数据库主机操作系统崩溃或者主机突然掉电的情况,系统最多损失prepared状态的事务;设置sync_binlog=1,尽可能保证数据安全。
  • sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系统自己控制文件缓存的刷新。
  • sync_binlog=N,如果N不等于0或者1,刷新方式同sync_binlog=1类似,只不过此时会延长刷新频率至N次binlog提交组之后。

以上是传统的异步复制,在MySQL5.7的并行复制技术(也称多线程复制)到来之前,为人诟病最多的还是效率问题,slave延迟是一个顽疾,虽然之前已经出现了schema级别的并行复制,但实际效果并不好。

多线程复制

在MySQL5.7中,带来了全新的 多线程复制 技术,解决了当master同一个schema下的数据发生了变更,从库不能并发应用的问题,同时也真正将binlog组提交的优势充分发挥出来,保障了从库并发应用Relay Log的能力。

在MySQL8.0中,多线程复制又进行了技术更新,引入了writeset的概念,而在之前的版本中,如果主库的同一个会话顺序执行多个不同相关对象的事务,例如,先执行了Update A表的数据,又执行了Update B表的数据,那么BINLOG在复制到从库后,这两个事务是不能并行执行的,writeset的到来,突破了这个限制。

增强半同步复制

前面介绍的复制是异步操作,主库和从库的数据之间难免会存在一定的延迟,这样存在一个隐患:当在主库上写入一个事务并提交成功,而从库尚未得到主库的BINLOG日志时,主库由于磁盘损坏、内存故障、断电等原因意外宕机,导致主库上该事务BINLOG丢失,此时从库就会损失这个事务,从而造成主从不一致。

为了解决这个问题,从MySQL5.5开始,引入了半同步复制,此时的技术暂且称之为传统的半同步复制,因该技术发展到MySQL5.7后,已经演变为增强半同步复制(也成为无损复制)。在异步复制时,主库执行Commit提交操作并写入BINLOG日志后即可成功返回客户端,无需等待BINLOG日志传送给从库,如图所示。

而半同步复制时,为了保证主库上的每一个BINLOG事务都能够被可靠地复制到从库上,主库在每次事务成功提交时,并不及时反馈给前端应用用户,而是等待至少一个从库(详见参数
rpl_semi_sync_master_wait_for_slave_count)也接收到BINLOG事务并成功写入中继日志后,主库才返回Commit操作成功给客户端(不管是传统的半同步复制,还是增强的半同步复制,目的都是一样的,只不过两种方式有一个席位地方不同,将在下面说明)

半同步复制保证了事务成功提交后,至少有两份日志记录,一份在主库的BINLOG日志上,另一份在至少一个从库的中继日志Relay Log上,从而更进一步保证了数据的完整性。

在传统的半同步复制中,主库写数据到BINLOG,且执行Commit操作后,会一直等待从库的ACK,即从库写入Relay Log后,并将数据落盘,返回给主库消息,通知主库可以返回前端应用操作成功,这样会出现一个问题,就是实际上主库已经将该事务Commit到了事务引擎层,应用已经可以可以看到数据发生了变化,只是在等待返回而已,如果此时主库宕机,有可能从库还没能写入Relay Log,就会发生主从库不一致。增强半同步复制就是为了解决这个问题,做了微调,即主库写数据到BINLOG后,就开始等待从库的应答ACK,直到至少一个从库写入Relay Log后,并将数据落盘,然后返回给主库消息,通知主库可以执行Commit操作,然后主库开始提交到事务引擎层,应用此时可以看到数据发生了变化。增强半同步复制的大致流程如下图所示。

半同步复制模式下,假如在传送BINLOG日志到从库时,从库宕机或者网络延迟,导致BINLOG并没有即使地传送到从库上,此时主库上的事务会等待一段时间(时间长短由参数
rpl_semi_sync_master_timeout设置的毫秒数决定),如果BINLOG在这段时间内都无法成功发送到从库上,则MySQL自动调整复制为异步模式,事务正常返回提交结果给客户端。

半同步复制很大程度上取决于主从库之间的网络情况,往返时延RTT越小决定了从库的实时性越好。通俗地说,主从库之间的网络越快,从库越实时。

注意:往返时延RTT(Round-Trip Time)在计算机网络中是一个重要的性能指标,它表示从发送端发送数据开始到发送端接收到接收端的确认,总共经历的时长(这里可能有点拗口,我们可以理解为TCP三次握手的前两次握手)。

最后

2024得物校招面试真题汇总及其解答(一) 在数据结构方面,我了解常见的数据结构的概念、实现和应用,例如链表、队列、栈、树、图等。此外,我还认为Java是一门非常有趣的语言,值得学习。Java的语法简单易懂,但也包含了许多复杂的概念,可以帮助我提高编程技能。我还了解一些JVM的调优技巧。我对Java的各个方面都有一定了解,但我对数据结构和JVM比较熟悉。这些项目的开发都取得了成功,也让我对Java有了更深入的了解。通过合理的设计和开发,可以实现一个公平、高效、可靠的抢购系统。通过合理的设计和开发,可以实现一个可靠的订单超时取消系统。 阅读详情

相关推荐

2024得物校招面试真题汇总及其解答(二)

RDB 是 Redis 的一种快照持久化方式,它会在指定的时间间隔内将数据库的状态保存为一个二进制文件。方法来初始化 Spring 容器,该方法会扫描启动类所在的包及其子包,并将所有符合条件的类注册到 Spring 容器中。单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供一个全局访问点来获取该实例。数据库锁是使用数据库中的记录来实现锁。在实际应用中,可以根据具体的需求调整 Spring Boot 的启动过程。正则表达式可以用于分割文本中的单词,然后使用计数器记录每个词出现的次数。

十年互联网开发老兵,陪你一起学技术 2336

得物App面试题(上海Java开发岗)

1,redis淘汰机制? 2,为什么用红黑树?为什么用B+树? 3,索引失效? 4,redolog什么时候刷内存? 5,MVCC? MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读 ....

felix 4439

online_payment_app课设从解压到跑通:数据库配置与事务实现

数据库设计是Web项目开发的基础能力,从表结构规划到事务控制,直接影响系统的数据一致性与安全性。以在线支付类应用为例,其核心业务涉及用户账户、订单与支付流水等多张表的关联操作,必须通过外键约束、唯一索引和事务机制保证资金数据准确。理解这些原理后,工程实践中的环境配置与部署调试同样关键,例如MySQL数据库的初始化、SQL脚本导入、JDBC连接参数设置等环节,往往是课程设计与初学者最容易卡壳的地方。以数据库系统原理课程设计中的online_payment_app项目为线索,从压缩包解压、项目结构检查、数据库建

weixin_33859231的博客 420

MySQL主从复制的几种复制方式

异步复制 多线程复制 增强半同步复制 异步复制 MySQL的复制默认是异步的,主从复制至少需要两个MYSQL服务,这些MySQL服务可以分布在不同的服务器上,也可以在同一台服务器上。 MySQL主从异步复制是最常见的复制场景。数据的完整性依赖于主库BINLOG的不丢失,只要主库的BINLOG不丢失,那么就算主库宕机了,我们还可以通过BINLOG把丢失的部分数据通过手工同步到从库上去。 注意:主库宕机的情况下,DBA可以通过mysqlbinlog工具手工访问主库binlog,抽取缺失的日志并同步到从

qq_38234594的博客 1004

手把手教你用OpenClaw+飞书打造论文写作AI助手(附踩坑实录)

面对几十篇文献,逐一阅读摘要都费时。我:“请提取桌面‘论文参考文献’文件夹中所有PDF的摘要,整理成表格,包含:论文标题、作者、发表年份、核心方法、主要结论。AI助手:“正在处理...已提取18篇论文摘要,汇总表格已保存到桌面‘文献摘要汇总.xlsx’。这比我自己一个个打开PDF复制粘贴快了不止100倍。OpenClaw+飞书的组合,让AI真正成为了我的“数字员工”。虽然配置过程有些曲折,但看到它在飞书里回应指令、帮我处理繁琐工作时,那种成就感无可替代。如果你也在准备论文,不妨试试这套方案。记住,

AcademicIdeas的博客 1042

别再手动查日志了!用Dify+Zabbix打造你的专属运维“嘴替”(保姆级配置流程)

本文详细介绍了如何利用Dify平台与Zabbix监控系统集成,构建智能运维对话系统,实现自然语言交互的运维管理。通过保姆级配置流程,帮助运维工程师提升查询效率、降低学习成本,打造企业级智能运维解决方案。

weixin_27298377的博客 457

java线程面试题,spring并发+JVM调优把我直接问懵了

前言 当你准备跳槽面试的时候,明明只是一份15K的工作,却问你会不会多线程,懂不懂高并发,火箭造得让你猝及不防,结果就是两个字——凉凉!而在如今的市场,什么多线程、高并发、分布式、负载均衡、集群、微服务等等等等,都可说是Java高级后端开发求职的必备技能。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EesfNyd6-1651672114268)(https://upload-images.jianshu.io/upload_images/24613101-285f958f

EDGNB123的博客 282

关于 Python PyQt5 界面运行时提示无法初始化Qt平台的解决方案

关于 Python PyQt5 界面运行时提示无法初始化Qt平台的解决方案

smart_num_1的博客 6884

2024互联网八股文天花板,1658页的Java面试突击核心手册

最后想说的是,无论你是小白菜鸟,还是技术大牛,日常都不能够落下学习这件事情。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。文中资料已整理打包存放网盘,有需要的朋友可以点击文末下方传送门,即可获得免费领取方式啦!

知识分享官 790

关于WPF PasswordBox 增加提示文案,请输入密码,亲测最快方案,改最少的代码!!!

关于WPF PasswordBox 增加提示文案,请输入密码,亲测最快方案,不需要像其他方案改任何PasswordBox的样式,直接加个texbox控件显示隐藏即可1.xaml,注意关键代码,样式之类可以不管 2.xaml.cs

鸣的博客 1544

Python控制Keysight DAQ973A/DAQ970A实现数据采集

本文介绍了如何通过编程实现Keysight DAQ973A数据采集系统的自动化温度测量。首先,通过GPIB线将PC与仪器连接,并使用热电耦测量线连接被测装置。接着,通过查阅Keysight官网提供的编程手册,获取了实现温度测量所需的SCPI指令。然后,使用pyvisa库编写代码,与仪器进行交互,发送SCPI指令并读取测量结果。代码中整合了配置和查询指令,并将测量结果转换为浮点数格式。最后,将整个流程封装为命令行工具,用户可以通过配置文件设置参数,并执行自动化测试,测试结果将保存为CSV文件。整个过程实现了温

xgh1951的博客 1889

【手把手】一文吃透Spring Boot自动配置原理,新手也能搞懂Bean加载全过程(附完整代码)

本文深入解析了Spring Boot自动配置的核心原理与实现机制。主要内容包括: 自动配置三要素: 条件注解(如@ConditionalOnClass)作为智能开关 配置类作为执行单元 @EnableAutoConfiguration触发的启动流程 详细实现原理: 通过spring.factories文件声明配置类 条件注解过滤机制 配置类加载顺序控制 实战演示: 手把手创建自定义短信Starter 实现配置属性类与自动配置类 通过spring.factories注册配置 常见问题排查: 自动配置未生效的调

民乐团扒谱机的博客 396

数据资产入表——解读100页数据资产入表解读与分析【附全文阅读】

本文档《数据资产入表:解读与分析》面向企业财务、数据管理、法务合规及高管等核心岗位,系统解析数据资产入表全流程。以"政策-实操-价值"为主线,首先解读入表政策要求,明确会计处理规范;其次详细拆解数据盘点、治理、确权、评估等实操步骤,提供行业案例参考;最后分析入表难点及后续运营策略,为企业提供从政策理解到落地执行的一站式解决方案。

cdfunlove的博客 392

2021最新大厂Java面试真题解析

Java面试指南 今天给大家分享一份【Java 面试 + Java 后端技术学习指南】:一份通向理想互联网公司的面试指南,包括 Java,技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计、分布式、数据库(MySQL、Redis)、Java 项目实战等, 新鲜出炉! 此手册内容专注 Java面试 ,这是本人花费了半年的时间总结的【Java 面试 + Java 后端技术学习指南】,目前本人已经拿到了腾讯等大厂offer,只要大家把这上面的知识点都搞明白,进入前 5 的互联网公司是绝对

m0_57700563的博客 152

ABAP CDS View 从入门到精通教程目录:ABAP CDS View 在 SAP 技术体系中的重要地位

学习 ABAP CDS View 的开发技术,体会其背后的设计理念,也就掌握了 SAP S/4HANA 底层数据模型的设计精髓。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4785

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

毕向东java基础全套视频教程,建议收藏

开头 该文档在Github上收获5K+star的Java核心神技(这参数,质量多高就不用我多说了吧)非常全面,包含基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等内容非常丰富,已经帮很多人拿下互联网一线公司的offer。 关于程序员,除了做项目来提高自身的技术之外,还有一种提升自己的专业技能就是:多!看!书! 好好吃透消化,让你面试跳槽不再心慌! 由于细节内容实在

m0_56252652的博客 485

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java程序员想跳槽进大厂!这些硬技能你会了吗?

毋庸置疑,Spring早已成为Java后端开发事实上的行业标准,无数的公司选择Spring作为基础的开发框架,大部分Java后端程序员在日常工作中也会接触到Spring,因此,如何用好 Spring,也就成为Java程序员的必修课之一。把工作或者学习过程中遇到的问题和解决方案,还有比较好的网站,总结到电脑中的笔记本中,这些东西都是见证你成长的,是属于你自己的知识库,在学习的过程中多做笔记,多做总结,习惯一旦形成,久而久之,便会印在你的脑海里,你下次再被问到这一问题时,你就可以用自己之前总结过的内容来回答。

2501_90433086的博客 1066

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java流程图中平行四边形代表什么,一文搞懂

01 前言 辛苦奋斗两个月,秋招终于圆满收官,拿到了头条、字节、菜鸟、腾讯、网易的offer,这要多亏了意外得到的这份资料文档,这么多面试全都靠它了,哈哈~~有好东西还是要分享出来给大家,一起学习呀 Java核心进阶宝典:JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,

2122

Spring Boot + MyBatis Plus + MySQL电商项目 (一):项目简介

教程目录 Spring Boot + MyBatis Plus + MySQL电商项目 (一):项目简介 Spring Boot + MyBatis Plus + MySQL电商项目 (二):系统环境搭建 Spring Boot + MyBatis Plus + MySQL电商项目 (三):搭建静态页面 Spring Boot + MyBatis Plus + MySQL电商项目 (四):前后端数据对接 Spring Boot + MyBatis Plus + MySQL电商项目 (五):用户注册 Spri

wenqi 1616

Spring Boot实战派这本书凭什么让这么多人进了阿里?这本造神之书强的令人发指

第6章 响应式编程进阶篇======================================================================第7章 Spring Boot 进阶第8章 用ORM操作 SQL数据库第9章 接口架构风格——RESTful第10章 集成安全框架,实现安全认证和授权第11章 集成Redis,实现高并发第12章 集成RabbitMQ,实现系统间的数据交换第13章 集成NoSQL 数据库,实现搜索引擎鉴于第713章的重要性,希望读者多读几遍,常言道:书读百遍,其义

2401_83703951的博客 718

收藏!AI会取代程序员工作吗?Java开发者转型大模型必看指南

对于正在迷茫择业、想转行提升,或是刚入门的程序员、编程小白来说,有一个问题几乎人人都在问:未来10年,什么领域的职业发展潜力最大?答案只有一个:人工智能(尤其是大模型方向)当下,人工智能行业正处于爆发式增长期,其中大模型相关岗位更是供不应求,薪资待遇直接拉满——字节跳动作为AI领域的头部玩家,给硕士毕业的优质AI人才(含大模型相关方向)开出的月基础工资高达5万—6万元;即便是非“人才计划”的普通应聘者,月基础工资也能稳定在4万元左右。

python12345_的博客 923

synchronized底层是怎么实现的?太香了

开头 Netty 作为当前流行的 NIO 框架,在游戏、大数据通讯,云计算、物联网等领域都有广泛的应用,大家熟知的 Dubbo,底层用的就是 Netty。尤其在高性能 RPC 方面,Netty 更是必不可少。然而,想要将 Netty 真正掌握并精通难度却不小。一些学习者可能会遇到这些问题: 多线程编程、Socket 通信、TCP/IP 协议栈等知识掌握不扎实,学习过程比较吃力; 学习了不少理论知识,但真正跟具体项目结合在一起,解决实际问题时,又感觉比较棘手; 调用过程中遇到问题,不会定位,基本靠网上搜索,

m0_57285325的博客 98

dubbo+zookeeper面试题,springcloud架构图及讲解

毕竟工作也这么久了 ,除了途虎一轮,也七七八八面试了不少大厂,像阿里、饿了么、美团、滴滴这些面试过程就不一一写在这篇文章上了。我会整理一份详细的面试过程及大家想知道的一些问题细节。

m0_61549953的博客 487
上一篇: 无论是多少级别的程序员也要学好微服务
下一篇: 如何自己设计一个定时任务分布式调度器
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值