- 博客(57)
- 收藏
- 关注
原创 【Go实战】如何正确使用切片数据
这篇文章是为了给自己烙印上正确使用切片的印记,并加深对切片地址的理解。原因是线上代码产生的结果不符合预期,排查下来,是因为对slice的理解不够,采用了错误的用法,导致bug出现,因此记录下来,并修复这个问题。先上代码,以下是线上代码的简单还原,输出结果被分割成了三部分,以下用第一部分,第二部分,第三部分来命名各部分数据。type SimpleStruct struct { ID string A int B int}func TestUnexpectedFun(t *testing.T
2022-03-03 18:24:55 691
原创 PHP 计算开始时间到结束时间相隔的年,月,周,天
分享一个算法,计算开始时间到结束时间相隔n年,n月,n周,n天。/** * @note getDateGap 计算时间段 $start ~ $end 总共跨了n年,n月,n周,n天 * @param $start 开始时间 * @param $end 结束时间 * * @return array $result [year_gap, month_gap, week_gap, day_gap]; */private function getDateGap($start, $end){
2021-09-09 18:34:17 524
原创 【Golang实战】调用动态函数
转自:golang如何使用reflect动态调用函数应用场景我们知道一个函数名,通过一个字符串变量表示函数名,然后如何调用这个函数的功能。func foo() { fmt.Println("in foo");}var funcname string = "foo"func callFunc(funcname string) { ...}callFunc(funcname)下面的问题是我们如何实现callFunc()的内容来完成所要的功能呢。目前已知的办法好像是不行的,无
2021-02-18 16:12:29 2537
原创 【Golang实战】反射设置结构体字段值
这个测试用例,是在上一篇通过反射自定义排序字段的基础上做的补充,因为在业务代码中涉及到slice排序完之后,给最小元素的字段赋值场景。type Str struct { A string V int}func TestReflectMapSet(t *testing.T) { var ddd = map[int]*Str{ 2: {A: "test A", V: 2}, 1: {A: "test b", V: 1}, -1: {A: "test c", V: -1}, } t
2021-02-18 16:10:52 908
原创 【Golang实战】slice自定义字段排序
这个资料真的难找,搜了一圈,基本都是一样的,都是讲怎么通过反射改变slice中的值,关于自定义字段排序的资料缺是一个也没有。这也难怪,如果不是为了重构一个方法,关于排序复用代码太多,我也不会查找这方面的资料,并通过实践测试,找到了相关的方法。源码真的是一个非常非常好的参考资料。在找不到相关自定义字段排序的资料下,我翻了一下 sort.Slice 相关的源码,确定了如果要用反射排序,则需要使用 relfect.ValueOf 方法获取需要排序的内容,如下// Slice sorts the provid
2021-02-18 16:10:03 701
原创 【Golang实战】实现一个简单的版本比对算法
前段时间与团队成员做了一个线上规则库版本管理后台,用以在客户端在线升级规则库。规则库的升级方式,其实就是比对规则库版本信息,将当前版本规则库,升级到更新的规则库版本。在上周发版测试中,发现规则库升级一直报异常,虽然最后排查到问题是出在规则库管理流程上,即线上管理后台并没有上传相关版本的规则库,但我觉得仍有必要以自己的理解及认识,去重新实现这个版本比对工具。以下是 golang 的代码实现,并附上测试用例// CompareVersion compare oldv and newv, if oldv
2020-06-19 10:39:29 639
原创 【Golang实战】开始使用 GO MODULE 包管理工具
这篇文章是基于 Using Go Modules 翻译或者摘抄过来的。在 go module 包管理工具发布之后,我就一直关注着它的使用情况。并且曾在第一时间观看过相关的 youtobe 视频。但是由于对 go module 包管理的概念还比较模糊,一直没掌握住要领,导致项目 go module 迁移一直搁置。我的 golang 项目没有加入包管理的概念,一直以来都是采用 GOPATH 管理相关的依赖,因此我的所有 golang 项目都在 $GOPATH/src 目录下面,项目很集中,目录结构也没那么好
2020-06-19 10:38:38 1758
原创 【Golang实战】html模板使用记录
渲染模板定义一个默认模板index.tpl,并写入内容hello worldHello World定义一个方法渲染默认模板1、noescape 模板函数可将字符串解析转义成 html。2、必须设置输出内容为 text/html,不然有些内容不能正常渲染。3、loadTemplate是自己封装的用来加载特定路径模板文件的方法,可根据实际情况自己封装。func Index(w ...
2019-12-24 11:52:53 656
原创 PHP多进程任务学习实践
直接上代码ini_set('display_errors', 'off');error_reporting(E_ALL^E_WARNING^E_NOTICE);// 作用是每执行一次低级语句会检查一次该进程是否有未处理过的信号,ticks控制语句执行的条数declare(ticks = 1);class JobDaemonDemo{ public $maxProcess =...
2019-12-24 11:49:52 246
原创 【golang实战】使用golang发送以及接受数据
发送以及接收 application/x-www-form-urlencoded 数据客户端发送数据,并设置 Content-Type 为 application/x-www-form-urlencodedfunc test() { var data = make(url.Values) data.Set("test2", "test-v") // 组装数据 c :=...
2019-10-28 11:10:41 1845
原创 【Docker实战】分离nginx容器以及php容器
这是一次分离php容器环境,以及nginx容器环境的试验,结果稍稍令人满意。为什么要分离php,nginx环境我的开发环境,一直以来都是php,nginx一起安装的。那么既然使用容器,就希望着将各个服务独立出来。而且本着一切从简的原则,服务是有必要拆分出来的,因为不拆分的话,即将面对每一个新项目部署,都必须新配置一个default.conf。而如果nginx独立出来的话,有新项目了,我只需要修...
2019-10-28 11:08:44 1995
原创 【Docker实战】基于centos构建angular的开发环境
这篇要分享的是,如何用docker搭建node开发环境,让前端同学远离本机node,让他心爱的伙伴做干干净净的自己。为什么要搭建node开发环境?文章标题讲的是搭建angular开发环境,是不是跑题了?不不不,标题所讲的angular开发环境,其实也就是node开发环境。将它命名为angular开发环境,是因为文章演示示例是以angular构建的。当然,前端同学也可以根据本篇文章示例,用以构建...
2019-09-15 15:59:34 575
原创 【Docker实战】基于centos7.4.1708构建php7.1.32开发环境
我在这里安利一下docker,提供一个方便可用的php71-docker 环境,基于centos:7.4.1708构建,安装了大部分稳定可用的PHP扩展。很多同学都知道docker,也用过docker。但是我相信,很多同学在使用过之后,也会渐渐的不再使用,也就变成了仅仅使用过了。写这篇博文之前,一位前端同学刚好路过,看到我在这里Dockerfile,我也就顺便给她安利下。她是位高级前端开发、...
2019-09-11 19:47:19 699
原创 【golang实战】获取web提交的数据
背景之前做 golang 开发的时候,用的是 beego 框架,框架的好处是,把所有工具都封装好了,在获取参数的时候,只要调用相应的方法,就能取得对应的数据。而最近在从零开始,原生写一个小说爬虫管理的web服务功能时,发现自己所掌握的那点知识,并不能满足自己的开发需求,测试好多遍都未果,希望写下这篇记录贴,供以后回顾。数据提交场景大致如下:1、表单提交,纯粹的 Form 表单提交数据;2...
2019-08-30 15:39:46 1607
原创 【Docker实战】批量删除指定名称的容器镜像
【场景】在学习docker的时候,经常会编译docker镜像,很多都是基于上一个Dockerfile修改编译而来,因此出现了很多REPOSITORY 和 TAG 为 none 的镜像。每次 docker images 查看镜像,都会列出一长串,有的时候一屏还展示不全,所以就想要删除某些镜像。但是一个一个删又很费时,那就只有批量删除了。【实战】使用 grep 函数查找出所有包含 none 的镜...
2019-08-07 12:48:46 6290
原创 【Go语言实战】字符编码GBK、UTF8转换
近期计划开发一个小说阅读APP,本意是学习golang开发,以及爬虫设计。一般规范些的站点,会采用utf-8编码开发运行在浏览器上。然而,在我抓取的某些网站,却是采用的GBK编码,因此,在解析dom后,获取中文内容的时候,总是会出现一些编码问题,导致我并不能确认,解析到的内容,是不是就是我想要的,我期望的。为了解决这个问题,我面向百度,面向goole编程,最终找到了一个可靠的解决办法,即goo...
2019-05-20 17:54:08 4774 5
原创 golang使用mux及其中间件过滤路由
我在上一篇文章中解决了如何在请求与响应之间做请求处理,在这里继续向后延伸。在我们的项目中,并不是所有的路由都需要通过认证后才可以访问,就比如登录,注册之类的页面,用户是不需要登录即可访问的。当我们在脱离使用框架后,我们要做的,将不仅仅是让路由访问成功,我们需要做的更多。我们需要将要认证才可以访问的路由,以及不需要认证也可以访问的路由区分开。那么,该如何做呢?github.com/goril...
2019-01-25 18:29:08 4808
转载 如何实现Golang的http请求处理中间件
前言平时开发中,遇到了太多框架,总感觉很臃肿,很累赘。而golang这中灵活度非常高的开发语言,又确实可以做到摒弃框架开发。我采用了 mux 这个轻巧的第三方路由包,并希望在请求和处理之间做一个权限认证工作。思前想后,无论怎样,都不能单靠自身想到解决办法,也搜索不到解决办法。恰巧这篇《如何实现Golang的http请求处理中间件》的译文,为我打开了大门,很巧妙的解决了我当下的问题。源码:...
2019-01-25 14:15:50 2542
原创 记录 not an SSL/TLS record
日志记录如下:[2019-01-23T14:42:35,850][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [node0] caught exception while handling client http traffic, closing connection [id: 0xe38f8ac0, L:0.0.0.0/0.0.0...
2019-01-23 17:55:39 24022
翻译 golang中的类型及类型转换指南
在这篇文章中,我们将研究golang中使用的不同数据类型,以及如何在不同数据类型间进行转换。在我们研究类型转换的不同方法之前,让我们先来讨论一下golang中一些最常用的数据类型。golang中的数据类型下面是您将在golang中使用到的几种数据类型:布尔(bool)类型。它用来存储一组布尔真值,它可以是true或false.字符串(string)类型。golang中的字符串,是使用给定...
2018-12-07 15:50:33 2476
原创 Yii2 elasticseach ssl认证配置及源码修改
后面做了优化,修改源码,建议采用优化后的方法1、修改本地es连接配置(源码示例容易误导,看源码读取配置后才正确配置):2、修改protocol设置,yii2中es连接之前会获取所有的可连接es集群,因为es不存在protocol属性,源码中手动设置为http,这个地方作者考虑补全,没有采用本地配置的protocol,因此要修正:3、修改curl请求的证书认证,增加三个opt选项,CURL...
2018-10-24 19:15:01 532
原创 将乱序时间排序,并组合成时间段
背景:后端在处理用户访问关系时,将全天时间按30分钟分隔成48个时间点,并乱序存入数据库中。而前端需要将其格式化成时间段形式(如13:00-18:00)展示。示例数据如下:["03:00", "02:00","02:30","23:00","22:30","04:30",&qu
2018-09-26 17:52:46 1042
原创 mysql5.7版本json原生函数初体验
mysql 5.7版本中原生json的使用体验mysql> select version();+------------+| version() |+------------+| 5.7.18-log |+------------+1 row in set (0.00 sec)测试数据mysql> select disk from prs_devi...
2018-08-24 10:11:38 711
转载 macmini中vagrant不能创建文件解决办法
开发环境是macnimi os,运行环境是vagrant + nginx + php。最近在开发过程中,需要跟py同事联调,拿参数的时候,想通过写日志文件的形式拿到参数,进行测试;可是遇到了文件不能创建的问题,再加上之前又遇到过无权限创建目录的问题,所以下定决心,一定要解决这个权限问题。测试过多种办法,最后在百度问答中看到了这个解决办法,并测试通过。原链接没有贴过来,把这个解决办法...
2018-07-30 18:12:41 256
原创 yii按需加载静态资源
自定义按需加载css,js文件,并放在最后1、模块下assets/appAsset.php中注册两个方法addCss和addScript。//定义按需加载css方法,注意加载顺序在最后 public static function addCss($view, $cssfile) { $view->registerCssFile($cssfile, [AppAsse...
2018-07-30 18:03:52 805
原创 ctype类函数使用
函数接口如下(返回值都是bool值)://判断text是否由数字或字母组成function ctype_alnum ($text) {}//判断text是否全由字母组成function ctype_alpha ($text) {}//判断text是否都由控制字符(例:换行[\n\r]、缩进[\t]、空格[])组成function ctype_cntrl ($text) {}...
2018-07-30 17:55:25 2228
原创 Yii2使用总结
empty()函数的使用场景:示例:var_dump(empty(null));var_dump(empty(''));var_dump(empty([]));var_dump(empty(false));var_dump(![]);输出:truetruetruetruetruemysql增删改查操作示例://查,返回array()se...
2018-07-30 17:53:42 305
原创 判断指定IP是否在指定IP段中
最近在做一个访问控制的功能,只允许指定IP,或者IP段中的IP访问。 下面方法用来判断指定IP是否在指定IP段中(已通过测试)。/** * 判断IP是否在某个网段内 * @param $ip * @param $network * @return bool */function ipInNetwork($ip, $network){ $ip = (double) (sp...
2018-05-21 16:56:57 1644
转载 转:phpstorm破解教程
PhpStorm官网你可以直接去下载免费试用版本,在这里我们不过多说了。直接教大家怎么安装破解版的。 1.目前这个破解方法只对2017.1.4版本及以前的版本起作用,所以你要下载这之前的版本。足够使用了。当然你也可以下载最新版本自己找破解方法或者淘宝买也ok。 点击下载:PhpStorm-2017.1.4.exe 密码:vncr 2.下载安装之后,打开:F:\PhpStorm 201...
2018-05-20 22:00:21 1073
原创 ubuntu安装lnmp后开启mysql,redis远程访问
lnmp集成安装后,即使关闭了服务器防火墙,mysql依然不能远程连接。因为lnmp默认添加了iptables规则,禁止了远程访问3306,6379端口。root@iZjr5oba73m1ygZ:/usr/local/nginx/conf# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source ...
2018-05-18 17:07:16 628
转载 yii2-advanced版lnmp环境下500问题
打开php.ini的错误显示:display_error=on,查看到如下错误Warning: require(): open_basedir restriction in effect. File(/opt/yii-app/vendor/autoload.php) is not within the allowed path(s): (/opt/yii-app/api/web/:/tmp/:...
2018-05-18 11:29:06 705
原创 golang搭建静态web服务器
我胡汉三又回来啦。好久没发文了,为保持平台上的活跃度,我今天就分享下个刚学到的知识,使用golang搭建静态web服务器,亲测可用,附代码!使用过golang语言的程序猿都应该知道,在使用golang开发的时候,我们是不需要诸如iis,apache,nginx,kangle等服务器支持的。为什么呢?原因是,golang的net/http包中已经提供了HTTP的客户端与服务端实现方案。...
2018-03-10 09:58:57 6068
原创 filter_var过滤私有ip
示例$host = "192.168.1.1";var_dump(filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE));echo "<br>";$host = "127.0.0.1";var_dump...
2018-02-26 15:48:10 853
转载 看到最后,我笑了!
许多年前,一个刚结婚的名叫 Shay Banon 的失业开发者,跟着他的妻子去了伦敦,他的妻子在那里学习厨师。 在寻找一个赚钱的工作的时候,为了给他的妻子做一个食谱搜索引擎,他开始使用 Lucene 的一个早期版本。直接使用 Lucene 是很难的,因此 Shay 开始做一个抽象层,Java 开发者使用它可以很简单的给他们的程序添加搜索功能。 他发布了他的第一个开源项目 Compass。后...
2018-02-25 17:52:37 317
原创 flink集群一键安装脚本 -- flink集群安装
#!/bin/sh########## HELP ###########if [ $# -ne 0 ];then if [ $1 == "-h" -o $1 == "-help" ];then echo -e " 示例: ./test # 启动本地模式,不修改任何配置 ...
2018-02-25 16:23:53 1021
原创 flink集群一键安装脚本 -- 消息中间件kafka集群安装
#!/bin/sh########## HELP ###########if [ $# -ne 0 ];then if [ $1 == "-h" -o $1 == "-help" ];then echo -e " 示例: ./kafka.sh # 启动本地模式,不修改任何配置 ...
2018-02-10 17:08:24 518
原创 flink集群一键安装脚本 -- kafka消息中间件依赖zookeeper集群安装脚本
#!/bin/shINSTALL_PATH="/usr/local/src/";ZOOKEEPER_VERSION="3.4.11"ZOOKEEPER_GZIP="zookeeper-${ZOOKEEPER_VERSION}.tar.gz";ZOOKEEPER_CONF_DIR="${INSTALL_PATH}/zookeeper-${ZOOKEEPER_VERSION}/conf"Z...
2018-02-10 17:06:39 318
原创 flink集群一键安装脚本 -- java运行环境配置
前期准备,java运行环境准备8u144版本jdk:jdk-8u144-linux-x64.rpm多次从官网下载该rpm包失败,因此需要自己下载好该安装包#!/bin/bash################ 准备java环境 ######################DOWNLOAD_PATH=""JDK_PATH="jdk1.8.0_144" # "jre1....
2018-02-10 17:00:38 474
原创 redis 集群安装
以端口名(7001,7002,7003,7004,7005,7006)新建文件夹,存放集群节点的配置文件cd /usr/local/src/redis-4.0.2/mkdir -p ./cluster/7001 # 同理新建其他目录cp ./redis.conf ./cluster/7001 vi ./cluster/7001 # 打开修改配置文件要修改的配置内容po
2018-02-06 14:25:28 207
原创 flink消费kafka消息
package testMaven.testMaven;import org.apache.flink.streaming.api.datastream.DataStream;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import org.apache.flink.streami
2018-01-26 13:53:39 1838 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人