自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

科科然的博客

你是无意穿堂风,偏偏引山洪。我是檐上三寸雪,偏偏见你融。

  • 博客(60)
  • 资源 (2)
  • 收藏
  • 关注

原创 Handler核心源码分析

目录Handler的使用Handler初始化发送消息处理消息MessageQueue的阻塞和唤醒阻塞唤醒Handler对我们开发者的启发亮点一亮点二Looper什么时候推出Handler常见面试题前言对于一名开发者来说,阅读源码是一项必修的课程。在学习源码的过程中,我们可以了解到设计模式与源代码开发者的开发习惯。而在阅读源码的过程中,我一直秉承着郭霖大神的那句话“抽丝剥茧、点到即止”,我们没有必要完全深入每一行代码,通常我们可能只需要知道这...

2022-03-06 21:16:39 2870

原创 Android屏幕适配

为什么Android就得做屏幕适配由于Android系统是开源的,任何用户、开发者、OEM厂商、运营商都可以对Android进行定制,导致运行Android的设备多种多样,它们屏幕尺寸和像素密度都不甚相同。尽管我们通过基本的缩放和调整大小能使界面适配不同屏幕,但还是需要进一步优化,来确保所有界面能在不同设备上美观地展现出来。怎么做屏幕适配几个重要的概念屏幕尺寸屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米 比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.

2022-03-01 05:36:53 4781

原创 Retrofit中的注解、反射与动态代理

本篇博文所有涉及代码已上传至码云:https://gitee.com/zhangningke/java-basis.git代理模式代理模式是通过给某个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗来讲,代理模式中的代理对象就像我们生活中常见的中介, 比如你想租房,一般在各种租房软件上找房子,联系到的都是中介,而不是房东。代理模式的目的在于,一方面是通过引用代理对象的方式间接访问目标对象,防止直接访问目标对象给系统代理不必要的复杂性;另一方面是可以通过代理对象对访问进行控制。代理模

2022-02-27 17:59:16 596

原创 Kotlin学习笔记(一)

先吹一波

2021-09-09 07:30:49 1030

原创 Android Studio提示"unable to find valid certification"的解决办法

不知道大家有没有跟我有同样的体会,AndroidStudio的报错真的折腾人,提示信息一点都不明确,也不会告诉你怎么改,我们只能找度娘、谷歌~下面贴出我遇到的问题详情及解决方案:问题详情:1.AS相关配置信息:Android Studio 3.4.1Build #AI-183.6156.11.34.5522156, built on May 2, 2019JRE: 1.8.0_15...

2019-09-27 16:36:07 22194 51

原创 Jetpack常用库的简单使用(一)

写在前面我们经常被面试官问到,你的项目用的什么架构模式呀,MVC、MVP、MVVM ? 其实这些都是我们开发者自己设计的架构模式,非谷歌官方解决方案,我们有时候也很难把控最佳架构模式。 出于这个原因,Google官方给我们提供了Jetpack。初识JetpackJetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码,并编写可在各种 Android 版本和设备中一致运行的代码,让开发者集中精力编写重要的业务代码。说白了就是谷歌官方给我们开发者提供了一套解决方案,让我们的代

2022-03-12 08:28:41 4351

原创 Kotlin学习笔记(六)

继承Kotlin的类默认都是封闭的,要让某个类开放继承,必须使用open关键字修饰它。

2021-12-02 08:48:05 2194

原创 Kotlin学习笔记(五)

定义类针对我们定义的每一个属性,Kotlin都会产生一个field、一个getter和setter,field用来存储属性数据,我们不能直接定义field,Kotlin会封装field,保护它里面的数据,只暴露给getter和setter使用。属性的getter方法决定如何读取属性值,每个属性都有它的getter方法,setter方法决定你如何给属性赋值,所以只有可变属性才会有setter方法,尽管Kotlin会自动提供默认的getter和setter,但在需要控制如何读取属性数据时,我们也可以自定义

2021-11-08 00:28:59 2009

原创 Kotlin学习笔记(四)

