自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 致Android开发者的Kotlin入门

Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Google玩儿Android的人,我们必须尽快了解和使用Kotlin语言。不过Kotlin毕竟是语言级别的新事物,比起Java来说,从编程思想到代码细节都有不少变化,我们最好先对Kotlin有个整体的基本的了解,然后再去学习和使用,这样才能高效地掌握Kotlin语言。Java的辉煌与阴影1995年,当年...

2018-05-30 11:03:52 1878

原创 重大福利!!!《阿里巴巴Android开发手册》首次公开,免费参阅。

热爱技术的小伙伴们,《阿里巴巴Android开发手册》首次公开啦!!!给大家看下手册目录目录前言 ............................................................................................................................. 2一、Java 语言规范 ...............

2018-03-01 15:55:01 300

转载 Android 高级自定义Toast及源码解析

Toast概述Toast的作用不需要和用户交互的提示框。更多参见官网:https://developer.android.com/guide/topics/ui/notifiers/toasts.htmlToast的简单使用 Toast.makeText(MainActivity.this.getApplicationContext(),"沉迷学习,日渐消瘦",Toast.LENGTH_SHORT).show()自定义Toast Toast customToast =

2020-05-12 13:45:20 45

转载 Android 内存泄露简介、典型情景及检测解决

什么是内存泄露?Android虚拟机的垃圾回收采用的是根搜索算法。GC会从根节点(GC Roots)开始对heap进行遍历。到最后,部分没有直接或者间接引用到GC Roots的就是需要回收的垃圾,会被GC回收掉。内存泄漏指的是进程中某些对象(垃圾对象)已经没有使用价值了,但是它们却可以直接或间接地引用到gc roots导致无法被GC回收。无用的对象占据着内存空间,导致不能及时回收这个对象所占用的内存。内存泄露积累超过Dalvik堆大小,就会发生OOM(OutOfMemory)。内存泄露的经典场景

2020-05-11 15:15:20 44

原创 Android java.lang.NoSuchMethodError: No virtual method checkSelfPermission(Ljava/lang/String;)

