Go语言中文网 为您找到相关结果 58

Golang分布式设计模式之-----分层设计

提到分布式系统,我们会想到很多机器,分别部署着各自的服务,然后整体组成一个分布式系统。在这类系统中,分布式系统与常规的集中式系统存在着以下三个区别。(来自分布式算法导论) 1、缺乏全局状态知识 2、缺乏全局时间帧 3、非确定性 这三大特点也成为分布式系统设计的难点。也正是如此,分布式系统的设计比常规的集中式系统要难的多。为了区别,我们称这种分布式系统为,群体分布式。这种犹如社会群体。 golang语言天生具有分布式的特点,其主要是基于协程与chan的概念。如果对golang不了解的人可以简单的去看看golang语言。 有了golang语言,我们的可执行程序,也可以设计成分布式。一个可执行程序设计成分布式,这种分布式我们成为单体分布式。这种犹如,个体,存在着很多的部件。 其与群体分布式的区别在...阅读全文

博文 2014-10-09 21:00:09 screscent

golang socket编程

osi参考模型将计算机网络结构分为7个层次,但是在实际的开发应用中,我们更加认可TCP/IP族协议的五层结构,即应用层(http、ftp、dns),传输层(udp、tcp),网络层(ip),链路层(以太网),物理层。 socket编程作为一种基于网络层和传输层的数据io模式主要分为两种,TCP Socket和UDP Socket,也即面向连接的流式Socket和面向无连接的数据报式Socket。 今天主要和大家讲讲golang的TCP Socket编程。先来看个简单的例子吧 server.go //模拟server端 func main() { tcpServer, _ := net.ResolveTCPAddr("tcp4", ":8080") listener, _ := net.Lis...阅读全文

博文 2017-11-30 15:03:06 ssdut_buster

Go语言使用Scp传输文件

package main import ( "fmt" "go-ssh/ssh" "io" "os" ) const ( user = "user" ip_port = "ip_port" password = "Passwd" ) func main() { PassWd := []ssh.AuthMethod{ssh.Password(password)} Conf := ssh.ClientConfig{User: user, Auth: PassWd} Client, err := ssh.Dial("tcp", ip_port, &Conf) if err != nil { fmt.Println(nil) } defer Client.Close() if session, er...阅读全文

博文 2015-06-17 23:06:59 fyxichen

golang实现给图片加水印

最近跟在写golang图片加水印的方法,这里用的是一些基本的功能。 package main import ( "fmt" "image" "image/draw" "image/jpeg" "image/png" "os" ) func main() { //图片,网上随便找了一张 img_file, err := os.Open("bg.jpg") if err != nil { fmt.Println("打开图片出错") fmt.Println(err) os.Exit(-1) } defer img_file.Close() img, err := jpeg.Decode(img_file) if err != nil { fmt.Println("把图片解码为结构体时出错") fm...阅读全文

博文 2017-12-25 06:33:06 迷路的阿修罗

使用go的ssh包快速打造一个本地命令行ssh客户端

在开始之前,先来个热身运动。虽然标题党写着快速打造一个ssh客户端,但是和跑步一样,在运动前还是需要先热身一下,不然到时候身体(大脑)会吃不消。所以,在开始前,我们先来科普一下ssh的一些东西。 先来说说ssh,这里的ssh是指由IETF的网络小组(Network Working Group)所制定的为建立在应用层和传输层基础上的安全协议。(对于了解这个协议的请忽略本段文字)点这里了解更多ssh介绍 写过java web应用的同学应该还知道另一个ssh(struts+spring+hibernate),当然今天的主角并不是它。 其实接触过后端开发的同学对于ssh应该都不陌生,可能每天你都在使用它,没错,当你要远程登录服务器的时候,大多数情况下都离不开它,俨然已经成为Linux系统的标准配置。...阅读全文

博文 2016-06-22 10:00:00 vimsk

阿里云解析智能线路,成就完美访问!

阿里云解析一直致力于为全球域名用户提供稳定、安全、高效、智能的解析服务,从万网时代 开始,延续到现在已经走过了20年的时间。今天,来自全球超过百万的用户,接近千万级的域名,在信任并使用着云解析的服务。 2014年,云解析正式宣布支持第三方域名的解析,将服务范围从原来单纯的万网域名,扩展到支持全世界将近2000多个后缀的域名,而这一数字仍然在持续增加。 2015年10月,云解析正式推出企业付费版本,为广大企业用户提供一系列高可用、高稳定性、高安全性的解析服务方案,满足不同企业不同规模不同方向的用户需求。 2016年4月,云解析再次“壕”华升级,宣布全面支持多线路运营商分省智能解析和多线路海外国家智能解析。覆盖范围包括移动、联通、电信、教育网的全国31个省市,也包括了海外6个大洲34个...阅读全文

Golang创建最简单的HTTP和HTTPS服务

Golang可以用很短的代码实现HTTP和HTTPS服务 HTTP服务 HTTP是基于传输层TCP协议的。 package main import ( "net/http" "fmt" "log" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){ fmt.Fprint(w, "Hello world") }) log.Fatal(http.ListenAndServe(":5001", nil)) } HTTPS服务 HTTPS服务不同于HTTP服务,HTTPS是HTTP over SSL或HTTP over TLS。 SSL是“Secure Sockets Layer”的缩写...阅读全文

