十年前的阿里大牛困惑:我们为什么感觉不到淘宝应用升级时的停机?

基于Nginx实现Java项目无缝升级 文章目标 本文主要介绍Nginx安装配置,代理服务器搭建等基础知识,然后通过代理方式,实现Java项目无缝升级,提高系统可用性。   Nginx安装配置 安装 我的环境是CentOS6,请读者根据自身环境选择相应的安装方式,以下内容参考自:http://nginx.org/en/docs wget http://nginx.org/packages/centos/6/noarch/... 阅读详情

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等

十几年前,我参加阿里巴巴面试的时候,觉得阿里巴巴这样的网站 Web 应用开发简直小菜,因为我之前是做类似 Tomcat 这样的 Web 容器开发的,所以面试的时候信心满满。

确实,面试官前面的问题都是关于数据结构、操作系统、设计模式的,也就是我们这个专栏模块一和模块二的内容。我感觉自己回答得还不错,所以更加信心满满。这时候,面试官忽然提了一个问题:

我们的 Web 程序每个星期都会发布一个新版本,但是程序要求 7*24 小时可用,也就是说,启动新版本程序替换老程序,进行程序升级的时候,程序还在对外提供服务,用户没有感觉到停机,我们是怎么做到的呢?

应用程序升级必须要用新版本的程序包替代老版本的程序包,并重新启动程序,这段时间程序是不能对外提供服务的,用户请求一定会失败。但是阿里巴巴让这段时间的用户请求依然是成功的。打个比方,就是要在飞机飞行过程中更换发动机,还不能让乘客感觉到。这个问题当时完全不在我的知识范围之内,但是我知道这个需求场景是真实存在的,而且确实应该是可以做到的,可是我完全不知道是怎么做到的。

面试官看我瞠目结舌,笑着问我,想不想知道答案。我立刻回答说想知道,结果面试官跟我说,加入我们团队你就知道了。

这其实是一个关于互联网应用可用性的问题。我们知道,Web 应用在各种情况下都有可能不可访问,也就是不可用。各种硬件故障,比如应用服务器及数据库宕机、网络交换机宕机、磁盘损坏、网卡松掉等等。还有各种软件故障,程序 Bug 什么的。即使没有 Bug,程序要升级,必须要关闭进程重新启动,这段时间应用也是不可用的;此外,还有外部环境引发的不可用,比如促销引来大量用户访问,导致系统并发压力太大而崩溃,以及,黑客攻击、机房火灾、挖掘机挖断光缆,各种情况导致的应用不可用。

而互联网的高可用是说,在上面各种情况下,应用都要是可用的,用户都能够正常访问系统,完成业务处理。

这似乎是不可能的任务。

高可用的度量

首先我们看下,什么叫做应用的高可用,以及可用性如何度量。业界通常用多少个 9 来说明互联网应用的可用性。比如说淘宝的可用性是 4 个 9,就是说淘宝的服务 99.99% 可用。这句话的意思是,淘宝的服务要保证在所有的运行时间里只有 0.01% 不可用,也就是说一年大概有 53 分钟不可用。这个 99.99% 就叫做系统的可用性指标,这个值的计算公式是:

一般说来,两个 9 表示系统基本可用,年度不可用时间小于 88 小时;3 个 9 是较高可用,年度不可用时间小于 9 个小时;4 个 9 是具有自动恢复能力的高可用,年度不可用时间小于 53 分钟;5 个 9 指极高的可用性,年度不可用时间小于 5 分钟。我们熟悉的互联网产品的可用性大多是 4 个 9。淘宝、百度、微信,差不多都是这样。

下面我会讨论各种高可用技术方案。但不管是哪种方案,实现高可用需要投入的技术和设备成本都非常高。因此可用性并不是越高越好,而是要根据产品策略寻找高可用投入产出的最佳平衡点,像支付宝这样的金融产品就需要更高的可用性,而微博的可用性要求就会相对低一些。相对支付宝的可用性超过 99.99%,Twitter 的可用性只有 98%。

