V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  meiyoumingzi6  ›  全部回复第 2 页 / 共 13 页
回复总数  249
1  2  3  4  5  6  7  8  9  10 ... 13  
之前写过一个, 不知道是否满足你的需求

class Node:
def __init__(self, val, left=None, right=None) -> None:
self.val = val
self.left = left
self.right = right

def create_tree(data: list):
if not data:
return None
first_node = Node(data[0])
tmp_list = [first_node]
tmp_count = 0
for item in data[1:]:
node = tmp_list[0]
new_node = Node(item) if item is not None else None
if tmp_count == 0:
node.left = new_node
# add to tmp_list
if item is not None:
tmp_list.append(new_node)
tmp_count += 1
continue
if tmp_count == 1:
node.right = new_node
if item is not None:
tmp_list.append(new_node)
# POP
tmp_list.pop(0)
tmp_count = 0
continue
return first_node
2022-01-11 09:36:20 +08:00
回复了 Livid 创建的主题 云修电脑 Reset 解决一切问题
retry reboot reset reinstall rebuy🤪
2022-01-09 17:35:35 +08:00
回复了 ling516 创建的主题 Windows 大家手机电脑互传软件用的是啥
AirDrop
还有就是 真的不考虑安全么?

添加一个站点 直接塞 js 都可以执行, 那不等着被 XSS 注入
啊,这,不考虑用 debug 置成 false 么?


Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/tornado-5.1-py2.7-linux-x86_64.egg/tornado/web.py", line 1568, in _execute
result = self.prepare()
File "/usr/lib64/python2.7/site-packages/tornado-5.1-py2.7-linux-x86_64.egg/tornado/web.py", line 2321, in prepare
raise HTTPError(self._status_code)
HTTPError: HTTP 404: Not Found
2022-01-06 19:12:16 +08:00
回复了 fisherwei 创建的主题 北京 北京出发,周末有什么小众一些,可以玩的地方吗?
石家庄:
洗浴中心(。。。)


???? 什么鬼
道理我都懂 但是 bilybily 是啥 ?
b 站 不是 bilibili 么
2022-01-05 09:38:29 +08:00
回复了 shaojz2005 创建的主题 Windows wps 可以取代 office 吗?
不能,因为好久没用了,可能会出现信息偏差

印象中 wps 是可以兼容 office 的,反之不行
那就意味着你给别人的合适对方有很大的概率打开是合适乱的,,甚至打不开,总不能指望别人再装个 wps 吧
2022-01-05 09:34:42 +08:00
回复了 kayseen 创建的主题 Python 一个简单低级的代码逻辑问题
写第一种怕不是要被同事打死
2022-01-04 14:07:32 +08:00
回复了 spotfg 创建的主题 Go 编程语言 golang flag 单元测试跑不过
```golang
package main

import (
"flag"
"fmt"
)

func main() {
// 其他处理逻辑
Execute()
// 其他处理逻辑
}

func Execute() {
s := flag.String("s", "abc", "xxxxxx")
flag.Parse() // 加上这行
fmt.Println(*s)
// 对得到参数的处理
}

```
2022-01-03 19:46:10 +08:00
回复了 dada0627 创建的主题 宽带症候群 广东电信降速套餐有人遇到过吗?
不动就问,日常使用真的需要这么大的上行吗?😂体验上有实际区别吗,还是仅仅是 100 变 50 不爽而已😢
公司有提供隧道用公司的,出事不用你背着
自己搭,不出事没事,出事你就背锅
2022-01-02 15:31:30 +08:00
回复了 zhoudaiyu 创建的主题 程序员 今天有去公司加班的兄弟吗?
加一天的钱可以用来请 3 天假,我也想要🤪
2022-01-02 10:02:11 +08:00
回复了 meiyoumingzi6 创建的主题 程序员 如何使用 GO 实现一个简单的 HTTP(S) PROXY
@yankebupt
@FrankAdler
@2i2Re2PLMaDnghL
@0o0O0o0O0o

感谢大佬们, 破案了
- 原因:

第一次的时候响应不对,应该是 `HTTP/1.0 200 Connection Established\r\n\r\n`,
参考文档:https://datatracker.ietf.org/doc/html/draft-luotonen-web-proxy-tunneling-01#section-3.2

