root

Centos 6.5 Apache服务安装

不想你离开。 提交于 2020-03-14 08:22:26
Apache是什么:   Apache HTTP Server(简称Apache)是Apache软件基金会的一个高性能、功能强大、稳定可靠、又很灵活的开发源代码的web服务软件,对linux的支持相对好,有很多产品可以支持ssl技术,支持多个虚拟主机,到目前为止,市场占有率44.9%,世界上很多注明的网 站如百度、阿里、淘宝、亚马逊、雅虎等都有在使用apache服务,它的成功之处主要在于他的开源、有一支开发的开发队伍、支持跨平台的应用(几乎可以在所有的windows、linux、unix系统运行)以及它的可移植性等是当前互联网最流行的web服务端软件之一。   Apache源于NCSA httpd服务,经过多次修改,成为世界上最流行的web服务器软件之一,Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修复原来的缺陷,才成为我们今天使用的安全稳定的web服务器。 注: 以上web serve排行信息来源于 https://w3techs.com/technologies/overview/web_server/all Apache的特点及应用场合: 优点: 功能强大 配置简单 速度快 应用广泛 性能稳定可靠 可做代理服务器或负载均衡来使用 应用场合: 使用apache运行静态html网页

AC自动机算法详解(入门)

空扰寡人 提交于 2020-03-14 04:20:13
AC自动机算法详解 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。 如果你对KMP算法和了解的话,应该知道KMP算法中的next函数(shift函数或者fail函数)是干什么用的。KMP中我们用两个指针i和j分别表示,A[i-j+ 1..i]与B[1..j]完全相等。也就是说,i是不断增加的,随着i的增加j相应地变化,且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前 j个字符,当A[i+1]≠B[j+1],KMP的策略是调整j的位置(减小j值)使得A[i-j+1..i]与B[1..j]保持匹配且新的B[j+1]恰好与A[i+1]匹配,而next函数恰恰记录了这个j应该调整到的位置。同样AC自动机的失败指针具有同样的功能,也就是说当我们的模式串在Tire上进行匹配时,如果与当前节点的关键字不能继续匹配的时候,就应该去当前节点的失败指针所指向的节点继续进行匹配。 看下面这个例子:给定5个单词:say she shr he her

LeetCode 226. Invert Binary Tree

北慕城南 提交于 2020-03-13 20:54:51
226. Invert Binary Tree(翻转二叉树) 链接 https://leetcode-cn.com/problems/invert-binary-tree 题目 翻转一棵二叉树。 示例: 输入: 4 / 2 7 / / 1 3 6 9 输出: 4 / 7 2 / / 9 6 3 1 备注: 这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。 思路 简单题目,对于每一个结点,都交换左右子节点,然后交换完整棵树就结束了。设置一个临时结点,然后递归即可。 代码 public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public TreeNode invertTree(TreeNode root) { if (root != null) { TreeNode temp = root.left; root.left = root.right; root.right = temp; if (root.left != null) { invertTree(root.left); } if (root.right

Shell脚本之awk详解

三世轮回 提交于 2020-03-13 14:08:18
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS

MySQL——用户与密码

余生颓废 提交于 2020-03-13 07:55:11
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改: grep 'temporary password' /var/log/mysqld.log #查看默认密码 set password for 'root'@'localhost'=password('Password'); #修改用户密码 查看当前登录用户: select user(); 查看用户: select host,user from mysql.user; #8.0版本 用户添加和授权 #8.0以前版本 GRANT ALL PRIVILEGES ON *.* TO `mike`@`%` IDENTIFIED BY '000000' WITH GRANT OPTION; #8.0以后版本 CREATE USER 'zabbix'@'%' IDENTIFIED BY '123456'; #创建一个用户 GRANT ALL ON zabbix.* TO 'zabbix'@'%' WITH GRANT OPTION; #授予zabbix的远程登录权和zabbix远程访问的权限。 删除用户 Delete FROM user Where User='zabbix' and Host='localhost'; #5.7版本

Linux查找–find命令

