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

可以使用框架但千万不要依赖框架

我们是由于效率和易用性考虑才产生框架。框架能节省开发时间。框架强制使用公共约定,因此它能有效地解决一些共有的问题,比如页面渲染,assert判断,安全或者应用配置等。...这些共有的问题个共通特性是会在每个web应用上都用到。 框架是非常好,它能让决定连贯。框架能避免我们一大堆自定义模块来实现这些性能,我们所需要做就是将这些共用模块放在框架中实现。...我们就会按照框架既定方法来解决我们问题。因为使用框架既定方法来解决方法是最简单,这时候我们已经忽略了如何设计对未来扩展等需求最好代码了。...这就是衡量你是否职业时候了,交付对未来扩展最好代码而不是交付最容易实现代码。是为了以后需求更好设计你代码还是让以后的人做需求时候再考虑,这就是程序员责任感问题了。...Rails,或者其他框架,只是一个工具而已,你要做 是控制它。把坏代码归咎于无生命框架只能说明你不专业。 选择正确工具,或者正确地使用工具 使用框架开发也是在代码

98850

反思深度学习与传统计算机视觉关系

任务一开始很简单,例如通过询问图像中是否圆形或正方形,再到复杂任务,例如区分猫和狗。 学生每周都要编写计算机程序来完成任务,而你负责查看学生编写代码,并运行查看它们效果如何。...任何通过分配正确标签,来统计优化目标函数方法都可以使用,不管是否与任务“语义精神”有关。 这些网络最终能锁定“语义正确先验吗?当然可以。但是现在有大量证据表明,这并不是这些网络分内之事。...似乎更多方法来统计地分离标有高级人类类别的可视化数据集,然后有更多方法来分离这些“语义正确数据集。换句话说,这组低水平图像特征比我们想象更具“统计意义”。这是深度学习伟大发现。...不认为像深度学习与解决人工智能问题任何关系。但我确实认为,将深度学习、特性工程和逻辑推理结合起来,可以在广泛自动化空间中实现非常有趣和有用技术能力。...5、竟然用OpenCV实现了卡尔曼滤波 6、【走进OpenCV】滤波代码原来这么 7、【走进OpenCV】这样腐蚀下来让膨胀 8、小心!

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

Rust 不适合开发 Web API

像 Cloudflare 这样公司正在使用并鼓励人们 Rust 来运行微服务。Rust 编写软件可能比 C++ 或 C 安全、更小、简洁。...有些库试图解决这个问题,比如 libreauth,但它才刚刚开始开发。还有很多类似的 Web 框架问题。 SDK 呢?...N+1 问题是每个构建 Web 应用程序的人都应该知道。要点是:你一页照片(一次查询),你要显示每张照片作者,会有多少次查询:1,合并照片和作者,或者在检索照片后对每张照片进行查询以获取作者?...或者两次,第二次查询 ids 中 user.id,一次获取所有作者,然后重新设置他们照片属性。 N+1 查询通常优先使用数据库解决:比如将 N+1 查询改为单个查询,会带来明显性能优化。...我们很多方法来尝试和解决这些问题:你可以编写 SQL,并尝试使用 CTE 和 JOIN 在单个查询中完成大量工作,就像我们在 Observable 中所做那样,或者使用像 ActiveRecord

2.2K10

代码评审三怕

之前文章《JAVA数据处理常用技术》里提到protostuff这样序列化方式之所以省空间,是因为把原本方法名比如thisIsMethod1做了编号,比如标记为1,代码这是第一个方法。...对这类问题,首先明确这个jar引入解决问题,针对这些功能做回归;第二,一个团队多个应用的话,非核心应用先升级;第三,跟随策略,对于重要服务,先等其他团队升级线上运行一段时间没有发现问题再升级;第四...最可怕是评审出来问题后,评审人让代码者改什么,代码者就是无脑照办。评审人很可能由于使用脑补细节疏漏,造成问题。...随手优化 在《避免线上故障10条建议》和《设计开发中要避免两个坑和一种可借鉴设计思想》里都有详细说明过,随手优化可能会带来灾难。但是最近代码才发现这件事情自己也没做好。...最近提交了一次代码,被认真负责同事加了评论打回了。第一条在一个地方给我打了个问号。这个地方修改是:在一个方法里,一个代码片段和下面的代码片段中间2个空行。”

