V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  body007  ›  全部回复第 3 页 / 共 21 页
回复总数  403
1  2  3  4  5  6  7  8  9  10 ... 21  
@bv 感谢大佬分享该用法,之前我多次用到某个值,就在参数写多次,这下方便多了👍
83 天前
回复了 WilliamColton 创建的主题 问与答 Go 新手求教
@WilliamColton #14 确实是因为我也从零编写自用的代理工具,所以有相关经验。你可以看我另一个贴子 /t/1068681 ,可能会完善你这个代理的功能。我在另一个项目 https://github.com/jan-bar/EncryptionFile 深入研究过那 3 种加解密方式,所以我正好有相关经验额😊
@ysc3839 如果只是预读数据头部性能应该还可以,如果还处理了部分数据的话那就不太好,还得缓存已处理数据用其他协议再处理一次。
@DefoliationM 不是很有需求额。我自己用的项目除了 socks5 和 http 代理,还支持 socks5 udp 代理,还支持作为 shadowsocks-rust 的 SIP003 插件(为了支持 shadowsocks-android 的安卓端),也是复用相同 tcp 端口,只是不方便开源😁
@canyue7897 这是标准的啊,上面用 curl 命令测试都可以的。代理工具都是我自己写的,没有用过 clash ,不清楚情况。不过看 #1 楼的回复 clash 是支持的。不过记得 http 代理有 2 种模式,可以看代码和 curl 测试命令去理解额。
84 天前
回复了 WilliamColton 创建的主题 问与答 Go 新手求教
@WilliamColton #10 我感觉是巧合,停顿可能造成协程切换,缓冲区数据正好按照代码分段发送。你可以连续不间断发送请求测试 sleep 版本,肯定是有概率触发问题的,大概率就是部分数据不正确。
@sunny352787
@0o0O0o0O0o

看来盯着 shadowsocks 的我落后了,学习了。
84 天前
回复了 WilliamColton 创建的主题 问与答 Go 新手求教
@WilliamColton #8 你这个数组逆序是没问题,但你没办法保证加密的这段数据正好是解密那段数据。例如你将[1,2,3,4,5,6]加密为[6,5,4,3,2,1]发送出去,但接收方不一定刚好接收到[6,5,4,3,2,1],有可能接收到[6,5,4],[3,2,1],分 2 次处理。

我了解到的加解密方式有下面 3 种,在 go 标准库里面有具体实现。
Stream 方式可以做到在任意数据位置加解密都行。
BlockMode 方式需要块长度,加解密双方都必须按照某个长度的数据进行加解密。
AEAD 方式更加复杂,我忘了细节,你可以自己了解下。
总之加解密需要保证加密数据在解密时也是完整的。

// 这种简单的异或可以做到任意位置加解密,0x12 就是密钥
func (r ReverseCipher) Encrypt(data []byte) []byte {
for i := range data {
data[i] ^= 0x12
}
return data
}

标准库里面自带很多加解密方法,你可以选最简单的 Steam 方式看看。

https://i.imgur.com/laTlVJE.png
93 天前
回复了 WilliamColton 创建的主题 问与答 Go 新手求教
@WilliamColton 粗略来看,去掉加解密后应该不会有问题,你可以先试试不用加解密的情况。cipher.Encrypt 不是线程安全也会有影响。
我比较懒,换成 Caddy ,配置少,自动管理证书。
我喜欢 go ,但我讨厌这个特性。主要场景也不是你上面那种封装完立即 range 遍历,而是生成一个迭代器,放到代码其他位置去遍历,这种代码容易写出 bug ,还不好定位。你可以看下 iter 包,里面还有 iter.Pull 这种方法,就是把迭代器变成 next() 和 stop() 两个函数,意思是在其他代码位置一个个读取迭代器元素,最好在最上面写 defer stop()。go 容易阅读是很多使用者喜欢的原因,难以想象到处充斥这种迭代器的代码的阅读体验。生成迭代器和使用迭代器的代码位置可能相差十万八千里,调试打断点估计都不好找位置🤣
94 天前
回复了 WilliamColton 创建的主题 问与答 Go 新手求教
我之前也有做过,但我建议你试试下面的代码。我推测你上面有 defer 关闭链接的代码,因此你后面没有等 2 个 CopyData 同时结束就退出函数导致执行关闭连接,而你第一个协程的 go CopyData(srcConn, dstConn, cipher) 里面代码还在对连接进行读写操作,这时就有数据竞争问题。你可以用 go build -race 之后的程序运行,会打印数据竞争问题。

defer srcConn.Close()
defer dstConn.Close()

// 改成如下代码试试
ok := make(chan struct{})
go func() {
CopyData(srcConn, dstConn, cipher)
ok <- struct{}{}
}()
CopyData(dstConn, srcConn, cipher)
<-ok
@Jokesy 运维第二课是不是:chmod 000 / -R ,😂😂
99 天前
回复了 djangovcps 创建的主题 全球工单系统 雪球好像爆了?
垃圾雪球,我注销账号提示我有没有结清的基金啥的。我全都卖完了也不行,我想取消所有银行卡绑定,结果最后一张卡死活不让解绑。最后没办法,只能卸载不管了,结果还隔三岔五发广告短信。
99 天前
回复了 inu1255 创建的主题 Windows [求推荐] windows 上有什么好的进程守护软件
https://github.com/ochinchina/supervisord/releases

这个支持以 window 服务运行,对标 python 那个 supervisor ,但这个单文件无依赖。
是否用的 tls1.3 吗?我自建 https 服务器不在国内,用 tls1.3 速度没有 tls1.2 快,具体原因不知道。
https://keepass.info/download.html

https://i.imgur.com/jBO0FcI.png

电脑我用 keeweb ,手机用 KeePass2Android
数据自建 webdav 。
104 天前
回复了 chengiri 创建的主题 随想 哪一瞬间觉得自己真的老了..
电子阳痿了,甚至没有娱乐的兴趣。
104 天前
回复了 awanganddong 创建的主题 Go 编程语言 golang 依赖循环的问题。
A 依赖 B 的代码,和 B 依赖 A 的代码,提取出来放到 C 包里面,这样 A 依赖 C ,B 依赖 C 就行了。
1  2  3  4  5  6  7  8  9  10 ... 21  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2964 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 44ms · UTC 14:36 · PVG 22:36 · LAX 06:36 · JFK 09:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.