人走茶凉 提交于 2020-03-13 07:20:55
find命令的格式 find pathname -options [ -print -exec -ok ...] pathname #是find命令所查找的目录路径,例如.表示当前目录,/表示根目录 -print #表示find命令将匹配的文件输出到标准输出中 -exec #表示find命令对匹配的文件执行该参数给出的shell命令。相应命令的形式为 ‘cmd’ {} \; -ok #它的作用和-exec一样,只是需要用户交互,更安全 find命令的选项 -name #按照文件名查找文件 -perm #按照权限查找文件 -prune #使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略 -user #按照文件属主来查找文件 -group #按照文件数组来查找文件 -mtime -n +n #按照文件的更改时间来查找文件 -n 表示从此刻算起,文件的更改是在n天以内 +n 表示文件的更改时间是在n天以前 find命令还有-atime和-ctime选项,和-mtime选项的时间规定类 似 -nogroup #查找无有效属组的文件,即该文件所属的组在/etc/groups中不存在 -nouser #查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在 -newer file1 ! file2

乌班图ssh

谁说胖子不能爱 提交于 2020-03-12 21:40:50
ubuntu下允许root用户ssh远程登录 (2011-07-22 10:19:42) http://www.360doc.com/content/14/0601/12/7385274_382738147.shtml SSH服务器,可以通过SSH协议来访问远程服务器,代替telnet和ftp。但是ubuntu默认是不启用root用户也不允许root远程登录的。所以需要先启用root用户 启用root用户:sudo passwd root //修改密码后就启用了。 安装OpenSSH server: 1. 使用apt命令安装openssh server $ sudo apt-get install openssh-server 2. 可以对 openssh server进行配置 $ sudo vi /etc/ssh/sshd_config 找到PermitRootLogin no一行,改为PermitRootLogin yes 3. 重启 openssh server $ sudo service ssh restart 4. 客户端如果是ubuntu的话,则已经安装好ssh client,可以用下面的命令连接远程服务器。 $ ssh xxx.xxx.xxx.xxx 如果是windows系统的话,可以使用SSH Secure Shell等ssh软件进行远程连接。 来源: https

剑指offer- 求树的深度

冷暖自知 提交于 2020-03-12 13:42:15
题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路 用递归。找到最长的路,相当于 加上当前的根节点,然后从左右子树中选择出最深的路。 # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def TreeDepth(self, pRoot): if pRoot: return self.getPathLength(pRoot,0) else: return 0 def getPathLength(self,root,length): if root: length+=1 length = max([self.getPathLength(root.left,length),self.getPathLength(root.right,length)]) return length 下面这个题类似 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路 平衡二叉树的定义,左右子树深度差值不能超过1,而且左右子树都是平衡二叉树 所以还是用递归。递归过程中发现左右子树深度差值超过1了

zabbix数据库备份

丶灬走出姿态 提交于 2020-03-12 13:40:58
#zabbix数据库备份 [root@zabbix-server script]# cd /server/script [root@zabbix-server script]# ll 总用量 12 -rwxr-xr-x 1 root root 124 3月 19 09:24 zabbix_db_del.sh -rwxr-xr-x 1 root root 89 3月 19 09:15 zabbix_db_to_rsync-server.sh -rwxr-xr-x 1 root root 355 3月 19 09:00 zabbix_mariadb_backup.sh #zabbix数据库备份 [root@zabbix-server script]# cat zabbix_mariadb backup.sh br/>#!/bin/bash username=root password=hotdoor@123 File=zabbix date '+%Y-%m-%d' .sql mysql -u$username -p$password -e "show databases" /usr/bin/mysqldump -u$username -p$password --all-databases >/data/zabbix-backup/$File if [ $? -eq 0 ];then

leetcode_9:二叉树

独自空忆成欢 提交于 2020-03-12 08:10:38
树 二叉树的层次遍历 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]。 思路: 二叉树有四种形态,单节点,只有左子树,或者只有右子树,或者左右子树都存在,所以需要把每一层的节点数目记录下来。数据结构选择队列,先进先出。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode*> Q; vector<vector<int>> res; int index = 0; if(root){ Q.push(root); index++; } while(!Q.empty()){ vector<int> Array; int cnt = 0; while(index--){