Joshua

Java的常量接口思考,项目中的常量是放在接口里还是放在类里呢?

Deadly 提交于 2021-02-20 08:08:02
最近在看一本书 Java与模式,里面提了一句不建议使用常量接口,甚至举了个java源码的反例, 蛋疼的是没有说为什么? 查了网上一圈发现他们也是知道怎么做而不知道为什么这么做。 然后我只能找谷歌了,翻译后,我把自己理解外加总结的放在下面。 第一 常量类应该是final,不变的,而接口里的参数是final,也是不变的。 那么,看起来接口是放常量没有一定问题,还省去了final的输入,非常的合适。 但是,类是只能单继承的,接口是允许多实现的。 要是类实现的多个接口出现重名的常量,会报错,必须要在实现类明确常量用的是哪个接口的。 虽然这可以说是架构师设计的问题,但是,架构师这么做就违反了依赖倒转原则,这玩意就不细说了。 第二 如果某个实现了常量接口的类被修改不再需要常量了,也会因为序列化兼容原因不得不保持该实现,而且非final类实现常量接口会导致所有子类被污染。 这个应该很少人遇到过,不过这是 Effective Java 里面说的。 具体的理解就是,能被序列化的一定是数据, 那么突然改了数据结构,可能导致老版的数据无法被反序列化,而新版的数据会有冗杂的数据, 要是折腾个几次,网络传输协议 这个无法通过时间或者空间提升的玩意就能逼死你了。 Effective Java 作者 大佬的原话 According to Joshua Bloch, author of "Effective

KDD 2020 | 会话推荐系统新进展:基于互信息最大化的多知识图谱语义融合

徘徊边缘 提交于 2021-02-13 08:35:06
论文标题: Improving Conversational Recommender Systems via Knowledge Graph based Semantic Fusion 论文来源: ACM SIGKDD 2020 论文链接: https://arxiv.org/abs/2007.04032 会话推荐系统(conversation recommender system, CRS)旨在通过交互式的会话给用户推荐高质量的商品。通常CRS由寻求商品的user和推荐商品的system组成,通过交互式的会话,user实时表达自己的意图,system理解user的偏好并推荐商品。目前会话推荐系统有两个问题需要解决。首先,对话数据本身缺少足够的上下文信息,无法准确地理解用户的偏好(传统的推荐任务会有历史交互序列或者用户属性,但是该场景下只有对话的记录)。其次,自然语言的表示和商品级的用户偏好之间存在语义鸿沟(在“Can you recommend me a scary movie like Jaws”中,用户偏好反映在单词”scary“和电影实体”Jaws“上,但这两类信息天然存在语义的差异)。 为了解决上述问题,本文提出了模型 KG -based S emantic F usion approach(KGSF),通过互信息最大化的多知识图谱语义融合技术

Jun-Yan Zhu(朱俊彦)

纵饮孤独 提交于 2021-01-14 03:07:23
Postdoctoral researcher Computer Science and Artificial Intelligence Laboratory Department of EECS Massachusetts Institute of Technology Email: junyanz at mit dot edu CV | Google Scholar | GitHub | Thesis | Teaching | Software | Papers | Talks | Awards | Arxiv I am a postdoctoral researcher at MIT, working with William T. Freeman, Josh Tenenbaum, and Antonio Torralba. I obtained my Ph.D. from UC Berkeley after spending five wonderful years at CMU and UC Berkeley with Alexei A. Efros. I received my B.E from Tsinghua University. I study computer vision, computer graphics, and machine learning

如何感召人们让其参与到开源活动中

