自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DreamMo的博客

https://mojun.me

原创 office文件在线预览

需求背景    最近学妹她们那边有一个项目类似在线网盘的东西,支持文件上传保存。其中除了普通text文本以外,还有如office文件word、excel、ppt等文件,并且提供在线预览的功能。用户能够在线预览文件内容,并且分享预览链接出去的word不能下载到这个文件,不能暴露实际文件URL路径。她那边不知道怎么来处理这个问题,所以自然问了我一下。恰好之前这块我也做过一些这方面的项目,罗列几个处理方案。解决方案1.openoffice转化  

2020-06-15 11:06:27 1284 2

原创 https跳过证书校验底层原理

背景  大家可能遇到过爬虫或者curl某个https站点,由于站点TLS证书过期或者使用自签证书,curl或者浏览器校验不通过,导致不能正常访问。 所以类似什么Java中怎么跳过https证书校验,php怎么跳过,python怎么跳过等等问题全网遍地都是。 但是你知道跳过https证书底层到底干了什么事情呢? https不懂的同学可以先简单看我的一篇文章: http...

2019-11-26 18:05:17 5522

原创 K8S中Pod内部容器通信原理

1.docker容器网络模式1.1 默认bridge桥接网络   默认分配docker0网桥网段上的ip给容器, 每个容器的network namespace都是相互隔离的。docker自身生成一个veth pair(虚拟网卡对) 一端放在docker0网桥上, 一端放在容器内部。通过docker inspect 容器查看容器网络模式信息:网络详情:...

2019-11-21 11:50:59 5703

原创 使用Python实现Docker编程

    Docker引擎其实包括两部分内容,采用C/S架构。所以会包含一个client和server端,但是一般都是在本地操作所以有时时候没太感觉出来很慢的样子。其实和我们使用的mysql是一样的,默认mysql -H 没有填写IP地址,默认是连接本地的mysql服务的3306端口。但是指定了-H 和IP地址之后,大家发现也是可以远程操作数据库的。Docker服务端有一守护进程,默认使在/var/...

2018-03-08 11:48:10 23372

原创 画图工具draw.io的二次开发经验

最近公司使用到一个名为draw.io的开源画图工具,到github上去搜索就能够找到。能够在线实现画图,例如流程图,数据库的E-R图等等,功能十分强大。想在其功能的基础上去修改,然后和我们的系统耦合在一起协作使用,开始想到的那肯定就是修改源码,添加我们自己的功能。但是修改源码的过程并不是那么容易。刚开始我看了一下源都是JavaScript写的,而且是打包好的min....

2017-11-08 09:51:43 28421 26

原创 docker的通俗理解

自己买了个服务器,前不久搭建好的一个网站,想要再搞一个站点,无奈只能修改端口后,再部署另外一个站点。繁琐的配置运行环境,迁移网站,是否让你感觉到很繁琐?服务器不想用了,想搬迁到另外一台服务器去部署,先是拷贝原有数据,在新的服务器上又开始搭建环境进行部署,这些费时间的事情现在只需要几分钟就能完成,那就是docker技术。 docker通俗按照自己的理解来说,就是类似...

2016-11-08 14:12:26 25052

原创 2019安装k8s详细教程

前言学习k8s的第一步肯定是安装进行实操。但是对于生产环境搭建一个高可用的k8s集群其实还是有点挑战难度的,特别是非专业运维开发人员。因为要涉及到的方面很多,默认配置都不能用于生产环境,性能调优,安全验证等等都是必不可少的。对于入门者来说的话,第一步安装其实有时候已经把一些人挡在了门外。自己也是费了一点功夫,才搭建了在本地能测试的k8s集群,用来学习。其中遇到了一些坑,所以记录一下,希望能帮助...

2020-06-11 16:52:28 16059

转载 FastCGI协议内容

