一个PHP程序员职业生涯技术提升心得技巧与阶梯规划方案总结

作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! @极客小俊,简书官方首发原创文章 企业博客: ???? GeekerJun ???? B站地址 : ???? Bilibili.com ???? LNMP.png 我结合个人经验体会总结一下,很多PHP程序员的发展轨迹,小伙伴对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了PHP程序员每个阶段的技术要求,来帮助很多PHP程序做对照设定学习成长目标。 首先本人觉得在学习任何新技术之前...阅读全文

简书 2020-10-14 08:32:50 极客小俊GeekerJun

golang规则引擎gengine使用笔记

最近公司要在业务上做一些规则化动态加载实现的东西,业务开发用的是golang. 然后想找一个golang实现的规则引擎,可是也没找到好用的。正好CTO说,B站前段时间开源了他们的规则golang规则引擎gengine,让我去调研一下,看看怎么样,能不能满足我们的业务需求。然后我就摸索了一下,发现还真的挺好用的,使用比较简单,整体性能也非常OK,而且有非常详细的API文档。顺便在这里记录一下自己的使用情况:gengine的github地址:https://github.com/rencalo770...阅读全文

简书 2020-10-13 23:32:38 一个女猿

Golang标准库——image

image image实现了基本的2D图片库。 基本接口叫作Image。图片的色彩定义在image/color包。 Image接口可以通过调用如NewRGBA和NewPaletted函数等获得;也可以通过调用Decode函数解码包含GIF、JPEG或PNG格式图像数据的输入流获得。解码任何具体图像类型之前都必须注册对应类型的解码函数。注册过程一般是作为包初始化的副作用,放在包的init函数里。因此,要解码PNG图像,只需在程序的main包里嵌入如下代码: import _ "image/png"...阅读全文

简书 2020-10-13 23:32:38 DevilRoshan

Golang标准库——index/suffixarray

suffixarray suffixarrayb包通过使用内存中的后缀树实现了对数级时间消耗的子字符串搜索。 用法举例: // 创建数据的索引 index := suffixarray.New(data) // 查找切片s offsets1 := index.Lookup(s, -1) // 返回data中所有s出现的位置 offsets2 := index.Lookup(s, 3) // 返回data中最多3个所有s出现的位置 type Index type Index struct { //...阅读全文

简书 2020-10-13 23:32:38 DevilRoshan

太好用了!别再苦苦用着Flask了,来带你看看它,你会爱上的

