首页 文章 精选 留言 我的

精选列表

搜索[最权威安装],共10000篇文章
优秀的个人博客,低调大师

疫情之下, 各国网络掉链子, 关键时刻还是中国运营商坚挺!

疫情之下,考验的不仅有人性,还有网络能力。 意大利,网速跳水了! 3月8日,意大利宣布隔离伦巴第大区及其他一些北部地区。 3月9日,意大利宣布将伦巴第大区的红色隔离区范围扩大到全国。 然后,全国网速跳水了... 来自三方测试公司Ookla Speedtest的数据显示,自意大利“封城”以来,伦巴第大区和意大利全国的平均移动网络、家庭宽带网速双双出现明显下滑。 据意大利媒体报道,由于疫情之下采取了隔离封锁措施,人们都在家远程工作、学习和上网娱乐,网络流量呈指数级增长,导致几乎所有地方都出现了网速下降现象,意大利网络基础设施面临空前的考验, 意大利电信首席技术兼信息官Michele Gamberini表示,我们的网络流量明显增加,尤其是家庭宽带网络,相比疫情发生前,网络流量增加了100%。 西班牙,请错峰使用网络! 据报道,西班牙运营商Telefonica、Orange、沃达丰、Masmovil和Euskaltel表示,由于受疫情影响,IP网络流量增长了近40%,语音和数据流量分别增长了约50%和25%,WhatsApp等即时消息平台流量增加了5倍。 网络扛不住了! 西班牙的运营商们呼吁广大用户: 请不要在网络高峰时段上网看视频、玩游戏,请把网络让给远程办公和学习的人们! 请不要在网络高峰时段下载和传送大文件! 请尽量多使用座机电话! 英国,关键时刻掉链子了! 3月17日,英国运营商O2、EE、沃达丰、Three几家运营商的移动网络在疫情期间的关键时刻掉了链子。 一位O2用户崩溃了: 为什么O2的网络偏偏在关键时刻挂了?我被困在了医院,现在不能打电话给妈妈,老妈也不能给我打电话。Wi-Fi无法正常工作,FaceTime用不了。由于4G网络信号不好,WhatsAPP也是如此。我去,所有可能出错的地方都出错了。 故障发生后,O2表示: 今天,整个英国电信行业遇到了一个问题----不同网络之间的某些呼叫无法连接。具体来说,O2、沃达丰和Three的用户无法连接到EE的网络,EE的用户也无法连接到O2、沃达丰和Three的网络。 随后,Three确认约有3%的用户的语音通话出现问题。沃达丰表示约有9%的用户的3G通话受到了影响。 有英国媒体表示,疫情期间数百万英国人选择在家中工作,导致了O2网络出现短暂拥塞。 有运营商表示,我们的网络运行良好,但由于O2的网络问题导致O2用户无法拨通我们的用户。 EE官网声明,本次网络故障归咎于“另一家运营商网络出现了问题”,并表示本次故障与疫情期间家庭办公和上网人数增加无关。 看起来大家有点“甩锅”的意思。 对此,O2否认了以上说法,并表示,在国家最需要连接的时候,最重要的是我们必须共同努力,而不是在故障原因还未确定之前就横加指责。 美国,赶紧扩容! 预计受疫情影响,越来越多的美国人将选择在家中工作,这会导致网络容量激增。同时,在美国广大农村地区,大约有2000万家庭无法使用宽带。 怎么办? 赶紧扩容呗! 怎么扩? 600MHz频段低,信号覆盖距离远,穿墙能力强,非常适合郊区和农村地区的网络覆盖。 美国运营商T-Mobile就利用600MHz建设了4G网络,并计划还将用600MHz建设5G网络,以利用低频电覆盖广的特点,快速建成一张全国性的5G网络。 但问题来了,600MHz低频段的频宽小啊,网速慢啊,怎么解决这么多人在家里上网? 在美国很多地方,T-Mobile的600MHz频段的频宽只有10MHz(上下行各10M),其中4G网络分了5MHz,5G网络分了5MHz。 众所周知,网络就像道路一样,带宽越大,道路越宽,车流量越大,网速越快。通常4G LTE的单载波带宽为20MHz,而5G网络单载波带宽达100MHz,所以5G网络速率是4G的几倍。 而T-Mobile的600MHz频段只有10MHz带宽,怎么保障这么多人在家里远程办公、学习和上网? T-Mobile想到了一个清奇的解决办法----借频谱。 T-Mobile官网宣布,为了提升网络容量,将向Dish、Bluewater、Channel 51、Comcast等多家公司借600 MHz频谱,使用时间为60天。 通过借频谱的方式,T-Mobile的600MHz频谱带宽可达到35MHz(上下行各35M),从而可将网络容量提升3-4倍。 ... 看来,疫情之下,很多国家的网络都未能经受住考验。 而反观我国三大运营商的网络,在疫情期间保障了数以亿计的用户在家办公、学习和娱乐,一直坚挺无比,谁也没有掉链子。 不仅于此,疫情发生后,三大运营商立即启动了24小时模式的通信保障,重点保障救治医院、疾控中心等场所通信畅通,并组织突击队奔赴火神山、雷神山一线,从一片空地上火速建成了4G、5G全覆盖的通信网络,为远程重症监护、诊疗信息收集、医院远程会诊等提供高效、可靠的通信保障。 没有对比,就没有差距。没有对比,你从来不懂得珍惜。 有人说,网络就像厕纸,平时从不在意,而关键时刻要人命。但一直以来,中国通信在社会舆论中恐怕连厕纸都不如。三大运营商,就是大家想骂就骂的对象。 可很多人不知道,就是在这一片骂声中,中国运营商一直默默履行社会责任,不断推进网络普遍覆盖。据统计,我国已建设开通的4G基站数量占全球50%以上,每百万人基站数位居全球前四位,我国光纤用户渗透率全球位列前茅。 正是因为如此坚实的通信基础设施底座和一直“在线”的通信人,支撑了本次疫情关键时刻。 所以,希望在这次疫情结束后,请珍惜你身边的“厕纸”,对他好一点。 【责任编辑: 赵宁宁 TEL:(010)68476606】

