tmp

PAT 乙级 1037

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-03 00:13:40
题目 题目地址: PAT 乙级 1037 题解 本题 有两个版本的代码,初版因为种种问题写得比较繁琐,具体的分析见后文,更新的之后的版本相对来说要好很多,代码也比较清晰简洁。 初版的代码主要有如下几方面的问题: 1. 代码繁琐,把简单的问题复杂化。 2. 刷题一直在用C++,虽说C和C++相似,但是思路一直在框定在C++的范围内,不够灵活。 下面就具体代码进行分析: 代码 1 #include <iostream> 2 #include <string> 3 #include <cmath> 4 using namespace std; 5 6 struct Data { 7 string str; 8 int g; 9 int s; 10 int k; 11 int Q; 12 }; 13 14 int str2int(string s) { 15 int num = 0; 16 int cnt = 0; 17 for (int i = s.size() - 1; i >= 0; i--) { 18 num += (int(s[i]) - 48) * pow(10, cnt); 19 cnt++; 20 } 21 return num; 22 } 23 24 void str2num(Data &s) { 25 int cnt = 0, loc = 0; 26 for (int

【01字典树】hdu-5536 Chip Factory

老子叫甜甜 提交于 2020-04-02 14:15:48
【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=5536 【题意】 求一个式子,给出一组数,其中拿出ai,aj,ak三个数,使得Max{ (ai+aj) ^ ak } 【题解】 其实这里就需要大家做一个删除的操作; 类似于dfs的恢复现场的操作即可。 【代码】 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N = 1e5+10; 6 int Son[N*31][2]; 7 int a[N],idx; 8 int Cnt[N*31]; 9 void Insert( int x ){ 10 int p = 0 ; 11 for(int i=30;~i;i--){ 12 int t = x >> i & 1 ; 13 if( !Son[p][t] ){ 14 Son[p][t] = ++idx; 15 } 16 p = Son[p][t]; 17 Cnt[p] ++ ; 18 } 19 } 20 void Delete( int x ){ 21 int p = 0 , tmp ; 22 for(int i=30;~i;i--){ 23 int t = x >> i & 1 ; 24 if(

ES6学习(1)

北城余情 提交于 2020-04-02 08:09:28
let 和 const 命令 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。for循环的计数器,就很合适使用let命令。 下面的代码如果使用var,最后输出的是10。 var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10 上面代码中,变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i。也就是说,所有数组a的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是10。 如果使用let,声明的变量仅在块级作用域内有效,最后输出的是6。 var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 6 变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。你可能会问,如果每一轮循环的变量i都是重新声明的,那它怎么知道上一轮循环的值

tar 命令详解 / xz 命令

帅比萌擦擦* 提交于 2020-04-01 09:08:10
]# tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。 -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!    例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成    『 tar -zcvPf tfile sfile』才对喔! -p :使用原文件的原来属性(属性不会依据使用者而变) -P :可以使用绝对路径来压缩! -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中! --exclude FILE:在压缩的过程中,不要将 FILE 打包! 范例: 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar [root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!

shutil模块

独自空忆成欢 提交于 2020-04-01 06:04:04
shutil模块 高级的 文件、文件夹、压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中 1 import shutil 2 3 shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w')) shutil.copyfile(src, dst) 拷贝文件 1 shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在 shutil.copymode(src, dst) 仅拷贝权限。内容、组、用户均不变 1 shutil.copymode('f1.log', 'f2.log') #目标文件必须存在 shutil.copystat(src, dst) 仅拷贝状态的信息,包括:mode bits, atime, mtime, flags 1 shutil.copystat('f1.log', 'f2.log') #目标文件必须存在 shutil.copy(src, dst) 拷贝文件和权限 1 import shutil 2 3 shutil.copy('f1.log', 'f2.log') shutil.copy2(src, dst) 拷贝文件和状态信息 1 import shutil 2 3 shutil

告警系统邮件引擎、运行告警系统

一曲冷凌霜 提交于 2020-03-30 11:47:48
告警系统邮件引擎 邮件首先用到mail.py之前多次用到所以直接把以前的拷贝过来,如果没有直接到https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py下载 拷贝mail.py 拷贝完mail.py还不算完成,因为最核心的地方不是mail.py而是mail.sh。因为在所有的子脚本中,用到的都是mail.sh。这个mail.sh他的作用是 编辑mail.sh [root@100xuni1 mail]# vim mail.sh log=$1 t_s=`date +%s` t_s2=`date -d "2 hours ago" +%s` if [ ! -f /tmp/$log ] then echo $t_s2 > /tmp/$log fi t_s2=`tail -1 /tmp/$log|awk '{print $1}'` echo $t_s>>/tmp/$log v=$[$t_s-$t_s2] echo $v if [ $v -gt 3600 ] then ./mail.py $1 $2 $3 echo "0" > /tmp/$log.txt else if [ ! -f /tmp/$log.txt ] then echo "0" > /tmp/$log.txt fi nu=`cat

第二周作业

≡放荡痞女 提交于 2020-03-30 01:06:26
1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 linux常用文件管理命令有: ls: 列出指定目录下的内容 用法: ls ls -a 显示所有文件,包括隐藏文件 ls -l 长格式列表 ls -d查看目录自身而非其内部的文件列表 ... cd:进入指定目录 用法: cd /PATH/TO/FILE cd - 切换回上一次工作目录 cd ~ 切换回家目录 cd ..切换回上一层目录 pwd:打印当前工作路径 用法: pwd -P打印实际路径,而非链接路径 mkdir:创建目录 用法: mkdir [OPTION]... DIRECTORY... mkdir -m MODE DIRECTORY 设置目录权限 mkdir -p DIRECTORY 自行创建上N级所需目录 cp:复制命令 用法: 单个源文件复制: cp [OPTION]... [-T] SOURCE DEST 多个源文件复制: cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... 如果来源文件有多个,则目的文件一定要是『目录』 rm:删除命令 用法: rm [OPTION]... FILE... rm -r FILE...递归删除 rm -f FILE...强制删除 建议少用rm命令,用mv命令替代

hadoop中namenode启动失败

末鹿安然 提交于 2020-03-29 05:18:08
jps发现namenode启动失败   每次开机都要重新格式化一下namenode才可以   其实问题出现自tmp文件上,因为每次开机就会被清空,所以现在我们配置一个tmp文件目录。   如果之前没有配置过,默认是在 /tmp 根目录下的tmp文件下,我的tmp没啥重要文件所以在配置之前,把里面的文件清空了 首先创建一个tmp目录,我是在/home/hadoop中创建了一个hadoop_tmp目录   sudo mkdir /home/hadoop/hadoop_tmp   然后去hadoop安装目录下的etc/hadoop/core-site-xml文件,加入一下节点 <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop_tmp</value> </property>   然后,重新格式化namenode   hadoop namebode -format   然后重新启动hadoop   start-all.sh   执行jps就看到namenode了 -------------------------------------------------------------------- 2、若是namenode挂了可以单独启动   hadoop-daemon.sh start namenode  

字符串解码

放肆的年华 提交于 2020-03-27 11:25:56
2020-03-27 字符串解码 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。 示例: s = "3[a]2[bc]", 返回 "aaabcbc". s = "3[a2[c]]", 返回 "accaccacc". s = "2[abc]3[cd]ef", 返回 "abcabccdcdcdef". 题解: 思路1: 递归 暴力的一层一层解开[] var decodeString = function (s) { let fn = (k, str) => { let result = ''; // 要返回的字符串 let l, r; // 记录左右括号的位置 while (str.indexOf('[') > -1) { // 当当前字符串还有[时 继续处理字符串 let tmp = 1; // 临时变量 记录当前是否找到闭合的[] for (let i = 0; i < str.length; i++) { // 循环字符串

1385. Find the Distance Value Between Two Arrays

倖福魔咒の 提交于 2020-03-27 03:26:49
Given two integer arrays arr1 and arr2 , and the integer d , return the distance value between the two arrays . The distance value is defined as the number of elements arr1[i] such that there is not any element arr2[j] where |arr1[i]-arr2[j]| <= d . Example 1: Input: arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2 Output: 2 Explanation: For arr1[0]=4 we have: |4-10|=6 > d=2 |4-9|=5 > d=2 |4-1|=3 > d=2 |4-8|=4 > d=2 For arr1[1]=5 we have: |5-10|=5 > d=2 |5-9|=4 > d=2 |5-1|=4 > d=2 |5-8|=3 > d=2 For arr1[2]=8 we have: |8-10|=2 <= d=2 |8-9|=1 <= d=2 |8-1|=7 > d=2 |8-8|=0 <= d=2 Example 2: Input: arr1 =