ARTS 打卡 第三周,渐入佳境

引言

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

Algorithm

本周我想分享一个自己之前在面试时候遇到的算法问题,虽然自己当时也回答上来了,但是个人觉得掌握的不行,那么本周就来重新学习一遍。算法题是力扣(Leetcode)的经典算法题目:斐波那契数问题。

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。

具体的代码实现如下所示:

class Solution {
    public int fib(int n) {
        if(n==0){
            return 0;
        }else if(n==1){
            return 1;
        }else{
            return fib(n-1)+fib(n-2);
        }
    }
}

分析:

使用递归来实现,其中,时间复杂度:O(2^n);空间复杂度:O(n),算上了编程语言中实现递归的系统栈所占空间。

Review

本周分享一个自己在学习区块链的英文文章,作为bitcoin区块链的《圣经》,英文链接Bitcoin: A Peer-to-Peer Electronic Cash System,比特币白皮书作为区块链的始祖,区块链的《圣经》,分析全文的过程我中充满了对中本聪的钦佩。下面分享文章中的节选内容:

The solution we propose begins with a timestamp server. A timestamp server works by taking ahash of a block of items to be timestamped and widely publishing the hash, such as in anewspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at thetime, obviously, in order to get into the hash. Each timestamp includes the previous timestamp inits hash, forming a chain, with each additional timestamp reinforcing the ones before it.

从这部分开始说明的就是矿工(miner)所干的工作。这里的一组数据就是指很多笔交易,然后把这一组数据打包成了一个区块(block),并把这个区块加盖上时间戳并做hash,以此来保证时间的先后顺序,也就是要完成第2部分所介绍的“确保历史顺序”。而因为要得到这个hash是和当时的时间戳联系在一起的,所以这个hash就标识着时间了。因为这些区块是形成一个链条的,而区块的增长是CPU算力的证明(后文会描述),所以因为hash->体现了时间戳->hash被链在一起->链上一个新的区块需要耗费CPU->所以之前的hash就一定是正确的(不断被加强可信度)。

ARTS 打卡 第三周,渐入佳境_第1张图片

Technique/Tips

这次分享一个关于Flutter开发中的重要知识点,在Flutter开发中,关于图片上传和展示也是常用必用的操作,尤其是在设置APP用户的头像信息,以及上传背景图的操作。关于Flutter开发中图片的上传和展示也是比较常用的操作,也有对应的组件和插件,但是关于一些引申的需求操作,常规的操作是满足不了需要的,那么就来分享一下在实际业务需求中常用的需求:把从相册选中的图片转换成Base64之后再显示,或者展示获取到的Base64的图片。具体代码如下所示:

void _getImage() async{
 
    XFile? file = await ImagePicker().pickImage(source: ImageSource.gallery);
 
    if (file == null) return;
 
    _avataFile = File(file.path);
 
    Uint8List  imageBytes = await _avataFile!.readAsBytes();
 
    String base64 = base64Encode(imageBytes);
 
    String base64Image = "data:image/png;base64," + base64;
 
    print(base64Image);
 
 
}

Share

本次分享一下关于大模型是真正的银弹吗?这是个问题!

纵观实际情况,我的观点是:大模型并不是真正的银弹。虽然说大模型在某些任务上表现出色,但并不能解决所有问题。虽然大模型具备更高的性能和表现力,但它们需要庞大的计算资源和数据支持,而且在实际应用中也面临着一些挑战,如内存占用、推理速度等问题。与此同时,大模型也存在一些伦理和安全问题,需要引起我们的重视。所以,我们不能过分依赖大模型,而是要根据具体情况选择最合适的工具和方法。

结束语

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

你可能感兴趣的:(算法)