自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 收藏
  • 关注

原创 关于Sign in with Apple (Apple 登录) PHP的后端验证

1. 首先阅读官网文档https://developer.apple.com/documentation/signinwithapplerestapi重点讲解苹果授权登陆 后端PHP如何验证1.identityToken 的验证:客户端会向后端 传递 userIdidentityToken email 等参数后端必须要验证identityToken 的有效性,合法性;关于...

2019-11-04 10:04:56 9246 5

原创 模式设计原则/面向对象编程原则

模式设计原则依赖倒置原则(Dependence Inversion Principle) ⾼层模块不应该依赖低层模块,⼆者都应该依赖抽象; 抽象不应该依赖具体实现,具体实现应该依赖于抽象; 开放封闭原则 一个类应该对扩展开放,对修改关闭;面向接口编程 不将变量类型声明为具体的类,而是声明为某个接口。 客户程序不需知道对象的具体类型,只需知道对象所具有的接口。封装变化点 将稳定点 和 变化点分离,扩...

2021-01-23 18:37:10 7

原创 排序

排序通俗的定义:就是重新排列表/集合中的元素/数据元素/记录, 使表/集合中的元素满足按其关键字递增或递减的过程。严格定义:输入:n个记录R1 R2 ......Rn, 对应的关键字为K1 K2 ......Kn.输出:输入序列的一个重排: R1’ R2’......Rn’, 使得对应的关键字满足K1’ <= k2’ <= ...... <=Kn’例子:对所有学生按总分进行排序,如果总分相等,再按语数外总分进行排序。从这个例子中看出,多个关键字...

2021-01-16 23:55:04 29

原创 gatewayWorker原理/源码浅谈

1. gateway进程 与 businessWorker 进程的关系图:引用自官网手册中的原理图:http://doc2.workerman.net/principle.html2. 项目中 启动时的总揽图:说明:websocketGateway 监听 9501 内部监听 127.0.0.1:3900;127.0.0.1:3901;127.0.0.1:3902;127.0.0.1:3903 使用text协议的gateway 监听9502 内部监听1...

2021-01-16 01:40:04 32

原创 PSR4规范 及composer autoload的实现

PSR (Proposing a Standards Recommondation) PHP 编码规范。https://learnku.com/docs/psr/psr-4-autoloader/1608https://www.php-fig.org/psr/psr-4/PSR -4 自动加载规范\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>ii 全限定类名可以有一个或者多个子命名空间名称。..

2020-11-30 22:59:18 65

原创 yii2框架深入理解

目录:1. 要理解PSR4 规范2. 理解composer autoload 的实现3. 理解yii2 autoload的实现4. yii2 autoload 与 composer autoload 的联系与区别5. yii2 核心类的 加载 流程, classmap 作用及意义6. yii2 container 类/对象 的作用,如何自定义自己的container类7. yii2 路由规则类,路由管理类 特点,如何自定义自己的路由规则类。1.PSR4 规范、2. compo

2020-11-29 23:57:41 75

原创 go 函数 作为类型 - go语言

在Go语言中国 可以把 函数作为一种类型 用 type 定义。利用这种特性 ,可以进行类型转换。 可以用作函数参数的 类型 来约束参数。函数的类型转换类型转换的基本格式如下:type_name(expression)package mainimport "fmt"//声明一个函数类型type CalculateType func(int , int )// 该函数类型实现了一个方法func (c *CalculateType) Server() { fmt.Println

2020-08-10 19:06:47 124

原创 进程组、会话和作业控制(process groups, sessions, and job control)-Linux系统编程手册

进程组和会话 是为支持shell 作业控制而定义的抽象概念。34.1 概述(overview)进程组:由一个或多个 进程组成,它们有同样的进程组标识符(PGID)。进程组ID 是一个数字,其类型与进程ID 一样(pid_t)。一个进程组 拥有 一个 process group leader 进程 , 该进程是创建该组的进程,其进程ID为 该进程组的ID,新进程会继承其父进程 所属的进程组ID。进程组拥有一个 生命周期(lifetime), 其开始时间为 leader进程 创建组的时刻, 结束..

