所谓A(Algorithm)R(Review)T(Tips)S(Share):
. 每周至少做一个 leetcode 的算法题
. 阅读并点评至少一篇英文技术文章
. 学习至少一个技术技巧
. 分享一篇有观点和思考的技术文章
1 week 2019-03-25~2019.3.31
Algorithm 算法
# [2] 两数相加
#
# https://leetcode-cn.com/problems/add-two-numbers/description/
#
# algorithms
# Medium (33.48%)
# Total Accepted: 103.1K
# Total Submissions: 308K
# Testcase Example: '[2,4,3]\n[5,6,4]'
#
# 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
#
# 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
#
# 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
#
# 示例:
#
# 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
# 输出:7 -> 0 -> 8
# 原因:342 + 465 = 807
#
#
#
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
ans = ListNode(0)
temp = ans
tempsum = 0
while True:
if (l1 != None):
tempsum = l1.val + tempsum
l1 = l1.next
if (l2 != None):
tempsum = tempsum + l2.val
l2 = l2.next
temp.val = tempsum % 10
tempsum = int(tempsum / 10)
if l1 == None and l2 == None and tempsum == 0:
break
temp.next = ListNode(0)
temp = temp.next
return ans
Review 英文技术文章
Clean Architecture in Go
https://medium.com/@hatajoe/clean-architecture-in-go-4030f11ec1b1
tip: 对程序做了分层
Golang Datastructures: Trees
https://ieftimov.com/post/golang-datastructures-trees/
Tip 技术点
python多进程日志日志问题解决
一种方法是为每个进程分配不同的文件,规避了多个进程写同一个文件的情境。
缺点:日志分散,不利于日志查看和监测。
如文件目录为 /logs/modules/service.log
每个进程启动,则在 /logs/modules 下面尝试获取 .service.log_0.lock 文件锁,如果能够获取,则在 service_0.log下打印日志,获取不到,则尝试获取 .service.log_1.lock
Share 分享文章
如何深入Python虚拟机追查HTTP服务core dump导致502的问题
https://techblog.toutiao.com/2018/06/04/ru-he-shen-ru-pythonxu-ni-ji-zhui-cha-httpfu-wu-core-dumpdao-zhi-502de-wen-ti/#at?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
线上问题深度追查:信号处理函数中的死锁
https://techblog.toutiao.com/2018/05/30/untitled-26/#at?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
就是为了解决多进程写日志切分的问题,做了一个日志锁,但是导致了死锁