首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我们软件出了什么问题------《敏捷软件开发:原则、模式与实践》(一)

第一篇 软件设计存在问题 我们知道,系统设计,是存在于头脑中衣服至关重要图像。 即使我们在一开始设计阶段,就非常清晰了解了需求,甚至于在发布时候,依然清楚。...但是在接下来,随着不断使用,弊端、不足会一一被暴露出来。系统变得越来越难以维护,最后,即使仅仅进行最简单更改,也需要花费巨大努力。...笔者提出了一下观点:当软件出现了下面任何一种气味时,就表明软件正在腐化: 1、僵化性:很难对系统进行改动。因为牵扯到其他太多部分改动。...2、脆弱性:对系统改动会导致心痛中和改动地方在概念上无关许多地方出现问题。(开发人员就像是一只不停追逐自己尾巴狗) 3、牢固性:很难解开系统纠结,使之可重用。...而我们希望是,可以更容易地进行哪些保持设计变动。 5、不必要复杂性:设计中包含有不具任何直接好处基础结构。 6、不必要重复:设计中包含有重复结构,而该结构本可以使用单一抽象进行统一。

79080

【学术】试试这个!研究人员设计出了更好推荐算法

改进推荐算法在评级数据“稀疏”情况下尤其有效。 亚马逊和Netflix等网站推荐系统使用了一种名为“协同过滤”技术。...该算法基本策略很简单:当试图预测顾客对某一产品评价时,不仅要使用相似品味的人评分,而且要使用与这些人相似的人评分等等。 这个想法很直观,但在实践中,一切都取决于具体相似性度量。...或者换句话说,当你从一个朋友喜好转移到朋友朋友时,这个过程中引入了什么噪音,是否有一个正确方法来量化这种噪音,这样我们就能平衡我们所引入噪音所带来信号。...为了预测电影口味,有用功能可能包括电影类型,它票房表现,获得奥斯卡提名数量,领导者历史票房成功记录,分销商,或者任何其他东西。...“当我们对一部电影进行采样时,我们实际上并不知道它功能是什么,所以如果我们想准确预测这个功能,我们将无法做到,”Lee说。“但如果我们只是想估算用户功能之间差异,我们则可以计算出这个差异。”

