Created with Sketch.
Created with Sketch.
首页
发现
小书
登录
注册
×
注册小专栏
通过微信登录
通过微博登录
通过Github登录
通过邮箱
注册
、
登录
友情提示
Login FAQ
.
×
邮箱登录
通过微信、微博、Github 登录
登录
×
邮箱注册
通过微信、微博、Github 登录
注册
icon_photo_1
Created with Sketch.
疯狂的程序员
头条开发搬砖,熟练php、python、golang、java、js开发,熟悉高并发、分布式、docker、k8s系统
100 / 140
头条开发搬砖,熟练php、python、golang、java、js开发,熟悉高并发、分布式、docker、k8s系统
关注 12
被关注 35
获得赞 85
Created with Sketch.
Created with Sketch.
+ 关注
取消
确定
个人书籍
个人专栏
go语言开发教程
[限时特价]go语言开发套路速学(自带源码),网络编程,高并发,您将学到使用go构建websocket,go语言操...
已发表 29
订阅数 45
Docker下的PHP和Swoole 开发
docker安装php开发环境,docker下的swoole框架开发 php进阶教程,你可以学到swoole构建w...
已发表 13
订阅数 30
文章
订阅
回复
喜欢
疯狂的程序员
in
go语言开发教程
gin框架构架Api:基于Nginx和Supervisor的部署方案
Nginx 是一个自由、开源、高性能及轻量级的 HTTP 服务器和反向代理服务器,它有很多功能,主要功能为: 正向代理 反向代理 负载均衡 HTTP 服务器(包含动静分离) Nginx 反向代理功能 Nginx 最常用的功能...
疯狂的程序员
in
go语言开发教程
gin框架构建Api之apidoc:生成 Swagger文档
开发 API 服务,API 文档必不可少,很多人选择手写 API 文档,手写 API 文档有很多问题,比如工作量大、手写容易出错、更新麻烦、格式不固定、维护困难等。所以在实际的开发中,建议自动生成 API 文档。...
疯狂的程序员
in
go语言开发教程
Go 日志收集系统:Docker 安装 etcd 集群、kafka、zookeeper
我们开发一个日志收集系统,需要用到etcd、kafka,etcd用作服务的注册与发现,健康检查,kafka用作消息接受和存储,我们先用docker来安装etcd集群,并简单介绍下etcd的使用。如果对docker不熟悉的,可以查看我...
疯狂的程序员
in
go语言开发教程
gin框架构建Api :缓存系统
我们构建一个缓存系统,目的是为了在api接口访问时走redis缓存加快速度,步骤如下: 1、通过主键(Id)先从redis读取数据,没有则从数据库回源 2、也可以根据'字段=>值'的形式 获取一条数据,根据字段=>...
疯狂的程序员
in
go语言开发教程
gin框架Api:用Makefile 管理项目
我们开发一个日志收集系统,需要用到etcd、kafka,etcd用作服务的注册与发现,健康检查,kafka用作消息接受和存储,我们先用docker来安装etcd集群,并简单介绍下etcd的使用。如果对docker不熟悉的,可以查看我...
疯狂的程序员
in
go语言开发教程
gin框架Api:路由中间件、添加返回信息、自定义错误
本节课我们来讲解go的middle,可以作为路由拦截器使用,并完善我们的框架,添加一些response方法。 [TOC] gin middleware 中间件 在 gin 中,可以通过如下方法使用 middleware: g := gin.New() g.Use(middleware.AuthMiddleware())...
疯狂的程序员
in
go语言开发教程
GO语言代码规范
[TOC] 代码规范格式规范 golang在代码格式方面比较统一,并提供了gofmt工具,所有代码经过gofmt格式化后,能达到统一风格。行长建议不要超过小屏幕的2/3,不要超过大屏幕的1/2, 函数长度不超过一屏 命名 1...
疯狂的程序员
in
go语言开发教程
gin框架构架Api之:docker安装redis、集成redis连接池
redis支持链接池的包有很多,我们使用redigo/redis,测试下来性能还不错, 本节课主目录如下: [TOC] 目录docker启动redisdocker-compose start redis 我们使用compose启动,不懂操作的可以查看文章docker下安装redis 主函数...
疯狂的程序员
in
go语言开发教程
GOPATH 最佳工程实践
GOPATH 设置 一:前缀目录 = 自己任意设置,我的目录是/Users/chet/ , workspace: 工作目录,golang: 语言目录,我的golang工作目录路径是 /Users/chet/workspace/golang,cpp 工作目录路径是 /Users/chet/workspace/cpp,诸如此类: work...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
Swoole微服务入门:自动选择健康服务
在微服务的服务治理中有很多组件可以实现健康检查,比如java spring cloud中的Eureka,如果某台Eureka Server宕机,Eureka Client的请求会自动切换到新的Eureka Server节点,当宕机的服务器重新恢复后,Eureka会再次将...
疯狂的程序员
in
go语言开发教程
gin框架构架Api之:集成mysql连接池
安装 MySQL 构建api框架我们 用的是 MySQL,所以首先要确保服务器上安装有 MySQL,执行如下命令来检查是否安装了 MySQL(CentOS 7 上是 mariadb-server,CentOS 6 上是 mysql-server,这里以 CentOS 7 为例): $ rpm -q mariadb-s...
疯狂的程序员
in
go语言开发教程
go 构建 websocket 长连接(2):路由处理
上节课我们讲解了client发送信息过来如何升级为websocket并注册到我们的服务里,这节课我们讲下如何处理这些信息,源码在文章末尾。 注册方法 main函数内添加两个方法 func main() { flag.Parse() hub := webso...
疯狂的程序员
in
go语言开发教程
go 构建 websocket 长连接(1):upgrade、注册 client
我们使用golang构建websocket,支持高性能、高并发,websocket不用多介绍,go自带原生websocketapi,但有些断线重连、信息发送处理不太完善,我们改造gorilla/websocket 用于我们的系统,以下是对比信息。 Gorilla WebS...
疯狂的程序员
in
go语言开发教程
gin框架构建Api之:使用Viper读取配置文件
上节课我们启动了一个简单是server,本节课我们讲解如何读取配置文件,我们使用扩展包viper读取。 Viper 简介 Viper 是国外大神 spf13 编写的开源配置解决方案,具有如下特性: 设置默认值 可以读取如下格...
疯狂的程序员
in
go语言开发教程
go微服务之rpc:hprose客户端和单元测试
Hprose 2.0 for Golang 支持多种底层网络协议绑定的客户端,比如:HTTP 客户端,Socket 客户端和 WebSocket 客户端。其中 HTTP 客户端支持跟 HTTP、HTTPS 绑定的 hprose 服务器通讯。Socket 客户端支持跟 TCP、UNIX Socket 绑定...
疯狂的程序员
in
go语言开发教程
go微服务之rpc:hprose服务端
Hprose 2.0 for Golang 支持多种底层网络协议绑定的服务器,比如:HTTP 服务器,Socket 服务器和 WebSocket 服务器。其中 HTTP 服务器支持在 HTTP、HTTPS 协议上通讯。Socket 服务器支持在 TCP、Unix Socket 协议上通讯,并...
疯狂的程序员
in
go语言开发教程
gin框架构建Api之:环境配置和路由
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足...
疯狂的程序员
in
go语言开发教程
go微服务之rpc:hprose前奏protobuf操作
HPROSE 是 High Performance Remote Object Service Engine 的缩写,翻译成中文就是“高性能远程对象服务引擎”。它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功...
疯狂的程序员
in
go语言开发教程
go微服务之rpc:hprose服务端
Hprose 2.0 for Golang 支持多种底层网络协议绑定的服务器,比如:HTTP 服务器,Socket 服务器和 WebSocket 服务器。其中 HTTP 服务器支持在 HTTP、HTTPS 协议上通讯。Socket 服务器支持在 TCP、Unix Socket 协议上通讯,并...
疯狂的程序员
in
go语言开发教程
go的for循环、switch和错误处理
HPROSE 是 High Performance Remote Object Service Engine 的缩写,翻译成中文就是“高性能远程对象服务引擎”。它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
Swoole微服务入门:服务的调用与多服务注册
一个系统中通常有多个服务,那么我们要把这些服务都注册到consul中,而当某个服务挂了或者不可用了,就要自动选择一个健康服务。下面我们讲下 如何注册多服务以及服务的调用方式。我们使用composer和...
疯狂的程序员
in
go语言开发教程
go特性-goroutine(调度原理、协程)
调度原理 go的调度器是 Go 语言运行时系统的重要组成部分,它主要负责统筹调配 Go 并发编程模型中的三个主要元素,即:G(goroutine 的缩写)、P(processor 的缩写)和 M(machine 的缩写)。其中的 M 指代的...
疯狂的程序员
in
go语言开发教程
go特性:接口interface(Duck typing|非侵入式)
GO有类似java/php那样的接口吗,有啊,在go中,对于任何数据类型,只要它的方法集合中完全包含了一个接口的全部的方法,那么他就是这个接口的实现类型。 type ServiceInter interface { Get(id int) string } 只要...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
swoole微服务-docker下的服务注册与发现Consul
微服务将传统的"巨石"应用拆分成一个一个的组件应用,每个组件应用提供特定的服务,可以是一个,也可以是多个,并且组件所含服务应该是可以动态扩展的,随着时间推移、系统进化,可任意拆分、合...
疯狂的程序员
in
go语言开发教程
go实战-函数(高阶、闭包、值传递)
函数可是一等的(first-class)公民,是能够被随意传播的独立逻辑组件。 函数传参 首先, Go语言的函数调用参数全部是传值的, 包括 slice/map/chan 在内所有类型。但是有人反驳,看段代码 package main import ( ...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
swoole微服务入门-服务注册中心 docker部署
微服务开发中会遇到服务拆分,我们需要构建一个注册中心,服务消费者和服务提供者,下面的图能有效表面 架构思想 下面我们通过swoole,建立一个注册中心 ,服务提供者注册自己的服务进去,消费者...
疯狂的程序员
in
go语言开发教程
Go 语言算法实战-各种排序算法
冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
swoole 构建 websocket服务2(swoft)
上节课我们讲了使用自建框架构建websocket,今天来使用swoole的框架swoft实现。 docker构建swoft的ws服务 更改dockefile https://github.com/swoft-cloud/swoft/blob/master/Dockerfile EXPOSE 8086 ENTRYPOINT ["php", "/var/www/swoft/bin/swoft", "ws...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
swoole 模型讲解(用户注册异步执行)
模型 swoole采用 多线程Reactor+多进程Worker,多进程使用fork()系统调用,多线程使用pthread线程库。当请求到达时,swoole是这样处理的。 1、请求到达 Main Reactor Main Reactor根据Reactor的情况,将请求注册给对应的Rea...
疯狂的程序员
in
go语言开发教程
go环境搭建-goland使用、gopath、go命令
Liniux/mac环境: 以linux为例,Go 有多种安装方式,比如 Go 源码安装、Go 标准包安装、第三方工具(yum、apt-get 等)安装。我们选择通过标准包来安装 Go 编译环境。Go 提供了每个平台打好包的一键安装,这些包...
疯狂的程序员
in
go语言开发教程
go的特性-通道channel
Don’t communicate by sharing memory; share memory by communicating. (不要通过共享内存来通信,而应该通过通信来共享内存。) 这体现了 Go 语言最重要的编程理念,我们可以利用通道在多个 goroutine 之间传递数据。通...
疯狂的程序员
in
go语言开发教程
go实战-字典map速学
字典(map) 是键值对的集合,Go 语言的字典类型其实是一个哈希表(hash table)的实现,在这个实现中,键和元素的最大不同在于,前者的类型是受限的,后者可以任意。 map的声明var map1 map[keytype]valuetype va...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
docker 文件共享,linux、windows、mac 同步开发
docker下面安装了swoole,没法在windows mac 很好使用,如何处理呢?今天我们来讲下docker同步文件到windows或者mac,docker samba模式 可以很好解决。 我们使用的容器:https://hub.docker.com/r/dperson/samba docker pull dperson/...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
swoole构建websocket服务1(自建框架)
php构建websocket,可以使用workerman 或者swoole框架,今天我们来讲下如何用swoole构建ws服务。swoole官网文档:链接,我们基于原生代码构建websocket框架,你可以使用docker安装swoole开发环境,在这篇文章有详细介...
疯狂的程序员
in
go语言开发教程
go-指针类型,别怕,这不是C
提到指针,我们可能想到引用,go里面的引用类型包括指针、slice、map、chan等,什么是引用类型:变量存储的是一个地址,这个地址存储最终的值。内存通常在 堆上分配,通过GC回收。什么是值类型,值类...
疯狂的程序员
in
go语言开发教程
go实战-数组和切片套路学习
我们这次主要讨论 Go 语言的数组(array)类型和切片类型,不过他们的不同是:数组类型的值(以下简称数组)的长度是固定的,而切片类型的值(以下简称切片)是可变长的,而go的切片很类似python的的...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
docker 安装 swoole 框架-swoft
swoft文档:doc.swoft.org/master/zh-CN/README.html,swoft有官方docker镜像,地址:hub.docker.com/r/swoft/swoft,这个是基于Debian,我们运行命令下载下来:docker pull swoft/swoft:latest,我们可以看下它的dockerfile,https://hub.docker.c...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
docker下安装mysql、redis、php的redis扩展
使用docker-compose安装 编辑添加docker-compose.yml mysql: image: mysql:5.7 container_name: mysqld ports: - 3306:3306 volumes: - /Users/longmore/docker/mysql/conf:/etc/mysql/conf.d - /Users/longmore/docker/mysql/data:/var/lib/my...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
docker下安装swoole
下载最基础的PHP环境官方镜像(使用基于alpine的镜像) 利用dockerfile重新构建出一个支持swoole的扩展 官网地址 https://hub.docker.com/_/php/ 拉取一个镜像 docker pull php:alpine3.7 我们可以测试下PHP版本 docker run -it...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
环境准备:docker-compose安装 LAMP、LNMP、php扩展
我们先来安装下php开发环境,lamp,lnmp,使用docker-compose编排工具,使用的过程中你自认知道他是什么。 参考文档:https://docs.docker.com/compose/install/#install-compose Linux 下需要先安装: sudo curl -L https://github.com...
疯狂的程序员
in
Docker下的PHP和Swoole 开发
环境准备-docker安装 使用阿里云镜像
安装 CE和EE的区别。 前者是社区版,不要钱。目前我们选择CE版。 安装文档: https://docs.docker.com/install/linux/docker-ce/centos/ Docker 要求 Linux 系统的内核版本高于 3.10,通过 uname -r 命令查看你当前的内核版本:...
疯狂的程序员
in
go语言开发教程
go实战-包、结构体struct套路学习
如果你使用过 java,java里面 有package, 引入包 经常会这样 package com.dev; import org.apache.xxx.xxx; import com.longmore.xx.xx; 包最直观的的作用就是协调和组织我们的代码,方便归类和复用,提高代码的可维护性 go里...
Created with Sketch.
top
Created with Sketch.