linux下crontab定时在mysql中生成明日需要使用的空表 / Timely operational on linux crontab

通过定时crontab 调用远程执行sql新建表结构 create_table.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/bin/bash # 生成明天的日期 tomorrow=$(date -d "+1 days" "+%Y%m%d") echo next date: ${tomorrow} # sql文件脚本中的日期替换为明日的日期 sed -i "s/\([0-9]\{8\}\)/${tomorrow}/g" /home/crontab/create_table.sql echo `cat /home/crontab/create_table.sql | head -n 1` # 通过执行mysql执行文件中的sql 脚本创建以命题啊日期结尾的表名 mysql -uroot -p123456 -h10.0.56.20 -Dpangu</home/wangjun/crontab/create_table.sql 加入到 crontab 中每日生成下一日的空表 别忘了给脚本加执行权限 1 2 3 4 5 6 7 8 9 # 每天一点执行 0 1 * * * sh /home/wangjun/crontab/create_table.sh # 创建 crontab 任务 crontab /home/wangjun/crontab/crontest.cron # 查看crontab 任务 crontab -l

September 27, 2019 · 1 min · 83 words · atovk

kudu 表设计使用及限制 / Kudu table schema design and limited

参考 kudu 官方指导手册 future Fast processing of OLAP workloads. OLAP 级数数据处理能力 Integration with MapReduce, Spark and other Hadoop ecosystem components. 可集成大数据常用组建(MR,spark,hive,impala,…) Tight integration with Apache Impala, making it a good, mutable alternative to using HDFS with Apache Parquet. 对impala的完全支持,可作为HDFS存储parquet方案的替代 Strong but flexible consistency model, allowing you to choose consistency requirements on a per-request basis, including the option for strict-serializable consistency. 一致性 Strong performance for running sequential and random workloads simultaneously. ...

September 27, 2019 · 3 min · 581 words · atovk

java通过oshi获取系统和硬件信息 / Oshi get system and hardware information

OSHI 是用java写的系统监控工具接口,提供主要的监控指标信息,具体接口作用如下: maven 依赖引入 1 2 3 4 5 6 <dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> <version>4.0.0</version> </dependency> API 操作 1 2 3 4 5 6 7 8 9 // 初始化系统信息对象 SystemInfo systemInfo = new SystemInfo(); // 获取硬件信息 HardwareAbstractionLayer hardware = systemInfo.getHardware(); // 获取操作系统进程相关信息 OperatingSystem operatingSystem = systemInfo.getOperatingSystem(); 操作BIOS系统信息 获取 BIOS 系统信息 1 2 3 4 5 6 7 8 ComputerSystem computerSystem = hardware.getComputerSystem(); Firmware firmware = computerSystem.getFirmware(); String name = firmware.getName(); String description = firmware.getDescription(); String firmwareManufacturer = firmware.getManufacturer(); String releaseDate = firmware.getReleaseDate(); String firmwareVersion = firmware.getVersion(); 传感器信息 风扇/温度信息 ...

September 27, 2019 · 2 min · 338 words · atovk

JDBC链接各种数据库的例子 / Java jdbc example holder

