ARTS 打卡 第二周,按部就班

2023-09-18 08:00:00

引言

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

Algorithm

本周分享的算法题是力扣(Leetcode-70 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)的经典算法题目:爬楼梯问题。

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

输入:楼梯总层数

输出:有几种走法

解题思路:

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

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相关的文章,这篇文章是关于一个以太坊交易的完整周期,具体文章链接:Notonlyowner | What happens when you send 1 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还具备低成本的特质,它的价格低廉,不但可用于大规模应用,而且可以大大缩短投资回报期。使得其成为物联网领域中的重要设备,大大降低企业的设备成本,提高企业的“降本增效”效果。

结束语

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

更多推荐

同为科技(TOWE)专业防雷滤波桌面PDU超级插座

2023年第19届杭州亚运会开幕在即,相较于以往,本届杭州亚运会的一大看点就是电竞项目将首次以正式比赛项目的身份亮相亚运赛场,让更多受众能够领略电竞的魅力。当前社会,电竞作为一种新兴的娱乐、社交方式,让很多年轻人通过高科技设备的便捷和高效,在游戏中展示自己的技能和策略,与志同道合的朋友一起体验团队合作的乐趣,从而展现自

2023华为杯研究生数学建模选题建议和获奖助攻

先说一下自己的看法吧,明天会分享点干货以及赛题的思路给大家!查看文末名片即可!很多同学都是第一次参加数学建模比赛,尤其是含金量最高的华为杯,所以在没有经过系统的学习数学建模知识体系的情况下,大家在拿到题目之后,一定要慎重选题,你要确保你选择的题目是可以在四天内完成的!大家可以看一下华为杯去年的赛题题型A题是华为题,与华

外贸遇到同事撞单怎么处理

有时候感觉这个世界太小了,小到我们经常和自己的同事撞单,甚至很纳闷为什么客户会同时联系我们公司的那么多人,是如何联系上的。比如刚毕业的时候,我曾经开发过一个埃及的客户,每次他回复邮件的时候都会带着我们公司很多其他同事的邮箱。当时公司的规定是谁先给客户发送的开发信或者是客户第一次回复谁的邮件来将客户归为谁管理,其他的同事

类和对象(下)

前言:前面两篇文章我们一共讲述了类和对象的六个默认成员函数,这篇文章我们将接着继续讲。一、再谈构造函数:1.1构造函数体赋值:虽然调用构造函数之后,对象中已经有一个初始值,但是我哦们不能将这称之为对象成员变量的初始化,我们只能将其称之为赋值。因为初始化只能初始化一次,而构造函数体可以进行多次赋值。1.2初始化列表:初始

后端字典的优雅设计

背景今天讲到的是数据字典的设计。为什么要讲到这个呢,因为我下午在做开发的时候遇到了一个问题。我先扔出来某个表的字段的定义吧:business_typeintdefault0comment'0:收款计划;1:付款计划'而且我还有一个字典表,字典表的结构大约是这样的:dict_codeCodeValuebusiness_t

C++ 基础(十二)函数-题目练习

一、等差数列求和描述编写一个函数sum(…),计算等差数列中前n项数据的和。已知等差数列的起始项为2。例如:等差数列2,5,8,11…,需要利用sum函数求出前3项的和为15。【题目要求】①等差数列中数字之间的差值不固定,需要自行输入。②输入要求的数列项数n。③输出前n项数据的和。输入描述两个正整数;第一个正整数为数列

水一下文章

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。文章使用到的的工具Python:一种编程语言,只能进行后端数据的处理和管理前端HTML文件,不能用来处理HTTP请求Nginx:web服务

Vue浏览器缓存sessionStorage+localStorage+Cookie

目录sessionStorage简介方法代码示例存取单个数据存取对象清除数据localStorage简介方法代码示例cookie简介方法代码示例区别sessionStorage与localStorage区别sessionStorage、localStorage、cookie区别sessionStorage简介-sess

前端如何实现隐藏滚动条,并且页面还可以滚动

在前端中,可以通过CSS和一些简单的样式调整来实现隐藏滚动条,同时保持页面可滚动。这通常涉及到在容器内部创建滚动区域,并隐藏默认的滚动条样式。下面是实现这一效果的基本步骤:创建一个滚动容器元素,使其包裹需要滚动的内容。通过CSS隐藏默认的滚动条样式,并设置容器的高度、宽度以及overflow属性来实现滚动效果。示例代码

数据治理-大数据与数据科学-定义大数据战略与业务需求

组织试图解决什么问题,需要分析什么虽然数据科学的优点是它可以为组织提供一个新的视角,但该组织仍然需要一个起点。一个组织可以决定如何使用这些数据来理解业务或业务环境,证明关于新产品价值的想法,探索未知的事物,或者发明一种新的商业方法。在项目实施的各个阶段,制订一个评估这些举措的计划非常重要,并且需要在多个时间点评估该计划

golang并发编程基础

go并发编程1waitgroupWaitGroup就是等待所有的goroutine全部执行完毕,add方式和Down方法要配套使用packagemain​import("fmt""sync")​funcmain(){varwqsync.WaitGroup​wq.Add(100)//监控多少个goroutine执行结束​

热文推荐