go语言实现markdown解析库

Blackfriday是在Go中实现的Markdown处理器。您可以安全地输入用户提供的数据,速度快,支持通用扩展(表,智能标点符号替换等),并且对于所有utf-8(unicode)都是安全的输入。 ** 文章转自go语言中文文档 [http://www.topgoer.com](http://www.topgoer.com/?from=studygolang "文章转自go语言中文文档http://www.topgoer.com") ** 当前支持HTML输出以及Smartypan...阅读全文

Go语言中文网 2020-02-03 11:20:07 lu569368

Go语言基础(三)—— 面向对象编程

前言: 本专题用于记录自己(647)在Go语言方向的学习和积累。 系列内容比较偏基础,推荐给想要入门Go语言开发者们阅读。 目录如下: Go语言基础(一)—— 简介、环境配置、HelloWorld Go语言基础(二)—— 基本常用语法 Go语言基础(三)—— 面向对象编程 Go语言基础(四)—— 优质的容错处理 Go语言基础(五)—— 并发编程 Go语言基础(六)—— 测试、反射、Unsafe Go语言基础(七)—— 架构 & 常见任务 Go语言基础(八)—— 性能调优 本篇将介绍如下内容: 1...阅读全文

掘金 2020年02月02日 奇舞647

清晰架构(Clean Architecture)的Go微服务: 编码风格

编码风格在编程中是一个相对乏味的主题,但是合适的编码风格对一个有效的程序员是至关重要的。 它有三个组成部分: 程序结构 ( application layout) 编码规则或风格 命名约定 我已经在清晰架构(Clean Architecture)的Go微服务: 程序结构¹中讨论了程序结构,因此本文将介绍后两点。 编码规则或风格 没有包级别(package level)变量。包级别变量打破了函数封装并使函数有了不确定。我在本程序中遵循了这个规则,唯一的例外是在“容器”包中,因为它负责程序级配置,在...阅读全文

Segmentfault 2020-02-07 19:32:32 倚天码农

k8s核心技术-Pod篇

Pod详解 Pod详解 Pod介绍 Pod 定义 Pod使用 Pod分类 普通Pod 静态Pod Pod生命周期和重启策略 Pod状态 Pod重启策略 Pod资源配置 Pod介绍 Pod 是k8s的重要概念,要掌握 每个Pod都有一个特殊的被称为“根容器”的Pause容器 Pause容器对应的镜像属于k8s平台的一部分,除了Pause容器还包含一个或多个紧密相关的业务容器 Pod图示: Pod VS 应用每个Pod都是应用的一个实例,有专用的IP Pod VS 容器一个Pod可以有多个容器,彼此...阅读全文

Segmentfault 2020-02-07 18:32:34 王知晓

GoLang-内存管理

一、tcmalloc介绍<参考资源> go的内存管理和tcmalloc(thread-caching malloc)很像,先看一下tcmalloc的实现。 1.1 简介 tcmalloc是google推出的一种内存分配器,常见的内存分配器还有glibc的ptmalloc和google的jemalloc。相比于ptmalloc,tcmalloc性能更好,特别适用于高并发场景。 1.2 tcmalloc算法策略 tcmalloc分配的内存主要来自两个地方:全局缓存堆和进程的私有缓存。对于一些小容量的...阅读全文

简书 2020-02-03 03:32:41 帘外五更风

如何控制Go编码JSON数据时的行为

今天来聊一下我在Go中对数据进行 JSON 编码时遇到次数最多的三个问题以及解决方法,大家来看看是不是也为这些问题挠掉了不少头发。 自定义JSON键名 这个问题加到文章里我是有所犹豫的,因为基本上大家都会,不过属于同类问题我还是放进来了,对新接触Go 的同学更友好些。 我们先从最常见的一个问题说,首先在Go 程序中要将数据编码成JSON 格式时通常我们会先定义结构体类型,将数据存放到结构体变量中。 type Address struct { Type string City string Cou...阅读全文

掘金 2020年02月02日 kevinyan

如何控制Go编码JSON数据时的行为

今天来聊一下我在Go中对数据进行 JSON 编码时遇到次数最多的三个问题以及解决方法,大家来看看是不是也为这些问题挠掉了不少头发。 自定义JSON键名 这个问题加到文章里我是有所犹豫的,因为基本上大家都会,不过属于同类问题我还是放进来了,对新接触 Go 的同学更友好些。 我们先从最常见的一个问题说,首先在Go 程序中要将数据编码成JSON 格式时通常我们会先定义结构体类型,将数据存放到结构体变量中。 type Address struct { Type string City string Co...阅读全文

Segmentfault 2020-02-07 12:32:35 Kevin

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

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

博客园 2018-03-15 19:18 songwenjie

k8s安装

k8s安装 k8s安装 minikube方式 介绍 kubectl安装 MiniKube安装 安装 使用 部署应用 kubeadm方式 区别 minikube方式 介绍 Minikube 是一种可以让您在本地轻松运行 Kubernetes 的工具。 Minikube可以实现一种轻量级的Kubernetes集群,通过在本地计算机上创建虚拟机并部署只包含单个节点的简单集群 官网文档: 英文文档 minikube中文文档 minikube英文文档 kubectl安装 MiniKube 的安装需要先安装...阅读全文

Segmentfault 2020-02-07 12:32:32 王知晓

K8S介绍

K8S介绍 K8S介绍 容器与容器编排 常见的编排工具 K8S 介绍 k8s能做什么 k8s 优势 K8S架构 网络结构 Master 节点 组件介绍 Node节点 组件介绍 容器与容器编排 首先要了解这两者的概念 1.容器 简单的说: 容器是⼀个“单进程”模型。 对于容器来说,⼀个容器永远只能管理⼀个进程。更确切地说,⼀个容器,就是⼀个进程。 容器,就是未来云计算系统中的进程 容器镜像就是这个系统⾥的“.exe”安装包。 2.容器编排 简单的说: 有很多容器组成了一个集群,需要某种方法把它们关...阅读全文

Segmentfault 2020-02-07 09:32:33 王知晓

golang实现流量控制操作

利用`go` `channel`实现限流量控制,原理:设置一个缓冲通道,设置访问中间键,当用户请求连接时判断channel里面长度是不是大于设定的缓冲值,如果没有就存入一个值进入channel,如果大于缓冲值,channel自动阻塞。当用户请求结束的时候,取出channel里面的值。 ** 文章转自go语言中文文档 [http://www.topgoer.com](http://www.topgoer.com/?from=studygolang "文章转自go语言中文文档http://ww...阅读全文

Go语言中文网 2020-02-02 11:49:33 lu569368

【JavaScript】请不要把Object和JSON混为一谈

什么是JSON { "name": "小徐", "experience": 2.5, "hobbit": ["唱歌","跳舞","打球","说唱"] } 什么是Object var o = { name: '小吴', age: 22, height: 185 } 为什么会被混为一谈 原因很简单:这两个东西长得很像啊,都有花括号/键值对,而且JSON就是由JavaScript衍生出来的格式,难免会傻傻分不清楚 然而作为一个较真的切图仔,不能这么马马虎虎地对待这方面的知识。我们把Object写成这样...阅读全文

简书 2020-02-02 11:32:39 Kagashino

程序猿们那些可选的职业发展路线

时不时会有一些做开发的小伙伴向我咨询一些职业发展的问题,比如:该不该跳槽?遇到了职业天花板该怎么破?如何才能成为架构师?等等。这些问题,说白了,其实都是如何选择职业发展路线的问题。那我们就来聊聊那些可选的职业发展路线,需要注意,每个人都并非只走一条路线。 1. 纵深发展 所谓纵深,就是纵向往技术深度发展,不管是 Android 开发、iOS 开发、前端开发,还是后端开发,都可以根据技术能力划分为初级、高级、资深、技术专家/架构师、高级技术专家/高级架构师、首席技术专家/首席架构师等级别。在阿里的...阅读全文

简书 2020-02-02 11:32:39 Keegan小钢

go plan9汇编入门

原文地址:https://yuchanns.org/posts/2020/01/31/golang-assembly/ 欢迎访问我的博客yuchanns'Atelier 有时候我们想要知道写出来的代码是怎么编译执行的,这时候go tool compile就是一个很好用的工具。 本文相关代码yuchanns/gobyexample 如何输出汇编代码 有三种方法可以输出go代码的汇编代码: go tool compile 生成obj文件 go build -gcflags 生成最终二进制文件 先go...阅读全文

简书 2020-02-02 01:32:39 yuchanns

GoLang-逃逸分析

参考资源一 参考资源二 参考资源三 对于手动管理内存的语言,比如 C/C++,调用著名的malloc和new函数可以在堆上分配一块内存,这块内存的使用和销毁的责任都在程序员。一不小心,就会发生内存泄露,搞得胆战心惊。 但是 Golang 并不是这样,虽然 Golang 语言里面也有 new。Golang 编译器决定变量应该分配到什么地方时会进行逃逸分析。使用new函数得到的内存不一定就在堆上。堆和栈的区别对程序员“模糊化”了,当然这一切都是Go编译器在背后帮我们完成的。一个变量是在堆上分配,还是...阅读全文

简书 2020-02-01 21:32:42 帘外五更风

leetcode_1051

Golang: 思路:这题最好的思路是桶排序,因为限制条件明确而清晰,这里不得不说大佬还是大佬。常规思路自然是:将数组复制一遍,然后排序,排完序后的数组与原数组对比,求出所有同一位上数值不同的元素的数量。 代码如下: func heightChecker(heights []int) int { if len(heights)<=1 { return len(heights) } temp:=make([]int,len(heights)) copy(temp,heights) sort.Int...阅读全文

简书 2020-02-01 21:32:39 淳属虚构

leetcode_441

Golang: 思路:这题最优当然是用数学方法解,这里说个普通思路,即从i等于1开始,1+2+3+4....,直到n小于这个总和为止,但这里需要注意溢出问题,即万一1+2+3+4....超过某个临界值(即大于int类型的最大值),而n并没有超过,就会出现溢出错误。所以,在做此类问题时,需要注意:做减法会好过加法。 代码如下: func arrangeCoins(n int) int { //如果考虑溢出问题,减法胜过加法 i:=1 res:=0 for n>=i { res++ n=n-i i+...阅读全文

简书 2020-02-01 19:32:46 淳属虚构

Go并发编程-并发编程难在哪里

一、前言 编写正确的程序本身就不容易,编写正确的并发程序更是难中之难,那么并发编程究竟难道哪里那?本节我们就来一探究竟。 二、数据竞争 https://yourbasic.org/golang/data-races-explained/ 当两个或者多个线程(goroutine)在没有任何同步措施的情况下同时读写同一个共享资源时候,这多个线程(goroutine)就处于数据竞争状态,数据竞争会导致程序的运行结果超出写代码的人的期望。下面我们来看个例子: package main import ( ...阅读全文

简书 2020-02-01 19:32:46 阿里加多