最后
对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
再分享一波我的Java面试真题+视频学习详解+技能进阶书籍
#!/bin/bash
source /etc/profile
# 以下配置信息需要根据自己情况进行编辑
mysql\_user="root" # 备份用户
mysql\_password="root@2021" # 备份用户的密码
mysql\_port="3306" # 端口
mysql\_charset="utf8" # 编码
backup\_db\_arr=("xxxbase") # 要备份的数据库名称,多个用空格分开隔开 如("dba" "dbb" "dbc")
backup\_location=/data/backup # 备份数据存放位置,末尾请不要带"/"
expire\_backup\_delete="ON" # 是否开启过期备份删除 ON为开启 OFF为关闭
expire\_days=7 # 过期时间天数 默认为三天,此项只有在expire\_backup\_delete开启时有效
# 本行开始以下不需要修改
backup\_time=`date +%Y%m%d%H%M` #定义备份详细时间
backup\_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间
backup\_3ago=`date -d '3 days ago' +%Y-%m-%d` #3天之前的日期
backup\_dir=$backup\_location/$backup\_Ymd #备份文件夹全路径
welcome\_msg="Welcome to use MySQL backup tools!" #欢迎语
# 判断MYSQL是否启动 mysql没有启动则备份退出 【这里可以学到查询某服务是否运行的命令】
mysql\_ps=`ps -ef |grep mysql |wc -l`
mysql\_listen=`netstat -an |grep LISTEN |grep $mysql\_port|wc -l`
if [ [$mysql\_ps == 0] -o [$mysql\_listen == 0] ]; then
echo "ERROR:MySQL is not running! backup stop!"
exit
else
echo $welcome\_msg
fi
# 连接到mysql数据库 无法连接则备份退出 【使用的是数据步本身的工具】
mysql -P$mysql\_port -u$mysql\_user -p$mysql\_password <<end
use mysql;
select host,user from user where user='root' and host='localhost';
exit
end
flag=`echo $?`
if [ $flag != "0" ]; then
echo "ERROR:Can't connect mysql server! backup stop!"
exit
else
echo "MySQL connect ok! Please wait......"
# 判断有没有定义备份的数据库,如果定义则开始备份,否则退出备份
if [ "$backup\_db\_arr" != "" ];then
#dbnames=$(cut -d ',' -f1-5 $backup\_database)
#echo "arr is (${backup\_db\_arr[@]})"
for dbname in ${backup\_db\_arr[@]}
do
echo "database [ $dbname ] backup start..."
`mkdir -p $backup\_dir`
`mysqldump -P$mysql\_port -u$mysql\_user -p$mysql\_password $dbname --default-character-set=$mysql\_charset | gzip > $backup\_dir/$dbname-$backup\_time.sql.gz`
flag=`echo $?`
if [ $flag == "0" ];then
echo "database $dbname success backup to $backup\_dir/$dbname-$backup\_time.sql.gz"
else
echo "database $dbname backup fail!"
fi
done
else
echo "ERROR:No database to backup! backup stop"
exit
fi
# 如果开启了删除过期备份,则进行删除操作
if [ "$expire\_backup\_delete" == "ON" -a "$backup\_location" != "" ];then
#`find $backup\_location/ -type d -o -type f -ctime +$expire\_days -exec rm -rf {} \;`
`find $backup\_location/ -type d -mtime +$expire\_days | xargs rm -rf`
echo "Expired backup data delete complete!"
fi
echo "All database backup success! Thank you!"
exit
fi
2.定时任务
给 mysql_backup.sh 文件赋予可执行权限。
chmod -R 777 mysql_backup.sh
Linux的 cron 表达式跟Java的 cron 表达式不同,这里要注意。
# m h dom mon dow command
# 分 时 日 月 周 要执行的命令
# 编辑定时任务列表
crontab -e
# 添加以下文本(每天00:00执行mysql\_backup.sh脚本)
00 00 * * * /data/backup/mysql_backup.sh
# 重启 cron 服务
sudo service crond restart
3.脚本测试
最后
ActiveMQ消息中间件面试专题
- 什么是ActiveMQ?
- ActiveMQ服务器宕机怎么办?
- 丢消息怎么办?
- 持久化消息非常慢怎么办?
- 消息的不均匀消费怎么办?
- 死信队列怎么办?
- ActiveMQ中的消息重发时间间隔和重发次数吗?
ActiveMQ消息中间件面试专题解析拓展:
redis面试专题及答案
- 支持一致性哈希的客户端有哪些?
- Redis与其他key-value存储有什么不同?
- Redis的内存占用情况怎么样?
- 都有哪些办法可以降低Redis的内存使用情况呢?
- 查看Redis使用情况及状态信息用什么命令?
- Redis的内存用完了会发生什么?
- Redis是单线程的,如何提高多核CPU的利用率?
Spring面试专题及答案
- 谈谈你对 Spring 的理解
- Spring 有哪些优点?
- Spring 中的设计模式
- 怎样开启注解装配以及常用注解
- 简单介绍下 Spring bean 的生命周期
Spring面试答案解析拓展
高并发多线程面试专题
- 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?
- Java 中新的 Lock 接口相对于同步代码块(synchronized block)有什么优势?如果让你实现一个高性能缓存,支持并发读取和单一写入,你如何保证数据完整性。
- Java 中 wait 和 sleep 方法有什么区别?
- 如何在 Java 中实现一个阻塞队列?
- 如何在 Java 中编写代码解决生产者消费者问题?
- 写一段死锁代码。你在 Java 中如何解决死锁?
高并发多线程面试解析与拓展
jvm面试专题与解析
- JVM 由哪些部分组成?
- JVM 内存划分?
- Java 的内存模型?
- 引用的分类?
- GC什么时候开始?
JVM面试专题解析与拓展!
开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**