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

知识更新越来越快,但是学习起来越来越困

我是一个着迷于产品和运营的技术人,乐于跨界的终身学习者。欢迎关注我的个人公众号「跨界架构师」 每周五11:45 按时送达~ 我的第「140」篇原创敬上 ​大家好,我是Z哥,先祝大家节日快乐。不知道这个假期你打算出门吗?Z哥我是打算不出远门了,怕死,哈哈。索性好好宅家里学习,强化一下自己。相信大家也感受到了,随着互联网加速了信息的流动速度,知识的更新迭代也在加速。可能原本靠着一门手艺可以过一辈子,现在可能每5~10年就需要一次大的迭代才能跟上社会的发展步伐,不被out。并且,随着最近几年知识付费的兴起,提倡「终身学习」的声音越来越大了。不管是出于什么目的在鼓吹「终身学习」,这个观点的价值取向总是正向的。但是对于学习这个问题,困扰我们大部分人的并不是学什么或者怎么学。而是,总是学着学着没动力,半...阅读全文

博文 2020-05-02 23:33:11 跨界架构师

关于服务器端wkhtmltopdf依赖于X server的解决方案

背景 wkhtmltopdf这个库友好地支持将html文件转换为pdf文件,它基于QT的webkit进行渲染,因此依赖于操作系统的图形用户界面操作。 而服务器一般是运行级别3(即多用户状态下的字符终端界面),因此在服务器端直接调用wkhtmltopdf会报如下错误: qt.qpa.screen: QXcbConnection: Could not connet to display Cloud not connect to any X display 原因就在于wkhtmltopdf依赖于X server (linux 操作系统里面图形接口服务器的简称),而一般服务器运行在字符终端级别,并没有启动图形用户界面 ,因此产生无法连接到X display服务的错误。 解决方案 在 xvfb(X v...阅读全文

博文 2019-02-20 23:34:42 帅番茄

Go单例模式

单例模式回顾 以前在做java的时候,经常会用到设计模式,如单例模式、工厂模式、观察者模式等。其实设计模式和语言无关,先简单回顾下单例模式吧,单例模式是一种用在特定场景的设计模式。比如,读取程序的配置文件的时候就会用到单例模式。 想象一下,假如有个类的实例是来对配置文件进行操作,如果不用单例模式,系统中任何用到读取配置文件的地方都将会创建一个对象,这得多么浪费内存。 实际上改对象只需要被实例化一次即可。单例模式的抽象表达就是:在程序中我们只需要某个类实例化一次即可,保证一个类仅有一个实例,并提供一个获取实例的方法。 单例模式的实现 单例模式有懒汉式和饿汉式。在用Go实现之前,先看看Java的实现。在java中不管是懒汉式还是饿汉式都会将构造方法私有化。这点不用解释,因为不需要通过外部来实例化...阅读全文

博文 2019-03-04 00:34:40 nobody

关于写文章的反思

看了一下我之前写的文章,有多少是水篇数?复制别人的列子有多少? 自已真正有心得的,又写了多少? 我过了需要用数量来证明自己的时候了 从今天开始,删掉那些水文,质量不高的,尽可能完善。 我可能写不了多好,但是我要求我写的东西能拿得出手。 补: session及JWT及Oath的使用。 MySql的sql语句优化。 Git遇到的问题及解决方案。 Golang的使用及避坑。 用心点...阅读全文

博文 2018-07-27 09:34:48 送你一碗大麦茶

高可用Redis服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常...阅读全文

golang grpc keepalive

最近遇到 grpc 客户端报错 `rpc error: code = Unavailable desc = transport is closing`,原因是连接长时间没有使用,被服务端断开,这种情况通过简单粗暴的重试策略可以解决,更加优雅的解决方案是增加保持连接策略 ## 服务端 ``` go var kaep = keepalive.EnforcementPolicy{ MinTime: 5 * time.Second, // If a client pings more than once every 5 seconds, terminate the connection PermitWithoutStream: true, // Allow pings even when there...阅读全文

博文 2019-11-27 20:24:57 hatlonely

用 golang 实现区块链系列一 | 基本原型

介绍 区块链是二十一世纪以来最具革命性的科技之一,它仍在发展中,并且其潜力仍未被充分认知。本质上,区块链只是一个分布式的记录数据库,但使它和其他数据库不一样的是,他并不是一个私有数据库,而是公开的。每个使用它的人都有完整或者部分副本。并且一条新的记录只能在被数据库的其他管理员同意的情况下才能被加入。区块链也使得加密货币和智能合约成为可能。 本系列文章将会构建一个基于简单区块链实现的简单加密货币。 Block 我们从 “区块链” 的 “区块” 开始讲起。在区块链中, block 存储着有价值的信息。例如,比特币区块存储着交易信息,这是加密货币的本质。除此之外,区块还包含着一些技术信息,像是版本号,当前时间戳,还有上一个区块的 hash 值。 在本文中,我们不会去着手实现一个区块链中描述的区块,...阅读全文

博文 2018-11-19 20:34:51 小马哥_Magical

Golang设计模式(工厂方法模式)

工厂方法模式类图, image.png abstract_factory_test.go // abstract_factory_test package abstract_factory import ( "testing" ) func TestMotorbikeFactory(t *testing.T) { motobikeF, err := GetVehicleFactory(MotobikeFactoryType) if err != nil { t.Fatal("Create motorbike vehicle factory failed") } vehicle, err := motobikeF.GetVehicle(SportMotorbikeType) if err !=...阅读全文

1秒10亿数据! 阿里云日志服务再次升级

摘要: 日前,在“2017杭州·云栖大会”上阿里云宣布,日志服务与Splunk打通合作,同时面向亿级实时日志分析功能上线。兼容SQL92标准与JDBC协议,集中解决各类环境日志一站式需求,包括采集、存储、投递与查询分析等,将日志分析提升到全新高度,达到国内领先水平。 日常生活中人和物的活动会产生大量的数据,而日志是一种常用记录这类活动的载体。通过日志处理,分析可以帮助我们通过大数据找到背后的运作规律,做到业务的智能运维和运营。日志分析最终是拿到结果,但过程中往往需要通过软件(例如kafka、ELK、Flume)等组合搭建日志处理系统,这给使用日志分析工作带来很多问题和困扰。而阿里云日志服务是一种无托管的方案,无需用户关心琐碎的数据采集、扩容、维护、错误处理等工作,将精力集中投入在“分析...阅读全文

Go单例模式

单例模式回顾 以前在做java的时候,经常会用到设计模式,如单例模式、工厂模式、观察者模式等。其实设计模式和语言无关,先简单回顾下单例模式吧,单例模式是一种用在特定场景的设计模式。比如,读取程序的配置文件的时候就会用到单列模式。 想象一下,假入有个类的实例是来对配置文件进行操作,如果不用单例模式,系统中任何用到读取配置文件的地方都将会创建一个对象,这得多么浪费内存。 实际上该对象只需要被实例化一次即可。单例模式的抽象表达就是:在程序中我们只需要某个类实例化一次即可,保证一个类仅有一个实例,并提供一个获取实例的方法。 单例模式的实现 单例模式有懒汉式和饿汉式。在用Go实现之前,先看看Java的实现。 在java中不管是懒汉式还是饿汉式都会将构造方法私有化。这点不用解释,因为不需要通过外部来实例...阅读全文

博文 2019-03-04 01:34:40 zhoushuime

consul服务注册与服务发现的巨坑

最近使用consul作为项目的服务注册与服务发现的基础功能。在塔建集群使用中遇到一些坑,下面一个个的记录下来。 consul集群多node consul集群的node也就是我们所说的consul实例。集群由多个node组成,为了集群的可用性,需要超过半数的node启用server。如5个node中建议3个启用server模式,3个node组成的集群就2个node启用server模式。看到这里的时候你一定觉得没有什么问题呀,但是consul坑就是多。加入你的集群组成如下: Node Address Status Type Build Protocol DC Segment BJ-MQTEST-01 10.163.145.117:8301 alive server 1.0.6 2 iget-to...阅读全文

博文 2018-07-02 12:23:38 梦朝思夕

设计模式-03-生成器模式

生成器模式概述生成器模式将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式的主要功能是构建复杂的产品,而且是细化地、分步骤地构建产品,也就是说生成器模式重在一步一步解决构建复杂对象的问题。 实现使用文件的导出来实现生成器模式。文件的导出有普通文本和xml等文件格式。生成器作为一个接口,不同的具体生成器具体实现接口的方法。还有一个指导者负责整体构建的算法部分,是相对不变的部分。 总结与分析生成器模式构建对象的过程是统一的、固定不变的,变化的部分放到生成器部分了,只要配置不同的生成器,那么同样的构建过程,就能构建出不同的产品来。生成器模式的重心在于分离构建方法和具体的构造实现,从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换,从而可以灵活地组合来构...阅读全文

博文 2019-04-10 20:34:40 疯狂的卡卡

这个问题困扰了很久

~~~ 获取一个URL信息 那么很简单的一句话 就是 r.Host得到 func Test1(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Host) } func Test2()string { //我有许多自定义函数,默认只传参数的那种, 由于需要功能需要, 需要传入个URL了 那么就需要r.Host了 //那么问题来了 //我为了得到这个r.Host实时得到这个URL,难道我几十个函数都要修改在参数多写一句 r *http.Request 吗? //这样GO也太坑了吧 , //比如这样直接读取host不可以 纳闷 有什么解决办法吗 比如下面的 提供我几十个函数调用 r...阅读全文

PHP高级工程师学习和面试指南(转)

绝知此事须躬行。 为何写这篇文章。因为搜面试题搜到一篇# PHP高级工程师面试题 。看了看,有的会有的不会。想到自己也或多或少看过一些资料,故整理一下。 以下表中,资料列出的就够了。大都足以回答上面的面试题中的问题。 技能 资料 思考 php内核篇 《PHP7内核剖析》《PHP 7底层设计与源码实现》《PHP 7底层设计与源码实现》视频 尽量看细点。php7较之php5怎么节省内存的。比如php7 zvalue中复杂类型的用指针操作,也就是存个指针。php7快在哪里,小到string用了柔性数组,大到ast吧。这些话是我面试后的反思。我当时只是回答结构体设计不同。 php框架篇 《深入 Laravel 核心 》《BAT资深工程师由浅入深分析Tp5&Tp6底层源码》 自己用啥框架就找啥吧。 p...阅读全文

博文 2020-03-23 14:33:02 我是程序汪

分步式一致性缓存解决方案version_cache

# version_cache version_cache是一个分步式一致性缓存解决方案。 原理:job 将数据打包成版本到redis,实例将存在redis的版本load到本地内存并计算最新版本的生效时间,使所有实例的缓存在同一时间生效来达到所有实例数据的一致。 实用场景:数据量少、非及时生效数据、高并发强一致的场景。如:配置服务,门店服务等 优点: 1. 轻松实现水平扩展,实现千万并发的服务不是梦 2. 数据强一至性,不论启动多少实例,同一时间的数据绝对是一致的(服务器时间一致情况下) 3. 使用简单,实现数据生成接口后就可以像使用缓存一样方便,轻松实现高性能服务 缺点: 1. 数据按版本生效,变更的数据会延迟生效(原则上数据量越小处理越快) 2. 不适合大数据缓存 # 架构: https...阅读全文

golang结构体json的时间格式化解决方案

使用了OSC这么久了还没有写一篇博文,真实惭愧!在次写下第一篇。 最近开发项目时候发现一个结构体的Json转换的时间格式问题。 即这种1993-01-01T20:08:23.000000028+08:00 这种表示UTC方法。从我们习惯来说,更喜欢希望的是 1993-01-01 20:08:23这种格式。 重新复现代码如下: package main import ( "time" "encoding/json" ) type Student struct { Name string `json:"name"` Brith time.Time `json:"brith"` } func main() { stu:=Student{ Name:"qiangmzsx", Brith:time.D...阅读全文

博文 2017-09-12 03:52:51 梦朝思夕

单件模式——Golang实现

单件模式比较常见,算是创建型的设计模式,和工厂模式不同,他只能创建一个实例。他的应用场景很多,比如MySQL只能有一个实例这种都算。 单件模式能简单分成支持并发和不支持并发两种。不过并发这个很简单,满大街Golang实现的单件模式都是这样的。 普通的单件模式 package singleton import ( "fmt" ) var _self *Singleton type Singleton struct { Name string } func Instance() *Singleton { if _self == nil { _self = new(Singleton) return _self } return _self } func (o *Singleton) SetNam...阅读全文

博文 2017-02-09 12:25:33 Bryce

高可用Redis服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常...阅读全文

如何把golang的Channel玩出async和await的feel

引言如何优雅的同步化异步代码,一直以来都是各大编程语言致力于优化的点,记得最早是C# 5.0加入了async/await来简化TPL的多线程模型,后来Javascript的Promise也吸取这一语法糖,在ES 6中也加入了async和await.那么,被大家一称赞并发性能好、异步模型独树一帜的golang,能否也有async和await呢?其实,这对于golang的CSM来说是一点也不难!核心代码如下: done := make(chan struct{}) go func() { // do work asynchronously here // close(done) }() <-done 是不是很简单呢? go rountine负责async, channel的负责await, 简直...阅读全文

博文 2020-02-27 16:32:50 Java天天

Hadoop中HDFS优点有哪些?

随着互联网数据规模的不断增大,对文件存储系统提出了更高的要求,需要更大的容量、更好的性能以及更高安全性的文件存储系统,与传统分布式文件系统一样,HDFS分布式文件系统也是通过计算机网络与节点相连,但也有优于传统分布式文件系统的优点。 **1. 支持超大文件** HDFS分布式文件系统具有很大的数据集,可以存储TB或PB级别的超大数据文件,能够提供比较高的数据传输带宽与数据访问吞吐量,相应的,HDFS开放了一些POSIX的必须接口,容许流式访问文件系统的数据。 **2. 高容错性能** HDFS面向的是成百上千的服务器集群,每台服务器上存储着文件系统的部分数据,在集群的环境中,硬件故障是常见的问题,这就意味着总是有一部分硬件因各种原因而无法工作,因此,错误检测和快速、自...阅读全文

决定以太坊未来的3个重要项目

在过去的几年里,以太坊已经成为加密货币领域最重要的项目。 作为市场中大多数代币的 底层基础设施,以太坊网络的健康对于加密数字币生态系统中的其他环节至关重要,以太坊 也一直在努力跟上增长。 交易容量一直困扰着以太坊网络,以至于许多专家推出了辅助项目 来创建替代性区块链,以便从头解决一些限制。 然而,以太坊团队并没有闲着,目前已经 有几个项目作为以太坊基金会的一部分进行孵化,重点就是解决当前版本的以太坊中的一些 基本限制。 以太坊的第二层扩容解决方案改进了以太坊网络的一些基本方面,如共识协议或其安全模型。 考虑到以太坊公共区块链的规模和活跃度,你可以想象在不中断网络的情况下实施这些增强 措施是一项巨大的挑战。 虽然以太坊网络有好几个第二层扩容项目,但有三个以及接近全面...阅读全文

【语言实践】Go语言文档自动化之go-swagger

为什么需要文档自动化? 技术人员对自动化的认知主要来自于“惰性和惯性”,可以代码实现的事情就不要手工编辑,“我们不是设计师”,我们追求效率,美不美是排第二位的。so,你也会明白为啥需要文档自动化吧,毕竟除了coding,技术人员主要工作就是文档,特别是在跨团队沟通的时候,在需要把技术内容输出团队之外,或者输出自己之外的人员时候。就需要一个优雅的方式,高效的方式,以及可以炫耀的方式,所以文档自动化应运而生。 1 go-swagger依赖包下载 go-swagger中在github.com的仓库下的依赖包如下,主要包含可以对语法进行校验的govalidator,文档化的标准specification的go-openapi,还有网络处理的golang.org旗下的net和text。 go-swag...阅读全文

博文 2019-03-05 14:35:07 万能的华哥Dean

互联网大厂必问面试合集,助你跳槽拿高薪--Java篇

前言作为程序员,免不了要经历面试这关,虽然平时工作勤勤恳恳,但是面试上面未必能展示的出来,比如平时都是做增删改查的业务系统,面试官非要问你如何处理高并发大数据,本来是写java代码,非要问你大型网站架构,这些问题防不胜防,本文就自己的面试经验来总结一下,抛砖引玉。第一步先自我介绍?介绍自己的项目经验和个人的擅长点,面试官主要考察你的表达能力和语言精简能力。第二步:项目中做了什么,难点在哪里?主要是想了解参与过技术难度最大的项目难点,技术难点在哪里,你是怎么来解决的,考察项目经验(技术难度)和解决问题的能力。第三步:开始切入技术面试正题:基础篇基本功面向对象特征final, finally, finalize 的区别int 和 Integer 有什么区别重载和重写的区别抽象类和接口有什么区别说...阅读全文

博文 2019-04-15 17:21:33 answer-A

grin 之 Cuckoo Cycle 算法挖矿分析

Cuckoo Cycle 算法 作者:John Tromp c++: github: https://github.com/tromp/cuckoo golang: https://github.com/AidosKuneen/cuckoo 解决的问题:给出N个节点(奇偶两行)和M个边,在M个边中寻找一个闭环(即找到一个路径使得一个节点是起点也是终点)如图中的0-5-4-1-0: image.png 8个节点6个边 一个解决方案 特点:即时验证,内存需求可扩展(可抵抗asic) grin中挖矿过程 两种算法:Cuck(ar|at)oo cycle (抗asic | 对asic友好) (edg_bits : 29|31+) solution 环型长度 都是42 hash1=black2b(he...阅读全文

三年Java开发工程师,面试电话接到手软

序言 对于职场来说,简历就如同门面。若是没想好,出了差错,耽误些时日倒不打紧,便是这简历入不了HR的眼,费力伤神还不能觅得好去处,这数年来勤学苦练的大好光阴,岂不辜负? 简历,简而有力。是对一个人工作经验的简单介绍。对公司而言,在挑选人才时,可以通过简历对人才有整体认识,减少人才误用的风险。而对于个人来说,借着撰写简历,重新经历自己的过去、审视收获和缺憾,为面谈预先作好准备,来找到一份适合自己的理想工资。 小编整理了一些面试题,由于平台不能上传文件,需要的可以加小编QQ交流群664636353,从里面获取文档,也欢迎招聘者,找工作的进群,给大家提供一个更大的平台(希望可以帮助到大家) ![image.png](https://static.studygolang.com/190220/536...阅读全文

博文 2019-02-20 13:33:29 JavaWDB

Web开发中说高并发的时候,我们在说什么

这并不是一个回答的问题的文章,而是由此引发的一个思考。大家先心里仔细想想,当你们听到高并发网站时,心里对这个网站是个什么概念?首先想到的是淘宝吗?带着问题,我们一起思考技术写这个话题是因为我对搜索引擎给我的答案很不满意,然后决定把思考的一些东西分享出来,希望可以大家彼此讨论下。我们经常在面试的时候,被问到有没有高并发的经验?先不说哪些考高并发的装逼公司(有部分是面试官确实装逼)。我思考的是什么才算是高并发?你一天几个pv肯定高不了。首先在网上查找一下,并未找到明确的标准定义。那么什么是并发呢?并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。摘自百度百科我们说的高并发是什么?上面的定...阅读全文

博文 2017-08-27 18:09:21 大愚

入门goroutine并发设计模式以及goroutine可视化工具

Daisy-Chain 首先,为了防止过于枯燥,我先列出我最喜欢的一个模式:Daisy-Chain。这个模式比较复杂,对go的并发编程不太熟悉的同学,可以先看下面的模式。然后回过头来看这个。 daisy chain会创建很多channel,然后把这些channel首尾相接级联起来,组成一条单向链,每个channel都在处理不同的子任务,最后的结果在链的末端输出。这是在2012年的golang talks中由Rob Pike提出的: func f(left, right chan int) { // 这个函数就把right的输出和left的输入联系起来了。 left <- 1 + <-right } func main() { const n = 10000 leftmost := make(...阅读全文

博文 2017-02-10 10:27:57 flybywind

TODO:字节的那点事Go篇

TODO:字节的那点事Go篇 (本文go version go1.7.3 darwin/amd64)在Golang中string底层是由byte数组组成的。fmt.Println(len(“dsd好”))输出的长度是6fmt.Println(len(string(rune(‘好’))))输出的长度是3fmt.Println(len([]rune(“好的2s”)))输出的长度是4所以用string存储unicode的话,如果有中文(中文是由3个字节组成),按下标是访问不到的,因为你只能得到一个byte。 要想访问中文的话,还是要用rune切片,这样就能按下标访问。UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称...阅读全文

博文 2017-02-10 15:50:56 OneTODO

百亿级日志系统架构设计及优化

本文将从海量日志系统在优化、部署、监控方向如何更适应业务的需求入手,重点从多种日志系统的架构设计对比;后续调优过程:横向扩展与纵向扩展,分集群,数据分治,重写数据链路等实际现象与问题展开。 日志系统架构基准 有过项目开发经验的朋友都知道:从平台的最初搭建到实现核心业务,都需要有日志平台为各种业务保驾护航。 图片.png 如上图所示,对于一个简单的日志应用场景,通常会准备 master/slave 两个应用。我们只需运行一个 Shell 脚本,便可查看是否存在错误信息。 随着业务复杂度的增加,应用场景也会变得复杂。虽然监控系统能够显示某台机器或者某个应用的错误。 然而在实际的生产环境中,由于实施了隔离,一旦在上图下侧的红框内某个应用出现了 Bug,则无法访问到其对应的日志,也就谈不上将日志取出...阅读全文

编译原理有啥用之Go语言懒人工具

动机 笔者在使用Go语言进行开发的过程中发现一些机械化重构代码的需求,而IDE(Goland)没有相应的功能,导致每次都需要手动写,非常不便。举两个例子: 例子1 type EsNginxLogInfo struct { RemoteAddr string RemoteUser string TimeLocal string Host string Method string Path string Query url.Values Status string BytesSent string HttpReferer string HttpUserAgent string HttpXForwardedFor string UpstreamResponseTime string Request...阅读全文

博文 2018-11-10 13:34:41 ztinpn

让Java程序员再次生机勃勃,还是技术的力量

大多数人选择Java可能只是因为听说Java前景好、Java比较好找工作、Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java真的还是之前那么好吗?答案是肯定的。 下面给大家分享一下阿里大牛整理的Java架构进阶技术知识导图 开源框架解析 学习 SSM 的基本用法能够帮助你完成绝大多数开发任务,掌握了高级用法能够提出更好的解决方案。学习框架没有捷径,在工作中一遍一遍地练习是唯一的方式。 很多人面试失败就败在原理上,只知其一,不是其二,稍微问的深入一点就答不上来了。理解原理就是理解 SSM 框架的灵魂,这也是一个程序员从体力劳动进阶到脑力劳动的门槛。 不理解原理只能做写代码的工具,理解原理才能成为真正的开发工程师。多思考、多总结、多请教,保持好奇心,多问一句是什么、为什么,...阅读全文

博文 2019-02-22 11:51:50 JavaWDB

Golang下的unicode与字符编码

背景:在我们使用 Golang 进行开发过程中,总是绕不开对字符或字符串的处理,而在 Golang 语言中,对字符和字符串的处理方式可能和其他语言不太一样,比如 Python 或 Java 类的语言,本篇文章分享一些 Golang 语言下的 Unicode 和字符串编码。 Go 语言字符编码 注意: 在 Golang 语言中的标识符可以包含 "任何 Unicode 编码可以标识的字母字符"。 被转换的整数值应该可以代表一个有效的 Unicode 代码点,否则转换的结果就将会是 "�",即:一个仅由高亮的问号组成的字符串值。 另外,当一个 string 类型的值被转换为 [] rune 类型值的时候,其中的字符串会被拆分成一个一个的 Unicode 字符。 显然,Go 语言采用的字符编码方案从...阅读全文

博文 2020-05-30 23:34:34 BGBiao

Linux或者Mac环境安装Photon network

官方安装文档: https://photonnetwork.readthedocs.io/en/latest/installation_guide/ 下载源码: https://github.com/SmartMeshFoundation/Spectrum https://github.com/SmartMeshFoundation/Photon 流程是: 1,go安装及配置 2,安装运行spectrum 3,下载运行photon GO安装及配置 下载地址 https://golang.org/dl/ 进行安装 步骤:打开终端 → 进入local目录 → 下载压缩包 → 解压到当前目录 → 删除压缩包 → 创建gopath(后续开发项目目录) → 进入gopath → 创建 bin src ...阅读全文

博文 2018-10-31 16:34:56 rectinajh

golang

一、go基础 二、go应用 1 初级应用 1.1. 反射reflection 1.2. server服务 1.3. 文件操作 1.4. 终端读取 1.5. json协议 1.6. web模板 1.7. 时间处理 1.8. 锁机制 1.9. 原子操作 1.10. 加密解密 1.11. 日志包 1.12. 随机数验证码 1.13. 编码格式的转换 1.14. 常用算法 1.15. 限流器 2 高级应用 2.1. rpc 2.2. pprof 2.3. goim 2..4. gopush 2.5. cgo 2.6. Golang GC 2.7. 封装websocket 3 第三方应用库 3.1. cli应用 Cobra 3.2. 图标库 3.3. 开源IM 3.4. 机器学习库 3.5. 生成二维...阅读全文

博文 2019-06-13 22:32:41 yongfutian

Ubuntu 14.04 上使用 Docker 创建新的 Images

Ubuntu 14.04 上使用 Docker 创建新的 Images 环境准备 Ubuntu 14.04.1 LTS 发布后,我欢快地去官网下载并创建了一个虚拟机,但是在在执行下面命令的时候: sudo apt-get update 一直会遇到下面的错误 W: 无法下载 http://extras.ubuntu.com/ubuntu/dists/trusty/main/binary-amd64/Packages Hash 校验和不符 W: 无法下载 http://extras.ubuntu.com/ubuntu/dists/trusty/main/binary-i386/Packages Hash 校验和不符 Google 找解决方案,尝试了个遍,问题依旧。最让人不解的是 Ubuntu 官...阅读全文

博文 2017-02-10 13:44:03 Xiaohui Wang

十年磨一剑,阿里巴巴企业级数据管理平台:iDB

摘要: 阿里巴巴企业级数据库管理平台iDB面向云时代推出数据管理DMS企业版,是业界首创的数据库DevOps解决方案,形成了云时代企业数据管理的最佳实践。 十年间,阿里巴巴的研发人员也增长了十倍,为了解决DBA的服务效率问题,十年前我们开始iDB的研发,完成手工变更的在线化,成为了DBA能力产品化的载体。在最新的4.0版本中,iDB面向云时代推出数据管理DMS企业版,是业界首创的数据库DevOps解决方案,形成了云时代企业数据管理的最佳实践。 一、 为了效率与安全而生 在阿里巴巴,数据库团队是数据的守护者,保障着数据库安全、稳定、高效的运行。在早期,DBA除了负责数据库的基础运维,对于研发流程中的数据库变更也都由DBA负责,包括线上库表设计、结构变更发布、数据变更、SQL审...阅读全文

Kafka两级调度实现分布式协调微服务任务分配Golang版

背景 基于Kafka消息队列的两级协调调度架构 Kafka内部为了协调内部的consumer和kafka connector的工作实现了一个复制协议, 主要工作分为两个步骤: 通过worker(consumer或connect)获取自身的topic offset等元数据信息,交给kafka的broker完成Leader/Follower选举 worker Leader节点获取到kafka存储的partation和member信息,来进行二级分配,实现结合具体业务的负载均衡分配 从功能实现上两级调度,一级调度负责将Leader选举,二级调度则是worker节点完成每个成员的任务的分配 主要是学习这种架构设计思想,虽然这种方案场景非常有限 基于消息队列实现分布式协调设计 一级协调器设计:一级协调...阅读全文

控制 Golang 切片的增长

如果你是Golang 新手,并对它的数组(切片)不太了解,你可能想从这里开始this introduction。 如今,当我们谈论数组时,开发者可能会谈论数组的两种行为之一:一种是静态的(或称为固定数组),另一种是动态的。静态数组的固定长度在定义的时候被初始化完成。动态数组(一般地)用一个静态数组定义,但是当需要的时候,能够增长其长度。那么这是如何实现呢?当你要在动态数组中添加一项条目时,如果数组下面的固定长度已经满了,它会创建一个更大的数组并且将数据拷并到并覆盖更大的数组中。 这种增长和拷贝可能似乎及其地慢,但是动态数组通常使用一种动态分配多余空间的增长算法。这种简单的算法将会增加原来数组的一倍大小。所以当我们试图插入在一个容量为10的数组中插入第11条条目时,我们最终会得到一个新数组容量...阅读全文

博文 2016-09-12 12:00:01 caotj72, 刺猬bear, 无若, sheepbao

开源监控解决方案:zabbix 监控mysql database(Golang)

[root@amb01 ~]# tar zxvf binutils-2.27.tar.gz [root@amb01 ~]# cd binutils-2.27 [root@amb01 binutils-2.27]# make [root@amb01 binutils-2.27]# make install [root@amb01 ~]# tar -zxvf go1.4-bootstrap-20171003.tar.gz [root@amb01 ~]# cd go/src [root@amb01 src]# ./make.bash [root@amb01 ~]# mv ~/go ~/go1.4 [root@amb01 ~]# export GOROOT_BOOTSTRAP=~/go1.4 [ro...阅读全文

博文 2018-10-24 10:35:44 yongqiang_guo

反思-20190416

夜里突然醒来,反思一下最近的学习状态。 图片发自简书App 近一个月来,虽说用golang写了几个小服务,electron、vue等前端东西也学了不少,但是却有种不踏实的感觉,一想,可能是白天工作中还接触老本上Java开发,平时看的太少,有点偏离了路线,毕竟工作为主!其他都是兴趣爱好。 再说说工作上的学习,可能是因为项目比较稳定,所以即使发现了一些问题,现有的业务与技术知识可以很快的解决问题,所以能学到的知识也就比较少。最近负责的新的需求,工作的重点也写文档上,开发任务难点也都落在了安卓或者IOS开发同事身上,服务端的逻辑设计和开发难点相对来说也没有什么新鲜感。 现在应该处于基础开发者与中级之间吧,感觉应该进行下一步深入的学习java了。学如逆水行舟,不进则退...阅读全文

博文 2019-04-16 02:34:41 clawhub

Go 基础 3:error handling

官网: https://blog.golang.org/error-handling-and-go error对于常用类型,可以转换成某种interface去查里面具体错误。 对于repetive的error handling,可以做个wrap去handle统一的error,不过我个人觉得不是那么试用,很难有一个函数全部是一种类型的错误吧。不过这种是不是设计模式里的装饰者模式? 待读: https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully https://mijailovic.net/2017/05/09/error-handling-patterns-in-go...阅读全文

博文 2019-02-08 15:34:41 听海吹牛逼的声音

【区块链Go语言实现】区块链基本原型

链客,专为开发者而生,有问必答!此文章来自[区块链技术社区](https://www.liankexing.com),未经允许拒绝转载。 0x00 介绍区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力尚未被完全意识到。从本质上讲,区块链只是一种记录的分布式数据库。但它之所以独特,是因为它并不是一个私有的数据库,而是一个公共数据库,也就是说,每个使用它的人都有一份完整或部分的数据副本。并且,只有在数据库的其他持有者同意的情况下,才可以向区块链中添加新的记录。此外,正是区块链使得加密货币和智能合约成为可能。在本系列文章中,我们将基于区块链构建一种简单的加密货币。0x01 区块首先,我们从“区块链”中的“区块”介绍开始。在区块链中,区块是存储有价...阅读全文

博文 2019-08-16 12:32:43 链客区块链技术问答社区

微服务架构下 Service Mesh 会是闪亮的明天吗?

7月7日,时速云企业级容器 PaaS 技术沙龙第 10 期在上海成功举办,时速云容器架构负责人魏巍为大家详细讲解了 Service Mesh 中代表性的实践方案、并以 Istio 为例详细讲解了 Service Mesh 中的技术关键点,包括 Istio 控制平面、Istio 数据平面等。以下内容根据魏巍分享整编,希望对大家了解 Service Mesh 有所帮助。 魏巍:大家下午好,刚才几位讲师讲了 K8S 的存储、PaaS 在企业的落地实践等,我们接下来要讲的是企业有了 PaaS 平台、并且在平台上部署了各种各样的服务之后,这些服务该如何治理、服务与服务之间的关系,以及该以何种方式去维护等问题,而最近两年兴起的 Service Mesh,能够更加便捷的管理这些服务。 Service Me...阅读全文

Golang 并发模式:超时和继续 Go Concurrency Patterns: Timing out, moving on

翻译自 Go Blog。原文地址:https://blog.golang.org/go-concurrency-patterns-timing-out-and 并发编程有自己的一些习惯用语,超时就是其中之一。虽然 Golang 的管道并没有直接支持超时,但是实现起来并不难。假设遇到了这样一种场景:在从 管道 ch 中取值之前至少等待 1 秒钟。我们可以创建一个管道用来传递信号,开启一个协程休眠一秒钟,然后给管道传递一个值。 timeout := make(chan bool, 1) go func() { time.Sleep(1 * time.Second) timeout <- true }() 然后就可以使用一个 select 语句来从 timeout 或者 ch 管道中获取数据。如果...阅读全文

Golang LeetCode - 2. Add Two Numbers 两数相加

Add Two Numbers You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. Example: Input: (2 -> ...阅读全文

博文 2020-03-31 23:32:58 Avery_up

前端框架及项目面试-聚焦Vue、React、Webpack

第1章 课程导学介绍课程制作的背景和课程主要内容。第2章 课程介绍先出几道面试真题,引导思考。带着问题来继续学习,效果更好。第3章 Vue 使用Vue 是前端面试必考内容,首先要保证自己要会使用 Vue 。本章讲解 Vue 基本使用、组件使用、高级特性和 Vuex Vue-router ,这些部分的知识点和面试题。第4章 Vue 原理要保证自己的面试竞争力,必须掌握 Vue 原理,前端高级面试或者大厂面试中常考。本章讲解虚拟DOM,diff 算法,响应式,模板编译,组件渲染等 Vue 原理常考的知识点和面试题。第5章 Vue 面试真题演练学习完 Vue 的使用和原理,就来模拟面试吧。本章给出了大量的 Vue 常考面试题,帮你验证学习效果,温故知新。第6章 Vue3预学习Vue3 发布在即。本...阅读全文

观察者模式实战

本文转自“雨夜随笔”公众号,欢迎关注。 在上一篇文章中,我们简单了讲了一下设计模式和观察者模式。那么这次让我们详细了解一下观察者模式和我们如何进行使用。 内容 还记得上一篇文章中,我们说过了解或者设计一个设计模式的时候,要按照下面四点进行分析: image.png 意图 在实际业务场景中,我们经常遇到这样的稳定,也就是在某个对象发生某种事件时,通知其他相关的对象。所以观察者模式就允许你定义一种订阅机制,使得订阅某种事件的对象能够在事件发生时得到通知。 动机 我们来分析一种常见的业务场景,也就是购物APP中经常遇到的货物上架提醒,如果为了实现这种需求,我们可以按照下面的方式来实现: 成本最低:我们知道在开发中成本最低的就是不做这个需求,当然这个是开玩笑,不过一般在开发初期,我们可能会分析需求的...阅读全文

博文 2020-05-03 12:32:44 soolaugust

一篇文章讲透CDN HTTPS安全加速基本概念、解决方案及优化实践

大家都知道,HTTP 本身是明文传输的,没有经过任何安全处理,网站HTTPS解决方案通过在HTTP协议之上引入证书服务,完美解决网站的安全问题。本文将为大家介绍阿里云CDN HTTPS安全加速传输的基础概念、解决方案、技术优势和优化实践。 关于HTTPS的那些基本概念 需求推进技术革命,互联网是如此诞生,HTTPS也是这样。人们有在互联网上分享和浏览信息的需求,所以信息的传输技术由此诞生并不断升级。 后来,人们位互联网上的信息传输制定了一些准则,也就是网络协议HTTP。从最早1991年发布的HTTP/0.9版本,直到最新的HTTP/2,传输速度也在不断升级。下面,我们来看下关于HTTP都有哪些基本的概念。 HTTP是什么? HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端...阅读全文

Golang 设计模式之-装饰模式

Golang 设计模式之-装饰模式 最近在温习设计模式,虽然面向对象不是go的特长,但用go实现的设计模式,比java 和 c# 这种纯面向对象语言多了一份灵活,比python 这种虚假的面向对象要更直观, 性能上也更有优势. 装饰模式 装饰模式是一个非常常用的设计模式。常用到python内置了它。 装饰模式是为已有功能动态的添加更多功能的一种方式, 降低了主类(当然,go里没有类这种东西,可以用结构模拟)复杂度, 防止类的爆炸行为. 当新加的功能仅仅是满足某种特定条件下的需要时,装饰模式是个非常好的选择。 装饰模式把核心功能和装饰功能区分了,减少了核心功能可能造成的冗余和耦合,简化核心类的重复装饰逻辑. 装饰模式的装饰顺序很重要,它决定了最终类被装饰的效果 实例 Decorate 抽象 t...阅读全文

博文 2020-05-07 15:41:19 trump2018