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

如何使用CSS选择所有子元素?

如何使用CSS递归选择所有子元素?下面本篇文章就来给大家介绍一下使用CSS递归选择所有子元素的方法,希望对大家有所帮助。 原文地址:如何使用CSS选择所有子元素?当元素是某个元素的子元素时,可以使用子选择器匹配,该选择器选择特定父级的所有子元素。子选择器由两个或多个由“>”分隔的选择器组成;它也称为element > element选择器。注:子选择器只能选择自己的子类,第二级元素,而不能选择第二级别以下的元素。语法:选择指定元素的所有指定子元素element1 > element2如果想要递归选择所有子元素,则使用以下语法 element1 > * { // CSS样式 } 示例1:选择所有子元素 阅读全文

博文 2020-03-20 21:32:48 yanghs

2019-07-10

orm orm 全称 object relation mapping 对象映射关系,目的是解决面向对象和关系数据库之间存在的互不匹配的现象。 sql注入曾经是一种常见的网络攻击方式,针对程序编写疏忽而产生的问题比如:通过sql语句实现无账号登录、删除甚至篡改数据库。这是由于以前sql语句是拼接后执行的,因此在动态参数完成拼接时若有带有sql操作的关键字的动态参数参与拼接,则整体结果会向恶意注入者期望的方向执行。 orm就很好的解决了这些问题,在其底层逻辑中会带有转义操作,不担心注入问题,而且对于我们的struct结构体而言,也提供了对应关系操作,对于编程者来说是极大地便利:将注意力从数据库的细节转移到业务逻辑上。orm作为中间层,可以简化数据库的迁移操作。 orm的缺点:不能够生成所有的sq...阅读全文

博文 2019-07-10 17:03:04 JarAlreadyTaken

新装Linux操作系统后,要保留哪些自启动服务?

和Windows系统一样,Linux服务器运行过程中也会一些没用的软件服务默认运行,这些占用了很多系统资源,也会有安全隐患,所以一般是建议关闭的。那么,工作中Linux主机到底需要有哪些开机自启动服务呢? 新装Linux系统之后,有必要保留的开机自启动服务有5个: Ø sshd:远程连接Linux服务器时要用到,所以必须开启,不然就无法提供远程连接服务了。 Ø rsyslog:日志相关软件,这是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog程序将各种信息写到各个系统日志文件中。 Ø network:系统启动时,如果想激活或关闭各个网络接口的话,可以考虑开启。 Ø crond:用于周期性的执行系统及用户配置的任务计划。有需要时开启。几乎是运维工作中必须要用的一个软件。 Ø sy...阅读全文

博文 2019-11-15 16:40:15 zhouzhou2018

通过例子学习 Go 和 Rust ---- 闭包

闭包简而言之,是一段有状态的代码。咱试着用闭包来做一个计数器,每次调用,闭包的状态就加1. Go func intSeq() func() int { i := 0 return func() int { i++ return i } } func main() { nextInt := intSeq() fmt.PrintLn(nextInt()) fmt.PrintLn(nextInt()) fmt.PrintLn(nextInt()) } 1 2 3 Rust 由于编译时我们无法知道闭包的体积,所以用一个Box把它套起来。另外,闭包的具体类型是不可描述的,只能用dyn关键字来通过Trait来描述。 fn main() { fn int_seq() -> Box阅读全文

博文 2020-03-03 15:32:56 Tericoder

Go 编程:tcpserver & graceful shutdown

载请使用原文链接: www.gitdig.com/go-tcpserve… 工作需要快速写了个tcpserver的框架,有效代码差不多 100 行左右,写篇文章分享下实现思路, 顺便解释一下如何实现类似网络服务的Graceful Shutdown功能。 首先,什么是框架?简单总结一下就是将变化交给用户,将不变交给自己,即面向接口编程。所以要实现一个简单的框架,第一步就是明确接口,对所有可能的变化进行接口级别的抽象。画一张简图说明下: tcpserver 框架的实现 就tcpserver框架程序而言,变化的部分非常有限: 监听类型 监听地址 客户端连接处理 那么,就可以将这三部分作为tcpserver的可选参数传递进去。所以,在尚未实现之前, README 文档中的 Quick Start 部...阅读全文

博文 2019-07-27 23:04:15 JayL

【朝花夕拾】Golang之Go Module工程实践

一、背景 在引入Go Module管理之前,即在Go 版本在1.11之前,项目的框架结构主要是bin、pkg、src,如下的结构应该都比较熟悉 ~/projectname/ bin/ pkg/ src/ mypack/ --项目内容 foo.go bar.go mypack_test.go commpack --三方公共库 comunit.go 正常情况下,如果引入第三方库,有三种引入方式: 一般三方库代码都是需要放在GOPATH的Src路径下面,然后直接引入 import ( "commpack" ) 通过本地相对路径引用的方式,如: import ( "../commpack" ) 引用git源码库的http路径 import ( "github.com/projectname/comm...阅读全文

博文 2020-04-02 09:33:01 爱看书的鲤鱼

Go 译文之词法分析与解析 Part Two

作者:Adam Presley | 地址:https://adampresley.github.io... 译者前言 本文是关于词法器实现的具体介绍,如果在阅读时遇到困难,建议参考源码阅读,文中的代码片段为了介绍思路。如何解析会在下一篇介绍。 最近简单看了下 Go 源码,在 src/go 目录下有几个模块,token、scanner 和 parser 应该就是 Go 词法相关实现的核心代码,打开 token 目录会发现其中的源码和上一节介绍的内容有诸多相似之处。 由于最近并发任务比较多,不能以最快的速度更新。词法的相关内容,除了本系列,我把其他一些相关文章的链接都贴在下面,如果英文阅读功底不错,可自行阅读。 A look at Go lexer/scanner packages Rob Pi...阅读全文

博文 2019-08-01 10:32:42 波罗学

Go语言及Beego框架环境搭建

在开始环境搭建之前,我们先一起来看看: Go有什么优势: 不用虚拟机,它可直接编译成机器码,除了glibc外没有其他外部依赖,部署十分方便,就是扔一个文件就完成了。 天生支持并发,可以充分的利用多核,很容易实现并发。 25个关键字,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。 内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得更加简单。 跨平台编译,如果你在windows上想生成linux上的可执行文件,只需要一条命令(set GOOS=linux),即可以做到windows系统编译linux的应用。 Go适合做什么 服务器编程,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统...阅读全文

博文 2019-10-18 10:02:41 小碗汤

Beego 的几个小 Tips

Beego 框架不错,个人比较喜欢,关键是还有一些开发工具很实用,封装了很多实现,不需要自己做很多工作,在不考虑效率的前提下,都是可以接受的范畴。 自定义错误页面Beego 默认自己带了一些错误页面,在 error.go 文件中进行了定义。以 404 为例: 12345678910// show 404 notfound error.func NotFound(rw http.ResponseWriter, r *http.Request) {t, _ := template.New("beegoerrortemp").Parse(errtpl) data := make(map[string]interface{}) data["Title"] = "Page Not Found" dat...阅读全文

博文 2020-02-21 10:43:25 ipfans's Blog

Go入手

1、Mac配置环境 1.1 安装go: https://golang.org/dl/ 下载画圈文件,安装即可1.2 配置环境vim ~/.bash_profile 打开配置文件复制下面这些: export PATH="/opt/local/bin:/opt/local/sbin:/usr/local/go/bin:$PATH" export GOROOT=/usr/local/go export GOPATH=/Users/你的go目录/Go export GOBIN=$GOPATH/bin export PATH=$GOBIN:$PATH source ~/.bash_profile 是配置生效 使用 go env 查看go配置 或者 go version 查看版本,这两个命令来检测是否成...阅读全文

Go 译文之词法分析与解析 Part Two

作者:Adam Presley | 地址:adampresley.github.io/2015/05/12/… 译者前言 本文是关于词法器实现的具体介绍,如果在阅读时遇到困难,建议参考源码阅读,文中的代码片段为了介绍思路。如何解析会在下一篇介绍。 最近简单看了下 Go 源码,在 src/go 目录下有几个模块,token、scanner 和 parser 应该就是 Go 词法相关实现的核心代码,打开 token 目录会发现其中的源码和上一节介绍的内容有诸多相似之处。 由于最近并发任务比较多,不能以最快的速度更新。词法的相关内容,除了本系列,我把其他一些相关文章的链接都贴在下面,如果英文阅读功底不错,可自行阅读。 A look at Go lexer/scanner packages Rob ...阅读全文

博文 2019-07-26 18:06:42 波罗学

第一个go程序hello world

在科学技术日益发展的今天,如雨后春笋般呈现出越来越多的具有很高的性能和开发效率的服务端语言。go迄今在很多公司有用武之地,它支持高并发、低延时、低内存消耗,有很好的社区,所以引起很多的开发者逐渐转入go的阵地。下面用示例来运行第一个go程序。go环境安装,https://golang.google.cn/dl/,从上面选择适合自己的环境进行安装;go开发工具,像Goland,LieteIDE,VsCode,我选择Goland进行开发,青睐它的语法高亮,动态提示很方便。创建go工程,通过new-project创建工程,go工程要配置go path,否则无法被发现。具体步骤是,点击File-OtherSettings-Preference for new project,在搜索栏搜索GoPath...阅读全文

博文 2020-02-23 18:32:43 Statham_Jessie

图解kubernetes服务打散算法的实现源码

在分布式调度中为了保证服务的高可用和容灾需求,通常都会讲服务在多个区域、机架、节点上平均分布,从而避免单点故障引起的服务不可用,在k8s中自然也实现了该算法即SelectorSpread, 本文就来学习下这个算法的底层实现细节 1. 设计要点 1.1 zone与node zone即代表一个区域,node则是一个具体的节点,而该打散算法的目标就是将pod在zone和node之间进行打散操作 1.2 namespace namespace是k8s中进行资源隔离的实现,同样的筛选也是如此,在筛选的过程中,不同namespace下面的pod并不会相互影响 1.3 计数与聚合 SelectorSpread算法是scheduler中优先级算法的一种,其实现了优先级算法的map/reduce方法,其中ma...阅读全文

博文 2020-01-19 14:34:19 代码仔

Gin框架系列02:路由与参数

回顾 上一节我们用Gin框架快速搭建了一个GET请求的接口,今天来学习路由和参数的获取。 请求动词 熟悉RESTful的同学应该知道,RESTful是网络应用程序的一种设计风格和开发方式,每一个URI代表一种资源,客户端通过POST、DELETE、PUT、GET四种请求方式来对资源做增删改查的操作。 同样的,Gin框架给我们提供的除这4种动词外,还有PATCH、OPTION、HEAD等,详细内容可以查看rentergroup.go文件的IRoutes接口。 type IRoutes interface { Use(...HandlerFunc) IRoutes Handle(string, string, ...HandlerFunc) IRoutes Any(string, ...Hand...阅读全文

博文 2020-04-08 16:35:24 平也

go tcp c/s server client 学习笔记

server1:package main import ( "fmt" "net" ) func main() { l, err := net.Listen("tcp", "127.0.0.1:9876") if err != nil { fmt.Println(err) } fmt.Println("服务器等待客户端连接") conn, err := l.Accept() if err != nil { fmt.Println(err) } defer conn.Close() fmt.Println("客户端建立连接 ") buf := make([]byte, 4096) n, err := conn.Read(buf) if err != nil { fmt.Println(err)...阅读全文

博文 2019-07-25 14:03:27 xingzhehxiang

viper配置框架-支持zookeeper的读取和监听

viper作为配置框架,其功能非常的强大,我们没有理由不去了解一下。我们先看官网对它的功能简介: viper是完整配置解决方案,他可以处理所有类型和格式的配置文件,他有如下功能: 设置默认配置 支持读取 JSON TOML YAML HCL 和 Java 属性配置文件 监听配置文件变化,实时读取读取配置文件内容 读取环境变量值 读取远程配置系统 (etcd Consul) 和监控配置变化 读取命令 Flag 值 读取 buffer 值 读取确切值 乍一看,未免有相见恨晚之感,可仔细一想,不免脑袋里有另外一种声音:不会不支持读取zookeeper吧?好吧,至少我是这样的。 基于这种想法,当然要去立马尝试,如下: viper.AddRemoteProvider("zookeeper", "xx....阅读全文

博文 2020-05-23 23:34:24 修华师

详解Go语言的计时器

Go语言的标准库里提供两种类型的计时器Timer和Ticker。Timer经过指定的duration时间后被触发,往自己的时间channel发送当前时间,此后Timer不再计时。Ticker则是每隔duration时间都会把当前时间点发送给自己的时间channel,利用计时器的时间channel可以实现很多与计时相关的功能。 文章主要涉及如下内容: Timer和Ticker计时器的内部结构表示 Timer和Ticker的使用方法和注意事项 如何正确Reset定时器 计时器的内部表示 两种计时器都是基于Go语言的运行时计时器runtime.timer实现的,rumtime.timer的结构体表示如下: type timer struct { pp puintptr when int64 per...阅读全文

golang接口使用记录

golang接口使用记录 1. 总述 接口类型是对其他类型行为的概括与抽象,Go语言的独特之在于它是隐式实现,无需申明它实现哪些接口,只要提供接口所必须的方法即可。 接口即约定 实现单词和行的计数器,考虑使用bufio.ScanWords // counter.go // 计数器 type Counter interface { Count(fileName string) error } // 单词计数 type WordCount int func (w *WordCount) Count(fileName string) error { file, err := os.Open(fileName) if err != nil { return errors.New("open file...阅读全文

博文 2020-02-24 13:32:43 进击的大只文

Gin框架系列01:极速上手

Gin是什么? Gin是Go语言编写的web框架,具备中间件、崩溃处理、JSON验证、内置渲染等多种功能。 准备工作 本系列演示所有代码都在Github中,感兴趣的同学可以自行查阅,欢迎大家一起完善。 https://github.com/pingyeaa/golang-examples/tree/master/gin 没有安装配置Go语言环境的同学请先自行安装,这里不再赘述。首先,我们来创建工作目录gin。 mkdir gin && cd gin 然后用go mod命令初始化项目,go mod是Go语言的包管理工具,官方推荐使用,有了它就不再受GOPATH的限制,可以在任何目录初始化项目。 go mod init gin 接下来安装gin库。 go get -u github.com/gi...阅读全文

博文 2020-04-06 18:32:40 平也

图解kubernetes服务打散算法的实现源码

在分布式调度中为了保证服务的高可用和容灾需求,通常都会讲服务在多个区域、机架、节点上平均分布,从而避免单点故障引起的服务不可用,在k8s中自然也实现了该算法即SelectorSpread, 本文就来学习下这个算法的底层实现细节 1. 设计要点 1.1 zone与node zone即代表一个区域,node则是一个具体的节点,而该打散算法的目标就是将pod在zone和node之间进行打散操作 1.2 namespace namespace是k8s中进行资源隔离的实现,同样的筛选也是如此,在筛选的过程中,不同namespace下面的pod并不会相互影响 1.3 计数与聚合 SelectorSpread算法是scheduler中优先级算法的一种,其实现了优先级算法的map/reduce方法,其中ma...阅读全文

go web 框架-day1

用go 来实现一个极简的web框架,框架虽然简单,但是里面也包括了核心内容,对需要学习web框架的人开说是一个不错的学习路径。简单的web框架主要包括端口监听,获取请求和路由响应。go里面本身带有http库来实现这些功能。第一天的代码主要分为两部分,1是main函数入口,2是框架部分。我们先看看main函数 func main() { r := gee.New() r.Get("/",func(w http.ResponseWriter,r* http.Request){ fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path) }) r.Get("/hello", func(w http.ResponseWriter, req *http.Request)...阅读全文

博文 2020-04-06 11:32:44 对方正在输入_7c4d

【代码篇】从零开始一步步搭建自己的golang框架(六)

基本上这个基础框架拿到手之后就可以做一些自己想要做的改动了,比如你想添加个队列的插件,你可以在相应的目录里面进行修改了,但我想让它更通用一些,本篇文章将会启动一个websocket服务,并且把配置文件改成yaml格式。 修改配置 之所以想要把配置从json改为yaml,有以下几点原因: json主要是用于信息传输,而yaml更适合作为配置文件的格式来使用,两者的用途不一样; yaml格式看起来比json更加清晰; 在yaml文件中可以添加注释,让配置更加易懂。 在此,解析yaml文件用的包是"gopkg.in/yaml.v2",例子可以在github上找到,文末可以找到本项目的链接。 为框架添加websocket的服务 我希望这个项目能够尽可能地涵盖一些基础的功能,所以我为它添加了webso...阅读全文

博文 2020-02-15 23:33:42 wx5e1abbbb0a5e5

Go 译文之词法分析与解析 Part Three

作者:Adam Presley | 地址:adampresley.github.io/2015/06/01/… 译者前言 最近发现我的翻译是越来越随性了,刚开始文章翻译的时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响的文字我现在都会选择直接跳过。 这篇文章主要是关于 INI 解释器的 parser 实现,它会从上一节中 Lexer 中接收 Token 解析,最终返回给使用者具有实际意义的结构体。读了这个系列的文章,我相信大家对词法器实现的原理将会有了基本的理解,但如果要真正实践,似乎还有一段距离。有兴趣的话,我们可以实现个自己的 JSON 解释器。要求可以稍微简化,只解析到 JSON 的第一层。 译文如下: 本系列第一篇文章,英文原版,我们介绍了词法分析解析的一些基础概念,...阅读全文

博文 2019-08-01 01:04:15 波罗学

Mix PHP V2.2 发布,与 go-micro 深度集成的 PHP 微服务开发框架

Mix PHP 是一个基于 Swoole 开发的高性能 PHP 框架,从 2017 年开始经过多年发展收获了很多中小型团队的支持,框架版本也经历了多个版本的迭代: V1.*: 基于 Swoole 的常驻内存型 PHP 高性能框架 V2.0: 基于 Swoole 的 FastCGI、常驻内存、协程三模 PHP 高性能框架 V2.1: 基于 Swoole 4.4+ 单线程协程 PHP 框架 V2.2: 基于 Swoole 4.4+ 单线程协程 PHP 微服务框架 ???? 微服务开发 本次版本更新主要是增加微服务开发相关的组件与开发骨架,从上一次 Mix V2.1 非常激进的切换为单线程协程后 [为何从 Reactor+Manager+Worker 多进程改为单线程协程],Mix V2.2 在微...阅读全文

博文 2020-05-26 17:36:09 撸代码的乡下人

Go 译文之词法分析与解析 Part Three

作者:Adam Presley | 地址:https://adampresley.github.io... 译者前言 最近发现我的翻译是越来越随性了,刚开始文章翻译的时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响的文字我现在都会选择直接跳过。 这篇文章主要是关于 INI 解释器的 parser 实现,它会从上一节中 Lexer 中接收 Token 解析,最终返回给使用者具有实际意义的结构体。读了这个系列的文章,我相信大家对词法器实现的原理将会有了基本的理解,但如果要真正实践,似乎还有一段距离。有兴趣的话,我们可以实现个自己的 JSON 解释器。要求可以稍微简化,只解析到 JSON 的第一层。 译文如下: 本系列第一篇文章,英文原版,我们介绍了词法分析解析的一些基础概念,了解...阅读全文

博文 2019-08-01 12:32:37 波罗学

框架—记一次手写简易MVC框架的过程 附源代码

0.环境 Java : JDK 1.8 IDE : IDEA 2019 构建工具 : Gradle 1.整体思路 1.1 一些点 使用DispatcherServlet统一接收请求 自定义@Controller、@RequestMapping、@RequestParam注解来实现对应不同URI的方法调用 使用反射用HandlerMapping调用对应的方法 使用tomcat-embed-core内嵌web容器Tomcat. 自定义简单的BeanFactory实现依赖注入DI,实现@Bean注解和@Controller注解的Bean管理 1.2 整体调用图 image 1.3 启动加载顺序 image 2.具体实现 2.1 项目整体工程目录 image 创建项目就不说了,IDEA自行创建gra...阅读全文

博文 2020-01-11 21:32:51 苡仁ilss

MaxCompute与OSS非结构化数据读写互通(及图像处理实例)

摘要: MaxCompute作为阿里巴巴集团内部绝大多数大数据处理需求的核心计算组件,拥有强大的计算能力,随着集团内外大数据业务的不断扩展,新的数据使用场景也在不断产生。在这样的背景下,MaxCompute(ODPS)计算框架持续演化,而原来主要面对内部特殊格式数据的强大计算能力,也正在一步步的通过新增的非结构化数据处理框架,开放给不同的外部数据。 **0\. 前言** MaxCompute作为阿里巴巴集团内部绝大多数大数据处理需求的核心计算组件,拥有强大的计算能力,随着集团内外大数据业务的不断扩展,新的数据使用场景也在不断产生。在这样的背景下,MaxCompute(ODPS)计算框架持续演化,而原来主要面对内部特殊格式数据的强大计算能力,也正在一步步的通过新增的非结构化数据处理...阅读全文

go学习笔记-init函数执行顺序分析

golang中有个神奇的函数init,该函数会在所有程序执行开始前被调用,每个包可以包含多个init函数,所有被编辑器识别到的init函数都会在main函数执行前被调用。通常被用来注册一个程序需要使用的依赖,如mysql注册,配置文件加载等。 在main包的使用 package main import "fmt" func main() { fmt.Println("这里是mian") } func init() { fmt.Println("这里是Init1") } func init() { fmt.Println("这里是Init2") } //输出结果 这里是Init1 这里是Init2 这里是main 一个很简单的示例,可以看到init函数是在main函数执行之前被执行的,并且一个...阅读全文

博文 2020-01-15 09:32:42 旧梦发癫

0杂项

go mod initgo mod tidy 包依赖关系go mod download 源码下载gin中文快速入门https://gin-gonic.com/zh-cn/docs/quickstart/Jsoniter Jsoniter 的 Golang 版本可以比标准库(encoding/json)快 6 倍之多。之前在Gin中已经说到, Gin比Martini的效率高好多耶, 究其原因是因为使用了httprouter这个路由框架, httprouter的git地址是: httprouter源码. 今天稍微看了下httprouter的 实现原理, 其实就是使用了一个radix tree(前缀树)来管理请求的URL, 下面具体看看httprouter原理.https://www.cnblog...阅读全文

博文 2020-05-31 22:32:53 范佳伟_f5b7