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

90亿美元!历时10年谷歌终于告赢了甲骨文,事关每个Java开发者...

本周一发生了一件大事,美国两大科技巨头甲骨文与谷歌的十年争斗终于有了结果。美国最高法院以6票支持2票反对,通过了甲骨文诉安卓系统Java源代码侵权案的裁定结果。 ?...而甲骨文则在败诉后发表声明称,这是典型的垄断者会采取的行为,甲骨文指责说,谷歌平台越来越大,市场力量也越来越强,他们先是偷走了代码然后又花上整整十年来解决这场诉讼。 API是什么?...这场漫长的诉讼争议点是:一种名为应用程序接口(API)的技术,是否可以受版权法的保护。 API有人把它形象的比喻成模块链接。 比如电灯是一个模块,电流是一个模块。想要电灯亮起来,就要链接电流和电灯。...但是,懂电流的电工完全可以不用知道怎么造电灯泡,做电灯泡的不需要知道电流怎么产生的。这里的接口就是API。 法院上围绕着API对一个程序的意义开启了辩论大赛。...而支持谷歌的大法官则将API比作是计算机键盘布局,称“如果让某人拥有QWERTY键盘的版权,那么他会控制住所有的打字机,因此,API接口和版权真的没有关系”。 ?

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

    JavaScript的历史由来及简介

    即每种编程语言都有无限的延展性,但如果我们考虑问题的时候追溯其根源,其实也不难发现每种编程语言都具有共同的初心,最直白的话就是人与计算机进行沟通的语言,在现实生活中,见什么人说什么话我们都很清楚,那在与计算机沟通的世界中...,做什么事用什么编程语言沟通也是同样的道理,前提就是我们要了解这些编程语言,在你需要选择的时候做出正确的判断,这也正是我写此篇文章的意义。...就是上图中的人设计的这中能实现网页动态效果的编程语言,并将其编程语言命名为JavaScript。 为什么会命名为JavaScript呢?...2007年10月,ECMAScript4.0版草案发布,对3.0版做了大幅升级,预计次年8月发布正式版本。草案发布后,由于4.0版的目标过于激进,各方对于是否通过这个标准,发生了严重分歧。...DOM3级则进一步扩展了DOM,引入了加载和保存模块以统一方式加载和保存文档的方法;新增了DOM验证模块主要还是验证文档的方法。

    1.3K10

    走进JavaWeb技术世界9:Java日志系统的诞生与发展

    如果对本系列文章有什么建议,或者是有什么疑问的话,也可以关注公众号【Java技术江湖】联系作者,欢迎你参与本系列博文的创作和修订。...小C在查看了以前的日志方式之后,感觉特别low,于是自己写了一个日志框架,命名为xiaoC-logging.jar,此举收到了项目经理A的好评。...Log4j:  一个具体的日志实现框架。 Log4j2:   一个具体的日志实现框架,是LOG4J1的下一个版本,与Log4j 1发生了很大的变化,Log4j 2不兼容Log4j 1。...在程序中日志创建和记录都是用JCL中的接口,在真正运行时,会看当前ClassPath中有什么实现,如果有Log4j 就是用 Log4j, 如果啥都没有就是用 JDK 的 JUL。...Logback是log4j的升级版,当前分为三个目标模块: logback-core:核心模块,是其它两个模块的基础模块 logback-classic:是log4j的一个改良版本,同时完整实现 SLF4J

    47800

    什么是Java,了解Java的历史,你知道Java已经到17了吗?

    什么是Java,了解Java的历史,你知道Java已经到17了吗?并且又变成完全免费了,其实之前的收费也只是名义上的,对使用Java语言开发来说,没有丝毫影响!...Java是一门面向对象的计算机编程语言,什么是面向对象,我们下一期在说,因为内容比较多,这里简单解释一下,对象的含义是指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。...这里也就是所说的嵌入式应用,如电视机顶盒、面包烤箱、移动电话等。...为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0),代号为“Tiger”,Tiger包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱...此时,Java的各种版本已经更名,已取消其中的数字2,如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。

    63010

    走进JavaWeb技术世界9:Java日志系统的诞生与发展

    如果对本系列文章有什么建议,或者是有什么疑问的话,也可以关注公众号【Java技术江湖】联系作者,欢迎你参与本系列博文的创作和修订。...Log4j:  一个具体的日志实现框架。 Log4j2: 一个具体的日志实现框架,是LOG4J1的下一个版本,与Log4j 1发生了很大的变化,Log4j 2不兼容Log4j 1。...在程序中日志创建和记录都是用JCL中的接口,在真正运行时,会看当前ClassPath中有什么实现,如果有Log4j 就是用 Log4j, 如果啥都没有就是用 JDK 的 JUL。...Logback是log4j的升级版,当前分为三个目标模块: logback-core:核心模块,是其它两个模块的基础模块 logback-classic:是log4j的一个改良版本,同时完整实现 SLF4J...现在好了,我们有了三个流行的Log 接口和四个流行的Log实现,如果画出桥接关系的图来回事什么样子呢? ? 看到这里是不是感觉有点晕呢?是的,我也有这种感觉。

    44120

    海事服务巨头遭受勒索攻击、互联网正走向量子时代|11月29日全球网络安全热点

    “我们获得了一种能力,能够对一个原子抓出来进行主动操纵,有了这种技术之后就能对单个量子比特进行操纵,一个新的学科量子信息技术就诞生了。”...“为什么说整个互联网正在走向量子时代,因为随着量子通讯技术的发展,可以利用量子通讯技术大幅度提高信息传输的安全水平;同时,可以把各个地方的量子计算机连接在一起,来实现高效的量子处理。”...,产生了很多新型法律问题,需要立法、执法、司法等方面及时回应,以充分保障个人信息权益。...未经授权的访问导致一些机密专有商业信息的丢失,并导致一些个人数据的丢失。网络攻击并未对SPO的全球运营产生重大影响。该公司称,网络攻击没有影响SPO的全球运营,也没有导致机密信息的丢失。...网络安全公司发现的四个漏洞影响了联发科的一些片上系统,这些系统结合了中央处理单元和附加计算模块。这些附加模块包括人工智能加速器和执行音频处理任务的数字信号处理器。

    37030

    MySQL 执行语句分析

    先查询学生表中姓名为“张三”的学生,然后判断是否年龄是 18 b....,这就会引入日志模块,MySQL 自带的日志模块式 binlog(归档日志) ,所有的存储引擎都可以使用,我们常用的 InnoDB 引擎还自带了一个日志模块 redo log(重做日志),这里就以 InnoDB...,为什么要用两个日志模块,用一个日志模块不行吗?...那么,又会有同学问,我用两个日志模块,但是不要这么复杂行不行,为什么 redo log 要引入 prepare 预提交状态?这里我们用反证法来说明下为什么要这么做?...那么问题来了,有没有一个极端的情况呢?假设 redo log 处于预提交状态,binglog 也已经写完了,这个时候发生了异常重启会怎么样呢?

    2.5K10

    微软开发者的年度回顾

    2021 年 .NET 和 Microsoft 开发人员的技术都发生了什么? 很难从 2021 年只选择一个主题。安静的进化?开源的争议?一个让开发人员疑惑的操作系统更新?...当我回头看时, 发现一年发生了很多事情, 2021 年的发展是稳步向前的,就像冰川融化后的涓涓细流, 以下是我对 Microsoft 开发人员世界不断变化的冰层以及接下来会发生什么的一些看法。...Windows 10X 成为 Windows 11 有过经验的开发人员都知道,没有版本控制就没有产品,当微软在 2015 年承诺 Windows 10 是 Windows 的最后一个版本时,事情就变得有趣了...终于在 2021 年底,这种疯狂结束了,微软放弃了发布 Windows 10X 版本的计划,将其重新命名为 Windows 11, 并推出了一系列新功能, winget, WSLg, WebView2,...但是,Windows 11 的升级要求直接把一部分用户给拒之门外, 7代及之前的酷睿处理器不支持, 没有 TPM 模块也不支持, 这真的很让人疑惑。

    27740

    《Java从入门到失业》第一章:计算机基础知识(1.3):程序语言简介

    所以压根没人真正搞得清楚 small talk 是什么意思。...1991 Python Guido van Rossum不喜欢花括号,于是决定发明一种没有花括号的语言,然后又因为太喜欢英国肥皂剧《Monty Python飞行马戏团》,于是,就把该语言命名为Python...一开始Gosling把这种语言叫做“Oak”(据说是因为他很喜欢自己办公室外的橡树),后来发现这个名字已经被别的一种语言占用了,于是改名为Java(Java这个名字的由来也有很多个故事版本,这里就不细说了...2002-2 J2SE1.4发布,Java平台大幅提升 2004-9 J2SE1.5发布,该版本是Java发展史的一个里程碑,为了体现重要性,改名为:JAVA SE 5.0 2005-6 JavaOne...此时,Java的各种版本已经更名,取消其中的数字"2":J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME 2006-4 JAVA SE 6发布 2009-4 Oracle

    36110

    《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(1)-初识Wireshark

    换句话说就是现学现卖,希望大家不要介意,宏哥这里的分享仅供你参考学习,有错误的地方也欢迎你指出。你自己也可以深入的研究一下。...为了保证项目成功运行下去,Combs 和他的开发团队在 2006 年年中将这个项目重新命名为 Wireshark。...这种情况下,PC1没有端口镜像的权限,所以它不能直接截取全网的流量,那么该怎么做呢?...(1)PC1发送大量垃圾包,这里产生了大量的MAC地址,导致MAC表爆表(2)PC2和PC3发出的数据找不到目的地址就会进行全网泛洪,被PC1截取全网流量11.2底层原理那么,抓包的底层架构是怎样的?...13.功能模块模块名功能源码子目录GTK/Qt处理所有的用户输入/输出(所有的窗口,对话框等等)/uiGTK: /ui/gtkQt: /ui/qtCore主要的"粘合代码"(glue code),它把其他的块组合到一起

    3.6K52

    单体的 TienChin 和微服务的 TienChin 有何异同?

    松哥最近正在录制 TienChin 项目视频~采用 Spring Boot+Vue3 技术栈,里边会涉及到各种好玩的技术,小伙伴们来和松哥一起做一个完成率超 90% 的项目,戳戳戳这里-->TienChin...单体版 TienChin 松哥目前在录的 TienChin 项目就是一个前后端分离的单体项目,采用了 Spring Boot + Vue3。那么单体版的 TienChin 具有什么样的特征呢?...项目越来越复杂 首先就是项目不可能一直这么简单,我们这个项目中还是细分了很多不同的模块。随着时间的推移,这些模块会变得越来愈复杂。修改每一个 BUG 都要小心翼翼,牵一发而动全身。...因此大部分的单体项目,在立项的那一刻选用了什么技术栈、选用了技术的哪个版本,基本上这个项目未来都是这个版本了。 从上面的介绍中小伙伴们可以看到,单体项目优点很明显,然而缺点也是非常明显的。...每一个微服务都可以根据当前项目的情况,选择是否采用最新的技术栈,而且一个微服务在切换最新技术栈的过程中,如果不幸发生了问题了,也不会影响到其他的微服务,只会影响到当前的服务。

    44410

    JavaScript 模块化的历史进程

    随着 Node.js 和三大框架的流行,越来越多的前端开发者们脑海中都会时常浮现一个问题: 为什么 JavaScript 有这么多模块化方案?...但目前在 Node.js 体系下,最常见的方案其实是 CommonJS。再加上大家耳熟能详的 AMD、CMD、UMD,模块化的事实标准如此之多。 那么为什么有如此之多的模块化方案?...它们又是在怎样的背景下诞生的?为什么没有一个方案 “千秋万代,一统江湖”? 接下来,我会按照时间顺序讲述模块化的发展历程,顺带也就回答了上述几个问题。...这里插一句题外话,其实早期 1995 年,Netsacpe(网景)公司就提供了有在服务端执行 JavaScript 能力的产品,名为 Netscape Enterprise Server。...其实模块化方案远不止提到的这些,但其他的都没有这些流行,这里也就不费笔墨。 文中并没有提及各个模块化方案是如何实现的,也没有给出相关的代码示例,感兴趣的朋友可以自行阅读下方的参考阅读链接。

    1K51

    谈谈依赖和解耦

    因为大多数代码都是可以通过像流水线一样写下来,最终变成一个几千行的函数、几万行的单个文件。这个时候甚至没有拆分成模块,也就更谈不上所谓依赖和解耦了。...此时,同样会产生一些约定,但这样的约定可以更好地管理我们的代码,此时可以理解为产生了合理的依赖。因此,回到前面的疑问:既然依赖来自于设计,为什么我们要通过设计来降低依赖呢?...相反,我们需要对功能模块进行划分,划分出有状态和无状态的功能,来将状态管理放置到更小的范围,避免“牵一发而动全身”。在这里,我们进行了状态有无的划分。单向流的数据管理?...在这里,我们进行了业务领域的划分。模块化与依赖注入?相比于针对系统设计的服务化,同样有针对功能设计的模块化。...在这里,我们进行了功能应用的划分。结束语到这里,你会不会有点疑惑,说了半天好像什么都没说?我当然知道要合理设计啊,但什么才是合理的设计呢?

    34310

    (十)python3 只需3小时带你轻松入门——模块与包

    我们创建一个py文件,名为myprint,该py文件作为模块,在里面定义一个函数名为myprint: def myprint(): print('这是我的print模块') 保存后,在同目录下创建一个...) 我们还需要在这个文件夹下新建一个py文件,名为__init__,里面什么都可以不用写。...这时,这个文件夹就是一个包,这个包下可以包含多个模块。 这时新建一个py文件,名为main,我们在main里面引入包,并且也引入main.py文件同目录下的module.py模块。...所以,from后面接我们要引入的模块来自bao这个文件夹(包),我们需要在这个文件夹下引入里面的一个模块,所以使用import,这个模块名为module所以代码写为: from bao import module...这个时候就输出的是外面的module模块的函数;这个时候就产生了同名模块冲突的问题,其实在这里两个模块都被引入了进来,但是由于重名的原因,导致module直接调用为最外层的module;我们的包可以很好的解决这种问题

    34720

    标星 3.4 万的项目说删就删,几行代码搞崩数万个开源项目

    经过 事情还要从 2020 年 11 月 Marak 发的一条 issues 说起: 内容大致的意思就是吐槽:大公司免费用我的开源项目,没有人为我的付出买单,我不想干了!...我这里用的是“吐槽“是因为项目是一年后才删的。所以我推断当时他并不是真的想删,但萌生了“不想再为大公司免费维护开源项目”的想法,想通过维护开源项目有一份收入。...时隔半年,时间来到了 2021 年 4 月 Marak 在自己的博客,发布了一篇名为《Monetizing Open-source is problematic》的文章,讲述了这段时间 Faker.js...事情并没有因为删项目而结束,反而发生了更大的事情。随后他就在 1 月 7 号 收到了 GitHub 的封号通知。...我个人觉得他删项目这件事没有任何问题,删自己的代码有什么问题。后面提交的恶意代码在我看来也只是一个程序员的恶作剧,这部分代码并没有实质性的伤害只是容易被吓一跳。

    29220

    前端写接口 请求后台数据 存vuex中 打印到控制台「建议收藏」

    ,红框圈起来的是本次的接口,此次项目用到的是 axios ,发请求有两种写法,一种是对象写法( axios.post(‘url’)),另一种是函数写法( axios({})) 上图这次接口用到的是函数写法...三、前端接口写好后,去相应的 vuex 模块仓库引入接口函数(一般项目的vuex仓库都放在名为 “store” 文件夹下),并在对应的配置对象下,写“三连环的套路” (如下图) 上图 关于仓库我是把...vuex 的仓库分成了若干个 小仓库 ,每个 小仓库 对应项目中的一个组件模块的数据保存,然后再把它们统一放到 大仓库 中(如下图所示) 可以看到 store 文件夹中有 home 和 search...(如下图) 一般是在组件挂载完毕的生命周期钩子函数写这条语句(根据个人业务需求) 五、我写在了我项目中的一个组件里,当组件被挂载完毕时,这条语句便会执行了,相应的一系列连锁反应就会发生了(三连环完毕后...七、在代码中 log 打印出来也方便查看数据和相应的调试 总结:刚开始写博客,没有什么书写经验、分享经验、会慢慢学习进步,大家多多包涵。

    1K31
    领券