自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北漂猿

分享和记录自己所学,好记性不如烂键盘

  • 博客(104)
  • 收藏
  • 关注

原创 PHP扩展编写实战helloworld

1、cd ext2、./ext_skel --extname=helloworld3、vim config.m4去掉注释:PHP_ARG_WITH(helloworld, for helloworld support,Make sure that the comment is aligned:[ --with-helloworld Include helloworld support])4、/usr/local/php-7.1.0/bin/phpize5、vim.

2022-04-12 12:42:27 1226

原创 Linux如何查找大文件或目录总结

https://www.cnblogs.com/kerrycode/p/4391859.html

2021-08-31 16:52:35 297

原创 清空磁盘目录文件

vim clearFile.sh#!/bin/bashpath=$1 cd $pathfor filename in `ls`doecho ' '>"$filename";done使用:sh clearFile.sh file/

2021-08-31 16:50:34 193

原创 TP5源码分析-门面模式

文章目录使用文档源码目录我们主要是来说说怎么使用静态方式调用动态类?怎么实现的?使用文档https://www.kancloud.cn/manual/thinkphp5_1/353959源码目录源码发现定义这个几个文件门面类:thinkphp\library\think\Facade.php代理的类:thinkphp\library\think\facade\例如:真正业务类:thinkphp\library\think例如:我们主要是来说说怎么使用静态方式调用动

2021-08-05 20:42:08 306 3

原创 PHP的curl发送POST请求(不带请求参数)返回400状态码

问题出在Linux下如果发送空请求参数的时候不能使用curl_setopt($ch, CURLOPT_POST, true)来设置为POST请求。如果确有需要,可以用curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST')代替。但是如果我们使用别人提供的类库时,这时候只能随便加个参数上去,不要发送空请求就好了,比如随便加个t=time()。...

2021-05-18 16:40:13 499

原创 api 安全

摘自: https://www.cnblogs.com/xingxia/p/api_secrute.htmlAPP、前后端分离项目都采用API接口形式与服务器进行数据通信,传输的数据被偷窥、被抓包、被伪造时有发生,那么如何设计一套比较安全的API接口方案呢?一般的解决方案如下:1、Token授权认证,防止未授权用户获取数据;2、时间戳超时机制;3、URL签名,防止请求参数被篡改;4、防重放,防止接口被第二次请求,防采集;5、采用HTTPS通信协议,防止数据明文传输;一、Token授权认证

2021-01-31 15:30:46 823

原创 解决PHPExcel导出长数字末尾几位数为0的问题

在excel中默认“常规”情况下,单元格中能完全显示的数据只有11位,超过11位,系统自动用科学记数显示。当单元格格式设置为“数值”、小数点位数为0时,最多也只能完全显示15位数字,超过15位,从16位开始显示为0。完整显示输入的所有数字,可以采用下述方法之一:一是首先输入一英文单引号再输入数字。二是把数据区域设置成“文本”格式后再输入数字。在phpexcel中解决的办法//输出单元格值之前的部分代码$objactsheet->setcellvalue('b'.$i, $value.

2021-01-26 14:48:05 561

原创 goLang的学习路线

在网上下了一张图感觉挺好:

2021-01-22 13:01:35 558 1

原创 给刚入行的程序员几点建议

一定要锻炼身体,再忙也要抽时间锻炼(一周至少三次,不要太猛,适度进行),否者到时你的腰,你的背,你的肩,你的肚子,你的胃迟早会出问题如果单身,一定要注意保持和女性的沟通(可以参加一些社交活动或者一些社交APP多结识女性),程序员真的不好找媳妇注重计算机基础知识学习(例如计算机组成原理、数据结构与算法、计算机网络、操作系统等)前两年知识面要广,只有见识广了,你选择就多了多关注行业动态,为以后聚焦做准备多折腾,不要耗,公司成长不了赶紧跑路...

2021-01-18 22:11:48 772 11

原创 图片素材

https://www.zhihu.com/question/21757507

2021-01-16 12:14:41 159

原创 微信营销图片上传API Demo