2020-07-15 00:02:30 166

原创 基本概念 - - Linux系统编程手册

基本概念(Fundamental concepts)内核 (The Kernel)操作系统 (operating system) 通常有 2 种 不同含义:1. 指 完整的软件包 。 这 包括 管理计算机资源的核心软件 和 所有 附带的 标准 软件工具 , 如。。。。//consisting of ... and ..... 翻译为 “ ,这包括 .... 以及/和 ......2. 狭义地(More narrowly) 指 核心软件,它(that) 管理和...

2020-07-06 00:03:00 130

原创 php xdebug性能分析,phpstorm查看性能分析报告,使用mac的qcachegrind工具来进行图形化查看

xdebug 性能分析:性能分析:php.ini 中配置xdebug.profiler_enable=0xdebug.profiler_enable_trigger=1xdebug.profiler_output_name=cachegrind.out.%t.%pxdebug.profiler_output_dir=/mnt/hgfs/work_www/360che/xdebug/说明:profiler_enable 值为1代表每次请求都生成报告文件; ...

2020-05-17 15:21:38 316

原创 大屏与手机互动cocos 2d游戏的后端设计与实现(基于GateWayWorker)

背景:这个项目,我只参与项目的一部分业务代码开放(摇一摇游戏业务),只是简单来使用封装好的一些类和方法,核心实现并不是我写的,并且核心代码设计思路并没有文档,当然代码中有些注释,他人也并没有太多时间给我好好讲讲他的设计思路。目的:分析他人的代码,完全掌握他人的设计思路,抓住重点,提取好的思路,供之后类似的项目开放 做参考!解读他人代码/分析代码 的方法多维度分析代码:一: 看代码组...

2020-05-02 13:15:54 279

原创 rabbitmq的六种模式学习笔记

来源于官方手册(通俗易懂) https://www.rabbitmq.com/tutorials/tutorial-one-php.html1. Hello World / Simple /简单 模式生产者:send.php<?php/** * Simple 模式 - 生产者 * RabbitMq 6种模式 * Date: 2020/4/20 下午4:15 */...

2020-04-30 23:25:26 258

原创 Go 类型断言 /类型判断

