ARTS 2019 03 03 (20)

本周ARTS周记中,作者完成了LeetCode上的翻转二叉树算法题,深入理解了递归思维,并对Java内存模型的JSR133进行了评论。此外,还分享了关于成功的个人见解,强调了复合增长、自信、独立思考等关键品质。

ARTS
Algorithm:每周至少做一个leetcode的算法题;
Review:阅读并点评至少一篇英文技术文章;
Tip/Tech:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章;

Algorithm

226. 翻转二叉树

https://leetcode-cn.com/problems/invert-binary-tree/
本周琐事比较多,所以就做了一些简单的关于二叉树的题目,这道题据说很经典?我看到题目下面有段话让我觉得乐了,就是下面这段:

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

然后觉得试试,第一次的时候只把值进行了交换,导致出现了错误,后来想了想,其实就是因为没有把左右节点进行交换导致的错误,要注意:

翻转要把节点对应的左右节点都要进行交换。

OK,show the code:

class Solution {
   public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) {
            val = x;
        }
    }
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return root;
        }
        invertOpt(root);
        return root; 
    }
    
    public void invertOpt (TreeNode node) {
         if (node.right != null && node.left != null) {
            TreeNode temp = node.left;
            node.left = node.right;
            node.right = temp;
        } else if (node.right != null && node.left == null) {
            node.left = node.right;
            node.right = null;
        } else if (node.right == null && node.left != null) {
            node.right = node.left;
            node.left = null;
        } else {
            return;
        }
         if (node.left != null) {
            invertOpt(node.left);
        }
        if (node.right != null) {
            invertOpt(node.right);    
        }
    }
}

以上就是代码,非常的简单的递归吧,我发现二叉树这些题目是锻炼递归思维非常好的题目,各种的递归翻转,只要熟练,基本上就会对递归有更加熟练地理解了。

Review

https://www.jcp.org/en/jsr/detail?id=133

JSR 133: JavaTM Memory Model and Thread Specification Revision

这是篇关于Java的内存模型的一个JSR,大意就是说原来的那个些个语言规范啊,虚拟机规范啊,规定的不好,这个JSR就是在之前的基础上进行修订,主要增强了Java的多线程和一些内存类型的功能。描述都是其次。后来的那写个论文啊,才是大部头,看到我直接晕了。大概理解了一下,有关于一些内存的模型的论文。

Tip/Tech

手写了二叉树的查询,插入,删除。很惭愧,还不算熟练。

Share

http://blog.samaltman.com/how-to-be-successful

How To Be Successful
  1. Compound yourself:就是你要做个有复合增长的工作,然而大部分的工作都是线性的
  2. Have almost too much self-belief:要对自己有足够的自信
  3. Learn to think independently:独立思考
  4. Get good at “sales”:擅长销售,你学会如何打动别人
  5. Make it easy to take risks:善于承担风险,其实很多风险本身是不那么可怕的,而奖励往往丰厚
  6. Focus:专注正确的事情,更多人吧时间专注再无关紧要的事情上面
  7. Work hard:努力工作
  8. Be bold:要大胆,所谓撑死胆大的,饿死胆小的
  9. Be willful:要任性?就是要变得有那种感觉,你可以按照自己的方式来改变世界
  10. Be hard to compete with:有竞争力。这个说的容易
  11. Build a network:建立你你自己社交网络,就像团队啊,人脉啊这些
  12. You get rich by owning things:你通过拥有东西来致富
  13. Be internally driven:内部驱动,一切发自内心的。就是你自己很愿意相信这东西能成这种感觉。