<?php/* * 图片上传API(demo php版本) * 文档地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/chapter3_1.shtml * *///生成signature//HTTP请求方法\r\n//URI\r\n//请求时间戳\r\n//请求随机串\r\n//请求报文\r\n//这里设置您的图片文件名,要绝对路径$file_name = "/home/users/logo.png";

2021-01-16 11:42:45 372

原创 计划任务定时检测进程是否存在,不存在则启动

$cmd = "ps axu| egrep '(think testB)'|grep -v 'grep'|wc -l"; $ret = shell_exec("$cmd"); echo $ret; $ret = rtrim($ret, "\r\n"); if($ret === "0") { $start_master_cmd = "nohup /home/pubsrv/php-7.2.27/bin/ph...

2021-01-12 18:57:03 856

原创 切片

• 引⽤类型。但⾃⾝是结构体,值拷⻉传递。• 属性 len 表⽰可⽤元素数量,读写操作不能超过该限制。• 属性 cap 表⽰最⼤扩张容量,不能超出数组限制。• 如果 slice == nil,那么 len、 cap 结果都等于 0。• 作为变长数组的替代方案,可以关联底层数组的局部或全部•可以直接创建或从底层数组获取生成• 使用len()获取元素个数,cap()获取容量• 一般使用make()创建•如果多个slice指向相同底层数组,其中一个值的改变会影响全部•在通过下标访问元素时下标不能

2021-01-11 23:00:12 621

原创 openssl实现DES加密

<?php/** * openssl 实现的 DES 加密类,支持各种 PHP 版本 */class DES{ /** * @var string $method 加解密方法,可通过 openssl_get_cipher_methods() 获得 */ protected $method; /** * @var string $key 加解密的密钥 */ protected $key; /** *

2021-01-11 11:41:53 1315

原创 判断是不是小程序打开

//是否小程序打开 public static function isMiprogramOpen() { if (strpos($_SERVER['HTTP_USER_AGENT'], 'miniProgram') !== false ||strpos($_SERVER['HTTP_USER_AGENT'], 'miniprogramhtmlwebview') !== false ) { return true; } else {...

2021-01-08 11:42:30 592

原创 微信图片防盗链解决办法

原因官方输出图片的时候,判断了来源(Referer),就是从哪个网站访问这个图片,如果是你的网站去加载这个图片,那么Referer就是:你的网站地址;如果我们的网站地址不在官方的白名单内,所以就看不到图片了。我们做这个跳板的关键:不发送Referer,也就是没有来源。那么官方那边,就认为是从浏览器直接访问的,所以就能加载正常的图片了解决方法在<head>标签里加<meta name="referrer" content="never"> 转自 :https://www

2020-12-30 17:28:03 734 1

原创 获取某年某月某日的时间开始结束时间

$time = time(); $year = date('Y');// 今年 $month = date('m');// 这个月 $day = date('d');// 今天 $today_begin = strtotime(date('Y-m-d',$time));// 今天开始时间 $today_end = mktime(23,59,59,$month,$day,$year);// 今天结束时间 // 60*60*24 = 86400; $...

2020-12-29 10:44:49 326

原创 获取某年某月某日的时间开始结束时间戳

文章目录1. 某日开始和结束的时间戳2. 今日开始和结束的时间戳3. 昨日开始和结束的时间戳4. 本周开始和结束的时间戳5. 上周开始和结束的时间戳6. 本月开始和结束的时间戳7. 上个月开始和结束的时间戳8. 今年开始和结束的时间戳9. 去年开始和结束的时间戳1. 某日开始和结束的时间戳 /** * 返回某日开始和结束的时间戳 * @param int $time 某日任意时间的时间戳 * @return array */ public stati

2020-12-29 10:25:29 611

原创 日期超强总结

文章目录1、获取年月日2、获取时分秒3、获取年月日时分秒4、今年是否闰年5、获取当月多少天6、根据月份获取天数7、根据月份获取当月第一天8、根据月份获取当月最后一天9、获取上个月第一天10、获取上个月的最后一天11、获取昨天12、获取前天,即三天前13、获取明天14、获取一周以后15、获取一周零两天四小时两秒后16、获取下个星期四17、获取上周一18、获取一个月以前19、获取一个月以后20、获取十年后21、服务器的时间区域设置1、获取年月日echo date('Y-m-d');2、获取时分秒ech

2020-12-29 10:09:15 93

原创 Golang学习笔记-map

map[KeyType]ValueTypeKeyType:表示键的类型。ValueType:表示键对应的值的类型。map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为:make(map[KeyType]ValueType, [cap])其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。package mainimport( "fmt" "time" "math/rand" "sort")f.

2020-12-27 22:00:30 146

原创 Golang学习笔记-切片

切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。2. 切片的长度可以改变,因此,切片是一个可变的数组。3. 切片遍历方式和数组一样,可以用len()求长度。表示可用元素数量,读写操作不能超过该限制。4. cap可以求出slice最大扩张容量,不能超出数组限制。0 <= len(slice) <= len(array),其中array是slice引用的数组。5. 切片的定义:var 变量名 []类型,比如 var str []string var arr ..

2020-12-27 21:56:29 139

原创 centos查看磁盘空间大小

df -h其他1.查看当前文件夹所有文件大小du -sh2.查看指定文件下所有文件大小du -h /data/3.查看指定文件大小du -h install.log4.查指定文件夹大小du -sh /data

2020-12-26 16:09:08 3821

原创 并发防超卖最简单的办法

测试代码:class Test{ public function test(){ // 启动事务 Db::startTrans(); try { $prizeM = MarketingCampaignPrize::where('total','>',0)->where('campaign_id',80) ->g

2020-12-19 11:47:36 543 4

原创 Golang学习笔记-字符串常用函数

1、计算字符串的长度len(str) str := "ddddd" //5 str1 := "dddd中国" // 10 因为一个汉字占三个字节 fmt.Println(len(str)) fmt.Println(len(str1))2、字符串遍历 同时处理有中文的问题 []rune() str2 := "dddd中国" r := []rune(str2) for i :=0;i<len( r);i++ { fmt.Printf("字符=%c\n", r[i])

2020-12-15 22:58:35 191

原创 Golang学习笔记-循环语句

注意点for 之后的语句不需要使用()break+ 标签的形式可以一次性跳出多层循环for{…} 的形式是一个死循环for可以实现语言中的while功能普通用法省略单次表达式代替while的写法break 的用法break 标签跳出循环用法案例学习打印空心金字塔//打印空心金子塔 /* * * * * * * * ********* */ /* 分析思路: 第一步:可以先打印出一个矩形 **

2020-12-12 20:31:19 112

原创 Golang学习笔记-分支语句

一、if … else …==常规用法 ==特殊用法:if 后的条件表达式,还有一种特别的写法,可以在条件表达式之前写一个赋值表达式。二、switch … case …==常规用法 ==特殊用法:switch 省略后面的表达式 case 后面加条件表达式。...

2020-12-12 18:41:13 158

原创 Golang学习笔记-运算符

运算符的分类算数运算符关系运算符逻辑运算符位运算符赋值运算符算数运算符符号说明-减*乘/除%求模(取余)++自增–自减+连接符关系运算符逻辑运算符位运算符赋值运算符优先级(从上到下由高到底)...

2020-12-12 12:07:31 101

原创 Golang学习笔记-指针的简单使用

指针的简单使用Go 语言中和 C/C++ 一样,直接提供了指针类型,但是不同的是 Go 语言的指针无法进行位移和运算的,它只是一个存储了其它变量地址的变量而已。它在 Go语言中最大的作用就是在值传递的过程中减少内存消耗。注意:& 取地址符号 * 取值的符号...

2020-12-12 10:52:30 115

原创 Golang学习笔记-常量表示

常量表示常量表示类似于变量表示,可以单常量表示和多常量表示,还可以特殊表示

2020-12-12 10:33:08 78

原创 Golang学习笔记-基本数据类型转换

标准库 https://studygolang.com/pkgdoc整型和浮点型互相转换使用强制类型转换标志 type(variable)。需要注意的是,当高精度向低精度类型转换的时候,会失真。即浮点型向整型转换的时候会失去其小数部分。在实际开发的过程中,我们一般要避免这两个类型的互相转换,在无法避免的场景,比如说计算浮点数和整数的和之类的情况中。需要秉持不失真原则,将低精度向高精度转换之后进行计算整形和字符串互相转换整型和字符串类型的变量互相转换,需要依靠 Go 语言提供的转换包strco

2020-12-12 10:30:17 118

原创 Golang学习笔记-数据类型介绍

数据类型有符号定长类型有符号不定长类型在 Go 语言中也实现了随着平台位数变化而变化的数据类型int。一般来说,这个类型在32位的系统中长度和int32一致,在64位的系统中长度和int64一致。有符号定长类型有符号不定长类型在 Go 语言中也实现了随着平台位数变化而变化的数据类型uint。一般来说,这个类型在32位的系统中长度和uint32一致,在64位的系统中长度和uint64一致。查看数据类型查看字节大小浮点型实数类型序号类型长度1flo

2020-12-09 23:12:33 150

原创 二进制的减法

注:正数的补码是其自身 负数的补码 是其反码+1这里需要说明的是,在计算机中做二进制数运算时,一定要明确是在多少位的整型前提下进行的,这样才能够正确处理位数溢出的问题。其实减法也可以看成加法 6+(-4)无论加减法总结:补码相加 结果再求补码1表示负0表示正在计算机中,负数是使用它的补码来表示的。所谓补码,就是反码+1。所谓反码,就是二进制数逐位取反。所谓逐位取反,就是1变成0,0变成1。例如:原来的二进制数: 1011011101101反码: 01001000100..

2020-12-09 10:15:44 9735 1

原创 Golang学习笔记-变量

声明Go语言主要有四种类型的声明 语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。变量变量的声明也可以在一个声明语句中同时声明一组变量,或用一组初始化表达式声明并初始化一组变 量。如果省略每个变量的类型,将可以声明多个类型不同的变量(类型由初始化表达式推 导):变量的简短声明和var形式声明语句一样,简短变量声明语句也可以用来声明和初始化一组变量:...

2020-12-08 23:05:39 136 2

原创 Golang学习笔记-命名

命名Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个 简单的命名规则:一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意 数量的字母、数字或下划线。严格区分大小写 大写字母和小写字母是不同的:heapSort和Heapsort是两个不 同的名字。关键字不能用于自定义名字,只能在特定语法结构 中使用。...

2020-12-08 22:45:45 94

原创 Golang学习笔记- Hello, World

//E:\goProject\hello.gopackage mainimport "fmt"func main(){ fmt.Println("Hello world")}输出结果Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令(译注: 静态编译)。Windows...

2020-12-08 22:35:14 80

原创 Golang学习笔记-注意事项及其代码规范

中文官网https://studygolang.com/学习书籍https://studygolang.com/books注意事项1、源文件扩展名“go”2、入口方法main3、每个语句不需要分号4、定义的变量或者import的包没有用到,编译时会报错两个等级: (S)建议,(M)必须。以下是细节。代码组织结构1、(M)一个目录只包含一个包,模块复杂拆分子模块/子目录2、(S)内部项目GOPATH如果指向多个工作目录。公开项目为第一个工作区间(即go get默认下载到

2020-12-08 22:06:46 219

原创 Golang系统学习笔记

目录结构

2020-12-08 13:30:11 92

原创 TP5 源码分析-App类里面的$this解析

这个类里面有很这样的使用例如$this->hook->import(); $this->config->get(); $this->request->init();等等你知道这个对象怎么来的吗?不急,亮仔一一道来:app类会继承容器Container(这是关键)容器有个魔术方法很重要 例如当调用$this->hook时找不到会调用魔术方法 public function __get($name) { return $t.

2020-12-03 20:14:02 469

原创 TP5 源码分析-钩子和行为

文章目录行为的使用文档图解剖析行为的使用文档https://www.kancloud.cn/manual/thinkphp5_1/354129图解剖析在tags.php配置加载行为类 (D:\www\ThinkPHP_V5.1.39\thinkphp\library\think\App.php)进行监听(这里只以 app_init 便签举个例子)...

2020-12-03 19:47:40 170

原创 unserialize():Error at offset 0 of 96 bytes

使用它抛错addslashes(serialize(json_encode($useDateStraArr)));解决:json_decode(unserialize(stripslashes($data['use_date_stra'])), true);

2020-12-03 18:04:48 203

空空如也

空空如也

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

TA关注的人

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