cgi或者fastcgi协议的定义: Webserver(web服务器软件如nginx httpd等)与真实后台处理请求的程序之间通信的一种约定规范 找了一篇文章把fastcgi协议讲得比较清楚,记录一下。 原文地址:https://www.cnblogs.com/itbsl/p/9828776.html#%E5%86%8D%E7%9C%8B-fastcgi-%E5%8D...

2020-04-27 14:56:35 2367

原创 采用xhprof扩展对PHP项目进行性能分析

背景  由于我们的项目是另外一个团队的server端,给他们提供的2个接口他们偶尔反应程序调用超时,他们设置httpClient的超时时间为10s。一般情况下来说我们程序一定要保证在5s以内就要返回response给客户端了,所以我们想分析一下我们的程序到底是哪个模块或者函数调用上耗时严重. 一般我们最容易想到的方法就是在某个方法前拿到开始时间戳,然后在方法执行完以后得出结束...

2020-04-09 21:40:45 2594

原创 git中rebase(变基)和merge(合并)区别

简介  以前用git基本上针对git flow以及基本的git操作命令基本上满足日常开发需求,其实也没必要过于深究,常用命令80-90%基本上满足我们正常使用了。 但是其实很多人,包括我自己,git的官方文档基本没扫完一遍,所以抽时间其实几个小时也就能看完的事情。 其中在合并branch的时候,网上有很多关于使用git rebase 还是 git merge有无数篇文章进...

2020-03-23 13:37:27 3222

原创 Protobuf数据交换格式

简介  ProtoBuf(Google Protocol Buffer)是由google公司用于数据交换的序列结构化数据格式,具有跨平台、跨语言、可扩展特性,类型于常用的XML及JSON,但具有更小的传输体积、更高的编码、解码能力,特别适合于数据存储、网络数据传输等对存储体积、实时性要求高的领域。以 .proto为后缀,有自己的编译器 protoc, protoc2 和 p...

2020-01-08 00:28:30 4745

原创 gRPC简介和实践

简介  gRPC是Google主导的一个高性能,跨语言的RPC(远程过程调用)框架。官网: https://grpc.io/  支持多种常见的流行编程语言,如C++ Java Node.js PHP Python等等。 其实从本质上来看到gRPC其实是基于使用protobuf做为数据传输格式,借助HTTP2协议通信做的一个RPC框架,只要任何语言实现了g...

2020-01-05 18:28:07 4795

原创 2020Jenkins学习笔记

背景​ DevOps其实是描述的是从开发人员push代码或者上线打tag发布新版本的时候,会经过一些列单元测试,集成测试,自动部署等等一系列步骤转化为自动化的一个过程。只要这些自动化脚本都做好了, 那么就节约了很多的物力和财力。 程序员只要关心自己的业务代码即可, 后面一些列繁琐的事情,打包,更新镜像等等都不用关心, 也无须关心,因为流程都是一样的,步骤也是一样的,就让脚本帮我们做就好了...

2019-12-09 16:09:44 4700

原创 ssh端口转发(隧道技术)