<article class="syl-page-article font_m syl-device-pc" data-v-e1fd63b2=""> 有一个非常简单的需求:编写一个 HTTP接口,使用 POST 方式发送一个 JSON 字符串,接口里面读取发送上来的参数,对其中某个参数进行处理,并返回。 如果我们使用 Flask 来开发这个接口,那么代码是这样的: from flask import Flask, requestapp = Flask(__name__)@app.route('/...阅读全文

简书 2020-10-13 23:32:38 磕代码的阿宽

Golang中的自定义json序列化

后端开发人员跟前端对接接口的时候,或多或少都会面临一些沟通问题,比如说枚举字符的定义,比如有整形状态字段:state 1: 成功 2: 失败 3: 处理中 通常给前端的时候,前段要做的是将1,2,3以及对应的中文释义存储为key/value的形式,key与value单看都无法知道对方的语义, 比如我只知道状态值为“1”, 是无法将其与“成功”对应起来的(当然这套状态的设计者肯定是知道的),后端通常给到前端的restful api 接口定义也是key/value的形式,这乍一看其实也没啥毛病,只要...阅读全文

简书 2020-10-13 23:32:38 wu_sphinx

云原生如何助力微服务?

随着技术的发展,我们云托管时代逐步的向云原生演进了。所谓云原生,就是将微服务、DevOps的架构理念与云所提供的容器、Serverless无服务器更好的结合,提升资源的使用效率,提高研发运维效率。那么在云原生时代,微服务应该如何与云原生相辅相成呢?我们来看看微服务的定义,即将一个单体应用拆分成多个微服务,由微服务来一起协同对外提供服务支持。在微服务的运行中就存在这三个问题:1、如何管理微服务的生命周期;2、如何治理不同技术栈微服务之间的通信;3、如何处理不同技术栈的微服务请求?对于如何管理微服务...阅读全文

简书 2020-10-13 20:32:39 AI课工场

go module迁移实践记录

公司的代码库都在自建的gerrit服务器上,迁移期间主要踩的坑就是gerrit上的私有库如何module落地。私有库如何通过go mod拉取初次尝试时,在项目根目录下创建go.mod文件,内容如下:module xxx.com/xxx/middlewarego 1.13复制代码然后执行go mod tidy命令 此时会自动拉取项目依赖,此时可以看到go mod的拉取过程,期间发生了未识别引入包的报错unrecognized import "path xxx.com/xxfeature" (htt...阅读全文

简书 2020-10-13 20:32:38 贺大伟

喜大普奔,华为架构师终于整理出SSM+Nginx+Redis+SQL+微服务pdf

专注分享C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等。对编程感兴趣的可以私信我获取资料SSM第1部分入门和技术基础第1章认识SSM框架和Redis第2章Java设计模式第2部分互联网持久框架- -MyBatis第3章认识MyBatis核心组件第4章MyBatis配置第5章映射器第6章动态SQL第7章MyBatis的解析和运行原理第8章插...阅读全文

简书 2020-10-13 20:32:38 编程十二

关于GO语言,这篇文章讲的很明白

摘要:本文从Go的语法,类型系统,编码风格,语言工具,编码工具和使用案例等几方面对Go语言进行了学习和探讨。Go语言发布之后,很多公司特别是云厂商也开始用Go语言重构产品的基础架构,而且很多企业都是直接采用Go语言进行开发,最近热火朝天的Docker就是采用Go语言进行开发的。本文我们一起来探讨和学习一下Go语言的技术特点。先来看个例子:package main import ( "fmt" "time" ) // 要在goroutine中运行的函数。done通道将被用来通知工作已经完成。 fu...阅读全文

Segmentfault 2020-10-16 23:32:33 华为云开发者社区

Base64编码的前世今生

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节可表示4个可打印字符。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后binhex的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base6...阅读全文

Segmentfault 2020-10-16 23:32:33 ucmir183

云原生 go-zero 微服务框架

0. go-zero介绍 go-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero包含极简的API定义和生成工具goctl,可以根据定义的api文件一键生成Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript代码,并可直接运行。 使用go-zero的好处: 轻松获得支撑千万日活服务的稳定性 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配...阅读全文

简书 2020-10-13 12:32:51 kevwan

云原生 go-zero 微服务框架

0. go-zero介绍go-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero包含极简的API定义和生成工具goctl,可以根据定义的api文件一键生成Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript代码,并可直接运行。使用go-zero的好处:轻松获得支撑千万日活服务的稳定性内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代...阅读全文

Segmentfault 2020-10-16 14:32:33 kevinwan

21.Golang设计模式之状态模式

状态模式 GitHub代码链接 状态模式(State Pattern)中,类的行为是基于它的状态改变的。 什么是状态模式 状态模式允许对象在内部状态改变时,改变它的行为。这样对象看起来好像是 修改了它的类 解决了什么问题 状态模式解决了对象的行为依赖它的状态(属性)的问题。如果代码中包含大量与对象 状态有关的条件语句时,可以使用状态模式。 优点 封装了转换规则 将所有与某个状态有关的行为放到一个类中,并且可方便的新增状态 允许状态转换逻辑和状态对象合成一体,而不是巨大的条件语句块 缺点 状态模式...阅读全文

简书 2020-10-13 11:32:46 ShawnLee_123

Go mod使用指南

一、启用go mod go env -w GO111MODULE=on #开启 MODULE go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct #默认值为https://proxy.golang.org,direct GO111MODULE可以设置为:off、on、auto(默认值),从GO111MODULE变量名可以看出,是Go1.11版本之后才出来有依赖包管理办法。 为off时,则不使用go mod,查找依赖包的顺序...阅读全文

简书 2020-10-13 10:32:47 海阳之新

client: c#+protobuf, server: golang+protobuf

前段时间看到一篇博文《[可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)](https://www.cnblogs.com/justnow/p/3382160.html)》,他是用C#实现的即时通讯系统,功能强大,界面漂亮。 就想用golang重写服务端,把代码下载回来,发现通信框架用的是ESFramework,我没用过也不知道ESFramework的协议,重写是不行的了,只能把原作者的客户端界面扣出来,自己写一个,客户端是C#+protobuf, 服务端是golang+...阅读全文

Go语言中文网 2020-10-13 06:20:36 bccber

Go并发编程之传统同步—(3)原子操作

前言之前文章中介绍的互斥锁虽然能够保证同串行化,但是却保证不了执行过程中的中断。要么成功、要么失败,没有中断的情况,我们叫它叫原子性,这种由硬件 CPU 提供支持的特性,是非常可靠的。百度百科上关于原子操作的介绍。原子操作由 sync/atomic 包提供操作支持。加法(add)实现累加func TestDemo1(t *testing.T) { var counter int64 = 0 for i := 0; i < 100; i++ { go func() { atomic.AddInt6...阅读全文

Segmentfault 2020-10-16 11:32:32 sown

业务压力一大就宕机?一文带你搞懂限流熔断!

“在分布式应用中,最常见的问题是什么呢?”“一个分布式应用部署上去后,还要关注什么?”“这服务的远程调用依赖似乎有点多...”前言在 《微服务的战争:级联故障和雪崩》中有提到,在一个分布式应用中,最常见,最有危险性之一的点就是级联故障所造成的雪崩,而其对应的解决方案为根据特定的规则/规律进行流量控制和熔断降级,避免请求发生堆积,保护自身应用,也防止服务提供方进一步过载。简单来讲就是,要控制访问量的流量,要防各类调用的强/弱依赖,才能保护好应用程序的底线。诉求,期望诉求:作为一个业务,肯定是希望自...阅读全文

Segmentfault 2020-10-16 10:32:34 煎鱼