当前位置: 首页 > news >正文

阿里P7大牛亲自教你!阿里面试100%会问到的JVM

前言

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Sentinel 具有以下特征:

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

  • 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。

  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

  • 完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

以上内容引自 Sentinel 官方介绍。在本文中,笔者将从实际应用的角度,来学习Sentinel的使用。

NameServer的部署

关于NameServer,我们之前的文章已经详细讲解过了集群化的内容,这里直接把它部署到三台机器上,作为一个高可用集群

Broker的部署

Broker的部署我们之前也有讲到过,主要使用的是4.5版本后的Dledger自动化切换主从的集群

Broker与NameServer之间的通信协议是什么呢?http、rpc还是tcp呢?

其实它们之间采用的是TCP长连接通信,也就是说Broker会跟每个NameServer建立TCP长连接,然后定时通过TCP长连接发送心跳请求过去。

访问MQ的系统(生产者和消费者)的部署

一定会有大量的系统访问RocketMQ,因为RocketMQ就是为此而生的,有些系统自己本身既是生产者又是消费者,所以这些系统的部署也要考虑进去。

对这些系统部署的考虑,其实不应该是搞MQ的部门来考虑的,如果系统本身是自己公司的,可以提出一些建议,让生产者和消费者都集群化部署,保证高可用。但如果是第三方系统,那就无法插手了,我们能做到的只有考虑第三方系统崩溃,无法与MQ正常通信的情况下,如何让MQ正常运转。

Topic是什么

Topic是mq的核心数据模型,如果直接翻译是主题的意思,但是听到主题的解释,是不是一脸懵逼,是不是瞬间想到的是手机主题,电脑主题。

所以它不能直译,它表达的就是一个数据集合的含义,集合的是同一类的数据,不同类型的数据存到不同的Topic中。

所以系统无论是要写入消息还是读取数据,最开始都是要先定义Topic的,然后再从定义的Topic中获取同类型的数据。

那么Topic是如何在Broker中存储的呢?

存储的方式其实就是分布式存储。我们在定义Topic的时候指定它里面的数据分布到多台的Broker上进行存储,这里要注意的一点是,实际上分布的对象是MasterBroker,SlaveBroker会向MasterBroker拉取数据,作为一个副本存在。而Broker在向NameServer发送心跳的时候,会把Topic存储在哪些Broker中的信息告诉NameServer。

生产者如何发送消息给Broker

前边我们聊过,发送消息前首先是定义Topic,然后发送消息的时候是要指定你要发送到哪个Topic中去的。

既然我们知道了要发送到哪个Topic中,下一步就是要定位Topic的位置,如何定位呢?就是与NameServer建立Tcp长连接,定时拉取注册信息,可以获取到这个Topic目前被分配到哪些Broker中。然后就可以根据负载均衡算法,选定一台Broker(具体的负载均衡算法后边文章再介绍)。

选定了Broker后,就可以再与Broker建立Tcp长连接,通过Tcp长连接发送消息给Broker中的Topic。

而Broker在接收到消息后,就会把消息存储到磁盘中,再往后就是SlaveBroker与MasterBroker数据同步,形成副本,保证高可用了。

整个过程就是这样的。

消费者如何从Broker上消费消息

说完了生产者发送消息的过程,我们再来聊聊消费者消费消息的过程。

其实消费者消费消息的过程和生产者是类似的,同样第一步也是定义Topic,然后从NameServer获取信息,定位到Topic所在的多个Broker,之后负载均衡定位到要访问的Broker,与Broker建立连接获取消息。

这里唯一不同的就是,再获取消息的时候是可能在MasterBroker上获取的,也可能在SlaveBroker上获取,要依据当时的情况而定。

整体架构总结

最后我们再来看一看这套架构,是可以实现完全的高可用的。

NameServer集群化部署,Broker集群化部署,还可以通过Dledger自动化切换主从,生产者消费者也是集群部署,随便挂了一台不受影响。