56330

如何快速有效成长为一名Java架构师?总结出了以下几点。第一:提醒自己还有多少没有学习第二: 不要试图证明自己是正确第三: “代码有效性”不是停下来地方,而是开始地方第四 :三遍第五:要有

最主要是,你们是一名资深架构师么?想成为架构师么?还是继续每天坚持加班代码??????这些问题,只有你们能明白且自己解决。...如果没有更好方法,“三遍”教会我们多种方法来解决问题,防止我们陷入窘境。 第五:要有一套完整系统化学习体系给自己学习 一、源码分析 ? 二、分布式架构 ? 三、微服务 ? 四、性能优化 ?...,在此向大家推荐一个交流学习群:685167672里面会分享一些资深架构师录制视频录像:Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构原理,JVM性能优化这些成为架构师必备知识体系...现在已经看到别人怎样解决,如果是你该怎样解决? 2、学到了什么?该怎样把这个技术应用到我过去代码里?怎么没有想用递归调用... 3、将怎样改进此代码?...如果该项目参与了开源,如果你确信更好解决方案,那就去做! 4、按原作者风格代码。按照这个规则实践编码,会帮助你进入原作者思维中,可以进一步改进代码同理心。

53030

肝了!Linux 开发调试经验

由于本人是做 C 语言开发,陈述经验也是 C 常用调试手段。 调试这个蛋疼事情,困扰着无数程序猿。很难有人保证自己代码一行错误都没有,问题你就要查。怎么查?...嗯,什么都没有,找代码的人自己查。找问题就是在众多信息中,抽丝剥茧,找到疑点、反复推演程序运行代码,最终找到作案那一行或者几行代码这个过程是折磨人地方,没有任何眉目时,令人茶不思饭不想。...测试意图也很明显,确认代码是否按照正确编码意图在运行!其实自己代码,自己还是可以轻松驾驭调试,原因就是自己清楚代码本意该如何运行,现在出现了什么问题。...理解其他人代码途径也就是通过阅读代码了解大致思路,通过日志、gdb、或者统计信息补充代码意图更多细节,或者修正理解不对思路。...关于代码修改 这个也是常用手段之一,反复地对比修改前后代码,确认修改代码准确性,全面性,反思自己代码修改是否全面?其实这里面工具就是 beyondcompare。

55010

开发中常见Oracle三大故障与调优方法

由于执行计划错误而给出了错误结果 第一类很让人无语,明明代码没有任何问题,但Oracle就是报这几个错误中一个。这一般是Oraclebug导致,少部分是执行计划错误导致。...因为,这至少还能出来正确结果嘛!这一般可以通过给数据库打补丁、修改参数、添加强制提示等方法来解决这类问题。...至于如何识别、解决开发过程中碰到这类bug,这个话题比较大比较深,以后有机会再和大家分享。...但在这里需要指明是,其实很多最终结果不正确程序,多数都是因为代码本身问题导致,而因为Oracle Bug导致问题只占极少部分。...无论公司是否意识到、是否资源去做,提高开发技术尤其是数据库端开发技术都是大势所趋,不去迎面解决问题而装鸵鸟是不可取。 Oracle开发和运维是一个系统性工作。

42930

经验分享 | 解决NN不work37个方法

除此之外,还要检查对每个样本或者batch进行多个预处理步骤是否都是正确。 与实现相关问题 16....梯度检查 Explore Gradient checking 如果你梯度下降是自己,那梯度检查可以帮助你确定反向传播是否正常工作。更多信息可以查看 1, 2, 3。 与训练相关问题 27....论文时一般也会指出使用了什么优化器,如果没有的话,就用 Adam 或者带动量SGD。 推荐阅读 Sebastian Ruder 这篇关于梯度下降优化超赞博客。 35....几种方法可以解决这个问题: - 降低学习率,特别是在前100次迭代就得到了 NaNs 时候; - NaNs 也可能是因为除0操作/对0或负数取对数造成,检查一下是否有这些问题; - Russell...以上就是 NN 不 work 时候可以尝试37种做法,出错原因很多种,当然没办法指望这37种做法就能完全 cover,但按照经验,尝试从这个列表里查错还是挺有用