博文 2018-09-20 16:34:43 肥羊

Android 系统架构的核心层 — 框架层

Android系统架构包括应用层、框架层、硬件抽象层等,但其中最核心、最重要的还是框架层,这个层级是Android系统设计思想集中体现的部分,提供了大量的 API 供开发者调用,而弄清楚这些 API 的具体功能和用法则是 Android 应用程序开发过程中最为重要的环节。 框架层不只是应用程序开发的基础,也是软件复用的重要手段,任何一个应用程序都可以发布它的功能模块——只要发布时遵守了框架层的约定,那么其他的应用程序也可以使用这个模块。 框架层由多个系统服务(SystemService)组成,包括组件管理服务、窗口管理服务、地理信息服务、电源管理服务、通话管理服务等。所有的系统服务都寄宿在系统核心进程(System Core Process)中,在运行时,每个服务...阅读全文

编程实现可靠数据传输原理Go-Back-N

有一个计算机网络的实验,需要模拟GBN的过程,即在本地条件下模拟丢包重传机制。刚看到这个实验时有些不知所措,因为不知道怎样能实现丢包,在本地编程,即使是使用不可靠数据传输UDP的DatagramSocket,由于localhost到localhost走的是回环链路,也就是从客户机的应用层--传输层--网络层 到 服务器的网络层--传输层--应用层,这个肯定无法丢包,也用实验进行验证了(比如连续发送1万个DatagramPacket,发现每一个都被收到了)。 那么问题来了,怎样才能丢包? 通过前面的叙述,可知在链路上丢包是不可能的了,那我们可以从服务器端下手,也就是说,即使服务器收到了某个数据包,也不给客户机发ACK,那么到了客户机设置的定时器后,客户机自然就认为是丢包了。所以可以给服务器设置...阅读全文

博文 2015-12-15 22:00:02 icodeyou

QQ空间已在生产环境中使用QUIC协议

QUIC(Quick UDP Internet Connections,发音’quick’)是Google于2013年发布的基于UDP的多路传输协议,它的主要目标是为了整合TCP协议的可靠性和UDP协议的速度和效率,以降低延迟,提高用户体验。 Google通过大规模的性能分析发现,“相对于TCP而言,QUIC的性能有了真正的进步”,这得益于QUIC的以下特性: 低延迟链接的建立,这对已建立的链接很有好处。在这种情况下,Google搜索页面的平均加载时间缩减了3%。 改进拥塞控制和丢包恢复机制,这在糟糕的网络环境中尤为重要。在这种情况下,Google搜索页面在“最慢的1%的连接”中节省了整整1秒的时间,并且观看基于QUIC的YouTube视频时会减少高达30%的数据重缓存。 据了解,QQ 空间...阅读全文

博文 2017-10-13 06:39:19 郭蕾

golang web sample

一、学习想法 用两天的时间学习golang,但这次是先不看书的,直接写代码先。 我们常习惯边看书边学习写代码,但发现过程是比较缓慢的,所以我就先想写代码, 边写边查。就我们所知,web app一般是基于MVC框架,那么我可以先写数据层,从先写 数据库查数据开始,可以用DAO模式,但这里我只是用一个简单的sample,没有那么复杂。 接着写完数据层,再写视图层,视图层即为app逻辑层;之后再写http前端渲染层。 一步一步,遇到不懂就查。 二、学习资源 Golang电子书 An Introduction to Programming in Go.pdf Network programming with Go.pdf Programming in Go.pdf The Go Programmin...阅读全文