集合集合可以方便我们处理一组数据,也可以作为值参传递给函数,和我们学过的其他变量类型一样,List、Set和Map类型的变量也分为两类,只读和可变。List创建与获取元素getOrElse是一个安全索引取值函数,它需要两个参数,第一个是索引值,第二个是能提供默认值的lambda表达式,如果索引值不存在的话,可用来代替异常。...

2021-11-04 08:23:42 527

原创 Kotlin学习笔记(三)

null在Java中 NullPointerException对于我们开发者已经司空见惯,带给我们太多不必要的麻烦,Kotlin对此做了改良,Kotlin更多地把运行时可能会出现 null问题,以编译时报错的方式,提前在编译期强迫我们重视起来,而不是等到运行时报错,防患于未然,提高了程序的健壮性。对于 null值问题,Kotlin反其道而行之,除非另有规定,否则不允许变量为 null,这样一来,因为 null问题导致的运行时崩溃就从根源上得到了解决。如果我们给变量赋值为 null,编译器会.

2021-10-19 08:55:49 1359

原创 Kotlin学习笔记(二)

匿名函数我们在定义函数时,不给他名字,这个函数就是匿名函数了。匿名函数通常用法是作为参数传递给其他函数或者被其他函数返回。Kotlin因有了匿名函数,我们开发者就可以轻松实现对kotlin标准库内置函数的定制。案例:fun main() { val a = "luffy".count() var b = "luffy love honey".count({ letter -> letter.equals('y') }) println("a == " + a)

2021-10-12 08:43:02 609

原创 NDK开发C语言基础(第一天)

环境准备可以选择使用 VS2013开发,但是这个家伙比较重量级,所以我们还有一个选择就是使用Clion,如果只使用 Clion需要配置MinGW环境。VS2013下载链接:https://pan.baidu.com/s/1uOMk6LEAazBG5YQf_R6Ssg 提取码:3ts6ClionJetbrains旗下产品之一,主要用来开发C/C++,软件相比VS来说轻巧很多,官方下载链接:http://www.jetbrains.com/clion/?fromFooter...

2021-02-27 18:20:58 496 4

原创 黑马OC听课笔记(第二天)

内存中的五大区域栈:存储局部变量 堆:开发人员通过malloc、calloc、realloc函数申请的字节空间 BSS段:存储未被初始化的全局变量、静态变量 数据段(常量区):存储已被初始化的全局变量、静态变量、常量 代码段:存储程序的代码类加载在程序运行过程中,当某个类第一次被访问的时候,类的信息会被加载到代码段中,这个过程叫做类加载。一旦类被加载到代码段中,就不需要重复加载了,直到程序结束才会被释放。在创建对象的时候,肯定是需要访问这个类的。 在声明一个类的时候,CPU需要检查这

2021-01-19 20:53:39 280 5

原创 黑马OC听课笔记(第一天)

视频链接:iOS开发基础班+就业班(100天完整版)之基础班2:Objective-C学习(10天)本OC教程学习路线图Objective-C概述OC介绍及发展背景Objective-C简称Obj-C或者OC,关于OC的更多内容可以参见百度百科的介绍:Objective-COC对比C语言的差异化<1>在C的基础上增加了面向对象的语法;<2>将C中复杂繁琐的内容进行了很好地封装,更便于开发人员编码;<3>OC完全兼容C语言,但在C中不能编写O

2021-01-15 16:07:44 416 5

原创 偷学C语言第四天

指针和数组的区别从上一篇博文,我们已经知道可以通过数组下标访问指针变量中的元素,也可以通过指针法访问数组中的元素,他俩看似是一个东西,其实人家只是哥俩好,要不然C语言的作者也不会造出两个相同的东西呀~那么我们通过一个案例看看他俩的区别:/* 通过统计字符串长度的案例,窥探指针和数组的区别。*/#include <stdio.h>#include <string.h>int main(){ /*生活总是让我们遍体鳞伤,但到后来,那些受伤的地方一定会变成我们

2021-01-11 22:30:53 388

原创 偷学C语言第三天

目录数组概念初始化数组访问数组变长数组二维数组访问二维数组二维数组的初始化处理字符串的相关函数指针定义指针小试牛刀数组和指针彩蛋数组概念数组(Array)是有序的元素序列。[1]若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形...

2021-01-04 14:59:38 372 2

原创 偷学C语言第二天

第一天忘了跟大家说C环境的配置,点击这里查看C语言初学者如何配置开发环境。补码计算机是用补码的形式存储整型数据的。正数的原返补都是一样的,负数的补码需要三步才能得到:先把该数的绝对值转换成二进制形式,也就是该数的源码------ 源码就是原来的样子 再把数值位按位取反,得到反码 ------ 反码就是反着干,0变1,1变0; 最后将第2步的值加一就得到了补码 ------ 补码就是补1。为什么会引入补码?详情见:计算机中数的表示&使用补码的好处字符类型 VS 整型先...

2020-12-31 14:38:29 263

原创 偷学C语言第一天

从“Hello world!”开始#include <stdio.h>int main(){ printf("Hello world!\n"); return 0;}#include<stdio.h>是在程序编译之前要处理的内容,称为编译预处理命令。编译预处理命令还有很多,它们都以“#”开头,并且不用分号结尾,是c语言的程序语句。stdio.h是C编译系统提供的一个文件名,stdio是“standard input & output”的缩写,即有关标准输入输

2020-12-25 13:13:30 442

原创 C语言初学者环境配置

本文介绍的是Notepad++(编辑器)与MinGW(工具集,包含gcc)结合使用的一种C语言开发环境,初学者不建议使用IDE,等你积累了一定代码量之后,再慢慢切换到IDE中。安装包获取链接:https://pan.baidu.com/s/1Dm6Mqwtdbe_NJtY6Xb0ZuA 提取码:rjiqNotePad++ 安装就是傻瓜式地下一步、我接手、balabala...就OK了。MinGW解压即用,不过在使用之前需要配置环境变量:复制MinGW解压路径,比如我的是:D:\Pr...

2020-12-22 15:43:46 5448

原创 并发编程基础(二)—— ThreadLocal及CAS基本原理剖析

本篇博文接上一篇并发编程基础(一)—— 关于java中的线程,没看过的小伙伴请先移步上一篇。本博文相关代码已提交至GitHub:https://github.com/ZNKForSky/JavaBasis/tree/master/src/thread。等待通知机制线程间的通信依赖于等待通知机制,上篇博文只是对此机制一笔带过,没有细讲,在这篇博文中作以补充。机制原理该机制是指一个线程A调用了对象O的wait()方法进入等待状态,而另一个线程B调用了对象O的notify()或者notifyAll

2020-12-19 23:57:30 527

原创 并发编程基础(一)—— 关于java中的线程

本篇博文接上一篇进程与线程【入门篇】,没看过的小伙伴请先移步上一篇。线程线程的开启先前我们说程序中真正执行任务的是线程,那我们就先从如何开启线程讲解。在JDK中,提供了两种开启线程的方式:方式一:继承Thread类,重写run方法,创建该类,调用start方法开启线程: static class MyThread extends Thread { @Override public void run() { super.run

2020-12-14 17:39:48 364

原创 进程与线程【入门篇】

本博文只对进程和线程做理论讲解,先带领各位小伙伴走进进程和线程的大门。进程-- 进程是一个具有一定独立功能的应用程序关于某个数据集合上的一次运行活动。 ----------------- 一个Application对应一个进程,应用程序是静态的,进程是动态的。-- 进程是线程的容器,每个进程至少包含一个线程; ------------------ 进程与线程是一对多的关系。-- 进程是操作系统进行资源分配和调度的最小单位,资源包括CPU、内存空间、磁盘IO等;-- ...

2020-12-03 17:32:13 298

原创 Java高级特性之注解

概念注解是JDK1.5的新特性,与注释比较类似,不同的是注释是给我们开发人员看的,注解是给代码看的,它是代码层面的解释说明。使用注解:@注解名称,比如我们常见的“@Override”。作用①生成doc文档;②使用反射对代码进行分析;③编译检查。JDK中预定义的一些注解:①@Override: 检测方法是否是重写父类或父接口的;②@Deprecated: 标识过时的内容;③SuppressWarnings:压制警告,一般传入参数all,@SuppressWarnings(.

2020-10-28 11:43:16 412 2

原创 Java泛型的简历

中文名:泛型 英文名:Generics 我是JDK5以后才加入的新特性,我为程序猿&媛提供了编译时类型检测机制,如果你们在编译时不小心犯错,我是不能容忍你们的,你们必须修复它。我的本质是参数化类型,就是将类型参数化,方法的定义和调用想必大家都不陌生,我与之类似,只不过定义方法时传的参数是一个具体的数据类型,而定义我的时候是一个未知的数据类型,调用方法时传的实参是一个具体的值,而调用我时传的是一个具体的数据类型。我会存在于三个地方,分别是泛型类、泛型接口、泛型方法。...

2020-06-24 05:59:39 323

原创 Vue学习笔记之插值操作

1.mustache语法:mustache翻译过来就是胡子,而它的语法就是一对{{}},像极了胡子。<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>01-Mustache语法</title></head><body><div id="app"> <h3>{{message}}&lt

2020-05-13 23:31:40 260

原创 AndroidStudio构建项目提示“unable to find valid certification”最新解决方案

更新时间:2020年4月30号手抖了一下,把AS升级到了最新版本,然后就悲剧了,公司的项目跑不起来,提示“unable to find valid certification”,新建项目也是一样的提示。之前总结的解决方案都用了,没一个好使的,经过两个下午的折腾,终于还是被我整好,感动的泪水都要了>~<...

2020-05-06 14:18:33 4581 16

原创 关于a:link、a:visited、a:hover、a:active使用过程中的顺序问题

文章标题有点长哈~稍微有点前端基础的道友都知道,a标签是超链接,通过href属性指定链接的目标地址。在浏览器中,访问过的链接默认外观是紫色且带有紫色下划线,未访问的链接默认外观是蓝色且带有蓝色下划线,活动的链接(当我们鼠标点下不放时)默认外观是红色且带有红色下划线。a标签的四个伪类(:link和:visited是a标签独有的):a:link :用来设置a标签对象在未被访问前的样式。...

2020-04-22 18:00:55 2268

原创 EXCEL常用函数的操作及使用技巧(上篇)

第一章 函数的应用技巧1.函数的使用方法这里所说的函数是指Excel中预先编写好的公式,或者你可以称它为方法。每一个函数都有一对括号(),括号里面的是参数,多个参数用半角逗号隔开。函数的录入方法:<1>在单元格录入:首先输入“=”,然后输入函数,会有提示,方向键可以进行函数的选择,然后鼠标双击选中的函数或者按 TAB键即可输入函数,如下图所示,此时可以传入若干个参数,再按Ta...

2020-01-11 23:16:48 4197

原创 安卓实现应用内展示PDF

github地址:https://github.com/barteksc/AndroidPdfViewer首先添加依赖://PDFViewimplementation 'com.github.barteksc:android-pdf-viewer:3.0.0-beta.5'应用内展示PDF的方案有两种:1.将PDF转换成流,PDFView是支持直接加载流的;2.是先将PDF下载到本地...

2019-12-12 16:19:09 721

原创 Windows环境利用Artifactory搭建本地仓库

Jfrog的Artifactory是一款Maven仓库服务端软件,可以用来在内网搭建maven仓库,供公司内部公共库的上传和发布,以提高公共代码使用的便利性。说白了,就是为了提高开发效率,用过AS的伙伴们都知道,AS在首次构建项目的时候,首先需要拉取一些maven库,比如 jcenter、google等,而这些库又放在外网上,我们国内用户拉取时速度势必会很慢,而搭建本地仓库就是为了解决这个问题。...

2019-12-07 17:55:53 2281 1

原创 Java基础知识点(三)—— 数据类型

本章节介绍数据类型。Java是一种强类型语言,每个变量都必须声明其类型。Java的数据类型分为两大类:基本类型( primitivetype)和引用类型(referencetype)。基本数据类型基本数据类型占用内存和范围如下表所示:类型 占用存储空间 范围 byte 1字节 -128~127 short 2字节 -2^15~2^15...

2019-11-29 17:27:42 272

转载 Dos命令大全

DOS命令学习一、DOS使用常识DOS的概况DOS(Disk Operating System)是一个使用得十分广泛的磁盘操作系统,就连眼下流行的Windows9x/ME系统都是以它为基础。常见的DOS有两种:IBM公司的PC-DOS和微软公司的MS-DOS,它们的功能、命令用途格式都相同,我们常用的是MS-DOS。二、DOS的内部命令DOS的内部命令是进行操作的基础,完成...

2019-11-29 11:23:25 392

原创 Java基础知识点(二)—— 从HelloWorld开始

需要整明白的几个关键字对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:毛色、名字、品种;行为有:摇尾巴、叫、吃等。 类:类是一个模板,它描述一类对象的行为和状态。 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。第一个Java程序下面将逐...

2019-11-27 17:02:32 317

原创 Java基础知识点(一)—— Java的前世今生

JAVA的由来Java 是由Sun Microsystems公司于1995年5月23号推出的面向对象高级程序设计语言和Java平台的总称,由James Gosling和同事们共同研发。Java可运行于多个平台,如Windows, Mac OS,Linux及其他多种UNIX版本的系统。本系列教程通过简单的实例将让大家更好的了解JAVA编程语言。Java分为三个体系:JavaSE(J2SE...

2019-11-27 15:41:55 673

原创 Intellij idea 复制粘贴查找快捷键失效问题

这段时间稍微有些时间学习了,准备把Kotlin补一补,于是选择了Intellij idea作为开发工具,可是在使用Ctrl+C和Ctrl+V复制粘贴的时候,发现功能失效了,后来发现是因为勾选了Vim模式。解决方案:Tools >> Vim Emulator,前面会有一个√,取消即可,如图:...

2019-10-15 14:32:44 836

原创 详谈Activity的启动模式

在谈Activity的启动模式之前,请先看我的另一篇博客:https://blog.csdn.net/qq_35101450/article/details/96437948,先对Activity、Intent、返回栈、Activity的状态以及生命周期了解一下。Activity启动模式分为四种:standard、singleTop、singleTask、singleInstance,可以在 ...

2019-10-12 11:31:26 293

原创 关于权限申请库PermissionsDispatcher的使用

PermissionsDispatchergithub地址:https://github.com/hotchemi/PermissionsDispatcher它是什么?PermissionsDispatcher是一个基于注解,帮助开发者简单处理Android 6.0之后运行时权限的开源库,使得开发效率更高,代码更简洁明了。怎么使用?1、添加依赖首先在项目工程下的 build.g...

2019-09-19 11:49:35 605

原创 Canvas相关方法参数说明

Canvas的drawBitmap有四个重载方法,我们常用的有如下两个:(1) public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)第一个参数为要绘制的bitmap对象,第二个参数为图片左上角的x坐标值,第三个参数为图片左上角的y坐标的值,第三个参数为Paint对象(可以为null)。(2) pu...

2019-09-18 10:28:37 1207

转载 android源代码在线查看

原文链接:https://blog.csdn.net/gh201030460222/article/details/80641112android源代码在线查看1. android源代码各个版本在线查看网址2. android报bug路径:3. android上code reiview路径:android源代码在线查看1. android源代码各个版本在线查看网址http://and...

2019-09-10 11:47:37 466

原创 AndroidStudio设置项目支持Java 8 新特性 ( eg:Lambda 表达式)

然后我们会发现在module的build.gradle中会多出下面这些代码,至此配置成功,是不是So easy~

2019-08-31 18:01:31 318

阿里、jcenter安全证书.zip

解决更新AndroidStudio之后,项目运行不起来,提示"unable to find valid certification"的问题

2020-04-30

AndroidBasicSummary.zip

PermissionsDispatcher及ZXing生成二维码只是一部分内容,代码中还包含了安卓的其他基础知识点,比如service、dialog等

2019-09-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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