优秀的个人博客,低调大师

ECS Open API最佳实践 --- 您使用Open API的正确姿势(实例变配篇)

背景 我们之前推出了Open API 的最佳实践功能(实例新购篇),https://yq.aliyun.com/articles/647338?spm=a2c4e.11155435.0.0.541e3312XjoQnh,近日,我们在实例变配页面也推出了类似的功能。 实例变配的Open API最佳实践 下面就来告诉大家我们在实例变配页面是如何展示Open API最佳实践的,ECS的变配分为升配和降配,而升配和降配又包括实例规格的改变,公网带宽的改变以及磁盘付费类型的改变,对于每种操作,我们都根据您在页面上的选择,提供了相应的Java以及Python代码的最佳实践。 如下图,首先进入实例升降配页面,去对您选择的实例进行变配操作: 如下图,然后您会看到一个Open API最佳实践的按钮,如下图: 点开按钮就会弹出Open API最佳实践的对话框: 对话框里显示了实例规格变配和公网带宽变配的Open API最佳实践脚本。如果您对磁盘付费类型做了改变,也会同时展示相关的脚本;我们提供了Java和Python的脚本,您可以自由选择查看;同时我们依然保留了SDK的向导,复制脚本以及隐藏注释的功能;

优秀的个人博客,低调大师

2019细腻的python入门学习图,你难道不想了解一下吗?