79050
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为了解决这个 RTT 过长问题,我祭出了大招!

    ,今天我要分享这个 case 就是个典型,废话不多说,进入正题。...语法执行一些语句 查看已加载详细信息,比如这个类从哪个 jar 包加载。...trace 执行结果(MVC 服务执行时间 80ms 左右)与前端请求有 1/3 概率超过 3s 结论告诉了运维,让他们排查一下从反向代理层到站点层这中间是否有啥问题,不一会儿果然查出了问题。...1/3 概率打到这台下线机器 ip 上,由于这个 ip 对应机器无法响应这个请求,等到超时后,kongfu 会重试把这个请求打到另外正常两台机器中任意一台,也就是说请求 3s 中大部分时间花在了等待那台不正常...TCP 延迟确认机制和 Nagle 算法及拥塞控制导致,自然而然就会朝着这个方向 去解决了,比如打开 TCP_NODELAY 选项等。

    1.6K40

    升级到 MySQL 8.0,付出了惨痛代价!

    下面将分享我们如何解决 8.0 迁移项目的难题,以及在这个过程中发现一些惊喜。当最初确定项目范围时,可以明确是,迁移到 8.0 会比迁移到 5.6 或 MyRocks 更困难。...使用 RBR 还为我们提供了一个解决应用程序问题替代解决方案,我们在将一些副本集移动到 8.0 主实例时遇到了这个问题,将在后面讨论。...使用了自动转义查询中列名软件库应用程序没有遇到这些问题,但并非所有应用程序都使用这些软件库。解决这个问题很简单,但是需要时间来跟踪生成这些查询应用程序属主和代码库。...5.6 有一个 bug,在 8.0 中得到了修复,但是修复增加了事务死锁可能性。在分析了查询之后,我们能够通过降低隔离级别来解决该问题。这个选项对我们来说是可用,因为我们已经切换到基于行复制。...但是,对于非常大 mysqld 实例,这可能需要在活跃生产服务器上运行很多天,而且这个脆弱过程可能会在完成之前被中断。对于这些大型实例,我们必须修改备份和恢复系统来应对重建。

    1.5K20

    Navicat软件连接MySQL数据库步骤,给了你sql脚本,如何在navicat 软件里面执行这个脚本

    目录 背景 打开软件,连接mysql数据库 第一步:将mysql数据库和软件关联起来 第二步 : 将我给你sql脚本,在这个连接里面执行 背景 确保自己电脑安装了mysql数据库,并且安装了数据库可视化软件...,可视化软件navicat 就是这个软件,这个版本比较高,还有其他版本,随便下载一个就可以了 有了以上东西,就可以打开这个软件了 打开软件,连接mysql数据库 刚下载打开还没有将自己下载...mysql数据库 和这个软件关联起来,所以应该是空白,我是用这个软件 关联了很多数据库,所以你可以看到列表很多 第一步:将mysql数据库和软件关联起来 以上写完 按 确定 以上就创建了一个名字叫...jing连接,也就是这样我们用这个软件 和 mysql数据库就关联起来了,以后我们进入 jing 这个里面 ,就可以操作我们之前下载mysql数据库了,这个就是可视化工具,用界面的形式 操作我们下载...第二步 : 将我给你sql脚本,在这个连接里面执行 这样就可以将sql脚本里面的各种各样表 创建到自己mysql数据库里面,那么如何执行 我给你sql脚本是这样,以.sql为结尾文件

    2.6K20

    为了治好拖延症,我祭出了这个自虐项目,把我搞卧槽卧槽

    为了改头换面重新做人,在某个夜深风高夜晚,我扛着我小锄头,挖出了我压箱底宝贝,轻轻掸去了一层浮灰... ?...GitHub 网址: https://github.com/maebert/themostdangerouswritingapp 这个项目设计宗旨是让我们进入丝滑状态,作者 Manu Ebert 小哥在某个周日下午怼了两杯葡萄酒...建议女孩子,当男朋友惹你生气时,先让他在这上面写一篇万字检讨书,写不完不许睡觉那种... ? 顺便来看看其他用过这个项目自虐老哥们怎么说吧... ? 怎么样,是不是想尝试一波?...在这个网站上,还可以设置你创作时间和词汇数,也就是制定一个小目标,你只要在目标内完成任务,那么你写东西就不会被删掉... ?...再多说一句,可能看到这有些同学觉得这个项目有点华而不实,可能用这样那样方法,比如我一直随便敲键盘也可以过关,但是记住你要用这个去做是什么,是短时间集中注意力进入写作状态,发现优点在我看来永远只比盯着缺陷来重要

    69110

    如何快速优雅编写一个脚本程序?用这个

    在日常工作当中,我们会不时借助脚本程序来处理一些重复性工作,以帮助我们提升工作效率。 近几年 Python 与 Ruby 发展迅猛,使得它们成为了很多人编写脚本程序时首选语言。...而对于一些逻辑简单轻量级脚本,我们其实可以选择用 bash 来完成。 bash 可以让你在无任何其它语言或第三方依赖安装环境下,快速写出脚本程序。...另外,选择使用 bash,也能让程序代码更加简洁、脚本体积更加轻盈。 如果我们要保持代码简洁,首先要做第一步,就是保证不引入其它无用第三方库,即使他们提供了一些颇为强大功能与便捷接口。...在不引入其它第三方依赖,单纯使用 bash 情况下,如何快速写出实用、简洁脚本程序呢?...https://github.com/dylanaraps/pure-bash-bible 这本书籍收集汇总了编写 bash 脚本经常会使用到一些代码片段,以帮助开发者更快搭建好自己脚本工具。

    1.2K30

    MySQL密码加密认证简单脚本

    Your MySQL connection id is 2837 不要小看这个错误,有些业务验证是不允许出现Warning,所以可能有些大厂还需要自己定制一下这个错误逻辑。...所以需求二特点就是手工维护密码啰嗦,手工输入密码太原始。 那我们写脚本,但是脚本里面的密码还是可见,调用明文密码问题解决了,但是内容中密码还是可读。...这个过程是在脚本逻辑来实现,所以我们得到明文密码概率要低一些。 另外一类就是对文件加密,比如对整个文件加密,加密之后文件就没法读了。所以加密后密码又被加密了。...对文件加密有shell方式还有Python等语言会 如果要调用脚本时候,其实就是先解密文件,然后调用解密逻辑,得到真正密码,然后开启访问请求。 比如我得到了一个加密后密码串。...调用解密逻辑是decrypt_passwd,当然这个是可读还可逆,我们其实可以再加入一些复杂因子来干扰。

    94920

    这个面部3D重建模型,造出了6000多个名人数字面具

    选自MPI 作者:Ayush Tewari等 机器之心编译 参与:刘晓坤 马克斯·普朗克计算机科学研究所、斯坦福大学等近期提出了一种新型面部三维重建模型,效果惊艳。...这个合成效果也很不错,表情动态很到位。只是可能原人眼神实在太有戏,AI 也表示无力模仿。 ? 值得注意是,这个面部重建模型 pipeline 很复杂,但又几乎无处不在使用深度学习。...该数据集包含从 Youtube 抓取 6000 多个名人超过 140k 部视频。他们一共从这个数据集采样了 N=404k 多帧图像 ? 第 l 个多帧图像 ? 由 M=4 帧 ?...从技术角度来看,本研究主要贡献之一是提出了新型多帧一致性损失,这确保了面部身份和反照率重建在同一主体帧之间是一致。...相比之下,我们提出了一种深度网络基于视频多帧自监督训练,其(i)在形状和外观上学习面部身份模型,同时(ii)联合学习重建 3D 面部。

    1.6K60

    MySQL密码加密认证简单脚本

    Your MySQL connection id is 2837 不要小看这个错误,有些业务验证是不允许出现Warning,所以可能有些大厂还需要自己定制一下这个错误逻辑。...所以需求二特点就是手工维护密码啰嗦,手工输入密码太原始。 那我们写脚本,但是脚本里面的密码还是可见,调用明文密码问题解决了,但是内容中密码还是可读。...这个过程是在脚本逻辑来实现,所以我们得到明文密码概率要低一些。 另外一类就是对文件加密,比如对整个文件加密,加密之后文件就没法读了。所以加密后密码又被加密了。...对文件加密有shell方式还有python等语言会 如果要调用脚本时候,其实就是先解密文件,然后调用解密逻辑,得到真正密码,然后开启访问请求。 比如我得到了一个加密后密码串。...调用解密逻辑是decrypt_passwd,当然这个是可读还可逆,我们其实可以再加入一些复杂因子来干扰。

    1.3K50

    MySQL这个bug,坑了多少人?

    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推进。按照这个思路,我尝试复现了用户现场。

    53520
    领券