- 博客(101)
- 资源 (1)
- 收藏
- 关注
原创 1. 用go-kit整合http服务
首先endpoint层依赖service层,我们定义一个接口比如就叫IService,我们实例化endpoint的时候就提供一个具体的IService接口实现。上面我们说到Endpoint实现不是一个标准struct,如果是我们可以给他加上IService依赖,实例化的时候提供实现即可。现在我们的每个EndPoint已经 是一个函数类型实现,想要往里填入对IService接口的依赖,可以考虑使用闭包。闭包可以让函数类型的实现依赖外部的变量,而且在使用时在加载。
2024-04-23 11:41:57 552
原创 grpc使用
首先需要一个编译工具,对应的就是一个可执行文件比如protoc.exe,protoc运行是把.proto文件转换为 c++统一格式的内存数据, 然后由语言插件把内存数据转换为各自语言的代码文件,比如go语言就提供了protoc-gen-go插件。对于旧版本的protoc工具,只要安装完了protoc工具,就能使用protoc命令,把一个定义了grpc的.protoc文件转换为.go文件, 命令要用protoc --go_out=plugins=grpc:. hello.proto。
2024-04-23 11:20:52 612
原创 jeager的使用
服务之间调用时,为了确保各自创建的span能串成一个调用链,那么服务之间需要传递trace和span相关信息。jaeger规范了信息的 格式,有提供默认方式,也支持自定义。具体的说明,可以看官方文档,对于客户端包用的,里面也有使用说明。
2024-04-19 08:41:33 983
原创 3.用go-kit整合链路追踪
项目中如果一个微服务要对其他服务暴露http api接口,需要把http client调用放到 pkg/sdk/go中实现。// ...1、拼接请求数据2、构建http client3、发送请求4、处理响应数据比如下面拿certs服务中实现的sdk举例子,代码在pkg/sdk/go/certs.go中。if err!= nil {项目采用了go-kit组件搭建,业务开发定义service接口,然后写个service实现。
2024-04-02 13:36:01 838
原创 阿里云oss使用
比如我们用上面的curl方式请求,就会拿到错误信息,看签名内容,可以发现这么请求时签名里面没用content-type内容,但是服务端签名时字符串是有octet-stream的,这样自然对不上。签名URL是用get方式获取文件,对于下载用的url,签名的时候会有content-type,用的什么,那么下载时客户端(浏览器、curl等)调用的时候也必须使用同样的content-type,否则就会提示签名错误。charset=UTF-8,所以我们生成下载的签名url时需要提供同样的content-type。
2024-03-06 17:09:21 859
原创 正则表达式
2、如果文件名称本身就是【作业_20201020_1691998649_dd70c99c-338a-4f72-96b6-d4068dea00f0.zip】,经过处理就会变为【作业_20201020_1691998649_dd70c99c-338a-4f72-96b6-d4068dea00f0_1691998649_dd70c99c-338a-4f72-96b6-d4068dea00f0.zip】,我们还原的时候也就是要把最后的一组后缀去掉。整个后缀就是 _\d+_[-0-9a-zA-Z]+来匹配。
2024-03-05 11:28:54 569
原创 xorm使用
(现在已经不这么用了,得用reverse工具,下面步骤看看就得了,是以前那么用的)1、安装xorm可执行文件想要看源码,可以访问执行完上面的go install之后,xorm的相关代码会被下载到pkg/mod下,从里面找到cmd/xorm/template文件夹,拷贝出来。比如拷贝到/home/songweiwei/templates。里面内容如下。
2023-11-14 15:29:01 104
原创 mysql压缩包的安装
启动mysql(8.0)后,使用navicat(11.1.13)进行连接,报错1251: Client does not support authentication问题原因是我所使用的mysql版本是8.0,而8.0版本的数据库加密方式与5.0不一样,如果你使用旧的客户端(例如navicat)去连接就会报这个错误。解决方法有两种,换高版本navicat或者修改mysql8.0的加密方式。我们这边...
2018-05-28 18:13:01 214
原创 基于php7的项目要安装mongodb类库
公司的一个项目要从php5.6升级到php7版本,项目的mongo类库用不了,看了php手册,发现要对于php7要安装新的类库。php7需要使用的library是 mongodb而不是旧的mongo,所以要在项目中下载这个mongodb(library)。对于一个要安装mongodb library的项目,直接用composer下载,使用composer require mongodb/mongo...
2018-03-30 19:40:44 5166 1
转载 贪婪匹配
贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配。 $str = '{{a}}{{b}}';preg_match('/{{.*}}/',$str,$match);print_r($match);//Array ( [0] => {{a}}{{b}} )非贪婪匹配:在满足匹配时,匹配尽可能短的字符串,使用?来表示非贪婪匹配。 $str = '{{a}}{{b}}’;pre...
2018-03-06 15:50:27 513
原创 PC端 “微信NATIVE支付“ 原理:
PC端 “微信NATIVE支付“ 原理:首先就是调用”统一支付接口“,得到二维码code_url。调用统一支付接口需要传入很多参数,最主要的就是”通知地址“,用来接收微信支付成功通知,即支付回调。调用”统一支付接口“后得到返回值中return_code和result_code都为true,这样就说明能得到code_url。微信NATIVE支付主要有三个点:有个php脚本,调用统一支付接口得到...
2018-03-06 15:47:29 3670
原创 微信oath2.0认证的过程
微信oath2.0认证的过程用户使用微信客户端,向服务器A发来请求。服务器A响应此请求,让其请求微信服务器。 具体是让微信客户端302调转请求微信服务器,请求微信服务器获取code的url文档有,我需要加上公众号的appid,redirect_url,scope。3. 微信客户端请求微信服务器。4. 微信服务器返回带着code参数的链接,让微信客户端按照rediret_url请求。5. ...
2018-03-06 15:45:20 702
原创 redirect
当微信客户端来请求,如果发现没有证明用户身份的cookie,就让用户重定向到微信认证,据此获得用户openid和基本信息。实现逻辑是:302跳转带上cookie,cookie是要记录用户本来的请求路由,后续有用。302跳得本质,是在返回的响应的响应头中,增加location属性来告知浏览器,进行重定向。简单方式就是 header(“location:http://www.weixin.com...
2018-03-06 15:44:38 469
原创 csrf
在yii2.0中,默认csrf校验是开启的。页面中,使用小部件ActiveForm,默认会生成一个带有_csrf值的隐藏域。如果不用ActiveForm,也能调用Request中的方法自己生成。例子1:use yii\widgets\ActiveForm;use yii\helpers\Html; <?php $form = ActiveForm::begin();?><?=Ht...
2018-03-06 15:41:16 225
原创 yii2.0框架中安装redis扩展
yii2.0框架中安装redis扩展1.通过composer进行安装,到项目根目录cmd运行(推荐) php composer.phar require --prefer-dist yiisoft/yii2-redis 或者添加 "yiisoft/yii2-redis": “~2.0.0” 到对应项目的composer.json 文件中, 再运行composer upd...
2018-03-06 15:40:15 330
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人