ARTS挑战打卡第十周

2023-11-11

Algorithm-一周至少一道算法题

Review-阅读并点评至少一篇英文技术文章

Tip-学习至少一个技术技巧,总结和归纳在日常工作中所遇到的知识点

Share-分享一篇有观点和思考的技术文章

01-Algorthm

   ———————   

https://leetcode.com/problems/convert-bst-to-greater-tree

https://leetcode.com/problems/binary-search-tree-to-greater-sum-tree

这两题的解法是一样的,题目要将除了最大节点外的其他节点,都加上比它大的的节点的和,因此需要找到最大的那个节点,然后往前回溯,逐渐叠加和,用DFS来解决这道题。

DFS,深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被访问为止。

02-Review

——————

https://www.mrlacey.com/2020/07/youve-only-added-two-lines-why-did-that.html?m=1

”你只写了两行代码,为什么要两天?”

大概有点类似于小时候看到的“只画了一条线,收10000元,画线收一元,知道在哪里画收9999元。”的故事。有些事情看起来简单,实际上背后需要花很多时间去论证是否正确。

有时候,修复一个bug,写代码可能真的只需要2行,但是要做的事情有:

  • 梳理原逻辑

  • 找到问题的根本原因

  • 是否有其他方式能复现该场景

  • 梳理影响范围

  • 回归影响范围

以上这些步骤,真的需要很长的时间,甚至而且有时候要修复的bug是自己不知道的模块,不知道新加的改动是否会产生新的bug,所以需要很仔细地处理。

解决bug不可怕,多次解决重复的一个bug才可怕,尽量做到每一次都能从更根源上解决问题。

03-Tip

——————

为什么程序计数器、虚拟机栈和本地方法栈是线程私有的呢?

程序计数器主要有下面两个作用:

1、字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。

2、在多线程的情况下,用于记录当前线程执行的位置

程序计数器私有主要是为了线程切换后能恢复到正确的执行位置。

为什么虚拟机栈和本地方法栈为什么是线程私有的?

虚拟机栈:由一个个栈帧组成,每个栈帧包含局部变量表(主要存放了编译器可知的各种数据类型)、操作数栈、常量池引用、动态链接、方法出口等信息。

本地方法栈:与虚拟机栈类似,包含的数据一致,区别在于,虚拟机栈是用于虚拟机执行的Java方法;本地方法栈是用于虚拟机执行的Native方法。

如果局部变量被其他线程访问到,会出现数据污染,为了保证线程中的局部变量不被别的线程访问到,虚拟机栈和本地方法栈是线程私有的。

简单介绍堆和方法区

堆是Java虚拟机所管理的内存中最大的一块,堆是所有线程共享的一块内存区域,在虚拟机启动时创建。堆所存在的内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。

Java 堆是垃圾收集器管理的主要区域,因此也被称作GC堆(Garbage Collected Heap)。

方法区与Java堆一样,是多个线程共享的内存区域,它被用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

注:Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做 Non-Heap(非堆),目的应该是与 Java 堆区分开来。

简单的说,堆和方法区都是所有线程共享的资源,其中堆是进程中最大的一块内存,主要用于存放新创建的对象 ,方法区主要用于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

04-Share

—————

分享文章-IM服务器设计系列文章

IM服务基础

https://www.codedump.info/post/20190608-im-design-base

消息存储

https://www.codedump.info/post/20190608-im-msg-storage

网关接入层

https://www.codedump.info/post/20190818-im-msg-gate

如何解决消息的乱序

https://www.codedump.info/post/20191013-im-msg-out-of-order

分享理由:从IM基础到数据层、网关层、消息乱序解决,介绍了一个基本的IM系统需要考虑的问题和设计的思路,如果要实现一个IM系统,这是一个很好的参考思路。

原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
如果本文对你有帮助,请点个赞吧,谢谢
更多精彩内容,请关注个人公众号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARTS挑战打卡第十周 的相关文章

