1.WireGuard 教程:使用 DNS-SD 进行 NAT-to-NAT 穿透
2.qt怎么学习?有不有比较好的资料?
3.啄木鸟Woodpecker外汇智能量化对冲机器人,典型的短命资金盘!!
4.go语言数据类型?
5.总算找到啦!上万字超详细的跨境电商独立站保姆级图文教程,小白也能半小时完成!hybbs源码 插件
WireGuard 教程:使用 DNS-SD 进行 NAT-to-NAT 穿透
原文链接: fuckcloudnative.io/post...
WireGuard 是由 Jason A. Donenfeld 等人创建的下一代开源 *** 协议,旨在解决许多困扰 IPSec/IKEv2、Open*** 或 L2TP 等其他 *** 协议的问题。 年 1 月 日,WireGuard 正式合并进入 Linux 5.6 内核主线。
利用 WireGuard 我们可以实现很多非常奇妙的功能,比如跨公有云组建 Kubernetes 集群,本地直接访问公有云 Kubernetes 集群中的 Pod IP 和 Service IP,在家中没有公网 IP 的情况下直连家中的设备,等等。
如果你是第一次听说 WireGuard,建议你花点时间看看我之前写的 WireGuard 工作原理。然后可以参考下面两篇文章来快速上手:
如果遇到某些细节不太明白的,再去参考 WireGuard 配置详解。
本文将探讨 WireGuard 使用过程中遇到的一个重大难题:如何使两个位于 NAT 后面(且没有指定公网出口)的客户端之间直接建立连接。
WireGuard 不区分服务端和客户端,大家都是客户端,与自己连接的所有客户端都被称之为Peer。
1. IP 不固定的 Peer
WireGuard 的核心部分是 加密密钥路由(Cryptokey Routing),它的工作原理是将公钥和 IP 地址列表(AllowedIPs)关联起来。每一个网络接口都有一个私钥和一个 Peer 列表,每一个 Peer 都有一个公钥和 IP 地址列表。发送数据时,可以把 IP 地址列表看成路由表;接收数据时,可以把 IP 地址列表看成访问控制列表。
公钥和 IP 地址列表的关联组成了 Peer 的必要配置,从隧道验证的角度看,根本不需要 Peer 具备静态 IP 地址。理论上,如果 Peer 的 IP 地址不同时发生变化,WireGuard 是可以实现 IP 漫游的。
现在回到最初的问题:假设两个 Peer 都在 NAT 后面,且这个 NAT 不受我们控制,无法配置 UDP 端口转发,mvn 源码到target即无法指定公网出口,要想建立连接,不仅要动态发现 Peer 的 IP 地址,还要发现 Peer 的端口。
找了一圈下来,现有的工具根本无法实现这个需求,本文将致力于不对 WireGuard 源码做任何改动的情况下实现上述需求。
2. 中心辐射型网络拓扑
你可能会问我为什么不使用 中心辐射型(hub-and-spoke)网络拓扑?中心辐射型网络有一个 *** 网关,这个网关通常都有一个静态 IP 地址,其他所有的客户端都需要连接这个 *** 网关,再由网关将流量转发到其他的客户端。假设 Alice 和 Bob 都位于 NAT 后面,那么 Alice 和 Bob 都要和网关建立隧道,然后 Alice 和 Bob 之间就可以通过 *** 网关转发流量来实现相互通信。
其实这个方法是如今大家都在用的方法,已经没什么可说的了,缺点相当明显:
本文想探讨的是Alice 和 Bob 之间直接建立隧道,中心辐射型(hub-and-spoke)网络拓扑是无法做到的。
3. NAT 穿透
要想在Alice 和 Bob 之间直接建立一个 WireGuard 隧道,就需要它们能够穿过挡在它们面前的 NAT。由于 WireGuard 是通过 UDP 来相互通信的,所以理论上 UDP 打洞(UDP hole punching) 是最佳选择。
UDP 打洞(UDP hole punching)利用了这样一个事实:大多数 NAT 在将入站数据包与现有的连接进行匹配时都很宽松。这样就可以重复使用端口状态来打洞,因为 NAT 路由器不会限制只接收来自原始目的地址(信使服务器)的流量,其他客户端的流量也可以接收。
举个例子,假设Alice 向新主机 Carol 发送一个 UDP 数据包,而 Bob 此时通过某种方法获取到了 Alice 的 NAT 在地址转换过程中使用的出站源 IP:Port,Bob 就可以向这个 IP:Port(2.2.2.2:) 发送 UDP 数据包来和 Alice 建立联系。
其实上面讨论的就是完全圆锥型 NAT(Full cone NAT),即一对一(one-to-one)NAT。它具有以下特点:
大部分的 NAT 都是这种 NAT,对于其他少数不常见的 NAT,这种打洞方法有一定的局限性,无法顺利使用。
4. STUN
回到上面的例子,UDP 打洞过程中有几个问题至关重要:
RFC 关于 STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)的劲舞娃娃辅助源码详细描述中定义了一个协议回答了上面的一部分问题,这是一篇内容很长的 RFC,所以我将尽我所能对其进行总结。先提醒一下,STUN 并不能直接解决上面的问题,它只是个扳手,你还得拿他去打造一个称手的工具:
STUN 本身并不是 NAT 穿透问题的解决方案,它只是定义了一个机制,你可以用这个机制来组建实际的解决方案。 — RFC
STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的 NAT 之后以及 NAT 为某一个本地端口所绑定的公网端口。这些信息被用来在两个同时处于 NAT 路由器之后的主机之间建立 UDP 通信。该协议由 RFC 定义。
STUN 是一个客户端-服务端协议,在上图的例子中,Alice 是客户端,Carol 是服务端。Alice 向 Carol 发送一个 STUN Binding 请求,当 Binding 请求通过 Alice 的 NAT 时,源 IP:Port 会被重写。当 Carol 收到 Binding 请求后,会将三层和四层的源 IP:Port 复制到 Binding 响应的有效载荷中,并将其发送给 Alice。Binding 响应通过 Alice 的 NAT 转发到内网的 Alice,此时的目标 IP:Port 被重写成了内网地址,但有效载荷保持不变。Alice 收到 Binding 响应后,就会意识到这个 Socket 的公网 IP:Port 是 2.2.2.2:。
然而,STUN 并不是一个完整的解决方案,它只是提供了这么一种机制,让应用程序获取到它的公网 IP:Port,但 STUN 并没有提供具体的方法来向相关方向发出信号。如果要重头编写一个具有 NAT 穿透功能的应用,肯定要利用 STUN 来实现。当然,明智的js 动画源码下载做法是不修改 WireGuard 的源码,最好是借鉴 STUN 的概念来实现。总之,不管如何,都需要一个拥有静态公网地址的主机来充当信使服务器。
5. NAT 穿透示例
早在 年 8 月...
qt怎么学习?有不有比较好的资料?
学习Qt可以参考以下资源:
### 二、推荐的Qt论坛+个人博客+网站
| 名称 | 网址 |
| ------ | ------ |
|qtcn | [qtcn.org]( qtcn.org) |
|豆子的空间 | [DevBean Tech World]( DevBean Tech World) |
|yafeilinux | [qt qml linux 嵌入式 教程!]( qt qml linux 嵌入式 教程!) |
|一去二三里 | [blog.csdn.net/liang...]( blog.csdn.net/liang...) |
|乌托邦2号 | [blog.csdn.net/taiyang...]( blog.csdn.net/taiyang...) |
|foruok | [blog.csdn.net/foruok]( blog.csdn.net/foruok) |
|jason | [blog.csdn.net/wsj...]( blog.csdn.net/wsj...) |
|朝十晚八 | [朝十晚八 - 博客园]( 朝十晚八 - 博客园) |
|BIG_C_GOD | [blog.csdn.net/big_c_god]( blog.csdn.net/big_c_god) |
|公孙二狗 | [qtdebug.com/qtbook]( qtdebug.com/qtbook) |
|雨田哥 | [blog.csdn.net/ly...]( blog.csdn.net/ly...) |
|郑天佐 | [blog.csdn.net/zhengtian...]( blog.csdn.net/zhengtian...) |
|寒山-居士 | [blog.csdn.net/esonpo]( blog.csdn.net/esonpo) |
|feiyangqingyun | [blog.csdn.net/feiyangqi...]( blog.csdn.net/feiyangqi...) |
|前行中小猪 | [blog.csdn.net/goforward...]( blog.csdn.net/goforward...) |
|涛哥的知乎专栏 | [Qt进阶之路]( Qt进阶之路) |
|Qt君 | [blog.csdn.net/nicai_xia...]( blog.csdn.net/nicai_xia...) |
|Qt老外视频教程 | [哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili]( 哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili) |
|Qt维基补充文档 | [Qt Wiki]( wiki.qt.io/Main) |
|Qt源码查看网站 | [qt5/ Source Tree - Woboq Code Browser]( code.woboq.org/qt5) |
|Qt官方下载地址 | [Index of /]( download.qt.io) |
|Qt国内镜像下载地址 | [Index of /qt/]( Index of /qt/) |
### 三、其他
- **入门书籍**:《Qt Creator快速入门》(霍亚飞)、《C++ GUI Qt4编程》(Qt官方)、《Qt5编程入门》(qml书籍)。
- **自我修养与规划**:《大话程序员》《程序员的成长课》《解忧程序员》系列书籍,对个人发展极有帮助。
啄木鸟Woodpecker外汇智能量化对冲机器人,典型的短命资金盘!!
本文揭露了名为啄木鸟Woodpecker外汇智能量化对冲机器人的投资骗局,它被定性为典型的短命资金盘。项目方声称与香港尚乘集团(AMTD)关联,但实际上存在诸多虚假信息和不实背景。团队成员身份虚假,如所谓的金融顾问Jason实际上是军工集团Leonardo的CEO,而项目方的股权结构和融资声明也存在问题,缺乏实质性的证据支持。
该机器人的盈利模式不可靠,所谓的自动套利被质疑为虚假陈述。项目方的包装手法低劣,通过请外国演员自导自演和操纵媒体宣传来营造虚假形象。且公司没有必要的金融托管资质,其业务在法律上可能不合法。此外,网站源代码中的汉语拼音暴露了项目团队的真实国籍,进一步揭示了其中国背景。
啄木鸟项目的制度设计也是其短命的关键因素,晋升难度低且团队收益有限,导致投资者主要追求静态收益而非拉人发展,这与典型的资金盘模式截然不同。因此,它的存活周期一般不超过三个月,风险极高。鉴于此,tcl 源码安装软件建议谨慎对待并避免参与此类投资,因其多半是短期诈骗行为。
go语言数据类型?
Go语言之基本数据类型与string类型之间的转换
1、对于第1步,我将把JSON解组到map[string]string中,如下所示:b,err:=ioutil.ReadFile(fname)mp:=make(map[string]string)json.Unmarshal(b,&mp)转到步骤2。
2、这是利用java的toString机制来做的转换,任何类型在和String相加的时候,都会先转换成String。方法2:inti=;Strings=String.valueOf(i);这是利用String类提供的工厂方法来做的转换。
3、将字符串类型首字母大写。除了int型为Integer.parseInt字符串。其他类似,例如Float.parseFloat字符串,都可将字符串类型首字母大写而转化为其他数据类型。
4、string转成int是:有些一串数字是string类型的,就做不了加减算法或者if判断大小,所以需要转int类型才可以实现这些操作。项目开发中String字符串和int整型之间的转换操作是很常见的。string是字符串类型,int是整型数值类型。
没有类,C语言有结构体,那么Go的结构体有什么特别之处?作为C语言家族的一员,go和c一样也支持结构体。可以类比于java的一个POJO。在学习定义结构体之前,先学习下定义一个新类型。
C语言中的结构体可以定义一些复杂数据类型,把一些有内在联系的不同变量放在一起封装成一个整体,这就是结构体。例如:以学生为例,学生存在学号,姓名,性别,班级等。
只不过结构体可以做成你想要的数据类型。以方便日后的使用。在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。结构体在函数中的作用不是简便,其最主要的作用就是封装。
C语言中是没有类的概念的,但是C语言可以通过结构体内创建函数指针实现面向对象思想。
主要来说:1)C的结构体不存在继承接口和构造函数等,但是C#的结构可以继承接口,以及有必须带参数的构造函数。2)C的结构体没有属性,缺省情况下变量直接暴露在外边被访问;C#还可以为变量提供属性访问。
golang原生数据类型golang原生数据类型:按长度:int8(--)、int1int3int。无符号整型:uint8(0-)、uint1uint3uint。int:位操作系统上就是int,位操作系统上就是int。
按存储方式也有两大类数据类型:值类型:变量直接存储值。值类型的数据存储在栈内存空间中,栈在函数调f返回后,内存会被释放。引用类型:变量存储的是一个地址,这个地址存储最终的值。
是一种轻量级的数据交换格式,用于在不同系统之间传递数据。它是一种文本格式,具有易读性和可移植性,它的格式类似于JavaScript对象的表示形式。Golang中的JSON类型提供了将JSON数据转换为Go的数据结构的功能。
下表列出了go语言的数据类型:int、float、bool、string、数组和struct属于值类型,这些类型的变量直接指向存在内存中的值;slice、map、chan、pointer等是引用类型,存储的是一个地址,这个地址存储最终的值。
len(str))或者使用+连接:字符串可以通过数组下标方式访问其中的字符,一旦初始化后,内容不能修改连接:切片:左闭右开区间底层字符类型:UTF-8编码按照上述方法转换会变乱码,因为一个中文字符编码需要三个字节。
Go语言处理JSon字段1、但在处理html标签字符中,会存在转义问题。Marshal方法默认把html标签中的,,&字符转义成unicode,为强制为有效UTF-8的JSON字符串,用Unicode替换符号替换无效字节。
2、SON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,用于在不同系统之间传递数据。它是一种文本格式,具有易读性和可移植性,它的格式类似于JavaScript对象的表示形式。
3、使用encoding包中json文件中的marshal和unmarshal函数来序列化和反序列化即可。
4、文件错误。如果该文件存在,初步判断该文件出错,可以找台正常电脑上可用mapgissection的该文件覆盖下就打开了。Jason是一个Go语言用来处理JSON文档的开发包。Jason的强项是解析而不是生成。
5、安装EasyDataTransform在Mac上就可以解决。安装EasyDataTransform在Mac上,开始轻松的数据转换,将要显示重复项的Excel电子表格拖到EasyDataTransform上。
go语言小白求助,为什么多态的接受的数据类型是接口,但是可以给他传输对...
1、因为结构Student和Teacher实现接口Human的方法SayHello时,接受的是通过一个指针类型的变量(见(s*Student)和(t*Teacher))来调用这个方法。
2、go严格上说没有多态,但可以利用接口进行,对于都实现了同一接口的两种对象,可以进行类似地向上转型,并且在此时可以对方法进行多态路由分发。
3、Go语言给人的感觉就是太直接了,什么都直接,读源代码直接,写自己的代码也直接。
4、Go:最近一段时间流行起来的语言,在面对高并发等场景下有天然的优势。Go语言有自己独到的特性,同时也可以支持一些C语言的能力,而且也越来越在国内的互联网公司作为首选开发语言之一。
5、三种编程语言我都学过,C++和这三门编程语言中,最简单的是Python,其次是Java,最难的是C++。这三种语言都比较容易入门,掌握其基础语法,数据类型,控制结构,面向对象,即可。
6、Python以优雅、简洁著称,入行门槛低,可以从事Linux运维、PythonWeb网站工程师、Python自动化测试、数据分析、人工智能等职位,薪资待遇呈上涨趋势。2入门python需要那些准备?1心态准备。
Go之回调函数高阶函数:根据go语言的数据类型的特点,可以将一个函数作为另一个函数的参数fun1(),fun2()将fun1函数作为fun2这个函数的参数。
直接使用基础库httputil提供的NewSingleHostReverseProxy即可,返回的reverseProxy对象实现了serveHttp方法,因此可以直接作为handler。
容易产生歧义!定义函数如下:deffunc(alist=None,blist)调用方式为func(lista),当lista对应于参数blist则函数调用正确,如果对应于alist,则函数调用错误。
总算找到啦!上万字超详细的跨境电商独立站保姆级图文教程,小白也能半小时完成!
终于找到了!这份详尽无比的跨境电商独立站新手指南,即使是小白也能在半小时内上手!
跨境电商独立站并非易事,无论是亚马逊还是自主经营,许多人都经历过从零开始的艰难历程。时间的积累,经验的教训,以及宝贵的资源,都是在坚持中逐渐获取的。作者Jason亲身经历了这个行业3年的磨砺,从一无所知到掌握专业技能,他决定分享自己的经验,帮助大家少走弯路,迅速掌握独立站电商的专业知识。
教程将从搭建独立站开始,无论是从亚马逊转型,还是传统电商新手,建立自己的电商站点是入门的首要步骤。但要注意,如果你不具备技术背景,直接使用传统Wp源码建站可能是个挑战。因为你不仅需要购买域名,还要选择适合的建站系统。而依赖外包可能让你在订单和访客增加时陷入技术依赖的困境,增加不必要的成本。
如今,saas系统已经成为独立站搭建的主流选择,因为它们能提高效率并提供丰富的生态插件和售后服务。saas系统大致分为两种类型,一种是国外公司的产品,需要自学;另一种是国内团队研发,提供微信客服支持,能快速解决问题,避免自行摸索的困扰。
接下来的图文教程将指导你完成基础设置:绑定域名,设置店铺信息,选择免费模板,添加商品和专辑,以及物流、税费和支付的设置。使用采集工具快速上架商品,店铺装修则如拼积木般简单,只需参考同行风格即可。整个过程,如果遇到问题,可以随时私信寻求帮助,半小时左右即可完成基础搭建。
搭建工作完成后,我们将在下一篇文章中探讨流量获取策略。如果你在搭建过程中有任何疑问,欢迎随时交流学习!
2024-11-23 12:28
2024-11-23 12:22
2024-11-23 12:22
2024-11-23 11:40
2024-11-23 10:31
2024-11-23 10:09
2024-11-23 09:59
2024-11-23 09:48