而且这套架构也不怕高并发,高并发下的消息可以分布到多个Broker下处理,减少系统压力。

然后我们的集群可以存储海量的消息,因为存储方式是分布式存储的。

最后,这套架构是具有可扩展性的,如果业务需求并发量增大,也是可以扩展Broker的数量以支持更高的并发和更大的存储的。

这样我们的RocketMQ的生产部署架构就算完成了。

好了,今天就说到这里,欢迎小伙伴们一起走入消息中间件的世界。

最后

分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。

请点赞后,戳这里,免费获取!

这些面试题相对应的技术点:

  • JVM
  • MySQL
  • Mybatis
  • MongoDB
  • Redis
  • Spring
  • Spring boot
  • Spring cloud
  • Kafka
  • RabbitMQ
  • Nginx

大类就是:

  • Java基础
  • 数据结构与算法
  • 并发编程
  • 数据库
  • 设计模式
  • 微服务
  • 消息中间件

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

)]

[外链图片转存中…(img-TpcxaGYK-1622524698236)]

[外链图片转存中…(img-3R1ZqGoJ-1622524698237)]

[外链图片转存中…(img-FXShrjrI-1622524698238)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-2714.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

微信小程序趋势及前景,大厂直通车!

最近看到群里看到一个女生,讲述了她从开始选择Android,经过非常努力的学习和挣扎,然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜,如果早几年入行可能结果会比现在好很多,但可惜,这就是…...

设计模式导读助记

各个设计模式的详细介绍都已经完成,但是不经常用总会忘,所以我想用 一句话 总结设计模式,思考模式的真正意图,再用 一点提示 来思考代码如何实现 写在前面 我整理的设计模式这一个系列,主要是结合了以下几本书 : 《设…...

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/3)

文章目录前言硬件准备百问网STM32F103ESP8266 01SESP8266 介绍ESP8266 01S技术规格参数软件准备下载安装 Keil μVision5Pack Installer安装 ST-Link 驱动获取RT-Thread源码下载安装 RT-Thread env 工具文章列表 RT-Thrad|STM32F103ESP8266 S01RT-Thread联网之环境搭建(1/3)RT…...

LeetCode 数值的整数次方

实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入&#xf…...

elementUI-Tree 树形控件的使用