value, ok := em.(T);em 代表要判断的变量T 代表被判断的类型value 代表返回的值ok 代表是否为该类型注意:1: em 必须为interface 类型才可以进行类型断言func main() { // value, ok := em.(T); // em 代表要判断的变量 // T 代表被判断的类型 // value 代表返回的值 /...

2020-04-05 16:03:23 147

原创 Go Interface Go的面向对象思想

inteface接口interface 是GO语言的基础特性之一。可以理解为一种类型的规范或者约定。它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“implements”关键字,只是通过约定的形式,隐式的实现interface 中的方法即可。因此,Golang 中的 interface 让编码更灵活、易扩展。如何理解go 语言中的interface ?只需...

2020-03-23 23:24:12 124

原创 在Linux系统环境下安装kafka

yum -y list java*yum install java-1.8.0-openjdk.x86_64[root@liang kafka_2.12-2.4.0]# java -versionopenjdk version "1.8.0_232"OpenJDK Runtime Environment (build 1.8.0_232-b09)OpenJDK 64-Bit S...

2020-03-22 18:57:56 196

原创 Go中可以为哪些类型定义方法?

Go可以为任意类型添加方法。go 中 都有哪些类型可以 定义方法 ?struct 肯定可以;函数 也可以基本类型 如 int float 等 。。。。还有哪些?...

2020-03-22 14:59:19 221

原创 Go语言中数组与切片的区别?有哪几种方式可以创建切片?

Go 中数组属于基本类型,他们之间的赋值 是值传递/值拷贝;Go语言中,区别一个变量是数组还是切片,就看有没有定义长度;func main() { array1 := [3]int{} array2 := [2]int{1,2} array3 := [2]int{4,5} //array2 = array1 //报错! Cannot use 'array1' (type...

2020-03-22 14:42:08 146 1

原创 pecl安装redis扩展(php版本7.2.18)

pecl 安装 redis 扩展[root@liang bin]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.9/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-3.1.0/lib //这个不是必须的!这是因为我升级安装gcc 出的问题[root@lian...

2020-03-22 10:37:46 1000

原创 phpstorm断点调试虚拟中php项目(web 中js代码)

2020-03-14 21:39:31 210

原创 redis.conf(版本3.2.6) 翻译

redis :3.2.6版本Redis 配置文件 示例注意 为了 读取 此配置 文件, 开启Redis 服务 时 此文件路径 必须 作为第一个参数:# ./redis-server /path/to/redis.conf单位 注意事项; 在表示内存大小时, 可以 使用 常规的格式 如 1k, 5GB, 4M 等这样的 来表示:# 1k => 1000 bytes...

2020-03-09 22:54:15 79 1

原创 自己动手写Docker

Docker容器有以下3个特点:1. 轻量级2. 开放: Docker 容器基于开放标准,这使得Docker容器可以运行在主流Linux 发行版和Windows操作系统上。3. 安全容器包含用户的程序和所有的依赖,但是容器之间是共享Kernel 的。各个容器在宿主机上互相隔离,并且在用户态下运行。...

2020-02-29 22:43:32 514

原创 go-micro examples中broker &event &pubsub 学习(broker发布订阅 & micro api Event + micro 订阅 & )

examples/broker : micro/go-micro/broker 发布订阅;examples/event : curl 触发 event + micro api --handler=event + micro service RegisterSubscriberexamples/pubsub : rpc clientNewPublisher...

2020-01-16 16:41:12 318

原创 go-micro examples 中mocking 代码学习(为方面分工开发 或测试 mock调用微服务)

对应 examples/mocking 例子这个例子 展示 了 如何 mock 调用 微服务。目录如下:helloworld : helloworld 微服务,(可假设下这是由项目中其他人开发,维护,我们只是调用)helloworld/proto/greeter.proto 代码如下:syntax = "proto3";service Greeter { ...

2020-01-15 10:42:26 7265

原创 go-micro examples 中noproto 代码学习(go-micro 中微服务使用json格式 来传输)

对应 examples/noproto 例子:go- micro 中微服务 都可以使用哪些 传输协议?go -micro 中 微服务中 我不想使用 protobuf 协议,或者在微服务中,我就想使用json 格式来传输 编码?目录:main.go 代码如下:package mainimport ( "context" "github.com/micro/go-mi...

2020-01-14 18:00:16 401

原创 go-micro examples 中stream 代码学习(流 服务及 结合浏览器websocket的使用)

对应 examples/stream 例子:这个例子, 有 一个 streaming 服务, 和两个 client, 一个是 streaming rpc , 一个是 js websockets + web services (streaming rpc)。目录:server 是 服务client : 是 rpc streaming clientweb : 是 w...

2020-01-14 16:12:41 905

原创 go-micro examples 中web & form 代码学习(web类 网站的微服务架构:micro api + micro web + web service + api service)

以下对应 example/web 例子:main.go 代码如下:package mainimport ( "fmt" "log" "net/http" "github.com/micro/go-micro/web")func helloWorldHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprint...

2020-01-11 00:23:58 307

原创 go-micro examples 中service 代码学习(开发基于go-micro的微服务)

这是一个 创建 微服务 的例子:https://micro.mu/docs/cn/writing-a-go-service.html目录如下:greeter.proto 代码如下:syntax = "proto3";service Greeter { rpc Hello(Request) returns (Response) {}}message Request...

2020-01-06 19:44:52 284

原创 go-micro examples 中grpc 代码学习(开发grpc类型的微服务 和 网关)

这个例子展示了 go-micro/service/grpc 的使用方法。目录 greeter -- 问候 微服务目录 gateway -- grpc 网关创建 micro.Service : service := grpc.NewService()Pre-existing ServiceWhat if you want to add grpc to a pre-existi...

2020-01-06 16:46:25 630

原创 grpc-ecosystem/grpc-gateway 基本概念和原理 / 实现网关和微服务

目标:简单微服务+ grpc-ecosystem/grpc-gateway;https://github.com/grpc-ecosystem/grpc-gatewayhttps://grpc-ecosystem.github.io/grpc-gateway/grpc-gateway 是 google bufers 协议的 编译器 protoc 的 一个插件。它 读取 proto...

2020-01-02 19:23:47 1480

原创 golang中使用第三方库google grpc 实现基础的微服务

使用的包:google grpc (google.golang.org/grpc);net;使用protobuf 协议;proto3 语法;目录:user.proto 代码如下:syntax = "proto3"; //指定语法格式,注意 proto3 不再支持 proto2 的 required 和 optinalpackage proto; //指定生成...

2020-01-02 17:38:57 635

原创 protobuf基础概念和认知

Protocol Buffers - google的数据交换协议。Protobuf 官方定义:protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍...

2020-01-02 17:14:20 100

原创 golang的rpc使用/ go实现简单的基础的微服务

在golang中实现RPC非常简单,有封装好的官方库和一些第三方库提供支持。golang官方的net/rpc库使用encoding/gob进行编解码,支持tcp或http数据传输方式,由于其他语言不支持gob编解码方式,所以使用net/rpc库实现的RPC方法没办法进行跨语言调用。golang官方还提供了net/rpc/jsonrpc库实现RPC方法,JSON RPC采用JSON进行数据编...

2020-01-02 16:52:57 233

原创 go版本发布历史

go版本发布历史 -- 概要--1.13 版本从Go 1.13开始,go命令默认使用Go module mirror和Go checksum database来下载和认证modules。语言的变化根据数字文字提案,Go1.13支持更统一和现代化的数字文字前缀前缀0b或0B表示二进制整数字面值,例如:0b1011前缀0o或0O表示八进制整数字面值,例如:0o660前缀0x...

2019-12-30 11:00:10 608 1

原创 swoole微服务/EasySwoole微服务实践 一:网关和服务基础搭建

利器/原则: 文档也不是面面俱到!看源码啊!必须看源码!当然不想看源码的,可以加入作者的VIP群,哈哈。

2019-12-10 15:48:23 1088

原创 linux centos7.6 下安装 php7.2.18

1 ifconfig 2 ip addr show 3 service 4 cd /etc/sysconfig/network-scripts/ 8 vim ifcfg-ens33 9 vi ifcfg-ens33 10 service network restart 11 ifconfig 12...

2019-12-10 11:45:17 225

原创 require.js及模块化编程相关概念

github地址:https://github.com/requirejs/requirejs好的文章:https://www.jianshu.com/p/8687f539642crequire.js 是一个JavaScript文件和模块加载器,也是模块管理工具requireJs 作用是什么,优势是什么? 它解决什么难题?1. 有效防止了命名冲突2. 声明了不同 JS 文件...

2019-12-07 22:36:36 56

原创 jquery的基础用法

如何自定义事件? <script> $(function(){ $('.son').on('myclick'function(){ alert('son') }) $('.s...

2019-12-05 18:09:47 38

原创 yii2中项目中对tinyint中各种值的处理-enum类的封装使用

数据库中经常会使用tinyint 的字段如:status : -1删除;0禁用;1启用;schooleType : 1小学;2中学;3高中;4大学;等为了避免在 控制器,模型,视图中大量出现硬编码情况。要使用常量来代替 1,2,3这样数值;代码如下;namespace common\enums;use Yii;trait Enum{ public s...

2019-11-06 19:32:36 166

原创 带图片的Excel表格导入/Excel中png图片的获取

需求:Excel表格是学校的很多信息,包括基本信息,专业信息等,有多个sheet;需以此表格为依据导入到数据库生成一个学校;或者更新一个学校的信息;难点: Excel表格中 学校的logo 是图片;是jpg,png,等格式;png格式是 如何正确获取到这张图片。使用的第三方处理excel表格的库为:\PhpOffice\PhpSpreadsheet代码:public sta...

2019-11-06 18:01:01 707

原创 PHP使用GD库生成签名图片png图片

需求:根据输入的名字,自动计算名字字符的长度,来生成相应的签名png图片难点: 自动计算输入文本的长度 public static function generateSignImage($sign_name){ if(empty($sign_name)){ return ['status' => false]; } ...

2019-11-06 17:32:53 261

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除