go

今天不聊技术,聊聊互联网实习这点事

拜拜、爱过 提交于 2021-02-02 14:54:08
从我最近发的实习招聘文章就可以知道,我最近在忙春招的事了,本人也非常“荣幸”,担任了我们团队这次春招的负责人。陆陆续续沟通了很多学生,于是在这个周末抽出了一点时间,跟大家聊聊我对校园实习的一些看法。 就在我发完实习招聘的当天下午,一位同学就联系到了我,非常客气地称呼我为“老师”,从申请好友时的备注中得知其是一位名校的学生,希望找一份暑期实习的工作。由于是第一个加我微信的同学,我兴致很高地跟他沟通了番。 说实话,这位同学虽然学历不错,但交流下来,发现在编程实践经验上差了那么一点,但也能理解,毕竟是学生吗,可能还是以学习学校课本上的知识为主。由于我们是中间件岗位,我又继续跟他聊了下中间件,问他对中间件的了解有多少,他说没了解过,但我可以学,说到这儿,我眉头开始一紧,继续追问他,这你也敢投简历?他回答说,阿里一直是我梦寐以求的公司。一时语塞,让我联想到了当初面试阿里时的自己,貌似也说过同样的话。最后我草草结束了交流,还是将他的简历投递进了系统。 接触过这些大三/研二找实习的学生之后,我不禁回忆起了自己的经历。我大三的时候都没有意识到要找一份实习,甚至觉得公司招聘实习生,就是在招一些廉价劳动力,去干一些脏活累活。直到应届毕业之后,才了解到原来国内这些大公司,几乎不招聘应届生,要么是 3 年工作经验起步,要么是校招实习转正,几乎没有第三种情况! 很多学生没有实习计划,或者出于对工作的恐惧

[GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题

痴心易碎 提交于 2021-02-02 14:53:12
作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。前文介绍了什么是GO语言及为什么我要学习Golang;这篇文章将介绍Go的编译运行、语法规范、注释转义及API标准库知识。 这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,加油~ 这些年我学过各种编程语言,从最早的C语言到C++,再到C#、PHP、JAVA,再到IOS开发、Python,到最新的GO语言,学得是真的杂。有时候觉得编程语言恰恰是最简单的,而通过一门编程语言能够解决实际问题或深入底层才是其价值所在,并且当我们学好一门编程语言后,其他编程语言都非常类似,殊途同归,学起来也很迅速。 源码下载地址: https://github.com/eastmountyxz/Go-learning 前文参考: [GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及 [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及 [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题 文章目录 一.变量 1.什么是变量 2.变量的声明 3

kubernetes 中的增强特性(Kubernetes Enhancement Proposal)

六眼飞鱼酱① 提交于 2021-02-02 12:54:04
kubernetes 增强特性(kep)是为了解决社区中的疑难问题而创建的一个项目,每一个增强特性都对 kubernetes 的部分功能有较大的影响,需要 kubernetes 项目下的多个组(SIG)协作开发,对应的特性通常要经过 alpha 、 beta 以及 GA 三个版本,所以每个方案的开发周期比较长,大多需要经过 9~10 个月才能完成,某些特性甚至已经讨论多年至今仍未开发完成,像 crd、dry-run、kubectl diff、pid limit 等已经开发完成的功能都是在 kep 中提出来的。本文会介绍几个比较重要的已经在 kep 中孵化的特性。 1、client-go 中对 resource 的操作支持传递 context 参数 该特性的目标: (1)支持请求超时以及取消请求的调用; (2)支持分布式追踪; 以下是新旧版本中用 client-go list deployment 方式的一个对比: // 老版本中的使用方式 deploymentList, _ := clientset.AppsV1().Deployments(apiv1.NamespaceDefault). List ( metav1.ListOptions{}) // 新版本中的使用方式 deploymentList, err := clientset.AppsV1().Deployments

Go url parameters mapping

↘锁芯ラ 提交于 2021-02-02 11:26:01
问题 Is there a native way for inplace url parameters in native Go ? For Example, if I have a URL: http://localhost:8080/blob/123/test I want to use this URL as /blob/{id}/test . This is not a question about finding go libraries. I am starting with the basic question, does go itself provide a basic facility to do this natively. 回答1: There is no built in simple way to do this, however, it is not hard to do. This is how I do it, without adding a particular library. It is placed in a function so that

Go url parameters mapping

妖精的绣舞 提交于 2021-02-02 10:59:51
问题 Is there a native way for inplace url parameters in native Go ? For Example, if I have a URL: http://localhost:8080/blob/123/test I want to use this URL as /blob/{id}/test . This is not a question about finding go libraries. I am starting with the basic question, does go itself provide a basic facility to do this natively. 回答1: There is no built in simple way to do this, however, it is not hard to do. This is how I do it, without adding a particular library. It is placed in a function so that

golang实现异步并发sokect

点点圈 提交于 2021-02-02 05:44:39
搜索golang + epoll的例子,得到下面这段代码,感觉golang的编程思维真正做到了并行编程: package main import ( "fmt" "net" "os" "time" ) const ( MAX_CONN_NUM = 5 ) //echo server Goroutine func EchoFunc(conn net.Conn) { defer conn.Close() buf := make([]byte, 1024) for { _, err := conn.Read(buf) if err != nil { //println("Error reading:", err.Error()) return } //send reply _, err = conn.Write(buf) if err != nil { //println("Error send reply:", err.Error()) return } } } //initial listener and run func main() { listener, err := net.Listen("tcp", "0.0.0.0:8088") if err != nil { fmt.Println("error listening:", err.Error()) os.Exit(1)

sqlserver清空删除日志

血红的双手。 提交于 2021-02-02 00:36:12
USE [ lzdxdb ] GO ALTER DATABASE lzdxdb SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE lzdxdb SET RECOVERY SIMPLE -- 简单模式 GO USE lzdxdb GO -- DBCC SHRINKFILE (N' eutdb_Log' , 11, TRUNCATEONLY) DBCC SHRINKFILE ( ' 数据库日志名 ' , 1 ) GO USE [ lzdxdb ] GO ALTER DATABASE lzdxdb SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE lzdxdb SET RECOVERY FULL -- 还原为完全模式 GO -- lzdxdb为数据库名 -- 这里的 数据库日志名,可以用以下注释的语句进行查询(_log那个) USE [ lzdxdb ] GO SELECT file_id , name,size,physical_name FROM sys.database_files; GO 来源: oschina 链接: https://my.oschina.net/u/4308934/blog/3366004

5分钟了解CDN 加速原理

笑着哭i 提交于 2021-02-01 15:47:33
来源:r6d.cn/YX4Y 一、什么是 CDN CDN 的全称是(Content Delivery Network),即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。 简单的说,CDN 的工作原理就是将您源站的资源缓存到位于全球各地的 CDN 节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验。 CDN 对网络的优化作用主要体现在如下几个方面 解决服务器端的“第一公里”问题 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响 减轻了各省的出口带宽压力 缓解了骨干网的压力 优化了网上热点内容的分布 二、CDN工作原理 传统访问过程 传统访问过程 由上图可见,用户访问未使用CDN缓存网站的过程为: 用户输入访问的域名,操作系统向 LocalDns 查询域名的 ip 地址 LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期) ROOT DNS将域名授权 dns记录回应给 LocalDns LocalDns

