Go 语言编写 TCP 扫描器 TCP TCP,也就是传输控制协议(Transmission Control Protocol)。 TCP握手 建立 TCP连接(或者叫打开端口),需要3次握手 客户端 -> 端口打开 ->服务器 syn (请求建立新连接) syn-ack (同意创建新连接) ack (表示响应) 服务端端口关闭 Closed Port client -syn-> Server Server -rst-> Client 如果存在防火墙 Filtered Port Client…
Go 语言编写 TCP 扫描器 TCP TCP,也就是传输控制协议(Transmission Control Protocol)。 TCP握手 建立 TCP连接(或者叫打开端口),需要3次握手 客户端 -> 端口打开 ->服务器 syn (请求建立新连接) syn-ack (同意创建新连接) ack (表示响应) 服务端端口关闭 Closed Port client -syn-> Server Server -rst-> Client 如果存在防火墙 Filtered Port Client…
GMP调度场景 场景1 P拥有G1,M1获取P后开始运行G1,G1使用 go func 创建G2,为了局部性G2优先加入到P1的本地队列 场景2 G1运行完成后(函数:goexit),M上运行的goroutine切换为G0,G0负责调度时协程的切换(函数:schedule)。从P的本地队列取G2,从G0切换到G2,并开始运行G2(函数:execute)。实现了线程M1的复用。 场景3 G2在创建G7的时候,发现P1的本地队列已满,需要执行负载均衡(把P1中本地队列中前一半的G,还有新创建G转移到全局队列) 场景4 …
原文链接: 为什么 Go for-range 的 value 值地址每次都一样? 循环语句是一种常用的控制结构,在 Go 语言中,除了 for 关键字以外,还有一个 range 关键字,可以使用 for-range 循环迭代数组、切片、字符串、map 和 channel 这些数据类型。 但是在使用 for-range 循环迭代数组和切片的时候,是很容易出错的,甚至很多老司机一不小心都会在这里翻车。 具体是怎么翻的呢?我们接着看。 现象 先来看两段很有意思的代码: 无限循环 如果我们在遍历数组的同时向数组中添加元素,…
一 golang基础知识 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种计算机编程语言语言。 设计初衷 Go语言是谷歌推出的一种的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,"使用它可以进行快速开发,同时它还是一个真正的编译…
最近翻开源代码的时候看到了一种很有意思的switch用法,分享一下。 注意这里讨论的不是typed switch,也就是case语句后面是类型的那种。 直接看代码: func (s *systemd) Status() (Status, error) { exitCode, out, err := s.runWithOutput("systemctl", "is-active", s.unitName()) if exitCode == 0 && err !=…
Golang GMP原理(1) 概念梳理 线程 线程一般指内核级线程,核心如下: 操作系统的最小调度单元 创建 销毁 调度由内核完成,cpu要完成内核态与用户态的转换 可充分利用多核,实现并行 协程 协程线程对应 协程,又称为用户级线程,核心点如下: 与线程存在映射关系,为M:1 创建、销毁、调度在用户态完成,对内核透明,所以更轻 从属同一个内核级线程,无法并行;一个协程阻塞会导致从属同一线程的所有协程无法执行。 Goroutine Goroutine是特殊的协程 与线程存在映射关系,为M:N 创建、销毁、调度在用…
使用Docsify构建一个项目文档 给自己的项目发布一个文档 Github Page配置 在上一篇,我们搭建了一个脚手架,方便我们更快的开始一个项目。这篇我们将使用github page给这个项目发布一个文档 我们可以在 github 仓库的 Setting-Pages界面进行文档的设置,例如我这个仓库,把文档源设置成了当前仓库master分支的/docs目录,之后我们只需要往这个目录下添加静态文件就可以在对应的site展示文档了。 使用Docsify 使用Docsify能更方便地发布文档,只需要编辑md文件即可修…
因为有些主题的原因,一些新加栏目不能按照需求,在首页调出部分列表数据。我们可以这样做: 1.找到该主题的include.php文件,在该文件最后添加代码如下: 注意: San_Tiger_GetArticleCategorys函数名中,需要将 San_Tiger换成网站所正在用的主题名 function San_Tiger_GetArticleCategorys($Rows,$CategoryID,$hassubcate){ global $zbp; $ids = strpos($CategoryID,',…
多商户商城系统,也称为B2B2C(BBC)平台电商模式多商家商城系统。可以快速帮助企业搭建类似拼多多/京东/天猫/淘宝的综合商城。 多商户商城系统支持商家入驻加盟,同时满足平台自营、旗舰店等多种经营方式。平台可以通过收取商家入驻费,订单交易服务费,提现手续费,短信通道费等多手段方式,实现整体盈利。 下面以likeshop多商户商城系统为例进行功能拆解,likeshop多商户商城系统可以实现快速部署,文档齐全,代码全开源,无加密,极易二次开发,助力企业以极低的成本上线平台电商业务。并且likeshop以其代码全开源,…
批量入库 因为maccms自带的采集采集起来很慢,而且很多资源站的采集接口不能对内容排序,导致最旧的数据最后入库。用java写个采集程序,采集完入库的时候发现不能一次性入库多个数据,导致入库也很慢,所以就在入库控制器写了个方法批量入库。 Receive.php public function foo() { $info = $this->_param; if (!array_key_exists("vods", $info) || empty($info["vods"]…