Docker LNMP环境搭建

本文介绍如何使用Docker容器,快速部署LNMP环境。 最终完成的环境我们称为:DNMP(即 Docker + Nginx + MySQL + PHP)。 最终实现一键部署LNMP环境的目的,该环境特点: 完全开源 支持多版本PHP切换(PHP5.4、PHP5.6、PHP7.2...) 支持绑定任意多个域名 支持HTTPS和HTTP/2 PHP源代码位于host中 MySQL data位于host中 所有配置文件可在ho…

手把手编写PHP MVC框架实例教程

1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式。 MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 PHP中MVC模式也称Web MVC,从上世纪70年代进化而来。 MVC的目的是实现一种动态的程序设计,便于后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可…

MurmurHash2 哈希算法碰撞引起的Redis DDos 攻击漏洞

概要信息: 在Martin Bosslet 2012年的这篇文章中,作者提到MurmurHash2算法被发现可以稳定构造碰撞函数,该哈希函数及其变形被CRuby, JRuby, Rubinius, Redis等开源组件使用。本文是基于Martin Bosslet的发现继续挖掘的结果,在此对Martin Bosslet表示感谢。原文中作者的碰撞函数是基于Ruby完成的,这里将发布该碰撞函数的Python版本…

C语言函数如何返回数组?

首先,看如下的一段C代码,请问这样能正常返回数组吗? #include <stdio.h> int* fun() { int arr[100]; /* 操作 arr[] */ arr[0] = 10; arr[1] = 20; return arr; } int main() { int* ptr = fun(); printf("%d %d", ptr[0], ptr[1]); return 0; } 警告: In function 'int* fun()': 6:8: warning: address of local variable 'a…

可视化视图打印树结构Java版

树是数据结构中非常重要的一部分,所有讲到数据结构和算法的书籍,都会讲到树。 那么,给定一个根节点,如何能够打印出完整的树结构呢? 这里说的打印,不只是像前序、中序和后序遍历中打印节点内容,我们要打的是整个树的结构。 如下是一段实现打印完整树结构的Java代码: package tree; /** * 以可视化视图打印树结构 */ public class…

MacOS brew cask安装VirtualBox遇到的问题

问题一:Cask 'virtualbox' is already installed. 如果不是通过Homebrew安装的virtualbox,在使用brew cask install virtualbox安装virtualbox的的时候,会提示: Warning: Cask 'virtualbox' is already installed. 那么就需要重新安装virtualbox,命令: brew cask reinstall virtualbox 如果还不巧,你的virtualbox刚好在运行中,…

Kubernetes(k8s)完整安装教程

本文是一篇手把手指导的Kubernetes安装和运行教程,通过本文,您可以在Windows、Linux或MacOS系统中打造一个完整的本地Kubernetes集群环境。 我们会用下面的工具来运行本地的Kubernetes集群: Docker for MacMinikubevirtualboxkubectl 1 安装 如果您的系统是Mac,请提前安装 Homebrew 包管理工具及其Cask 扩展,Cask扩展安装方式:bre…

Scrapy的remove_tags_with_content方法无法删除img标签?

Scrapy爬取的数据有时候会做清理,把不需要用的标签都清除掉。 其中remove_tags和remove_tags_with_content是比较有用的内置方法。 一个是去除标签本身,一个是去除标签及标签中的内容。 使用方式: from scrapy.utils.markup import remove_tags, remove_tags_with_content content = remove_tags(content, ('a',)) content = remove_…

MySQL查找和替换HTML DOM标签

有如下一个html字符串保存在mysql数据库中: <div class="content"> <p>文本</p> <figure>广告<img src="a.jpg" /></figure> <p>文本</p> </div> 现在要从数据库数据中删除中间的广告标签,如何用mysql语句实现? 我们要用到两个主要函数:LOCATE和INSERT。 第1步 一句mysql查找 首先,如果我们用一句mysql…

Flutter自动换行和两列布局

Row 和 Column 是 Flex 组件,是无法滚动的,如果没有足够的空间,flutter就提示溢出错误。 这种情况下,Expanded 或 Flexible 组件可用作长文本的自动换行。 在 Flutter文档中 虽然没有明确说明,但是在主轴上如有内容超出空间, Expanded 和 Flexible 会自动换行到纵轴。 1 起源 以下一步步来理解。 如下的场景: class MyApp extend…

Flutter ListView 分页加载更多效果

对于REST API接口,大部分情况下都得处理分页问题。 分页可以让我们把大量数据分割成一个个小段,分次加载。这样可以有效避免因为一次load全部数据而导致客户端变慢的问题。 本文介绍Flutter ListView组件的分页实现,数据来源于HTTP请求。当用户下拉时,APP自动加载更多数据。 1 创建 Stateful Widgets 首先,要为 ListView 绑定为 St…