可用性指标是对系统整体可用性的一个度量。在互联网企业中,为了更好地管理系统的可用性,界定好系统故障以后的责任,通常会用故障分进行管理。一般过程是,根据系统可用性指标换算成一个故障分,这个故障分是整个系统的故障分,比如 10 万分,然后根据各自团队各个产品各个职能角色承担的责任的不同,把故障分下发给每个团队,直到每个人,也就是说每个工程师在年初的时候就会收到一个预计的故障分。然后每一次系统出现可用性故障间小于 53 分钟;5 个 9 指极高的可用性,年度不可用时间小于 5 分钟。我们熟悉的互联网产品的可用性大多是 4 个 9。淘宝、百度、微信,差不多都是这样。

下面我会讨论各种高可用技术方案。但不管是哪种方案,实现高可用需要投入的技术和设备成本都非常高。因此可用性并不是越高越好,而是要根据产品策略寻找高可用投入产出的最佳平衡点,像支付宝这样的金融产品就需要更高的可用性,而微博的可用性要求就会相对低一些。相对支付宝的可用性超过 99.99%,Twitter 的可用性只有 98%。

可用性指标是对系统整体可用性的一个度量。在互联网企业中,为了更好地管理系统的可用性,界定好系统故障以后的责任,通常会用故障分进行管理。一般过程是,根据系统可用性指标换算成一个故障分,这个故障分是整个系统的故障分,比如 10 万分,然后根据各自团队各个产品各个职能角色承担的责任的不同,把故障分下发给每个团队,直到每个人,也就是说每个工程师在年初的时候就会收到一个预计的故障分。然后每一次系统出现可用性故障的时候,都会进行故障考核,划定到具体的团队和责任人以后,会扣除他的故障分。如果到了年底的时候,如果一个工程师的故障分为负分,那么很有可能会影响他的绩效考核。

故障分=故障时间*故障权重

高可用的架构

系统的高可用架构就是要在上述各种故障情况下,保证系统依然可以提供服务,具体包含以下几种架构方案。我们已经在前面几篇架构专栏中提到过这些架构方案,这里我们从高可用
的视角重新审视以下这些架构是如何实现高可用的。

冗余备份

既然各种服务器故障是不可避免的,那么架构设计上就要保证,当服务器故障的时候,系统依然可以访问。具体上就是要实现服务器的冗余备份。

冗余备份是说,提供同一服务的服务器要存在冗余,即任何服务都不能只有一台服务器,服务器之间要互相进行备份,任何一台服务器出现故障的时候,请求可以发送到备份的服务器去处理。这样,即使某台服务器失效,在用户看来,系统依然是可用的。

我在负载均衡架构这篇文章中讲了通过负载均衡服务器,将多台应用服务器构成一个集群共同对外提供服务,这样可以利用多台应用服务器的计算资源,满足高并发的用户访问请求。事实上,负载均衡还可以实现系统的高可用。

负载均衡服务器通过心跳检测发现集群中某台应用服务器失效,然后负载均衡服务器就不将请求分发给这台服务器,对用户而言,也就感觉不到有服务器失效,系统依然可用。

回到我们开头的问题,阿里巴巴就是用这种方法实现的。应用程序升级的时候,停止应用进程,但是不影响用户访问。因为应用程序部署在多台服务器上,应用程序升级的时候,每次只 STOP 一台或者一部分服务器,在这些机器上进行程序升级,这个时候,集群中还有其他服务器在提供服务器,因此用户感觉不到服务器已经停机了。

此外我在数据存储架构这篇文章中提到的数据库主主复制,也是一种冗余备份。这个时候,不只是数据库系统 RDBMS 互相进行冗余备份,数据库里的数据也要进行冗余备份,一份数据存储在多台服务器里,保证当任何一台服务器失效,数据库服务依然可以使用。

失败隔离

保证系统高可用的另一个策略是失败隔离,将失败限制在一个较小的范围之内,使故障影响范围不扩大。具体实现失败隔离的主要架构技术是消息队列。