1.本地端口转发 假设有以下场景,本地客户端A, 远端服务器有B和C, B和C处于同一个内网,且 B上配置了公网ip,C只有内网ip。 那么现在存在一个需求, 我想让A能够访问到C上面部署的一个nginx(监听80端口)的服务。那么怎么解决这个问题? (前提: A能够发起ssh连接到B服务器上)。 如图所示,可以使用ssh提供的本地端口转发技术来实现。(红色箭头表示数据返回流...

2019-11-13 14:37:17 4977

原创 golang之gin框架学习笔记

golang很多web框架如beego echo 还有gin。 之前公司听同事说后面他们的项目使用gin去重构代码,顺带自己在学golang, 与其纠结选择学习哪个框架,既然公司有人在用,那他们应该是做了一些调查和分析决定的,所以就挑了gin。其实只要掌握一门web框架,其他框架学习起来上手也很快了。gin框架个人觉得上手是比较快, 个人喜欢前后端分离,所以gin专门用来写api接口即可,...

2019-11-03 22:06:04 4862

原创 lua入门与学习笔记

由于nginx采用异步非阻塞io模型, 可以高效的处理并发请求,nginx还可以加入一些模块,其中就包括lua模块。 这个模块非常强悍和轻巧,犹如瑞士军刀,小巧精悍。nginx在做反向代理以及web服务器,是拿到http第一手源数据,那么我们可以在nginx这一块针对例如url转发,头信息过滤校验, referer校验, 反向代理拦截,安全校验,网关,认证等等。。。。通过加入lua模块,...

2019-10-27 14:30:18 4752

原创 php源码逆向工程转化为UML类图

通过php源码导出uml类图能够方便我们查看整体项目的类结构,方便我们去阅读源码以及理解。找到一个项目, phuml使用php代码扫描php代码文件,通过extends implements以及注解等形式, 描绘出DOT格式的画图文件,再通过Graphviz软件将DOT图形文件转化为png图片格式,大致原理应该是这样的。 1.项目通过composer安装: https://pack...

2019-10-11 15:42:26 5351

原创 由于已经具备PHP基础转Golang学习笔记

golang近几年由于docker k8s等开源项目实在是火得不行,很多国内大厂也都有使用go语言对现有项目或者新项目进行使用。典型国内最早期的粉丝当属七牛云了,许式伟的<<Go语言编程>>这本书也是很多golang入门者的必备书籍。不过,就我个人而言,书籍主要还是以作为工具书或者查缺补漏来翻阅,学习的话自己找一些教程视频或者一些快速入门的网上教程看,感觉比直接看...

2019-09-12 00:55:11 5417

原创 Redis通信协议

1.前言  redis日常开发多多少少都有使用过。不过大多数都停留在get set等基本操作,存数据,取数据等简单操作。对于redis的通信协议基本上都没怎么留意过。了解相对底层的东西,有助于我们更好的使用redis以及排查错误。2.redis通信协议的基本内容  协议,无外乎就是信息内容的格式要client和server端遵守的某种规范。这个我们...

2019-07-02 23:25:08 11614

原创 ssh设置通过http代理连接远程主机

需求背景存在A B C三台主机, 由于安全因素或者其他,A不能直接与C通信,反之亦然。 但是存在B可以与A,C通信。 则现在需要在A上通过ssh, 假设B以及搭建好一个http代理,专门来代理ssh访问C的服务。具体方法分为2种常见做法: 1.通过软件 corkscrew作为proxy的客户端2.通过ncat作为proxy的客户端不过最终本质是一样的,ssh通过命令 ssh -o ...

2019-06-11 10:31:15 16312

转载 全网最详细解释memcached中的flags含义

前言复习memcached中,发现很多人对set/add 语法中设置的 flags参数理解不是很透彻, 大家人云亦云。 查资料从来不对别人的材料加以自己的理解写出来,那其实有毛用。百度出来的文章如出一辙,完全是同一篇文章。总是说flags参数来表示是否压缩数据。。。。我怀疑很多人也真实人云亦云,自己没有思考过。flags参数理解    flags这个参数其实是让客户端...

2019-05-22 22:04:57 12134

原创 关于linux实用命令学习以及重要知识点

前言本来这几天复习linux常用的命令,自己本来想写上一些记录的笔记。不过在github上搜到一个仓库,写得还挺全面的。和自己复习的内容所差无几,所以就没必要在博文中写出来了,重复同样的劳动,何况自己写得不比别人写得好到哪去。仓库地址: https://github.com/Nick233333/phper-linux-gitbook我的感悟linux里面一些命令以及知识点,有必要写...

2019-05-18 13:50:10 11781

原创 优化Dockerfile最佳实践

1.原文参考地址: https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/2.总结原文总结如下:对于其中"编写.dockerignore文件","合理调整COPY与RUN的顺序"不太好理解,其他的都还挺好理解。 该条本质上是对dockerfile在build时利用缓存的原因。实验: 执行相同的docke...

2019-05-01 23:35:23 13250

原创 Linux的I/O重定向执行结果解惑(执行顺序)

面试题常见面试会考到i/o重定向问题的时候,这个问题问倒了不少人,即使能回答上来的有些是靠猜的。网上看到一篇文章,博主基于作者的思想总结了一点感悟和技巧,来详细解释一下重定向最终执行过程。 如下面的面试题:问 一下哪个命令执行结果与其他三个不一样 ? 为什么?1.cmd > log 2>&12.cmd 2>&1 > log3.cmd &amp...

2019-04-26 13:08:48 12430

原创 搭建Harbor镜像(docker)私有仓库

1.搭建企业级别docker镜像私有仓库需求: 企业中需要在内网中搭建自己的私有docker仓库管理。虽然可以使用例如阿里云等公司提供的镜像仓库管理,但是这样走公网流量pull镜像十分浪费,而且速度肯定不比内网传输快,所以搭建自己私有仓库对镜像进行管理是十分必要的。目前比较流行的2中方法.1.使用官方dockerhub提供的Registry搭建2.使用Harbor搭建 github地址:...

2019-04-13 23:44:38 12661

原创 DOT语言画图工具

1.详细内容,借鉴以下原文https://blog.csdn.net/stormdpzh/article/details/146488272.个人见解使用DOT能够画出以一些简单的流程图,无向图,有向图等等。可以结合自己的项目做二次开发,特别是针对"图"的数据结构。可以画出节点之间的关系,节点状态等等。很简单的语法,半个小时没问题。 举个例子 假设有,有向图 G: ...

2019-04-01 17:39:43 13309

原创 实用phpstorm快捷键

列举了一下日常开发中phpstorm实用以及常用的快捷键。网上一大堆快捷键,实用的也那么几个,要是想查找更多快捷键,搜索一下就能找到了,就像学语文一下,会常用的文字即可,不懂再查字典。有些文章恨不得你把所有快捷键背下来。。。很是无语,有些你基本90%以上都用不到。 和你遇到生僻字是一样的道理。实用快捷键F2 # 查找发生语法错误的位置Ctrl+Alt+l # 格式...

2019-03-21 18:54:07 13576

原创 使用Google百度等搜索引擎的常用搜索技巧

原文地址: https://www.imooc.com/article/4071列举几个常用的技巧,日常够用。1.使用双引号包含关键词,实现准确完全匹配搜索例如: “李白” “李荣浩” “k8s”2.使用减号排除搜索结果例如: “狗” - 泰迪 (搜索狗,但是排除泰迪关键词)3. 同义词搜索例如: “南信大 ~大学”4.逻辑搜索例如: “南信...

2019-03-18 22:09:09 14909

原创 https与http区别以及https数据加密解密过程

  之前只是去了解了https零散的知识,只是大体知道比http安全。但是其中数据交互的来龙去脉,不是很清楚。借助今天的一篇文章总结一下自己的理解。原文可以参考: https://mp.weixin.qq.com/s/7rn4ruT2KemKRJRUkCwyfAhttps出现的背景大家都知道http协议是"明文"传输。 在互联网中,数据要从A到D一定会经过许许多多的网络路由器,http数据其...

2019-03-02 01:14:34 14864

原创 实用处理字符串的linux命令

trtr -d " " # 去除字符串里面的所有空格tr -d "\n" # 删除空行的文本tr -s "\n&am

2019-02-21 19:18:29 14477

原创 hexo搭建个人博客心得

什么是hexo?hexo是基于node.js做的一个静态文件生成工具。通过hexo可以将我们写好的markdown文件,生成可视化的html页面。对于程序员来说,写技术博客不需要花里胡哨的排版,简洁大方。详情可以查看github: https://github.com/hexojs/hexo搭建过程1. 安装node.js运行环境这个可以自行百度,网上教程一堆。我是基于docker...

2019-02-20 22:15:24 13850

原创 Dockerfile文件命令解释

几分钟就能掌握Dockerfile文件命令的含义:1.ARG version=1.0 # 传递过来的变量参数 默认值是1.0 在使用docker build --build-arg version=1.0(默认参数) 使用 ${ARG变量名} 来当做变量:例如 :ARG version=1.12FROM nginx:${version} # 如果ARG的version没有通过 ...

2019-01-31 17:01:29 14130

原创 docker-compose解惑

之前不是很理解docker-compose的用处。现在来想想,突然感觉茅塞顿开的感觉。之前有过docker基础,日常自己部署一些小站点,博客,或者学习之类的都有用到。都是一把梭,很简单的docker run 几个命令搞定了。用docker-compose感觉大材小用了。然后自己想想可以通过shell脚本来做一些自动化的事情,这个可能是初学者之后的一点领悟。但是后来你会发现通过shell来写一...

2019-01-29 22:41:00 14795

原创 学习Python的精品笔记

石墨文档地址:https://shimo.im/docs/fooucf8wa8EtAB32/ 「Python学习笔记」

2018-10-26 16:21:10 13962

转载 一句话理解正向代理和反向代理

 通俗解释就是:   1.正向代理需要客户端去配置代理信息,然后进行访问,充当一个类似访问"中间人"的角色,帮客户端获取数据。2.反向代理针对用户是"透明的",用户和正常访问网站一样,没有任何配置操作,根本就不知道这个代理的过程。反向代理处理正常和正向代理的功能类似以外,更多的用在内网服务器端的负载均衡。例如常见的反向代理服务器有Nginx,应该是很多人都听说过的。 参考文章...

2018-10-26 16:17:09 14009

原创 在线预览office文件

     通过微软公开的api接口,将文档的URL传入即可实现在线预览office文件,而不需要去下载文件。 同时,若是想做提供预览office办公软件的服务,直接调用接口即可,无需利用openoffice或者某些软件去转成pdf文件或者html文件。 不过带来的一个问题是,若是使用微软的预览接口,你的文档url地址将会被暴露,缺失所谓文档的安全性。若是想限制用户下载文件,这一点估计是做不到的,因...

2018-09-20 14:34:52 20244

原创 同步,异步,阻塞与非阻塞

      借鉴原文: https://www.jianshu.com/p/aed6067eeac9      文中说到最重要的一点就是作者很明确地对同步与异步,阻塞与非阻塞做了详细并且通俗,一语点破两者的关系,瞬间茅塞顿开。同步与异步(大白话说):  首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来说的。      同步:...

2018-08-09 14:24:45 13919

原创 axios的post后端无法接收到参数

最近在学习一下前端,http异步请求框架之前一直沿用jquery。突然发现axios在github上start数也是很牛,vue.js推荐使用axios。所以就拿过来看看。无外乎就是get  post请求等等,很容易上手。看一下文档 几分钟能写一个小demo测试出来。get请求完全是没有问题的,但是post很多人不光我遇到的问题就是传递参数给后端,但是后端接收不到参数。仔细一看http

2018-05-08 22:31:48 15779

原创 网站添加https的原因和DNS劫持

最近csdn头条出现"黑客通过DNS劫持,盗取以太坊用户的虚拟货币"的标题,点进去看了一下。之前也听过DNS劫持和http劫持的一些概念,但是没有和https联系过。这一下恍然大悟,之前看过数字签名,数字证书这些东西的概念,但是没有过多把这些联系起来。其实最简单的一个DNS劫持就是修改windows下的hosts文件的内容,最简单的一个劫持实例,当你在家要看电影的时候前一天还是好好的那个网站还能打...

2018-04-27 16:51:46 18221

原创 关于php扩展自己操作数据库操作框架的问题

      最近有一个特别的需求,需要把数据库原有的所有表都要加上一个channel字段???  这个需求看起来似乎很简单,没什么难度,最多写个迁移脚本加字段就可以了。还有特别注意的是,对于老数据的迁移,记得要进行分页处理操作,不能使用可怕的"SELECT  *  FROM  TABLE_NAME",因为你无法预测到数据量的大小,否则容易使内存爆掉。对数据进行分页处理才是最好的解决方案。以及在处理...

2018-04-08 09:36:12 14014 1

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