自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 问答 (2)
  • 收藏
  • 关注

原创 x96max+ 电视盒子如何刷入EmuELEC游戏系统

一. 了解相关概念1. Kodi是什么?Kodi(以前称为XBMC)是一个免费的开放源代码媒体播放器软件应用程序,它可以运行在Linux、OSX、Windows、Android等多种操作系统和硬件平台。它是一个优秀的开源的(GPL)媒体中心软件。最初为Xbox而开发,叫XBMC(全称是XBOX Media Center),也就是XBOX平台的媒体中心。因为全世界开发者的参与,这个软件已经拥有远远超过以往的功能,这已经不能用‘一个简单播放器’来包含所有的一切了。因为这个原因,XBMC.14后更名为Kod.

2021-08-16 22:39:53 29082

原创 Windows 去除我的电脑页面多余的设备和驱动器图标

步骤:按WIN+R调出运行,然后输入 regedit 回车,打开注册表编辑器。在注册表中定位到:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace项。选中“NameSpace”后,在右键窗口中删除NameSpace里面的所有值。退出注册表后,此电脑页面刷新一下多余图标就消失了。...

2021-07-08 15:49:38 7701 1

原创 Android组件化架构解析总结

前面说到,组件化的核心就是解耦,所以组件和组件之间是不能有依赖的,例如在首页模块点击购物车按钮需要跳转到购物车模块的购物车页面,两个模块之间没有依赖,所以不能在使用Activity的显示跳转来跳转页面了 ,虽然隐式启动是可以实现跳转的,但是隐式 Intent 需要通过 AndroidManifest 配置和管理,协作开发显得比较麻烦。建议创建一个lib_core的公共功能模块组件,将常用的与业务无关的功能封装到此模块中,例如图片加载功能,网络请求功能,日志管理功能等,这些功能可以被所有的app通用。

2021-07-07 15:36:24 1989

原创 使用Shell脚本助力Linux系统自动化