一方面,消息的生产者和消费者通过消息队列进行隔离。如果消费者出现故障的时候,生产者可以继续向消息队列发送消息,而不会感知到消费者的故障,等消费者恢复正常以后再去从消息队列中消费消息,所以从用户处理的视角看,系统一直是可用的。

发送邮件消费者出现故障,不会影响生产者应用的运行,也不会影响发送短信等其他消费者正常的运行。

另一方面,由于分布式消息队列具有削峰填谷的作用,所以在高并发的时候,消息的生产者可以将消息缓冲在分布式消息队列中,消费者可以慢慢地从消息队列中去处理,而不会将瞬时的高并发负载压力直接施加到整个系统上,导致系统崩溃。也就是将压力隔离开来,使消息生产者的访问压力不会直接传递到消息的消费者,这样可以提高数据库等对压力比较敏感的服务的可用性。

同时,消息队列还使得程序解耦,将程序的调用和依赖隔离开来,我们知道,低耦合的程序更加易于维护,也可以减少程序出现 Bug 的几率。

限流降级

限流和降级也是保护系统高可用的一种手段。在高并发场景下,如果系统的访问量超过了系统的承受能力,可以通过限流对系统进行保护。限流是指对进入系统的用户请求进行流量限制,如果访问量超过了系统的最大处理能力,就会丢弃一部分的用户请求,保证整个系统可用,保证大部分用户是可以访问系统的。这样虽然有一部分用户的请求被丢弃,产生了部分不可用,但还是好过整个系统崩溃,所有的用户都不可用要好。

降级是保护系统的另一种手段。有一些系统功能是非核心的,但是它也给系统产生了非常大的压力,比如说在电商系统中有确认收货这个功能,即便我们不去确认收货,系统也会超时自动确认收货。

但实际上确认收货这个操作是一个非常重的操作,因为它会对数据库产生很大的压力:它要进行更改订单状态,完成支付确认,并进行评价等一系列操作。如果在系统高并发的时候去完成这些操作,那么会对系统雪上加霜,使系统的处理能力更加恶化。

解决办法就是在系统高并发的时候,比如说像淘宝双 11 的时候,当天可能整天系统都处于一种极限的高并发访问压力之下,这时候就可以将确认收货、评价这些非核心的功能关闭,将宝贵的系统资源留下来,给正在购物的人,让他们去完成交易。

异地多活

我们前面提到的各种高可用策略,都还是针对一个数据中心内的系统架构,针对服务器级别的软硬件故障而言的。但如果整个数据中心都不可用,比如说数据中心所在城市遭遇了地震,机房遭遇了火灾或者停电,这样的话,不管我们前面的设计和系统多么的高可用,系统依然是不可用的。

为了解决这个问题,同时也为了提高系统的处理能力和改善用户体验,很多大型互联网应用都采用了异地多活的多机房架构策略,也就是说将数据中心分布在多个不同地点的机房里,这些机房都可以对外提供服务,用户可以连接任何一个机房进行访问,这样每个机房都可以提供完整的系统服务,即使某一个机房不可使用,系统也不会宕机,依然保持可用。

异地多活的架构考虑的重点就是,用户请求如何分发到不同的机房去。这个主要可以在域名解析的时候完成,也就是用户进行域名解析的时候,会根据就近原则或者其他一些策略,完成用户请求的分发。另一个至关重要的技术点是,因为是多个机房都可以独立对外提供服务,所以也就意味着每个机房都要有完整的数据记录。用户在任何一个机房完成的数据操作,都必须同步传输给其他的机房,进行数据实时同步。

数据库实时同步最需要关注的就是数据冲突问题。同一条数据,同时在两个数据中心被修改了,该如何解决?为了解决这种数据冲突的问题,某些容易引起数据冲突的服务采用类似MySQL 的主主模式,也就是说多个机房在某个时刻是有一个主机房的,某些请求只能到达主机房才能被处理,其他的机房不处理这一类请求,以此来避免关键数据的冲突。

总结

