自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(220)
  • 收藏
  • 关注

原创 ButterKnife(黄油刀)基本使用与源码解析

前言ButterKnife又称黄油刀,是一款快速绑定Android视图中字段和方法的注解框架,也是Android开发中比较常用的一款快速注解框架,通过ButterKnife的合理运用,我们可以避免重复地书写findViewById,在各种场合下快速地绑定view中的多种事件,大大提高开发的效率,它具有如下几点主要的功能:通过@BindView注解消除findViewById的使用将多个v...

2019-07-22 19:41:00 3349 2

原创 进程常见知识点总结

不管是工作面试还是应试考试,进程都是操作系统中非常重要的一环,因为进程是操作系统进行资源分配的基本单位,同时进程也是相对于操作系统来说可以独立运行的基本单位,本文将向大家详细介绍进程的前世今生以及风流韵事。本文主要内容如下:前趋图&程序执行我们首先来分析一下为什么操作系统要引入进程这个概念,即进程从哪来?一般来说,操作系统按照是否支持并发可分为以下两类:早起的计算机大多数都是...

2019-07-01 22:42:19 1588

原创 Fresco入门使用及简单特性介绍

概述随着摄影技术的不断发展和普及,我们的应用程序大多数都具有显示图片这样的需求,在Android移动设备上,由于平台计算能力的差异、设备硬件的差异,我们很难将图片在不同的设备上完美地显示,经常出现的情况是一份展示图片的代码在高性能手机上运行很流畅,但是部署到硬件稍微差劲一点的设备上就会出现卡顿、占用内存比例过大、甚至应用崩溃的现象。所以我们最好能寻求一种框架,可以帮我们处理不同计算能力平台上的...

2019-06-30 22:51:17 2110 1

原创 Flutter第一部分(UI)第四篇:Flutter中的盒约束

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者微信搜索”IT工匠“关注微信公众号哦,会同步推送)。盒约束是指Widget可以按照指定限制条件来决定自身如何占用布局空间,所谓的**“盒”**即指的是...

2019-06-10 22:13:24 1293

原创 Flutter第一部分(UI)第五篇:为Widget添加交互

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者微信搜索”IT工匠“关注微信公众号哦,会同步推送)。本文的主要内容:如何响应点击事件如何自定义WidgetStateless Widget和S...

2019-06-10 20:48:19 4271 2

原创 Flutter第一部分(UI)第三篇:简单几步带你构建一个漂亮的UI实例

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者微信搜索”IT工匠“关注微信公众号哦,会同步推送)。摘要本文通过一个简单的例子来逐步为大家介绍如何在Flutter中构建漂亮的布局,通过本文你将会了...

2019-06-10 15:58:11 1459

原创 Flutter第一部分(UI)第二篇:在Flutter中构建布局

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者微信搜索”IT工匠“关注微信公众号哦,会同步推送)。首先明确几点概念:Widget是构建UI的类Widget在构建UI元素和构建布局时都会用到...

2019-06-10 00:24:19 1328 1

原创 Flutter第一部分(UI)第一篇:初识Widget

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者微信搜索”IT工匠“关注微信公众号哦,会同步推送)。Flutter Widget采用现代响应式框架构建,这是从 React中获得的灵感,核心思想是用W...

2019-06-08 22:20:48 686

原创 使用Python批量替换csdn文章的图片链接(解决csdn无法加载第三方图床的问题)

前言笔者之前的写作习惯一直是在本地(Mac+Typora+Ipac)写好之后将markdown代码粘贴到csdn,图片是Ipac自动上传到微博匿名图床上,用了大概一年多都没有问题,直到前段时间突然发现我csdn文章里面的图片无法加载了,就像下面这样:本来以为是微博图床挂了,结果发现图片的链接还是可以正常访问的,本地Typora上也是可以正常显示图片的,问了一下csdn的工作人员,说是微博图床...

2019-05-18 21:11:13 812

原创 OkHttp源码解析

概述OkHttp是一个适用于Android和Java应用程序的HTTP + HTTP/2框架。使用示例 //创建OkHttpClient.Builder OkHttpClient.Builder builder = new OkHttpClient.Builder(); //创建OkHttpClient OkHttpClient okHttpClien...

2019-05-05 21:05:47 385 1

原创 Android中的Service是如何启动的

1:前言Service是Android中的四大组件之一,日常开发中我们经常会使用startService之类的方法来启动Service,那这个方法调用的底层原理是什么呢?Android系统是如何启动起来Service的呢?本文我们从源码出发,介绍一下Android中的Service是如何启动Service的,本文的结构如下:2:源码分析2.1:ContextImpl.startService&startForegroundService:应用层调用的入口我们调用startService/s

2021-07-25 13:06:28 428 2

