- 博客(275)
- 资源 (3)
- 收藏
- 关注
原创 485. 最大连续1的个数
题目:给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/max-consecutive-ones著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。代码:cl
2020-10-28 11:15:14
283
原创 第二章注解深入浅出(五、Retrofit 中的注解)
第二章注解深入浅出五、Retrofit 中的注解5.1 请求方法类注解5.2 标记类注解5.3 参数注解5.4 其他注解5.5 注意事项五、Retrofit 中的注解retrofit-2.9.0 共有 25 个注解,根据功能大概分为三类:请求方法类标记类参数类其他类5.1 请求方法类注解有 8 个,分别是:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、HTTP。序号名称作用备注1GET用于发送一个 GET 请求GET 注解一般必须
2020-08-29 11:45:54
386
原创 第二章注解深入浅出(四、反射)
第二章注解深入浅出四、反射4.1 什么是发射机制4.2 反射机制主要提供的功能4.3 Java Reflection API 简介4.4 反射获取 Class 类4.5 反射调用四、反射4.1 什么是发射机制Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。 注意关键词:运行状态,换句话说,Java 程序可以加载一个运行时才得知名称的 cl
2020-08-28 15:23:56
333
原创 第二章注解深入浅出(三、插桩)
第二章注解深入浅出三、插桩3.1 什么是插桩3.2 字节码操作框架3.3 ASM 的使用三、插桩3.1 什么是插桩QQ 空间曾经发布的《热修复解决方案》中利用 Javaassist 库实现向类的构造函数中插入一段代码解决 CLASS_ISPREVERIFIED 问题。包括了 Instant Run 的实现以及参照 Instant Run 实现的热修复美团 Robus 等都利用到了插桩技术。插桩就是将一段代码插入或者替换原本的代码。字节码插桩顾名思义就是在我们编写的源码编译成字节码(C
2020-08-26 15:13:22
3545
原创 第二章注解深入浅出(二、APT)
第二章注解深入浅出二、APT2.1 什么是 APT?2.2 哪里用到了 APT?2.3 如何在 Android Studio 中构建一个 APT 项目?二、APT2.1 什么是 APT?APT 即为 Annotation Processing Tool,它是 javac 的一个工具,中文意思为**编译时注解处理器**。APT 可以用来在编译时扫描和处理注解。通过 APT 可以获取到注解和被注解对象的相关信息,在拿到这些信息后我们可以根据需求来自动的生成一些代码,省去了手动编写。注意,获取注解及生成代码
2020-08-25 10:24:43
280
原创 第二章注解深入浅出(一、注解 Annotations)
第二章注解深入浅出一、注解 Annotations1.1 注解1.2 元注解1.3 自定义注解一、注解 Annotations1.1 注解注解是一种将元数据附加到代码中的方法。注解(Annotation),也叫做元数据,一种代码级别的说明。 它是 JDK 1.5 及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注解。Java 注解:声明注解需要在类前面使用 @interface 关键字:public @
2020-08-24 09:51:14
430
原创 第一章深入Java泛型(四、RxJava中深入理解泛型)
第一章深入Java泛型四、RxJava中深入理解泛型4.1 响应式编程4.2 观察者模式4.3 RxJava 是对观察者模式的一种高级运用,或者说是一种升级,它把观察者模式具体化,更加明确了各个对象之间的关系四、RxJava中深入理解泛型4.1 响应式编程与我们传统编码(函数式编程)不一样,传统编码是做完这件事之后做另外一件事,给人的感觉都是单线程的,可能会开新线程去处理耗时操作,在处理完成之后通过回调去处理之后的事情。而响应式编程提供给我们的是一种不一样的思想,在响应式编程的世界中一切执行流程都是
2020-08-21 10:32:07
270
原创 第一章深入Java泛型(三、泛型的上下边界)
第一章深入Java泛型三、泛型的上下边界3.1 <? extends E>:上界通配符(Upper Bounds Wildcards)3.2 <? super E>:下界通配符(Lower Bounds Wildcards)3.3 上下通配符的副作用三、泛型的上下边界? extend E 是泛型的上边界,? super T 是泛型的下边界。无论是设定通配符上限还是下限,都是不能操作与对象有关的方法,只要涉及到了通配符,它的类型都是不确定的!<? extends T&g
2020-08-20 10:31:31
1309
原创 第一章深入Java泛型【二、通配符与嵌套】
第一章深入Java泛型二、通配符与嵌套2.1 通配符2.2 泛型嵌套2.3 通配符和泛型方法二、通配符与嵌套2.1 通配符?:表示类型不确定,只能用于声明变量或者形参上,不能用在创建泛型类、泛型方法和接口上。public static void main(String[] args) { List<?> list = new ArrayList<Integer>(); list = new ArrayList<String>(); test
2020-08-19 09:42:53
220
原创 第一章深入 Java 泛型【一、泛型的作用与定义】
第一章深入 Java 泛型一、泛型的作用与定义1.1 泛型的作用1.2 泛型的定义1.3 泛型擦除一、泛型的作用与定义1.1 泛型的作用使用泛型能写出更加灵活通用的代码。泛型的设计主要参照了 C++ 的模板,旨在能让你写出更加通用化,更加灵活的代码。模板/泛型代码,就好像做雕塑时的模板,有了模板,需要生产的时候就只管向里面注入具体的材料就行,不同的材料可以产生不同的效果,这便是泛型最初的设计宗旨。泛型将代码安全性检查提前到编译期。泛型被加入 Java 语法中,还有一个最大的原因:解决容器的类型安
2020-08-18 11:37:16
247
原创 阅读徐宜生《Android群英传》的笔记——第5章 Android Scroll 分析
5.1 滑动效果是如何产生的滑动一个 View,本质上来说就是移动一个 View。改变其当前所处的位置,它的原理与动画效果的实现非常相似,都是通过不断地改变 View 的坐标来实现这一效果。所以,要实现 View 的滑动,就必须监听用户触摸的事件,并根据事件传入的坐标,动态且不断地改变 View 的坐标,从而实现 View 跟随用户触摸的滑动而滑动。在讲解如何实现滑动效果之前,需要先来了解一些...
2019-11-01 09:34:42
364
原创 OAuth 2.0 学习
2019年也过了四分之三了,一直在忙着项目的事情都没有静下心来好好学习。前几天Google第三方登录又出问题了,报的是 com.google.android.gms.common.api.ApiException: 10 这个错误,查了一圈,说是配置错误。之前在做Google第三方登录也是不太懂,跟着文档的说明一步步设置下来,其实并不知其所以然,一脸懵的状态。现在又遇到这个配置错误,就更无从下手了...
2019-09-17 15:48:13
337
原创 常用的几个框架整理
网络请求:OkHttp:https://github.com/square/okhttpRetrofit:https://github.com/square/retrofitRxJava:https://github.com/ReactiveX/RxJavaRxAndroid:https://github.com/ReactiveX/RxAndroid图片:Fresco(图片加...
2018-11-21 15:31:16
964
原创 onActivityResult的resultCode一直为0
今天在做二维码扫码的时候突然遇到一个很奇怪的问题,二维码扫码一直没有返回数据过来,上周还是好好的,这周一一直到现在都不行,在setResult的时候里面是有正确数据的,并且也是setResult(RESULT_OK, data);的打印onActivityResult发现requestCode正确的情况下resultCode一直为0跳转也是正常的后来就纳闷了,为什么会这样呢?经过网上资...
2018-11-21 15:08:19
4264
原创 MD 风格的 Dialog ---- MaterialDialog
一个 MD 风格的 Dialog 的开源项目,GitHub 地址:https://github.com/afollestad/material-dialogs定义:MaterialDialog:一个漂亮、流畅、可定制的对话框。依赖:核心模块的依赖:compile ‘com.afollestad.material-dialogs:core:0.9.6.0’核心模块包含该库的所有主要类,...
2018-11-21 11:43:52
1777
原创 Android Support Library 包的区别
Android Support v4:这个包是为了照顾 1.6 及更高版本而设计的,这个包是使用最广泛的。Android Support v7:这个包是为了考虑照顾 2.1 及以上版本而设计的,但不包含更低,故如果不考虑 1.6,我们可以采用再加上这个包,另外注意,v7 是要依赖 v4 这个包的,即两个得同时被包含。Android Support v13:这个包的设计是为了 and...
2018-11-21 11:25:26
364
原创 浅谈 MVC、MVP、MVVM 模式
MVC 架构:Model - View - Controller - Model:业务逻辑和实体模型。 - View:对应于布局文件。 - Controller:对应于 Activity。 View 可以与 Model 直接交互。 Controller 是基于行为的,并且可以被多个 View 共享,可以负责决定显示哪个 View。MVP架构:Model - View -...
2018-08-01 17:34:33
317
转载 android BLE 4.0 setCharacteristicNotification接收不到数据
蓝牙开发踩的一个坑~特此记录~问题描述:最近在开发 android BLE 读写数据 但是向设备写数据很顺利,但是在接收设备传来的数据时,死活接收不到。 /** * Enables or disables notification on a give characteristic. * * @param characteristic Charact...
2018-06-13 09:31:48
4499
1
原创 Android Studio 断点调试
断点调试步骤:在可能出错的代码处加断点 点击 Debug 开始调试 程序在断点的地方停下来,一步一步分析调试断点调试相关知识点:先来一张图:从图中可以看到 Debug 功能分为好几块内容断点调试功能键求值表达式功能键断点管理功能键调试信息显示区(当前线程栈帧区、对象变量区等)一、断点调试功能键(断点单步调试)1、Step Over(F8):...
2018-06-05 16:48:11
1451
转载 Android Studio --“Cannot resolve symbol” 解决办法
Android Studio 无法识别同一个 package 里的其他类,将其显示为红色,但是 compile 没有问题。鼠标放上去后显示 “Cannot resolve symbol XXX”,重启 Android Studio,重新 sync gradle,Clean build 都没有用。多半是因为 Android Studio 之前发生了错误,某些 setting 出了问题。解决方法如...
2018-05-31 17:38:50
1783
原创 【第三方开源项目】MD 风格的对话框 —— MaterialDialog
一个 MD 风格的 Dialog 的开源项目 GitHub 地址:https://github.com/afollestad/material-dialogs定义: MaterialDialog:一个漂亮、流畅、可定制的对话框。依赖: * 核心模块的依赖:compile ‘com.afollestad.material-dialogs:core:0.9.6.0’ 核心模块包含该库的...
2018-05-31 16:06:58
17281
4
原创 阅读徐宜生《Android群英传》的笔记——第4章 ListView 使用技巧——剩下部分
4.1.8 处理空 ListViewListView 用于展示列表数据,但当列表中无数据时,ListView 不会显示任何数据或提示,按照完善用户体验的需求,这里应该给以无数据的提示。幸好,ListView 提供了一个方法 —— setEmptyView(),通过这个方法我们可以给 ListView 设置一个在空数据下显示的默认提示。包含 ListView 的布局设置如下:<?xml versio
2017-05-18 14:54:35
716
原创 阅读徐宜生《Android群英传》的笔记——第4章 ListView 使用技巧——到4.1.7
4.1 ListView 常用优化技巧ListView 的基本用法相信大多数的读者都已经能够非常熟练的使用了,下面我们就着重来学习一下使用 ListView 的技巧。4.1.1 使用 ViewHolder 模式提高效率ViewHolder 模式是提高 ListView 效率的一个很重要的方法。ViewHolder 模式充分利用了 ListView 的视图缓存机制,避免了每次在调用 getView()
2017-04-28 11:03:52
679
原创 阅读徐宜生《Android群英传》的笔记——第3章 Android控件架构与自定义控件详解(3.6-3.8)
6 自定义 View61 对现有控件进行扩展62 创建复合控件63 重写 View 来实现全新的控件7 自定义 ViewGroup8 事件拦截机制分析3.6 自定义 View在自定义 View 时,我们通常会去重写 onDraw() 方法来绘制 View 的显示内容。如果该 View 还需要使用 wrap_content 属性,那么还必须重写 onMeasure() 方
2017-04-27 15:27:08
981
原创 阅读徐宜生《Android群英传》的笔记——第3章 Android控件架构与自定义控件详解(3.1-3.5)
1 Android控件架构2 View的测量3 View的绘制4 ViewGroup 的测量5 ViewGroup 的绘制3.1 Android控件架构 图3.1:View 树结构
2017-04-26 10:31:43
619
原创 阅读徐宜生《Android群英传》的笔记——第2章 Android开发工具新接触
1 Android开发IDE介绍2 Android Studio 高级使用技巧3 ADB 命令使用技巧4 模拟器使用与配置2.1 Android开发IDE介绍IDE:全称是Integrated Development Environment,集成开发环境。Google在2013年的I/O大会上首次发布了Android Studio。Android Studio 官网
2017-04-25 14:16:17
651
原创 阅读徐宜生《Android群英传》的笔记——第1章 Android系统与系统架构
1 Google 生态系统2 Android 系统架构3 Android App 组件架构4 Android 系统源代码目录与系统目录1.1 Google 生态系统……(省略)1.2 Android 系统架构从宏观上讲,Android是一个移动操作系统,但这是一个很宽泛的概念。下面是一张Android系统架构的经典示意图,它将Android大致分为了四层,即Linu
2017-04-24 14:16:17
869
原创 阅读郭林《第一行代码》的笔记——第14章 进入实战,开发酷欧天气
1、功能需求及技术可行性分析(1)、先对程序进行需求分析功能:可以罗列出全国所有的省、市、县。可以查看全国任意城市的天气信息。可以自由地切换城市,去查看其他城市的天气。提供手动更新以及后台自动更新天气的功能。虽然看上去只有四个主要的功能点,但如果想要全部实现这些功能却需要用到UI、网络、定位、数据存储、服务等技术,因此还是非常考验你的
2016-11-04 17:37:59
2749
原创 阅读郭霖《第一行代码》的笔记——第13章 继续进阶,你还应该掌握的高级技巧
1、全局获取Context的技巧Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。而我们可以定制一个自己的Application类,以便于管理程序内一些全局的状态信息,比如说全局Context。 定制一个自己Application其实并不复杂,首先我们需要创建一个MyApplication类继承自Application,代码如下所示:pack
2016-10-21 18:20:52
902
原创 阅读郭霖《第一行代码》的笔记——第12章 Android特色开发,使用传感器
1、传感器简介手机中内置的传感器是一种微型的物理设备,它能够探测、感受到外界的信号,并按一定规律转换成我们所需要的信息。Android手机通常都会支持多种类型的传感器,如光照传感右器、加速度传感器、地磁传感器、压力传感器、温度传感器等。 当然,Android系统只是负责将这些传感器所输出的信息传递给我们,至于具体如何去利用这些信息就要充分发挥开发者的想象力了。目前市场上很多的程序都有使用到传感器的
2016-10-11 09:34:39
1537
原创 阅读郭霖《第一行代码》的笔记——第11章 Android特色开发,基于位置的服务
1、基于位置的服务简介基于位置的服务(Location Based Service )简称LBS,这个技术随着移动互联网的兴起,在最近的几年里十分火爆。其实它本身并不是什么时髦的技术,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置,而这种定位技术早在很多年前就已经出现了。 那为什么LBS技术直到最近几年才开始流行呢?这主要是因为,在过去移动设备的功能极其有限
2016-10-07 10:07:25
1513
原创 阅读郭霖《第一行代码》的笔记——第10章 看看精彩的世界,使用网络技术
1、WebView的用法下面是一个很简单的例子,就是显示百度首页。布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android
2016-09-27 14:42:18
1141
原创 阅读郭霖《第一行代码》的笔记——第9章 后台默默的劳动者,探究服务
一、服务是什么,Android多线程编程1、服务是什么服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使当程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。不过需要注意的是,服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某
2016-09-18 15:08:23
1723
原创 阅读郭霖《第一行代码》的笔记——第8章 丰富你的程序,运用手机多媒体
一、调用摄像头和相册1、调用摄像头拍照例子: 布局文件,这边很简单的,就放一个Button和一个ImageView,Button用来启动拍照图片并截图,ImageView用来显示截图后的照片,代码如下所示:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/ap
2016-09-15 17:21:39
1363
原创 阅读郭霖《第一行代码》的笔记——第7章 跨程序共享数据,探究内容提供器
内容提供器简介内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供器是Android实现跨程序共享数据的标准方式。不同于文件存储和SharedPreferences存储中的两种全局可读写操作模式,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们
2016-09-11 16:06:00
1650
原创 阅读郭霖《第一行代码》的笔记——第6章 数据存储全方案,详解持久化技术
瞬时数据是指那些存储在内存当中,有可能会因为程序关闭或其他原因导致内存被回收而丢失的数据。这对于一些关键性的数据信息来说是绝对不能容忍的,谁都不希望自己刚发出去的一条微博,刷新一下就没了吧。那么怎样才能保证让一些关键性的数据不会丢失呢?这就需要用到数据持久化技术了。标题 ##持久化技术简介数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失
2016-09-05 14:52:22
2483
原创 阅读郭霖《第一行代码》的笔记——第5章 全局大喇叭,详解广播机制
广播机制简介Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的。Android提供了一套完整的API,允许应用程序自由地发送和接收广播。发送广播的方法就是借助Intent,而接收广播的方法则借助广播接收器(Broadcast Receiver)。 Android中的广播主要可
2016-08-19 11:33:55
1610
1
原创 阅读郭霖《第一行代码》的笔记——第4章 手机平板要兼顾,探究碎片
碎片是什么,碎片的使用方式碎片是什么碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛。虽然碎片对你来说应该是个全新的概念,但我相信你学习起来应该毫不费力,因为它和活动实在是太像了,同样都能包含布局,同样都有自己的生命周期。你甚至可以将碎片理解成一个迷你型的活动,虽然这个迷你型的活动有可能和普通的活动是一样大的。动态添加
2016-05-23 21:17:01
1225
原创 阅读郭霖《第一行代码》的笔记——第3章 软件也要拼脸蛋,UI开发的点点滴滴
一、常见控件的使用方法使用android:layout_width指定了控件的宽度, 使用android:layout_height指定了控件的高度 Android中所有的控件都具有这两个属性,可选值有三种match_parent、fill_parent和wrap_content,其中match_parent和fill_parent的意义相同,现在官方更加推荐使用match_pare
2016-05-19 19:55:34
6621
原创 阅读郭霖《第一行代码》的笔记——第2章 先从看得到的入手,探究活动
一、活动是什么,活动的基本用法活动(Activity)是最容易吸引到用户的地方了,它是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序中可以包含零个或多个活动,但不包含任何活动的应用程序很少见,谁也不想让自己的应用永远无法被用户看到吧? Android程序的设计讲究逻辑和视图分离,最好每一个活动都能对应一个布局,布局就是用来显示界面内容的。 创建和加载布局 @Overrid
2016-05-14 19:49:24
5627
用鼠标画矩形的win32代码
2014-04-13
ACM做题时的小技巧
2013-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人