除了以上的高可用架构方案,还有一些高可用的运维方案:通过自动化测试减少系统的Bug;通过自动化监控尽早发现系统的故障;通过预发布验证发现测试环境无法发现的Bug;灰度发布降低软件错误带来的影响以及评估软件版本升级带来的业务影响等等。

面试官:讲一下什么是负载均衡,什么是轮询策略、随机策略、哈希策略 本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等 什么是负载均衡? 先举个例子吧。以超市收银为例,假设现在只有一个窗口、一个收银员: 一般情况下,收银员平均 2 分钟服务一位顾客,10 分钟可以服务 5 位顾客; 到周末高峰期时,收银员加快收银,平均 1 分钟服务一位顾客,10 分钟最多服务 10 位顾客,也就是说一个顾客最多等待 10 分钟; 逢年过节,顾客数量激增,一下增加到 30 位顾客,如果仍然只有一个窗口和一个收银员,那么所有顾客就只能排队等候了,一个顾客最多需要等待. 阅读详情

相关推荐

阿里架构师一文详解微内核架构,原来微内核这么简单

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等 微内核架构(Microkernel Architecture),也被称为插件化架构(Plug-inArchitecture),是一种面向功能进行拆分的可扩展性架构,通常用于实现基于产品(原文为 product-based,指存在多个版本、需要下载安装才能使用,与 web-based 相对应)的应用。例如 Eclipse 这类 IDE 软件、UNIX 这类操作系统、淘宝 App 这类客户端软件等,也有一些企业将自己的业务系统设计成..

Java_Cappuccino的博客 2227

云服务器开发与SSH

通俗解释:你现在为了解决“自己电脑没显卡”无法训练,但是需要一台高性能计算机帮助你给你提供条件进行训练。这时候,你可以去云服务器提供商租借一台配置了顶级 RTX 4090 显卡的电脑。云服务器,就是开在网线另一端的“超级网吧”。对你的帮助省钱又高效:买一台带 4090 显卡的台式机至少需要一两万人民币,而实验室又没有。现在你只需要在刚才那个网页上点一下“预约”,花个几块钱,就能按小时租用这台顶级电脑。环境现成。

weixin_71849365的博客 377

面试官:请比较一下SpringCloud与Dubbo

一、Dubbo 1. Dubbo简介 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 现已发展成为Apache的顶级孵化开源项目,详见官网: 2. Dub...

Java_Cappuccino的博客 1674

51c大模型~合集110

为了解决这一问题,在稠密化过程中,我们对容易引起退化和梯度集中的具有极端延展率的高斯面片进行了筛选,并对其增殖过程进行了限制,从而在不牺牲性能的情况下有效稳定了训练过程,保障了优化过程的顺利进行。大规模场景的重建往往还意味着显著的训练开销,要重建 1.97 平方千米的区域会产生接近两千万的高斯点,这意味着 4.6G 的存储以及 31.5G 的显存开销,以及超过三小时的训练时长。站在 AI 研究者的角度,得到了《苦涩的教训》,意味着在总结教训的过程中明确了什么是「更好」的。第二类则瞄准了相对复杂的问题。

whaosoft~aiotの开发板商城 2603

【审计专栏】【法律领域】【社会科学】 第五十六篇 企业管理层互动形态分析01 AI分析

战略官试图塑造公司“战略现实”S_s(如“未来在于AI”),业务总裁固守“运营现实”S_o(如“现金为王”)。

weixin_49199313的博客 503

【企业管理】【管理科学】企业全岗位综合运营与组织知识矩阵体系15 企业管理基本框架(2)

人性维度自私利他合作竞争诚实欺骗忠诚背叛信任怀疑贪婪恐惧懒惰勤奋创新保守自私包含互斥弱依赖强依赖互斥强依赖互斥强依赖互斥强依赖包含强依赖强依赖互斥弱依赖强依赖利他互斥包含强依赖互斥强依赖互斥强依赖互斥强依赖互斥互斥互斥互斥弱依赖弱依赖弱依赖合作弱依赖强依赖包含互斥强依赖互斥强依赖互斥强依赖互斥弱依赖互斥互斥强依赖强依赖弱依赖竞争强依赖互斥互斥包含弱依赖强依赖互斥强依赖互斥强依赖强依赖强依赖互斥强依赖强依赖弱依赖诚实互斥强依赖强依赖弱依赖包含互斥强依赖互斥强依赖互斥互斥互斥互斥强依赖强依赖弱依赖欺骗强依赖互斥

