Java
文章平均质量分 80
L竹轩沐雨
这个作者很懒,什么都没留下…
展开
-
Android使用okHttp实现WebSocket源码分析
项目中需要实现一个类似心跳包的内容,语音通话期间,需要不断的请求服务器发送数据,确保正在连接中,开始想到的是使用service开启子线程,定时请求接口发送数据,但数据量很大时,http请求头部太大,每次请求需要发送重复的头数据,非常消耗流量,于是考虑使用长连接的方式。Android中实现WebSocket有很多种方式,这里说一下okHttp的方式。先来大致了解一下websocket。WebSocket属于双向通信协议,Http是单向的 webSocket是需要握手进行建立连接的,只是在建立握手时,数据原创 2020-07-07 10:07:42 · 1066 阅读 · 0 评论 -
Java中的强软弱虚
从JDK1.2版本开始,把对象引用分别四中级别,从而使程序能更加灵活的控制对象的生命周期,四中级别由高到低依次为:强引用、软引用、弱引用和虚引用。1、强引用: 比如 Object object=new Object(); new 创建出来的object 对象就是强引用。当内存空间不足时,Java虚拟机宁愿抛出OutOfMemoryError错误,是程序异常终止,也不会靠随意回收具有强...原创 2018-06-27 14:10:47 · 985 阅读 · 0 评论 -
用Java逆序打印链表
Java实现的单例模式中,经常使用双重校验锁机制,因为指令重排序问题而引入了voataile关键字,这里有个疑问,到底为啥要加volatile这个关键字呀,而它,到底又有什么神奇的作用呢?对volatile这个关键字,之前只是简单的理解过:被volatile修饰的共享变量,都会具有下面两个属性:保证线程对该变量操作的内存可见性 禁止指令重排序共享变量:如果一个变量在多个线程的工作内存中...原创 2018-09-04 17:19:46 · 535 阅读 · 0 评论 -
面试题:你能手写java的pow()方法么?
我们在处理一道编程面试题的时候,通常除了注意代码规范以外,千万要记得自己心中模拟一个单元测试。主要通过三方面来处理。功能性测试 边界值测试 负面性测试不管如何,一定要保证自己的代码考虑的全面,而不要简单的猜想用户的输入一定是正确的,只是去实现功能。通常你编写一个能接受住考验的代码,会让面试官对你刮目相看,你可以不厉害,但已经充分说明了你的靠谱。今天我们的面试题目是:尝试实现Jav...原创 2018-09-05 15:45:30 · 541 阅读 · 0 评论 -
面试:扩展性好的代码,更容易获得Offer
面试题:输入一个整型数组,实现一个函数来调整该数组中的数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分,希望时间复杂度尽量小。看到这道题,相比大多数人都是能一下就想到从头到尾扫描一遍数组,然后遇到奇数就移动到最前边,遇到偶数就移动到最后边的思路。于是便有了下面的代码。注:《剑指Offer》上面的【遇到奇数移动到最前面,遇到偶数移动到最后边】其实只需要做其中一种即可。...原创 2018-09-05 18:24:00 · 95 阅读 · 0 评论 -
接口与抽象类的应用(包括各自设计模式)
一、目标1)掌握抽象类和接口的实例化操作。2)掌握模板设计的作用。3)掌握工厂设计模式的作用。4)掌握代理设计模式的作用。5)掌握适配器模式的作用。6)掌握抽象类和接口的使用区别。二、具体内容2.1 为抽象类和接口实例化在java中,可以通过对象的多态性,为抽象类和接口实例化,这样在使用抽象类和接口的时候,就可以调用本子类中所覆写过的方法。之所以抽象类和接口不能...原创 2018-09-03 17:55:08 · 173 阅读 · 0 评论 -
面试:面试常见的链表类算法捷径(一)
链表是我们数据结构面试中比较容易出错的问题,所以很多面试官总喜欢在这个上面下功夫,为了避免出错,我们最好先进行全面分析。在实际软件开发周期中,设计的时间通常不会比编码时间短,在面试的时候我们不要着急于写代码,而是一开始仔细分析和设计,这将给面试官留下一个很好的印象。与其很快写出一段千疮百孔的代码,不如仔细分析后再写出健壮性无敌的程序。面试题:输入一个单链表的头结点,返回它的中间元素。为了方...原创 2018-09-18 11:42:38 · 161 阅读 · 0 评论 -
面试-面试常见的链表算法捷径(二)
上一篇在最后给大家留了拓展题,不知道大家有没有思考完成,其实之前说有巨坑是吓大家了,实际上也没什么,好了,我们继续来看上一篇中的拓展题。面试题:给定单链表的头结点,删除单链表的倒数第k个结点。这个题和前面的文章中增加了一个操作,除了找出来这个结点,我们还要删除它。删除一个结点,想必大家必定也知道:要想操作(添加、删除)单链表的某个结点,那我们还得知道这个节点的前一个结点。所以我们要删除倒数...原创 2018-09-18 17:18:14 · 143 阅读 · 0 评论 -
面试:用Java玩转冒泡排序
虽然在我们Android开发中,很少涉及到排序算法,因为基本官方都帮我们封装好了,但排序算法也是非常重要的,在面试中归并排序和快速排序一直未高频考点,但在学习他们之前,我们必须得把三大基础算法学会,必经层层递进,方得始终嘛。冒泡排序冒泡排序恐怕是我们计算机课程上第一个接触到的排序算法,也算是一种入门级的排序算法。它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序...原创 2018-09-19 17:27:52 · 164 阅读 · 0 评论