局域网添加DNS服务器进行域名解析
一.背景在家庭局域网中,假如有若干个设备连接在同一台路由其中。路由器便和下属设备形成了一个小型局域网。 可以在局域网中我们可以通过设备的 ip 地址互相访问。 但是管理内部的局域网的机器过多,ip地址也变得越来越多,不想浪费精力在对ip的记忆上,而且使用IP远程登录非常容易搞混,为了解决这种问题, 比较简单的有两种方式。第一种方式是通过修改hosts文件,来完成域名和ip的映射,这种只能对一台机器生效,而且例如手机之类的不容易修改hosts的设备也比较麻烦,不过有些新的路由器或者是软路由可以在路由器层面修改hosts来达到适配所有设备的能力。另外一种解决方法是搭建一个局域网的DNS服务器,使用不同的域名指向不同的机器ip。 使用自建DNS服务器的好处远不止这一个,还有很多其他的好处。例如当IP地址发生变化时,只需要更改DNS服务器的设置即可。 二.DNS简介要搭建DNS服务器,首先需要了解一下什么是DNS。 什么是 DNS?DNS 是将域转换为其服务器的数字 IP...
Web服务器和应用服务器的区别与联系
Web服务器与应用服务器Web服务器简介什么是Web服务器WEB即超文本(hypertext)、超媒体(hypermedia)和超文本传输协议(HTTP),获取这些静态资源实际上是在请求服务器上的文件。这些文件都一直保存在服务器的磁盘上一个固定的文件路径,并生成一个对应的地址。HTML页面就是WEB的数据元素,处理这些数据元素的应用软件就叫WEB服务器,WEB服务器常与客户端打交道,它要处理的主要信息有:session、request、response、HTML、JS、CS等。 常用的Web服务器 Nginx Apache Jetty (也支持动态页面处理,但主要还是静态页面) IIS 应用服务器简介什么是应用服务器应用服务器是为客户端提供对业务逻辑的访问这种服务器,根据客户端的请求会将数据转化为动态内容,一般还需要数据库的支持,应用服务器的搭建很多时候依赖于应用程序的开发语言,各种编程语言生态下对应不同的软件, 比如使用Java语言开发的项目通常选择...
Android工程编码规范
一. AndroidStudio开发工具规范 使用最新的稳定版本. 统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包. 代码样式统一,比如,tab缩进4个空格,或者 tab size等如果没有特殊情况使用默认的配置即可。 每行字数每行字符数不得超过 160 字符,设置 Editor -> Code Style. 编辑完 .java、.kt、.xml 等文件后必须格式化. 二. 命名规范1. 包名包名全部小写,不允许出现中文、大写字母或者下划线。 2. 类名类名采用大驼峰命名法,用名词或名词词组命名,每个单词的首字母大写。尽量避免缩写,除非该缩写是众所周知的, 比如 HTML、URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。 类 描述 例如 Activity类 模块名 +Activity 闪屏页类SplashActivity Fragment类 模块名 +Fragment 主页类HomeFragment Service类 模块名...
Jetpack-Compose之三附带效应(副作用)
一.Compose组合函数的特点1.Compose组合函数执行顺序不定可组合函数并不是按顺序执行的,这些函数可以按任何顺序运行(Compose 可以选择识别出某些界面元素的优先级高于其他界面元素,因而首先绘制这些元素)。 123456@Composablefun Row() { StartScreen() MiddleScreen() EndScreen()} 对 StartScreen、MiddleScreen 和 EndScreen 这三个组合函数的调用不是按顺序进行的。 所以不能在Row中设置一个全局变量,让 StartScreen()修改这个变量的值,并让 MiddleScreen() 利用这个全局变量的值进行更改,每个组合函数都应该保持独立。 2.Compose可组合函数可以并行运行Compose 可以通过并行运行可组合函数来优化重组。这样Compose 就可以利用多个核心,并以较低的优先级运行可组合函数(不在屏幕上)。 这种优化意味着,可组合函数可能会在后台线程池中执行。如果某个可组合函数对 ViewModel 调用一个函数,则...
黑苹果引导软件之OpenCore
一.OpenCore简介笔者在17年写过一篇黑苹果安装教程:黑苹果系统安装通用教程(Clover引导),不过该文章用的是基于Clover引导的MacOs系统。目前随着黑苹果的另一款引导工具OpenCore不断成熟,使用OC是大势所趋。众多黑苹果驱动的作者已经停止对Clover的兼容支持,改向Opencore的兼容。OpenCore是类似于Clover的UEFI的引导器,OpenCore提供了详细的日志系统,帮助黑苹果排错;其次OpenCore以更先进的方法注入第三方Kext,不破坏系统的SIP;再次,OpenCore支持读取NVRAM等一系列特性,可以让黑苹果变得更“原生”,诸如选择启动器、Command Ctrl互换,原生开启Option键特性都可以实现。 二.OpenCore引导MacOS🦮第一步 准备工作 一个8G以上的U盘。 MacOS系统镜像包、Etcher(刻录工具)、DiskGenius(分区工具)、适合自己电脑的EFI驱动文件。 🐕第二步...
Jetpack-Compose之二状态管理
一.Compose状态管理绪论状态是什么?状态指的是Ui的形态,例如按钮控件的文字、颜色的状态等等,在软件编程中我们会用一个状态值去保存该状态。传统的Android视图层次结构中,界面是通过一个个的View, 例如:ImageView、TextView等搭建而成,然后通过findViewById找到对应的View的引用后,设置它的内部状态值,例如设置TextView的文本,当UI的状态值改变时,基于XML的UI框架会自动刷新UI来显示正确的状态。Compose 是声明式的 UI,在组合函数中这些状态值描述了这个UI组件的状态,所以想更改一个UI的状态,只能用新的状态值去重新调用该组件的可组合函数,状态值的更新就对应着重组(重绘)的发生(刷新该UI)。 也就是说Compose 主要是根据状态的改变进行重组的,实际上Compose的UI变化本质是:”状态(State) 驱动”,即控件UI的变化原因是控件UI的状态发生了变化,需要加入状态并对相关的状态进行管理。 对状态变化做出反应是 Compose 的核心。Compose 应用程序通过调用 Composable 函数将数据转换为...
Jetpack-Compose之一基础使用
一.命令式UI和申明式UI如果之前有了解或者使用果Flutter,应该会对命令式UI这种架构不陌生。目前申明式UI确实是很火包含Flutter,SwiftUI,JetpackCompose都使用了该种方式。2021年7月底,Google 正式发布了 Jetpack Compose 的 1.0 稳定版本,这说明Google认为Compose已经可以用于生产环境了。 1.命令式UI回想再传统的Android开发中,首先会在xml布局文件中写好控件,然后在Activity中通过findViewbyid找到该控件,然后通过命令给他设置各种属性,例如设置背景颜色,设置内边距,控件会根据我们所设置的属性 做UI的变化,至始至终我们都是通过改变同一个控件的属性,来获得不同的显示效果.这就是命令式UI. 123View...
Android依赖注入框架hilt使用
一.什么是HiltHilt 是Google 最新的依赖注入框架,其基于Dagger研发。Hilt可以说是专门为Android 打造,提供了一种将Dagger依赖项注入到Android应用程序的标准方法,而且创建了一些标准的组件和作用域,这些组件会自动集成到Android应用程序的各个生命周期中,以简化开发者的上手难度。 二. 引入Hilt1.AndroidStudio版本需要AndroidStudio4.0版本及以上以上 2.项目根目录build.gradle添加依赖1234567buildscript { ... dependencies { ... classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha' }} 3.在module下的build.gradle添加以下依赖项:1234567891011121314151617...apply plugin:...
Android存储之MediaStore的使用
Android系统内容提供者ContentProvider安卓系统会在每次开机之后扫描所有文件并分类整理存入数据库,这个数据库保存了手机上存储的所有文件的信息。该数据库文件存放在Android设备的/data/data/com.android.providers.media/databases或/data/data/com.android.providers.media.module/databases目录当中,该目录下有两个数据库文件分别是internal.db(内部存储数据库文件)和external.db(外部存储数据库文件), 这两个数据库文件中的数据表和表结构都大体相似,区别在于internal.db是用来存放内部存储中的文件信息的,而external.db是用来存储外部存储中的文件信息的。因此可以通过访问这两个数据库获取例如媒体文件(音频、视频、图片)等的文件信息, 而不必通过遍历媒体文件的方式来获取文件信息。但是在android设备中是禁止应用程序直接对这个数据进行直接操作的,而是将这个数据库的操作通过ContentProvider(内容提供者)将数据操作提供出来,...
Android存储之分区存储适配
一.Android存储分区介绍1.简介Android 存储分为内部存储(Internal storage)和外部存储(External storage)。有许多用户认为外部存储意味着SD存储卡或外部硬盘,这是完全错误的认识。 2.内部存储内部存储是用于存储Android系统本身和应用程序的存储区域,Android设备中的Android系统和应用程序都是存在该内部存储区,例如手机的/system/目录、/data/等目录。...