自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(585)
  • 资源 (6)
  • 论坛 (5)
  • 问答 (6)
  • 收藏
  • 关注

转载 基于 Nginx 实现灰度发布与 AB 测试

背景单位的云办公相关系统没有成熟的平滑发布方案,导致每一次发布都是直接发布,dll文件或配置文件的变更会引起站点的重启。云办公系统的常驻用户有10000+,即使短短半分多钟,也会收到一堆投诉。基于此,我们梳理了一套平滑发布的方案。实施方案1、跟nginx代理服务器约定了一个健康检查的接口2、通过接口返回的http状态码来让nginx决定是否分流用户请求(这个我们单位的技术部那边有标准的做法)3、根据提供的这个服务健康检查的接口:nginx判断只要某个实例的接口返回5xx的状态码,..

2021-10-20 11:19:22 2

转载 php 操作 ffmpeg 类,实现视频加文字\加水印\裁剪等功能

<?php/** * video class * written: denny Date :2020-06-15 */class Mpeg{ public $sowarePath = ""; public $ffmpegCmd = "ffmpeg "; public $ffprobeCmd = "ffprobe "; function __construct($sowarePath=''){ if (!function_exists('.

2021-10-19 15:17:47 6

原创 PHP 四个执行系统命令函数:exec()、passthru()、system()、shell_exec()

php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()。在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。找到 disable_functions,配置如下:disable_functions =如果“disable_functions=”后面有接上面四个函数,将其删除。默认php.ini配置文件中是不禁止你调用执行外部命令的函数的。方法一:exec()function exec(string

2021-10-19 11:33:09 3

原创 linux 使用 webp-tools 实现 webp与png、jpg 之间的格式转换

安装:#ubuntuapt-get install webp#centosyum -y install libwebp-devel libwebp-tools会生成几个工具。cwebp → WebP encoder tooldwebp → WebP decoder toolvwebp → WebP file viewerwebpmux → WebP muxing toolgif2webp → Tool for converting GIF images to WebP# c

2021-10-14 21:34:39 109

原创 linux convert 命令 把gif转成jpg或png格式的问题

convert xx.gif xx.jpg 会把gif的帧拆开为很多独立的xx-1.jpg ,xx-2.jpg, xx-3.jpg。。。。解决方法:convert ‘images.gif[0]‘ image.png详情请看 convert文档:http://www.imagemagick.org/script/command-line-processing.php

2021-10-14 19:46:20 109

转载 php json_decode解析失败及错误处理

一般情况下,获取到一段json内容,直接json_decode($content, true)就转成array来用了,很方便。但是,如果给你提供json内容的接口出了点问题,给的json不标准或是干脆有错误,那就要想办法来找出问题了。先看看json_encode的 php官方文档源码:http://cn2.php.net/manual/en/...失败时返回NULL<?php// $json = '{"a":1,"b":2,"c":3,"d":4,"e":5, "name":".

2021-10-14 19:19:20 106

原创 如何使用dockerfile添加用户

使用useradd而非交互adduser来添加用户。RUN useradd -ms /bin/bash vault以下命令不会创建user。USER vaultWORKDIR /usr/local/bin/vault参考:如何使用dockerfile添加用户?Docker 创建docker用户组,应用用户加入docker组_point0mine的博客-CSDN博客_docker groupLinux下创建用户和用户组_左撇子帕布-CSDN博客_linux 创建用户和用.

2021-10-12 22:02:08 23

原创 golang 获取上传文件的真实扩展名,类似于php的 get_mime_type 函数

package utilsimport ( "fmt" "os")/** * 获取图片真实扩展名 */func GetImgExt(file string) (ext string, mime string, err error) { var headerByte []byte headerByte = make([]byte, 8) fd, err := os.Open(file) if err != nil { return "", "", err } defer .

2021-10-12 21:47:26 16

原创 golang fmt 格式化打印 及 格式化不打印 的用法

fmt 字符串格式化package mainimport "fmt"type point struct { x, y int}func main() { // 格式化整型,使用`%d`是一种 // 标准的以十进制来输出整型的方式 // 有符号十进制整数(int)(%ld、%Ld:长整型数据(long),%hd:输出短整形。) fmt.Println("=====%d,输出十进制====") fmt.Printf("%d\n", 110)

2021-10-11 20:56:02 17

原创 8种超详细Web跨域解决方案

一、什么是跨域当a.qq.com域名下的页面或脚本试图去请求b.qq.com域名下的资源时,就是典型的跨域行为。跨域的定义从受限范围可以分为两种,广义跨域和狭义跨域。(一)广义跨域广义跨域通常包含以下三种行为: 资源跳转:a链接、重定向。 资源嵌入:<link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链。

2021-10-10 22:30:14 20

原创 fileinfo代替mime_content_type函数

php5.3.0以下要获得文件的mime类型,一般的方法是使用mime_content_type()方法,不过这个方法已经过时,所以最好使用fileinfo来代替。Linux环境下安装fileinfo拓展可以参考:​​​​​​php7 安装mysqli扩展遇到的坑及解决办法_JineD的博客-CSDN博客步骤都差不多,不展开细讲:  测试代码如下:// 来获得magic文件的绝对路径$magicFile = get_cfg_var('magic_mime.magic')...

2021-09-29 09:44:21 15

原创 Nginx 请求 PHP 文件 报 File not found 错误处理

这个错误很常见,主要有下面两种几种1. php-fpm 找不到 SCRIPT_FILENAME 里执行的php文件2.php-fpm 不能访问所执行的 php,也就是权限问题第一种情况可以在你的location php 里面添加当文件不存在时返回404而不是交给php-fpm进行处理location ~ \.php${...#文件不存在转404try_files $uri = 404;...}location ~ \.php$ { root .

2021-09-28 21:50:27 14

原创 php7 安装mysqli扩展遇到的坑及解决办法

一、安装步骤1、找到php7源码里找到ext目录, 安装ext目录下的mysqli注:源码包下载可查看我的另一篇博文:https://blog.csdn.net/JineD/article/details/111562127 centos7 安装php7.42、输入 /usr/local/php/bin/phpize3、在mysqli文件夹下执行 ./configure --with-php-config=/usr/local/php/bin/php-config --wi...

2021-09-27 11:30:41 40

原创 goLang 上传文件 以及 获取文件的名称、前缀、后缀

一、文件上传package mainimport ( "bytes" "fmt" "io" "io/ioutil" "mime/multipart" "net/http" "os" "path")func postFile(filename string, targetUrl string) error { bodyBuf := &bytes.Buffer{} bodyWriter := multipart.NewWriter(bodyBuf)

2021-09-26 20:06:01 17

原创 Swoft 2.x Rpc调用

Swoft框架的初始化Swoft初始化有六个步骤:ENV环境文件初始化 注解信息扫描收集 配置初始化 注册类到bean容器 收集事件监听器 启动console控制台,启动相应的服务官方文档而Rpc作为Swoft提供的基础模块之一,其初始化流程也与框架的初始化一致Rpc服务调用Rpc的本质也是一个请求的发送和处理,所以会有发送请求的Client和接收请求的Server,这两者在Swoft中都需要进行Bean容器的注册Rpc 服务初始化.

2021-09-24 11:04:05 22

原创 Redis 面霸篇:从高频问题透视核心原理

Redis 为什么这么快?很多人只知道是 K/V NoSQl 内存数据库,单线程……这都是没有全面理解 Redis 导致无法继续深问下去。这个问题是基础摸底,我们可以从 Redis 不同数据类型底层的数据结构实现、完全基于内存、IO 多路复用网络模型、线程模型、渐进式 rehash…...到底有多快?我们可以先说到底有多快,根据官方数据,Redis 的 QPS 可以达到约 100000(每秒请求数),有兴趣的可以参考官方的基准程序测试《How fast is Redis?》,地址:https

2021-09-22 15:50:24 18

原创 面试官:Redis用过是吧?那你讲讲Redis都有哪些监控指标?

监控指标性能指标: Performance 内存指标: Memory 基本活动指标:Basic activity 持久性指标: Persistence 错误指标: Error性能指标:Performance| Name| Description| -------- | -------- | -------- || latency |Redis响应一个请求的时间| instantaneous_ops_per_sec|平均每秒处理请求总数|hi rate(calculated)|缓存命

2021-09-22 14:29:44 23

转载 Redis中主、从库宕机如何恢复

1、什么是哨兵哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运行正常; 主数据出现故障后自动将从数据库转化为主数据库; 2、原理单个哨兵的架构:多个哨兵的架构:多个哨兵,不仅同时监控主从数据库,而且哨兵之间互为监控。多个哨兵,防止哨兵单点故障。3、环境当前处于一主多从的环境中:4、设置哨兵启动哨兵进程首先需要创建哨兵配置文件:vimsentinel.conf输入内容:.

2021-09-22 11:58:35 12

转载 GoLang mock网络测试

实际工作中的业务场景往往会比较复杂,无论我们的代码是作为server端对外提供服务或者还是我们依赖别人提供的网络服务(调用别人提供的API接口)的场景,我们通常都不想在测试过程中真正的建立网络连接。本文就专门介绍如何在上述两种场景下mock网络测试。httptest在Web开发场景下的单元测试,如果涉及到HTTP请求推荐大家使用Go标准库net/http/httptest进行测试,能够显著提高测试效率。在这一小节,我们以常见的gin框架为例,演示如何为http server编写单元测试。..

2021-09-16 21:30:35 25

转载 GoLang mock数据库测试

我们在开发中也会经常用到各种数据库,比如常见的MySQL和Redis等。本文就分别举例来演示如何在编写单元测试的时候对MySQL和Redis进行mock。go-sqlmocksqlmock 是一个实现sql/driver的mock库。它不需要建立真正的数据库连接就可以在测试中模拟任何 sql 驱动程序的行为。使用它可以很方便的在编写单元测试的时候mock sql语句的执行结果。安装gogetgithub.com/DATA-DOG/go-sqlmock使用示例这里使用的是g...

2021-09-16 21:28:39 35

转载 HashMap 大厂面试常问 21 道题

1:HashMap 的数据结构?A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>\[\] table;2:HashMap 的工作原理?HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry接口)实现,HashMap 通过 put & get 方法存储和获取。存储对象时,将 K/V 键值传给 put

2021-09-16 21:16:33 35

原创 Redis 唯快不破的秘密

Redis 全景图全景图可以围绕两个维度展开,分别是:应用维度:缓存使用、集群运用、数据结构的巧妙使用系统维度:可以归类为三高 高性能:线程模型、网络 IO 模型、数据结构、持久化机制; 高可用:主从复制、哨兵集群、Cluster 分片集群; 高拓展:负载均衡 Redis 系列篇章围绕如下思维导图展开,这次从《Redis 唯快不破的秘密》一起探索 Redis 的核心知识点。唯快不破的秘密很多人仅仅只是知道基于内存实现,其他核心的原因模凌两可。Red.

2021-09-14 16:51:12 35

转载 GoLang 单元测试基础

这是Go语言单元测试从零到溜系列教程的第0篇,主要讲解在Go语言中如何做单元测试以及介绍了表格驱动测试、回归测试,并且介绍了常用的断言工具。Go语言测试go test工具Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被go build编译到最终的可执行文件中。在*

2021-09-14 15:50:39 34

原创 windows 10 下运行 docker desktop 报错 cannot enable hyper-v service

刚装完最新版的 DockerDesktop ,启动时出现以下提示:首先在命令行中输入 systeminfo 检查验证硬件兼容性,然后检查“ Hyper-V 要求”部分,验证Windows中的硬件兼容性。如果所有列出的Hyper-V要求的值都为Yes,则系统可以运行Hyper-V下,如下图:同样需要四项均为“是”才符合运行Hyper-V虚拟机的要求。之后进入 bios 开启:注:不同的主板BIOS设置项不同,但大同小异。进入CPU Configura...

2021-09-13 11:29:53 82

原创 PHP json_encode 返回 Malformed UTF-8 characters, possibly incorrectly encoded 问题

Malformed UTF-8 characters, possibly incorrectly encoded这个错误一般就是utf-8编码中有些特殊中文转码乱码导致的。重新转一次utf-8就好了。mb_convert_encoding( $str, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' );其他:有时候sub_str()截取中文字符串也会报错,使用 mb_substr()代替...

2021-09-09 17:44:57 38

原创 linux 压缩 & 解压缩 文件或文件夹

tar打包成tar.gz格式压缩包# tar -zcvf renwolesshel.tar.gz /renwolesshel解压tar.gz格式压缩包# tar zxvf renwolesshel.tar.gz打包成tar.bz2格式压缩包# tar -jcvf renwolesshel.tar.bz2 /renwolesshel解压tar.bz2格式的压缩包# tar jxvf renwolesshel.tar.bz2zip压缩成zip格式#

2021-09-09 11:08:58 78

转载 logstash在Elasticsearch中创建的默认索引模板问题

背景在ELK架构中,使用logstash收集服务器中的日志并写入到Elasticsearch中,有时候需要对日志中的字段mapping进行特殊的设置,此时可以通过自定义模板template解决,但是因为logstash默认会向Elasticsearch提交一个名为logstash的模板,所以在定义logstash配置文件时有一些关键点需要注意。本文基于logstash-5.6.4和elastcisearch-5.6.4对需要注意的关键点进行列举。logstash的默认模板默认的logstash模

2021-09-08 21:04:26 45

转载 Nginx 提示 504 Gateway Time-out(The gateway did not receive a timely response from the...)解决办法

1 2 3 4 $r = new ReflectionClass($this); Zend_Debug::dump($r->getConstants(), "Constants"); Zend_Debug::dump($r->getProperties(), "Properties"); Zend_Debug::dump($r->getMethods(), "Methods");

2021-09-03 21:58:06 341

转载 swoft 与 laravel-swoole 框架选型对比,包括ab压测工具的使用、等待协程完成

一、导入数据1.通过目录导入数据:/usr/local/mongodb/bin/mongorestore -u graphics_mongo_user_write -p 'pass' -h 127.0.0.1 --port 20000 -d graphics /opt/graphics/ --authenticationDatabase admin

2021-09-01 09:34:03 272

原创 goLang 优化技巧

以下是官方给出解释:链接:https://docs.gitlab.com/ee/security/webhooks.htmlIf you have non-GitLab web services running on your GitLab server or within its local network, these may be vulnerable to exploitation via Webhooks.WithWebhooks, you and your project m..

2021-08-28 20:28:26 267

原创 Swoft2.x Task、协程 的使用

以下是官方给出解释:链接:https://docs.gitlab.com/ee/security/webhooks.htmlIf you have non-GitLab web services running on your GitLab server or within its local network, these may be vulnerable to exploitation via Webhooks.WithWebhooks, you and your project m..

2021-08-28 16:30:20 51

原创 swoft 协程 的使用

php是一门应用非常简单,开发效率极高的一门语言,其弱类型的变量能省去程序员大量的定义变量、类型转换等的时间和精力。它是一种适用于web开发的动态语言。1. php设计的原理和特点多进程模型:这样能做到进程间互相不受影响,对于进程的资源利用更快速、便捷 弱类型语言:和强类型语言C、C++、java等语言不同,php中变量的类型并不是一开始就确定的,他是在运行时才确定的,可以隐式或显式的对其进行类型转换,这就使其在开发中非常的灵活,程序员无需关注变量类型的问题 Zend引擎+ 组件(ext)的模式

2021-08-27 21:54:18 59

原创 20张图 详解 负载均衡

一、单选题(共29题,每题5分)1.PHP执行的时候有如下执行过程:Scanning(Lexing) - Compilation - Execution - Parsing,其含义分别为:A、将PHP代码转换为语言片段(Tokens)、将Tokens转换成简单而有意义的表达式、顺次执行Opcodes、将表达式编译成OpocdesB、将PHP代码转换为语言片段(Tokens)、将表达式编译成Opocdes、顺次执行Opcodes、将Tokens转换成简单而有意义的表达式C、将PHP代码转换为语

2021-08-27 17:04:54 74

原创 shell 脚本进阶,经典用法及其案例

在传统的web开发模式中,我们知道,每一次php请求,都要经过php文件从磁盘上读取、初始化、词法解析、语法解析、编译等过程,而且还要与nginx或者apache通信,如果再涉及数据库的交互,还要再算上数据库的握手、验权、关闭等操作,可见一次请求的背后其实是有相当繁琐的过程,无疑,这个过程也就带来了相当多的开销!当然,所有的这些资源和内存,在一次请求结束之前,都会得到释放。但是,swoole是常驻内存运行的。这有几点不同,我们分别了解下。在运行server之后所加载的任何资源,都会一直持续在内存中存

2021-08-27 16:46:02 41

原创 GoLang 代码编程规范

两周之前——爬虫的原理就不细说了,无非是通过种子URL来顺藤摸瓜,爬取出网站关联的所有的子网页,存入自己的网页库当中。但是,这其中涉及到一个小小的问题……URL去重方案第一版:HashSet创建一个HashSet集合,把每一个URL字符串作为HashSet的key插入到...

2021-08-27 09:39:08 45

原创 shell 中 ()、(())、[]、[[]]、{} 的作用

一、小括号,圆括号()1、单小括号 ()①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。②命令替换。等同于cmd,shell扫描一遍命令行,发现了(cmd)结构,便将(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。③用于初始化数组。如:array=(a b c d)2、双小括号 (( ))①整

2021-08-27 09:24:36 67

原创 以 工厂图画 通俗讲解 进程和线程

我们都知道,进程(process)和线程(thread)是操作系统最基本的几个概念,也面试官在操作系统部分最喜欢考察的问题之一。然而这两个概念一直比较抽象,不太容易形象化地理解和掌握。但是对于这个问题,周末在考古阮一峰老师的博客时却发现,他在2013年的一篇帖子中https://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html对于这两个概念就已经做了一个很清晰的对比和解释,而且相当地通俗易懂。相信读完一定会对进程和线程的理解有一个很

2021-08-26 22:09:37 53

原创 自学数据结构和算法的 9 大工具

Data Structure Visualization我们都知道数据结构和算法一个比较难以掌握的原因就是很难形象地在脑海中形成一个结构化的画面,尤其是当一些结构和算法比较复杂时,对人的想象能力有一定要求。Data Structure Visualization这个网站则提供了一种将数据结构和算法进行可视化的功能,并开发了交互式的动画展示,便于理解和掌握数据结构+算法。目前该网站已经把包括像列表、堆、栈、队列、树、哈希表、图、查找、排序、递归、动态规划等一系列主要的数据结构和算法都进行了可视

2021-08-26 21:54:58 63

原创 20 张图 详解 跳表!

跳跃链表及其应用是非常热门的问题,面试时也非常常问,深入了解其中奥秘大有裨益,不吹了,直接开始!跳跃链表的基本概念初识跳表跳跃列表是一种数据结构。它允许快速查询一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(log n),优于普通队列的O(n)。跳跃列表由威廉·普发明,发明者对跳跃列表的评价:跳跃链表是在很多应用中有可能替代平衡树而作为实现方法的一种数据结构。跳跃列表的算法有同平衡树一样的渐进的预期时间边界,并且更简单、更快速和使用更少的空间。这种数据结构是由W

2021-08-26 21:50:08 61

原创 浏览器缓存机制 / 前端标签中设置不缓存 / CDN缓存

先来个大体总结:一、概述浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种:感谢https://www.cnblogs.com/chengxs/p/10396066.html的好文1、HTTP请求(Request)报文,报文格式为:请求行 – HTTP头(通用信息头,请求头,实体头) – 请求报文主体(只有POST才有报文主体),如下图.

2021-08-16 11:31:21 657

navicat 连接mysql、mongodb工具

navicat 连接mysql、mongodb工具,可以方便快捷操作mysql 8版本、mongodb 4版本

2020-11-24

centos7 rpm安装yum所需要的包

centos7 rpm安装yum所需要的包,总共有20个, 打包整理好,方便有需要安装yum的用户,包里所有的资源都来自于网易镜像中心(http://mirrors.163.com/centos/7/os/x86_64/Packages/)

2020-12-11

elasticsearch 7.4.0 docker-compose文件

快速部署elasticsearch 7.4.0版本 单机三节点docker 容器,方便在本地开发环境部署

2020-11-13

dnmp.rar docker部署lnmp环境包

通过docker快速部署lnmp+redis环境,只要到文件根目录执行docker-composer up即可

2020-06-30

TabNumberIndicator.jar

jetbrain系列软件的一个插件,官方库的快捷键是Alt+数字切换标签页,因为个人习惯,我把它改成Ctrl+数字 切换标签页,分享给有需要又不会改源码的朋友。安装是在jetbrain软件的插件安装页面选择本地安装后在弹出的文件选择器中选择该文件安装重启即可

2020-06-30

changeWinKey.reg

通过该脚本,可以在Windowns系统下将左Alt键修改为Appskey键,将右边的Appskey键改成Ctrl键

2020-06-30

vim 如何将默认的Ctrl-f向下翻页的快捷键改成Ctrl-d?

发表于 2016-11-04 最后回复 2016-11-06

是否有phpstrom 插件可以在标签名前面添加序号?

发表于 2016-10-14 最后回复 2016-10-14

phpstorm 操作xml标签的快捷键有哪些

发表于 2015-05-22 最后回复 2016-10-14

$(".freight").html($(".freight").html().replace(reg, freight)); 更简洁的写法

发表于 2015-02-10 最后回复 2015-05-22

swf文件嵌入问题

发表于 2012-03-01 最后回复 2012-03-01

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

TA关注的人 TA的粉丝

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