前言 最近python火爆程度可谓是顶级流量语言,认识它的人也越来越多,当然学习的人也是蒸蒸日上,隐隐有第一语言的噱头,学的人多了,小白自然也很多,你们在学习的过程中总会遇到一些烦恼,不知道从何学起,都希望能够得到一份python学习路线图。 对于一些0基础的想要学习python的人来说,学习方法非常重要,学习方法不对,努力也白费,所以我们需要有一个正确的学习方法。 Python学习路线一:Python基础 必学知识:【Linux基础】【Python基础语法】【Python字符串】【文件操作】【异常处理】【Python面向对象】【项目实战】 路线讲解:该路线循序渐进,科学合理,帮助学习者建立正确的编程思想,具备基本的编程能力; Python学习路线二:Python高级编程 必学知识:**【Python平台迁移Linux】【Python常用第三方库】【Python高级语法】【Python正则表达式】【网路编程】【系统编程】【数据结构与算法】【项目实战】** 路线讲解:该路线强调数据结构和算法的学习,着重提升学习者的编程核心能力;使学习者能够熟练掌握Python高级用法及网络相关知识,能够独立承担Python网络相关的开发; Python学习路线三:web前端开发 必学知识:【HTML】【CSS】【UI基础】【Java】【DOM】【事件】【jQuery】【混合开发】【项目实战】 路线讲解:使学习者掌握web前端开发的相关知识,在工作中搭建高质量网站; Python学习路线四:后端开发 必学知识:【Linux网站配置】【git项目管理】【Python框架Django】【flask框架】【接口开发】【数据库MySQL、MongoDB、Redis开发】 路线讲解:熟练掌握框架的使用,掌握数据库原理及相关优化; Python学习路线五:爬虫开发 必学知识:**【爬虫开发原理】【requests+beautifulsoup4静态网页解析】【selenium动态网页解析】【scrapy框架】【分布式爬虫系统】【项目实战】**路线讲解:使学习者能够掌握爬虫的工作原理,独立承担爬虫的相关工作,亦能够独立设计及实现分布式爬虫框架; Python学习路线六:人工智能 必学知识:【数据分析】【数据可视化】【机器学习理论与实践】【TensorFlow图像实战】【项目实战Python人工智能项目】 路线讲解:理论与实践并重,加强理论的讲解,理解机器的学习原理,更加系统完善的了解整个Python学习流程。 小编推荐一个学python的学习qun 740322234无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

优秀的个人博客,低调大师

祝贺龙果开源支付系统--荣获2017码云火爆开源项目第9名

2017 年度码云热门项目排行榜 TOP 50 出炉啦!我们根据所有开源项目在码云的用户关注度、活跃度、访问量等信息来对“热门”进行量化,从而筛选出了其中最“热门”的 50 个,它在一定程度上预示着业界的最新流行趋势。 值得注意的是,榜单中涌现出了不少新兴项目,由此可见,国内的开源气氛越来越好,国内的开源也在蓬勃发展。 http://www.oschina.net/news/92438/2017-mayun-top-50 前 20 名预览 龙果支付系统是国内首款开源的互联网支付系统,其核心目标是汇聚所有主流支付渠道,打造一款轻量、便捷、易用,且集支付、资金对账、资金清结算于一体的支付系统,满足互联网业务系统的收款和业务资金管理需求。主要特点:具备支付系统通用的支付、对账、清算、资金账户管理、支付订单管理等功能;目前已接通“支付宝即时到账”和“微信扫码支付”通道;支持直连和间连两种支付模式,任君选择;通过支付网关,业务系统可以轻松实现统一支付接入;搭配运营后台,支付数据的监控和管理可以兼得;配套完善的系统使用文档,可轻松嵌入任何需要支付的场景; 龙果支付系统产品技术团队是一支拥有多年第三方支付系统设计研发经验的团队,会为龙果支付系统持续提供商业级的免费开源技术服务支持。 码云地址:https://gitee.com/roncoocom/roncoo-pay授权协议:Apache

优秀的个人博客,低调大师

可能是把Java内存区域讲的清楚的一篇文章

