第一篇 软件设计存在的问题 我们知道,系统的设计,是存在于头脑中的衣服至关重要的图像。 即使我们在一开始的设计阶段,就非常清晰的了解了需求,甚至于在发布的时候,依然清楚。...但是在接下来,随着不断的使用,弊端、不足会一一的被暴露出来。系统变得越来越难以维护,最后,即使仅仅进行最简单的更改,也需要花费巨大的努力。...笔者提出了一下观点:当软件出现了下面任何一种气味时,就表明软件正在腐化: 1、僵化性:很难对系统进行改动。因为牵扯到其他太多部分的改动。...2、脆弱性:对系统的改动会导致心痛中和改动的地方在概念上无关的许多地方出现问题。(开发人员就像是一只不停追逐自己尾巴的狗) 3、牢固性:很难解开系统的纠结,使之可重用。...而我们希望的是,可以更容易地进行哪些保持设计的变动。 5、不必要的复杂性:设计中包含有不具任何直接好处的基础结构。 6、不必要的重复:设计中包含有重复的结构,而该结构本可以使用单一的抽象进行统一。
改进的推荐算法在评级数据“稀疏”的情况下尤其有效。 亚马逊和Netflix等网站的推荐系统使用了一种名为“协同过滤”的技术。...该算法的基本策略很简单:当试图预测顾客对某一产品的评价时,不仅要使用相似品味的人的评分,而且要使用与这些人相似的人的评分等等。 这个想法很直观,但在实践中,一切都取决于具体的相似性度量。...或者换句话说,当你从一个朋友的喜好转移到朋友的朋友时,这个过程中引入了什么噪音,是否有一个正确的方法来量化这种噪音,这样我们就能平衡我们所引入的噪音所带来的信号。...为了预测电影的口味,有用的功能可能包括电影的类型,它的票房表现,获得的奥斯卡提名的数量,领导者的历史票房成功记录,分销商,或者任何其他的东西。...“当我们对一部电影进行采样时,我们实际上并不知道它的功能是什么,所以如果我们想准确预测这个功能,我们将无法做到,”Lee说。“但如果我们只是想估算用户功能之间差异,我们则可以计算出这个差异。”
,今天我要分享的这个 case 就是个典型,废话不多说,进入正题。...语法执行一些语句 查看已加载的类的详细信息,比如这个类从哪个 jar 包加载的。...trace 执行的结果(MVC 服务执行时间 80ms 左右)与前端请求有 1/3 的概率超过 3s 的结论告诉了运维,让他们排查一下从反向代理层到站点层这中间是否有啥问题,不一会儿果然查出了问题。...1/3 的概率打到这台下线机器的 ip 上的,由于这个 ip 对应的机器无法响应这个请求,等到超时后,kongfu 会重试把这个请求打到另外正常的两台机器中的任意一台,也就是说请求 3s 中的大部分时间花在了等待那台不正常的...TCP 的延迟确认机制和 Nagle 算法及拥塞控制导致的,自然而然就会朝着这个方向 去解决了,比如打开 TCP_NODELAY 选项等。
背景 在开发过程中需要安装mysql ,记录脚本如下文。...任务分解 按顺序如下,具体操作见下文脚本 使用 wget 获得npm包 安装rpm包 yum 安装mysql服务:yum install -y mysql-community-server 启动mysql...使用新密码登录 脚本内容 #!...服务 systemctl start mysqld.service # 查看mysql服务状态 systemctl status mysqld.service # 查看安装的mysql密码 grep...# 导入spring-boot-plus数据库脚本 # use mysql; # source /root/mysql_spring_boot_plus.sql;
下面将分享我们如何解决 8.0 迁移项目的难题,以及在这个过程中发现的一些惊喜。当最初确定项目范围时,可以明确的是,迁移到 8.0 会比迁移到 5.6 或 MyRocks 更困难。...使用 RBR 还为我们提供了一个解决应用程序问题的替代解决方案,我们在将一些副本集移动到 8.0 主实例时遇到了这个问题,将在后面讨论。...使用了自动转义查询中列名的软件库的应用程序没有遇到这些问题,但并非所有应用程序都使用这些软件库。解决这个问题很简单,但是需要时间来跟踪生成这些查询的应用程序属主和代码库。...5.6 有一个 bug,在 8.0 中得到了修复,但是修复增加了事务死锁的可能性。在分析了查询之后,我们能够通过降低隔离级别来解决该问题。这个选项对我们来说是可用的,因为我们已经切换到基于行的复制。...但是,对于非常大的 mysqld 实例,这可能需要在活跃生产服务器上运行很多天,而且这个脆弱的过程可能会在完成之前被中断。对于这些大型实例,我们必须修改备份和恢复系统来应对重建。
--no-create-info只备份数据而不包含表结构,不包含删除表的指令 #1....>> test11_data.sql echo "Backup $table successful" #fi done # 不导出的表 declare -a IGNIOR_TABLES=("...done # 清理一些带日期的表 #!.../bin/bash # MySQL数据库连接信息 MYSQL_USER="账号" MYSQL_PASSWORD="密码" MYSQL_HOST="地址" MYSQL_PORT="端口" MYSQL_DATABASE...="数据库" # 清除 user11_ 日期的所有数据【2023年以前】 DELETE_QUERY="select table_name from information_schema.tables where
Innobackupex是Xtrabackup的一部分,其实质也是调用xtrabackup。主要的不同是Xtrabackup除了支持innodb引擎外还支持xtradb引擎。...本文主要封装了Innobackupex到shell脚本进行定期备份,供大家参考。...1、脚本描述 a、支持增量备份以及全备 b、需要传递到备份脚本(如备份路径,连接相关参数等) c、基于周日,周三的全量备份,其他增量备份 d、可根据需要调整脚本,比如压缩备份的文件夹以及rsync等 2...directory --host= Set mysql host --port= Set mysql port --...user= Set mysql user name --password= Set mysql user password EOF }
目录 背景 打开软件,连接mysql数据库 第一步:将mysql数据库和软件关联起来 第二步 : 将我给你的sql脚本,在这个连接里面执行 背景 确保自己电脑安装了mysql数据库,并且安装了数据库可视化软件...,可视化软件navicat 就是这个软件,这个版本比较高的,还有其他版本,随便下载一个就可以了 有了以上的东西,就可以打开这个软件了 打开软件,连接mysql数据库 刚下载打开还没有将自己下载的...mysql数据库 和这个软件关联起来,所以应该是空白,我的是用这个软件 关联了很多的数据库,所以你可以看到列表很多 第一步:将mysql数据库和软件关联起来 以上写完 按 确定 以上就创建了一个名字叫...jing的连接,也就是这样我们用这个软件 和 mysql数据库就关联起来了,以后我们进入 jing 这个里面 ,就可以操作我们之前下载的mysql数据库了,这个就是可视化工具,用界面的形式 操作我们下载的...第二步 : 将我给你的sql脚本,在这个连接里面执行 这样就可以将sql脚本里面的各种各样的表 创建到自己的mysql数据库里面,那么如何执行 我给你的sql脚本是这样的,以.sql为结尾的文件
从这位仁兄的博客转载来的http://blog.itpub.net/133735/ 监控mysql索引使用效率的脚本: > SELECT t.table_schema AS db, t.table_name...= 'mysql' GROUP BY table_schema, table_name, index_name) AS s2 ON s.table_schema = s2...= 'mysql' AND t.table_rows > 100 AND s.CARDINALITY IS NOT NULL AND (s.CARDINALITY / IFNULL
本脚本就是把这个功能封装了一下. 本脚本配合定时任务使用更佳. 1....使用例子 先配置对应的服务器IP账号密码 image.png 直接执行脚本就行(建议放后台, 最好是加个定时任务, 判断脚本挂了就重新执行) image.png 测试数据 image.png 检查当前的...脚本 脚本如下: #!.../bin/env bash #write by ddcw at 2021.06.29 #不支持备份到远处, 你可以在要保存的服务器上运行本脚本 #mysqlbinlog和mysql命令需要配置在环境变量里...} >/dev/null 2>&1 exit 1 } function init_() { #检查有没得mysql和mysqlbinlog命令 which mysql >/dev/null 2>
/bin/sh bk_to="/var/mysql-backup-`date +%Y-%m-%d-%k-%M-%S |tr -d ' '`" user_name="root" user_pw="dev"...sql=" flush tables with read lock; system cp -pR /var/lib/mysql $bk_to; unlock tables; " mysql -u
为了改头换面重新做人,在某个夜深风高的夜晚,我扛着我的小锄头,挖出了我压箱底的宝贝,轻轻掸去了一层浮灰... ?...GitHub 网址: https://github.com/maebert/themostdangerouswritingapp 这个项目设计的宗旨是让我们进入丝滑的状态,作者 Manu Ebert 小哥在某个周日的下午怼了两杯葡萄酒...建议女孩子,当男朋友惹你生气时,先让他在这上面写一篇万字检讨书,写不完不许睡觉的那种... ? 顺便来看看其他用过这个项目自虐的老哥们怎么说的吧... ? 怎么样,是不是想尝试一波?...在这个网站上,还可以设置你的创作时间和词汇数,也就是制定一个小目标,你只要在目标内完成任务,那么你写的东西就不会被删掉... ?...再多说一句,可能看到这有些同学觉得这个项目有点华而不实,可能用这样那样的方法,比如我一直随便敲键盘也可以过关,但是记住你要用这个去做的是什么,是短时间集中注意力进入写作状态,发现优点在我看来永远只比盯着缺陷来的重要
有时候早期建的表上可能缺少主键,这样容易导致查询或者主从复制比较慢。 下面是一个小的脚本,用于找出没有主键的表。 #!.../bin/bash # 找出没有主键的表 # Date: 2017/06/05 source /etc/profile LOG="/tmp/nopk.log_$(date +%F)" user='root...' host='localhost' pass='123456' sock='/tmp/mysql.sock' MYSQL_CMD="mysql -u$user -h$host -p$pass -S$sock..." dbs=$($MYSQL_CMD 2>/dev/null -BNe "select SCHEMA_NAME from information_schema.SCHEMATA where SCHEMA_NAME...not in ('information_schema','performance_schema')") for db in $dbs; do $MYSQL_CMD information_schema
Your MySQL connection id is 2837 不要小看这个错误,有些业务验证是不允许出现Warning的,所以可能有些大厂还需要自己定制一下这个错误的逻辑。...所以需求二的特点就是手工维护密码啰嗦,手工输入密码太原始。 那我们写脚本,但是脚本里面的密码还是可见的,调用的明文密码问题解决了,但是内容中的密码还是可读的。...这个过程是在脚本里的逻辑来实现,所以我们得到明文密码的概率要低一些。 另外一类就是对文件加密,比如对整个文件加密,加密之后文件就没法读了。所以加密后的密码又被加密了。...对文件加密有shell的方式还有python等语言会 如果要调用脚本的时候,其实就是先解密文件,然后调用解密逻辑,得到真正的密码,然后开启访问的请求。 比如我得到了一个加密后的密码串。...调用的解密逻辑是decrypt_passwd,当然这个是可读还可逆的,我们其实可以再加入一些复杂的因子来干扰。
Your MySQL connection id is 2837 不要小看这个错误,有些业务验证是不允许出现Warning的,所以可能有些大厂还需要自己定制一下这个错误的逻辑。...所以需求二的特点就是手工维护密码啰嗦,手工输入密码太原始。 那我们写脚本,但是脚本里面的密码还是可见的,调用的明文密码问题解决了,但是内容中的密码还是可读的。...这个过程是在脚本里的逻辑来实现,所以我们得到明文密码的概率要低一些。 另外一类就是对文件加密,比如对整个文件加密,加密之后文件就没法读了。所以加密后的密码又被加密了。...对文件加密有shell的方式还有Python等语言会 如果要调用脚本的时候,其实就是先解密文件,然后调用解密逻辑,得到真正的密码,然后开启访问的请求。 比如我得到了一个加密后的密码串。...调用的解密逻辑是decrypt_passwd,当然这个是可读还可逆的,我们其实可以再加入一些复杂的因子来干扰。
在日常工作当中,我们会不时借助脚本程序来处理一些重复性工作,以帮助我们提升工作效率。 近几年 Python 与 Ruby 发展迅猛,使得它们成为了很多人编写脚本程序时的首选语言。...而对于一些逻辑简单的轻量级脚本,我们其实可以选择用 bash 来完成。 bash 可以让你在无任何其它语言或第三方依赖的安装环境下,快速写出脚本程序。...另外,选择使用 bash,也能让程序代码更加简洁、脚本体积更加轻盈。 如果我们要保持代码简洁,首先要做的第一步,就是保证不引入其它无用的第三方库,即使他们提供了一些颇为强大的功能与便捷的接口。...在不引入其它第三方依赖,单纯使用 bash 的情况下,如何快速写出实用、简洁的脚本程序呢?...https://github.com/dylanaraps/pure-bash-bible 这本书籍收集汇总了编写 bash 脚本经常会使用到的一些代码片段,以帮助开发者更快的搭建好自己的脚本工具。
选自MPI 作者:Ayush Tewari等 机器之心编译 参与:刘晓坤 马克斯·普朗克计算机科学研究所、斯坦福大学等近期提出了一种新型的面部三维重建模型,效果惊艳。...这个合成效果也很不错,表情动态很到位。只是可能原人的眼神实在太有戏,AI 也表示无力模仿。 ? 值得注意的是,这个面部重建模型的 pipeline 很复杂,但又几乎无处不在使用深度学习。...该数据集包含从 Youtube 抓取的 6000 多个名人的超过 140k 部视频。他们一共从这个数据集采样了 N=404k 的多帧图像 ? 第 l 个多帧图像 ? 由 M=4 帧 ?...从技术角度来看,本研究的主要贡献之一是提出了新型的多帧一致性损失,这确保了面部身份和反照率重建在同一主体的帧之间是一致的。...相比之下,我们提出了一种深度网络的基于视频的多帧自监督训练,其(i)在形状和外观上学习面部身份模型,同时(ii)联合学习重建 3D 面部。
1、问题描述 近期,线上有个重要Mysql客户的表在从5.6升级到5.7后,master上插入过程中出现"Duplicate key"的错误,而且是在主备及RO实例上都出现。...因此,首先得怀疑是5.7内核出了问题,因此第一反应是从官方bug list中搜索一下是否有类似问题存在,避免重复造车。经过搜索,发现官方有1个类似的bug,这里简单介绍一下该bug。...具体参见:https://www.cnblogs.com/zengkefu/p/5683258.html 背景知识2 mysql及Innodb引擎中对autoincrement访问及修改的流程 (1)...由于这个过程是加锁保护的,其他线程再获取autoincrement的时候就不会获取到重复的值。...联想到【官方文档】中对auto increment用法的介绍,update操作是可以只更新自增id但不触发auto increment推进的。按照这个思路,我尝试复现了用户的现场。
Python、Python3 写好程序后,如果我们想要在不执行程序的情况下快速确认是否有语法异常,我们应该怎么做呢?...其实要实现这一功能方法很简单,你可以直接使用默认的 py_compile 模块便可达成。...python3 -m py_compile example.py File "example.py", line 3 aaa x = ^ SyntaxError: invalid syntax 当然解决这个问题的方法有很多
需求:每次使用 show engine innodb status 查看mysql状态的时候, 要找的数据每次都找很久, 而且很多参数都忘了是啥意思. 很是浪费时间....所以整了这么个脚本.项目下载:项目地址: https://github.com/ddcw/innodb_status二进制包下载: https://github.com/ddcw/innodb_status...(redo)最新产生的LSN: 13646056317已刷盘的LSN: 13646056317最老的LSN: 13646056317最新检查点LSN: 13646056308redo已完成的IO次数:...(管道符)mysql -h127.0.0.1 -P3308 -p123456 -e 'show engine innodb status' | ..../innodb_status图片或者mysql -h127.0.0.1 -P3308 -p123456 -e 'show engine innodb status' > /tmp/innodb_status.txtcat
领取专属 10元无门槛券
手把手带您无忧上云