elementUI-Tree 树形控件的使用 实现效果: 控件的官方使用说明 控件要求返回的数据结构 {"success": true,"code": 20000,"message": "成功","data": {"items": [{"id": "1394579386…...

2021java1年经验公司面试真题

1面我就省略了,主要就是看你的以前工作情况,以前工作内容能不能清晰表达,还有一些简单的java基础问题,大概20多分钟。二面就是40分钟基础,20分钟业务,10分钟个人情况。下面是二面问题 1.自我介绍 做一下自…...

Unity基础之C#核心篇笔记4:多态

Unity基础之C#核心篇笔记4:多态多态1.多态的概念2.解决的问题3.多态的实现4.总结抽象类和抽象方法1.抽象类2.抽象函数3.总结4.练习题接口1.接口的概念2. 接口的申明3.接口的使用4.接口可以继承接口5.显示实现接口6.总结7.练习题密封方法1.密封方法基本概念2.实例3.总…...

LeetCode每日一题 - 有多少小于当前数字的数字

题目&#xff1a; 给你一个数组 nums&#xff0c;对于其中每个元素 nums[i]&#xff0c;请你统计数组中比它小的所有数字的数目。 换而言之&#xff0c;对于每个 nums[i] 你必须计算出有效的 j 的数量&#xff0c;其中 j 满足 j ! i 且 nums[j] < nums[i] 。 以数组形式返回…...

用Python爬取彼岸图网图片

用Python爬取彼岸图网图片 *使用了 四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装。 #encoding utf-8 import time import requests from lxml import etree import os# http://www.netbian.com/ 爬虫 if __name__ __mai…...

第k个数(快速选择)

算法思路 快速选择&#xff1a; 1.即任意选一个数&#xff0c;将数组划分为二。 2.最终根据该数所在的位置&#xff0c;即第&#xff1f;大&#xff0c;选择第k大的数字所在区间进行划分。 时间复杂度分析&#xff0c;第一次划分n,下一次划分期望n/2&#xff0c;n/4…累加和小…...

yolov5 detect.py报错

新手求助 yolov5训练了自己的数据集后&#xff0c;test没问题&#xff0c;但是运行detect.py就报错了&#xff0c;一直找不到问题所在&#xff0c; 求大佬指点指点...

DEX 争霸战火升级,BabySwap 会否成为下一代黑马?

在 AMM机制大力推动下&#xff0c;DEX的群雄争霸比预想中来得要快且凶猛。伴随着诸如高盛等主流资本逐步认可DeFi 的意义&#xff0c;在真正的去中心化金融爆发的前夜&#xff0c;可以说谁抢占了DEX 红海的先机&#xff0c;谁就赢得了未来。 从早期以太坊的Uniswap和DoDo&…...

flutter 常用的第三方组件

引用文章链接&#xff1a; https://www.jianshu.com/p/a523e5f131b2 1、格式化日期时间组件&#xff1a;https://pub.dev/packages/date_format 2、日期选择组件&#xff1a;https://pub.dev/packages/flutter_cupertino_date_picker 3、轮播图组件&#xff1a;https://pub.…...

Android面试回忆录:帮助程序员提高核心竞争力的30条建议,真香!

**新技术层出不穷&#xff0c;去年kotlin到如今Flutter&#xff0c;技术迭代&#xff0c;你是否会变得固步自封&#xff1f;**那么看本篇文章帮你解决问题&#xff0c;让你知道怎么样学习&#xff0c;学习那些技术点才能不被时代的迭代快速淘汰&#xff01; 首先&#xff0c;先…...

2021-05-30解决centos+宝塔面板,FTP传输421 Too many connections问题错误

解决centos宝塔面板&#xff0c;FTP传输421 Too many connections”问题错误 1、首先连入服务器 在/www/server/pure-ftpd/etc下&#xff0c;找到pure-ftpd.conf 2、vim pure-ftpd.conf 没有vim的&#xff0c;用其他编辑软件也可以 3、找到 #Maximum number of sim clients wit…...

RK3399 DDR频率修改

RK3399 DDR频率修改 一、DDR当前频率获取与可调节范围 1、获取当前DDR频率、可调值、容量 cat /sys/class/devfreq/dmc/cur_freq2、查看DDR频率可调节的值 cat /sys/class/devfreq/dmc/available_frequencies3、获取DDR容量 cat /proc/meminfo二、DDR测试定频 1、因为RK3…...

javascript正则表达式常用合集

javascript正则表达式常用的合集 参考网址 {n}: n 是一个正整数&#xff0c;匹配了前面一个字符刚好出现了 n 次 {n,}: n是一个正整数&#xff0c;匹配前一个字符至少出现了n次 {n,m}: n 和 m 都是整数。匹配前面的字符至少n次&#xff0c;最多m次。如果 n 或者 m 的值是0&…...

qApp加载qss技巧

使用Qt加载qss样式&#xff0c;一般操作是读取文件&#xff0c;通过setStyleSheet设置 但是qApp只需如下&#xff1a; qApp->setStyleSheet("file:///:/test.qss");//只适用于qApp...

发现一款好用到爆的数据库工具 - DataGrip(就是耗内存)

作者&#xff1a;Atzuge cnblogs.com/zuge/p/7397255.html 最近看到一款数据库客户端工具&#xff0c;DataGrip&#xff0c;是大名鼎鼎的JetBrains公司出品的&#xff0c;就是那个出品Intellij IDEA的公司。 - 就是耗内存 DataGrip是一款数据库管理客户端工具&#xff0c;方便…...

Java 类加载器(ClassLoader)的实际使用场景有哪些?

什么是classloader classloader顾名思义&#xff0c;即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存&#xff0c;并对数据进行检验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这就是虚拟机的类加载机制。了解java的类加…...

浅谈设计模式(三)

前言 之前详细介绍了几种常用的设计模式&#xff0c;最后总结一下附上所有设计模式的类图以及六大设计原则 一、创建型 1.Factory Method&#xff08;工厂方法&#xff09; 定义&#xff1a;定义了一个创建对象的接口&#xff0c;但由子类决定要实例化的类是哪一个。工厂方法…...

Spring Cloud + Feign实现微服务负载路由

项目的启动顺序为 spring-cloud-eureka 提供注册服务&#xff1a;节点两个【resumer-eurake-9001、resumer-eurake-9002】 微服务&#xff08;提供服务&#xff09;&#xff1a;节点两个【resumer-user、resumer-user2forTest】 spring-cloud-feign调用微服务&#xff08;服务消…...

原子累加器

package com.lx.top;import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.LongAdder; import java.util.function.Consumer; import java.util.function.Supplier;/*** 测试原子累加器*/ …...

ThreadLocalRandom 是线程安全的吗?

来源&#xff1a;https://zhenbianshu.github.io 前言 最近在写一些业务代码时遇到一个需要产生随机数的场景&#xff0c;这时自然想到 jdk 包里的 Random 类。 但出于对性能的极致追求&#xff0c;就考虑使用 ThreadLocalRandom 类进行优化&#xff0c;在查看 ThreadLocalR…...

测试总结:如何做接口测试

目录 一、接口测试须知 1、接口测试了解 &#xff08;3&#xff09;Http接口的组成 &#xff08;3&#xff09;为什么要做接口测试 &#xff08;1&#xff09;接口测试常用 &#xff08;2&#xff09;接口测试完整图 &#xff08;3&#xff09;接口测试参考计划图 3、企…...

CCF 2014-09-1 相邻数对

题目链接: 2014-09-1 相邻数对. code #include <iostream> #include <algorithm> //引入sort函数using namespace std;int main() {int n;cin >> n;int* nums new int[n];for (int i 0; i < n; i)cin >> nums[i];sort(nums, nums n);int coun…...

学习前端的第十天

这几天深受鼠标双击的折磨&#xff0c;非常痛苦&#xff0c;正好趁618换个鼠标。闲聊就到这吧&#xff0c;今天说说布局方式和浏览器兼容问题。 一、宽高自适应 1、自适应介绍&#xff1a;在以往的开发过程中&#xff0c;大家发现某个区域如果宽度或者高度固定好的话&#xff…...

网络规划-连接网络

文章目录网络规划-连接网络1 连接到广域网1.1 广域网连接方式2.2 专业术语2 点到点连接(PPP)2.1 PPP身份验证协议(PAP)2.2 配置PPP身份验证3 IPv4网络地址转换(NAT)3.1 NAT术语4 VPN4.1 VPN优点4.2 站点到站点VPN(GRE)4.2.1 GRE隧道配置4.2.2 GRE隧道检验4.3 远程访问VPN4.3.1 …...

阿里Java开发手册!阿里java电话面试

前言 不知道大家有没有这样的经历&#xff0c;明明感觉自己这个技术掌握的还行&#xff0c;能写在简历里肯定是有点自信的&#xff0c;但是被面试官一问&#xff0c;就感觉啥也不是 当我从面试的大楼里出来的时候脑袋里还是昏昏沉沉的&#xff0c;你压根不知道我经历了什么&a…...

Java-ArrayList修改和删除(泛型)

import java.util.ArrayList; import java.util.List;//泛型:给集合指定具体存放的数据类型&#xff0c;只能存放自定义数据类型。加了< >的可以使用泛型。 public class Demo3 {public static void main(String[] args) {//集合中只能存放自定义数据类型&#xff0c;不能…...

NVIDIA 7th SkyHackathon(八)使用 Flask 与 Vue 开发 Web

1.页面效果 Web 采用 flaskvue 开发&#xff0c;效果图如下 2.后端 import sys import subprocess import os from PIL import Image from datetime import datetime from ASR_metrics import utils as metricsfrom werkzeug.wrappers import Request, Response from …...

【车间调度】基于模拟退火优化算法的的并行车间机器优化调度(Matlab代码实现)

目录 1 概述 2并行机调度问题的的描述 3 模拟退火法 4 基于模拟退火优化算法的的并行车间机器优化调度&#xff08;Matlab代码实现&#xff09; 4.1 运行结果 5 参考文献 6 Matlab代码 1 概述 并行机调度&#xff08;也称并行多机调度, Parallel MachinesScheduling Prob…...

Spark scala编程练习题——统计百分比

接上文&#xff1a; https://blog.csdn.net/qq_38151907/article/details/128110112?spm1001.2014.3001.5501 中的题目大纲 最优Rank频率&#xff0c;结果写入本地/root/retrievelog/output/rank/part-00000,格式见步骤说明。 对于用户搜索请求&#xff0c;某URL在返回结果中…...

java毕业设计点餐平台网站mybatis+源码+调试部署+系统+数据库+lw

java毕业设计点餐平台网站mybatis源码调试部署系统数据库lw java毕业设计点餐平台网站mybatis源码调试部署系统数据库lw本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse 前端技术&#xff1a;Layui、…...

JVM运行时数据 堆

JVM运行时数据 堆快速调试堆参数设置堆分类运行流程Minor GC、Major GC与Full GC分代思想内存分配策略TLAB堆空间参数设置快速调试 一个JVM实例只存在一个堆内存&#xff0c;对也是Java内存管理的核心区域Java 堆区在Jvm启动的时候创建&#xff0c;其空间大小也就确定了。是JV…...

[Spring]第五篇:AOP面向切面编程概念

AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现 日志处理,权限控制,性能检测,事务控制等 AOP实现的原理就是动态代理,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理 为Dao层所有的add方法添加一个性能记录功…...

IB物理的费曼图怎么考?

费曼图是用来描述基本粒子间相互作用的图形化表示&#xff0c;由诺贝尔物理学奖得主、著名物理学家理查德费曼&#xff08;Richard Feynman&#xff09;提出&#xff0c;十分清晰直观。虽然真正的费曼图可以用来做更深奥的数学计算&#xff0c;但是在IB物理中&#xff0c;考纲要…...

惯性思维多可怕

一直以来用小米的Mix2手机&#xff0c;也经常用它听音乐。 最近买了荣耀30S&#xff0c;昨晚发现那个铁三角耳机插到华为手机上&#xff0c;竟然没有声音&#xff0c;反复操作都不行。 然后就问客服&#xff0c;查售后地址。下午&#xff0c;来上海三周了第一次开车出门。 6公里…...

转变思考方向,由结果推导原因,找出惯性思维所忽略的地方

标题是本文想阐述的观点&#xff0c;所以有点长。 首先我们来看一个问题&#xff1a; 从前有个农夫&#xff0c;死时留下几头牛&#xff0c;在他的遗书中写道&#xff1a;妻子得全部牛的半数再加上半头&#xff1b;长子得剩下的牛的半数再加半头&#xff0c;正好是妻子的一半…...

做技术的一个惯性思维

技术人员在跟市场人员交流时容易犯的一个毛病就是当场总喜欢从技术实现的角度看待问题。 市场人员可不懂技术&#xff0c;他们往往都是从业务的角度与技术人员沟通&#xff0c;那么技术人员可以也从业务的角度跟市场人员沟通&#xff0c;这样就在一个平面上了&#xff0c;否则…...

技术人请跳出惯性思维

经过10年的技术之路&#xff0c;思维也渐渐的成熟起来&#xff0c;从业以来在技术水平慢慢提升的同时&#xff0c;思维也较之以前有比较大的提升。从一个什么都不懂的小白&#xff0c;成长为可以做一些事情、做一些工作的员工。 文章开头我们先把一个概念说明&#xff0c;无论在…...

不要被惯性思维骗了,AngularJS真的那么完美?

先不说AngularJS优略&#xff0c;至少大部分前端工作者还是对AngularJS有着狂热的推崇的。因为它使开发变得简单。那么问题来了&#xff0c;为什么很多知名网站都没有用到Angular呢&#xff1f; 下面我从几点说起&#xff1a; 1、最糟糕的SEO友好性 这一点无疑是非常致命的&a…...

突破SEO惯性思维

突破SEO惯性思维&#xff1a;主关键词并不是非得放首页针对一个网站实施SEO&#xff0c;其中一个重要的工作就是确定关键词及关键词的分布&#xff0c;通常&#xff0c;我们会将主关键词放置于主页之上&#xff0c;其他次关键词分布于各个分页之中。这本身是无可厚非的&#xf…...

使用enumerate()函数时,惯性思维带来的错误

防止enumerate&#xff08;&#xff09;循环后出错enumerate和for循环当遍历列表时有删除操作时dataframe的索引enumerate和for循环 enumerate和for循环很像&#xff0c;for循环是遍历一个列表里所有的元素&#xff0c;enumerate&#xff08;&#xff09;对于一个可迭代的&…...

思维的惯性

我们经常说要破除思维定势。避免思维惯性。这个想法是非常对的。但事实上是非常难做到的&#xff0c;由于大脑研究发现。人在使用眼睛看东西时。并非把全部的信息都进行处理&#xff0c;仅仅有大约10%的信息是新的&#xff0c;其它的信息都是补全的。人一方面须要这样的信息“抽…...

所有的自卑,可能都源于这个惯性思维

“为什么我再优秀&#xff0c;却还是不自信&#xff1f;” 优不优秀&#xff0c;和自不自卑是两回事 生活中有一定比例的人存在这样的困惑&#xff0c;从各方面看&#xff0c;我似乎已经做的不错了&#xff0c;似乎很优秀了&#xff0c;为什么我还是不那么自信&#xff0c;甚至…...

hdu1010—我的惯性思维

把墙的标记‘X’惯性的写成了‘#’&#xff0c;所以一直调不出来&#xff1b;之后看到是‘X’后&#xff0c;我发现我就是一逗比! 这题剪枝有点多&#xff1a; 一&#xff1a;最少要走的步数>时间&#xff1b; 二&#xff1a;奇偶剪枝——只可能为偶数&#xff1b; 三&a…...

惯性思维的风险点

结果打印false&#xff0c;s和s2是2个不同的对象引用&#xff0c;内存地址不一样&#xff0c;是比较是否为同一内存地址引用因为long用习惯了&#xff0c;所以很多时候写代码不经意间就是用了Long&#xff0c;但是比较是否相等的时候还是习惯性的时候用 这样写大家都能明白是fa…...

Cocoa惯性思维调试一例

大熊猫猪侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 人总有惯性思维,在编程调试里也不例外.你总以为错误是显然的那一个,可是结果却不是. 在stroyboard中建立2个UIView控制器,如果按下第一个控制其中…...

要学会打破惯性思维

今天遇到一道题&#xff0c;编写递归算法&#xff0c;从大到小输出给定二叉排序树中所有关键字不小于x的数据元素。因为之前知道检测一棵二叉树是否为排序二叉树的方法是对它进行中序遍历&#xff0c;而课本默认为先遍历左子树&#xff0c;再遍历根结点&#xff0c;而后遍历右子…...