- 补充:

上述代码在 python request 下,因为 `h := string(ctx.Request.Host())` 这行拿到了空, 修改成 `h := string(ctx.Request.RequestURI())` 后可以正常工作, 并且可以有正常的相应

- 为什么 curl 不能用?
看起来是 curl 严格遵守了规范, https://github.com/curl/curl/search?p=3&q=Connection+Established


- CODE

```golang
package main

import (
"fmt"
"github.com/valyala/fasthttp"
"io"
"log"
"net"
"sync"
)

func main() {

if err := fasthttp.ListenAndServe(":1234", requestHandler); err != nil {
log.Fatalf("Error in ListenAndServe: %s", err)
}
}

func haddleHTTPS(ctx *fasthttp.RequestCtx) {
// ctx.Request.RequestURI() , 不要使用 ctx.Request.Host()
h := string(ctx.Request.RequestURI()) // host:port eg. www.baidu.com:443
curConn := ctx.Conn()
// https://datatracker.ietf.org/doc/html/draft-luotonen-web-proxy-tunneling-01#section-3.2
curConn.Write([]byte("HTTP/1.0 200 Connection Established\r\n\r\n"))
fmt.Println("haddle:", h)
remotConn, err := net.Dial("tcp", h)
if err != nil {
}
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer func() {
wg.Done()
}()
io.Copy(curConn, remotConn)
}()

go func() {
defer func() {
wg.Done()
}()
io.Copy(remotConn, curConn)
}()
wg.Wait()
}

func haddleHTTP(ctx *fasthttp.RequestCtx) {
req := fasthttp.AcquireRequest()
req.SetRequestURIBytes(ctx.Request.RequestURI())
req.Header = ctx.Request.Header
req.SetBody(ctx.Request.Body())
client := &fasthttp.Client{}
resp := fasthttp.AcquireResponse()
client.Do(req, resp)
body := resp.Body()
fmt.Println(body)
ctx.Write(body)
}

func requestHandler(ctx *fasthttp.RequestCtx) {
method := string(ctx.Method())
if method == "CONNECT" {
// https
haddleHTTPS(ctx)
return
}
// http
haddleHTTP(ctx)
return
}

```

- code change log

1. fix, 修复其他客户端可能拿不到 ctx.Request.Host() 的问题, 使用 ctx.Request.RequestURI() 代替
2. fix, 修复响应不符合规范的问题, 应该使用 `"HTTP/1.0 200 Connection Established\r\n\r\n"`
3. improve, 使用 `io.Copy` 代替手工读写

- 教训 /经验

1. 还是得多看文档
2. 抓一个正常的请求看看

- 最后

还得得感谢各位大佬们
2022-01-02 08:17:49 +08:00
回复了 meiyoumingzi6 创建的主题 程序员 如何使用 GO 实现一个简单的 HTTP(S) PROXY
@0o0O0o0O0o 是的,当时是为了 debug 打印内容了😂
2022-01-02 08:16:07 +08:00
回复了 meiyoumingzi6 创建的主题 程序员 如何使用 GO 实现一个简单的 HTTP(S) PROXY
@FrankAdler 感谢,看起来是我想要的
2022-01-02 08:09:03 +08:00
回复了 meiyoumingzi6 创建的主题 程序员 如何使用 GO 实现一个简单的 HTTP(S) PROXY
@yankebupt 感谢,我看看
2022-01-02 08:07:44 +08:00
回复了 meiyoumingzi6 创建的主题 程序员 如何使用 GO 实现一个简单的 HTTP(S) PROXY
@2i2Re2PLMaDnghL 这个是我代码里面给的响应,如果没有,curl 不会发送接下来的信息
2021-12-31 12:23:26 +08:00
回复了 cw2k13as 创建的主题 Linux 求推荐一个小白入手的 Linux 桌面版
如果你想拿他当主力或者半个主力,都建议用 deepin ,如果偶尔玩玩,虚拟机随便装一个
1  2  3  4  5  6  7  8  9  10 ... 13  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2863 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 14:29 · PVG 22:29 · LAX 07:29 · JFK 10:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.