1.2K20

Linux后台开发调试经验分享

由于本人是做 C 语言开发,陈述经验也是 C 常用调试手段。 调试很麻烦,困扰着无数程序员们。很难有人保证自己代码一行错误都没有,问题你就要查。怎么查?...嗯,什么都没有,找代码的人自己查。找问题就是在众多信息中,抽丝剥茧,找到疑点、反复推演程序运行代码,最终找到作案那一行或者几行代码这个过程很折磨人,没有任何眉目时,令人茶不思饭不想。...测试意图也很明显,确认代码是否按照正确编码意图在运行!其实自己代码,自己还是可以轻松驾驭调试,原因就是自己清楚代码本意该如何运行,现在出现了什么问题。...理解其他的人代码途径也就是通过阅读代码了解大致思路,通过日志、gdb、或者统计信息补充代码意图更多细节,或者修正理解不对思路。...5) 关于代码修改 这个也是常用手段之一,反复对比修改前后代码,确认修改代码准确性,全面性,反思自己代码修改是否全面?其实这里面工具就是 beyondcompare。

56930

基础 | React怎么判断什么时候该重新渲染组件?

你可以在CodePen点击预览里查看这个例子实际版本。 好吧,但是每次都重新渲染没有什么帮助。 意思是,非常感谢React细心谨慎。如果状态改变但是组件没有正确渲染的话更糟。...但是你可以在需要优化性能时重写这个方法来让React智能。比起让React每次都重新渲染,你可以告诉React你什么时候不像触发重新渲染。...当React将要渲染组件时他会执行shouldComponentUpdate方法来看它是否返回true(组件应该更新,也就是重新渲染)。...更新后代码仍然会每秒调用一次setState但是render只有在第一次加载时(或者title或done属性改变后)才会调用。你可以在这里点击预览看到。 看起来很多工作去做。...在shouldComponentUpdate方法前你可以测试React一个周期默认会消耗多少时间。这个信息做参考,在做性能优化时你可以做一个不盲目的决定。

2.8K10

.Net+SQL Server企业应用性能优化笔记3——SQL查询语句

如果性能问题是出在程序上,那么就要根据业务对程序中函数进行调整,可能是函数中写法问题,算法问题,这种调整如果不能解决问题的话,那么就要从架构上进行考虑,我们是不是应该使用这种技术,有没有替代方案来实现同样业务功能...这样服务器只提供WebService数据访问接口,不需要做绘图操作。 .net上优化暂时不表,今天主要讲数据库优化。...实际上这次调优这个项目就是如此,抓取出来存储过程尽是复杂逻辑,少则两三百行代码,多则五六百行,里面还有大量用户定义函数调用。...SARG就是查询参数意思,具体怎么才符合SARG,大家可以百度,已经很多相关文章了,就不累述。 涉及业务数据量大。...是否能够增加适当冗余字段,对数据库进行反范式化,或者如果数据实时性要求不高的话则可以建立中间汇总表,使用SQL作业来维护这个中间汇总表,查询时候只查询该中间汇总表即可。

65520

看大神教你正确理解单元测试,不容错过!

