java
weizaishouex2010
在校研究生
展开
-
BufferedInputStream实现原理分析
转载自:http://diaocow.iteye.com/blog/1746210高我们的读取效率,现在我们看下BufferedInputStream的实现原理: BufferedInputStream内部有一个缓冲区,默认大小为8M,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败(缓冲区无可读数据),则选择从物理数据源(譬如文件)读取新数据(这里会尝试尽可能读取多的转载 2016-05-23 11:57:25 · 586 阅读 · 0 评论 -
利用|,&,^,~,<<,>>>写出高效艺术的代码
转载自 http://blog.csdn.net/a396901990/article/details/34139157简介:大家在阅读源码的时候经常会看到一些比如下面这样特别难理解的代码。[java] view plaincopyprint?cancelEvent.setAction(MotionEvent.ACTION转载 2015-12-08 12:01:32 · 420 阅读 · 0 评论 -
java synchronized详解
转载自:http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,转载 2016-01-25 16:03:44 · 226 阅读 · 0 评论 -
牛客网 | 基本字符串压缩
题目描述利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。测试样例"aa原创 2015-12-23 22:43:00 · 716 阅读 · 0 评论 -
[Java并发包学习八]深度剖析ConcurrentHashMap
转载自:http://qifuguang.me/2015/09/10/[Java并发包学习八]深度剖析ConcurrentHashMap/概述还记得大学快毕业的时候要准备找工作了,然后就看各种面试相关的书籍,还记得很多面试书中都说到:HashMap是非线程安全的,HashTable是线程安全的。那个时候没怎么写Java代码,所以根本就没有听说过Concu转载 2016-01-25 12:00:34 · 383 阅读 · 0 评论 -
Java栈与堆
----对这两个概念的不明好久,终于找到一篇好文,拿来共享 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可转载 2015-12-06 22:11:26 · 280 阅读 · 0 评论 -
理解Java中的弱引用
转载自:http://droidyue.com/blog/2014/10/12/understanding-weakreference-in-java/不久之前,我面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给我介绍一些Java中得弱引用吗?”,如果面试者这样说,“嗯,是不是垃圾回收有关的?”,我就会基本满意了,我并不期待回答是一篇诘究本末的论文描述转载 2015-12-22 17:31:53 · 923 阅读 · 1 评论 -
关于JAVA内存泄漏问题注意事项
转载自:http://www.csdn123.com/html/20130308/83/fa9dff7cde2f297e23bef5872b1062a2.htmJava的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任转载 2015-12-22 16:47:23 · 327 阅读 · 0 评论 -
写出高质量代码的10个Tips
转载自: http://www.jianshu.com/p/31b21a0bf1e1很长一段时间以来,我都在关注如何提高代码质量,也为此做过一些尝试,我想这个话题可能大家会比较感兴趣,在这里分享一下我关于如何提高代码质量的一些体会。1. 打好基础写出高质量代码,并不是搭建空中楼阁,需要有一定的基础,这里我重点强调与代码质量密切相关的几点:掌握好开发语言,比如做A转载 2015-12-22 16:30:47 · 374 阅读 · 0 评论 -
java中的匿名内部类总结
转载自: http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法转载 2015-12-22 15:30:21 · 307 阅读 · 0 评论 -
什么导致了Context泄露:Handler&内部类
转载自 : http://www.cnblogs.com/kissazi2/p/4121852.html思考下面代码1 public class SampleActivity extends Activity {2 3 private final Handler mLeakyHandler = new Handler() {4 @Override5转载 2015-12-22 14:00:26 · 278 阅读 · 0 评论 -
Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
序言 关于类的static成员变量初始化、static初始化块、实例的普通成员变量初始化、实例的普通初始化块以及构造函数的执行顺序,我一直不是十分明确地知道,今天专门花了几个小时的时间参考网上资料设计出了比较明了的测试代码,有代码有结果有真相。总体而言,static部分执行早于普通初始化块早于构造函数,如果一个类继承了某个父类,则父类的static部分最先执行。 正文转载 2015-12-07 18:18:07 · 463 阅读 · 0 评论 -
关于String内存分配的深入探讨
public class Test { public static final String MESSAGE="taobao"; public static void main(String[] args) { String a = "tao"+"bao"; String b =转载 2015-12-07 19:57:44 · 283 阅读 · 0 评论 -
原码, 反码, 补码 详解
转载地址:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!转载 2015-12-08 16:13:12 · 265 阅读 · 0 评论 -
Dalvik与ART的GC调试
转载自: http://gityuan.com/2015/10/03/Android-GC/一、Dalvik1.1 GC含义Dalvik虚拟机,每一次GC打印内容格式:D/dalvikvm: , , , 中文版:D/dalvikvm: , , , 含义解析GC Reason(GC触发原因)GC_CONC转载 2016-05-26 21:38:05 · 901 阅读 · 0 评论 -
Java 7之多线程线程池 - 线程池原理(1)
来看一下线程池的框架图,如下:1、Executor任务提交接口与Executors工具类Executor框架同Java.util.concurrent.Executor 接口在Java 5中被引入。Executor框架是一个根据一组执行策略调用,调度,执行和控制的异步任务的框架。Executor存在的目的是提供一种将"任务提交"与"任务如何运行"分离开来的机制。定义转载 2016-05-11 21:16:35 · 377 阅读 · 0 评论 -
Dalvik虚拟机简要介绍和学习计划
转载自: http://blog.csdn.net/Luoshengyang/article/details/8852432我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。除了指令集和类文件格式不同,Dalvik虚拟机与Java虚拟机共享有差不多的特性,例如,它们都是解释执行,并且支持即时编译(JIT)、垃圾收转载 2016-05-24 14:34:42 · 379 阅读 · 0 评论 -
java HashMap
转载自: http://blog.csdn.net/chenssy/article/details/18323767 HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过ke转载 2016-03-25 18:23:00 · 456 阅读 · 0 评论 -
深入分析Java ClassLoader原理
转载自: http://blog.csdn.net/xyang81/article/details/7292380一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都转载 2016-03-15 11:46:38 · 336 阅读 · 0 评论 -
HTTPS科普扫盲帖
转载自:https://segmentfault.com/a/1190000004523659?f=tt&hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io为什么需要httpsHTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。转载 2016-03-07 15:12:41 · 914 阅读 · 0 评论 -
java.lang.String类分析
转载自: http://blog.csdn.net/bbirdsky/article/details/8283143前言字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生。在很多面试题中经常用String大做文章,只要掌握了String特性,对付它们就不再是困难了。1、从根本上认识java.lang.Str转载 2016-03-03 11:27:28 · 269 阅读 · 0 评论 -
牛客网 | 魔术索引II
题目描述在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个不下降序列,元素值可能相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。测试样例:[1,1,3,4,5]返回:true主要考察动态规划,此类问题可以参原创 2016-01-11 20:33:13 · 461 阅读 · 0 评论 -
Protobuffer和json深度对比
转载自:http://cxshun.iteye.com/blog/1974498JSON相信大家都知道是什么东西,如果不知道,那可就真的OUT了,GOOGLE一下去。这里就不介绍啥的了。Protobuffer大家估计就很少听说了,但如果说到是GOOGLE搞的,相信大家都会有兴趣去试一下,毕竟GOOGLE出口,多属精品。Protobuffer是一个类似JSON的一个传输协转载 2016-01-11 17:06:00 · 272 阅读 · 0 评论 -
小心使用ArrayList和LinkedList
转载自 : http://www.exceptionhelp.com/javadetail?articleId=551最近在看数据结构,发现这个东西不错,记录下来,以便分享! ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。Link转载 2015-12-20 20:28:25 · 473 阅读 · 0 评论 -
不要在Android的Application对象中缓存数据!
转载自:http://zmywly8866.github.io/2014/12/26/android-do-not-store-data-in-the-application-object.html说明 这是翻译老外的一篇文章,我之前有遇到过这个问题,并且看到有人在Segmentfault上问,最主要我在StackOverflow上居然没搜到累死问题,所以觉得有必要翻译过转载 2016-01-05 14:45:14 · 355 阅读 · 0 评论 -
比较ArrayList、LinkedList、Vector
转载自:http://blog.csdn.net/renfufei/article/details/170774251. List概述List,就如图名字所示一样,是元素的有序列表。当我们讨论List时,将其与Set作对比是一个很好的办法,Set集合中的元素是无序且唯一的。下图是Collection的类继承图,从图中你可以对本文所讨论的知识有大致的了解.图12.转载 2015-12-18 15:23:14 · 327 阅读 · 0 评论 -
选择排序
在介绍选择排序算法前,我们再回顾下冒泡算法。 冒泡算法是通过两两比较,不断交换,逐个推进的方式,来进行排序的。一次遍历,得到一个最值。 冒泡算法最费时的是什么? 一是两两比较一是两两交换, 交换要比比较费时多了。 在冒泡算法一篇中,介绍了几种改进方法,那几种改进方法为什么放在冒泡算法中一篇中,而不另一一篇介绍?转载 2015-10-07 13:05:48 · 311 阅读 · 0 评论 -
快速排序
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序转载 2015-10-07 16:35:51 · 301 阅读 · 0 评论 -
归并排序
要点归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并排序的基本思想将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序2015-10-07 14:46:53 · 64 阅读 · 0 评论 -
插入排序
一、基本思想通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。如果输入数组已经是排好转载 2015-10-07 13:27:29 · 380 阅读 · 0 评论 -
冒泡排序
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作转载 2015-10-06 23:42:32 · 283 阅读 · 0 评论 -
牛客网 | 链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode FindKthT原创 2015-10-20 18:38:05 · 356 阅读 · 0 评论 -
Java中Synchronized的用法
synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类转载 2015-10-20 11:58:45 · 289 阅读 · 0 评论 -
InputStream 转为 Byte
public class Utils { public static byte[] getBytes(InputStream is) throws IOException { int len; int size = 1024; byte[] buf; if (is instanceof ByteArrayInputStream) { size原创 2015-11-05 18:13:51 · 266 阅读 · 0 评论 -
HashMap深度解析(二)
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/16890151,转载请注明。 上一篇比较深入的分析了HashMap在put元素时的整体过程,Java Collections Framework中实际操作的都是数组或者链表,而我们通常不需要显示的维护集合的大小,而是集合类框架中内部维护,方便的同时,也带转载 2015-10-05 14:42:01 · 353 阅读 · 0 评论 -
HashMap深度解析(一)
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/16843543,转载请注明。 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构,我们总会在不经意间用到它,很大程度上方便了我们日常开发。在很多Java的笔试题中也会被问到,最常见的,“HashMap和HashTabl转载 2015-10-05 14:29:30 · 302 阅读 · 0 评论 -
归并排序
要点归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并排序的基本思想将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序转载 2015-10-07 14:48:57 · 257 阅读 · 0 评论 -
牛客网 | 包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。import java.util.Stack;public class Solution { Stack data = new Stack<>(); Stack mins = new Stack<>(); public void push(int node) { dat原创 2015-10-22 20:04:46 · 264 阅读 · 0 评论 -
Java知识(一)
1. 九种基本数据类型的大小,以及他们的封装类首先,八种基本数据类型分别是:int、short、float、double、long、boolean、byte、char;它们的封装类分别是:Integer、Short、Float、Double、Long、Boolean、Byte、Character。因为对基本数据类型封装之后,封装类有可以有方法和属性,然后就可以利用这些方法和属性来处原创 2015-10-09 17:28:01 · 1134 阅读 · 3 评论 -
Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes
导入一个新项目,同时用到了v4,v7都是22.1.1包,compile ('com.android.support:support-v4:22.1.0')compile('com.android.support:appcompat-v7:22.1.0')然后就报了如下错误com.android.dex.DexException: Multiple dex f原创 2015-12-11 15:57:03 · 2995 阅读 · 0 评论