随机推荐

  • 24张架构图把数据治理核心内容讲透了

    前言 随着信息革命和信息化的飞速发展 计算机数据量的急剧增长 数据利用和管理的重要性与日俱增 数据逐渐在信息化这个大舞台上扮演着越来越重要的角色 数据治理是企业大数据基础 企业级数据平台助力企业数字化转型 在目前数字化转型大趋势的推动下 企
  • 【机试题(实现语言:python3)】字符串运用-密码截取(最长回文子串)

    题目描述 给定一个仅包含小写字母的字符串 求它的最长回文子串的长度 所谓回文串 指左右对称的字符串 所谓子串 指一个字符串删掉其部分前缀和后缀 也可以不删 的字符串 注意 记得加上while处理多个测试用例 输入描述 输入一个仅包含小写字母
  • Qt编程 (一)

    一 Qt简介 1 Qt是什么 图形用户程序框架 是对底层应用编程接口API面向对象的封装 是一套基于C 语言的类库 专注但不局限于图形用户界面的开发 也可以进行系统调用 网络编程 数据库 2D 3D图形处理 特点 跨平台 支持Linux W
  • hosts文件被删除了如何解决

    一 给etc目录授权 进入c windows system32 drivers etc 选中etc目录 右键 属性 高级 二 恢复hosts文件 进入目录C Windows System32 drivers etc 新建hosts txt
  • python三次样条插值拟合的树行线_R语言:样条回归

    01 解决何种问题 线性回归都知道是用来描述两个变量之间的线性关系 比如身高和体重 自变量身高每增加1个单位 因变量体重就变化多少 但是现实中能用线性回归描述的情况太少了 绝大部分关系都是非线性关系 这个时候就必须用其他回归来拟合了 例如类
  • 面向对象基础2-关键字

    目录 前言 一 private关键字 二 private关键字的使用 三 this关键字 四 public关键字 五 protected 六 default 总结 前言 一 private关键字 private属于私有访问权限 用于修饰类的
  • ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

    1 问题描述 ubuntu系统中安装好anaconda后 又继而安装了ROS 并通过命令 pip install opencv python 安装opencv的情况下 此时安装的opencv python包是存放在anaconda下的 而在
  • Linux中的一些指令及./详解

    在 Linux 中有许多常见的指令用于执行各种任务 以下是一些常见的 Linux 指令及其用法的总结 ls 列出目录中的文件和子目录 用法 ls 选项 目录 cd 改变当前工作目录 用法 cd 目录 pwd 显示当前工作目录的路径 用法 p
  • js逆向案例三

    目录 零 概述 一 请求参数 Cookie Referer校验 二 参数响应加密解密AES DES RSA 三 其它js混淆 1 案例7 百变ip eval 2 案例8 聚合图床 sojson v6 3 案例9 SH行政处罚 sojson
  • varest插件使用

  • 数据结构学习——顺序栈和链式栈的简单实现和解析(C语言版)

    数据结构 栈的简单解析和实现 一 概念 二 入栈 push 三 出栈 pop 四 顺序栈简单实现 1 进栈操作 2 出栈操作 一 概念 本篇所讲解的栈和队列属于逻辑结构上的划分 逻辑结构分为线性结构 非线性结构 线性结构 有且仅有一个开始节
  • GD32E230芯片无法识别

    GD32E230芯片无法识别 GD32E230板子回来后 开始接上jlink烧录 但是板子第一次能烧录然后第二次就不行的了 换了好几个板子都是 搞了好几个小时 整个人都快崩溃了 后面也是经过不断的尝试 终于搞好了 总结了一下 主要要注意的问
  • Qt的connect槽函数

    一 connect 函数的不同参数形式 以及其区别 优略 除2 未知 之外 总体分为三种形式 1 3信号和槽转为字符串形参的connect函数 4 5 6 7 8信号和槽转为可调用对象的connect函数 9转到槽函数 1 将信号连接到另一
  • 视觉算法工程师面试问题集锦,从基础到进阶,会介绍细节,持续更新中......

    引言 简历上写项目的流程 项目背景是什么 应用场景在什么地方 目的是什么 创造了什么价值 你做了什么事情 遇到困难时 又是怎么解决的 面试需要准备的内容 一 项目描述与项目细节提问 主要描述项目背景 项目实现的功能与方法流程等 面试官会针对
  • 基于STM32的OLED屏显示AHT20采集的温湿度数据

    文章目录 一 实现温湿度数据采集并通过串口显示 二 实现将温湿度采集数据显示到OLED屏 1 代码下载 2 部分代码的编写 3 编译并烧录 4 运行结果 三 小结 四 参考链接 本实验使用的工具 STM32野火mini开发板 AHT20温湿
  • mysql没有写入权限_解决Errcode: 13——mysql写文件权限问题

    mysql没有写入权限 解决Errcode 13 mysql写文件权限问题 一 问题 二 权限错误 Errcode 13 解决方法 三 原理 一 问题 在数据库中select into outfile home mysql data sql
  • Three.js入门之做一个简单的3D场景内添加标点的功能

    什么是Three js 百度百科上是这么说的 Three js是JavaScript编写的WebGL第三方库 提供了非常多的3D显示功能 运行在浏览器中的 3D 引擎 你可以用它创建各种三维场景 包括了摄影机 光影 材质等各种对象 你可以在
  • 数据结构第一次上机 第一章

    数据结构第一次上机 第一章 实验题2 常见算法时间函数的增长趋势分析 目的 理解常见算法时间函数的增长情况 内容 编写一个程序exp1 2 cpp 对于1 n的每个整数n 输出log2 n n Alt 41420出根号 n nlog2 n
  • 20050621:松一口气

    今天把业务日志的数据 恢复 上去了 不管怎么样 X姐放了一罐椰奶在我桌子上 我猜大概不会收到投诉了 因为这事情她也有责任 从某种意义上说是我帮她 摆平 了 但是下午X姐的本性又露出来了 不停的冒一些点子出来 客户总是这样 喜欢出些点子 并暗
  • ARTS挑战打卡第十周

    Algorithm 一周至少一道算法题 Review 阅读并点评至少一篇英文技术文章 Tip 学习至少一个技术技巧 总结和归纳在日常工作中所遇到的知识点 Share 分享一篇有观点和思考的技术文章 01 Algorthm https lee