不想你离开。 提交于 2020-12-18 13:16:35
向他人介绍开源最有效的办法是,告诉他们开源可以提供给他们想要的。 如果你在浏览这里,可能你会编程,而且或许你正使用某些难以捉摸的 Linux 发行版 的开源浏览器上阅读这些内容。你也许很多年没有看到过浏览器广告了,因为你正运行着一个 开源的广告拦截器 。当你想到企鹅时,你感到温暖而又陌生。 简单地说,你知道开源的力量,并且它已经成了你生活的一部分。不幸的是,并不是每个人都发现了如何利用开源的方式。他们的电脑慢得令人痛苦,当他们上网浏览时他们看到的广告比内容都多,他们把钱花在专利和版权的垃圾上。这些人中可能有些是与你有关系的,例如你的侄女和侄子。 知识就是财富 那么你如何向你的侄女和侄子(以及任意一个人)介绍开源? 我尝试着回答这个问题,作为一个教授,一个以长篇大论著称的职业,我最终还是出了一本书: 《使用开源项目创造、分享和省钱》 ,由 McGraw-Hill 出版。 我认为诀窍在于先发现你的侄女或侄子想要获取但没有钱去购买的东西,然后向他们展示如何通过开源知识来得到他们想要的东西。 可升降的桌子 (Joni Steiner and Nick Ierodiaconou, CC-BY-SA-NC ) 知识是所有商品里独特的财富。不像黄金或小麦,它不仅在分享时会保留价值,而且可以迅速增值。因为互联网信息分享成本趋近于零,因此无限地扩展了此过程

java进阶书籍推荐

浪子不回头ぞ 提交于 2020-10-28 07:58:20
java进阶书籍推荐 effective java 这本书是由大神Joshua Bloch创作,java之父强力推荐,这本书是要有一定开发基础的java人员看的; 主要对java code的各种规范和应用技巧做了深入的讲解;本人看了一遍,很多知识理解也还不够,等工作3-5年时,再多看几 遍将会受益无穷 深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) 这本书是由中国人编写的,由阿里人周志明创作;但是这本书是业内jvm必读书籍,我看了2遍,受益无穷; 这本书把java虚拟机的堆栈,垃圾回收,类加载讲述的非常清楚,如果有同学对java性能调优或架构方向发展的同学强烈推荐。 java并发编程的艺术 这也是由阿里专家编写的书籍,关于并发问题做了非常深入的探讨,此书可作为并发底层了解的书籍推荐入手 高性能MYSQL 第3版 这本书是关于mysql的书籍,如果有同学想了解mysql的话,这本书是不二之选。 数据库索引设计与优化 这本书只讲了一件事,就是索引;非常底层的讲解了关系型数据路对于索引的使用与优化索引的方法;DBA方向的同学可入手 Java性能优化权威指南 这本书我也是长在看,如果说你已经看了以上推荐的jvm书籍,那么这本书可以入手,对于性能调优,在已办公司或者项目组都不会遇到,但是如果想往高平台发展可入手这本书; 这次就暂时推荐这几本书,都是非常非常棒的书

Scala 2.8馆藏图书馆是“历史上最长的遗书”吗? [关闭]

末鹿安然 提交于 2020-10-26 04:09:31
问题: I have just started to look at the Scala collections library re-implementation which is coming in the imminent 2.8 release. 我刚刚开始研究即将发布的 2.8 版本中的 Scala集合库重新实现 。 Those familiar with the library from 2.7 will notice that the library, from a usage perspective, has changed little. 熟悉2.7中的库的人会注意到,从使用角度来看,库几乎没有变化。 For example... 例如... > List("Paris", "London").map(_.length) res0: List[Int] List(5, 6) ...would work in either versions. ......适用于任何一个版本。 The library is eminently useable : in fact it's fantastic. 图书馆非常实用 :实际上它太棒了。 However, those previously unfamiliar with Scala and poking around to

裁员!缩招!屯人才!硅谷就业市场变了