weixin_49199313的博客 1066

3.Linux基础开发⼯具【由浅入深-Linux】

在 Windows 环境中,我们习惯了双击 或 文件并一路点击“下一步”来安装软件。但在 Linux 的世界里,软件的分发和安装理念有着本质的不同。Linux 强调权限控制、模块化和依赖管理。为了帮您构建完整的 Linux 系统管理知识体系,我们可以将 Linux 下安装软件的方式归纳为五大主流阵营。这是 Linux 下最正统、也是日常使用频率最高的方式。它又细分为“在线仓库安装”和“本地包安装”两种场景。1. 在线仓库安装(如同手机自带的 App Store) 操作系统维护着一个庞大的软件云端仓库。通

插花弄玉的博客 740

汇川PLC用户程序结构详解:如何像搭积木一样配置多任务?附EtherCAT最佳实践

本文深入解析汇川PLC用户程序结构,阐述如何像搭积木一样,通过POU、FB、FC等模块化组件高效配置多任务。文章重点结合EtherCAT通讯场景,分享了任务周期、优先级设置的最佳实践与关键避坑指南,帮助工程师构建稳定、高效的运动控制系统。

weixin_29184075的博客 541

纯干货丨18个软件开发常见问题及解决策略,你有遇到吗?

本文转载自:纯干货丨18个软件开发常见问题及解决策略,你有遇到吗? No.1 每次看这些架构的思想方法的时候,总是和实际的应用没能很好的结合起来,原因是不是架构设计的实践不够?或者是对各种实现的分析和思考太少? 我觉得不仅要有架构实践,还要有不同场景的实践。 举个例子来说,你平时做企业应用架构,没什么流量,没多少数据,复杂的地方都在业务逻辑,这时候你去看那些讲大数据、讲高并发的文章,很难带入到场景去。 还有就是一些架构,不自己搭一遍是很难了解其中的优缺点的,这也是另一个原因。 可以考虑有机会自己尝试,把看

Java_Cappuccino的博客 4997

Astah 9.0升级步骤(Widnows/Mac OS)

Astah Professional是一款全新的轻量级UML建模工具。软件集思维导图和UML建模于一体,采用100%纯JAVA构建, 兼容性强,不仅能够实现分布式建模、项目合并,还能够实现和其它建模工具的交互。

tequiero777的博客 2824

URP Shader编程之自定义后处理单pass渲染(URP 14.x)

❌ 不要在里拿✅ 只在里拿RendererFeature 生命周期RTHandle 设计Blitter 的真实语义Shader 输入来源。

qq1342753906的博客 608

阿里架构师分享丨Java架构设计的重点知识和学习路径(建议收藏)

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等 学习架构呢,要掌握的东西有很多,你是不是开始担心自己一辈子都学不完呢?其实,我们也不需要一下子铺开学习所有的架构技能,重要的是把控好学习的节奏,在适当的时间学习适当的内容,我们可以结合实际工作,一步步地成长。所以今天这一讲,我想给你提供一些架构学习的重点方向和路径建议。 架构原则汇总 在技术架构篇,我针对系统的高可用、高性能、可伸缩和低成本,给你介绍了很多的架构设计原则,不同的原则对应着不同的目标,这里我把这些架构原则和目标汇总成.

Java_Cappuccino的博客 2202

机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾

f作者: 寒小阳 &&龙心尘 时间:2015年10月。 出处: 声明:版权所有,转载请注明出处,谢谢。手把手机器学习之逻辑回归应用——Kaggle泰坦尼克之灾1.引言先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非常简单: 写完前两篇逻辑回归的介绍和各个角度理解之后,小伙伴们纷纷表示『好像很高级的样纸,

