摘要:作为一个有点追求的程序员,应该每天练习写代码,而夜深人静的时候,似乎比较合适,至少对我来说是这样。 ? 我可真没时间写代码 写代码是我的工作,也是我的兴趣,本来以为,我应该可以一直写下去。...然而,现在的我,同时负责了多个工作:产品、开发、运营、运维、以及测试。还有,写博客也是我的工作之一。每天的工作充实而快乐,唯一的问题在于:我似乎越来越没有时间写代码了。...Fundebug提供实时、专业的错误监控服务,为您的线上代码保驾护航,欢迎大家免费使用! 我为什么晚上写代码 套用海贼王的热血台词,我是要成为专家的程序员!...; 夜深人静,思路更加清晰,至少我是这样的; 现在,我每天晚上大概会写1~2个小时代码,工作量不会太多,但是对代码质量的要求会更高。...对我而言,晚上写代码更多的是练习编程技能,而不是单纯为了完成工作任务。这样,我会花更多时间去思考:如何写出更好的代码?如何提高编程效率?哪些是我的知识盲点?至少我会写更加全面的单元测试。
华沙Kordegarda画廊推出了一项新的VR体验。这项体验将把观众“送”到74年前的华沙,亲身经历当年所发生的那场惊心动魄的事件。 ? 1944年8月1日,正值第二次世界大战。...波兰地下军为反抗德国占领军,发动了一场著名的战役——华沙起义。这场起义的目的就是想赶在苏联红军到达华沙前,解放德国的占领,以避免受到苏联的控制。...当年,在如此悲壮的一段历史中,大量的诗人、作家、工程师等波兰精英都义无反顾的拿起了武器,告别了父母妻儿,投入到这场血腥的战斗中。...如今,为了让波兰大众铭记那段历史、那些曾经为民族独立而奋斗的战士们,华沙Kordegarda画廊拍摄了一个VR电影以重现当年惨烈的情形。 ? 这场VR电影时长大约为15分钟。...影片的目的就是帮助人们更好的了解多年前发生的这一事件,并感受来自于当时的恐怖冲击。 战争已然过去,但是伤痛和历史却应该一直被牢记。这些貌似娱乐项目的背后都深藏着难以言表的沉痛过去。
这样的好处在于,当我们有多个日志去向时,比如既保存到文件,又输出到控制台,就可以分别给他们设置不同的级别;logger 的级别是先过滤的,所以被 logger 过滤的日志 handler 也是无法记录的...,这样就可以只改 logger 的级别而影响所有输出。...两者结合可以更方便地管理日志记录的级别。...logging.INFO) time_rotating_file_handler.setFormatter(formatter) logger.addHandler(time_rotating_file_handler) 代码需要注意包含...最好还能画出loss和精度在训练集和验证集的变化曲线。
String为什么是不可变的 我们通过查看String源码可以发现 String内部char数组是通过 private final修饰的,表示不可访问 而且String类也通过final修饰表示不可继承...这样做的目的是 保证了String类的线程安全,如果String可以改变,我们通过写一个类继承String 可以篡改数据 保证了hash属性值不会频繁变更,保证了唯一性,这也是HashMap采用String...作为key的原因 实现了字符串常量池,在java中创建字符串对象有两种方式 通过字符串常量创建,这种会在字符串中通过equls方法去判断当前字符串是否存在 存在直接返回,不存在在常量池创建对象 通过new...创建 这样会保证堆和字符串常量中都有该对象,没有就创建该对象,最后返回堆中的对象引用地址值 先判断字符串常量池中有没有创建该对象,如果存在就回去堆内存中判断是否存在该对象,如果不存在创建对象,然后返回
Unreasonable Reputation of Neural Networks 作者:Luke Hewitt(MIT脑认知科学PhD) 译者:刘翔宇 审校:刘帝伟 责编:周建丁 如今不迷恋深度学习是不可能的...这当然有道理,我也无意贬低深度学习目前和未来的影响;但是关于这些模型智能的乐观情绪令人担忧,让人又想起20世纪60年代人工智能的冬天。...这两者都有令人印象深刻的智能行为,但都不是达到真正机器智能的方式。 我想特别说明神经网络的长处,以及与人类智能如何联系。...不管这种能力是从头开始学习还是通过进化而形成的,大脑能够娴熟地解决这个问题——甚至,有最新证据表明大脑发现的表示与神经网络发现的差异并不大。我认为,深度学习可以为许多感知问题提供了不起的起点。...非常感谢fnl的指正。 参考阅读: 递归神经网络不可思议的有效性(上) 递归神经网络不可思议的有效性(下) 深度学习是一种变相的马尔科夫链吗?
但是在面向对象的思想中,这个Json数组中的每个元素就是一个对象,我们可不可以在代码层中以List的形式存,然后以List的形式取出,中间的Json转换有程序自动去做,不需要开发去手动转。...关于DDD领域驱动设计,推荐书籍: “《领域驱动设计:软件核心复杂性应对之道》 《实现领域驱动设计》 ” 为什么我们在使用贫血模型 看了上面的代码,我们可能会疑问:我使用贫血模型开发挺好的啊?...因此我总结为什么人们更愿意使用贫血模型呢: “ 充血模型相对贫血模型存在一定的设计难度,你需要多花时间思考哪些是对象本身的行为 面向过程的编程思想根深蒂固,很难改变 对代码没有太大负责态度,认为怎么简单怎么来...在复杂的系统中,我们使用贫血模型(面向过程思维)开发,那最后的结果是 点连成线,线交织成网,密密麻麻不可维护 然而我们大部分负责的系统并不复杂,我的建议是: 朝充血模型思维方式靠齐 我的思考 如果你还在抱怨自己的工作只是简单...那么建议你多做一些的思考: 1.我的代码是不是面向对象的代码 2.我的代码设计是否遵循 高内聚,低耦合的设计标准 3.我的代码是否遵循设计原则,如单一职责原则,开闭原则等 4. ...
实战 通过上面的三类说明,我们大致了解了 标签的相关信息,但是你们以为我是来列list的吗?..." type="submit" value="提交" /> 第一步:写好基础结构 首先我们来把基础结构给写好,代码如下: :root { --error-color...代码如下: body { background: #333; color: #fff; padding: 20px;...(此天秀效果来自于 Ben Szabo 的 codepen,有兴趣的可以仔细研究下,我何时才能有大佬这么优秀,嘤嘤嘤~) 输入框绑定的可选值 先看效果 ?...其实代码很简单:
我第一次理解到了程序的“模块化”是什么,在代码例子的引导下,我开始在自己的程序里使用小的“工具函数”,而不再忧心忡忡于“函数调用开销”。...你只需要把这种网站的内容掉一个头,制造一个神经网络,输入句子,输出名词,就可以制造出可以玩 Jeopardy 的机器来,而且它很容易超越人类玩家(为什么?)。...它内部采用的就是类似 Eliza 的做法,根本不理解句子,甚至连语料库都没有,神经网络也没有,里面就是一堆我事先写好的正则表达式“句型”而已。...我:“&%&¥@#@#%……” 自动编程是不可能的 现在回到有些人最开头的提议,实现自动编程系统。我现在可以很简单的告诉你,那是不可能实现的。微软的 Robust Fill 之类,全都是在扯淡。...人给出少量例子,想要电脑完全正确的猜出他想做什么,那显然是不可能的。很简单的原因,例子不可能包含足够的信息,精确地表达人想要什么。
这是有道理的。我是不是生活在某种幸福的 Kubernetes 涅槃状态的泡泡里?也许。但这是一个很好的泡泡,所以拿起一杯咖啡,加入我!...所以你可以批评 Kubernetes 的复杂性,但它解决的任务也很复杂。 那次我拼凑了一个像 Kubernetes 那样的烂平台,以及它为什么这么烂 我曾经做过一份很烂的 Kubernetes。...我花了很长时间才安排好。维护它也是一团糟。我不认为我做了什么明智的日志记录。审计呢?我想我当时的字典里连这个词都没有。我很有信心,我可以在一个下午基于 Kubernetes 实现相同的系统。...首先,通过选择如何运行各种组件,我清楚地与 Kubernetes 沟通了我的意图。 WordPress 想要使用的数据库?...在我们有 Kubernetes 之前,我们必须自己弄清楚运行时环境之间的各种差异。 总结 Kubernetes 是不可避免的。这不仅仅是因为谷歌想通过标准化应用程序的部署方式来挖走 AWS 云客户。
关于if-else的争议 我之前写了一篇文章《我用规则引擎消除if语句,提高了代码的可扩展性》,这篇文章我想阐述的观点是复杂的if语句可能会影响代码的阅读和代码的扩展性,会将非业务的条件逻辑与业务逻辑混合在一起...时间长了代码会越来越臃肿,因此这种情况下我推荐使用一些设计模式例如策略模式,责任链模式等去优化if语句带来的问题,文中我发现使用规则引擎也能实现类似效果,因此介绍了怎么使用规则引擎Easy Rules去取代...这里我要阐明我的一个观点: “我的观点并不是说,我们在编码时不能使用if-else,而是说我们不应该简陋地用if-else去实现业务的分支流程,因为这样随意的代码堆砌很容易堆出一座座"屎山"。...” 当我们存在不同的业务逻辑时,我们通常习惯使用if-else来实现这些不同的逻辑,时间长了,代码就会难以维护。我相信大部分人写过下面类似的代码。...屎山代码雏形 上面的代码(基于实际项目的伪代码),大家看了后有什么感想。如果我们需要修改上面的条件逻辑,我相信编码者本人都会被这样的代码绕晕,更不用说后面接手的开发了。
为什么不可变的基础设施 假设我们有一个应用程序。为了生成可交付成果,我们需要从源代码构建它。这包括编译源代码,处理和复制资源,以及可能的更多步骤。 最简单的形式是这个过程如下所示: ?...生成的应用程序可交付物(通常是基于JVM的应用程序的.jar或.war文件) 一个单一的不可变单位 构建一次并存储在工件存储库中 每次更改后都会通过持续集成系统进行再生 软件堆栈 ?...为了达到这个目的,将相同的应用程序从工件存储库中提取出来并部署到不同的机器上: ? 这避免了在每个环境中构建独立工件的经典错误,并有效地避免了在所有机器上运行可能不同的东西的风险。.....)被占用 如果这些都是风险,那么我们为什么不 通过应用相同的原则来构建它们,而使我们的系统与我们的应用程序保持相同的标准?...当我们需要的是一群克隆人时,为什么我们仍然在建造艺术品和雪花服务器? 不可变基础设施 这是不可变基础设施进入的地方。 整个机器现在不是只装配应用程序,而是作为一个单一的不可变单元打包。
什么是不可变对象? 众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。...为什么String对象是不可变的? 要理解String的不可变性,首先看一下String类中都有哪些成员变量。...这也是为什么像replace, substring,toLowerCase等方法都存在返回值的原因。...value是final修饰的,也就是说final不能再指向其他数组对象,那么我能改变value指向的数组吗? 比如将数组中的某个位置上的字符变为下划线“_”。...我有一个微信公众号,经常会分享一些Java技术相关的干货。如果你喜欢我的分享,可以用微信搜索“Java团长”或者“javatuanzhang”关注。
什么是不可变对象? 众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。...为什么String对象是不可变的? 要理解String的不可变性,首先看一下String类中都有哪些成员变量。...其实执行了String s = “ABCabc”; 这句代码之后,真正的内存布局应该是这样的: ?...这也是为什么像replace, substring,toLowerCase等方法都存在返回值的原因。...value是final修饰的,也就是说final不能再指向其他数组对象,那么我能改变value指向的数组吗? 比如将数组中的某个位置上的字符变为下划线“_”。
为什么「我不」需要低代码?即使所有人都认同上述“为什么要用低代码”的理由,但仍不时会有试水者跳出来,给大家细数“为什么我不需要低代码”。...实践出真知没错,而且大部分质疑背后也都有一定道理;但在我看来,更多的可能是主观或无意识的偏见。这里我列了一些对低代码的常见质疑和我个人的看法,期望能帮助大家看到一个更全面和客观的低代码。...质疑1:低代码平台不好使“试用过一些所谓的低代码开发平台,要么能力很弱,要么体验太差,只能开发点玩具应用。”图片作为调研过国内外多款低代码产品的深度体验用户,我的观点是:不能以偏概全。...质疑2:低代低开发不可控“平台上的各种可视化组件、逻辑动作和部署环境都是黑盒,如果内部出问题无法排查和解决。”图片作为同样不搞清楚底层原理不舒服斯基的程序员,我更愿意相信:问题只是暂时的。...问题排查与系统优化手册》),我不得不说:用低代码开发,也要讲基本法。
NeurIPS此举也引发了一场“年经”式的讨论:如果将来学术会议要求必须开源,投稿人应该拒绝吗? 而让人始料未及的是,不少网友认为:不开源,我有理。 ?...反对一:代码并没有那么重要 首先,开源代码的目的是什么?是为了让其他研究者可以复现结果。 如果一篇论文包含足够多的细节,那么别人就可以根据其中的公式自己写出代码,对于这类论文,可以不公开代码。...而且作者本人的代码可能会出现错误,不开源的一个好处就是让其他研究者独立复现。 万一作者在代码里挖了个不明显的“坑”,其他人也可以规避,防止被带到沟里。...很多其他学科的人都把机器学习看成伪科学,这是为什么?因为AI领域的论文发布过程非常不成熟。 科学方法的关键是一致性和可重复性。追逐单一的指标,每个人都对SOTA着迷,这是一个巨大的问题。...她认为不开源代码不利于评审论文,不利于对论文造假的追责,更不利于行业开放竞争。 你觉得公开的学术论文也应该公开代码么?
想必最近的互联网裁员消息大家也有所耳闻,那么我们怎么才能够在这样的大环境下苟住自身呢?经过我的总结,我认为大家都不具备不可替代性。 什么叫不可替代性呢,通俗点来说就是,这活除了你别人都干不了。...另一种方法则是,制作出专属于你的代码!!下面我们来一起学习,怎样写出专属于你,不可被替代的代码! 以下不可替代写法皆为反面教材!!!...不可替代写法: const getPNum = (number) => { ...... } 无论是函数命名还是入参命名,相信都很难有人能参透你的深意,在别人接手你的代码时,必定会来向你请教,这在老板眼里你的价值将更为突出...二、重复代码(Duplicated Code)&& 过长函数(Long Function) 重复编写大量相同代码,内容过多的函数,使代码变得臃肿难以维护 不可替代写法: const showUserInfo...你要出事我跟着一起死,我就是要用你的,我就是玩~ 正常写法: class Amount { constructor() {} add(...num) { return num.reduce
为了解决服务负责制和一致性部署的挑战,现代DevOps团队已经转向了基础设施即代码(IaC)解决方案,例如 Terraform 和 Ansible。...但 IaC 究竟如何解决这些挑战,它又如何能增强 DevOps 流水线的其他方面呢? 巩固与简化基础设施 简言之,IaC解决方案使团队能通过代码来管理和设置基础设施。...一旦编写完成,IaC工具的代码就会定义、配置或保存相关基础设施组件的设置。这样,团队可以大大减少手动配置基础设施的工作量,不再需要通过物理接口、命令行或图形界面逐个配置基础设施。...与常规编码工作流类似,IaC代码可以快速迭代,以配合CI/CD环境中的创新速度动态重新配置基础设施。 将IaC代码视为任何其他工作流,意味着团队可以获得定期监控和事件响应的有价值见解。...这就是为什么IaC已经成为大多数DevOps团队的必备组件。将物理基础设施、虚拟资源和云服务进行分组和标准化,意味着团队可以将基础设施视为一个抽象概念,从而更专注于构建新产品和服务。
递归神经网络(RNNs)有一些不可思议的地方。我仍然记得我训练的第一个用于图片字幕的递归网络。从花几十分钟训练我的第一个婴儿模型(相当随意挑选的超参数)开始,到训练出能够针对图像给出有意义描述的模型。...一年前:我一直在训练RNNs,我多次见证了它们的强大的功能和鲁棒性,而且它们的输出结果同样让我感到有趣。这篇文章将会给你展现它不可思议的地方。...你也可以用它来重新运行我下面的代码。但是我们正在不断超越自己;那么RNNs究竟是什么呢? 递归神经网络 序列。你可能会问:是什么让递归神经网络如此特殊?...事实上,我不得不说: 关注模块的概念在最近的神经网络架构创新中是最有趣的。...这种模型有着更显著的哲学吸引力,可扩展性和高效率性,但是不幸的是,它是不可微的。这就要使用强化学习文献(比如REINFORCE)中使用到的技术来解决,人们将它完美地用于不可微的模型之中。
从哪看出来String类是不可变的?...类是不可变的。...this : new String(value, beginIndex, subLen); } 为什么String被设置为不可变的? 字符串常量池 字符串常量池可以节省大量的内存空间。...jdk1.7之前的不讨论,从jdk1.7开始,字符串常量池就开始放在堆中,然后本文的所有内容都是基于jdk1.8的 下面这个代码还是经常被问到的 String str1 = "abc"; String...其中常量池中存的是引用 解释一下上面代码的输出,Java中有2种创建字符串对象的方式 String str1 = "abc"; String str2 = "abc"; // true System.out.println
在Java里面String类型是不可变对象,这一点毫无疑问,那么为什么Java语言的设计者要把String类型设计成不可变对象呢?这是一个值得思考的问题。...ok,下面我们来分析下为什么String是不可变的? 通过String源码可以看到,String类型的底层是由final修饰的char数组存储。...(二)安全 不可变特性也能够减少了应用程序在运行时间的安全问题,如下面的一段代码: void criticalMethod(String userName) { // check if...总结: 本文主要介绍了Java语言里面String类型为什么设计成不可变类型,以及分析了不可变类型的带来的主要优势,需要注意的是虽然不可变类型能够带来不少的好处,但并不是说其没有弊端,不可变类型的每一次修改都需要在内存中新生成一个对象...,从另一个方面说针对经常变化的对象是不适合使用不可变类型的,这也是为什么Java里面还提供了可修改值的StringBuilder和StringBuffer类,这在实际开发中常常是需要根据具体情况权衡的。
领取专属 10元无门槛券
手把手带您无忧上云