java语言下 jdbc 各种数据库的链接方式 mysql/mariadb 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 private static Connection getConn() { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/samp_db"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } oracle (1)Oracle JDBC Thin using a ServiceName: 1 2 #jdbc:oracle:thin:@//<host>:<port>/<service_name> #Example: jdbc:oracle:thin:@//192.168.2.1:1521/XE (2)Oracle JDBC Thin using an SID: 1 2 #jdbc:oracle:thin:@<host>:<port>:<SID> #Example: jdbc:oracle:thin:@192.168.2.1:1521:X01A (3)Oracle JDBC Thin using a TNSName: 1 2 #jdbc:oracle:thin:@<TNSName> #Example: jdbc:oracle:thin:@GL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // 获得连接对象 private static Connection getConn() { String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@//127.0.0.1:1521/orcl"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } sqlserver 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // sqlserver2012 private static Connection getConn() { String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url = "jdbc:sqlserver://localhost:1433;DatabaseName=student"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } db2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 private static Connection getConn() { String driver = "com.ibm.db2.jcc.DB2Driver"; String url = "jdbc:db2://10.27.70.33:60000/dbtest:currentSchema=db2inst1"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } PostgreSQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 private static Connection getConn() { String driver = "org.postgresql.Driver"; String url = "jdbc:postgresql://127.0.0.1:5432/test"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } greenplum 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 private static Connection getConn() { String driver = "com.pivotal.jdbc.GreenplumDriver"; String url = "jdbc:pivotal:greenplum://10.10.10.10:5432;DatabaseName=mfg"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } hana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 private static Connection getConn() { String driver = "com.sap.db.jdbc.Driver"; String url = "jdbc:sap://172.23.1.123:39015"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } hive 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 private static Connection getConn() { /** hiveserver org.apache.Hadoop.hive.jdbc.HiveDriver jdbc:hive://localhost:10000/default hiveserver2 org.apache.Hive.jdbc.HiveDriver jdbc:hive2://localhos:10000/default */ String driver = "org.apache.hive.jdbc.HiveDriver"; String url = "jdbc:hive2://localhos:10000/default"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } sybase 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 private static Connection getConn() { String Driver = "com.sybase.jdbc3.jdbc.SybDriver"; //数据库驱动 String url = "jdbc:sybase:Tds:192.168.2.103:5000/SXABC"; // 连接的数据库是SXABC String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; }

September 13, 2019 · 4 min · 682 words · atovk

linux 命令行终端快捷键操作 / Linux teminal option

基础快捷键 快捷键 功能 Ctrl + a 跳到本行的行首 Ctrl + e 则跳到页尾 Ctrl + u 删除当前光标前面的文字 ctrl + k 删除当前光标后面的文字 Ctrl + w Alt + d w删除光标前面的单词的字符,d则删除后面的字符 Alt + Backsapce 删除当前光标后面的单词;误删使用Ctrl + y进行恢复, Ctrl + L进行清屏操作 ctrl + a 光标移到行首 ctrl + b 光标左移一个字母 ctrl + c 杀死当前进程 ctrl + d 退出当前 Shell ctrl + e 光标移到行尾 ctrl + h 删除光标前一个字符,同 backspace 键相同 ctrl + k 清除光标后至行尾的内容 ctrl + l 清屏,相当于clear ctrl + r 搜索之前打过的命令.会有一个提示,根据你输入的关键字进行搜索bash的 history 快捷键 快捷键 功能 ctrl + u 清除光标前至行首间的所有内容 ctrl + w 移除光标前的一个单词 ctrl + t 交换光标位置前的两个字符 ctrl + y 粘贴或者恢复上次的删除 ctrl + d 删除光标所在字母; 注意: (backspace及ctrl + h)是删除光标前的字符. ctrl + f 光标右移 ctrl + z 将进程转到后台运行,fg命令恢复.比如top -d1 然后ctrl + z到后台fg重新恢复 esc组合 快捷键 快捷键 功能 esc + d 删除光标后的一个词 esc + f 往右跳一个词 esc + b 往左跳一个词 esc + t 交换光标位置前的两个单词

September 13, 2019 · 1 min · 134 words · atovk

域名解析类型详解 / Domain DNS info detail

