自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (7)
  • 收藏
  • 关注

原创 键盘发出的中断

在Linux的世界里,计算机系统外围的硬件设备是内核来管理的。内核与硬件有一个接口。Linux操作系统都提供了中断机制。当硬件设备想与Linux操作系统通信的时候,它首先会发出一个异步的中断信号去打断处理器的执行,继而打断内核的执行。中断通常对应着一个中断号,内核通过这个中断号查找相应的中断服务程序 ,并调用这个程序响应和处理这个中断。例如:当你敲击键盘的时候,键盘控制器会发送一个中断信号给操作...

2019-03-30 17:14:11 3729

原创 Android 9.0 网络请求问题的四种解决方法

在运行Android 9 (API level 28)或以上的Android操作系统的设备上,为保证用户数据和设备的安全,默认使用加密传输,无论是接收或发送数据,都不能明文传输,都需要使用传输层安全协议(Transport Layer Security)。所有targetSdkVersion 设置为28或更高的App都会受此影响。为了适应这种变化,有三种解决方案App使用https请求ta...

2019-03-29 11:38:38 2516

原创 设计模式——状态模式

策略模式是围绕可以互换的算法来创建的。状态模式是通过改变对象内部的状态来帮助对象控制自己的行为。状态模式定义允许对象在内部状态改变时改变它的行为。这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,行为会随着内部状态的改变而改变。状态模式的类图:类图解析:State:State接口定义了一个所有具体状态的共同接口;任何状态都要实现这个相同的接口,这样一来,状态之间可以互...

2019-03-28 16:40:34 1449

原创 设计模式——组合模式

组合模式的定义允许你将对象组合成树形结构来表现“整体/部分“层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。讲解时,我们用图形界面上的菜单例子来举例说明。组合模式的类图:类图解析:Client:客户对象将使用组件接口访问菜单和菜单项Component:提供了一组接口,让菜单项和菜单共同使用,并且提供了默认实现。但是我们希望由具体的菜单或菜单项提供默认实现,因此我们使用了抽...

2019-03-28 12:52:28 1397

原创 设计模式——迭代器模式

当我们说“集合(collection)”的时候,我们指的是一群对象。其存储方式是各式各样的数据结构,如列表、数组、散列表,无论用什么方式存储,一律可以视为集合。迭代器模式定义提供一种方法顺序访问一个集合对象的各个元素,而又不暴露其内部的表示。这个模式给我们提供了一种方法,可以顺序访问一个集合对象中的元素,而又不用知道内部是如何表示的。类图:Iterator是所有迭代器都必须实现的接口,...

2019-03-27 18:15:18 1450

原创 设计模式——外观模式

外观模式,将一个或数个类的复杂的一切都隐藏在背后,只显露出一个干净美好的外观。外观简化了接口,也将客户从组件的子系统中解耦。外观和适配器都可以包装许多类,但是意图是不一样的,外观是为了简化接口,而适配器是为了将接口转换成不同的接口。外观模式定义提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。外观模式的类图:外观模式会减少软件的维护成本,但是也...

2019-03-26 17:45:59 1374

原创 设计模式——适配器模式

在生活中,如果我们在香港买了三脚插头回到内地来用,你会发现根据没有插座可以插。因为内地用的电气标准与香港的不一样。那么我们该怎么办?这时我们可以买一个适配器。这样一来香港买的三脚插头就可以插在这一个适配器上,适配器的另一头可以插在内地使用的普通插座上,这样就可以使用了。从上面这个生活例子,我们可以看出适配器改变了三脚插头,使其符合内地的使用需求。在面向对象的适配器也是一样的:将一个接口(被适配...

2019-03-26 12:14:43 1555

原创 代理模式——保护代理(三)

Java在java.lang.reflect包中有自己的代理支持,利用这个包我们可以在运行时动态地创建一个代理类,实现一个或多个接口,并将方法的调用转发到你所指定的类(继承了InvocationHandler的处理器类),因为实际的代理类是在运行时创建的,我们称这个java技术为:动态代理。在代码开始执行时,还没有proxy类,它是根据需要从我们传入的接口集创建的。从Java1.2开始RMI可以...

2019-03-25 18:39:35 3075

原创 显式Intent与隐式Intent

占位符

2019-03-22 16:26:52 1954

原创 Android中的Action和Category常量表

ActionAction常量对应字符串描述ACTION_MAINandroid.intent.action.MAIN应用程序入口ACTION_VIEWandroid.intent.action.VIEW显示指定数据ACTION_ATTACH_DATAandroid.intent.action.ATTACH_DATA指定某块数据将被附加到其它地方...

2019-03-22 11:35:53 1578

原创 WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.

anroid studio没有升级gradle版本以前,用compile声明的依赖,外部module也能使用。升级后,android stadio提示你要将compile换成implementation或api。那么应该替换为哪一个更适合呢?implementation声明的依赖没办法传递到module以外,即该module以外的module没办法引用到implementation声明的第三方库...

2019-03-21 18:29:01 1447

原创 WARNING: DSL element 'DexOptions.incremental' is obsolete and will be removed at the end of 2018

解决办法:dexOptions { incremental true //这个去掉 javaMaxHeapSize "4g" }

2019-03-20 17:17:10 5841

原创 Android Studio3.0中指定打包时的apk文件名称

在app的build.gradle作如下修改:android {... android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "apk的名称.apk" } }...}...

