root

文本处理 awk

微笑、不失礼 提交于 2020-02-27 08:46:59
======================================================== 一、awk简介 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个 或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix 下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。 awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定 模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出( 屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字 母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的 GNU版本,它提供了Bell实验室和GNU的一些扩展。 二、awk的两种形式语法格式 awk [options] 'commands' filenames awk [options] -f awk-script-file filenames ==options: -F 定义输入字段分隔符,默认的分隔符是空格或制表符(tab) ==command: BEGIN{} {} END{}

免安装版Tomcat6.0启动方法

和自甴很熟 提交于 2020-02-27 04:37:37
简介:web应用,供浏览器访问的的程序。由静态web资源(js/html/css)和动态web资源组成. 1.tomcat需要jvm支持(相当一个java程序)需要配置java的path. (会自动查找JAVA_HOME,CATALINA_HOME环境变量的值,必须配置,或在startup.dat中指定, 详情 ) 2.端口:http访问默认端口是80,访问可以不写端口就是此端口。 查看哪些端口被占用,dos: netstat -ano //注意不是netstart 关闭端口: 可以通过关闭进程,有些需要关闭服务才行。 tomcat的默认端口是8080,修改默认在\conf\server.xml文件中修改。 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 3.tomcat启动见: 免安装版Tomcat6.0启动方法 4.tomcat的目录介绍: 注意:特别log目录,当启动tomcat出现错误一闪关闭,通过查看log,查找原因显得极其有用。 5.虚拟目录映射: 让web项目供外界访问,需要将web项目所在路径交给web服务器管理。这个过程就是虚拟路径映射。【多用于实际工作中】 (目的:tomcat服务器的安装路径文件可能没有权限访问修改

树-102. 二叉树的层次遍历-PYTHON

一笑奈何 提交于 2020-02-27 04:04:34
迭代法: # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution ( object ) : def levelOrder ( self , root ) : """ :type root: TreeNode :rtype: List[List[int]] """ res = list ( ) if not root : return res stack = list ( ) stack . append ( root ) level = 0 while stack : res . append ( [ ] ) count = len ( stack ) for i in range ( count ) : tmp = stack . pop ( 0 ) res [ level ] . append ( tmp . val ) if tmp . left : stack . append ( tmp . left ) if tmp . right : stack . append ( tmp . right ) level +=

mysql 8.0 用户修改为简单密码

好久不见. 提交于 2020-02-27 03:55:46
os: centos 7.4 db: mysql 8.0.19 版本 # cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) # # mysql -h localhost -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.19 Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select version(); +-----------+ | version()

MySQL8.0 修改root密码

拥有回忆 提交于 2020-02-27 03:54:28
MySQL 5.7 的版本,因为在user表中没有password字段,一直使用下边的方式来修改root密码 use mysql; update user set authentication_string = password(“root”) where user = “root”; 现在要用MySQL8.0.11版本,装好MySQL后用上边方法修改密码,一直报错。后来去掉password()函数后,没有报错,但是输入密码时不对。 查阅后才知道在mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码,而authentication_string字段下只能是mysql加密后的41位字符串密码。所以需要用一下方式来修改root密码: ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassword'; MySql 从8.0开始修改密码有了变化,在user表加了字段authentication_string,修改密码前先检查authentication_string是否为空 1、如果不为空 use mysql; update user set authentication_string='' where user='root';--将字段置为空

Linux下MySQL忘记密码

不问归期 提交于 2020-02-27 02:56:24
1、前沿 今天在服务器安装 mysql 之后,登录发现密码错误,但是我没有设置密码呀,最后百度之后得知, mysql 在5.7版本之后会自动创建一个初始密码。 报错如下: [root@mytestlnx02 ~]# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 2、检查MySQL服务是否启动 先检查MySQL服务是否启动,如果启动,先关闭MySQL服务。 //查看mysql服务状态 [root@mytestlnx02 ~]# ps -ef | grep -i mysql root 22972 1 0 14:18 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql mysql 23166 22972 0 14:18 pts/0 00:00:00 /usr/sbin/mysqld --basedir=/usr -

94. Binary Tree Inorder Traversal

不羁的心 提交于 2020-02-27 01:23:57
Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3} , 1 \ 2 / 3 return [1,3,2] . Note: Recursive solution is trivial, could you do it iteratively? 同样用栈做,如果当前元素不为空,则将当前元素放入栈,并向左遍历,否则的话访问当前元素,访问右子树。 还有种空间复杂度为O(1)的做法,叫做Morris Traversal. /** * Definition for binary tree * public class TreeNode { *    int val; *    TreeNode left; *    TreeNode right; *    TreeNode(int x) { val = x; } * } */ public class Solution {   public List<Integer> inorderTraversal(TreeNode root) {     List<Integer> list = new ArrayList<>();     Stack<TreeNode> stack

应急响应

China☆狼群 提交于 2020-02-27 01:16:04
什么是应急响应 PDCERF模型 P (Preparation准备) D (Detection诊断) C (Containment抑制) E (Eradication根除) R (Recovery恢复) F (follow-up跟踪) 其实就是为了快速定位问题点,快速解决问题原因 应急工具: ls, ifconfig , ps ,top busybox webshell 检查。病毒查杀 诊断:CPU 占用 -> 挖矿 阻断: 比如拔网线 根除: 黑客如何攻进来的,利用什么漏洞,在服务器中做了什么,清除后门,webshell等 恢复,监控: 应急报告 BusyBox BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。 运维人员开始top、ps等未查找到异常进程是由于该病毒涉及到 Linux动态链接库预加载机制, 是一种常用的进程隐藏方法,而系统的ls,ps等命令已被通过so库的preload机制被病毒劫持。 而busybox是静态编译的,不依赖于系统的动态链接库,从而不受ld.so.preload的劫持,能够正常操作文件。 BusyBox下载 cd /bin/ wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox chmod 755 busybox 使用: busybox top #

linux crontab 定时任务 解压文件 流程 详解

别说谁变了你拦得住时间么 提交于 2020-02-27 00:15:26
注:此环境基于centOS7 第一步:查看crontab是否开启 service crond status 确保处于启动状态 第二步:创建tar包备份文件夹 mkdir /root/aa/backuptar 第三步:编写shell脚本 vim /root/aa/dealtar.sh 内容为: #!/bin/sh cd /root/aa find /root/aa -maxdepth 1 -type f -name "*.tar"|xargs -i sh -c 'tar vxf {} && mv {} /root/aa/backuptar && rm -rf {}' && echo $(date) success! >> /root/aa/tar.log 保存即可 脚本内容解释: find 要查找的文件目录 -maxdepth 1 就是只查找/root/aa当前目录的,如果aa下还有文件夹,则忽略,如果值为2的话,就往下查两级(假如/root/aa/bb,aa目录下和bb目录下符合要求的都会查出来)-type f 代表类型是文件 -name "*.tar" 代表名称以点tar结尾 | 竖线为管道符 xargs(xargs命令是给其他命令传递参数的一个过滤器) -i(默认替换字符为{}) sh -c 批量执行命令(把字符串当成命令执行)tar vxf {}

二叉搜索树转换成单链表

穿精又带淫゛_ 提交于 2020-02-26 15:43:59
题目概述 二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。 思路 BST的半线性结构转换成线性结构,其实就是 中序遍历 而已。 /** * 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: TreeNode* convertBiNode(TreeNode* root) { if (root == nullptr) return root; std::stack<TreeNode*> stack; // 中序遍历需要的栈 while(root) { stack.push(root); root = root->left; } TreeNode* newHead = stack.top(); // 最左的那棵叶节点即为单链表头结点 while(!stack.empty()) {