自定义博客皮肤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)
  • 收藏
  • 关注

原创 Android 开发代码规范

尽量避免缩写,除非该缩写是众所周知的, 比如 HTML、URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。通常一个具有审美价值的 UI 来说,减少使用颜色的种类是非常重要的。目录下放的是位图文件(.png、.9.png、.jpg、.gif)或编译为可绘制对象资源子类型的 XML 文件,而。或许你需要为按钮控件做同样的事情,将一组相关的和重复 android:xxxx 的属性放到一个通用的。属性动画文件需要放在。文件,因为对于一个视图来说,有一个重复的外观是很常见的,将所有的外观细节属性(

2023-07-29 10:48:02 1825

原创 Android项目Gadle统一依赖管理

直接编写是Android项目工程自带的默认管理方式,在每一个module中都写死了不同依赖及版本号,因此每次升级依赖库时都需要对每一个module做大量的手动更改。Google在Android官方文档中推荐通过使用gradle的extra属性,将依赖及版本号编写到config.gradle配置文件中,每个module都去依赖config.gradle中的版本,从而达到统一管理的目的。ext {libs = [Gradle文档。

2023-01-16 22:00:00 2692 1

原创 使用Pyinstaller将Python源代码打包成可执行文件

PyInstaller是Python的第三方打包库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件进行打包,通过对源文件打包,实现将.py扩展名的任何Python的源代码转换成Windows、Linux、Mac OS X下的可执行文件,使得。对于Windows来讲,PyInstaller可以将Python源代码打包成.exe的可执行文件,样就可以直接运行程序,不需要安装Python解释器,也不需要对计算机进行相关的环境配置。

2022-12-29 23:30:00 9403

原创 Win10及Win11安装及使用Wsl2 Linux子系统

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。WSL2 使用了 hyper-v 虚拟化技术,它就是一个你感知不到的虚拟机(VM),比以前的版本性能更高。

2022-12-28 23:00:00 4753 1

原创 Android存储之MediaStore的使用

上文中提到了Android提供内容的叫ContentProvider,那么在Android中怎么区分各个Provider?有的是提供联系人的,有的是提供图片的,有的是提供视频的等等。所以就需要有一个唯一的标识来标识这个Provider,Uri(通用资源标识符 Universal Resource Identifier)就是起到了这个标识的作用。每一个ContentProvider都会有一个唯一的Uri地址,通过这个Uri标识可以获取到ContentProvider和其中的数据,然后进行数据操作。

2022-10-10 23:45:00 17587

原创 Android存储之分区存储适配

在上文中我们了解到,外部存储空间分为私有目录和公共目录,在Android10以前,应用程序通过获取READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限。获得外部存储空间的权限以后直接通过file path读取和修改外部存储空间中任意的文件,当然也包括其他应用的外部私有目录文件,这样一来极易造成泄露用户隐私。而且很多应用会在外部存储根目录建一个自己应用的文件夹,用于存放应用的数据。这样会导致用户卸载后,应用数据不会随之删除。导致手机文件特别混乱,长期占用空间。

2022-10-10 23:00:00 7370 3

原创 Android颜色透明度转换对照表

透明度范围分为 0 - 255,0就是全透明,255就是不透明,用16进制表示为 (透明)00 –> FF(不透明) 例如:50%透明度,50%也就是256的一半,因为是从0开始算的,所以是 127,转换成16进制就是 7F。透明度 和不透明度是两个概念, 它们加起来是1,或者100%。例如需要计算30%透明度,那么它对应的不透明度则是100%-30%=70%,不透明度为70%,根据公式进行计算255*70%=178.5,四舍五入179,然后利用计算器转为16进制为B3。

2022-09-13 12:00:55 10755

原创 Python图像处理库Pillow(PIL)的简单使用

图像库PIL(Python Image Library)是Python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。PIL原来是只支持python2的版本,后来出现了移植到python3的库pillow,pillow其功能和PIL差不多。PIL 软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。

2022-09-02 12:01:32 11337 4

原创 ExoPlayer添加Ffmpeg扩展实现软解功能

有时候Exoplayer自带的解码器不支持一些特殊的格式或者编码,此时我们可以通过给Exoplayer添加Ffmpeg扩展实现软解来支持这些编码。

2022-08-03 18:05:43 4215 1

原创 局域网添加DNS服务器进行域名解析

要搭建DNS服务器,首先需要了解一下什么是DNS。DNS是将域转换为其服务器的数字IP地址的系统,例如将域名转换成ip地址127.0.0.1。每当使用域名发出网络请求时,系统都会执行DNS查询以确定域名对应的服务器ip地址。Dnsmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。...

2022-07-25 18:28:21 19731

原创 Web服务器之Nginx介绍

Nginx (engine x) 是一个高性能的Web和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服器。Nginx处理高并发能力是十分强大的,能经受高负载的考验。而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新 。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是, Nginx 是免费的并可以商业化,配置使用也比较简单。详细介绍nginx官网正

2022-07-08 09:16:17 2541

原创 非关系型数据库之Redis简介

Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库, 使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库。数据库的存储方式大体可分为两大类,基于磁盘存储和基于内存存储。磁盘存储的数据库,因为磁头机械运动以及系统调用等因素导致读写效率较低。Redis 基于内存来实现数据存取,相对于磁盘来说,其读写速度要高出好几个数量级。因此Redis一般用来

2022-07-05 22:32:15 288

原创 非关系型数据库之Mongodb简介

NoSQL:Not Only SQL ,本质也是一种数据库的技术,相对于传统数据库技术,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。优点:缺点:MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成,MongoDB文档类似于json对象,字段值可以包含其他文档,数组及文档数组。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非

2022-07-05 22:31:52 716

原创 Node.js基础总结

js 属于一种脚本性语言,然而脚本语言运行需要一个解析器来解析,对于我们原来写的 js 代码大部分都是运行在网页上,所以浏览器本身就担当了解析器的角色。而现在对于独立运行在服务器的 js 代码,node 就属于那个解析器。Node.js 是基于Chrome V8 引擎的JavaScript 运行环境,简单理解就是一个可以让JavaScript脱离浏览器,执行的平台,并对JavaScript功能进行了增强(文件系统,模块,包,操作系统API,网络通讯,数据库操作等)Node.js官网的描述:Node.js官

2022-07-03 21:05:49 1201

原创 Web服务器和应用服务器的区别与联系

WEB即超文本(hypertext)、超媒体(hypermedia)和超文本传输协议(HTTP),获取这些静态资源实际上是在请求服务器上的文件。这些文件都一直保存在服务器的磁盘上一个固定的文件路径,并生成一个对应的地址。HTML页面就是WEB的数据元素,处理这些数据元素的应用软件就叫WEB服务器,WEB服务器常与客户端打交道,它要处理的主要信息有:session、request、response、HTML、JS、CS等。应用服务器是为客户端提供对业务逻辑的访问这种服务器,根据客户端的请求会将数据转化为动态内

2022-07-03 20:53:27 4112

原创 万字长文总结MySQL关系型数据库

数据库的英文单词:data base,简称DB。数据库本质就是一个文件系统,它可以按照特定的格式把数据存储起来,可以方便对存储的数据进行增删改查操作。目前数据库总共分为两个大类:数据库服务器是一台安装了一个数据库管理系统(比如: MySQL)的主机,通常会开放一个远程连接的端口(例如MySQL的3306端口)来对外提供数据服务,通过数据库管理系统(MySQL)可以创建并管理管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。......

2022-07-03 20:48:27 1685

原创 前端Js框架Vue

Vue是和jQuery一样是一个前端框架,它的中心思想就是用数据驱动UI。在使用jQuery的时代,如果要改变某一个DOM元素的值,jQuery首先要获取到dom对象,然后对dom对象进行进行值的修改等操作; 而Vue.js 则是专注于 MVVM 模型的 ViewModel 层,Vue首先会把值和ViewModel对象进行绑定,然后修改ViewModel对象的值,Vue这个框架就会自动做好Dom的相关操作,这种dom元素跟随ViewModel对象值的变化而变化叫做单向数据绑定,如果ViewModel对象的值

2022-06-08 22:52:04 2796

原创 使用OpenCore引导黑苹果

笔者在17年写过一篇黑苹果安装教程:[黑苹果系统安装通用教程(Clover引导)](https://blog.csdn.net/unreliable_narrator/article/details/64438619),不过该文章用的是基于Clover引导的MacOs系统。目前随着黑苹果的另一款引导工具OpenCore不断成熟,使用OC是大势所趋。众多黑苹果驱动的作者已经停止对Clover的兼容支持,改向Opencore的兼容。OpenCore是类似于Clover的UEFI的引导器,OpenCore提供了详

2022-06-04 00:24:43 18382

原创 BIOS与UEFI之间的区别

一.BIOS🐒BIOS是什么BIOS(Basic Input Output System)译为基本输入输出系统。它是一组固化到计算机内主板上一个ROM芯片上的程序 ,保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,为计算机提供最低级的、最直接的硬件控制。和其它程序不同的是,BIOS是储存在BIOS芯片中的,而不是储存在磁盘中,因此它属于主板的一部分。大家有时就称呼它一个既不同于软件也不同于硬件的名字“Firmware”(固件)。一般而言,BIOS ROM芯片是主板上唯一贴有标签的

2022-05-27 14:05:08 5873 3

原创 Android数据库Room之二实体之间的关系

一.定义对象之间的关系由于 SQLite 是关系型数据库,因此您可以定义各个实体之间的关系。尽管大多数对象关系映射库都允许实体对象互相引用,但 Room 明确禁止这样做。如需了解此决策背后的技术原因,请参阅了解 Room 为何不允许对象引用。Room 的数据实体类跟数据库表是对应的,所以,有些表关系可以直接通过定义数据实体类之间的关系来实现,这样就可以无需编写 SQL 语句实现插入和查询过操作。🐼两种可能的方法在 Room 中,您可以通过两种方式定义和查询实体之间的关系:使用具有嵌入式对象的中间数据类

2022-05-25 09:26:25 1902 1

原创 Android数据库Room之一基础使用

一.Room简介Room是Google推出的数据库框架,是一个 ORM (Object Relational Mapping)对象关系映射数据库、其底层还是对SQLite的封装。 使用ORM可以让开发者更加关注业务逻辑,而不是SQL 语句。在JavaWeb领域也有类似的ORM 数据库框架Hibernate、MyBatis等等。1.Android平台数据库框架在 Android 中常见的数据库框架:Greendao Realm DBFlowLitePalJetpack-Room

2022-05-25 09:24:46 6190 2

原创 GitHubActions详解

一.GitHubAction简介🧅什么是Github Action ?GitHubActions是一个持续集成和持续交付的平台,它可以帮助你通过自动化的构建(包括编译、发布、自动化测试)来验证你的代码,从而尽快地发现集成错误。github于2019年11月后对该功能全面开放,现在所有的github用户可以直接使用该功能。GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行您的工作流程,或者您可以在自己的数据中心或云基础架构中托管自己的自托管运行器。在使用Github Action

2022-04-28 10:46:01 16455 2

原创 使用Python(PyRSS2Gen)生成RSS

一.Rss订阅源的本质要通过代码生成Rss订阅源,首先应该了解Rss订阅源到底是什么东西。1.分析Rss订阅源我们打开少数派官方提供给我们的Rss订阅源,保存网页可以看到Rss订阅源本质上就是一个储存在文件服务器里面的Xml文件。2.Rss订阅源的结构打开xml文件,结构如下:<?xml version="1.0" encoding="UTF-8"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc

2022-04-21 22:28:26 5727

原创 使用Huginn打造自动化信息处理中心

一.Huginn简介在北欧神话中,奥丁的肩膀上坐着两只乌鸦,一只名叫 Huginn,一只名叫 Muninn。这两只乌鸦告诉奥丁他们的所见所闻,毫无遗漏。奥丁在黎明时派出它们,它们飞遍全世界然后在晚餐之前回来汇报,因此,奥丁能知晓很多事情。在Huginn的项目主页上,作者对它有详细的介绍。我们同样可以通过Huginn创建不同的代理,通过这些代理发送HTTP请求获得相关数据,然后将获取到的数据进行处理,就可以在互联网上面收集到各类我们需要的信息了。通过Huginn我们可以比较方便的实现如下功能:监控你关心

2022-04-20 22:58:15 6211

原创 使用RssHub为网页生成RSS订阅源

一.RSSHub简介众所周知,网站提供 RSS 并不能为他的站点带来更多的流量,反而会减少主站的访客数。因此很多的网站没有提供Rss订阅源供大家使用。 RSSHub就是这样的一款神器,借助 RSSHub 可以方便地通过 RSS 订阅知乎、豆瓣、Facebook 等现代媒体社交平台。RSSHub RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。 RSSHub 借助于开源社区的力量快速发展中,聚集了众多 RSS 爱好者来为现代的网站构建 RSS 订

2022-04-15 16:47:53 36910

原创 使用Feed43为网页生成RSS订阅源

简介在我们使用Rss时候发现很多的网站并不支持Rss服务,如果自己使用Rsshub,Huginn等搭建订阅源,不单单需要懂一些编程和服务器部署的知识,还需要买服务器。如果只是轻度的使用那么完全可以试试FEED43,通过FEED43提供的免费服务可以为静态网页生成订阅源。步骤总览准备好需要解析的网站网址(必须是服务端渲染页面网站,也就是常说的静态网页)。注册好Feed43的账号,并登录。使用Feed43解析网页源码。分析网页源码,找到哪一动态部分内容是自己需要的。根据分析出来的自己需要获取的动

2022-04-15 08:32:32 9583

原创 自建RssHub本地服务

一.RSSHub简介RSSHub 是个很赞的项目,它聚集了众多 RSS 爱好者来为现代的网站构建 RSS 订阅源。众所周知,网站提供 RSS 并不能为他的站点带来更高的收入,反而会减少主站的访客数因此可以借助 RSSHub 可以方便地通过 RSS 订阅知乎、豆瓣、Facebook 等现代媒体社交平台。二.本地部署RSSHub的优势RSSHub 使用非常简单,但随着使用者增多,微博、知乎加大了反爬限制。RSSHub 的免费官方实例用户较多,许多路由因遭到了目标站点反爬虫措施的反制而无法使用。目前R

2022-04-13 09:58:08 12751

原创 使用Nvm对NodeJs进行版本管理

一.Nvm解决了什么问题在我们使用NodeJs的过程中,时常会出现版本兼容问题,例如某工程A需要高版本的NodeJs环境,某工程B需要低版本的NodeJs环境,但是我们的计算机上面只能同时配置一个NodeJs版本,这样就出现了一个问题:我们需要根据不同的情况切换不同的NodeJs版本环境。之前笔者是使用git方式切换不同的nodeJs版本分支来实现的这种需求的,但是有没有更好的方式实现这一功能呢?

2022-04-12 10:17:06 985

原创 Jetpack-Compose之四 页面跳转(导航)

导航实际上就是页面跳转,因为Compose中每一个@Composable注解标注的方法就可以成为一个视图,所以导航就是用来处理这些视图之间的跳转操作。 Navigation在设计上高度抽象,只负责导航逻辑不关心页面的具体实现,无论是Activity、Fragment甚至是一个已定义View都可以基于Navigation实现导航。当然,Composable也是可以的。

2022-01-17 17:29:06 13384 5

原创 Jetpack-Compose之三附带效应(副作用)

纯函数指的是函数与外界交换数据只能通过函数参数和函数返回值来进行;函数从函数外部接受的所有输入信息都通过参数传递到该函数内部;函数输出到函数外部的所有信息都通过返回值传递到该函数外部。纯函数的运行是不会对外界的环境产生任何的影响,给一个纯函数同样的参数,那么这个函数永远返回同样的值,调用一个纯函数,不会导致任何状态的变化,也就不会影响后来的该函数调用。

2022-01-13 17:33:56 2128 2

原创 Jetpack-Compose之二 状态管理

状态是什么?状态指的是Ui的形态,例如按钮控件的文字、颜色的状态等等,在软件编程中我们会用一个状态值去保存该状态。传统的Android视图层次结构中,界面是通过一个个的View, 例如:ImageView、TextView等搭建而成,然后通过findViewById找到对应的View的引用后,设置它的内部状态值,例如设置TextView的文本,当UI的状态值改变时,基于XML的UI框架会自动刷新UI来显示正确的状态。Compose 是声明式的 UI,在组合函数中这些状态值描述了这个UI组件的状态,所以想更改

2022-01-07 15:29:03 3582 2

原创 Jetpack-Compose之一基础使用

如果之前有了解或者使用果Flutter,应该会对命令式UI这种架构不陌生。目前申明式UI确实是很火包含Flutter,SwiftUI,JetpackCompose都使用了该种方式。2021年7月底,Google 正式发布了 Jetpack Compose 的 1.0 稳定版本,这说明Google认为Compose已经可以用于生产环境了。

2021-12-30 17:21:50 2125

原创 Kotlin封装一个DSL语法的DialogFragment

DSL(domain specific language),即领域专用语言:专门解决某一特定问题的计算机语言。由于它是以简洁的形式进行表达,整体上直观易懂,使得调用代码和读代码的成本都得以降低,即使是不懂编程语言的一般人都可以进行使用。比如大家比较熟悉的SQL语句和正则表达式。 所谓领域也就是限定语言是适用于一定范围的。可以看做是封装了一套东西, 用于特定的功能, 优势是复用性和可读性的增强。

2021-12-28 18:53:40 1820 1

原创 使用FFmpeg命令对音视频进行基础的编辑

FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为视频流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换。它提供了录制、转换以及流化音视频的完整解决方案。

2021-12-24 11:23:20 2066

原创 使用Fastlane编写Android自动打包脚本

Fastlane 是一款为 iOS 和 Android 开发者提供的自动化构建工具,它可以帮助开发者将 App 打包、签名、测试、发布、信息整理、提交 App Store 等工作完整的连接起来, 实现完全自动化的工作流。Fastlane本身没有一套特殊语法,使用的Ruby语言。Fastlane的插件工具叫做action,每一个action都对应一个具体的功能。

2021-12-23 18:56:07 2955

原创 Flutter与Android混编

各端分离方案是iOS、Android和Flutter分别作为三个独立项目存在,将Flutter工程的编译产物作为iOS工程和Android工程的依赖模块,原有工程的管理模式不变,对原生工程没有侵入性,无需额外配置工作。 这种方案需要单独创建Flutter项目,然后通过iOS(CocoaPods)和安卓的依赖管理工具将Flutter项目build出来的framework、资源包等放入Native工程以供使用。 这种方式可以将iOS、Android和Flutter项目放在一个目录下面作为一个项目来管理,也可以不

2021-12-22 18:29:31 2803

原创 Android依赖注入框架Hilt的使用

Hilt 是Google 最新的依赖注入框架,其基于Dagger研发。Hilt可以说是专门为Android 打造,提供了一种将Dagger依赖项注入到Android应用程序的标准方法,而且创建了一些标准的组件和作用域,这些组件会自动集成到Android应用程序的各个生命周期中,以简化开发者的上手难度。

2021-12-21 18:50:35 1673

原创 使用Appuim+Python脚本实现Android应用自动登录

一.引言众所周知在App应用开发时我们会有不同的服务器环境来进行开发调试,例如测试环境,预发布环境,正式服环境.由于环境众多所以在测试工程师反馈问题时总要不断的去登录不同的服务器环境进行验证和调试。流程如下:打开应用登录界面输入不同环境的账户密码登录验证通过这三部才能进入App中进行调试。这三部的过程的执行重复率非常高,作为程序与我们能不能通过程序简化人工的操作呢?笔者将在本文中通过分析和实践来实现这一功能。二.Appuim的安装和配置对于Android手机屏幕的自动化控制有很多种方案。

2021-12-07 11:26:18 6140

原创 Win11正式版(21H2)安装Android子系统

本教程的背景是Win11正式版本(21H2)暂未全面推送Android子系统的情况的尝鲜教程。一. Win11dev版本wsa在win11测试版本上面已经可以直接使用了,只设置区域为美国,设置->启动关闭windows功能->开启hyper-v和虚拟机平台,电脑重启后,去商店搜索Window Subsystem for Android即可使用。二. Win11正式版:1. 修改区域为美国设置->时间和语言->语言&区域->国家和地区->选择美国。.

2021-11-11 17:02:23 17719 3

原创 使用Getx框架简化Flutter开发

一. GetX的作用GetX 是 Flutter 上的一个轻量且强大的解决方案,包含了以下的功能.页面状态管理(跨页面交互)路由管理国际化、主题的适配全局BuildContext 无Context弹窗依赖注入二. GetX安装GetX1. 引入GetX依赖在pubspec.yaml文件中添加Getx依赖:get: ^4.x.x2. GetX入口配置各模块导包,均使用下面包即可import 'package:get/get.dart';只需要将MaterialApp改成G

2021-09-29 09:37:55 5237

空空如也

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

TA关注的人

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