2019-03-20 17:11:59 1696

原创 代理模式——虚拟代理(二)

代理模式定义为另一个对象提供一个替身或占位符以控制对这个对象的访问。使用代理模式创建代表对象,让代表对象控制对某对象的访问,被代理的对象可是远程的对象、创建开销大的对象或需要安全控制的对象。代理分三种:1.远程代理,帮助我们控制访问远程对象:远程代理可以作为另一个JVM上对象的本地代表。调用代理的方法,会被代理利用网络转发到远程执行,并且结果会通过网络返回给代理,再由代理将结果转给客户。...

2019-03-19 17:10:58 3629

原创 代理模式——远程代理(一)

代理模式定义为另一个对象提供一个替身或占位符以控制对这个对象的访问。使用代理模式创建代表对象,让代表对象控制对某对象的访问,被代理的对象可是远程的对象、创建开销大的对象或需要安全控制的对象。代理分三种:远程代理,帮助我们控制访问远程对象:远程代理可以作为另一个JVM上对象的本地代表。调用代理的方法,会被代理利用网络转发到远程执行,并且结果会通过网络返回给代理,再由代理将结果转给客户。虚...

2019-03-19 14:33:20 5371

原创 单例模式

有一些对象其实我们只需要一个就够了,比如线程池、缓存、对话框、处理偏好设置、注册表的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。如果制造出多个,反而会导致许多问题。单例模式定义确保一个类只有一个实例,并提供一个全局访问点。经典的单例模式实现第一步:利用一个静态变量来记录Singleton类的唯一实例。第二步:把构造器声明为私有的,只有在Singleton类内才可以调用构造器。...

2019-03-16 23:19:53 1243

原创 工厂模式

针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。如果一个类中使用大量new出来的具体类,那么就等于是自找麻烦,因为一旦加入新的具体类,就必须修改代码。我们可以将new的工作,交给一个对象去做,这个对象被我们称为“工厂”。工厂(factory)处理创建对象的细节。把创建工作交给一个对象来处理的好处就是日后要修改时,只需要修改这个类即可。我们很喜欢利用静态方法定义一个工厂,通常称为“静态工...

2019-03-15 19:51:29 1260

原创 观察者模式