后面我会讲到一些解决办法,不过在最开始需要强调单元测试根本性质,这样你才不会误以为剩下内容讲的是集成测试或者验收测试什么。   再强调一次:单元测试根本性质就是要正确隔离待测代码。...其实但凡是测试其基本原理都是一样:你给测试用例一种输入,然后断言其结果,最后执行并观察断言是否正确;以此类推,你 N 个测试用例,每一个都覆盖某种可能输入(边界条件)并断言可能结果(结果可能是返回值...之后就是运行代码看它失败,接着代码让它成功,此时你了可靠测试用例于是可以立即着手优化或重构代码,直到最终交付。 所有的测试都是如此,不是么?...,每一步都只需要解决简单问题,最终解决一个复杂问题;再比如说有助于你写出设计良好,更加健壮,更加易懂代码等等。...比如说优化算法重构,测试重点在于覆盖边界条件,保证算法优化后不会遗漏原有的代码逻辑。而且这种重构往往还要附加性能测试才知道算法优化究竟有没有效果,这就需要 A/B 测试介入了。

52810

Hive Bug系列之关联结果不正确详解

Hive是互联数据仓库中使用最频繁工具,做为仓库技术人员,很大必要去深入了解它,并以认真的态度去对待工作中遇到每个问题,每个知识点,由点及面,让我们技术扎实,也让我们更有底气~~ ?...经过一段时间研究,对hive编译过程了一些自己见解,在探索过程中也写了挺多案例来验证里面的每一步过程,后面会坚持hive编译模块及serde模块系列文章,把自己学习到东西分享出来。...我们每一个sql,都会经过以上层层变换,最后变成mapreduce可以读懂执行计划,执行计算返回结果。最后结果是否正确就跟上面每一步都息息相关。...来看FilterOperator代码实现: ? ?...在这种情况下,来看一下,数据在最终OperatorTree上是怎么传输 ? 以上就是关联不出数据原因了 3、解决方案 解决方案以下几种: sql要严谨,没有使用到字段不要写。

2.4K50

简历做好这3点,求职成功率高几倍

1 创造简历 第一印象 看到简历第一感觉。就好像你这个人本身给别人留下第一印象。他是真诚,充满活力、靠谱,至少给自己贴上一个标签。 优化要点: 简洁明了,逻辑结构清晰。...或者在此处,加粗你优点特长哪些。 即使不写个人评价,也一定记得写上工作期望。 注意事项: 完全看不出个性特点,和没写没什么区别。...正确打开方式: 对自己定位:主攻前端,同时在其他方面打打辅助。不希望过于依赖别人,即使没有后端没有设计没有产品经理,依然想要把这个产品做到完美。毕竟全栈才能最高效地解决问题。...但通常很多问题并不一定已经被人解决,所以熟练地阅读源码、在手册、规范甚至 REPL 环境自己做实验才是最终解决问题办法。相信事实结果,自己动手去做。...是否博客,个人技术栈点—— 看到有这项 HR 两眼已经放光了,说明你真正热爱技术,业余时间投入到软件事业中。 喜欢书籍:《重构》《卓有成效程序员》《代码整洁之道》等。

54250

使用Optioanl优雅处理空值

如果他并非谨慎,或者他是一个面向接口编程狂热分子(当然,面向接口编程是正确方向),他会按照自己理解去调用接口,而不进行是否为null条件判断,如果这样的话,是非常危险,它很有可能出现空指针异常...2.文档性约束 在很多时候,我们会遇到遗留代码,对于遗留代码,整体性改造可能性很小。我们希望通过阅读接口实现,来进行接口说明。...对于上述代码,还可以使用Optional进行优化。...Optional作为返回值 当个实体返回 那Optioanl可以做为返回值吗?其实它是非常满足是否存在这个语义。 你如说,你要根据id获取用户信息,这个用户可能存在或者不存在。...即便 java bean中getter是符合Optional,但是因为java bean 太多了,这样会导致你代码50%以上进行Optinal判断,这样便污染了代码

1.8K20

如何优雅地根治null值引起Bug!

如果他并非谨慎,或者他是一个面向接口编程狂热分子(当然,面向接口编程是正确方向),他会按照自己理解去调用接口,而不进行是否为null条件判断,如果这样的话,是非常危险,它很有可能出现空指针异常...2.文档性约束 在很多时候,我们会遇到遗留代码,对于遗留代码,整体性改造可能性很小。 我们希望通过阅读接口实现,来进行接口说明。...如果只对控制存在判断,建议使用Optional。 Optioanl正确使用 Optional如此强大,它表达了计算机最原始特性(0 or 1),那它如何正确被使用呢!...Optinal作为返回值 当个实体返回 那Optioanl可以做为返回值吗? 其实它是非常满足是否存在这个语义。 你如说,你要根据id获取用户信息,这个用户可能存在或者不存在。...即便 java bean中getter是符合Optional,但是因为java bean 太多了,这样会导致你代码50%以上进行Optinal判断,这样便污染了代码

84910

优秀!高级Java都这样优雅处理空值

有时候,更可怕是系统因为这些空值情况,会抛出空指针异常,导致业务系统发生问题。 此篇文章,总结了几种关于空值处理手法,希望对读者帮助。...如果他并非谨慎,或者他是一个面向接口编程狂热分子 (当然,面向接口编程是正确方向),他会按照自己理解去调用接口,而不进行是否为 null 条件判断,如果这样的话,是非常危险,它很有可能出现空指针异常...文档性约束 在很多时候,我们会遇到遗留代码,对于遗留代码,整体性改造可能性很小。 我们希望通过阅读接口实现,来进行接口说明。...对于上述代码,还可以使用 Optional 进行优化。...Optional 作为返回值 当个实体返回 那 Optioanl 可以做为返回值吗? 其实它是非常满足是否存在这个语义。 你如说,你要根据 id 获取用户信息,这个用户可能存在或者不存在。

1.6K30

【译】送给你代码审查问题手册

下面这份列表足够帮助你提出好代码审查反馈了。 实现 此代码更改会执行它应该做事情吗? 这种解决方法是最简单吗? 这个更改引入一些不需要编译时或运行时依赖吗?...是否使用了不应该使用框架、API、库、服务? 是否存在可以提升解决方法未使用框架、API、库、服务? 代码是否处于正确抽象级别? 代码是否模块化做是否足够好?...你是否其他解决方案,该方案在代码可维护性、可读性、性能、安全方面表现更好? 是否已经存在类似功能函数?如果有,为什么不复用? 是否最佳实践、设计模式或特定语言模式可以优化代码?...是否额外测试用例、输入或边界用例以供测试? 依赖 如果这个修改需要更新代码以外文件,例如更新文档,配置,readme文件。是否完成了这些更新? 这个修改是否会对系统其他地方造成影响?...专家意见 你是否认为特定专家(如安全专家或可用性专家)应该先检查代码,然后再提交代码这个代码修改会影响其他团队吗?他们也应该发表意见吗? 好了,以上就是最为紧迫一些问题列表。

1.1K10

机器学习43条军规:解密谷歌机器学习工程最佳实践

规则7:将启发规则转化为特征,或者在外部处理它们。 机器学习系统解决问题通常都不是新问题,而是对已有问题进一步优化。这意味着很多已有的规则或者启发式规则可供使用。...比如推荐系统逼格这种问题,模型可能很难优化,但是只要能量化出来,就可以通过其他方法来尽量减少,例如单独去学习逼格物品特征,或者在召回阶段进行一定倾斜。...这种问题以下几种方法来解决,核心思想都是偏重模型已经看到过数据。 对覆盖更多query(或类似角色,根据业务不同)特征给予更强正则化。...可以用加入位置特征方法来避免这种问题,具体来讲,在训练时加入位置特征,预测时去掉位置特征,或者给所有样本一样位置特征。这样会让模型更正确地分配特征权重。...而每个个体,尤其是工程师们,显然喜欢能够直接优化目标,而这也是机器学习系统常见场景 。现在也有一些多目标学习系统在试图解决这种问题

93450

解密谷歌机器学习工程最佳实践——机器学习43条军规

规则7:将启发规则转化为特征,或者在外部处理它们。 机器学习系统解决问题通常都不是新问题,而是对已有问题进一步优化。这意味着很多已有的规则或者启发式规则可供使用。...比如推荐系统逼格这种问题,模型可能很难优化,但是只要能量化出来,就可以通过其他方法来尽量减少,例如单独去学习逼格物品特征,或者在召回阶段进行一定倾斜。...这种问题以下几种方法来解决,核心思想都是偏重模型已经看到过数据。 对覆盖更多query(或类似角色,根据业务不同)特征给予更强正则化。...可以用加入位置特征方法来避免这种问题,具体来讲,在训练时加入位置特征,预测时去掉位置特征,或者给所有样本一样位置特征。这样会让模型更正确地分配特征权重。...而每个个体,尤其是工程师们,显然喜欢能够直接优化目标,而这也是机器学习系统常见场景 。现在也有一些多目标学习系统在试图解决这种问题

72741
领券