寒小阳 43万+

迟来的四月java面经分享,七面收割五个offer,大厂也不过如此!

都说金三银四是找工作的最佳时节,由于本人的个人职业规划跟目前工作内容不太相符(具体原因就不透露了,领导平时也要来这里逛,哈哈),四月份挑选了10多家公司投递简历(公司规模从几十人到上万人都有),参加了7家公司的电话面试,收获了5个offer,也还算不错。下面就分享一下面试过程中一些基础的,又最常见的问题。不啰嗦了,直接看题。 1. synchronized你用过吗?synchronized和Loc...

Java_Cappuccino的博客 2045

不用加速器!Google Earth Pro登录失败自救手册:从服务器连接到地图加载的完整排错流程

本文详细解析了Google Earth Pro登录失败的常见问题及解决方案,包括服务器连接失败、地图加载异常等。通过基础排查、内置修复工具使用和高级配置调整,帮助用户无需加速器即可解决启动问题、黑屏和转圈圈等困扰,提升软件使用体验。

weixin_29227425的博客 485

西电2023秋季机器学习复习提纲

西电2023秋季机器学习复习提纲,希望对学弟学妹有帮助

weixin_62083045的博客 5656

java开发者必知必会的50个Redis知识点,面试/学习都无所畏惧

Redis作为目前的主流NoSql数据库,不会是不可能的,在面试中也是非常高频的,一定不能在这个环节丢分,不管是学习,还是面试,以下知识点,都有必要掌握。 1.Redis是什么? Redis是一个开放源代码(BSD许可)的内存中数据结构存储,可用作数据库,缓存和消息代理,是一个基于键值对的NoSQl数据库。 2.Redis特性? 速度快 基于键值对的数据结构服务器 丰富的功能、丰富的数据结构 简单稳定 客户端语言多 持久化 主从复制 高可以 & 分布式 3.Redis合适的应用场景? 缓存 排

Java_Cappuccino的博客 1204

【unity知识】最新的虚拟相机Cinemachine3简单使用介绍

本文介绍了Unity中Cinemachine 3虚拟相机系统的使用方法。相比旧版本,新版功能更强大且参数分类更直观。文章详细讲解了摄像机镜头参数、旋转控制(包括None、目标跟随、样条线推拉、旋转追随等6种模式)和位置控制(跟随、样条轨道、硬锁定等5种模式)。重点演示了样条轨道摄像机的创建与配置,以及如何实现第一人称和第三人称视角。通过丰富的GIF图示,展示了各种模式的运行效果,帮助用户快速掌握Cinemachine 3的核心功能。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 866

程序员职场小技巧:每天工作那么多事,如何安排事务的优先级?

最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHub 我们在日常工作中,总会这样感慨:事情,是干不完的。既然干不完,那我们就要分清轻重缓急,哪个重要,哪个不重要,给它们划分一个优先级,这样不至于让自己手忙脚乱。 能给手头的事情排上正确的优先级,是一项很重要的工作能力。 当然,我们在生活和学习中,事情也可能不少。但是和工作中的优先级相比,生活和学习里的事情是我们自己的事情,只要安排得让我们自己满意就可以了。在工作中,事情的优先级的标准,是要让公司受益,让老板满意,让

Java_Cappuccino的博客 1161

强化学习:在智能交通系统中的应用

作者:禅与计算机程序设计艺术 这篇文章将探索如何利用强化学习(RL)这一强大的机器学习方法,在智能交通系统中实现自动驾驶、优化路线规划和提高道路安全等方面的突破。RL通过让智能体与环境互动并从这些互动中学习,从而解决复杂的决策过程问题,这正是现代智能交通系统所需要的。 背景介绍 随着城市化进程的加速,交通拥堵、能源消耗和交通事

AI天才研究院 1119

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

