
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
Change Stream指数据的变化事件流,MongoDB从3.6版本开始提供订阅数据变更的功能。在此之前(MongoDB 3.4及以下版本),为了实时获得集合文档的变化事件,我们不得不使用tailing oplog(复制集日志)这一方案来完成这样的功能。其中,fromMigrate是分片迁移的标记,我们需要对这些数据均衡产生的oplog进行过滤,除此之外,对查询的Cursor还设置了tail
随着互联网的发展,传统的HTTP协议已经很难满足W©b应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据。传统的HTTP协议是无状态的,每次请求(Request)都要由客户端(如浏览器)主动发起,服务端进行处理后返回Response结果。传统Web模式中客户端是主动方
Node.js中主要通过socket.io模块进行WebSocket网络编程,该模块提供了服务器端和客户端相关的组件,可以很方便地为应用加入WebSocket支持,并且支持不同的浏览器。WebSocket是从HTML5开始提供的一种浏览器与服务器间进行通信的网络技术。使用WebSocket时,浏览器和服务器只需要做一个握手的动作,然后浏览器和服务器之间就形成了一条快速通道,两者之间就可以直接进行数
第一次输出是在new过程中输出的,在new过程中,首先是初始化父类,父类构造方法调用test()方法,test()方法被子类重写了,就会调用子类的test()方法,子类方法访问子类实例变量a,而这个时候子类的实例变量的赋值语句和构造方法还没有执行,所以输出的是其默认值0。继承反映的是“is-a”的关系,即子类对象也属于父类,子类必须支持父类所有对外的行为,将可见性降低就会减少子类对外的行为,从而破
JOL(Java Object Layout)不是传统意义上的内存泄漏检测工具(不像 MAT / VisualVM / jprofiler),但它非常适合在“对象膨胀、重复引用、结构不合理”导致的慢泄漏场景中做微观分析。数组对象头 = 16 bytes(普通对象是 12 bytes,数组多了 length)典型输出(64 位 HotSpot,开启压缩指针)
比如,法国人发送的是Pékin, Windows-1252的二进制(采用十六进制)是50 E9 6B 69 6E,第二个字节E9对应é,其他都是ASCII码,中国人收到的也是这个二进制,但是他把它看成了GB18030编码,GB18030中E9 6B对应的是字符“閗”,于是他看到的就是“P閗in”,这看来就是一个乱码。在四字节编码中,第一个字节的值为0x81~0xFE,第二个字节的值为0x30~
在没有默认方法之前,Java是很难给接口增加功能的,比如List接口,因为有太多非Java JDK控制的代码实现了该接口,如果给接口增加一个方法,则那些接口的实现就无法在新版Java上运行,必须改写代码,实现新的方法,这显然是无法接受的。在接口不能定义静态方法之前,相关的静态方法往往定义在单独的类中,比如,Java API中,Collection接口有一个对应的单独的类Collections,在
其中,prepare()方法计算每个选项的累计概率,保存在数组cumulativeProbabilities中, nextItem()方法根据权重随机选择一个,具体就是,首先生成一个0~1的数,然后使用二分查找,如果没找到,返回结果是-(插入点)-1,所以-index-1就是插入点,插入点的位置就对应选项的索引。数学运算是固定的,所以种子确定后,产生的随机数序列就是确定的,确定的数字序列当然不是真
需要注意的是,这个方法返回的List,它的实现类并不是本节介绍的ArrayList,而是Arrays类的一个内部类,在这个内部类的实现中,内部用的数组就是传入的数组,没有拷贝,也不会动态改变大小,所以对数组的修改也会反映到List中,对List调用add、remove方法会抛出异常。上面的代码中,为便于理解,我们删减了一些边界情况处理的代码,完整代码要晦涩复杂一些,但接口一般都是简单直接的,这就是
简单总结下:LinkedList的用法是比较简单的,与ArrayList用法类似,支持List接口,只是,LinkedList增加了一个接口Deque,可以把它看作队列、栈、双端队列,方便地在两端进行操作。队列满时,addⅩⅩⅩ会抛出异常,offerⅩⅩⅩ只是返回false。Java中有一个类Stack,单词意思是栈,它也实现了栈的一些方法,如push/pop/peek等,但它没有实现Deque接







