我们是由于效率和易用性的考虑才产生框架。框架能节省开发时间。框架强制使用公共的约定,因此它能有效地解决一些共有的问题,比如页面渲染,assert判断,安全或者应用配置等。...这些共有的问题有个共通的特性是会在每个web应用上都用到。 框架是非常好的,它能让决定更连贯。框架能避免我们写一大堆自定义模块来实现这些性能,我们所需要做的就是将这些共用模块放在框架中实现。...我们就会按照框架既定的方法来解决我们的问题。因为使用框架既定的方法来解决方法是最简单的,这时候我们已经忽略了如何设计对未来扩展等需求最好的代码了。...这就是衡量你是否更职业的时候了,交付对未来扩展最好的代码而不是交付最容易实现的代码。是为了以后的需求更好的设计你的代码还是让以后的人做需求的时候再考虑,这就是程序员的责任感问题了。...Rails,或者其他框架,只是一个工具而已,你要做的 是控制它。把坏代码归咎于无生命的框架只能说明你的不专业。 选择正确的工具,或者正确地使用工具 使用框架开发也是在写代码。
任务一开始很简单,例如通过询问图像中是否有圆形或正方形,再到更复杂的任务,例如区分猫和狗。 学生每周都要编写计算机程序来完成任务,而你负责查看学生编写的代码,并运行查看它们的效果如何。...任何通过分配正确标签,来统计优化目标函数的方法都可以使用,不管是否与任务的“语义精神”有关。 这些网络最终能锁定“语义正确”的先验吗?当然可以。但是现在有大量的证据表明,这并不是这些网络分内之事。...似乎有更多的方法来统计地分离标有高级人类类别的可视化数据集,然后有更多的方法来分离这些“语义正确”的数据集。换句话说,这组低水平的图像特征比我们想象的更具“统计意义”。这是深度学习的伟大发现。...我不认为像深度学习与解决人工智能的问题有任何关系。但我确实认为,将深度学习、特性工程和逻辑推理结合起来,可以在广泛的自动化空间中实现非常有趣和有用的技术能力。...5、我竟然用OpenCV实现了卡尔曼滤波 6、【走进OpenCV】滤波代码原来这么写 7、【走进OpenCV】这样腐蚀下来让我膨胀 8、小心!
像 Cloudflare 这样的公司正在使用并鼓励人们写 Rust 来运行微服务。Rust 编写的软件可能比 C++ 或 C 更安全、更小、更简洁。...有些库试图解决这个问题,比如 libreauth,但它才刚刚开始开发。还有很多类似的 Web 框架问题。 SDK 呢?...N+1 问题是每个构建 Web 应用程序的人都应该知道的。要点是:你有一页照片(一次查询),你要显示每张照片的作者,会有多少次查询:1,合并照片和作者,或者在检索照片后对每张照片进行查询以获取作者?...或者两次,第二次查询 ids 中的 user.id,一次获取所有作者,然后重新设置他们的照片属性。 N+1 查询通常优先使用数据库解决:比如将 N+1 查询改为单个查询,会带来明显的性能优化。...我们有很多方法来尝试和解决这些问题:你可以编写 SQL,并尝试使用 CTE 和 JOIN 在单个查询中完成大量工作,就像我们在 Observable 中所做的那样,或者使用像 ActiveRecord
我之前的文章《JAVA数据处理的常用技术》里有提到protostuff这样的序列化方式之所以更省空间,是因为把原本的方法名比如thisIsMethod1做了编号,比如标记为1,代码这是第一个方法。...对这类问题,首先明确这个jar引入解决的问题,针对这些功能做回归;第二,一个团队有多个应用的话,非核心应用先升级;第三,跟随策略,对于重要的服务,先等其他团队升级线上运行一段时间没有发现问题再升级;第四...最可怕的是评审出来问题后,评审人让写代码者改什么,写代码者就是无脑照办。评审人很可能由于使用脑补细节有疏漏,造成问题。...随手优化 在《避免线上故障的10条建议》和《设计开发中要避免的两个坑和一种可借鉴的设计思想》里我都有详细说明过,随手优化可能会带来的灾难。但是最近写代码才发现这件事情我自己也没做好。...最近我提交了一次代码,被认真负责的同事加了评论打回了。第一条在一个地方给我打了个问号。这个地方我的修改是:在一个方法里,一个代码片段和下面的代码片段中间有2个空行。”
最主要的是,你们是一名资深架构师么?想成为架构师么?还是继续每天坚持加班的桥写代码??????这些问题,只有你们能明白且自己解决。...如果没有更好的方法,“写三遍”教会我们有多种方法来解决问题,防止我们陷入窘境。 第五:要有一套完整系统化的学习体系给自己学习 一、源码分析 ? 二、分布式架构 ? 三、微服务 ? 四、性能优化 ?...,在此我向大家推荐一个交流学习群:685167672里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系...现在我已经看到别人怎样解决的,如果是你该怎样解决? 2、我学到了什么?该怎样把这个技术应用到我过去写的代码里?我怎么没有想用递归调用... 3、我将怎样改进此代码?...如果该项目参与了开源,如果你确信有更好的解决方案,那就去做! 4、按原作者的风格写代码。按照这个规则实践编码,会帮助你进入原作者的思维中,可以进一步改进代码的同理心。
由于本人是做 C 语言的开发,陈述的经验也是 C 常用的调试手段。 调试这个蛋疼的事情,困扰着无数程序猿。很难有人保证自己写的代码一行错误都没有,有问题你就要查。怎么查?...嗯,什么都没有,找写代码的人自己查。找问题就是在众多信息中,抽丝剥茧,找到疑点、反复推演程序运行的代码,最终找到作案的那一行或者几行代码。 这个过程是折磨人的地方,没有任何眉目时,令人茶不思饭不想。...测试的意图也很明显,确认代码是否按照正确的编码意图在运行!其实自己写的代码,自己还是可以轻松驾驭调试的,原因就是自己清楚代码的本意该如何运行,现在出现了什么问题。...理解其他人写的代码的途径也就是通过阅读代码了解大致思路,通过日志、gdb、或者统计信息补充代码意图的更多细节,或者修正理解不对的思路。...关于代码修改 这个也是我常用的手段之一,反复地对比修改前后的代码,确认修改代码的准确性,全面性,反思自己代码修改是否全面?其实这里面工具就是 beyondcompare。
由于执行计划错误而给出了错误的结果 第一类很让人无语,明明写的代码没有任何问题,但Oracle就是报这几个错误中的一个。这一般是Oracle的bug导致的,少部分是执行计划错误导致的。...因为,这至少还能出来正确的结果嘛!这一般可以通过给数据库打补丁、修改参数、添加强制提示等方法来解决这类问题。...至于如何识别、解决开发过程中碰到的这类bug,这个话题比较大比较深,以后有机会我再和大家分享。...但在这里我需要指明的是,其实很多最终结果不正确的程序,多数都是因为代码本身的问题导致的,而因为Oracle Bug导致的问题只占极少的部分。...无论公司是否意识到、是否有资源去做,提高开发技术尤其是数据库端的开发技术都是大势所趋,不去迎面解决问题而装鸵鸟是不可取的。 Oracle的开发和运维是一个系统性的工作。
除此之外,还要检查对每个样本或者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,但按照我的经验,尝试从这个列表里查错还是挺有用的。
由于本人是做 C 语言的开发,陈述的经验也是 C 常用的调试手段。 调试很麻烦,困扰着无数程序员们。很难有人保证自己写的代码一行错误都没有,有问题你就要查。怎么查?...嗯,什么都没有,找写代码的人自己查。找问题就是在众多信息中,抽丝剥茧,找到疑点、反复推演程序运行的代码,最终找到作案的那一行或者几行代码。 这个过程很折磨人,没有任何眉目时,令人茶不思饭不想。...测试的意图也很明显,确认代码是否按照正确的编码意图在运行!其实自己写的代码,自己还是可以轻松驾驭调试的,原因就是自己清楚代码的本意该如何运行,现在出现了什么问题。...理解其他的人写的代码途径也就是通过阅读代码了解大致思路,通过日志、gdb、或者统计信息补充代码意图的更多细节,或者修正理解不对的思路。...5) 关于代码修改 这个也是我常用的手段之一,反复的对比修改前后的代码,确认修改代码的准确性,全面性,反思自己代码修改是否全面?其实这里面工具就是 beyondcompare。
你可以在CodePen点击预览里查看这个例子的实际版本。 好吧,但是每次都重新渲染没有什么帮助。 我的意思是,我非常感谢React的细心谨慎。如果状态改变但是组件没有正确渲染的话更糟。...但是你可以在需要优化性能时重写这个方法来让React更智能。比起让React每次都重新渲染,你可以告诉React你什么时候不像触发重新渲染。...当React将要渲染组件时他会执行shouldComponentUpdate方法来看它是否返回true(组件应该更新,也就是重新渲染)。...更新后的代码仍然会每秒调用一次setState但是render只有在第一次加载时(或者title或done属性改变后)才会调用。你可以在这里点击预览看到。 看起来有很多工作去做。...在写shouldComponentUpdate方法前你可以测试React一个周期默认会消耗多少时间。有了这个信息做参考,在做性能优化时你可以做一个不盲目的决定。
如果性能问题是出在程序上,那么就要根据业务对程序中的函数进行调整,可能是函数中的写法有问题,算法有问题,这种调整如果不能解决问题的话,那么就要从架构上进行考虑,我们是不是应该使用这种技术,有没有替代的方案来实现同样的业务功能...这样服务器只提供WebService的数据访问接口,不需要做绘图操作。 .net上的优化我暂时不表,今天主要讲数据库的优化。...实际上这次我调优的这个项目就是如此,抓取出来的存储过程尽是复杂的逻辑,少则两三百行代码,多则五六百行,里面还有大量的用户定义函数的调用。...SARG就是查询参数的意思,具体怎么写才符合SARG,大家可以百度,已经有很多相关文章了,我就不累述。 涉及的业务数据量大。...是否能够增加适当的冗余字段,对数据库进行反范式化,或者如果数据的实时性要求不高的话则可以建立中间汇总表,使用SQL作业来维护这个中间汇总表,查询的时候只查询该中间汇总表即可。
后面我会讲到一些解决的办法,不过在最开始我需要强调单元测试的根本性质,这样你才不会误以为剩下的内容讲的是集成测试或者验收测试什么的。 再强调一次:单元测试的根本性质就是要正确隔离待测代码。...其实但凡是测试其基本原理都是一样的:你给测试用例一种输入,然后断言其结果,最后执行并观察断言是否正确;以此类推,你写 N 个测试用例,每一个都覆盖某种可能的输入(边界条件)并断言可能的结果(结果可能是返回值...之后就是运行代码看它失败,接着写代码让它成功,此时你有了可靠的测试用例于是可以立即着手优化或重构代码,直到最终交付。 所有的测试都是如此,不是么?...,每一步都只需要解决简单的问题,最终解决一个复杂的问题;再比如说有助于你写出设计良好,更加健壮,更加易懂的代码等等。...比如说优化算法的重构,写测试的重点在于覆盖边界条件,保证算法优化后不会遗漏原有的代码逻辑。而且这种重构往往还要附加性能测试才知道算法优化究竟有没有效果,这就需要 A/B 测试的介入了。
Hive是互联数据仓库中使用最频繁的工具,做为仓库的技术人员,有很大必要去深入了解它,并以认真的态度去对待工作中遇到的每个问题,每个知识点,由点及面,让我们的技术更扎实,也让我们更有底气~~ ?...经过一段时间的研究,我对hive的编译过程有了一些自己的见解,在探索的过程中也写了挺多的案例来验证里面的每一步过程,后面会坚持写hive编译模块及serde模块系列的文章,把自己学习到的东西分享出来。...我们写的每一个sql,都会经过以上层层变换,最后变成mapreduce可以读懂的执行计划,执行计算返回结果。最后的结果是否正确就跟上面每一步都息息相关。...我来看FilterOperator的代码实现: ? ?...在这种情况下,来看一下,数据在最终的OperatorTree上是怎么传输的 ? 以上就是关联不出数据的原因了 3、解决方案 解决方案有以下几种: 写sql要严谨,没有使用到的字段不要写。
1 创造简历的 第一印象 看到简历的第一感觉。就好像你这个人本身给别人留下的第一印象。他是真诚的,充满活力的、靠谱的,至少给自己贴上一个标签。 优化要点: 简洁明了,逻辑结构清晰。...或者在此处,加粗你的优点特长有哪些。 即使不写个人评价,也一定记得写上工作期望。 注意事项: 完全看不出个性特点,写和没写没什么区别。...正确的打开方式: 我对自己的定位:主攻前端,同时在其他方面打打辅助。我不希望过于依赖别人,即使没有后端没有设计没有产品经理,我依然想要把这个产品做到完美。毕竟全栈才能最高效地解决问题。...但通常很多问题并不一定已经被人解决,所以熟练地阅读源码、在手册、规范甚至 REPL 的环境自己做实验才是最终解决问题的办法。相信事实的结果,自己动手去做。...是否有博客,个人技术栈点—— 看到有这项的 HR 两眼已经放光了,说明你真正的热爱技术,业余时间有投入到软件事业中。 我喜欢的书籍:《重构》《卓有成效的程序员》《代码整洁之道》等。
如果他并非谨慎,或者他是一个面向接口编程的狂热分子(当然,面向接口编程是正确的方向),他会按照自己的理解去调用接口,而不进行是否为null的条件判断,如果这样的话,是非常危险的,它很有可能出现空指针异常...2.文档性约束 在很多时候,我们会遇到遗留代码,对于遗留代码,整体性改造的可能性很小。我们更希望通过阅读接口的实现,来进行接口的说明。...对于上述代码,还可以使用Optional进行优化。...Optional作为返回值 当个实体的返回 那Optioanl可以做为返回值吗?其实它是非常满足是否存在这个语义的。 你如说,你要根据id获取用户信息,这个用户有可能存在或者不存在。...即便 我java bean中的getter是符合Optional的,但是因为java bean 太多了,这样会导致你的代码有50%以上进行Optinal的判断,这样便污染了代码。
如果他并非谨慎,或者他是一个面向接口编程的狂热分子(当然,面向接口编程是正确的方向),他会按照自己的理解去调用接口,而不进行是否为null的条件判断,如果这样的话,是非常危险的,它很有可能出现空指针异常...2.文档性约束 在很多时候,我们会遇到遗留代码,对于遗留代码,整体性改造的可能性很小。 我们更希望通过阅读接口的实现,来进行接口的说明。...如果只对控制的存在判断,我建议使用Optional。 Optioanl的正确使用 Optional如此强大,它表达了计算机最原始的特性(0 or 1),那它如何正确的被使用呢!...Optinal作为返回值 当个实体的返回 那Optioanl可以做为返回值吗? 其实它是非常满足是否存在这个语义的。 你如说,你要根据id获取用户信息,这个用户有可能存在或者不存在。...即便 我java bean中的getter是符合Optional的,但是因为java bean 太多了,这样会导致你的代码有50%以上进行Optinal的判断,这样便污染了代码。
有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。 此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。...如果他并非谨慎,或者他是一个面向接口编程的狂热分子 (当然,面向接口编程是正确的方向),他会按照自己的理解去调用接口,而不进行是否为 null 的条件判断,如果这样的话,是非常危险的,它很有可能出现空指针异常...文档性约束 在很多时候,我们会遇到遗留代码,对于遗留代码,整体性改造的可能性很小。 我们更希望通过阅读接口的实现,来进行接口的说明。...对于上述代码,还可以使用 Optional 进行优化。...Optional 作为返回值 当个实体的返回 那 Optioanl 可以做为返回值吗? 其实它是非常满足是否存在这个语义的。 你如说,你要根据 id 获取用户信息,这个用户有可能存在或者不存在。
下面这份列表足够帮助你提出好的代码审查反馈了。 实现 此代码更改会执行它应该做的事情吗? 这种解决方法是最简单的吗? 这个更改有引入一些不需要的编译时或运行时的依赖吗?...是否使用了不应该使用的框架、API、库、服务? 是否存在可以提升解决方法的未使用的框架、API、库、服务? 代码是否处于正确的抽象级别? 代码是否的模块化做的是否足够好?...你是否有其他的解决方案,该方案在代码可维护性、可读性、性能、安全方面表现更好? 是否已经存在类似功能的函数?如果有,为什么不复用? 是否有最佳实践、设计模式或特定语言模式可以优化代码?...是否有额外的测试用例、输入或边界用例以供测试? 依赖 如果这个修改需要更新代码以外的文件,例如更新文档,配置,readme文件。是否完成了这些更新? 这个修改是否会对系统其他地方造成影响?...专家意见 你是否认为特定专家(如安全专家或可用性专家)应该先检查代码,然后再提交代码? 这个代码修改会影响其他团队吗?他们也应该发表意见吗? 好了,以上就是最为紧迫的一些问题列表。
规则7:将启发规则转化为特征,或者在外部处理它们。 机器学习系统解决的问题通常都不是新问题,而是对已有问题的进一步优化。这意味着有很多已有的规则或者启发式规则可供使用。...比如推荐系统逼格这种问题,模型可能很难优化,但是只要能量化出来,就可以通过其他方法来尽量减少,例如单独去学习有逼格物品的特征,或者在召回阶段进行一定倾斜。...这种问题有以下几种方法来解决,核心思想都是更偏重模型已经看到过的数据。 对覆盖更多query(或类似角色,根据业务不同)的特征给予更强的正则化。...可以用加入位置特征的方法来避免这种问题,具体来讲,在训练时加入位置特征,预测时去掉位置特征,或者给所有样本一样的位置特征。这样会让模型更正确地分配特征的权重。...而每个个体,尤其是工程师们,显然更喜欢能够直接优化的目标,而这也是机器学习系统常见的场景 。现在也有一些多目标学习系统在试图解决这种问题。
领取专属 10元无门槛券
手把手带您无忧上云