博文 2014-10-04 19:26:14 zhuangzebo

区块链数字货币承兑商支付系统开发

区块链数字货币承兑商支付系统开发 数字货币承兑系统怎样的? 入金简述:加密支付系统运用了类似于支付宝的担保交易机制,结合独有的点对点传输技术、实时清算引擎、智能数字钱包、极高的网络平安体系,跨交易所最优价格兑换引擎等区块链技术。终端客户只需在入金界面设置好充值金额,向USDT承兑商支付人民**//币,即可自动完成数字货币的购买、充值、交割、双向承兑等所有操作,五分钟之内把数字货币胜利支付和清算至平台商户后台,完成客户入金操作。 同样的原理,终端客户出金,提交出金申请确认后,系统将自动把相应数量的数字货币折算成人民币,由USDT承兑商结算至客户绑定银行卡。客户入金与出金均通过数字货币承兑商进行结算,与平台没有直接的资金往来。整个支付交易过程简化为:基于区块链技术+预先冻结锁定+人工审核(也可以...阅读全文

博文 2019-08-22 17:55:55 d13826553501

Socket 网络隧道 qTunnel

qTunnel 是 getqujing.com 使用的安全套接字隧道,是 [Stunnel/stud](http://www.oschina.net/p/stud) 的替代品。qTunnel 使用 Go 编写,为了提高数据传输率,它去掉了认证设置和 SSL 握手。         使用:

$ ./bin/qtunnel -h
Usage of ./bin/qtunnel:
    -backend="127.0.0.1:6400": host:port of the backend
    -clientmode=false: if running at ...阅读全文

打消数据上云的最大顾虑 众安保险为阿里云用户推出数据安全险

![云上安全(小图).jpg](http://studygolang.qiniudn.com/160127/758ba52c0f12b6559909386320258fe5.jpg) 自保险于1384年在佛罗伦萨诞生以来,它对生活的影响从未像本世纪这么大。 2016年1月中旬,阿里云市场上线第一份数据保险——由众安保险提供的数据安全险,为企业虚拟资产数据的安全承保。用户投保后,一旦发生因黑客入侵引发的数据泄露,将由众安保险公司提供最高100万元的现金赔偿,最大限度降低客户损失。这是国内第一份专保黑客盗取云计算数据的保险,意味着DT时代数据的价值正在被各方认可,而保险的推出也将推动企业更广泛地使用云计算。 DT时代,数据已成企业核心资产,而数据的安全则涉及多个环节。 在...阅读全文

go tcp通信

go 的tcp的应用层代码看起来极为简单1,多个协程同时Accept , 不知道这种实现有没有什么问题2,多个协程同时处理网络IO事件, 貌似意味着, 有多少个连接过来就需要有多少个协程了, 对于go来说,一个进程支持足够都的协程, 远远大于带宽的限制服务端代码ackage main import ( "net" "time" "fmt" ) func ca(){ a := recover() fmt.Println("Catch", a) } func main(){ defer ca() fmt.Println("main start") L, e:=net.Listen("tcp", "127.0.0.1:7878") if e != nil{ fmt.Println("this is...阅读全文

博文 2017-07-15 14:43:02 jinjiashan

Go中链路层套接字的实践

介绍 接上次的博客,按照约定的划分,还有一层链路层socket。这一层就可以自定义链路层的协议头部(header)了,下面是目前主流的Ethernet 2(以太网)标准的头部: 相比IP和TCP的头部,以太网的头部要简单些,仅有目标MAC地址,源MAC地址,数据协议类型(比如常见的IP和ARP协议)。 但多了尾部的FCS(帧校验序列),用的是CRC校验法。如果校验错误,直接丢弃掉,不会送到上层的协议栈中,链路层只保证数据帧的正确性(丢掉错误的)。具体数据报的完整性由上层控制,比如TCP重传。链路层最大长度是1518字节,除去18字节的头部和尾部,只剩1500字节,也就是MTU(最大传输单元)的由来,并约定最小传输长度64字节。 服务端 用 ifonfig 查看本机的网络设备(网卡):eth0...阅读全文

博文 2018-07-17 10:35:17 wuhui115

如何指定https在传输数据过程中的加密算法?

最近在学习https,对大概有了个了解,基本都是说先采用RSA进行握手,三次握手后协商出一个对成密钥来进行对成加密,但问题是这个对成加密的算法是什么?我们怎么指定呢,比如指定用AES等等。是在openssl生成证书时配置还是自己在代码里实现阿...阅读全文

TODO:Golang UDP连接简单测试慎用Deadline

TODO:Golang UDP连接简单测试慎用DeadlineUDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。 1.Golang UDP服务 package main import ( “f...阅读全文

博文 2017-02-10 15:49:47 OneTODO

p2p通信协议族的结构设计

在上文的介绍中,出现了多处有关p2p通信协议的结构类型,比如eth.peer,p2p.Peer,Server等等。这里不妨对这些p2p通信协议族的结构一并作个总解。以太坊中用到的p2p通信协议族的结构类型,大致可分为三层: 第一层处于pkg eth中,可以直接被eth.Ethereum,eth.ProtocolManager等顶层管理模块使用,在类型声明上也明显考虑了eth.Ethereum的使用特点。典型的有eth.peer{}, eth.peerSet{},其中peerSet是peer的集合类型,而eth.peer代表了远端通信对象和其所有通信操作,它封装更底层的p2p.Peer对象以及读写通道等。 第二层属于pkg p2p,可认为是泛化的p2p通信结构,比较典型的结构类型包括代表远端通...阅读全文

博文 2018-07-16 00:34:45 豆瓣奶茶

hex和base32和base64的区别与联系

基本概念 hex也称为base16,意思是使用16个可见字符来表示一个二进制数组,编码后数据大小将翻倍,因为1个字符需要用2个可见字符来表示。 base32,意思是使用32个可见字符来表示一个二进制数组,编码后数据大小变成原来的8/5,也即5个字符用8个可见字符表示,但是最后如果不足8个字符,将用=来补充。 base64,意思是使用64个可见字符来表示一个二进制数组,编码后数据大小变成原来的4/3,也即3个字符用4个可见字符来表示。 用例 看个例子: package main import "fmt" import "encoding/hex" import "encoding/base32" import "encoding/base64" func main() { s := "hell...阅读全文

博文 2017-08-28 02:35:02 因心而来

Kotlin---协程(Coroutine)介绍

线程与进程 进程拥有代码和打开的文件资源、数据资源、独立的内存空间。 线程属于进程,是CPU执行的最小单元。一个进程至少包含一个主线程,也可以拥有多个子线程。线程拥有独立的栈空间。而各个线程共享着进程的代码、内存 、文件FD等。 进程与线程 而线程有如下几种状态: 初始化 可执行 执行中 阻塞 销毁 image.png 线程的调度 对于线程调度,Linux以及其他的操作系统都采用了CFS调度策略(完全公平调度),在操作系统的Ring0的层面来进行线程的调度,来保证每个线程可以根据nice值以及其他的策略来保证每个线程所执行的虚拟时间相对公平。 每次线程的切换,都必须通过系统调用从Ring3的应用层调用到Ring0的内核层进行切换,而在内核层保存切换的线程Context,包括当前各个寄存器的值...阅读全文

博文 2018-12-14 16:34:43 None_Ling

HTTP、TCP、UDP、Socket解读

1、导读 记得上大学时上过《计算机网络基础》专门课,当时真是单纯善良无知,觉得我以后又不搞网络这一块的东西,没必要好好学习计算机网络这们课程,只要考试通过就行了。但是工作后的我发现,不管是我们是不是做软件开发,都会多多少少接触接触到计算机网络,因为计算机网络无处不在。平时生活中我们要接触到路由器,交换机,dns,ping,修改dns等等这些基本的操作,作为软件开发者,我们要接触到tcp、udp、http、tcp连接三次握手,断开四次挥手、socket等等这些专业点的知识,真是这些专业点的知识真是书到用时方恨少啊,接下来我们就好好复习吧。 OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互...阅读全文

golang打印金字塔

上一篇文章学习如何使用for循环实现矩形,现在学习一下如何运用golang打印出金字塔首先简单实现一个3层金字塔package main import ( "fmt" ) func main() { //i表示总层数 for i :=1 ; i <=3; i++ { //在打印*前先打印空格,空格的规律为 总层数-当前层数 for j:= 1; j <= 3-i; j++ { fmt.Print(" ") } //k表示每层打印多少*,规律为 2 * i - 1 for k :=1; k <= 2 * i - 1; k++{ fmt.Print("*") } //打印一行后换行 fmt.Println() } }运行结果如下​然后在上面的基础上我们定义一个变量 row 控制一下层数。var ...阅读全文

博文 2019-02-14 12:45:03 go-gz

TODO:Golang UDP连接简单测试慎用Deadline

TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。 1.Golang UDP服务 package main import ( “...阅读全文

博文 2016-11-10 11:00:06 一个TODO

基于UDP协议可靠传输协议QUIC协议和golang server代码和client代码

一. QUIC 的基本特点 基于UDP的多路传输(单连接下); 极低的等待时延(相比于TCP的三次握手); 快速迭代更新; 开源于Chromium项目中。 首先,QUIC为 传输层 协议,与TCP、UDP、SCTP同级。所以肯定会 在一定范围内 同现有的传输层协议构成竞争关系。 二. 为什么不用TCP TCP由于基于操作系统内核实现,发展速度极慢,现有的TCP Fast Open实现等等虽然早已存在于标准中但是实际应用情况及其落后,即便除非所有机器的操作系统都更新到最新,否则考虑到兼容性不太可能大范围采用新技术。 QUIC直接基于客户端实现,而非基于系统内核(这点有点像最新的.Net Core),可以进行快速迭代更新,不需要操作系统内核层面的更改。 (TCP的性能缺陷将在下文中说明)。 像S...阅读全文

博文 2019-02-25 15:21:20 Dende

基于Go的多级正向代理服务器

前言:在实际项目中,经常会对一些非重要非紧急的数据采取网络爬虫手段抓取到本地,以达到节约成本的目的,但是站点对数据访问地来源有频率限制。很多码农会使用网络上免费的,多渠道的代理来解决频率限制的问题,由于是免费的,所以代理不是很稳定,这样导致每个工程需要花大量的时间和逻辑处理代理选择,失败重试的问题,并最终导致了应用代码的复杂性。本文采用多级代理的方法,第一级代理解决所有问题,用户只需要简单的使用第一级的代理。 基本思路:开发一个代理的代理模块,对应用层屏蔽掉上述问题。 下面是经验和学习的总结 1、正向代理转发原理 理解正向代理与反向代理原理的区别是快速编码的关键 正向代理是知道真正的目标服务器,而反向代理是不知道的,以为代理服务器就是真正的目标服务器 2、Go语言TCP Socket编程 G...阅读全文

博文 2020-01-30 14:32:38 冯本明

udp编程的那些事与golang udp的实践

udp编程的那些事与golang udp的实践 tcp/ip大协议中,tcp编程大家应该比较熟,应用的场景也很多,但是udp在现实中,应用也不少,而在大部分博文中,都很少对udp的编程进行研究,最近研究了一下udp编程,正好做个记录。 sheepbao 2017.06.15 tcp Vs udp tcp和udp都是著名的传输协议,他们都是基于ip协议,都在OSI模型中传输层。tcp我们都很清楚,它提供了可靠的数据传输,而udp我们也知道,它不提供数据传输的可靠性,只是尽力传输。 他们的特性决定了它们很大的不同,tcp提供可靠性传输,有三次握手,4次分手,相当于具有逻辑上的连接,可以知道这个tcp连接的状态,所以我们都说tcp是面向连接的socket,而udp没有握手,没有分手,也不存在逻辑上...阅读全文

博文 2018-01-16 13:31:21 sheepbao

【golang基础】socks编程相关的知识点

最近尝试自己用go实现了ss,涉及到socks相关api,这里总结一下socks编程中需要注意的知识点。 socks五元组:src_ip源ip src_port源端口 dst_ip目标ip dst_port目标端口 protocol传输协议(tcp/udp),这五个中任意一个不同就属于不同的socks,不会冲突 从上一条可知,tcp和udp可以使用同一个端口互不影响,因为protocol不同 go语言中listen和dial的src_port必须是不同的端口,否则会报错 read会阻塞,一直到连接端口或者eof(流结束) 字节序有大端和小端,大端是正序,小端是反序,网络传输一般按照大端序 一次read的数据不一定就是一次write的数据,不要臆想数据包的大小,tcp只保证按顺序送达,数据的界...阅读全文

博文 2018-04-03 15:34:42 wind5o

简单聊聊VPC和SDN/NFV

摘要: 近几年,SDN和NFV是网络界的热点,那么阿里云是如何做SDN和NFV的呢?阿里云VPC又是如何实现的呢?和SDN和NFV是什么关系呢?本文将介绍相关内容。 注:本文部分内容来自网络搜索的整合 大家都知道,目前各大云服务商都提供了VPC(Virtual Private Cloud)产品,VPC已经成为用户使用云首先需要考虑的云产品,甚至是比ECS更早需要考虑的云产品,可以说是基础中的基础。首先,我们还是来简单介绍下什么是VPC?VPC又有什么好处?再来讨论我们今天的主题,即阿里云VPC和SDN及NFV的关系。 什么是VPC 可以从下面三点来理解VPC。 首先,VPC可以认为是一个网络容器。用户可以免费开通这个容器,开通后再在这个容器中...阅读全文

使用Go实现TLS 服务器和客户端

使用Go实现TLS 服务器和客户端 传输层安全协议(Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。 SSL包含记录层(Record Layer)和传输层,记录层协议确定了传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。 本文并没有提供一个TLS的深度教程,而是提供了两个Go应用TLS的简单例子,用来演示使用G...阅读全文

博文 2019-05-14 21:34:50 VIL凌霄

golang 网络编程(2)TCP

golang_real.jpg TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。 说到网络编程我们先理解一个术语套接字,突破这个术语,我们就向理解 TCP 迈出了一大步。简单比喻一下吧,我们彼此间通过打电话或写信的进行哪种不是面对面的交流,套接字就是我们进行这些交流工具,电话机或是邮箱,仅此而已。 我们今天用 go 语言实现一个 TCP 通讯,go 语言对 TCP 进行封装来方便我们开发 TCP 服务。 package main import( "fmt" "io" "net" "time" ) func main() { ln, err := net.Listen("tcp...阅读全文

博文 2019-04-26 19:34:40 zidea

2019-11-6 【RCViewer】应该怎么选用应用框架

先硬广一波:RCViewer的开发启动了。虽然不能说是划时代屌炸天的技术和产品,但是对于现有被折磨的人群,我抱着最大的善意启动这一个项目,对于个人版预计全功能终身免费,并且不会做包括广告一类的商业化,只希望跟我一样被折磨的人能够在世界的各个角落,都可以不受限制的、自由的、愉快的访问放在某个场所的设备。底层的传输是在百万级节点的P2P通信网络中验证过的超高码率高性能多径传输技术----这么一说还真的是有点屌炸天了----RCViewer将基于对网络基础设施的有效利用,确保复杂网络也能带来感人的协作体验。现代码农很难想象上古时代的应用开发模式。想当年,施乐(为什么是施乐?)或者其他什么公司为了开发一款新打印机,硬件方案选型确定后,施乐将不得不从最底层的MCU微码开始,构建驱动,构建系统,最后才到...阅读全文

autocad三维汇报,bim汇报,视图汇报方法

在大部分场景中,工程师可以用cad进行汇报,避免去做PPT,浪费时间,ppt一般都是用一次就丢弃。而工程师对于设计的中间汇报,或三维bim汇报,评审汇报,展示汇报等,都可以直接用cad软件,方法是用视图进行汇报。 视图是个神奇的东西,它支持不同的视图,采用不同的图层搭配,不同的视觉样式(简单渲染),比如线框,隐藏,着色等模式。 cad还提供幻灯片vslide,但是想象一下,每个汇报的页面存成幻灯片,还要整理顺序,也是用后即丢。 而cad自己带的视图播放(视图切换)工具不是很好用。 设计一款专门用于汇报的视图汇报工具,类似ppt那样,按一下就切换到下一个视图,可以用鼠标进行任何操作——缩放啊,量尺寸啊……,不影响下一个视图。 每个视图对应不同的图层,如果在汇报过程中来操作图层的开关,会手忙脚乱...阅读全文

博文 2018-07-14 11:34:42 qingo

【协议分析】rpcx网络协议分析之tcp

前言: 最近在学习rpcx,为了更清楚搞懂rpcx的各种协议组成。对rpcx的协议做了一个深入学习。 系统: mac OS 10.14.3golang: go1.12 darwin/amd64调试工具:lldb抓包工具:tcpdump # (一)tcpdump工具使用tcpdump是一个网络抓包工具,tcpdump支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump格式信息如下:参数详解 -a -- 将网络地址和广播地址转变成名字 -d -- 将匹配信息包的代码以人们能够理解的汇编格式给出 -dd -- 将匹配信息包的代码以c语言程序段的格式给出 -ddd -- 将匹配信息包的代码以十进制的形式给出 -e -- 在输出行打印...阅读全文

博文 2020-04-01 14:34:32 c_rain

菜鸟末端轨迹(解密支撑每天251亿个包裹的数据库)

背景   菜鸟末端轨迹项目中涉及的一个关键需求,面面判断。 在数据库中存储了一些多边形记录,约几百万到千万条记录,例如一个小区,在地图上是一个多边形。 不同的快递公司,会有各自不同的多边形划分方法(每个网点负责的片区(多边形),每个快递员负责的片区(多边形))。 用户在寄件时,根据用户的位置,查找对应快递公司负责这个片区的网点、或者负责该片区的快递员。 一、需求   1、在数据库中存储了一些静态的面信息,代表小区、园区、写字楼等等。所有的面不相交。 2、为了支持不同的业务类型,对一个地图,可能划分为不同的多边形组成。 例如不同的快递公司,会有各自不同的多边形划分方法(网点负责的片区(多边形),某个快递员负责的片区(多边形))...阅读全文

JWT代码实现

在Go中可以直接使用github.com/dgrijalva/jwt-go简单实现Token的生成和有效性检验。 如果存在私密的文件,则需要使用使用密码对称加密。jwt生成的token在没有加密的情况下,需要使用https传输数据,确保数据安全。 更多请参考:JSON Web Token 入门教程。 下面是代码实现: package main import ( "errors" "fmt" "log" "time" "github.com/dgrijalva/jwt-go" ) type UserInfo struct { ID uint64 Username string } const SecrectStr string ="hello world" func CreateToken(u...阅读全文

博文 2019-12-02 23:34:15 大漠胡萝卜

HTTP协议杂谈一

HTTP协议中方法的变更: 0.9版本的http协议中只有GET方法 1.0增加了HEAD和POST方法 1.1 增加了PUT,DELETE等方法 协议作者最初定义这些方法时是期望这些方法的请求的操作与方法名称相符。比如GET方法,应该就是个只读的请求。在遵循http协议方法定义的初衷方面,最出名的莫过于有名的REST api设计。 但是,现在很多很多公司都没有继续遵循这一点,甚至有些公司的http接口的实现基本都是采用POST方法,只有静态资源才是采用GET方法。另外由于一些公司用http服务的形式提供内部接口调用,这部分接口不直接对外,所以也基本上可以不遵循。当然最初http协议只是浏览器和web server之间进行交互的标准,公司内部提供接口调用打破了原有的使用边界。 我想协议最初的...阅读全文

博文 2020-03-22 17:32:43 golang推广大使

Go 语言使用 net 包实现 Socket 网络编程

友情提示:此篇文章大约需要阅读 10分钟12秒,不足之处请多指教,感谢你的阅读。订阅本站 此文章首发于 Debug客栈 |https://www.debuginn.cn TCP/IP TCP/IP 传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP 传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP 传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP 传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。 TCP/IP 协议簇常见通信协议 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 传输层:TCP,UDP 网络层:IP,ICM...阅读全文

博文 2020-05-25 10:32:46 Meng小羽

2018-08-19 说一说现在的Decentralized Storage的传输

golang是特别不适合拿来做应用层可靠协议开发的语言。所有的可靠协议都依赖于连接状态,在讲究并发的场景下,所有的状态都依赖于事件,所有的事件都依赖于内核文件描述符,问题是,在可靠场景下,我们常常需要将一个端口用作一块网卡,一块网卡可以有65536个描述符并发处理事件,一个端口却只有一个描述符,这一个描述符需要模拟出65536个描述符的事件处理效能,这本来就是令人头大的问题。golang本身的协程机制----固然golang和大多数的协程实现不尽一致----导致每一个事件的处理都应短暂,且事件之间应是无状态的,如果对于可靠协议各阶段的业务与事件理解不到位,极其容易实现出资源有余,而协议效能低下的情况。为什么要有上面一段呢?因为目前的Sia,IPFS,Storj,Swarm都是golang实现...阅读全文

Coroutine

概述 协程可能是近几年来最新的并行/并发模型实现,常见语言中最早的实现可能是lua,近年来新晋语言golang的崛起更把这个概念发扬光大。 Kotlin 的实现设计思路有以下几个特点: 尽可能不使用核心语言,而是标准库来实现。 标准库只提供核心功能,官方的第三方库提供应用层接口。 异步等操作使用协程封装,同时协程可用于其他方面尽可能替代线程。 尽管如此,官方也不得不加入suspend关键字来标记协程可挂起函数,同时协程的实现也需要编译器支持。 suspend关键字与C#等语言中的async关键字很接近。线程的调度由操作系统完成,而协程需要由运行时管理。为了标记一个函数可以被运行时挂起,需要此关键字。当然协程的范围比异步更广,这里不再赘述...阅读全文

博文 2018-12-15 21:34:44 weiminsir

golang网络编程

1、网络编程1.1协议协议可以理解为规则,是数据传输和解释的规则,是通信双方都要遵守的规则。协议存在的意义是为了让双方更好的沟通。在双方之间被遵守的协议成为原始协议。当此协议被更多的人采用后,不断的完善,最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中。该协议就成为了一个标准协议。最初的ftp协议就是这样来的。1.2分层模型 越下面的层,越靠近硬件;越上面的层,越靠近用户。 典型协议应用层:HTTP、FTP传输层:TCP、UDP网络层:IP、ICMP、IGMP网络接口层:ARP、RARP物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就...阅读全文

博文 2020-09-26 17:32:49 20190729

编程高阶用法--开发者高频词汇

*有追求的开发者总会在开发时遇到变量命名困难或者命名冗长庸俗的时候。阅读代码过程中遇到一些很好的命名,也遇到一些不好的。当初并没有记录下来,之后才开始记录,有的也找不到出处了。以下高频词汇供有追求的开发者参考* 多注意使用高阶词汇表达,变成一个有追求的开发者吧。 stale 陈腐的,陈旧的 用于需要被替换、刷新的资源 transport 传输器 restricted 限制的 exclusive 专一的 of 用于Enum 反例 com.netflix.eureka.Version#toEnum org.springframework.data.domain.PageRequest#of(int, int) HystrixCommandAspect.HystrixPointcutType#of...阅读全文

博文 2019-03-20 11:34:42 seeing

来你是这样的Websocket--抓包分析

之前自己一个人负责完成了公司的消息推送服务,和移动端配合完成了扫码登录、订单消息推送、活动消息广播等功能。为了加深自己对Websocket协议的理解,自己通过进行抓包的方式学习了一番。现在分享出来,希望对大家能有所帮助。 Chrome控制台 (1)F12进入控制台,点击Network,选中ws栏,注意选中Filter。 (2)刷新页面会得到一个ws链接。 (3)点击链接可以查看链接详情 注意红框标出的信息,后面会详细说明。 (4)当然也可以切换到Frames查看发出和接收的消息,但是非常的简陋,只能看到消息内容,数据长度和时间 Fiddler:抓包调试利器 (1)打开Fiddler,点开菜单栏的Rules,选择Customize Rules... (2)这时会打开CustomRules.js...阅读全文

博文 2020-02-02 14:40:49 songwenjie

零基础学前端HTML+CSS

课程介绍 网页的本质就是超级文本标记语言HTML,我们这套课程从基础语法入门,讲解了HTML的常用标签,表单,排版等实用技术,同时深入讲解了CSS样式表的使用和如何使用DIV CSS设计网页布局。同时还介绍CSS3.0的新特性,阴影,圆角边框等实用案例。 课时列表 • 课时1:01互联网起源 • 课时2:02HTML概念 • 课时3:03标签 • 课时4:04HTML属性 • 课时5:05HTML固定基本结构 • 课时6:06第一个网页 • 课时7:07工具使用 • 课时8:08标题 • 课时9:09基本标签 • 课时10:10图像IMG标签 • 课时11:11路径概念 • 课时12:12超级链接 •...阅读全文