月度归档: 2021 年 7 月
258. 各位相加(JS实现)
260. 只出现一次的数字 III(JS实现)
263. 丑数(JS实现)
IDEA快捷键-Mac
1、按住Command,点击相应类名/接口名:进入相关类所在文件
例如,按住Command后点击Collection,自动打开Collection.java文件
2、按住Command+f,在当前文件打开字符串搜索功能
3、按住Command+O,查找类文件
4、按住Command+U,光标所在方法/变量的超类/接口文件(尝试失败,原因:?)
NYOJ 苹果
苹果
- 描述
- ctest有n个苹果,要将它放入容量为v的背包。给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱*大值。
- 输入
- 有多组测试数据,每组测试数据*行为2个正整数,分别代表苹果的个数n和背包的容量v,n、v同时为0时结束测试,此时不输出。接下来的n行,每行2个正整数,用空格隔开,分别代表苹果的大小c和价钱w。所有输入数字的范围大于等于0,小于等于1000。
- 对每组测试数据输出一个整数,代表能放入背包的苹果的总价值。
-
3 3 1 1 2 1 3 1 0 0
-
2
#include <iostream>
#include <cstring>
using namespace std;int main()
{
int w[1005],v[1005],dp[1005];
int i,j;
int n,Max;
while(cin>>n>>Max)
{
if(!n && !Max)
{
break;
}
for(i=0;i<n;i++)
{
cin>>w[i]>>v[i];
}
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
{
for(j=Max;j>=w[i];j–)
{
if(dp[j]<dp[j-w[i]]+v[i])
{
dp[j]=dp[j-w[i]]+v[i];
}
}
}
cout<<dp[Max]<<endl;
}
return 0;
}
输出
样例输入
样例输出
Idea Mac快捷键
Idea Mac快捷键
Idea中有许多快捷操作方式,本文将列出十分实用的几类操作,特别常见、不太实用或不太方便的操作可能没有写入。下面的操作方式都是在Mac OS X 10.5+的快捷键模式下使用的。
快捷键说明:
⌘:command
⇧:shift
⌥:option/alt
⌃: control/ctrl
文本编辑操作
快捷键 操作
double ⌥ 并按住不放+↑↓ 光标多行选中
⌥↑↓ 变量选择
⌘⇧⌥+鼠标左键拖拽 多行模式选中可编辑区域
⌥⇧鼠标左键拖拽 同时选中不同的多个区域
⌘⌫ 删除整行
⌥/ 根据本页内容补全词语
⌥⌘⇧↑↓ 左右移动在方法内的参数
⌥⇧⌘D 查看本地整个项目修改历史记录
⌘N 在project中创建新文件,在类中根据模板生成方法
⌥←→ 光标根据整个词汇左右移动
⌘⇧U 切换字符串大小写
⌘⇧⏎ 智能补全代码,如添加分号”;”,方法的”{}”
⇧⏎ 从当前行直接创建一个空行,并光标移到新的行
⌥⇧↑↓ 随意上下移动选择的行
⌘⇧↑↓ 在作用域内上下移动所选行
⌃I 创建父类接口应实现的方法
⌃O 创建父类可以重写的方法
⌘⇧8 切换当前文件多行模式
⌘⌥V 提取选择变量,作为局部变量
⌘⌥F 提取选择变量,作为成员变量
⌘⌥C 提取选择变量,作为静态常量
⌘⌥M 提取选择部分为方法
⌃↑↓ 光标按方法名跳转
F2 光标移动到高亮位置
⌘F 当前文件查询字符串
⌘R 当前文件替换字符串
⌘⇧F 全局查询字符串
⌘⇧R 全局替换字符串
⌘D 复制光标所在行,多选则复制所选内容
F3 mark代码
⌥F3 mark代码并标号
⇧⌘V 从粘贴板中粘贴
⌘J idea代码模板选择
代码Review操作
快捷键 操作
⌃⇧Q 查看代码上下文
F1 查看Document
⌃T 打开重构窗口
⌥⇧⌘U 打开UML图
⌘P 查看方法参数
⌘P之后,⌥↑↓ 切换重载方法
⌘⌥L 格式化代码
⌃⌥O 优化导入
⌥⏎ 智能提示
⌘B 在其他地方跳转到选择的类中,在本类中显示被调用的地方
⌃⇧P 查看表达式类型
全局操作
快捷键 操作
⇧鼠标滚轮 左右滑动
⌥F1 打开视图窗口选择
double ⌥ 打开检索(2018.3+版本整合所有类型检索)
⌃·(1左边的键) 打开idea视觉模式切换窗口
⌃⇥ 切换窗口或文件
⌘·(1左边的键) idea打开的项目间切换
⌘, 打开idea设置
⌘; 打开项目结构设置
double ⌃ 打开run anything窗口(version 2018.3+)
⌥⇧C 查看修改历史
⌘[ ] 后退或前进
⌘+数字1-9 打开各个数字对应的窗口
版本控制操作
快捷键 操作
⌘T 从版本库中拉取或更新代码
⌘K 提交代码(git中只是提交到本地,没有push)
文件跳转操作
快捷键 操作
⌘⌥←→ 跳转到前后编辑的位置
⌘⇧[ ] 按打开文件顺序切换
Linux ftp 自动上传备份文件脚本
DB 用RMAN 直接将备份文件放在盘柜上了,为了以防万一,老大让把这些备份文件在copy到一个备份服务器上。 RMAN 对目录有严格的要求,以后如果要恢复,还是还原到相同的目录。
之前我计划是将备份服务器共享之后,直接mount 到DB 服务器上,然后在cp 过去,这样是很简单的。但是搞系统的大哥建议用ftp来实现。 当时说是不会出现不能umount的情况,还有啥是安全什么得,这个新年一过也记不清了。 备份服务器上安装了Server-U 的FTP 服务,配置好之后,把备份文件传过来就可以了。
参考:
Linux 终端访问 FTP 及 上传下载 文件
http://www.cndba.cn/Dave/article/679
Linux find 命令 -exec 参数说明
http://blog.csdn.net/tianlesoftware/archive/2011/02/09/6175439.aspx
三步实现:
(1). 查找符合要求的文件,放到一个临时文件夹。
(2). 在ftp中使用mput 上传,上传完从临时文件夹中删除。
(3). 在备份服务器上做好删除策略。不然空间会撑满掉。
三点说明:
(1). 如果说只保留2天的话倒简单,在mput 之前用mdelete 把文件全部删除掉,在上传就可以了,因为我这里要保留多天的记录。 所以就只能在备份服务器上在弄个批处理的计划任务来删除了。
(2). mput 的时候有个问题,它会要求按下回车后在上传, 这对自动脚本来说是非常麻烦的。 我们需要关闭这个指令。
ftp>prompt
切换交谈式指令,使用mput/mget 时不用每个文件皆询问yes/no
ftp> help prompt
prompt force interactive prompting on multiple commands
ftp> prompt
Interactive mode off.
ftp> prompt
Interactive mode on.
ftp> prompt
Interactive mode off.
ftp>
不加任何参数就可以进行开发或关闭的设备,每执行一次,状态就会改变。
(3) find -mtime 参数说明
find /u01/backup/backupsets -mtime +1 -name “*” :+号 表示 1天前的文件
find /u01/backup/backupsets -mtime -1 -name “*” :表示1天内的文件
完整脚本:
Linux上传脚本:
[xezf@localhost scripts]$ cat uploadbackup.sh
#!/bin/sh
find /u01/backup/backupsets -mtime -1 -name “*” -exec cp -f {} /u01/backup/backuptmp /;
ftp -n 192.168.88.251 << EOF
user user password
bin
lcd /u01/backup/backuptmp
prompt
mput *
bye
EOF
cd /u01/backup/backuptmp
rm -rf /u01/backup/backuptmp/*
将uploadbackup.sh脚本添加到crontab,定时执行。 关于crontab,参考我的Blog:
Linux Crontab 定时任务 命令详解
http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5315039.aspx
备份服务器删除脚本:
deletebackupfile.bat
forfiles /p E:/db_backup_history/xezf /m * /d -10 /c “cmd /c del @file”
将这个bat 文件添加到计划任务,定时执行即可。我这里保留的是10天。
在自己的本本上测试没有问题。 找个测试库跑几天看看。 没问题在搬到生产库上去。
补充一句,具体情况具体对待。
bat脚本上传压缩包到liunx
:: 注释
::判断 文件是否存在 存在删除
if exist “D:\java\bat\amus_product_meta_tmp.zip” (
del D:\java\bat\amus_product_meta_tmp.zip
)
::判断 文件是否存在 不存在添加
if not exist “D:\java\bat\amus_product_meta_tmp.sql” (
echo >> D:\java\bat\amus_product_meta_tmp.sql
)
c:
::mysql 安装路径
cd E:\mysql\mysql-5.5.62-winx64\bin
::mysql 中am 库中的 product_meta_tmp 备份到 product_meta_tmp.sql中
mysqldump -uroot -p123456 –default-character-set=utf8 am product_meta_tmp >D:\java\bat\product_meta_tmp.sql
::临时参数
set “Ymd=amus_product_meta_tmp”
::打印一句话
echo Winrar loading…
::WinRAR:压缩包文件
::a -r -ep1 -o+ :压缩命令
::把\product_meta_tmp.sql 压缩到 ymd.zip 中
::注意:”C:\Program Files\WinRAR\Rar.exe” 使用这个路径压缩 导致 liunx中 unzip解压失败
WinRAR a -r -ep1 -o+ “D:\java\bat\%Ymd%.zip” “D:\java\bat\product_meta_tmp.sql”
::pscp windows和liunx 互传 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
::roy.ppk :秘钥 liunx 中有母文件 这是子文件
::121.xx.xx.45:服务器
pscp -i D:\java\bat\roy.ppk D:\java\bat\product_meta_tmp.zip root@121.xx.xx.45:/data/back
echo OK!
用Windows批处理文件封装ftp文件下载
这几天,工作中需要从远端ftp服务器下载并分析大量数据文件。数据文件的分析没什么可说的,就是字串解析,要说说ftp文件下载。
要下载ftp服务器上的文件,方法有多种,如:
1. 用Socket建立链接,然后按照FTP协议,进行命令字交互,这相当于实现一个小的ftp客户端程序;
2. 用WinSDK中的WinINet, 里面提供了FtpGetFile这样的一系列方法,用于ftp客户端编程;
3. 使用类似CuteFTP这样的客户端软件;
4. 使用控制台ftp命令;
使用cuteftp等软件,需要安装软件不说,还不便于与数据处理程序协调工作,所以不行。剩下三种方法都可以,但前两种,写程序工作量比较大,那就看看*后一个方法:使用控制台ftp命令。
常用的ftp命令有open, user, get, mget, put, quit等,*重要一点,ftp命令(实际上也是一客户端程序)支持命令脚本,也就是他可以根据你设计的脚本进行链接和下载。
一个简单的脚本如下:
—————————-
open theftpserver
user admin 123456
get thefile.dat
quit
—————————-
将这样的脚本保存后(如down.ftp),用ftp命令直接调用即可:
c:/blog/csdn/guanzhongs>ftp -n < down.ftp
这样看来,使用ftp命令,结合Windows的批处理文件,完全可以把文件下载部分解决。
还有一问题:下载的文件名是不确定的,但是ftp命令中需要指定确定的文件名。解决这个问题的方法是,在批处理文件中动态生成ftp脚本文件,然后调用ftp命令执行它。
下面是一个例子,已经在WindowsXP下测试通过。这个例子可以接受服务器名,用户名,用户密码,下载文件名为参数,然后将文件下载到本地目录。同时记录简单的log信息。
—————————————————————————-
— getfiles.bat
—————————————————————————-
@echo off
rem /
rem // guanzhong 2006-1-25
rem // Blog : http://blog.csdn.net/guanzhongs
rem // batch file for download file(s) from remote server
rem // Command line :
rem // getfiles <server> <user> <password> <remotefilename>
rem /
if “%1″==”” goto Usage
if “%1″==”/?” goto Usage
if “%2″==”” goto Usage
if “%3″==”” goto Usage
if “%4″==”” goto Usage
set ftpfile=getfiles.tmp
set logfile=getfiles.log
rem // 生成ftp下载脚本
echo open %1 > “%ftpfile%”
echo user %2 %3 >> “%ftpfile%”
echo bin >> “%ftpfile%”
echo prompt >> “%ftpfile%”
echo mget %4 >> “%ftpfile%”
echo quit >> “%ftpfile%”
rem // 记录log
echo ——————————– >> “%logfile%”
date /t >> “%logfile%”
time /t >> “%logfile%”
echo ——————————– >> “%logfile%”
rem // 下载文件
ftp -n < “%ftpfile%” >> “%logfile%”
rem // 删除临时脚本
del “%ftpfile%”
echo getfiles done! >> “%logfile%”
goto End
:Usage
echo Get file(s) from the remote server, support multi get.
echo Usage:
echo getfiles [server user password remotefilename]
:End
@echo on
—————————————————————————-
上例中,批处理的第四个参数是所要下载的文件名,这个文件名与dos命令中一样,支持通配符,也就是说,这个批处理文件支持下载批量文件,如:
c:/blog/csdn/guanzhongs>getfiles 127.0.0.1 admin 123456 *.jpg
可以把远程目录下的所有jpg文件下载过来。
另外,上例中ftp脚本文件中多了两行内容:
echo bin >> “%ftpfile%”
echo prompt >> “%ftpfile%”
*行是指定用二进制方式传输,也可以用ASCII方式;
第二行是指定如果有文件覆盖时,不需要提示,这样就不会打断批处理文件的执行了。
有了这个getfiles.bat文件,在程序中下载文件,只需要ShellExecute一下就行了。
对于Linux系统,思路是类似的,而且Linux系统的Shell功能非常强大,能够实现更加完善的功能。
完成上面工作,你需要了解:
DOS/Window Console命令,及批处理脚本编写。
控制台Ftp命令的使用。