写在前面(常见面试题) 基本问题: 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题: String类和常量池 8种基本类型的包装类和常量池 Java程序员必看文档 哈哈 皮一下!我自己开源的一个Java学习指南文档。一份涵盖大部分Java程序员所需要掌握的核心知识,正在一步一步慢慢完善,期待您的参与。Github地址:https://github.com/Snailclimb/Java-Guide 。看一眼,我觉得你一定不会后悔,如果可以的话,可以给个Star鼓励一下! 1 概述 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。 2 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。这些组成部分一些事线程私有的,其他的则是线程共享的。 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区 直接内存 2.1 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完。 另外,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各线程之间计数器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存。 2.2 Java 虚拟机栈 与程序计数器一样,Java虚拟机栈也是线程私有的,它的生命周期和线程相同,描述的是 Java 方法执行的内存模型。 Java 内存可以粗糙的区分为堆内存(Heap)和栈内存(Stack),其中栈就是现在说的虚拟机栈,或者说是虚拟机栈中局部变量表部分。 局部变量表主要存放了编译器可知的各种数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型,它不同于对象本身,可能是一个指向对象起始地址的引用指针,也可能是指向一个代表对象的句柄或其他与此对象相关的位置)。 2.3 本地方法栈 和虚拟机栈所发挥的作用非常相似,区别是: 虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。 在 HotSpot 虚拟机中和 Java 虚拟机栈合二为一。 2.4 堆 Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。 Java 堆是垃圾收集器管理的主要区域,因此也被称作GC堆(Garbage Collected Heap).从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以Java堆还可以细分为:新生代和老年代:在细致一点有:Eden空间、From Survivor、To Survivor空间等。进一步划分的目的是更好地回收内存,或者更快地分配内存。 2.5 方法区 方法区与 Java 堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做 Non-Heap(非堆),目的应该是与 Java 堆区分开来。 HotSpot 虚拟机中方法区也常被称为 “永久代”,本质上两者并不等价。仅仅是因为 HotSpot 虚拟机设计团队用永久代来实现方法区而已,这样 HotSpot 虚拟机的垃圾收集器就可以像管理 Java 堆一样管理这部分内存了。但是这并不是一个好主意,因为这样更容易遇到内存溢出问题。 相对而言,垃圾收集行为在这个区域是比较少出现的,但并非数据进入方法区后就“永久存在”了。 2.6 运行时常量池 运行时常量池是方法区的一部分。Class 文件中除了有类的版本、字段、方法、接口等描述信息外,还有常量池信息(用于存放编译期生成的各种字面量和符号引用) 既然运行时常量池时方法区的一部分,自然受到方法区内存的限制,当常量池无法再申请到内存时会抛出 OutOfMemoryError 异常。 JDK1.7及之后版本的 JVM 已经将运行时常量池从方法区中移了出来,在 Java 堆(Heap)中开辟了一块区域存放运行时常量池。同时在 jdk 1.8中移除整个永久代,取而代之的是一个叫元空间(Metaspace)的区域 推荐阅读:《Java中几种常量池的区分》: https://blog.csdn.net/qq_26222859/article/details/73135660 2.7 直接内存 直接内存并不是虚拟机运行时数据区的一部分,也不是虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用。而且也可能导致OutOfMemoryError异常出现。 JDK1.4中新加入的 NIO(New Input/Output) 类,引入了一种基于通道(Channel) 与缓存区(Buffer) 的 I/O 方式,它可以直接使用Native函数库直接分配堆外内存,然后通过一个存储在 Java 堆中的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样就能在一些场景中显著提高性能,因为避免了在 Java 堆和 Native 堆之间来回复制数据。 本机直接内存的分配不会收到 Java 堆的限制,但是,既然是内存就会受到本机总内存大小以及处理器寻址空间的限制。 3 HotSpot 虚拟机对象探秘 通过上面的介绍我们大概知道了虚拟机的内存情况,下面我们来详细的了解一下 HotSpot 虚拟机在 Java 堆中对象分配、布局和访问的全过程。 3.1 对象的创建 下图便是 Java 对象的创建过程,我建议最好是能默写出来,并且要掌握每一步在做什么。 ①类加载检查: 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 ②分配内存: 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。分配方式有 “指针碰撞” 和 “空闲列表” 两种,选择那种分配方式由 Java 堆是否规整决定,而Java堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定。 内存分配的两种方式:(补充内容,需要掌握) 选择以上两种方式中的哪一种,取决于 Java 堆内存是否规整。而 Java 堆内存是否规整,取决于 GC 收集器的算法是"标记-清除",还是"标记-整理"(也称作"标记-压缩"),值得注意的是,复制算法内存也是规整的 内存分配并发问题(补充内容,需要掌握) 在创建对象的时候有一个很重要的问题,就是线程安全,因为在实际开发过程中,创建对象是很频繁的事情,作为虚拟机来说,必须要保证线程是安全的,通常来讲,虚拟机采用两种方式来保证线程安全: CAS+失败重试: CAS 是乐观锁的一种实现方式。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。虚拟机采用 CAS 配上失败重试的方式保证更新操作的原子性。 TLAB: 为每一个线程预先在Eden区分配一块儿内存,JVM在给线程中的对象分配内存时,首先在TLAB分配,当对象大于TLAB中的剩余内存或TLAB的内存已用尽时,再采用上述的CAS进行内存分配 ③初始化零值:内存分配完成后,虚拟机需要将分配到的内存空间都初始化为零值(不包括对象头),这一步操作保证了对象的实例字段在 Java 代码中可以不赋初始值就直接使用,程序能访问到这些字段的数据类型所对应的零值。 ④设置对象头: 初始化零值完成之后,虚拟机要对对象进行必要的设置,例如这个对象是那个类的实例、如何才能找到类的元数据信息、对象的哈希吗、对象的 GC 分代年龄等信息。 这些信息存放在对象头中。 另外,根据虚拟机当前运行状态的不同,如是否启用偏向锁等,对象头会有不同的设置方式。 ⑤执行 init 方法: 在上面工作都完成之后,从虚拟机的视角来看,一个新的对象已经产生了,但从 Java 程序的视角来看,对象创建才刚开始,<init> 方法还没有执行,所有的字段都还为零。所以一般来说,执行 new 指令之后会接着执行 <init> 方法,把对象按照程序员的意愿进行初始化,这样一个真正可用的对象才算完全产生出来。 3.2 对象的内存布局 在 Hotspot 虚拟机中,对象在内存中的布局可以分为3快区域:对象头、实例数据和对齐填充。 Hotspot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的自身运行时数据(哈希吗、GC分代年龄、锁状态标志等等),另一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。 实例数据部分是对象真正存储的有效信息,也是在程序中所定义的各种类型的字段内容。 对齐填充部分不是必然存在的,也没有什么特别的含义,仅仅起占位作用。 因为Hotspot虚拟机的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说就是对象的大小必须是8字节的整数倍。而对象头部分正好是8字节的倍数(1倍或2倍),因此,当对象实例数据部分没有对齐时,就需要通过对齐填充来补全。 3.3 对象的访问定位 建立对象就是为了使用对象,我们的Java程序通过栈上的 reference 数据来操作堆上的具体对象。对象的访问方式有虚拟机实现而定,目前主流的访问方式有①使用句柄和②直接指针两种: 句柄: 如果使用句柄的话,那么Java堆中将会划分出一块内存来作为句柄池,reference 中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息; 直接指针: 如果使用直接指针访问,那么 Java 堆对像的布局中就必须考虑如何防止访问类型数据的相关信息,reference 中存储的直接就是对象的地址。 这两种对象访问方式各有优势。使用句柄来访问的最大好处是 reference 中存储的是稳定的句柄地址,在对象被移动时只会改变句柄中的实例数据指针,而 reference 本身不需要修改。使用直接指针访问方式最大的好处就是速度快,它节省了一次指针定位的时间开销。 四 重点补充内容 String 类和常量池 1 String 对象的两种创建方式: String str1 = "abcd"; String str2 = new String("abcd"); System.out.println(str1==str2);//false 这两种不同的创建方法是有差别的,第一种方式是在常量池中拿对象,第二种方式是直接在堆内存空间创建一个新的对象。记住:只要使用new方法,便需要创建新的对象。 2 String 类型的常量池比较特殊。它的主要使用方法有两种: 直接使用双引号声明出来的 String 对象会直接存储在常量池中。 如果不是用双引号声明的 String 对象,可以使用 String 提供的 intern 方String.intern() 是一个 Native 方法,它的作用是:如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。 String s1 = new String("计算机"); String s2 = s1.intern(); String s3 = "计算机"; System.out.println(s2);//计算机 System.out.println(s1 == s2);//false,因为一个是堆内存中的String对象一个是常量池中的String对象, System.out.println(s3 == s2);//true,因为两个都是常量池中的String对 3 String 字符串拼接 String str1 = "str"; String str2 = "ing"; String str3 = "str" + "ing";//常量池中的对象 String str4 = str1 + str2; //在堆上创建的新的对象 String str5 = "string";//常量池中的对象 System.out.println(str3 == str4);//false System.out.println(str3 == str5);//true System.out.println(str4 == str5);//false 尽量避免多个字符串拼接,因为这样会重新创建对象。如果需要改变字符串的花,可以使用 StringBuilder 或者 StringBuffer。 String s1 = new String("abc");这句话创建了几个对象? 创建了两个对象。 验证: String s1 = new String("abc");// 堆内存的地值值 String s2 = "abc"; System.out.println(s1 == s2);// 输出false,因为一个是堆内存,一个是常量池的内存,故两者是不同的。 System.out.println(s1.equals(s2));// 输出true 结果: false true 解释: 先有字符串"abc"放入常量池,然后 new 了一份字符串"abc"放入Java堆(字符串常量"abc"在编译期就已经确定放入常量池,而 Java 堆上的"abc"是在运行期初始化阶段才确定),然后 Java 栈的 str1 指向Java堆上的"abc"。 8种基本类型的包装类和常量池 Java 基本类型的包装类的大部分都实现了常量池技术,即Byte,Short,Integer,Long,Character,Boolean;这5种包装类默认创建了数值[-128,127]的相应类型的缓存数据,但是超出此范围仍然会去创建新的对象。 两种浮点数类型的包装类 Float,Double 并没有实现常量池技术。 Integer i1 = 33; Integer i2 = 33; System.out.println(i1 == i2);// 输出true Integer i11 = 333; Integer i22 = 333; System.out.println(i11 == i22);// 输出false Double i3 = 1.2; Double i4 = 1.2; System.out.println(i3 == i4);// 输出false Integer 缓存源代码: /** *此方法将始终缓存-128到127(包括端点)范围内的值,并可以缓存此范围之外的其他值。 */ public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 应用场景: Integer i1=40;Java 在编译的时候会直接将代码封装成Integer i1=Integer.valueOf(40);,从而使用常量池中的对象。 Integer i1 = new Integer(40);这种情况下会创建新的对象。 Integer i1 = 40; Integer i2 = new Integer(40); System.out.println(i1==i2);//输出false Integer比较更丰富的一个例子: Integer i1 = 40; Integer i2 = 40; Integer i3 = 0; Integer i4 = new Integer(40); Integer i5 = new Integer(40); Integer i6 = new Integer(0); System.out.println("i1=i2 " + (i1 == i2)); System.out.println("i1=i2+i3 " + (i1 == i2 + i3)); System.out.println("i1=i4 " + (i1 == i4)); System.out.println("i4=i5 " + (i4 == i5)); System.out.println("i4=i5+i6 " + (i4 == i5 + i6)); System.out.println("40=i5+i6 " + (40 == i5 + i6)); 结果: i1=i2 true i1=i2+i3 true i1=i4 false i4=i5 false i4=i5+i6 true 40=i5+i6 true 解释: 语句i4 == i5 + i6,因为+这个操作符不适用于Integer对象,首先i5和i6进行自动拆箱操作,进行数值相加,即i4 == 40。然后Integer对象无法与数值进行直接比较,所以i4自动拆箱转为int值40,最终这条语句转为40 == 40进行数值比较。 写在最后 开源文档推荐 Java-Guide:一份涵盖大部分Java程序员所需要掌握的核心知识,正在一步一步慢慢完善,期待您的参与。 Github地址:https://github.com/Snailclimb/Java-Guide 参考: 《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版》 《实战java虚拟机》 https://www.cnblogs.com/CZDblog/p/5589379.html https://www.cnblogs.com/java-zhao/p/5180492.html https://blog.csdn.net/qq_26222859/article/details/73135660 https://blog.csdn.net/cugwuhan2014/article/details/78038254 你若盛开,清风自来。 欢迎关注我的微信公众号:“Java面试通关手册”,一个有温度的微信公众号。公众号有大量资料,回复关键字“1”你可能看到想要的东西哦!