域名解析类型详解 1.主机[A]记录 描述: 主机地址记录。在 DNS 域名与 IP 地址之间建立映射关系 语法: owner class ttl A IP_v4_address 例子: host1.example.microsoft.com. IN A 127.0.0.1 2.别名[CNAME] 描述: 用来表示用在该区域中的其它资源记录类型中已指定名称的替补或别名 DNS 域名。 语法: owner ttl class AFSDB subtype server_host_name 例子: aliasname.example.microsoft.com. AFSDB 1 truename.example.microsoft.com. 3.主机信息[HINFO] 描述: 用来说明映射到特定 DNS 主机名的 CPU 类型和操作系统类型的 RFC-1700 保留字符串类型,这个信息可以被应用程序通信协议使用。 语法: owner ttl class HINFO cpu_type os_type 例子: my-computer-name.example.microsoft.com. HINFO INTEL-386 WIN32 4.邮箱[MB] 描述: 用来将指定的域邮箱名映射到这个邮箱的主机的当前区域中的主机地址记录 语法: owner ttl class MB mailbox_hostname 例子: mailbox.example.microsoft.com. MB mailhost1.example.microsoft.com ...

September 13, 2019 · 1 min · 204 words · atovk

MAC 无法打开应用程序 / Fix mac application can‘t open

Mac OS-[xxx.app已损坏,打不开.你应该将它移到废纸篓] 出现这个问题的解决方法: 修改系统配置: 1 系统偏好设置... -> 安全性与隐私 -> 修改为任何来源 如果没有这个选项的话(macOS Sierra 10.12),打开终端,执行: 1 2 3 4 5 # 此命令为 关闭苹果的Gatekeeper, 其实是有被攻击的风险的 # 参考维基百科 https://en.wikipedia.org/wiki/Gatekeeper_(macOS) sudo spctl --master-disable

September 13, 2019 · 1 min · 28 words · atovk

书单 / Which books have you read ?

最近读了一些书,读的速度太快,导致前两本读了啥内容也不比较模糊,遂之索性把书单和主要内容记录下来,方便以后回忆和查阅。 201908 《领导力21法则》 《OKR工作法则》 《斯坦福极简经济学》 《乌合之众》 《人性的弱点》 《JAVA 并发编程的艺术》 2011909 《解读/量化投资》

September 13, 2019 · 1 min · 11 words · atovk

VIM快捷键 / Vim Keyboard Shortcuts Cheatsheet