对于图形界面例如(Windows,Ios,Android),用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。也就是说图形界面和命令行要达到的目的是一样的,都是让用户控制计算机。真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel), 图形界面和命令行只是架设在用户和内核之间的一座桥梁。由于安全、复杂、繁琐等原因,用户不能直接接触内核(也

2021-04-29 10:37:30 331

原创 漫谈Http和Https

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,它是构建于 TCP/IP 协议之上的一个应用层协议(网络进行通信的规则),默认端口号是 80。HTTP协议工作于客户端-服务端架构之上。HTTP客户端通过URL向HTTP服务端发送所有请求,HTTP服务端根据接收到的请求后, 向客户端发送响应信息。HTTP 是一种无状态 (stateless) 协议,HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而

2021-04-25 18:50:05 446

原创 SpringBoot总结之二数据库相关

JdbcTemplate是Spring对JDBC的模板封装,提供了一套JDBC模板,能够让我们写持久层代码时减少冗余代码,简化JDBC代码,使代码更加简洁。Spring Boot默认支持JdbcTemplate(无需配置)。JdbcTemplate在实际开发中一般不会使用,``通常都是使用MyBatis、Hibernate等更加成熟、优秀的数据持久层框架``。

2021-04-25 09:52:34 325

原创 Kotlin依赖注入框架Koin的使用

一.依赖引入Koin是一款轻量级的依赖注入框架,根据官方的描述,它无代理,无代码生成,无反射。 def koinVersion = "2.2.2" //Koin for android implementation "org.koin:koin-android:$koinVersion" //Koin for scope feature implementation "org.koin:koin-android-scope:$koinVersion" //Koin

2021-04-25 09:44:37 2964

原创 一文搞懂数据转换之摘要、编码、加密、签名

一.转义转义的作用?转义通常有两种功能。第一种是如果不进行转义就可能与语法规定的某些内容产生混淆,所以这些内容都被设计为需要转义。 第二种也叫字符引用,用于表示无法在当前上下文中被键盘录入的字符(如字符串中的回车符)。第一种作用以经典的JAVA语言中字符串中的字符转义为例。如果在一个字符串中存在一个"符号,那么就需要在"符号前添加\才能够正常的表示,比如下面这样:String content="他说\"他需要休息\"";之所以需要这样,是因为对于字符串来说,“本身就是表示一个字符串的起止符号.

2021-01-20 21:53:10 1607 2

原创 网络抓包原理及Fiddler的使用

一. 什么是抓包?在应用的开发调试中,查看软件实际运行时HTTP/HTTPS通信的请求数据和返回数据,从而分析问题的过程就叫做抓包。通常我们说的抓包主要是分为两种:使用Wireshark抓取传输层的TCP/UDP通信包。使用Fiddler或者Charles抓取应用层的HTTP/HTTPS通信包。在大部分场景下,我们只是需要抓取应用层的HTTP/HTTPS数据包也就是第二种方式。二. 抓包的原理.抓包的原理其实很简单,PC上的Fiddler监听一个端口,比如8888,在Android测试.

2021-01-19 09:47:33 11836 2

原创 Docker容器化技术总结

一.Docker基础image:镜像,是一个只读模版,用来创建容器。container: 容器,是一个可运行的镜像实例。Dockerfile: 镜像构建的模版,描述镜像构建的步骤。通过镜像来创建容器,程序就跑在容器中。并且一个镜像可以随意创建N个容器,各个容器间相互隔离。二.Docker的安装安装Docker卸载旧版本sudo apt-get remove docker docker-engine docker.io containerd runc/var/lib/docker的

2021-01-05 18:07:04 669

原创 SpringBoot总结之一项目基础

SpringBoot是由Pivotal团队提供的框架,其设计目的是用来``简化Spring应用的初始搭建以及开发过程``。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot是Spring项目中的一个子工程,与大家所熟知的Spring-framework 同属于Spring的产品。使用SpringBoot,可以让我们快速的构建庞大的Spring项目(包括web 持久化),并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让我们关注业务而非配置。

2021-01-05 18:06:10 561

原创 Kotlin总结之五 协程

一. 什么是协程协程本质是一套由 Kotlin 官方提供的线程 API,可以理解为一个线程框架。它最大的好处是:可以在同一个代码块中进行多次线程切换,简化异步任务处理的方案。协程和线程的区别:协程是运行在单线程中的并发程序,避免了多线程并发机制中切换线程时带来的线程上下文切换、线程状态切换、线程初始化上的性能损耗,能大幅度提高并发性能。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态

2020-10-29 16:57:30 302

原创 GitLab实现CI/CD

一.GitLab-CI和GitLab-Runner简介1.GitLab-CI是什么?GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。GitLab8.0以后的版本默认集成了GitLab-CI并且默认启用的。2.GitLab-Runner是什么?Gitlab只是个代码仓库,想要实现CI/CD还需安装gitlab-runner,gitlab-runner相当于是Gitlab-CI中的任务的执行器,Gitlab会

2020-08-27 11:32:42 1070

原创 Android 穿山甲广告联盟接入

一、SDK接入参考官方接入文档,基于穿山甲版本号: 3.1.0.0导入 aar 及 SDK 依赖的 jar 包将本 SDK 压缩包内的 open_ad_sdk.aar 复制到 Application Module/libs 文件夹(没有的话须手动创建), 并将以下代码添加到您 app 的repositories { flatDir { dirs 'libs' }}depedencies { compile(name: 'open_ad_sdk', ext:

2020-06-09 11:29:44 26630 4

原创 使用Aop技术提升Android开发效率

AOP 和 OOP的区别:面向对象的特点是继承、多态和封装。为了符合单一职责的原则,OOP将功能分散到不同的对象中去。让不同的类设计不同的方法,这样代码就分散到一个个的类中。可以降低代码的复杂程度,提高类的复用性。但是OOP在分散代码的同时,也增加了代码的重复性。例如,我们在两个类中,可能都需要在每个方法中做日志。按照OOP的设计方法,我们就必须在两个类的方法中都加入记录日志的内容。也许他们是完全相同的,但是因为OOP的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。然而AOP就是为了解决这类

2020-05-16 17:11:20 235

原创 Java多线程模型及线程安全问题总结

进程是系统中正在运行的一个程序,程序一旦运行就是进程。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要``使用进程间通信``,比如``管道,文件,套接字``等。

2020-05-16 17:09:56 186

原创 Apk构建总结之二构建工具(Ant、Maven、Gradle)

一. 构建工具1.什么是构建工具?在进行编程操作的时候,我们经常会遇到很多与编程无关的项目管理工作。如下载依赖、编译源码、单元测试、项目部署等操作。一般的,小型项目我们可以手动实现这些操作,然而大型项目这些工作则相对复杂。所以我们需要用到构建工具。构建工具是帮助我们实现一系列项目管理、测试和部署操作的工具。构建工具可以把源代码生成可执行应用程序的过程自动化的程序(例如Android app生成apk)。构建工具包括编译、连接跟把代码打包成可用的或可执行的形式。总的来说构建的自动化是编写或使一大部

2019-11-13 13:54:20 861

原创 Apk构建总结之一打包流程及安装流程

一. 分析已经打好的apk要了解APK的打包流程,我们首先来了解下打包完成以后APK包里面包含哪些东西。.apk文件其实就是一个压缩文件,把文件的后缀改成.zip就可以用解压软件解压了:1. 将apk后缀改成rar包2. 解压rar包apk是一个压缩包,里面有lib,META-INF,classes.dex,res,resources.arsc文件夹和文件。下面看看它们各自的作用。assets资源。lib不是每个apk都有的,主要看项目,文件夹里面存放的是so动态链接库,so动态链接库不

2019-10-22 10:05:36 1158

原创 下载AOSP源码编译、调试、刷机

一.准备工作系统最好是Ubuntu或者mac OS。(本文基于Ubuntu)Ubuntu设置永不休眠,防止在编译的过程中休眠导致编译失败。在setting中搜索power->blank-screen选择never。一块大一点儿的硬盘至少得有200G以上剩余空间。二.下载源码1.安装GIT首先需要安装Git,因为源码是用Git管理的.sudo apt-get install git接下来创建一个bin文件夹,并加入到PATH中,有点像Windows的环境变量.mkdir ~/bin

2019-09-28 20:50:43 3750

原创 使用Python制作爬虫程序总结

网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。如果把互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它遇到自己需要的食物(所需要的资源),那么它就会将其抓取下来。例如百度、google等搜索引擎本质上就是超级爬虫。搜索引擎爬虫每时每刻都会在海量的互联网信息中进行爬取,爬取优质信息并收录,当用户在搜索引擎上检索对应关键词时,搜索引擎将对关键词进行分析处理,从收录的网页中找出相关网页,按照一定的排名规则进行排序并将结果展现给用户。

2019-08-15 14:55:59 962

原创 微信小程序开发总结

如果还没有[微信公众平台](mp.weixin.qq.com/ )的账号,先进入[微信公众平台](mp.weixin.qq.com/ )首页,点击 “立即注册” 按钮进行注册。注册的账号类型选择 “小程序” 即可。接着填写账号信息,需要注意的是,填写的邮箱必须是未被微信公众平台注册、未被个人微信号绑定的邮箱,而且每个邮箱仅能申请一个小程序。激活邮箱之后,选择主体类型为 “个人类型”,并按要求登记主体信息。主体信息提交后不可修改,该主体将成为你使用微信公众平台各项服务和功能的唯一法律主体与缔约主体,在后续开

2019-08-12 09:21:02 378

原创 Kotlin总结之四 面向对象编程

一.Kotlin类的创建1.类的声明Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。Kotlin 中使用关键字 class 声明类,后面紧跟类名:// 类名为 Appleclass Apple{ // 大括号内是类体构成}当类没有结构体的时候,大括号可以省略。如:class Apple类的修饰符 描述 abstract 抽象类 final 类不可继承,默认属性 enum 枚举类 open

2019-08-08 10:08:30 250

原创 前端开发基础HTML、CSS、Javascript总结

一.Html网页1. HTML标签HTML 是用来描述网页的一种语言。HTML 标签是由尖括号包围的关键词,比如 HTML 标签通常是成对出现的,比如 和 。成对出现的标签中,第一个标签称为开始标签,第二个标签称为结束标签(闭合标签)。HTML 中的不同标签具有不同的含义,学习 HTML 其实就是学习各个标签的含义,根据实际场景的需要,选择合适的标签,从而制作出精美的网页。HTML中每个标签都有自己的语义(含义),例如标签代表段落,标签代表加粗。根据标签的不同,浏览器会使用不同的方式展示标签中的内

2019-08-06 15:47:07 474 1

原创 Kotlin总结之三 函数及函数式编程

一.Kotlin中的函数函数是执行特定任务的一段代码,程序通过将一段代码定义成函数,并为该函数指定一个函数名,就可以在需要的时候多次调用这段代码,代码复用的重要手段就是通过函数实现的。1.函数声明定义格式为:权限修饰符 fun 函数名(参数名 :类型,...) : 返回值{ //函数执行体}函数从参数角度,可以分为有参函数以及无参函数;从返回值角度,可以分为有返回值的函数以及没有返回值的函数。那么函数一共就有4种类型,无参无返回值、无参有返回值、有参无返回值、有参有返回值。//无参无返回

2019-07-26 14:55:18 552

原创 Java编译过程及Jvm详解

JVM是Java Virtual Machine(Java虚拟机)的缩写,也就是指的JVM虚拟机,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。众所周知,java语言是跨平台的,而JVM是java跨平台的关键之所在,JVM上执行java字节码,执行时这些字节码可以解释成具体平台的机器码,因此java拥有“一次编译,处处运行”这一跨平台能力。

2019-07-24 15:49:15 478

原创 CI/CD工具之Jenkins

软件开发周期中需要一些可以帮助开发者提升速度的自动化工具。其中工具最重要的目的是促进软件项目的持续集成与交付。通过CI/CD工具,开发团队可以保持软件更新并将其迅速的投入实践中。CI/CD也被认为是敏捷开发的最重要实践之一。具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为"CI/CD 管道",由开发和运维团队以敏捷方式协同支持。

2019-07-10 12:34:25 381

原创 Kotlin总结之二 数组和集合容器

一 Kotlin中的数组1.数组的类型kotlinjavaIntArrayint[]ShortArrayshort[]LongArraylong[]FloatArrayfloat[]DoubleArraydouble[]CharArraychar[]2.数组的创建java创建数组的两种方式:int[] intArray = new int[6] //表达式:数据类型[] 标识 = new 数

2019-07-09 10:36:25 371

原创 Linux系统基础总结

Linux 是一套自由和开放源码的类 Unix 操作系统,是基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 的设计与 UNIX 类似,但经过不断变革,它已可以在各种硬件上运行(从手机到超级计算机)。每个基于 Linux 的操作系统都包含 Linux 内核(管理着硬件资源)和一组软件包(构成了操作系统的其余部分)。

2019-07-04 10:51:51 474

原创 Flutter开发基础总结

一.命令式UI和声明式UI1. 命令式编程和声明式编程的区别命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。声明式编程:告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。2. Flutter中命令式编程的应用在Flutter中每个组件,会有个build函数,这里会返回一个能够完整描述UI的对象结构。每当数据改变时,就重新调用build函数,返回新的结构。如何高效渲染,就是框架去做的事情了。通过这种方式,不管是UI的初

2019-07-02 11:26:19 608

原创 Android数据绑定DataBinding

MVVM架构的核心就是数据驱动,数据驱动的意思就是,数据更新的时候,自动刷新UI。采用MVVM架构会节省大量的更新UI的代码,并且数据更新后主动出发UI更新这种方式,更难出错,鲁棒性更强。且不需要关注数据变化的时机,是需要关注数据变化的结果即可。

2019-07-01 14:02:19 596

原创 Dart语言编程基础

一.Dart 简述在Dart中,一切都是对象,每个对象都是一个类的实例,所有对象都继承自Object。 Dart是强类型的,也有自动推断类型的机制。二.变量。1.变量的声明。Dart中定义变量有两种方式,一种是静态类型语言常用的方式,显式指定变量类型,另一种则是动态语言的常用方式,不指定类型,由vm自动推断。变量的默认值:未初始化的变量的初始值为null。甚至具有数字类型的变量最初也是null,因为在Dart中没有基础的数据类型,所有的都是对象类型.数字——就像dart中的其他东西一样是对象。

2019-06-28 18:02:47 506

原创 Flutter环境搭建及项目配置

一. 下载安装Flutter。1.1 下载安装包Flutter SDK1.2 下载完成后进行解压:1.3 配置环境变量。控制面板->系统和安全->系统->高级系统设置->环境变量->path->编辑->新建1.4 安装flutter依赖并检查。cmd命令:flutter doctor1.5 查看flutter版本。flutter doctor -v二. Android Studio安装配置。2.1 Android studio安装d

2019-06-21 10:24:41 612 1

原创 Kotlin总结之一 变量常量及流程控制

一.Kotlin中的变量1.var 与 valvar 用此关键字声明的变量,可以多次重复赋值,可读且可写,相当于Java中普通变量。val 用此关键字声明的变量表示只读变量,即可读但不可写。相当于Java中用final修饰的变量。var str: String = "" //str是变量名,String表明该变量是String类型变量,后面就是赋值语句。var str2= "" //省略了声明变量类型,它可以根据赋的值而自动推断出类型。str="1234"

2019-06-20 14:31:30 311

原创 音视频开发总结之三网络直播技术

一. 直播流程总览目前主流的直播架构中主要有两种方案,即流媒体转发、P2P。流媒体转发,是一种在视频直播中以流的方式将连续的音、视频数据经编码压缩后传输到流媒体服务器,用户实时从服务器获取流媒体资源。而不必要等待整个文件下载文件完毕的C/S架构视频直播方案;P2P直播,是一种建立在P2P技术基础上的视频直播方案,它规定客户端之间使用一定协议来交换和共享直播数据,通过减少对服务器的数据请求,以降低服务端的I/O带宽等方面压力,从而削减服务器带宽成本,降低客户端卡播率。一个直播功能通用的基础架构涉及三个部分

2019-06-18 11:23:09 1414

原创 音视频开发总结之二Android平台相关

一. 音视频采集流程串联整个音视频录制流程,完成音视频的采集、编码、封包成 mp4 输出。通过摄像头和麦克风获得实时的音视频数据;播放流程: 获取流—>解码—>播放。录制播放路程: 录制音频视频—>视频处理—>编码—>上传服务器->别人播放。直播过程 : 录制音视频—>编码—>流媒体传输—>服务器—>流媒体传输到其他客户端—>解码—>播放。视频采样数据 : 一般都是 YUV 或 RGB 格式。音频采样数据 :一般都是

2019-06-17 10:30:57 1062 1

原创 音视频开发总结之一理论基础

一. 音频技术基础概念1. 声音的物理性质众所周知,声音是由物体振动而产生的。声音是一种压力波,当演奏乐器或者说话时,它们的振动都会引起空气有节奏的振动, 使周围的空气产生疏密变化,由此就产生了声波,这种现象会一直延续到振动消失为止。声波具有三要素:音调:也叫音频,频率越高,波长就会越短,而低频声响的波长则较长。所以这样的声音更容易绕过障碍物。能量衰减就越小,声音就会传播的越远;音量:就是振动的幅度。用不同的力度敲打桌面,声音的大小势必发生变换。在生活中,我们用分贝描述声音的响度;音色:在同样

2019-06-14 15:25:25 595

原创 Android APK反编译及逆向工程

可以利用ApkTool,获取AndroidManifest和res等资源文件:功能:拆解Apk文件,反编译其中的资源文件,将它们反编译为可阅读的AndroidManifest.xml文件和res文件。因为直接把Apk文件当做zip解压,得到的xml资源文件,都是无法直接用文本编辑器打开阅读的,因为它们在打包时经过了build-tools的处理变成了二进制的XML。

2017-08-21 15:54:56 1596

原创 Android中WebView截长图

android 在webView里面截图大概有四种方式.1.获取到DecorView然后将DecorView转换成bitmap然后写入到文件里面.View view = getWindow().getDecorView(); Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.C

2017-07-21 16:05:40 3855 5

原创 Retrofit上传下载文件及进度监听

#一.文件上传1.文件上传注意点1.文件上传一般用post请求2.文件上传的API接口中不能带@FormUrlEncoded参数3.一般要携带@Multipart(上传文件的标志)2.接口示例@Multipart@POST("UploadServlet")Call<String> uploadFile(@PartMap Map<String, RequestBody> params);或者:@Multipart@POST("UploadServlet")Ca

2017-07-05 17:20:50 976

原创 Okhttp3.0配置支持第三方签名Https证书

HTTPS全称为Hyper Text Transfer Protocol over Secure Socket Layer或是Hypertext Transfer Protocol Secure 中文含义为“超文本传输安全协议” 。是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(

2017-07-03 15:19:30 9900

空空如也

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

TA关注的人

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