今天拿到这样的个bug:java.lang.NoSuchMethodError: No virtual method checkSelfPermission(Ljava/lang/String;)I in class Landroid/content/Context; or its super classes (declaration of 'android.content.Context' ...

2019-11-21 13:07:16 718

原创 《JAVA》设计一个有getMin功能的栈

实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。要求:pop、push、getMin操作的时间复杂度都是O(1) 设计的栈类型可以使用现成的栈结构实现代码:/** * * 实现一个特殊的栈,在实现栈的基本功能的基础上,在实现返回栈中最小元素的操作。 要求: 1. pop、push、getMin操作的时间复杂度都是O(1) * 2. 设...

2019-10-10 12:55:28 53

原创 网络基础知识---TCP与UDP

TCP与UDP面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。面向字节流的话,虽然...

2019-07-02 09:12:00 44

转载 Android 平台 Native 代码的崩溃捕获机制及实现

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/g-WzYF3wWAljok1XjPoo7w一、背景在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。所以一个合格的...

2019-05-27 09:08:59 227

原创 《JAVA》扑克牌的顺子问题

题目:从扑克牌中随机抽5张牌,判断是不是顺子,即这5张牌是不是连续的。2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意的 数字。解题思路:我们可以把5张牌看成是由5个数字组成的数组。大小王是特殊的数字,我们可以把它们都定义为0,这样就可以和其他的牌区分开来。首先把数组排序,再统计数组中0的个数,最后统计排序之后的数组中相邻数字之...

2019-03-12 13:13:43 246

原创 网络基础知识---Http协议

  Http协议支持客户/服务器模式 简单快速:客户向服务端请求服务时,只需传送请求方式和路径。 灵活:允许传输任意类型的数据对象。由Content-Type加以标记。 无连接:每次响应一个请求,响应完成以后就断开连接。 无状态:服务器不保存浏览器的任何信息。每次提交的请求之间没有关联。 非持续性和持续性HTTP1.0默认非持续性;HTTP1.1默认持续性持续...

2018-12-11 14:17:26 82

原创 产品开发流程

让每一位程序猿了解产品开发流程 MRD需求分析主要从用户角度、市场商业角度,来分析、梳理、过滤业务需求,列出技术难点。原型设计(交互设计)确认需求之后,产品经理就可以画草图,讨论,确认,做初步原型图。进行原型测试。视觉设计(UI设计)到这一步,基本流程已经确定。设计高保真图片,增加产品的友好度。PRD需求文档这一步与UI设计同步进行。主要是细化需求文档,梳理功能...

2018-11-23 15:01:33 657

转载 《JAVA》浅谈数值的整数次方

 题目:实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。看到了很多人会这样写:public static double powerWithExponent(double base,int exponent){ double result = 1.0; for...

2018-11-21 10:55:49 73

原创 《JAVA》——Singleton模式举例

  /** * 单例模式,饿汉式,线程安全 */ public static class Singleton { private final static Singleton INSTANCE = new Singleton(); private Singleton() { } public static Singleton getInsta...

2018-10-23 11:10:18 119

原创 《JAVA》浅谈——顺序查找、折半查找

  顺序查找基本原理:依次遍历public class Solution { public static int SequenceSearch(int[] sz, int key) { for (int i = 0; i < sz.length; i++) { if (sz[i] == key) { return i; } } ret...

2018-10-18 13:09:46 127

原创 《JAVA》浅谈——归并排序

  归并排序:是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。算法规则: 像快速排序一样,由于归并排序也是分治算法。因此可使用分治思想:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设...

2018-09-10 14:02:35 81

原创 《JAVA》浅谈——快速排序

  快速排序:又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。算法规则: ...

2018-09-07 16:13:21 129

原创 《JAVA》浅谈——冒泡排序

  冒泡排序:是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法规则:由于算法每次都将一个最大的元素往上冒,我们可以将待排序集合(0...n)看成两部分,一部分为(k..n)的待排序u...

2018-08-14 09:07:26 71

原创 《JAVA》浅谈——选择排序

 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法规则:将待排序集合(0...n)看成两部分,在起始状态中,一部分为(k..n)的待排序unsorted集合,另一部分为(...

2018-08-07 09:12:50 82

原创 《JAVA》字符串操作总结

 public String concat(String str) 该方法的参数为一个String类对象,作用是将参数中的字符串str连接到原来字符串的后面.public int length()返回字串的长度,这里的长度指的是字符串中Unicode字符的数目.public char charAt(int index)该方法在一个特定的位置索引一个字符串,以得到字...

2018-07-24 09:13:42 192

原创 Excel PivotTable 使用心得手顺分享(六)

       切片器  个人认为:切片器(Slicers)类似于Report Filter的功能,但是比其更灵活、好使。首先调整筛选区域Field在PivotTable区域,选中任意cell,然后点击 Insert à Slicer会弹出如下图对话框。如果点击不是PivotTable区域内的cell,出来的对话框会不一样哦选中Category后,效果图如下点...

2018-07-18 11:02:22 1660

原创 Excel PivotTable 使用心得手顺分享(五)

       频数分布首先,调整筛选区域成下图初步效果如下在Sum of Amount 区域,任意cell右键,在弹出的对话框中选择Value Field Settings  会弹出对话框,选择Count 再在Row Labels区域任意cell,右键,选择Group会弹出如下图对话框,修改Start、End值,点击OK效果如下若...

2018-07-17 10:49:00 1899

原创 Excel PivotTable 使用心得手顺分享(四)

      多级数据筛选Report Filter、Column Labels、Row Labels、Values这四栏均可以Drag多个Fields1.Row Labels 多Fields示例Drag完后,效果如下下面,我们换下Country和Category顺序 效果与上图是不一样的,由此,我们知道顺序是有讲究的  2.Values 多Fields示例 选完效果如下对Sum of Amount...

2018-07-09 15:00:52 1901

转载 Android Toast源码分析

前言    这周去杭州参加了百阿培训,见到了传说中的牛人多隆大神。从多隆大神身上看到了做技术人的纯粹,单纯。除了见到多隆大神,这次培训并没有太多的收获,反而培训过程中遇到了好多产品上的Bug,远程办公快累到死。总结一下跟Toast相关的问题,首先从深入学习Toast的源码实现开始。Toast源码实现Toast入口    我们在应用中使用Toast提示的时候,一般都是一行简单的代码调用,如下所示:T...

2018-07-06 13:41:15 456 1

原创 Excel PivotTable 使用心得手顺分享(三)

    过滤在这里,我们Report Filter栏里是Country,所以在Table上显示的即是Country 点击倒三角,弹出对话框 这是选择Australia后的结果 这是选择UnitedStates后的结果            分组分组1:字符串分组假设分两组选择三个国家在选中区域右键,选中Group初步效果如下再选中剩下的区域右键选中Group效果如下将Group1、Group2折叠...

2018-07-06 13:37:24 4317

原创 Excel PivotTable 使用心得手顺分享(二)

Create a PivotTableExcel导航栏,点击Insert à PivotTable 点击之后,默认会选择上我们的数据域,点击ok 点击之后,进入初始界面  关于右上角的这些字段,单击会依次添加到Row Lables 栏中,但,但是,这些字段是可以Drag的,推荐使用Drag方式调整。 简单的成果图       排序在要排序的列中任意cell右键 选择排序规则 排序前后对比...

2018-07-05 13:41:49 7396 1

原创 Excel PivotTable 使用心得手顺分享(一)

假设共显示3类数据,先选择两类数据  选择完数据域后,选择2-D Line 里的折线图  初步形成的Chart是这样的 然后,鼠标悬停在折线图中,右键,选择 Select Data 选项  在弹出的对话框中选择  Add 选项 点击之后,新弹出个对话框,Series name栏 只是选择Title, Series values栏则是数据域的选择  两项都选完后,点击ok  此时,Legend En...

2018-07-03 11:35:33 26306

原创 《JAVA》数组与链表知识

数组int c[] = {2,3,6,10,99};int[] d = new int[10];/** * 数组检索 * @param args */ public static void main(String[] args) { String name[]; name = new String[5]; name[0] = "egg"; name[1] = "er...

2018-06-27 11:35:07 103

转载 《JAVA》 NIO 介绍

Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java1.4开始),Java NIO提供了与标准IO不同的IO工作方式。Channels and Buffers(通道和缓冲区)标准的俄IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入通道也类似。Non-b...

2018-06-14 09:07:06 160

原创 SQLServer 使用总结

        最近公司在做SharePoint的相关东西,用到的数据库是SQLServer。对于之前了解SQLServer甚少的我,内心难免有点激动和胆怯。怀着强烈的好奇心和求知欲,我踏上了SQLServer的探索之路。        工作环境:SQLServer安装在另一台机器上,我在工位上的机器远程操作。         开发工具:Intellij IDEA。        SQLServe...

2018-05-28 13:42:18 2156

转载 《JAVA》多线程中wait, notify and notifyAll的使用

在Java的Object类中有三个final的方法允许线程之间进行资源对象锁的通信,他们分别是: wait(), notify() and notifyAll()。调用这些方法的当前线程必须拥有此对象监视器,否则将会报java.lang.IllegalMonitorStateException异常。waitObject的wait方法有三个重载方法,其中一个方法wait() 是无限期(一直)等待,直...

2018-05-28 12:58:05 131

原创 《JAVA》之多线程环境中安全使用集合API

在集合API中,最初设计的Vector和Hashtable是多线程安全的。例如:对于Vector来说,用来添加和删除元素的方法是同步的。如果只有一个线程与Vector的实例交互,那么,要求获取和释放对象锁便是一种浪费,另外在不必要的时候如果滥用同步化,也有可能会带来死锁。因此,对于更改集合内容的方法,没有一个是同步化的。集合本质上是非多线程安全的,当多个线程与集合交互时,为了使它多线程安全,必须采...

2018-05-21 14:43:55 80

原创 《JAVA》之解读synchronized关键字

在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确保在某一时刻,方法内只允许有一个线程。采用synchronized修饰符实现的同步机制叫做互斥锁机制,它所获得的锁叫做互斥锁。每个对象都有一个monitor(锁标记),当线程拥有这个锁标记时才能访问这...

2018-05-15 10:19:39 76

原创 《JAVA》线程中断问题

使用interrupt()中断线程当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回。这里需要注意的是,如果只是单纯的调用interrupt()方法,线程并没有实际被中断,会继续往下执行。演示休眠线程的中断public class SleepInterrupt extends Object...

2018-05-10 12:55:30 72

原创 《JAVA》Thread和Runnable实现多线程的区别

Java中实现多线程有两种方法:继承Thread、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:可以避免由于Java的单继承特性而带来的局限增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的适合多个相同程序的线程区处理同一资源的情况首先通过Thread类实现class MyThre...

2018-05-04 09:03:52 62

原创 JAVA 之 生产者与消费者问题案例

package 生产者消费者;public class ProducerConsumerTest { public static void main(String[] args) { PublicResource resource = new PublicResource(); new Thread(new ProducerThread(resource)).start(); ...

2018-05-02 14:33:03 155

原创 谈谈JAVA中JVM里的那些事

JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。程序计数器(Program Counter Register)一块较小的内存空间,它是当前线程所执行的字节码的信号指示器,字节码解释器工作时通过改变该计数器的值来选择下一条需要执行的字节码指令,分支、跳转、循环等基础功能都要依赖它来实现。每条线程都有一个独立的的程序计数器,各线程间的计数器互不...

2018-04-27 16:36:23 139

原创 JAVA HashMap源码剖析

HashMap是基于哈希表实现的,每一个元素都是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。HashMap实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆。Hash...

2018-04-19 15:04:59 136

原创 JAVA 分析 Vector 源码

Vector是基于数组实现的,是一个动态数组,其容量能自动增长。Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。Vector没有实现Serializable接口,因此它不支持序列化,实现了Cloneable接口,能被克隆,实现了RandomAccess接口,支持快速随机访问。...

2018-04-16 09:05:19 68

原创 浅谈JAVA中LinkedList源码

LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当作链表来操作外,它还可以当作栈,队列和双端队列来使用。LinkedList同样是非线程安全的,只在单线程下适合使用。它实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。LinkedList的源码如下(加入了比较详细的注释):package java.ut...

2018-04-11 11:39:48 120

原创 JAVA中ArrayList源码分析

ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能在单线程环境下,多线程环境下可以考虑用collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。Array...

2018-04-10 10:53:39 63

提示
确定要删除当前文章?
取消 删除