[亡魂溺海] 提交于 2020-10-02 11:40:48
据国外媒体报道, 经济低迷期间硅谷就业市场被重新洗牌,包括Uber和Airbnb在内的大公司以及不少规模较小的初创公司进行大规模裁员。 与此同时也有一些小公司趁机寻找想要的人才。 但总体而言,不少科技行业员工感觉找工作没有之前容易。 图示:本周一Uber宣布将再裁员3000人。两周前,该公司宣布裁员约3700人,这使得裁员总数达到约四分之一。 以下是翻译内容: 为了削减成本,打车服务公司Uber开始裁员, 硬件工程师乔·泰勒(Joe Taylor)也被解雇。数小时后泰勒就开始着手寻找新工作,但看到的却是一个失去活力的硅谷就业市场。 在经济低迷期间,科技行业一直是最具韧性的行业之一。 微软和亚马逊公布的财报均称第一季度销售增长强劲。 但包括Uber和Airbnb在内的大公司以及不少规模较小的初创公司进行了大规模裁员,已经动摇了人们对科技行业不会受到就业危机影响的看法。 对很多人而言,这种现状也会改变了科技行业员工换工作很容易的希望。 “每个人都变得更加谨慎了,”38岁的泰勒说,他本月早些时候被Uber解雇。他说自己一直在大小公司寻找工作机会,但与以往的求职相比,现在能联系上的招聘人员更少。泰勒说许多招聘人员发出的信息是:“我现在手头没有任何职位但可以保持联系。” 泰勒曾在微软和位于加州圣布鲁诺(San Bruno)的无线充电器初创公司Spansive等大公司工作过

解决安卓微信浏览器中location.reload 或者 location.href失效的问题

心不动则不痛 提交于 2020-10-01 11:58:48
解决安卓微信浏览器中location.reload 或者 location.href失效的问题 参考文章: (1)解决安卓微信浏览器中location.reload 或者 location.href失效的问题 (2)https://www.cnblogs.com/joshua317/p/6163471.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/3797416/blog/4613210

Java Hashing:从重写HashCode到可变对象

陌路散爱 提交于 2020-09-27 03:01:30
Java Hashing:从重写HashCode到可变对象 原创 lee 锅外的大佬 2019-08-05 点击左上角蓝字,关注“锅外的大佬” 专注分享国外最新技术内容 这是一篇关于hashCode方法,可变对象和内存泄漏问题的文章。 1. 重写 hashCode() 和 equals() 的契约 每个 java 对象都有两个非常重要的方法,比如 hashCode() 和 equals() 方法。这些方法旨在根据其特定的一般规则进行重写。本文描述了为什么以及如何覆盖 hashCode() 方法,该方法在使用 HashMap , HashSet 或任何 Collection 时保留 HashCode 的契约。 1 hashCode 契约 hashCode 的契约就是: 如果两个对象相等,那么调用两个对象的 hashCode() 方法一定会返回相同的 hash 值。 现在你应该想到的问题是:上述陈述是否应该永远是真的? 考虑一下这样一个事实,当我们为我们的类提供了一个正确的 equals 实现,那么如果我们不遵守上述规则会发生什么。 为了回答上面的问题,我们来考虑两个问题: 对象是相等的,但是返回了不同的 hashCode 对象不是相等的,但是它们却有相同的 hashCode 1.1.1 对象是相等的,但是返回了不同的 hashCode 当两个对象是相等的,但是返回了不同的

Java对象创建模式

微笑、不失礼 提交于 2020-08-17 17:23:47
创建Java对象时,对于可为空的属性,创建对象的时候有3种模式:重叠构造器模式、JavaBeans模式、Builder模式(推荐)、Stream模式(推荐)。 重叠构造器模式 该模式使用多个构造器创建Java对象。 该写法符合Java的标准惯例,但是随着参数的越来越多,代码变得越来越难写。而且该方式灵活性低,可读性较差,客户端想要知道哪些值的具体含义,还需要仔细数参数,而且还容易写错参数的位置。 package effectiveJava.builder; public class NutritionFactsMultiContr { //食物尺寸 private int servingSize; //食物数量 private int servings; //热量(卡路里) private int calories; //脂肪含量 private int fat; //食用盐(钠)含量 private int sodium; //糖类含量 private int carbohydrate; public NutritionFactsMultiContr(int servingSize, int servings) { this(servingSize,servings,0); } public NutritionFactsMultiContr(int servingSize,