Lastest

python实现数据库自动备份

python实现数据库自动备份 设计要求 执行环境centos 7 x64 每天某一个时刻自动执行备份操作,执行时间可调整 数据库备份文件保留在特定目录中,目录路径可设置 自动将当前备份版本发送到指定邮件地址,发件邮箱信息和收件邮箱信息可设置 对于每一个数据库备份书数据库备份文件保留七天,超过七天则删除 部署后,源代码不泄露 实现 python如何在centos上实现定时执行 使用Linux定时任务功能Cron即可达到目标。在此之前,请确保服务器时区设置和当前所在时区一致。 // 命令行输入 crontab -e // 加入这一行即可实现每天凌晨两点执行数据库备份: 0 2 * * * python /path/source.py crontab命令基本用法 M H D m d 要执行的命令 * M H D 代表: 分钟(0-59) 小时(0-23) 天(1-31) * m d 代表:月(1-12) 周(0-6) 更多细节参照: https://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/ 执行数据库备份操作 运行命令行mysqldump工具即可备份数据库。python自身提供的os包中有system命令可以执行shell命令行。 比如: import os os.system(...

41. 最大子数组

动态规划大法。 第一步,建模,得出递推公式 有一个数组A[n], 对于A[i] (0<i<n)位置向前(0位置方向)最大和为C[i], 那么 C[i] = Max(C[i-1] + A[i], A[i]) 终止条件 C[0] = A[0] 这样子我们就得到了对于任意一个位置 0 <= i < n,数组中从0到i的最大子串和。 但是我们的目标并不是求i位置,最大子串和。我们的目标是求整个数组上,最大子串和,也就是 Opt(A) = Max(C[i]), 0 <= i < n 第二步,试着实现算法 class Solution: def maxSubArray(self, nums): # write your code here length = len(nums) c = [0] * length c[0] = nums[0] maxSum = c[0] i = 1 while i < length: if c[i-1] + nums[i] > nums[i]: c[i] = c[i-1] + nums[i] el...

安装RandomArticleList插件无法启用

错误信息: Path '/action/plugins-edit' not found Typecho_Router_Exception: Path '/action/plugins-edit' not found in /...../var/Typecho/Router.php:155 Stack trace: #0 /...../index.php(25): Typecho_Router::dispatch() #1 {main} 没找到插件,看下插件代码吧。 看起来只有这个插件文件名不一样,其他插件都叫做Plugin.php,这个插件叫做RandomArticleList.php。 改文件名,RandomArticleList.php -> Plugin.php。再次运行 还在报错,不过错误内容不一样了。 无法启用插件 Typecho_Widget_Exception: 无法启用插件 in /...../var/Widget/Plugins/Edit.php:98 Stack trace: #0 /...../var/Widget/Plugins/Edit.php(308): Widget_Plugins_Edit->activate('RandomArticleLi...') #1 /...../var/Widget/Do.php(82): Widget...

安装Stat插件无法激活

错误提示:“数据表检测失败,统计插件启用失败” 解决过程: 打开插件源代码看了下, class Stat_Plugin implements Typecho_Plugin_Interface{ } // 来看看这个接口的定义 /** * 插件接口 * * @package Plugin * @abstract */ interface Typecho_Plugin_Interface { /** * 启用插件方法,如果启用失败,直接抛出异常 */ public static function activate(); /** * 禁用插件方法,如果禁用失败,直接抛出异常 */ public static function deactivate(); /** * 获取插件配置面板 */ public static function config(Typecho_Widget_Helper_Form $form); /** * 个人用户的配置面板 */ public static function personalConfig(Typecho_Widget_Helper_Form $form); } 这样看很明显了,启用插...

lintcode 103. 带环链表 II

首先,判断是否有环;接着计算环中有多少个节点;再第一步得到的节点倒推,直到有一个不相同,他的后继节点就是环的起始节点。 第一步,很简单,设置两个指针A和B,指向头结点。A和B分别以速度1和2前进,如果A和B相遇,则说明有环(B追上A) 退出条件: A == B, B追上A,设置当前节点为SomeWhereInRing, 跳去第二步 B == None or B.next == None, 到达链表结尾。 此时算法可以结束了,返回None 第二步,计算环中有几个节点 设置counter = 1, A = SomeWhereInRing, 循环绕环一圈即可知道环中有多少节点 while A != SomeWhereInRing: counter += 1 A = A.next 第三步,以SomeWhereInRing为基准向前倒推,直到能推出两个节点A != B。 单链表无法得到前驱节点,所以我们要想得到SomeWhereInRing的前驱节点,只能通过两种方式: 我们直到SomeWhereInRing节点相对于head头结点的距离,M 我们直到环中有N个节点 那么我们设置指针A和B,A指向head,B指向SomeWhereInRing A向前挪动到M-1位置,即是SomeWhereInRing的前驱节点 B向前挪动N-1节点,则到达SomeWhereInRing前驱节点 退出条...