详解 Kubernetes Pod 的实现原理

落花浮王杯 提交于 2021-02-01 11:35:27
Pod、Service、Volume 和 Namespace 是 Kubernetes 集群中四大基本对象,它们能够表示系统中部署的应用、工作负载、网络和磁盘资源,共同定义了集群的状态。Kubernetes 中很多其他的资源其实只对这些基本的对象进行了组合。 Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元,想要彻底和完整的了解 Kubernetes 的实现原理,我们必须要清楚 Pod 的实现原理以及最佳实践。 在这里,我们将分两个部分对 Pod 进行解析,第一部分主要会从概念入手介绍 Pod 中必须了解的特性,而第二部分会介绍 Pod 从创建到删除的整个生命周期内的重要事件在源码层面是如何实现的。 概述 作为 Kubernetes 集群中的基本单元,Pod 就是最小并且最简单的 Kubernetes 对象,这个简单的对象其实就能够独立启动一个后端进程并在集群的内部为调用方提供服务。在上一篇文章 从 Kubernetes 中的对象谈起 中,我们曾经介绍过简单的 Kubernetes Pod 是如何使用 YAML 进行描述的: apiVersion : v1 kind : Pod metadata : name : busybox labels : app : busybox spec : containers : - image : busybox

Go语言iota

风流意气都作罢 提交于 2021-02-01 11:22:12
Go语言计算iota的方法如下代码 ,iota主要用作枚举 package main import "fmt" //iota理解,无左移动情况,常量=iota,则下面的常量从 0开始每次都增加一。 //如果常量定义为含有左移 num << iota 则, 下面的值以当前const最后一个带有iota的数值为准,左移动iota即乘以2的iota次方。iota每次增加一。如下 const ( Sunday = 5 << iota=0 monday // =5 <<1 Thuesday // =5 <<2 Wednesday // =5<<3 ) const ( one = 3 //<< iota two //3 <<1 =3 *2^1 =6 three // 3 <<2 3*2^2 = 12 ) const ( text = 5 << iota // 5 * 2^0 =5 text2 = 10 << iota // 10 * 2^1 =10 text3 // 10 * 2^2 = 40 text4 // 10 * 2^3 = 80 ) func main() { fmt.Println(one, two, three) } 来源: oschina 链接: https://my.oschina.net/u/2342806/blog/2218560