还搞不清楚JVM是怎么处理异常的?这水平,跳槽都没人要

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等 文章目录异常的基本概念Java虚拟机是如何捕获异常的?Java 7的Supressed异常以及语法糖总结与实践 众所周知,异常处理的两大组成要素是抛出异常和捕获异常。这两大要素共同实现程序控制流的非正常转移。 抛出异常可分为显式和隐式两种。显式抛异常的主体是应用程序,它指的是在程序中使用“throw”关键字,手动将异常实例抛出。 隐式抛异常的主体则是 Java 虚拟机,它指的是 Java 虚拟机在执行过程中,碰到无法继续执行的异常.

Java_Cappuccino的博客 1049

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

不用怀疑!这就是把Java.I/O流讲解的最清楚的一篇文章

最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请访问GitHub 文章目录简单梳理理解File类简单梳理File操作递归遍历文件文件流:数据流的读写都是基于文件的操作FileInputStream:字节输入流FileOutputStream:字节输出流复制文件到指定位置FileReader:字符输入流FileWriter:字符输出流复制文件到指定位置(字符流只适合操作内容是字符文件)缓冲流:数据流的读写都是基于内存的操作BufferedInputStream:缓冲字节输入流Bu

Java_Cappuccino的博客 947

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

详解Linux系统安全:多人共用服务器,如何防止别人干“坏事”?

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等 本文就讨论一下 Linux 系统和应用安全。我们知道,在开发一个应用的过程中,需要涉及代码、操作系统、网络和数据库等多个方面。所以,只是了解代码安全肯定是不够的,我们还需要了解常见的基础环境和工具中的安全机制,学会通过正确地配置这些安全机制,来提升安全保障。 谈到 Linux,我相信你每天都在使用 Linux 进行各种开发和运维操作。但是,大多数情况下,公司不会给每一个员工分配专有的 Linux 服务器,而是多个开发和运维共用一台.

Java_Cappuccino的博客 928

美团 MySQL 数据库巡检系统的设计与应用

说明: 作者:王琦 来源:美团技术团队 最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请访问GitHub 我们生活中随处可见各种巡检系统,比如电力巡检、消防检查等,正是这些巡检工作,我们才能在稳定的环境下进行工作、生活。巡检对于数据库或者其他 IT 系统来说也同样至关重要,特别是在降低风险、提高服务稳定性方面起到了非常关键作用。 一、背景 为了保障数据库的稳定运行,以下核心功能组件必不可少: 其中,数据库巡检作为运维保障体系最重要的环节之一,能够帮助我们发现数据库存在的.

Java_Cappuccino的博客 924

面试字节跳动java岗被算法吊打,60天苦修这些笔记,侥幸收获offer

想要通关大厂面试,千万别让数据结构和算法拖了后腿 很多大公司,比如 BAT、Google、Facebook,面试的时候都喜欢考算法、让人现场写代 码。有些人虽然技术不错,但每次去面试都会“跪”在算法上,很是可惜。那你有没有想 过,为什么这些大公司都喜欢考算法呢? 这里给大家提三个问题: 业务开发工程师,你真的愿意做一辈子 CRUD boy 吗? 基础架构研发工程师,写出达到开源水平的框架才是你...

Java_Cappuccino的博客 860

Java程序员想要成功面试?请先要弄懂面试过程

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等 面试看能力,上场之前能够了解全局,熟悉细节,才能更有针对性地做足准备,做到心中有数。如果你已经参加过很多次面试了,请想一想,你真的清楚整个招聘过程吗?在你知道的那些环节背后,有什么人在主导,目的是什么,要注意什么,该做什么,不该做什么,以及有什么风险,这些问题你清不清楚呢? 今天,我从这些年的经验出发,从一个招聘职位出现,到招聘结束,给你讲讲整个过程都发生了什么、要注意什么。希望你透过面试官的视角,增加认知、充分准备、减少失误,为.

Java_Cappuccino的博客 803
上一篇: Java程序员面试必备的网络编程基本网络概念
下一篇: 面试官:讲一下什么是负载均衡,什么是轮询策略、随机策略、哈希策略
Java_Cappuccino
博客等级 码龄7年 17粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值