VIM 基本速查表 COPY BY vim-keyboard-shortcuts-cheatsheet 基本操作 快捷键 功能 Esc 从当前模式转换到“普通模式”。所有的键对应到命令。 i “插入模式”用于插入文字。回归按键的本职工作。 : “命令行模式” Vim 希望你输入类似于保存该文档命令的地方。 方向键 快捷键 功能 h 光标向左移动一个字符 j 或 Ctrl + J 光标向下移动一行 k 或 Ctrl + P 光标向上移动一行 l 光标向右移动一个字符 0 (数字 0)移动光标至本行开头 $ 移动光标至本行末尾 ^ 移动光标至本行第一个非空字符处 w 向前移动一个词 (上一个字母和数字组成的词之后) W 向前移动一个词 (以空格分隔的词) 5w 向前移动五个词 b 向后移动一个词 (下一个字母和数字组成的词之前) B 向后移动一个词 (以空格分隔的词) 5b 向后移动五个词 G 移动至文件末尾 gg 移动至文件开头 浏览文档 快捷键 功能 ( 跳转到上一句 ) 跳转到下一句 { 跳转到上一段 } 跳转到下一段 [[ 跳转到上一部分 ]] 跳转到下一部分 [] 跳转到上一部分的末尾 ][ 跳转到上一部分的开头 插入文本 快捷键 功能 a 在光标后插入文本 A 在行末插入文本 i 在光标前插入文本 o (小写字母 o)在光标下方新开一行 O (大写字母 O)在光标上方新开一行 特殊插入 快捷键 功能 :r [filename] 在光标下方插入文件 [filename] 的内容 :r ![command] 执行命令 [command] ,并将输出插入至光标下方 删除文本 快捷键 功能 x 删除光标处字符 dw 删除一个词 d0 删至行首 d$ 删至行末 d) 删至句末 dgg 删至文件开头 dG 删至文件末尾 dd 删除该行 3dd 删除三行 简单替换文本 快捷键 功能 r{text} 将光标处的字符替换成 {text} R 进入覆写模式,输入的字符将替换原有的字符 复制/粘贴文本 快捷键 功能 yy 复制当前行至存储缓冲区 ["x]yy 复制当前行至寄存器 x p 在当前行之后粘贴存储缓冲区中的内容 P 在当前行之前粘贴存储缓冲区中的内容 ["x]p 在当前行之后粘贴寄存器 x 中的内容 ["x]P 在当前行之前粘贴寄存器 x 中的内容 撤销/重做操作 快捷键 功能 u 撤销最后的操作 Ctrl+r 重做最后撤销的操作 搜索和替换 快捷键 功能 /search_text 检索文档,在文档后面的部分搜索 search_text ?search_text 检索文档,在文档前面的部分搜索 search_text n 移动到后一个检索结果 N 移动到前一个检索结果 :%s/original/replacement 检索第一个 “original” 字符串并将其替换成 “replacement” :%s/original/replacement/g 检索并将所有的 “original” 替换为 “replacement” :%s/original/replacement/gc 检索出所有的 “original” 字符串,但在替换成 “replacement” 前,先询问是否替换 书签 快捷键 功能 m {a-zA-Z} 在当前光标位置设置书签,书签名可用一个大小写字母({a-zA-Z}) :marks 列出所有书签 {a-zA-Z} 跳转到书签 {a-zA-Z} 选择文本 快捷键 功能 v 进入逐字可视模式 V 进入逐行可视模式 Esc 退出可视模式 改动选中文本 快捷键 功能 ~ 切换大小写 d 删除一个词 c 变更 y 复制 > 右移 < 左移 ! 通过外部命令进行过滤 保存并退出 快捷键 功能 :q 退出 Vim,如果文件已被修改,将退出失败 :w 保存文件 :w new_name 用 new_name 作为文件名保存文件 :wq 保存文件并退出 Vim :x 保存文件并退出,文件未变动时,编辑时间不做变更 :q! 退出 Vim,不保存文件改动 ZZ 退出 Vim,如果文件被改动过,保存改动内容 ZQ 与 :q! 相同,退出 Vim,不保存文件改动

May 31, 2019 · 2 min · 260 words · atovk

批量删除HDFS上无效的临时文件 / Batch delete hdfs dir

批量删除HDFS上无效的临时文件 需求:当前日期下的临时目录不删除(可能存在正在运行的临时文件),通过日期过滤dir将非当前日期的dir进行删除 第一版 由于hdfs删除效率太低,删除一个文件需要 1-2S 完全无法忍受 PB的数据等待删除 1 2 3 4 5 6 7 for line in $(hdfs dfs -ls /user/wangping/_sqoop/ |grep -v `date +%Y-%m-%d`|awk -F ' /' '{print $2}') do dir=/${line} echo "drop sqoop hdfs tmp dir: ${dir}" `hdfs dfs -rm -r ${dir}` done 第二版 中间想一次性加载所有目录一次删除,发现我发遍历初所有待删除目录(太鸡儿多了) 通过批量执行删除脚本,一千为批次的进行删除执行时间依旧一次删除时间为1-3S左右,效率提高不是一个数量级 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 dirs="" size=0 for line in $(hdfs dfs -ls /user/wangping/_sqoop/ |grep -v `date +%Y-%m-%d`|awk -F ' /' '{print $2}') do let "size++" dir=/${line} echo "drop sqoop hdfs tmp dir: ${size} ${dir}" dirs=${dirs}" "${dir} #echo ${size} if [[ `expr ${size} % 1000` == 0 ]]; then echo "dirs:" ${dirs} hdfs dfs -rm -r ${dirs} dirs="" fi # `hdfs dfs -rm -r ${dir}` done echo ${dirs} hdfs dfs -rm -r ${dirs} 到此 批量删除的工作告一段落 涨知识: 1,shell 中的计算变量 2,shell 中的自增变量 ...

May 31, 2019 · 1 min · 143 words · atovk