写点什么

John 易筋 ARTS 打卡 Week 02

用户头像
John(易筋)
关注
发布于: 2020 年 05 月 31 日

每周完成一个 ARTS:

Algorithm: 每周至少做一个 LeetCode 的算法题

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

Tips: 学习至少一个技术技巧

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

zgpeace 立个 Flag:坚持 ARTS 10 年,今天是 2020-05-04 ~ 2030-05-04,漏掉一次微信群发红包 100 大洋。


1. Algorithm: 每周至少做一个 LeetCode 的算法题


876. Middle of the Linked List

Given a non-empty, singly linked list with head node head, return a middle node of linked list.

If there are two middle nodes, return the second middle node.


Example 1:

Input: [1,2,3,4,5]Output: Node 3 from this list (Serialization: [3,4,5])The returned node has value 3.  (The judge's serialization of this node is [3,4,5]).Note that we returned a ListNode object ans, such that:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.
复制代码


Example 2:

Input: [1,2,3,4,5,6]Output: Node 4 from this list (Serialization: [4,5,6])Since the list has two middle nodes with values 3 and 4, we return the second one.
复制代码


解决思路:fast 快, slow 慢两个链表同时走, fast 走两步,slow 走一步。当 fast 为 null 时,则 slow 刚好在中间位置。

比如:[1,2,3,4,5]

第0步: slow 1, fast 1第1步: slow 2, fast 3第2步: slow 3, fast 5
复制代码


/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode() {} *     ListNode(int val) { this.val = val; } *     ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution {    public ListNode middleNode(ListNode head) {        ListNode slow = head;        ListNode fast = head;        while (fast != null && fast.next != null) {          slow = slow.next;          fast = fast.next.next;        }
return slow; }}
复制代码


2. Review: 阅读并点评至少一篇英文技术文章

打印 iOS App 的所有请求,用 URLProtocol 可以打印 URLConnection, URLSession 的请求信息。但是打印 response 笔者还遇到很多坑,只能通过 delegate 去做拦截。下面这篇文章比较简单的拦截了 request 的信息,亲测可用。

Printing data requests using a custom URLProtocol

https://www.avanderlee.com/swift/printing-data-requests/


3. Tips: 学习至少一个技术技巧

iOS App 唤起另一个 App 需要用到 Universal Link。需要在证书中配置 Associated domain,否则 Xcode 运行会报如下错误。

Provisioning profile "****.***.***" doesn't support the Associated Domains capability.


解决方法一

  1. 登录开发者账号https://developer.apple.com/


  1. Under ‘Certificates, Identifiers & Profiles’ in the Developer Member Center, choose your App ID under ‘Identifiers’, ‘App IDs’ in the left hand column.



  1. Choose ‘Edit’ and then enable ‘Associated Domains.’


如果仅仅是解决 Xcode 运行错误问题,可以删除掉 Associated Domains. 细节请参考笔者文章,提供了 3 种解决方案:

Xcode 证书错误 Provisioning profile does not support the Associated Domains capability

https://blog.csdn.net/zgpeace/article/details/106422993


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


周末看了 Bob 大叔的演讲,编程的未来。讲述了程序员的历史 1945 年第一台计算机开始,只有一位程序员,到目前为止全球程序员数无胜数。新语言如雨后春笋般爆发,以后的未来是增强版的敏捷开发 + 重拾极客专业精神。整场演讲解析:程序员为啥是从以前的高门槛数学家,到编程没有门槛的年轻人;为啥需要敏捷开发;为啥敏捷开发失效,重拾极客精神。细节请看笔者的文章

编程的未来 Uncle Bob Martin - The Future of Programming

https://blog.csdn.net/zgpeace/article/details/106458837


Bob 大叔原名 Robert C. Martin 。1970 年开始从事编程工作(18 岁),敏捷的鼻祖,著著名书籍有《敏捷软件开发 原则、模式与实践》、《架构整洁之道》。



youtube 视频链接如下:

“Uncle” Bob Martin - “The Future of Programming”


用户头像

John(易筋)

关注

问渠那得清如许?为有源头活水来 2018.07.17 加入

工作10+年,架构师,曾经阿里巴巴资深无线开发,汇丰银行架构师/专家。擅长架构、算法、数据结构、设计模式、iOS、Java Spring Boot。易筋为阿里巴巴花名。

评论

发布
暂无评论
John 易筋 ARTS打卡Week 02