写点什么

ARTS 打卡 第二周,按部就班

作者:三掌柜
  • 2023-09-13
    江苏
  • 本文字数:2603 字

    阅读完需:约 9 分钟

ARTS 打卡 第二周,按部就班

引言

认识三掌柜的想必都知道,我持续创作技术博客已经有 6 年时间了,固定每个月发布不少于 6 篇博文。同时,自己作为一名热爱分享的开发者,像 ARTS 这样的活动自然少不了我。由于我是打算挤在一起分享,之前都是做了本地文档记录,所以直接把内容整合起来即可,那么接下来就开启我的第二周打卡。

Algorithm

本周分享的算法题是力扣(Leetcode-70 https://leetcode.cn/problems/climbing-stairs/description/)的经典算法题目:爬楼梯问题。

问题描述:一个人爬楼梯,只可以一步走一层或一步走两层,共多少种走法?

输入:楼梯总层数

输出:有几种走法

解题思路:

这个问题,是一个递归问题。

1.楼梯总层数为 1,有一种走法,一步走一层。

2.楼梯总层数为 2,有两种走法:

1)一步走一层,走两步

2)一步走两层,走一步

3.楼梯总层数为 n 的走法有多少种呢?

走到 n 层只有两种可能:

1)在第 n-1 层往上走 1 步(一步一层)到第 n 层

2)在第 n-2 层往上走 1 步(一步两层)到第 n 层

最终方法:

楼梯总层数为 n 的走法=楼梯总层数为 n-1 的走法+楼梯总层数为 n-2 的走法

类似于斐波那契数列,只不过第 0 层是 0 种走法。

注:0 层 0 种,1 层 1 种,2 层 2 种,3 层=2 层+1 层,4 层=3 层+2 层,…

使用 JS 实现的代码如下所示:

function step(n){    if(n <= 2){        return n;    }    var n1 = 1;    var n2 = 1;    var sum = 0;    for(var i = 3;i<=n;i++){        sum = n1+n2;        n1 = n2;        n2 = sum;    }    return sum;}
复制代码


Review

最近在研究关于 Web 3 的技术,下面分享一下关于 Web 3 相关的文章,这篇文章是关于一个以太坊交易的完整周期,具体文章链接:https://www.notonlyowner.com/learn/what-happens-when-you-send-one-dai

通过阅读这篇文章,作为初学者对于以太坊的交易完整周期有一个初步的认识,下面分享一下文章节选内容:

Gas wizardry

Next step is deciding how much to pay for the transaction. Because remember that all transactions must pay a fee to network of nodes that takes the time and resources to execute and validate them.

The cost of executing a transaction is paid in ETH. And the final amount of ETH will depend on how much net gas your transaction consumes (that is, how computationally expensive it is), how much you're willing to pay for each gas unit spent, and how much the network is willing to accept at a minimum.

From a user perspective, bottomline usually is that the more one pays, the faster transactions are included. So if you want to pay Vitalik 1 DAI in the next block, you'll probably need to set a higher fee than if you're willing to wait a couple of minutes (or longer, sometimes way longer), until gas is cheaper.

Different wallets may take different approaches to deciding how much to pay for gas. I'm not aware of a single bullet-proof mechanism used by everyone. Strategies to determine the right fees may involve querying gas-related information from nodes (such as the minimum base fee accepted by the network).


下一步是决定交易的支付金额。因为请记住,所有事务都必须向节点网络支付费用,这需要时间和资源来执行和验证它们。

执行交易的成本以 ETH 支付。ETH 的最终金额将取决于您的交易消耗了多少净天然气(即计算成本有多高),您愿意为每消耗一个天然气单位支付多少,以及网络愿意接受的最低金额。

从用户的角度来看,底线通常是支付的越多,包含的交易就越快。因此,如果你想在下一个街区支付 Vitalik 1 DAI,你可能需要设定比你愿意等几分钟(或更长时间,有时更长时间)直到汽油更便宜更高的费用。

不同的钱包可能会采取不同的方法来决定汽油的价格。我不知道每个人都使用哪一种防弹机制。确定正确费用的策略可能涉及从节点查询与天然气相关的信息(例如网络接受的最低基本费用)。

Technique/Tips

这次依然分享一个关于前端开发中必备且经典的重要知识点,关于关于 diff 算法的有 Key 但以索引为值的使用,也就是直接就地更新,通过新旧虚拟 DOM 对比,key 存在就直接复用该标签更新的内容,若 key 不存在就直接新建一个。



具体示例如下所示:

<ul id="content">	<li v-for="(item, index) in array" :key="index">		{{ item }}		<input type="text">	</li></ul><button @click="addClick">在下标为1的位置新增一行</button>
export default {data(){ return { array: ["11", "44", "22", "33"] }},methods: { addClick(){ this.array.splice(1, 0, '44') }}};
复制代码

通过上面代码可以看到,通过 v-for 循环产生新的 DOM 结构, 其中 key 是连续的, 与数据对应一致,然后比较新旧 DOM 结构, 通过 diff 算法找到差异区别, 接着打补丁到页面上,最后新增补一个 li,然后从第二元素以后都要更新内容。

Share

本次分享一下关于 DTU 相关的内容,从个人角度来看 DTU 所具备的特质。个人觉得在 DTU 的特质中,有五个方面: 高安全、易使用、可二次开发、可远程升级以及低成本。

  • 高安全性是 DTU 的基本特质之一,它拥有防火墙、数据加密以及鉴权机制等多种保障措施,保护 DTU 设备和数据的安全。DTU 可以通过加密数据传输的方式,保证数据的安全性,避免了数据泄露的风险。

  • DTU 的易使用性也是其优点之一,它采用了人性化的使用界面和简单易懂的操作流程,使得用户可以快速上手,有效地降低了学习成本。

  • DTU 可以通过简单的配置和设置,快速实现设备的互联互通,同时还可以进行二次开发,它允许用户通过 JavaScript,进行二次开发和定制化开发,实现更多的个性化需求。

  • 可远程升级也是 DTU 的重要特质,它可以在不影响现场运行的情况下对 DTU 设备进行远程升级,极大地方便了现场维护人员的工作。也就是说 DTU 可以通过远程升级方式,实现对设备的升级更新,避免了因设备停机升级带来的生产损失。

  • DTU 还具备低成本的特质,它的价格低廉,不但可用于大规模应用,而且可以大大缩短投资回报期。使得其成为物联网领域中的重要设备,大大降低企业的设备成本,提高企业的“降本增效”效果。

结束语

本次的分享就到这里,第二周是按部就班进行中,总体来说每天花一些时间来分别研究这几件事情,然后一周的周末来一个总结,这样的方式也是相当不错的。经过四件事情的逐一完成,可以逐渐提升自己的编程思维,也可以让自己在潜移默化中不断进步成长!让我们下周见!

发布于: 刚刚阅读数: 3
用户头像

三掌柜

关注

某某某技术有限责任公司架构师 2021-02-05 加入

一分耕耘,不一定有一分收获,但十分耕耘,一定会有一分收获!

评论

发布
暂无评论
ARTS 打卡 第二周,按部就班_ARTS 打卡计划_三掌柜_InfoQ写作社区