优秀的个人博客,低调大师

这份NLP研究进展汇总请收好,GitHub连续3天火的都是它

最近,有一份自然语言处理 (NLP) 进展合辑,一发布就受到了同性交友网站用户的疯狂标星,已经连续3天高居GitHub热门榜首位。 合集里面包括,20多种NLP任务前赴后继的研究成果,以及用到的数据集。 这是来自爱尔兰的Sebastian Ruder,倾力汇总而成。 他在爱尔兰国立大学 (戈尔韦) 读博。另一个身份,是AI创业公司Aylien的研究人员。 塞巴斯蒂安说,NLP近来发展太快了,即便作为局内人,也很难顺畅地跟进这个领域里发生的事。 无微不至的仓库 要找到最常用的数据集,要了解自己研究的问题有了哪些新进展,还是很费力的。 所以,他就在GitHub上面建了一个仓库,追踪各种自然语言任务的研究成果,还有对应的数据集。 这是一间整齐的仓库,任务是按字母顺序排列—— · CCG supertagging · Chunking · Constitu

优秀的个人博客,低调大师

简单方便的ip-mac绑定,透明网桥如何实现IP-MAC绑定?

IP-MAC绑定一直是局域网管理的一个重要部分。但是其实现却往往比较复杂,一般会有如下问题: 大部分路由器的IP-MAC绑定功能比较局限。一般就是简单的ARP绑定。客户机手动修改IP等方式来突破。 路由器由于硬件限制,允许的IP-MAC绑定条目比较少,一般在256条以内。 交换机上进行IP-MAC绑定,配置和维护的工作量会比较大。 三层交换机的IP-MAC绑定往往需要专业技术人员才可以操作。 今天,我要介绍的是一种非常简单方便的IP-MAC绑定方式,无需修改交换机和路由器,不改变当前网络结构和配置,即插即用,web界面配置。非常简单方便就可以实现对局域网内客户机的IP-MAC绑定。具体介绍如下: 1. 透明网桥部署 用一台WSG设备(WFilter NGF)做透明网桥,串接在路由器和交换机之间。网络结构如下图: 网桥是完全透明的,串接在网络中,无需对局域网的IP配置、网络结构等做任何改动。就可以发挥作用。 2. 通过Web界面配置IP-MAC绑定 WSG在网桥模式下,一样可以实现完整的上网行为管理和审计功能。在本例中,我们只关注“IP-MAC绑定”的相关配置。如图: 局域网的客户机可以直接扫描导入,或者文本批量导入。如图: 对未绑定的客户机,可以禁止或者允许上网。 在网关模式下,你可以选择是否给未绑定的设备分配IP(需要在WFilter的接口设置中启用DHCP)。而在网桥模式下,DHCP服务是默认不启动的,如果你想要给客户机自动分配绑定的IP地址,那么这个选项是这样的,如下图: 当然,启用这个DHCP选项后,需要把你现有的DHCP服务关闭掉,否则DHCP会冲突。 3. 总结下具体步骤 利用透明网桥来实现IP-MAC绑定,具体步骤如下: 网桥模式部署一台WSG设备。 导入IP-MAC绑定列表。 IP-MAC绑定的配置中,对未绑定的IP禁止上网。 启用网桥DHCP服务(可选) 通过透明网桥来进行IP-MAC绑定,真正做到了不修改现有网络参数、不改变现有网络架构,有够简单吧? 本文转自 笨小驴 51CTO博客,原文链接:http://blog.51cto.com/12800391/2083405,如需转载请自行联系原作者

优秀的个人博客,低调大师

史上盛大的黑科技年会前夕,阿里妹做了一个重大决定

9月8日,本周五晚上,阿里巴巴集团将在黄龙体育中心召开2017集团年会,来自全球各地的数万名员工都将齐聚杭州。 黄龙体育中心现场 “阿里年会大数据”有多吓人?14班专列、100家酒店、7000个房间、1700车次大巴、12万瓶饮用水…… 此次数万名阿里员工从全球各地赶来,其中包括来自21个国家的800多位外籍员工,而本次几乎所有海外阿里员工都将来到杭州。这其中,很多人可能是第一次来到杭州和阿里总部。 半年前,阿里巴巴“NASA”计划正式启动,面向未来20年组建强大的独立研发部门,建立新的机制体制,为服务20亿人的新经济体储备核心科技。 而此次年会在黑科技应用方面也必须堪称彻底: 年会现场,现场每人都会配发一支IoT手环——这40000只手环采用阿里自主研发的物联网技术实时精准控制,每个手环都独立接收和执行命令,并达到毫秒级精度的响应量级; 现

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册