- 博客(1403)
- 资源 (282)
- 收藏
- 关注
转载 golang泛型使用
声明一个方法Foreach这个方法类型约束又臭又长,换一个清爽写法有些难区分MyNumber是接口还是自定义约束类型,再换种更清晰写法再换一种也可以单独和某种具体类型使用以上的表示或,是合集意思,那么并集呢,例如myType_1(int32,string),myType_2(int64,string) 取二者的交集string作为类型约束,也很简单//每一个自定义约束类型单独一行myIntmyInt2当交集约束为空时,调用函数就会报错。
2024-03-24 20:28:35 40
转载 gorm 高级查询
/ SELECT `users`.`name`, `users`.`age`, ... FROM `users` // 带上这个选项。// 找到了 `name` = `jinzhu` 的 user,依然会根据 Assign 更新记录。// 找到 `name` = `jinzhu` 的记录,依然会更新 Assign 相关的属性。// 找到了 `name` = `jinzhu` 的 user,则忽略 Attrs。// 找到了 `name` = `jinzhu` 的 user,则忽略 Attrs。
2023-12-13 16:11:19 360
转载 VSCode安装,配置,编译运行C++(详细整理)
听闻visual studio code很方便,今天早上为了在上面打段代码,便跟着几个帖子开始配环境:本文综合下述帖子得来:CSDN:先建cpp再跟着配置文件博客园:先新建配置文件再建cpp调试上述二者都比较简洁,其中关于文件夹和环境配置的我又从下面2帖得到:百度:Win7 64位下安装配置mingw-w64 C++开发CSDN:这位大神就写的比较详细了,如果觉得我的不够详细,强烈推荐看这位大神的。
2023-11-18 19:44:00 561
转载 golang 详解协程——errgroup
sync.ErrGroup再sync.WaitGroup功能的基础上,增加了错误传递,以及在发生不可恢复的错误时取消整个goroutine集合,或者等待超时。go支持并发,一般采用的是 channel 、 sync.WaitGroup 、context,来实现各个协程之间的流程控制和消息传递。上面这个例子是简单的利用 errgroup 进行的 waitGroup和error的处理,下面我们对关键的代码做一个分析,并结合源码来看。声明一个 group的实例,我们看下 group 包含哪些东西。
2023-11-04 19:07:24 389
原创 Golang源码分析之golang/sync之singleflight
golang/sync库拓展了官方自带的sync库,提供了errgroup、semaphore、singleflight及syncmap四个包,本次分析singlefliht的源代码。singlefliht用于解决单机协程并发调用下的重复调用问题,常与缓存一起使用,避免缓存击穿。singleflight经常和缓存获取配合使用,可以缓解缓存击穿问题,避免同一时刻单机大量的并发调用获取数据库构建缓存。
2023-11-04 18:46:49 741
转载 golang sync包使用和应用场景
sync.Mutext解决了并发问题,但是在实际使用场景中,有很多时候读的次数是远大于写的次数的,读取数据并不会对数据造成影响,只需要限制其他协程不能对数据同时进行修改即可,不需要限制其他的协程对该数据的读取操作。上面的代码中,我们定义了一个全局变量once,用来控制initConfig()函数只被执行一次。归根到底,-=1这个操作并不是原子性的,为了解决这个问题,go引入了sync.Mutex{},这是一个互斥锁,它可以保证在任意时刻,只有一个goroutine可以访问某个共享变量或临界区。
2023-11-04 18:16:37 160
转载 由浅入深聊聊Golang的sync.Pool
在下一个周期到来前,victim 中的缓存对象可能会被偷取,在 Put 操作后又重新回到 local 中,这个过程发生在从其他 P 的 shared 队列中偷取不到、以及 New 一个新对象之前,进而是在牺牲了 New 新对象的速度的情况下换取的;这样,当其他线程想要读取 1 号索引时,发生 cache miss,还得重新再加载,对性能有损。而 sync.Pool 可以将暂时不用的对象缓存起来,待下次需要的时候直接使用,不用再次经过内存分配,复用对象的内存,减轻 GC 的压力,提升系统的性能。
2023-10-24 22:17:55 281 1
转载 深入理解Go语言中的sync.Cond
对于Read方法,因为其不运行并发访问,当其将退出时,说明此时已经没有协程在读取数据了,满足abortPendingRead继续执行下去的条件了,此时可以调用Boardcast来唤醒等待条件满足的协程。这个其实就是sync.Cond设计的用途,当不满足运行条件时,先进入阻塞状态,等待条件满足时,再由其他协程来唤醒,然后再继续运行下去,能够提高程序的执行效率。在接下来的部分中,我们介绍了 sync.Cond 的实现原理,主要是对等待队列的使用,从而sync.Cond有更好的理解,能够更好得使用它。
2023-10-24 21:51:00 161
转载 go语言中如何实现同步操作呢
sync.Cond和通道。通过比较它们的适用场景,读者可以更好地了解何时选择使用不同的同步方式。本文旨在帮助读者理解同步操作的重要性以及选择合适的同步机制来确保多个协程之间的正确协调和数据共享的一致性。同步操作在并发编程中起着关键的作用,用于确保协程之间的正确协调和共享数据的一致性。在选择同步操作的实现方式时,我们有两个常见选项:使用sync.Cond和通道。使用sync.Cond和通道的方式提供了更高级、更灵活的同步机制。sync.Cond允许协程等待特定条件的出现,通过WaitSignal和。
2023-05-28 08:30:51 578
转载 Excel文件 利用MySQL/Python 实现自动处理数据的功能
在没有服务器,以excel存储数据的情况下,同样可以利用SQL和python来做数据处理和分析,在遇到excel处理数据特别麻烦的时候可以选择上面的方案做处理,即可以锻炼自己的SQL和python编程的能力,又可以高效地解决问题。
2023-02-21 20:15:45 736 2
转载 MongoDB - 模式设计
同一个应用程序连接的数据库可以根据业务进行划分,也许可以将高价值的业务数据存储在 SSD 上,或者是使用 RAID10 进行存储,而低价值的数据可以存储在 RAID0 上。但是在更改时仅需修改一处地方,不需要担心破坏数据的完整性。同样的一致性问题在 MongoDB 拥有副本集时也会出现,副本节点的数据与主节点的数据总是会有时间差,高并发的请求同样存在读取到旧数据的风险。设计模式时最需要关注的就是数据库的读操作,在数据库运行过程中,应尽量减少查询的数量,这就需要在设计时确保一起查询的数据存储在同一个文档中。
2022-12-26 14:43:52 856 1
转载 玩转 Go 生态|Hertz WebSocket 扩展简析
WebSocket 是一种可以在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。提供了的支持,参考库使用hijack的方式在 Hertz 进行了适配,用法和参数基本保持一致。
2022-12-15 15:17:38 1575 1
转载 [Go疑难杂症]为什么nil不等于nil
接口类型变量跟普通变量是有差异的,非空接口类型变量对应的底层结构是iface,空接口类型类型变量对应的底层结构是eface。iface中有两个跟类型相关的字段,一个表示的是接口的类型inter,一个表示的是变量实际类型_type。只有当接口变量的itab._type与 data 都为nil时,也就是实际类型和值都未被赋值前,才真正等于nil。
2022-10-27 15:25:11 1052 1
转载 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
适用范围:对表结构进行操作,比如create、drop、alter、rename、truncate等。
2022-10-11 10:03:15 883 1
原创 go gorm select * 优化
很多时候sql查询都不允许select * 出现要求指定列名,如果你是用gormv2 ,恭喜你可以使用QueryFields属性,如果是gormv1版本怎么样,难道要升级gormV2吗,这里提供种反射的实现,可能不是最优解,但只是一个方案。首先mysq建一个表。
2022-09-17 14:00:34 1982 1
转载 .Net Core&RabbitMQ死信队列
第一个消息的过期时间很长,而后续的消息的过期时间很短,后续的消息过期后不会立马删除,而是要等到第一个消息过期删除后才会被删除,那么对应延迟队列来说会有点问题,时间超出了设定的延迟时间。,提供延迟队列类型交换机,其不会根据第一个消息是否过期来判断,解决了如上提到的第一个没有过期,后续消息过期的场景,不会受消息先后顺序的影响,而是关注过期时间,先过期的先发送。为每个消息设置过期时间可能不符合一些特定的场景,当需要设定特定队列中的消息都是指定的过期时间时,可以为队列中的消息统一设置过期时间。...
2022-08-30 12:29:55 1013 1
转载 c# 异步进阶————channel
该系列为异步编程的进阶篇,其实也不能这么讲。世界上本没有进阶篇,只能说是高级篇(高级篇不能说多高级,是对底层的封装的意思),只要是加深理解都是进阶。本章先介绍一下channel。
2022-08-30 11:13:42 1767
转载 go 操作 Excel
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要
2022-07-18 11:35:07 1741 1
转载 Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理
我们知道「主从复制是高可用的基石」,从库宕机依然可以将请求发送给主库或者其他从库,但是 Master 宕机,只能响应读操作,写请求无法再执行。所以主从复制架构面临一个严峻问题,主库挂了,无法执行「写操作」,无法自动选择一个 Slave 切换为 Master,也就是无法故障自动切换。深夜与女朋友么么哒……(此处省略 10000 字),突然宕机,总不能提起裤子从床上爬起来手工进行主从切换,再通知其他程序员把地址重新改成新主库上线。如此一折腾自己已被女友切换成前男友了,万万使不得。所以我们必须有一个高可用的方案,
2022-07-13 16:41:52 1105
转载 Redis 高可用篇:你管这叫主从架构数据同步原理?
高可用有两个含义:一是数据尽量不丢失,二是服务尽可能提供服务。 AOF 和 RDB 保证了数据持久化尽量不丢失,而主从复制就是增加副本,一份数据保存到多个实例上。即使有一个实例宕机,其他实例依然可以提供服务。本篇主要带大家全方位吃透 Redis 高可用技术解决方案之一主从复制架构。本篇硬核,建议收藏慢慢品味,我相信读者朋友会有一个质的提升。如有错误还望纠正,谢谢。关注「码哥字节」设置「星标」第一时间接收优质文章,谢谢读者的支持。核心知识点既然一台宕机了无法提供服务,那多台呢?是不是就可以解决了。Redis
2022-07-13 16:16:17 1147
转载 Redis 日志篇:无畏宕机快速恢复的杀手锏
在《Redis 核心篇:唯快不破的秘密》中,「码哥」揭秘了 Redis 五大数据类型底层的数据结构、IO 模型、线程模型、渐进式 rehash 掌握了 Redis 快的本质原因。接着,在《Redis 日志篇:无畏宕机与快速恢复的杀手锏》中揭晓了当 Redis 发生宕机可以通过重新读取 RDB 快照和执行 AOF 日志实现快速恢复的高可用手段。高可用有两个含义:一是数据尽量不丢失,二是服务尽可能提供服务。 AOF 和 RDB 保证了数据持久化尽量不丢失,而主从复制就是增加副本,一份数据保存到多个实例上。即使有
2022-07-13 16:07:20 1328
转载 Redis 核心篇:唯快不破的秘密
学习一个技术,通常只接触了零散的技术点,没有在脑海里建立一个完整的知识框架和架构体系,没有系统观。这样会很吃力,而且会出现一看好像自己会,过后就忘记,一脸懵逼。跟着「码哥字节」一起吃透 Redis,深层次的掌握 Redis 核心原理以及实战技巧。一起搭建一套完整的知识框架,学会全局观去整理整个知识体系。系统观其实是至关重要的,从某种程度上说,在解决问题时,拥有了系统观,就意味着你能有依据、有章法地定位和解决问题。全景图可以围绕两个维度展开,分别是:应用维度:缓存使用、集群运用、数据结构的巧妙使用系统维度:可
2022-07-13 16:04:05 1045
转载 Redis 内存优化神技,小内存保存大数据
我们应该从 Redis 是如何保存数据的原理展开,分析键值对的存储结构和原理。从而继续延展出每种数据类型底层的数据结构,针对不同场景使用更恰当的数据结构和编码实现更少的内存占用。为了保存数据, Redis 需要先申请内存,数据过期或者内存淘汰需要回收内存,从而拓展出内存碎片优化。最后,说下 key、value 使用规范和技巧、 Bitmap 等高阶数据类型,运用这些技巧巧妙解决有限内存去存储更多数据难题……这一套组合拳下来直接封神。具体详情,且看「码哥」一一道来。主要优化神技如下:在优化之前,我们先掌握 R
2022-07-13 12:13:54 1156
转载 Redis 实战篇:巧用数据类型实现亿级数据统计
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时还要对集合中的数据进行统计排序。常见的场景如下:给一个 userId ,判断用户登陆状态;两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;统计每天的新增与第二天的留存用户数;统计网站的对访客(Unique Visitor,UV)量最新评论列表根据播放量音乐榜单通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。所以,我们必须要选择能够非常高
2022-07-13 12:07:36 1649
转载 Redis 很屌,不懂使用规范就糟蹋了
通过 Redis 为什么这么快?这篇文章我们知道 Redis 为了高性能和节省内存费劲心思。所以,只有规范的使用 Redis,才能实现高性能和节省内存,否则再屌的 Redis 也禁不起我们瞎折腾。Redis 使用规范围绕如下几个纬度展开:键值对使用规范;命令使用规范;数据保存规范;运维规范。有两点需要注意:好的 命名,才能提供可读性强、可维护性高的 key,便于定位问题和寻找数据。要避免出现 、选择高效的序列化和压缩、使用对象共享池、选择高效恰当的数据类型(可参考《Redis 实战篇:巧用数据类型实现亿级
2022-07-13 11:44:44 950
转载 Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。常见的场景如下:给一个 userId ,判断用户登陆状态;显示用户某个月的签到次数和首次签到时间;两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。所以,我们必须要选择能够非常高效地统计大量数据(例如亿级)的集合类型。如何选择合适的数据集合,我们首先要了解常用的统计模式,并运用合理的数据类型来解
2022-07-13 11:27:57 1191
转载 K8S Calico网络插件
0.前言参考文档:https://github.com/containernetworking/cniPod网络插件,为了实现Pod网络而需要的插件、组件。由于Kubernetes通过开放的CNI接口来允许插件的接入,所以它又称之为CNI网络插件。为了解决跨主机容器间通信问题,市面上存在很多解决方案,为了兼容和规范这些解决方案,Kubernetes仅设计了网络模型,却将Pod网络的实现交给了CNI网络插件,并允许网络插件通过标准的CNI(Container Network Interface,容器网
2022-05-25 11:06:36 11252 2
转载 go Http客户端
理解 timeouttimeout 又可以细分为 connect timeout、read timeout、write timeout。而 read timeout 和 write timeout 必须是在 connect 之后才能发生。ReadTimeout的时间计算是从连接被接受(accept)到request body完全被读取(如果你不读取body,那么时间截止到读完header为止) WriteTimeout的时间计算正常是从request header的读取结束开始,到response
2022-05-16 15:46:26 3455
原创 go 二维码解析推荐gozxing
生成二维码的开源项目可谓是琳琅满目,SwetakeQRCode、BarCode4j、Zxing,前端有JQuery-qrcode,同样能实现生成二维码。选择Zxing的原因可能是对 Google 公司的信赖和个人崇拜吧。参考:GitHub - makiuchi-d/gozxing: Port of ZXing (https://github.com/zxing/zxing) core to pure Go.package mainimport ( "fmt" "imag...
2022-05-07 18:18:18 2066
原创 go实现 银行卡Luhn校验
一、银行卡号码的校验规则银行卡号码的校验采用Luhn算法,校验过程大致如下:1. 从右到左给卡号字符串编号,最右边第一位是1,最右边第二位是2,最右边第三位是3….2. 从右向左遍历,对每一位字符t执行第三个步骤,并将每一位的计算结果相加得到一个数s。3. 对每一位的计算规则:如果这一位是奇数位,则返回t本身,如果是偶数位,则先将t乘以2得到一个数n,如果n是一位数(小于10),直接返回n,否则将n的个位数和十位数相加返回。4. 如果s能够整除10,则此号码有效,否则号码无效。因为最
2022-04-20 12:35:07 2310
转载 计算机网络-HTTP篇
HTTP的一些问题HTTP 基本概念HTTP 是超⽂本传输协议,也就是HyperText Transfer Protocol。HTTP 是⼀个在计算机世界⾥专⻔在「两点」之间「传输」⽂字、图⽚、⾳频、视频等「超⽂本」数据的「约定和规范」。常见状态码1xx1xx 类状态码属于提示信息,是协议处理中的⼀种中间状态,实际⽤到的⽐较少。2xx2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。「200 OK」是最常⻅的成功状态码,表示⼀切正常。如果是
2022-04-05 17:23:39 2584
转载 计算机网络-TCP篇
TCP篇基本认识TCP 是⾯向连接的(⼀定是「⼀对⼀」才能连接)、可靠的、基于字节流的传输层通信协议。RFC 793 是如何定义「连接」的:⽤于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket、序列号和窗⼝⼤⼩称为连接。建⽴⼀个 TCP 连接是需要客户端与服务器端达成上述三个信息的共识。Socket:由 IP 地址和端⼝号组成序列号:⽤来解决乱序问题等窗⼝⼤⼩:⽤来做流量控制TCP 四元组可以唯⼀的确定⼀个连接,四元组包括如下:格式序列
2022-04-05 17:15:51 4280
转载 计算机网络-IP篇
IP基本认识IP 在 TCP/IP 参考模型中处于第三层,也就是⽹络层。⽹络层的主要作⽤是:实现主机与主机之间的通信,也叫点对点(end to end)通信。IP的作用就是在复杂的网络环境中将数据包发送给最终的目的主机。MAC 的作⽤则是实现「直连」的两个设备之间通信,⽽ IP 则负责在「没有直连」的两个⽹络之间进⾏通信输。源IP地址和⽬标IP地址在传输过程中是不会变化的,只有源 MAC 地址和⽬标MAC ⼀直在变化。IP地址IP 地址(IPv4 地址)由 32 位正整
2022-04-05 17:02:27 2562
转载 TCP 重传、滑动窗⼝、流量控制、拥塞控制
重传机制TCP 会在以下两种情况发⽣超时重传:数据包丢失 确认应答丢失重传超时重传超时是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。RTT 是数据从⽹络⼀端传送到另⼀端所需的时间,也就是包的往返时间。RTO (Retransmission Timeout 超时重传时间)。如果超时重发的数据,再次超时的时候,⼜需要重传的时候,TCP 的策略是超时间
2022-04-05 16:13:48 2622
转载 HTTPS加密以及认证手段以及优化
HTTPSSSL即安全套接字层,SSL 在1999年被IETF(互联网工程组)更名为TLS,即传输安全层,直到现在,TLS 一共出现过三个版本,1.1、 1.2 和1.3,目前最广泛使用的是1.2,所以接下来的探讨都是基于TLS 1.2的版本上的。TLS用于两个通信应用程序之间提供保密性和数据完整性。TLS由 记录协议、握手协议、警告协议、变更密码规范协议、扩展协议等几个子协议组成,综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术。ECDHE - ECDSA-AES256-GC
2022-04-05 15:55:55 2281
转载 HTTP1.1、HTTP2、HTTP3 演变
推荐阅读:https://www.cnblogs.com/zwtblog/tag/计算机网络/HTTP 基本概念HyperText Transfer Protocol -- 超文本传输协议状态码分类:完整详情见:HTTP-完整状态码表 - ML李嘉图 - 博客园分类 分类描述 1** 信息,服务器收到请求,需要请求者继续执行操作 2** 成功,操作被成功接收并处理 3** 重定向,需要进一步的操作以完成请求 4** 客户端错误,请求包含语法错
2022-04-05 12:28:00 2119
原创 go smtp示例
书接上文邮件实现详解,这里我们及我们简单复习一下smtp的指令如下:telnet smtp.163.com 25[outpout]ehlo dz45693[outpout]auth login[outpout]输入用户名base64[outpout]输入密码base64mail from:<[email protected]>[outpout]rcpt to:<[email protected]>[outpout]data[outpout]from:&l
2022-03-13 21:04:09 3858
转载 邮件实现详解
相信大家在日常工作生活中少不了和邮件打交道,比如我们会用邮件进行信息交流,向上级汇报日常工作;再比如大家熟悉的某个WEB系统注册阶段,通常会有一个功能,点击发送到目标邮箱的链接完成账户激活。但是邮件发送的原理是什么?邮件是如何发送的呢?本系列教程将会讲解邮件的基本常识与概念,邮件的协议以及邮件服务器的工作原理,然后用JavaMail 发送邮件的基本实现过程,邮件内嵌图片等高级邮件技巧。相信大家看完后,一定会有所收获。1、电子邮件的发送和接收过程 和以往博客一样,LZ这里先给出用户A从QQ邮箱发送邮
2022-03-12 22:19:10 15715
原创 go GCM加密解密 gin中间件加密解密,gin文件流处理
要给已有的系统启用加密解密,目前推荐的是aes的gcm模式的加密和解密,在微服务如果向前有公共方法处理 读取数据和写返回数据,那么比较简单,修改以前的公共方法,但是这样本地调试平时肯定是明文,所以要加判断,如果以前的读数据和写数据是五花八门那就比较麻烦,在微服务体系里面一般有网关这个服务,所以加密和解密就放在网关服务,大致如下:常规的请求有GET,POST JSON, POST file,以及POST Form表单,返回一般是json 或者下载文件流,所以我们需要截获请求流和返回流,收到请求流解密数
2022-03-10 22:21:51 4201
原创 Gin 通用的日志中间件
main.gopackage mainimport ( "demo/gindemo/middleware" "github.com/gin-gonic/gin" "net/http")func main() { // 1.创建路由 r := gin.Default() r.Use(middleware.Logger()) r.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "hello World!")
2022-02-12 13:43:29 3649 1
GO GPRC Redis ANS DES AES
2020-12-30
thinkphp.zip
2020-10-10
ServiceA.zip
2019-08-28
MongoDB权威指南xxxx.zip
2019-07-06
jira_7.3.6破解
2019-04-22
jdk-6u43-windows-i586
2019-04-22
asp.net core signalr DEMO
2019-04-12
TeamViewer13.2.14327 -无限制更换ID版
2019-04-05
SQL Prompt v9.0.10.4053
2019-03-18
redis-desktop-manager-0.8.8.384
2019-03-13
json class generator
2018-12-12
beego demo
2018-11-28
pima-indians-diabetes.data
2018-11-04
iris data csv 222
2018-10-27
iris data csv
2018-10-27
Scrapy爬网存mysql
2018-10-22
react redux
2018-10-05
react redux 开发实例
2018-09-26
React_Redux_Flux_webpack_Babel
2018-09-25
MySQL技术内幕:InnoDB存储引擎(第2版)
2018-03-26
TCP+IP详解卷1 :协议(原书第2版)
2018-03-04
HTTP权威指南
2018-01-11
《亿级流量网站架构核心技术》PDF下载 高清完整版
2018-01-08
大规模分布式存储系统
2018-01-04
atlassian extras 3.2
2017-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人