<think>好的,我现在需要处理用户的问:“arts in IT context”。用户提到这可能与IT相关,但具体意图不明确。首先,我要分析用户可能的意图,并确定如何展开搜索和回答。 用户的问arts in IT context”中的“arts”可能指的是艺术在信息技术领域中的应用或结合,比如数字艺术、计算机图形学、游戏设计等。也有可能用户误拼写,原本想找的是“ARTS”在IT中的含义,比如某种技术框架或缩写。比如,ARTS可能代表Agile、Robust、Testable、Scalable,或者某个特定的方法论。此外,还有可能是用户想了解信息技术中的文科结合,如人文与技术的交叉领域。 首先,我需要确认“arts”在此处的准确含义。由于用户问不明确,可能需要覆盖多个可能性。接下来,进行网络搜索,查找“arts in IT context”的相关信息,看看是否有常见的解释或应用领域。 搜索关键词可能包括:“arts in IT meaning”,“ARTS acronym IT”,“digital arts in information technology”,“humanities and arts in IT”等。通过搜索结果,分析常见解释。 根据初步搜索,发现“ARTS”在IT领域可能有几种含义: 1. Agile、Robust、Testable、Scalable:软件开发的指导原则。 2. Algorithmic and Random Testing System:测试方法。 3. 艺术与技术的结合,如数字媒体艺术、游戏设计、用户体验设计等。 需要进一步验证这些信息的准确性,并整理出最相关的内容。同,检查是否有其他可能的解释,如特定框架、工具或方法论。 接下来,整理信息,按照用户的要求生成回答。回答需要分点,结构清晰,每个方法或步骤间换行,避免使用第一人称和步骤词汇。同,确保引用内容分散在回答中,不集中在末尾。此外,生成相关问部分,需基于回答内容提出三个相关问。 在整理过程中,要注意用户的格式要求,特别是数学公式和代码部分,但当前问可能不涉及这些内容。但需保持结构,如分节、代码块等,如果有相关内容的话。 最后,生成相关问要确保问与原始问和回答内容紧密相关,帮助用户进一步探索主。例如,可能的问包括ARTS框架的具体应用、数字艺术工具推荐、或艺术与AI结合的例子等。 总结,回答的结构可能包括: 1. ARTS作为缩写或框架的解释。 2. 艺术在IT中的具体应用领域。 3. 跨学科结合的实例。 确保每个部分都有网络搜索的支持,并引用相关来源,但根据用户要求不集中在末尾。同,最后生成的相关问需要符合格式要求,使用正确标,且每个问编号正确。</think>#### ARTS在IT领域的多重含义与应用场景 --- ### 1. **ARTS作为技术方法论与框架** 在软件开发领域,**ARTS** 通常指代一种工程实践原则,包含以下核心要素: - **A (Agile)**:敏捷开发流程,强调迭代交付与快速响应需求变化。 - **R (Robust)**:鲁棒性设计,确保系统在异常输入或高负载下的稳定性。 - **T (Testable)**:可测试性架构,通过单元测试、集成测试保障代码质量。 - **S (Scalable)**:可扩展性设计,支持系统随业务增长横向/纵向扩展。 **示例代码(测试框架)**: ```python # 使用pytest实现可测试性(T) def test_addition(): assert add(2, 3) == 5, "加法函数测试失败" ``` --- ### 2. **ARTS作为特定技术术语** - **Algorithmic and Random Testing System (ARTS)**:一种结合算法与随机测试的软件验证方法,用于复杂系统的缺陷检测。 - **ARTS-Linux**:实操作系统扩展,支持高精度定任务调度。 **数学公式示例**: 随机测试覆盖率计算: $$覆盖率 = \frac{被触发的代码路径数}{总代码路径数} \times 100\%$$ --- ### 3. **艺术与IT的跨学科融合** IT技术为艺术创作与展示提供新工具,典型领域包括: - **数字媒体艺术**:使用编程语言(如Processing)生成交互式视觉作品。 ```processing void setup() { size(800, 600); } void draw() { fill(random(255), random(255), random(255)); ellipse(mouseX, mouseY, 50, 50); } ``` - **游戏开发**:结合3D建模(Blender)与游戏引擎(Unity/Unreal)。 - **用户体验设计(UX)**:通过心理学原理与前端技术优化产品交互流程。 **案例**:NFT(非同质化代币)利用区块链技术实现数字艺术品的唯一性认证与交易。 --- ### 4. **人文艺术在IT教育中的角色** 全球顶尖计算机院校(如MIT Media Lab)开设交叉学科课程: - **计算艺术(Computational Art)**:探索算法生成艺术的理论与实践。 - **数据可视化**:将复杂数据转化为直观图形,依赖设计原则与工具(D3.js、Tableau)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值