我们先看看报纸和杂志的订阅是怎么一回事。(1)报社的业务就是出版报纸(2)只要你向报社订阅报纸,你就会一直收到新报纸(3)当你不想再看报纸时,你可以取消订阅,他们就会停止向你送新报纸(4)只要报社没有倒闭,就会一直有人向他们订阅或取消订阅报纸所以出版者+订阅者 = 观察者模式在观察者模式中,出版者被叫做“主题(Subject)”,订阅者被叫做“观察者(...

2019-03-14 18:05:26 1315

原创 android8.0报错:java.lang.IllegalStateException: Only fullscreen opaque activities can request orientat

解决方法第一步,在styles.xml文件中添加如下样式 <style name="myTranslucent" parent="AppTheme"> <item name="android:windowBackground">@android:color/transparent

2019-03-13 10:44:22 1526

原创 gcc编译程序的过程

我们通过编译一个程序test.c,代码如下,来了解编译程序的过程。#include <stdio.h>int main(){ printf("Hello world!"); return 0;}1.预处理(Preprocessing)~/Desktop/test$ gcc -E test.c -o test.i~/Desktop/tes...

2019-03-12 18:18:29 1446

原创 通过Dockerfile文件来定制Docker镜像

默认的Dockerfile文件名是Dockerfile,不带后缀 ,首字母大写。通过Dockerfile文件构建过程是以一个镜像为基础,然后在其上进行定制其他东西。Dockerfile文件里的每一行都是Dockerfile指令。每一条Dockerfile命令构建一层。注意:Docker 不是虚拟机,容器就是进程。有了Dockerfile文件后只需要执行下面的命令就能构建并启动容器了:~...

2019-03-12 17:06:57 1553

原创 装饰者模式

开个头

2019-03-11 16:05:23 1129

原创 策略模式

通过学习设计模式,你将学到如何利用其他开发人员的经验与智慧。使用设计模式的最好方式是“把设计模式装进脑袋里,然后在你的设计和已有的应用中,寻找何处可以使用它们”。今天我们要讲的就是策略模式,代码在Github上了:看看UML:策略模式的定义定义了算法族,分别封装起来,让它们之间可以互相替换,让算法的变化独立于算法的客户(父类,使用算法的类)。我们不再说鸟的一系列行为,如飞、鸣叫,是“...

2019-03-08 12:40:56 1064

原创 android7.0更新安装apk的方法

StrictMode模式从android7.0开始强制启用StrictMode“严苛模式”。StrictMode是在android2.3引进的类。当时它的作用是作为一个开发工具用的,开发者可以开发者选项中打开它,它可以捕捉到在主线程序发生的磁盘IO读写、网络访问发生的意外,通常这个意外都是ANR(android not response),当时可以用这个工具检测出这些意外,代码就可以做调整:将磁...

2019-03-07 20:59:48 3896

原创 android开发出现错误:Failed to find configured root that contains

在android8.0的android手机上,读取共享文件时,如apk更新的编程中,我们把apk下载后,要安装时,去读取这个apk文件就出现了如下错误:Failed to find configured root that contains...解决方法:在file_provider_paths.xml文件中添加root-path 标签<path><root-pat...

2019-03-07 12:24:11 11327

原创 作词可以用哪些技巧

内容层面赋所谓“赋”,就是直抒胸意,心里想的是什么就直接说出什么来。如陕西民歌《知道不知道》山清水秀太阳高,好呀么好风飘,小小船儿撑过来它一路摇呀摇。为了那心上人起呀么起大早,也不管呀路迢迢,我情愿多辛劳。2.比所谓“比”,就是用他物比此物。如《在那遥远的地方》她那粉红的笑脸,好像红太阳;她那活泼动人的眼睛,好像晚上明媚的月亮。3.兴所谓“兴”,就是先言...

2019-03-04 19:15:09 1739

原创 JavaScript——使用addEventListener添加事件处理程序

addEventListener添加事件处理程序我们以前通常使用对象属性来给事件指定处理程序 ,如处理加载事件时,我们将事件处理程序赋给属性window.onload,又例如处理按钮点击事件,我们将事件处理程序赋给按钮的onclick属性。但是如果要给一个事件指定多个处理程序,这种方式就显得无能为力了。所以,我们可以用DOM对象的方法addEventListener为一个事件指定多个事件处理程...

2019-03-04 11:38:40 2675

原创 javaScrpt的保安——try/catch

try/catch用法如下:将要尝试执行的代码放在try块中catch块包含try块中代码出现错误时将执行的代码。举个例子: window.onload = function(){ try{ var message = document.getElementById("message");...

2019-03-04 11:07:32 1050

原创 javaScrpt创建可变参数函数——arguments对象

先看一个使用arguments对象的例子: function printArgs(){ for(var i = 0;i<arguments.length;i++){ alert(arguments[i]); } ...

2019-03-04 10:42:38 1129

原创 JavaScript最后的秘密——使用原型创建对象

概念准备如何在对象之间建立关系和共享代码的方法,需要扩展和改进即有对象的方法?使用原型创建对象可以帮到你。JavaScript的对象模型与标准面向对象语言的对象模型稍有不同。JavaScript采用的不是基于类的面向对象系统,而原型模型,其中的对象可继承和扩展其他对象的行为。JavaScript没有传统的面向对象模型,即从类创建对象的模型。事实上,JavaScript根本没有类。在JsbsSc...

2019-03-03 23:21:01 1285

原创 JavaScript——对象构造函数

使用对象字面量创建对象以前我们都是这做的。使用对象字面量创建对象时,逐个地指定其属性: var car = { make:"habo", model:"cow", year:2019, color:"blue", started:fal...

2019-03-01 18:23:22 1812

原创 JavaScript的深空——匿名函数和闭包

所谓匿名函数指的就是没有名称的函数。使用函数声明时,必须给它指定名称;但使用函数表达式定义 函数时,不必给它指定名称。所以匿名函数就是没有名称的函数表达式。函数表达式的结果是一个引用。函数既然是一等值,那么意味着,函数中还可以定义函数。嵌套对作用域的影响我们来看一个嵌套的函数:<!doctype html><html lang="en"&amp

2019-03-01 14:52:00 1049

Android-ttf.zip

Android字体,.ttf字体文件,可以用于Android中。本资源包含29种字体,任君选择。可以在Android应用中使用。这样可以丰富android应用的显示。

2020-07-02

java-json.jar.zip

这个jar包可以实现xml与json字符串互相转化的功能。通过常我们反序列化时都习惯用json,但有些接口仍然使用xml,那么可以借助这个工具来实现xml转换json了。

2020-06-27

sqlitestudio-3.2.1.tar.xz

sqlite studio这一款数据库工具可以非常方便查看sqlite数据库,非常直观。在linux系统上下载下来解压后就可以使用了,无需要安装。

2020-04-17

mongodb-org-server_4.2.5_amd64.deb

这是mongodb server,版本是4.2.5,它是一个文档数据库。是NoSQL类型的数据库。在官方网站下载,可能会比较慢。在此分享给你们。

2020-03-28

git常用命令.pdf

这是一份提供常用的git命令的pdf文件。可以通过查阅这份文档,快速使用git。个人觉得非常好用,遂推荐给大家。

2019-11-14

最完整的git教程.zip

git最全的教程、最官方的教程、最完整的教程,你可以学习到最完整的git教程,你可以系统地学习git教程。

2019-11-13

jdk1.6-bin.zip

jdk-6u45-linux-x64.bin用于在linux上安装的,drozer需要jdk1.6。还有一些平台就是需要jdk1.6的。真是很奇怪。分享给大家。

2019-10-23

空空如也

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

TA关注的人

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