- 博客(34)
- 收藏
- 关注
原创 大厂春招面试题(五)计算机网络
个人觉得如果要达到计算机大牛,无论主攻那个技术领域,计算机网络中一些解决问题的思想都能够让你受益颇深。1. OSI与TCP/IP各层的结构与功能,都有哪些协议。 下层向上层提供服务。TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、
2017-03-30 13:29:32
1670
原创 大厂面试题(四)数据结构和算法
数据结构和算法博大精深,博客中写不完的。《剑指offer》这本书中列出了很多面试中算法问题的解决方案,很有学习价值。1. 链表与数组。 数组,在内存上给出了连续的空间.链表,内存地址上可以是不连续的,每个链表的节点包括值和下一个节点的位置(单向的一个,双向链表的话,会有两个).数组优于链表的地方: 1.存储相同的值,数组内存空间占用的少,因为链表节点会附加上一块或两块下一个节点的
2017-03-30 13:17:45
2264
原创 大厂春招面试题(三)操作系统
博主母校是山东大学(感恩山大!!!),下面列出的是相关问题在山大计算机专业所用操作系统教科书中的页码。1.进程和线程的区别。 进程是程序在处理机中的一次运行。一个进程既包括其所要执行的指令,也包括了执行指令所需的系统资源,不同进程所占用的系统资源相对独立。所以进程是重量级的任务,它们之间的通信和转换都需要操作系统付出较大的开销。线程是进程中的一个实体,是被系统独立调度和分派的基本单
2017-03-30 13:11:47
801
原创 大厂春招面试题(二)JVM
当应聘服务器方面的职位的时候面试官好像很在乎JVM方面掌握的程度,博主主修移动开发,这方面不甚精通,先整理一下相关面试题,方便大家准备。1. 内存模型以及分区,需要详细到每个区放什么。 程序计数器:当前线程执行的字节码的行号指示器,线程私有JAVA虚拟机栈:Java方法执行的内存模型,每个Java方法的执行对应着一个栈帧的进栈和出栈的操作。 本地方法栈:类
2017-03-30 13:04:40
662
原创 大厂春招面试题(一)java
最近一直在忙春招,很久没有更新博客了,好在结果还算圆满,现在把2017年BAT包括网易面试题整理成一个系列供大家分享!当然面试内容很大一部分取决于不同的面试官以及应聘职位,但对于本科大学生来说,总有一些硬菜是需要掌握的。除了具备良好的基础知识,包括编程语言,数据结构和算法,数据库,操作系统,计算机网络以及计算机组成原理,最好还是应该有个人专研的技术方向,技术方向没有高低贵贱之分,但是能够日积月累,
2017-03-30 12:57:15
1421
转载 BlockingQueue
转载自:http://wsmajunfeng.iteye.com/blog/1629354·前言: 在Concurrent(同时发生的)包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能
2017-03-16 19:52:55
288
原创 解析Android的MVC和MVP模式
1. MVC mvc是model、view、controller的缩写。Android 鼓励弱耦合和组件的重用,android 中mvc的具体体现如下: · 模型(model):用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种
2017-03-16 12:34:56
863
转载 java集合框架(二)Map
本篇文章转载自http://blog.youkuaiyun.com/qq_28261343/article/details/526275451、Map概述1.1 什么是MapMap是将键映射到值( key-value )的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。Map 接口提供三种collection 视图,允许以键集(keySet())、值集(values())或键-
2017-03-14 19:43:44
317
转载 java集合框架(一)Collection
本篇文章转载自:http://blog.youkuaiyun.com/qq_28261343/article/details/52614411 Java集合框架主要由Collection和Map两个根接口及其子接口、实现类组成。Java集合也大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、可重复的集合;而Map则代表具有映射关系的集合。Java 5之后
2017-03-14 19:37:33
501
原创 《View的事件体系》(五)滑动冲突
开发的时候遇到滑动冲突是很坑的,比如在界面中有内外两层可以同时滑动,这个时候就会产生滑动冲突,其实解决滑动冲突是有固定套路的,掌握了这个套路滑动冲突就好解决了。 下面先列举一下产生滑动冲突的三个场景再一一介绍:1. 外部滑动方向和内部滑动方向不一致2. 外部滑动方向和内部滑动方向一致3. 上面两种情况的嵌套 对于场景1的效果,
2017-03-14 13:04:54
272
原创 《View的事件体系》(四)View的事件分发机制
前面几篇博客介绍了View的几个基础知识以及View的滑动实现,但View真正的难点和重点在于View的事件分发机制,因为解决View滑动冲突的理论基础就是View的事件分发机制。1传递规则 首先要声明一点,,分析View点击事件事实上分析的就是MotionEvent,所谓View事件的分发机制其实就是对MotionEvent的分发过程。即当一个MotionEvent产生的时候
2017-03-14 11:45:35
288
转载 HashTable
http://blog.youkuaiyun.com/chenssy/article/details/22896871这是一篇csdn的博客,里面比较全面而且准确的讲解了HashTable以及HashTable和HashMap之间的区别,本人觉得值得给大家分享。
2017-03-10 14:04:14
218
原创 《View的事件体系》(三)弹性滑动
在《View的事件体系》(二)中,我们介绍了几种实现View滑动的方法,可以看出实现起来并不复杂,但是实现效果略显生硬,最理想的是渐进式的滑动,也就是弹性滑动。实现弹性滑动的方法很多,但都是一个思想:就是把一个大的滑动分成若干小的滑动并在一定的时间段内完成。下面介绍几种实现的方法: (1)使用Scroller 这种方法在《View的事件体系》(一)中已经贴出了源码,这里再分析一
2017-03-09 20:29:08
345
原创 《View的事件体系》(二)View的滑动实现
Android手机因为屏幕小所以为了呈现更多的内容就要选择使用滑动来显示和隐藏一些内容,而如果想要做出绚丽的自定义控件也是避不开实现View的滑动的。实现View的滑动可以通过以下三种方式:(一) 通过View本身提供的scrollTo和scrollBy方法实现滑动 这两个方法是View提供专门用于实现滑动的,但上一篇博文说过它有一个缺点就是他的滑动是非弹性的
2017-03-09 18:47:59
292
原创 《View的事件体系》(一)View基础知识
虽然说View不是Android四大组件,但他的作用和重要性并不次于四大组件。那到底什么才是View?View在Android中是所有控件的基类,不管简单的Button还是复杂的ListView,他们共同的基类都是View。另外要提到的一点是ViewGroup同样继承了View,翻译过来大概就是控件组,实际也是这样,ViewGroup内部包含了一组View,他的子View同样可以是ViewGrou
2017-03-09 16:04:24
271
原创 Android自定义View
如果想要做出绚丽的界面效果仅仅靠系统的控件是远远不够的,这个时候就必须通过自定义View来实现这些绚丽的效果。自定义View是一个很难掌握的技术体系,包括View的层次结构、事件分发机制和View的工作原理等细节。自定义View的实现方法有很多,当面对一个自定义View的需求时,需要灵活地分析从而找到最高效的方法。 自定义View中有些问题如果处理不好会影响View的正常使用或者
2017-03-08 14:11:12
356
原创 Android的View工作原理(二)layout和draw过程
这篇文章介绍的是View三大流程中的layout和draw。因为上篇博文对mearsure和一些相关概念已经有了介绍,所以对layout和draw的学习就相对容易了。下面的图片反映的是Android系统View的整个流程,这两篇博文都是针对他讲解的。(1) layout过程 Layout的作用是ViewGroup用来确定子元素的位置,当ViewGroup的位置被确定后,
2017-03-08 11:36:58
517
原创 Android的View工作原理(一)mearsure过程
在界面上Android提供了一套GUI库,里面有很多控件,但是很多情况我们并不满足于系统提供的控件,因为这样就意味着应用界面的同类化比较严重。怎么样才能做到与众不同呢?答案就是自定义View,也就是自定义View,也可以叫自定义控件。但是要实现一个自定义View是有一定难度的,大部分时候我们仅仅了解基本控件的使用方法是无法做出复杂的自定义View的。为了更好的自定义View,我觉得有必要掌握Vie
2017-03-08 10:25:46
1135
转载 java的多态性
面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:
2017-03-07 19:35:46
278
原创 Android的性能优化
Android作为一款移动设备,不管是内存还是CPU的性能都受到一定限制,也就意味着Android程序不可能无限制的使用内存和CPU资源,过多的使用内存会导致程序内存溢出,即OOM;而过多的使用CPU资源,一般是做大量耗时操作,会导致手机变得卡顿甚至出现程序无法及时响应的情况,即ANR。 性能优化要解决的一个很重要的问题就是内存泄露,内存泄漏并不会导致程序功能异常,但是他会导致And
2017-03-07 14:12:17
258
原创 Android的Bitmap和缓存机制
Android中如何有效的加载Bitmap一直都是一个有意义的话题,我本人也很感兴趣。由于Bitmap的特殊性以及Android对单个应用所施加的内存限制(eg:16MB),导致加载Bitmap的时候很容易出现内存溢出。比如经常会遇到下面的异常: java.lang.OutofMemoryError:bitmap size exceeds VM budget 在实际开
2017-03-06 16:47:12
1695
原创 Android的线程和线程池
从用途上来说,线程分为主线程和子线程。主线程的作用是运行四大组件以及处理他们和用户的交互,所以就要避免主线程由于耗时操作被阻塞从而出现ANR现象,这个时候就可以用子线程来执行耗时任务,比如网络请求,I/O操作等。除Thread外,在Android中能扮演线程的角色还有很多,比如:AsyncTask、IntentService和HandlerThread。对于AsyncTask来说,它的底层用到了线
2017-03-05 16:31:20
632
原创 Android的Handler机制
相信刚接触Android开发的朋友总会有一段时间被关于Handler的异常搞得焦头烂额,本篇博客就说说Handler的那些事,从系统原理和实际开发解读,相信对你会有很大助益。 Handler是Android消息机制的上层接口,所以开发过程中只需要和Handler交互即可。很多人认为Handler的作用是更新UI,但事实上更新UI不过是Handler的一个使用场景罢了。
2017-03-04 20:11:06
378
原创 Android四大组件的工作过程
Android四大组件对Android开发者开说再熟悉不过了,他们是Activity、Service、BroadcastReceiver和ContentProvider。当具有一定开发实践后会发现很多情况情况下,只有对Android体系结构有一定认识,在实际开发中才能写出更加优秀的代码,否者总是只知其表,不知其里,难免有一种雾里看花的感觉。 1.四大组件的运行状态 A
2017-03-03 15:36:09
786
原创 Android的Window和WindowManager
在日常开发中直接接触Window的机会并不多,但是比如我们需要在界面显示一个类似悬浮窗的东西时,这种效果就需要用到Window来实现。Window实际上是一个抽象类,他的具体实现是PhoneWindow,位于WindowManagerService中。创建Window是通过WindowManager实现的,WindowManager实际上是外界访问Window的入口。而WindowManagerS
2017-03-01 23:14:01
309
原创 Android Intent隐式调用之intent-filter匹配规则
有Android开发经验的几乎都知道使用Intent启动新的Activity,显式调用很简单,所以大部分也是使用显式调用,但是更深层次的开发的避不开使用隐式调用。显式调用都很熟悉,这里就重点介绍一下隐式调用。如果两者共存的话,以显式调用为主。此外隐式调用需要Intent能够匹配目标组件的IntentFilter中设置的过滤信息,如果不匹配将无法启动目标Activity,IntentFilter中的
2017-03-01 15:17:05
1465
原创 Android的启动模式
为了满足项目的特殊需要,就必须使用Activity的启动模式,而Activity的启动模式是由标志位设定的,虽然太多的标志位让程序员们深恶痛绝,但还是靠他们吃饭的,有必要搞清楚他们。 启动模式在英文中是LaunchMode。在默认情况下,我们多次启动同一个Activity的时候,系统会重复创建多个实例并把他们一一放入任务栈中,上一篇在Activity的生命周期中已经介绍过。当用户点击bac
2017-03-01 14:07:12
262
原创 Android的生命周期
Acticity作为Android四大组件之首,但是在使用过程中总有一些不容易搞清楚的概念,主要是他的生命周期和启动模式,以及IntentFilter的匹配规则分析。下面将结合底层揭开这几个问题的面纱。 1.生命周期 Activity的生命周期包括典型情况下和异常情况下两部分内容,典型情况也可以认为用户参与下的正常的activity变化,而异常情况代表Activity被系
2017-03-01 13:04:49
342
原创 Android网络编程核心技术(三)URL资源处理
通常情况而言,URL可以由协议名、主机、端口和资源名组成,Android通过URl获取资源一般可以通过URLConnection和HTTPURLConnetion两种方式。 1.通过多线程实现URL文件下载 上一篇文章提过使用openStream()来获取URL资源的InputStream,下面的例子通过该方法远程读取资源。 public
2017-02-27 11:57:47
312
原创 Android网络编程核心技术(二)Java接口和Android接口
Android网络通信的大部分情况使用Apache接口都能解决,但有些情况,使用java接口似乎更简单点,这篇文章简单介绍一下java网络编程在Android中的应用。 1.URL地址 在java中直接提供了类URL来处理和URl相关的知识。下面是一段简单代码: URL URL= new URL(StringUrl);
2017-02-26 22:37:45
489
原创 Android网络编程核心技术(一)Apache接口
在Android系统中,提供了如下3种通信接口:Apache接口:org.apache.http。标准Java接口:java.net。Android网络接口:android.net.http。 1.使用Apache接口 在Android系统中,可以采用HttpPost和HttpGet封装post和Get请求,再使用HttpClient的excute()方法发送
2017-02-26 20:50:46
580
原创 java输入输出(二)
6.写文本(字符)插入图片 抽象类Writer定义了用于写字符的流。OutputStreamWriter是Writer的一个子类,它为使用一个字符集将字符转换为字节流提供了便利。而如果想要把字符写入文件,java提供了OutputStreamWriter的子类FileWriter,但是它有一个问题就是,使用FileWriter时只能用计算机的编码输出字符,所以当前字符集之外的字符无
2017-02-26 12:44:46
460
原创 java输入输出(一)
输入/输出(I/O)操作的例子包括:创建和删除文件从一个文件或者网络套接字中读取内容,或者向其写入内容把对象序列化(或保存)到持久内存中,并且获取保存的对象 使用过旧的File类就会发现他的很多方法都无法抛出异常,delete方法常常工作失败但原因非常让人费解,rename方法也无法在不同的操作系统上一致的工作。所以JDK引入了一组名为NIO.2的包,作为技术补充,这
2017-02-24 18:13:26
330
原创 JAVA何以做到“平台无关”以及JAVA的集合框架
平台无关性或者跨平台,意味着你的程序可以在多种操作系统上运行。但是是什么使得JAVA可以与平台无关呢? 在传统的编程中,源代码编译为可执行的代码。可执行代码只能在它所针对的平台上运行。换句话说,针对Windows编写和编译的代码只能在Windows上运行,Linux也一样。 JAVA程序编译为字节码。字节码本身不运能行,因为他不是原生代码。字节码只能在JAVA虚拟机(JVM)上运行。JVM负责解释字
2017-02-23 15:13:38
342
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人