相关信息
算法实现-golang实现交替打印数字字母
该题的关键在意通过channel进行控制
相关信息
golang基础学习
context 的核心用途是控制请求链路的生命周期,比如取消、超时和传递少量请求级元数据。业务数据应该通过明确的函数参数传递,而不是放到 context.Value 里。否则会带来类型不安全、依赖隐式、可读性差和滥用成全局 Map 的问题。Context 里可以放 trace id、request id 这类跨函数、跨服务的元信息,但不应该放订单对象、用户实体这类核心业务数据
js1. 编译期(build)
2. 生成可执行文件
3. 运行时启动(runtime start)
4. 初始化 package 级别变量
5. 执行 init()
6. 执行 main.main()
js1. 语法检查
2. 类型检查
3. 依赖分析
4. 变量初始化代码生成(决定怎么初始化、按什么顺序初始化)
5. init 调用链生成
6. main 入口标记
相关信息
gbk编码踩坑记录
工作中,公司内部方法调用的过程中,提示编码无法识别相关的错误提示
部分代码case
py params = mcpack.dumps(pack, "v2", "gbk") # 这里的功能是对参数进行gbk的编码处理
问题原因是gbk的编码对于某些字符会无法识别,需要修改为gb18030 就可以解决问题
py params = mcpack.dumps(pack, "v2", "gbk") # 这里的功能是对参数进行gbk的编码处理
相关信息
广度优先搜索学习
以下代码段摘录自算法图解中,可以很好的理解广度优先算法
python
def search(name):
search_queue = deque() # 创建队列用于 BFS
search_queue += graph[name] # 将起点的邻居加入队列
searched = [] # 用于记录已检查过的人
while search_queue: # 当队列不为空时循环
person = search_queue.popleft() # 从队列左侧取出下一个人
if person not in searched: # 只检查未检查过的人
if person_is_seller(person): # 如果这个人是芒果卖家
print(person + " is a mango seller!")
return True # 找到后返回 True
else:
search_queue += graph[person] # 将此人的邻居加入队列
searched.append(person) # 标记为已检查
return False # 队列为空仍未找到,返回 False
golangfunc isPalindrome(head *ListNode) bool {
if head == nil || head.Next == nil {
return true
}
slow, fast := head, head
for fast.Next != nil && fast.Next.Next != nil {
slow = slow.Next
fast = fast.Next.Next
}
tail := reverseList(slow.Next)
p1, p2 := head, tail
for p2 != nil {
if p1.Val != p2.Val {
slow.Next = reverseList(tail)
return false
}
p1 = p1.Next
p2 = p2.Next
}
slow.Next = reverseList(tail)
return true
}
gofunc reverseList(head *ListNode) *ListNode {
var prev *ListNode
curr := head
for curr != nil {
next := curr.Next
curr.Next = prev
prev = curr
curr = next
}
return prev
}