原创 Android IPC

相关知识操作系统为什么需要进程首先,我们需要明确,程序的执行需要一系列系统资源的支持,比如中央处理器,内存,文件,网络等,在早期的单道批处理系统的计算机中,每一个时刻最多只能有一道用户程序被装入内存中执行,其他用户程序只能等待,由于CPU的速度远远快于IO的速度,就会出现CPU需要等待IO就绪,在此期间CPU啥也不能干,只能干等着,造成了CPU的浪费,比如有A和B两个程序需要执行,流程可能为:CPU执行A程序A程序需要访问IOCPU等待A程序的IO访问,期间啥也不干A程序结束IO访问CPU继

2021-04-14 23:57:23 427

原创 Flutter最佳架构探究

背景Flutter作为最近很火的一个跨平台技术,以其高性能、跨平台的一系列优秀特性成功吸引了很多开发者和组织的青睐,但是由于其不同于传统Android或iOS开发的Widget机制,使得视图的代码往往冗长、不够简洁,解决这种困境的方法就是在开发中合理地运用合适的架构模式,使得程序的视图与数据分离,这样视图层的代码只用专心进行视图的描述和操作即可,不涉及过多复杂的数据操作,这样就可以使视图层的代码...

2019-07-31 17:34:20 2909 1

原创 一种组件化框架的探究之旅

概述本文主要就组件化中服务实现类的实例化方法做简要探究,希望可以探索出一种简洁易用的组件化框架,本文到的主要技术有:编译时注解javapoet的使用反射的使用问题的引入在软件开发中,当一款软件的规模和功能不断增多、丰富,原先的“一勺烩”架构往往显得捉襟见肘,为了便于团队协作、便于维护、便于升级,我们往往需要将一个软件划分为若干个模块(即我们所说的模块化),而这若干个模块又是依赖于很...

2019-07-29 18:20:59 1538

原创 入门Retrofit,看这一篇就够了

test

2019-06-29 20:17:36 1522 1

原创 关系操作及alpha语言学习

本文将介绍关系数据库的相关理论。文章目录前备知识关系代数传统的集合运算并交差笛卡尔积专门的关系运算选择投影连接除运算alpha语言检索简单检索(不带条件的检索)限定的检索(带条件的检索)带排序的查询指定返回的结果的条数用元组变量的检索用存在量词的检索带有多个关系的表达式的检索使用全称量词的检索用两种量词的检索用蕴含的检索聚集函数更新修改操作插入操作删除操作前备知识**关系:**在关系模型中,...

2019-06-27 17:20:14 6479 1

原创 关系数据理论必备知识点

前备知识函数依赖在属性集U上,X、Y都是U上的子属性集,如果可以根据属性集X中属性的值唯一确定属性集Y中属性的值,则称Y函数依赖于X,记做X→YX\to YX→Y.比如说:实例1:属性集U={学号,姓名,年龄},{学号}和{姓名}都是属性集U上的子集,当给定一个学号的值时,可以唯一个姓名的值,这样就符合函数依赖的关系,我们说{姓名}函数依赖于{学号},即学号姓名{学号}→{姓名}学号姓名\...

2019-06-26 23:35:55 690

原创 数据库并发控制原理综述

并发控制是数据库中的一大重点,本文就数据库中的并发控制做简要分析和介绍。在讨论数据库并发之前我们先引入事务的概念:数据库事务通常包含了一个序列的对数据库的读/写操作(一个单元的一系列SQL语句的集合)。我们引入事务无非是为了实现以下两个目的:为数据库操作序列提供一个从失败中恢复到正常状态的方法,同时提供数据库即使在异常状态下仍能保持一致性的方法。(即系统的错误恢复)当多个应用程序并发访...

2019-06-26 13:58:43 1290

原创 如何使用Flutter开发web应用

前言:Flutter系列的文章我应该会持续更新,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者搜索”IT工匠“关注微信公众号/头条号(微信公众号和头条号同名),会同步推送)。众所周知Google对于Flutter的期望是全平台统一UI开发,号称要做一套**“...

2019-06-21 22:48:53 23815 6

原创 Flutter第三部分(平台整合):Flutter中特定平台代码的编写

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者搜索”IT工匠“关注微信公众号/头条号(微信公众号和头条号同名),会同步推送)。本文主要介绍如何编写平台特定的代码,Flutter使用了一套灵活的系统...

2019-06-13 19:40:04 1416

原创 Flutter第二部分(数据):Flutter中的JSON序列化与反序列化

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者搜索”IT工匠“关注微信公众号/头条号(微信公众号和头条号同名),会同步推送)。概述现在大多数app都需要与Web服务器进行通信,而要与Web服务器...

2019-06-12 23:47:47 4276 1

原创 Flutter第一部分(UI)第七篇:路由导航实践

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者微信搜索”IT工匠“关注微信公众号哦,会同步推送)。路由机制其实没有太多的理论知识,所以本文主要针对实际生产中的几个场景介绍具体的实现方法,相信通过本...

2019-06-11 23:50:39 722 2

原创 Flutter第一部分(UI)第六篇:一文搞懂Flutter中的资源引用机制

前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件、数据库、网络)再到Flutter进阶(平台特定代码编写、测试、插件开发等),欢迎感兴趣的读者持续关注(可以扫描左边栏二维码或者微信搜索”IT工匠“关注微信公众号哦,会同步推送)。Flutter应用程序可以包括代码(code)和资产(asset),有时也将资产称为资源(reso...

2019-06-11 19:18:46 2805

原创 数据库实战入门——SQL全方位学习

文章目录说明基本表的操作建表修改表删除表索引的建立与删除建立索引修改索引删除索引数据查询单表查询查询表中若干列查询指定列查询所有列查询经过计算的值选择表中的若干元组消除重复的行查询满足条件的元组`order by`子句聚集函数`group by`子句连接查询等值与非等值连接查询自身连接外连接多表连接嵌套查询带有`in`谓词的子查询带有比较运算符的子查询带有`any(some)` 或`all`谓词的...

2019-06-06 00:05:01 1200

原创 Flutter必备——Dart入门(下)

文章目录类实例变量构造方法默认构造方法构造方法不会继承命名构造方法调用超类构造方法初始化列表重定向构造方法常量构造方法工厂方法构造方法方法实例方法Getter、Setter抽象方法可覆写的操作符抽象类隐式接口扩展类枚举类型为类添加新的功能(`class: mixins`)类变量和方法静态变量静态方法泛型为何使用泛型使用集合字面量在构造方法中使用泛型通用集合及其包含的类型限制泛型类型使用泛型方法库和...

2019-06-01 00:11:40 2864

原创 Flutter必备——Dart入门(上)

变量下面是声明变量并赋值的方法:var name = 'Bob';变量实际上是一个引用,上面名字为 name 的变量引用了 一个内容为 “Bob” 的 String 对象。默认值没有初始化的变量会自动获取一个默认值 null。类型为数字的变量如果没有初始化其值也是 null,因为数字类型也是对象。int lineCount;assert(lineCount == null);注...

2019-05-30 23:26:04 4447 3

原创 将移动端的Flutter代码部署为桌面程序(macOS)

介绍如果您正在为智能手机开发应用程序,可能您已经听说过Google的Flutter这个比较新的开发框架。它是一个允许您使用Dart语言(也来自Google)开发可以同时在Android和iOS平台发布的具有单个代码库的应用程序框架。其实,Flutter不仅限于移动端的跨平台(Android、iOS),还可以为桌面环境(Windows,macOS和Linux)构建应用程序,这点在今年的Goole...

2019-05-30 01:55:19 2693 2

原创 平衡二叉树、B树、B+树,B*树的区别与联系

平衡二叉树定义:基于二分法的策略提高数据的查找速度的一种二叉树数据结构;特点:平衡二叉树是采用二分法思想把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程遵循以下规则:(1)非叶子节点只能允许最多两个子节点存在。(2)每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大于当前节点的值(这...

2019-05-29 11:20:34 10338 1

原创 Android SQLite入门使用

概述Android 提供了几种方法用来保存数据,使得这些数据即使在程序结束以后依然不会丢失。这些方法有:文本文件:可以保存在应用程序自己的目录下,安装的每个app都会在/data/data/目录下创建个文件夹,名字和应用程序中AndroidManifest.xml文件中的package一样。SDcard保存:Preferences保存:这也是一种经常使用的数据存储方法,因为它们对于用...

2019-05-23 09:11:02 231

原创 Java多线程下生产者消费者问题的五种同步方法实现

本文目录:文章目录概述`wait() / notify()`方法实现`await() / signal()`方法`BlockingQueue`阻塞队列方法`Semaphore`方法实现同步`PipedInputStream` / `PipedOutputStream`概述生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。  生产者消费者模式的优点:解耦支持并发支持忙...

2019-05-21 09:29:56 1734

原创 一文带你入坑Google力推的Kotlin——Kotlin入门指北

文章目录基础语法函数定义可变长参数的函数定义常量与变量字符串模板NULL检查机制类型检测及自动类型转换区间基础数据类型比较数值位操作符数组字符串条件控制if表达式when表达式循环控制for循环while和do...while循环返回和跳转Break 和 Continue 标签从标签处返回类和对象getter 和 setter主构造器次构造器抽象类嵌套类内部类匿名内部类类的修饰符继承构造函数方法重...

2019-05-14 21:54:28 622

原创 计算机网络第六弹——应用层

彩蛋计算机网络谢希仁第七版原版ppt获取方式:公众号后台回复”N3“即可获取。由于公众号不支持显示LaTeX公式且公众号排版混乱,建议大家关注微信公众号"IT工匠",后台回复"N4-5"获取xmind源文件以及本文原文pdf文件获取更佳阅读体验。本文主要内容:每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成...

2019-05-14 21:14:07 1055

原创 计算机网络第五弹——运输层

彩蛋计算机网络谢希仁第七版原版ppt获取方式:公众号后台回复”N3“即可获取。由于公众号不支持显示LaTeX公式且公众号排版混乱,建议大家关注微信公众号"IT工匠",后台回复"N4-4"获取xmind源文件以及本文原文pdf文件获取更佳阅读体验。本文主要内容:运输层协议概述进程之间的通信从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最...

2019-05-13 18:48:04 1152

原创 计算机网络第四弹——网络层

彩蛋计算机网络谢希仁第七版原版ppt获取方式:公众号后台回复”N3“即可获取。由于公众号不支持显示LaTeX公式且公众号排版混乱,建议大家关注微信公众号"IT工匠",后台回复"N4-3"获取xmind源文件以及本文原文pdf文件获取更佳阅读体验。本文主要内容:网络层主要负责把运输层产生的报文段(TCP)或用户数据报(UDP)封装成分组或包进行传送。在TCP/IP体系中,由于...

2019-05-12 16:12:43 1315

原创 这是一份所有人都应该收藏的LaTeX常用符号表

本文是笔者整理的一份LaTeX常用符号表,使用LaTeX写文章排版更简洁,更重要的是对公式有良好的支持,对于很多正规文档,比如简历、技术文档、论文,使用LaTeX比使用传统word和markdown更加专业、更加正规,由于LaTeX的语法比较繁杂,所以不建议大家死记硬背,只要在需要的时候拿出文档查找自己需要的符号对应的代码即可,时间长了自然而然就会记住常用的符号(其实表达的核心思想就是让你收...

2019-05-11 23:50:03 1872

原创 计算机网络第二弹——物理层

彩蛋计算机网络谢希仁第七版原版ppt获取方式:关注左边栏二维码所示公众号,后台回复”N3“即可获取。本文主要内容(关注关注左边栏二维码所示公众号("IT工匠"),后台回复"N4-1"获取xmind源文件以及本文原文markdown文件):物理层的基本概念物理层上传输的数据单位是比特,即如果发送方发送了1,接收方就应该收到1,如果发送方发送了0,接收方就应该收到0,所以物理...

2019-05-11 15:11:25 976

原创 计算机网络第三弹——数据链路层

彩蛋计算机网络谢希仁第七版原版ppt获取方式:关注左边栏二维码所示公众号,后台回复”N3“即可获取。建议大家关注左边栏二维码所示公众号,后台回复"N4-2"获取xmind源文件以及本文原文pdf文件获取更佳阅读体验。本文主要内容:数据链路层概述数据链路层是计算机网络五层协议体系结构的第2层(从下往上计数),在整个体系结构中有非常重要的作用:​图1:不同主机之间通...

2019-05-11 15:07:50 2670

原创 常用资源整理汇总

获取方式:扫描左边公众号二维码,关注后公众号内回复资源对应ID即可。资源ID资源名0OMNeT++与网络仿真_完整版1计算机网络(第7版)-谢希仁...

2019-05-08 19:29:54 324 1

原创 计算机网络第一弹——基础概念

互联网与计算机网络我们经常会听到互联网与计算机网络这两个名词,很多人以为互联网和计算机网络是一个东西,其实二者还是有区别的:计算机网络(简称网络)由若干**结点(node)和连接这些结点的链路(link)**组成。网络中的结点可以是计算机、集线器、交换机或路由器等。不同的网络通过路由器互联起来,这就构成了一个范围更大的计算机网络,我们将这样的网络称为互联网(Internetwork或Int...

2019-05-06 16:31:48 643

原创 Android如何优雅地在后台线程中执行耗时任务

本文始发于github,由于文内部分链接使用的是相对路径,如果访问失败,请移步github项目内阅读即可正常访问。概述当您将单个线程中长时间运行的数据密集型的重量级操作分解为在多个线程上运行的较轻量级的操作时,速度和效率通常会提高。在具有多个处理器(核心)的CPU的设备上,系统可以并行运行线程,而不是让每个子任务等待运行的机会。例如,当您在多个单独的线程上独立执行每个解码任务时,解码多个图像文...

2019-05-02 12:28:25 5603

空空如也

空空如也

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

TA关注的人

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