Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

如何计算迎角的导数

发表于 2020-06-29 | 更新于 2020-06-30

在Matlab Simulink中使用Digital DATCOM Forces and Moments组件时,需要输入迎角的导数$d\alpha/dt$,可参考What is the time derivative of the angle of attack?。

迎角定义

在机体坐标系下,迎角和侧滑角如图1所示。

迎角和侧滑角

图1 迎角和侧滑角

于是,迎角定义为:

$$\alpha = \arctan \left(\frac{w}{u}\right)$$

其中速度分量$u$和$w$是随时间变化的函数。于是迎角的导数为:

$$\frac{d\alpha}{dt} = \frac{1}{1+\frac{w^2}{u^2}} \left(\frac{w}{u}\right)’= \frac{w’u - wu’}{u^2+w^2}$$

参考链接

  1. What is the time derivative of the angle of attack?,by aviation.

分布式哈希表DHT和P2P技术

发表于 2020-06-24

一篇介绍DHT和P2P技术的文章,浅显易懂,值得收藏。

分布式哈希表 (DHT) 和 P2P 技术

参考链接

  1. 分布式哈希表 (DHT) 和 P2P 技术,by Luyu Huang.

如何培养领导力

发表于 2020-06-19 | 更新于 2023-12-24

俗话说,一个人走得快,一群人走得远。作为一个团队的领导,拥有高超的领导力,是团队走向成功的关键。那么如何培养提高自己的领导力呢?美国一个创业者给出了一个方法。按照下面的四个阶段,就能让自己成为一个优秀的领导者。

第一阶段:熟悉自己的业务,知道问题在哪里,怎样可以解决。

领导者是给大家指方向的,你必须先知道要走哪个方向,才能带领别人,这是领导力的基础。

第二阶段:培养说服能力,能说服他人,问题可以按照你说的方式解决。

领导力的表现是,他人愿意服从你。这不能都靠制度压服,而要让他人真心觉得你是对的。如果你可以让他人相信你,你就可以领导。

第三阶段:激发他人的热情,让他们产生解决问题的热情。

说服他人的更高境界,是让他们真正投身进来,自觉发挥自己的潜力,全力以赴解决需要解决的问题。好的领导和差的领导,区别就在于能否激励下级,让每个人都知道自己的职责,努力工作。

第四阶段:你培养其他人的领导能力。

如果你离开,团队也能正常运作下去,说明一切已经制度化了,你的领导已经成功了。这时,你可以让其他人接管团队,自己去实现下一个目标。

参考链接

  1. The Culture of Leadership,by Ben Mappen.
  2. 科技爱好者周刊(第 112 期):如何培养领导力,by ruanyifeng.

CSS技巧记录总结

发表于 2020-06-08 | 更新于 2023-07-28

层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 或 XML(包括如 SVG、MathML、XHTML 之类的 XML 分支语言)文档的呈现。CSS 描述了在屏幕、纸质、音频等其它媒体上的元素应该如何被渲染的问题。下面记录一下CSS的“奇技淫巧”。

使用伪元素创建向右箭头

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.targetDiv::after{
content: " ";
display: inline-block;
height: 8px;
width: 8px;
border-width: 2px 2px 0 0;
border-color: #b2b2b2;
border-style: solid;
transform: matrix(.71,.71,-.71,.71,0,0);
position: relative;
top: -2px;
position: absolute;
top: 50%;
margin-top: -5px;
left:90%;
right: 0;
}

CSS3 框大小

CSS3 box-sizing 属性可以设置 width 和 height 属性中包含了 padding(内边距) 和 border(边框)。

默认情况下,元素的宽度与高度计算方式如下:

width(宽) + padding(内边距) + border(边框) = 元素实际宽度

height(高) + padding(内边距) + border(边框) = 元素实际高度

但是,如果在元素上设置了CSS3 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也将包含在 width 和 height 中。

CSS writing-mode 文字竖排

writing-mode 属性定义了文本在水平或垂直方向上如何排布。

语法格式如下:

1
writing-mode: horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr
  • horizontal-tb:水平方向自上而下的书写方式。即 left-right-top-bottom
  • vertical-rl:垂直方向自右而左的书写方式。即 top-bottom-right-left
  • vertical-lr:垂直方向内内容从上到下,水平方向从左到右
  • sideways-rl:内容垂直方向从上到下排列
  • sideways-lr:内容垂直方向从下到上排列

CSS 箭头和三角形

CSS画箭头和三角形都是利用div标签的边框属性,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 三角形
<div class="box"></div>
// css代码
.box {
width: 0;
height: 0;
border: 100px solid red;
border-color: red transparent transparent transparent;
}

// 箭头
<div class="box"></div>
// css代码
.box {
margin-top: 50px;
width: 100px;
height: 100px;
border-top: 10px solid red;
border-right: 10px solid red;
transform: rotate(45deg);
}

height:100%不生效问题

浏览器按照从上到下,从外到内的顺序渲染DOM内容。因此当父元素没有设置高度值或者设为绝对定位,则子元素的height:100%不会不生效。

div的高度是由什么决定?是由它文档流中元素的高度的总和。

什么是文档流(Normal Flow):指的是元素排版布局过程中,内联元素会默认自动从左往右,块级元素从上往下的流式排列方式。并最终窗体自上而下分成一行行,并在每行中从左至右的顺序排放元素。

脱离文档流(常见):

  • float:left;
  • position: absolute;
  • position:fixed;

单行缩略..以及多行缩略

html单行缩略方法:

1
2
3
4
5
.oneline {
white-space: nowrap; //强制文本在一行内输出
overflow: hidden; //隐藏溢出部分
text-overflow: ellipsis; //对溢出部分加上...
}

CSS尺寸单位 % px em rem

在CSS中,尺寸单位分为两类:相对长度单位和绝对长度单位。相对长度单位按照不同的参考元素,又可以分为字体相对单位和视窗相对单位。字体相对单位有:em、ex、ch、rem;视窗相对单位有:vw、vh、vmin、vmax几种。绝对长度单位则是固定尺寸,它们采用的是物理度量单位:cm、mm、in、px、pt以及pc。但在实际应用中,我们使用最广泛的则是em、rem、px以及百分比(%)来度量页面元素的尺寸。

  • px:为像素单位。它是显示屏上显示的每一个小点,为显示的最小单位。它是一个绝对尺寸单位,是不能变动的;
  • em:它是描述相对于应用在当前元素的字体尺寸,所以它也是相对长度单位,可以变动。一般浏览器字体大小默认为16px,则2em == 32px;
  • rem:它是描述相对于当前根元素字体尺寸,除了描述对象与em不同其余都和em一样。
  • %: 百分比,它是一个更纯粹的相对长度单位,可以变动。它描述的是相对于父元素的百分比值。如50%,则为父元素的一半。

CSS使网站黑白灰效果的代码

使用如下CSS即可:

1
2
3
4
5
6
7
8
html {
filter: grayscale(100%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
-webkit-filter: grayscale(1);
}

代码释义:filter 是滤镜的意思,filter:gray 的意思就是说给页面加上一个灰度的滤镜,所以 html 里面的所有内容都会变成黑白的了。不过这个滤镜对于 Chrome 和 Safari 浏览器是无效的,所以下面会有一行 -webkit-filter: grayscale(100%); 这个样式是专属于使用 webkit 内核的浏览器的,意思和 filter: gray; 差不多,只是写法不同罢了。

CSS打印时隐藏输入框占位符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@media print {
::-webkit-input-placeholder { /* WebKit browsers */
color: transparent;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: transparent;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: transparent;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
color: transparent;
}
}

CSS float属性

CSS 的 Float(浮动)使元素脱离文档流,按照指定的方向(左或右发生移动),直到它的外边缘碰到包含框或另一个浮动框的边框为止。

文档流是是文档中可显示对象在排列时所占用的位置/空间,而脱离文档流就是在页面中不占位置了。

当元素设置float浮动后,该元素就会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素,浮动元素会造成父元素高度塌陷。

清除浮动的影响的方法有:

  • 设置父布局的高度

设置父标签合适的高度,前提必须确定子布局的高度,来计算父布局的合适高度,包裹住子布局。

  • 受影响的元素加clear属性

给受影响的div加clear,清除浮动的影响

  • overflow清除浮动

父级标签的样式里面加: overflow:hidden;

  • 空div法

在最后一个浮动的盒子的后面,新添加一个标签。然后设置clear清除浮动。

  • 伪对象法

为父标签添加伪类After,设置空的内容,并且使用clear:both;

CSS width属性

css的三大特性分别是 继承性,层叠性,和优先级。

css的继承性指的被包在内部的标签拥有外部标签的样式性,子元素可以继承父元素的属性。但也不是所有的css属性都有继承性的。

  • 只有块元素才可以默认“继承”其父元素的width.
  • 浮动元素和定位元素也是不默认(不自动)“继承”其父元素宽度的。

参考链接

  1. CSS(层叠样式表),by mozilla.
  2. CSS3 框大小,by runoob.com.
  3. 不让padding影响元素的宽度,by DecemberCafe.
  4. 改变CSS世界纵横规则的writing-mode属性,by 张鑫旭.
  5. 重新认识Pixel、DPI / PPI 以及像素密度,by Leon.
  6. CSS画三角形,箭头,by 麦西的西.
  7. 如何用 CSS 画三角形和箭头,by 前端技术.
  8. 深入理解CSS系列(二):为什么height:100%不生效?,by ChessZhang.
  9. height:100%失效解决办法,by 当然我没扯淡.
  10. css之单行缩略..以及多行缩略,by 秋天的故事.
  11. CSS尺寸单位 % px em rem 详解,by HDWK.
  12. 如何修改placeholder样式,by 风火星辰.
  13. 一行 CSS 代码实现整个网站网页变黑白灰的效果,by 老唐.
  14. CSS hide placeholder on print [duplicate],by stackoverflow.
  15. 深入理解float浮动属性,by 知乎用户1sIGTn.
  16. css的继承之width属性(容易忽略),by 秋天的鱼.

关于疾病的思考

发表于 2020-06-05

世界上绝大多数人不会因努力工作而致富,实现个人财务自由,但是却会因一场大病而使整个家庭陷入贫困。因此,保持健康的身体,远离疾病也是一种投资,虽不会因此致富,但却能提高我们的生活质量,减少看病支出,间接实现财富的增值。那么如何保持身体健康,远离疾病呢?

人会生病,主要受到三个因素的影响:

  • 先天性因素,即从娘胎里带出来的疾病。
  • 接触性因素,分为环境因素和饮食因素。环境因素即人处在糟糕的环境中导致疾病。饮食因素即人摄入不健康的食物导致疾病。
  • 生活性因素。人的身体像机器一样,需要爱护和保养,不正常的生活作息规律将导致疾病。

先天性因素导致的疾病是无法避免的,接触性因素中的环境因素可以很好的避免,大不了换个环境,但接触性因素中的饮食因素和生活性因素就需要人的毅力去克服。保持良好的生活作息习惯和遵循健康的饮食习惯将是我们对抗疾病的主战场。

参考链接

  1. 如何致富不靠运气,by jackhuang.

Matlab学习笔记之基本知识

发表于 2020-05-24 | 更新于 2023-12-13

本文梳理记录Matlab的基本知识,为Simulink仿真打下基础。

矩阵和数组

矩阵和数组是 MATLAB® 中信息和数据的基本表示形式。

数组元素选取

  • 应用单个条件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
rng default
A = randi(15,5)

A = 5×5

13 2 3 3 10
14 5 15 7 1
2 9 15 14 13
14 15 8 12 15
10 15 13 15 11

B = A < 9

B = 5x5 logical array

0 1 1 1 0
0 1 0 1 1
1 0 0 0 0
0 0 1 0 0
0 0 0 0 0

A(B)

ans = 8×1

2
2
5
3
8
3
7
1
  • 应用多个条件
1
2
3
4
5
6
7
8
9
A(A<9 & A>2)

ans = 5×1

5
3
8
3
7
  • 替换符合条件的值
1
2
3
4
5
6
7
8
9
A(A>10) = 10

A = 5×5

10 2 3 3 10
10 5 10 7 1
2 9 10 10 10
10 10 8 10 10
10 10 10 10 10

删除数组元素

1
2
A = [1 2 3 4 5];
A(3) = []; % 删除第三个元素

这样,数组 A 中的第三个元素就被删除了,它的值从 3 变成了 4。注意,这个操作会改变原始数组 A 的大小和内容,因此需要谨慎使用。

添加数组元素

1
2
3
4
5
6
7
# 方法一
A=[A;2]

# 方法二
A=[];
A(1)=2;
A(2)=3;

数据类型

  • 数值类型

MATLAB® 中的数值类包括有符号和无符号整数、单精度和双精度浮点数。默认情况下,MATLAB 以双精度浮点形式存储所有数值。

  • 字符和字符串

字符数组和字符串数组用于存储 MATLAB® 中的文本数据。

字符串拼接是常用操作,通常有三种方法,请参考:

  • matlab 字符串拼接的3个方式:[]、strcat、sprintf

  • 日期时间

日期时间数据类型 datetime、duration 和 calendarDuration 支持高效的日期时间计算、比较以及格式化显示方式。

使用duration时要注意跨 24:00:00 的问题。

日期转字符串主要使用datestr函数:

1
2
t = [datetime('now');datetime('tomorrow')]
DateString = datestr(t)
  • 分类数组

categorical 是用于存储具有以下特征的数据的数据类型:此类数据值来自离散分类有限集合。

  • 表

table 是一种适用于以下数据的数据类型:即以列的形式存储在文本文件或电子表格中的列向数据或者表格数据。表由若干行向变量和若干列向变量组成。表格中的每个变量可以具有不同的数据类型和大小,但有一个限制条件是每个变量的行数必须相同。

  • 时间表

timetable 是一种特定类型的表,其中每一行关联一个时间。与 table 一样,timetable 数据类型可以存储具有相同行数的列向数据变量。所有表函数都使用时间表。此外,时间表提供了特定于时间的函数,可对一个或多个时间表进行对齐、合并,以及执行计算。

  • 结构体

结构体数组是使用名为字段的数据容器将相关数据组合在一起的数据类型。每个字段都可以包含任意类型的数据。使用 structName.fieldName 格式的圆点表示法来访问结构体中的数据。

  • 元胞数组

元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。

  • 函数句柄

函数句柄是一种表示函数的 MATLAB® 数据类型。函数句柄的典型用法是将函数传递给另一个函数。例如,您可以将函数句柄用作基于某个值范围计算数学表达式的函数的输入参数。

函数句柄可以表示命名函数或匿名函数。要创建函数句柄,请使用 @ 运算符。

  • 字典

字典是一种将每个键与对应的值相关联的数据结构体。键和值可以采用任何数据类型,为数据访问提供优于数组索引的灵活性,并能提高性能。

  • 时间序列

时间序列表示动态规模或过程的时间演化。它们用于识别、建模和预测在离散时间间隔内采样的数据中的模式和行为。

对于此类型的数据,推荐使用时间表而非 timeseries 对象。时间表可以存储各种类型的时间戳数据,并具有广泛的支持函数来对齐、组合和执行计算。

  • 数据类型标识

MATLAB® 有许多函数可识别变量的数据类型或确定变量是否具有特定的数据类型。当调用或编写的代码依赖于具有特定数据类型的变量时,应使用这些函数。

  • 数据类型转换

MATLAB® 有许多函数可将值从一种数据类型转换为另一种数据类型,以用于不同的上下文。

Matlab App

Matlab App的设计开发请参考:

  • 使用 App 设计工具创建并运行简单 App

Matlab App的打包请参考:

  • MATLAB App Designer如何打包EXE安装程序

Matlab函数设计

基本设计

函数的输入输出参数应该有明确的含义,最好通过参数名称即可识别。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function y = square(x)
%
% calculate the square of the given number 'x'
%
% Arguments:
%
% x (input) value to be squared
%
% y (output) the result of the square
%

y = x*x;

% end of square function

输入验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function a = findArea(width,varargin)
defaultHeight = 1;
defaultUnits = 'inches';
defaultShape = 'rectangle';
expectedShapes = {'square','rectangle','parallelogram'};

p = inputParser;
validScalarPosNum = @(x) isnumeric(x) && isscalar(x) && (x > 0);
addRequired(p,'width',validScalarPosNum);
addOptional(p,'height',defaultHeight,validScalarPosNum);
addParameter(p,'units',defaultUnits,@isstring);
addParameter(p,'shape',defaultShape,...
@(x) any(validatestring(x,expectedShapes)));
parse(p,width,varargin{:});

a = p.Results.width*p.Results.height;
end
1
2
3
4
a = findArea(7);
a = findArea(7,3);
a = findArea(13,'shape','square');
a = findArea(13,'units',"miles",'shape','square');

参考链接

  1. 【Matlab学习笔记】(六)基本数据结构(矩阵定义方法),by 末树之墨.
  2. MATLAB中是否有“队列”?,by tencent.
  3. containers.Map, by mathworks.
  4. Matlab的memory模块消除代数环,by ilovematlab.
  5. Parameterize a Referenced Model Programmatically,by mathwork.
  6. 使用 App 设计工具创建并运行简单 App,by mathworks.
  7. MATLAB App Designer如何打包EXE安装程序,by 阿Q在江湖.
  8. MATLAB 数据类型,by mathwork.
  9. matlab 字符串拼接的3个方式:[]、strcat、sprintf,by qing101hua.
  10. 查找符合条件的数组元素,by mathworks.

如何致富不靠运气

发表于 2020-05-23

美国风险投资家 Naval Ravikant 有一个很有名的长推特,一共40条,题目叫做《如何致富,不靠运气》,谈了他的商业观。

现摘抄一些令人振聋发聩的观点:

  • 去寻求财富,而非金钱或地位。财富就是你拥有资产,而资产在你睡觉的时候都还在为你赚钱;金钱是我们转换时间和财富的工具;身份是你在社会等级体系里所处的位置。

  • 你不会通过出租自己的时间而变得富有。你必须拥有产权,也就是生意的一部分,以此才能赢得个人财务自由。

  • 在选择商业合作伙伴的时候,选择那些高智商、精力旺盛的家伙,但在这一切之上,他应该是个正直诚实的人。

  • 不要和愤世嫉俗者和悲观主义者合作,因为他们会任由坏事发生,以此证明他们的负面看法是正确的。

  • 学会如何销售,学会如何创建。如果你同时能做到这两件事,你的成功将无可阻挡。

  • 独到知识是那种不可以通过培训而获得的知识。这是因为,如果这种知识可以经由培训而得,那么其他人同样也可以,并且以此取代你。

  • 财富增长需要使用杠杆。商业杠杆有三个来源:1、资本;2、人力;3、复制起来边际成本为零的产品(如:代码和媒体)。

  • 资本和劳动力是需要征得许可才能使用的杠杆。每个人都在追逐资本,但总得有个什么人给你才行;每个人都想要领导其它人,但总得有什么人愿意跟着你才行。

  • 代码和媒体是无需要许可即可使用的杠杆。它们是新贵人群背后的杠杆,你可以通过自己创建的软件和媒体,在睡觉时仍然为你干活。

参考链接

  1. 和菜头翻译 如何不靠运气致富,by 和菜头.

二维码原理及生成

发表于 2020-05-09

参考链接

  1. 二维码的生成细节和原理,by 陈皓.
  2. 微信小程序中生成二维码工具:weapp.qrcode.js,by yingye.

自定义Win7原版镜像安装光盘

发表于 2020-05-06 | 更新于 2025-01-03

因为Win10的安全问题和Win7用户习惯问题,新电脑要求装Win7系统。但是Win7系统中没有自带USB3.0驱动和固态硬盘nvme驱动,导致安装或启动Win7时USB3.0的鼠标和键盘无法识别,无法操纵。经过研究,决定在Win7原版镜像基础上,注入USB3.0和nvme驱动。

所需工具

  • DISM++

Dism++是一个Dism的GUI版,但是并不依赖Dism(Deployment Image Servicing and Management),直接基于更底层的CBS(Component Based Servicing Reference)。

Dism是一个命令行工具,可用于服务和准备Windows映像,包括用于Windows PE、Windows恢复环境(Windows RE)和Windows安装程序的映像。

  • easybcd

EasyBCD是由NeoSmart Technologies开发的程序,用于配置和调整启动配置数据,该启动数据库最初是在Windows Vista中引入的,并在以后的所有Windows版本中使用。EasyBCD可用于为可同时安装某些版本的Windows,Linux,BSD和Mac OS X的计算机设置多重启动环境。例如删除OneKey Ghost启动项。

  • UltraISO

UltraISO 是一个运行在Microsoft Windows平台上的用来创建、修改和转换ISO文件的软件。自从2002年4月20日UltraISO首次发布以来,它的开发公司EZB Systems就把它定义为一个共享软件。当前EZB Systems域名的注册地址在中国深圳。

UltraISO用于替换Windows启动镜像中的boot.wim和install.wim。

注入原理

Windows7原版镜像中有两个重要文件:install.wim和boot.wim。boot.wim本质时WinPe,用于安装Windows7时的启动,install.wim镜像文件用于Windows7安装后的启动。使用工具Dism++在boot.wim和install.wim中注入USB3.0和nvme驱动,可以确保Windows7系统在安装和启动过程中识别USB3.0的键盘和鼠标,以及固态硬盘,从而保证Windows7的顺序安装和启动。

封装步骤

当前很多笔记本已不再支持Win7操纵系统,强行在新机器上安装Win7会出现很多问题。通过验证,总结了如下使用Win7封装步骤:

  1. 制作WeiPE启动盘。WeiPE启动盘使用Win8PE,在新机器上能运行,同时也支持光盘启动。当使用Win7安装盘在新机器上安装操作系统时,如果出现USB3.0鼠标键盘无响应,可尝试使用WeiPE进入Win8PE,然后在Win8PE安装Win7操作系统到新机器上,同时在使用Dism++注入USB3.0和nvme驱动到Win7操作系统中。
  2. 封装Win7系统盘,主要处理boot.wim和install.wim两个文件。boot.wim主要用于自启动安装Win7操作系统,应在其中注入usb3.0和nvme驱动,防止出现安装时无法识别USB3.0的键盘和鼠标,以及固态硬盘的情况。install.wim是Win7的主要文件,使用Dism++在其中注入系统更新和常用软件。
  3. 下载EasyDrv驱动安装包,用于给机器安装相应驱动。

通过上述三张光盘,相信安装Windows7操作系统不再是麻烦。

相关概念

  • WinPE

一种迷你系统,通常体积比较小,只有300MB左右。用于安装系统或者修复系统问题。

  • WinRE

跟WinPE几乎一样,只是WinRE更加侧重于系统修复,并且Vista以后系统自带WinRE,因此我们可以在WinRE做原本在WinPE里做的事情。

  • 映像文件(Image File)

一种文件载体,可以保存系统映像。在Dism++中,映像文件有WIM、SWM、ESD以及ISO。

  • UEFI

统一可扩展固件接口(英语:Unified Extensible Firmware Interface,缩写UEFI)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。可扩展固件接口负责加电自检、联系操作系统以及提供连接操作系统与硬件的接口。

  • BIOS

BIOS是Basic Input/Output System的缩写,中文:基本输入输出系统,亦称为ROM BIOS、System BIOS、PC BIOS,是在通电引导阶段运行硬件初始化,以及为操作系统提供运行时服务的固件。BIOS最早随着CP/M操作系统的推出在1975年出现。BIOS预安装在个人电脑的主板上,是个人电脑启动时加载的第一个软件。

现在,BIOS的作用是初始化和测试硬件组件,以及从大容量存储设备(如硬盘)加载引导程序,并由引导程序加载操作系统。BIOS还为DOS操作系统提供键盘、显示及其他I/O设备的硬件抽象层。

许多BIOS程序都只能在特定电脑型号或特定主板型号上运行。早年,BIOS存储于ROM芯片上;现在的BIOS多存储于闪存芯片上,这方便了BIOS的更新。

UEFI是旧式BIOS的后继者。

参考链接

  1. win7原版镜像注入USB3.0和nvme驱动,by 家麟.
  2. 连这都知道,足以证明你是windows系统安装的老司机了,by IT教主.
  3. UEFI与Legacy+UEFI的区别有多大,不弄清楚要吃大亏!,by 快启动.
  4. BIOS,by wikipedia.
  5. Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理,by 毛毛虫的爹.
  6. Wpeinit and Startnet.cmd: Using WinPE Startup Scripts,by microsoft.
  7. WIN7进阶篇,如何制作封装USB3.0,NVME驱动的WIN7镜像,by Dior.
  8. Win7安装驱动提示“无法验驱动程序数字签名”怎么办?,by 左边右转第二排的张大爷.

微信小程序开发笔记

发表于 2020-05-03 | 更新于 2020-06-07

基本概念

显示相关

  • dip

设备独立像素(density-independent pixel, dip)也叫逻辑分辨率,是一种可以被程序所控制的虚拟像素,在Web开发中对应CSS像素。

  • pp

物理像素(physical pixel, PP)也叫设备像素,由设备的屏幕决定,其实就是屏幕中控制显示的最小单位。例如,华为荣耀V20的屏幕显示分辨率2310*1080即为物理像素。

  • dpr

设备像素比(device pixel ratio,dpr)计算公式如下:

$$dpr=物理像素/设备独立像素$$

这条公式成立的前提是,缩放比Scale为1,原因下面讲到缩放的时候就会知道。根据这种关系,如果设备像素大于设备独立像素(DPR大于1的设备,我们常说的高清屏或者视网膜Retina屏),就会出现一个设备独立像素对应多个设备像素的情况。

在JavaScript中,可以通过window.devicePixelRatio获取到当前设备的dpr,但遗憾的是并不是所有的都支持。

通过访问mydevice,可获得各类显示屏的dpr、dpi等参数信息。 例如,通过访问该网站可知华为荣耀V20的dpr为3。

  • rpx

微信小程序对于rem的一种应用规定,官方规定屏幕宽度为20rem,规定屏幕宽为750rpx,因此微信中1rem=750/20rpx,iphone6下,1px=1rpx=0.5pt,使用rpx作为单位,微信小程序会自动在不同的分辨率下进行转换,而使用px为单位不会转换,iphone6p下1px=0.6rpx;

  • rem

在移动端做适配通常用rem作为单位,rem是根据html的fontsize去动态计算实际px;

  • pt

pt是逻辑分辨率,pt的大小和屏幕尺寸有关系,简单可以理解为长度和视觉单位;1个pt可以有1个px,也可以有2个,3个或更多的px,但人的视网膜极限为2倍@2x,增加再多也不会让屏幕看起来更加好了,比如iphone6,2个px构成一个pt,ip6以物理像素750*1334这视觉稿进行设计;

自定义组件

参考链接

  1. px、rpx、rem、pt、dpr学习笔记,by puxiaotaoc.
  2. 不要再问我移动适配的问题了,by 写Bug.
  3. 微信小程序日期时间选择器以及组件封装,by 大专栏.
  4. 微信小程序template模板与component组件的区别及使用方法,by 小破孩呦.
  5. 小程序app.js中onLaunch和主页的onLoad方法问题,by Feebas.
  6. 微信小程序分享参数传递(微信小程序获取分享path参数),by longlongValue.
  7. 微信小程序(四):通过list列表跳转详情页,by 扎哈的信徒.
  8. 2.2 WXML 模板,by 微信开放社区.
  9. 微信小程序-表单验证(WxValidate使用),by chibimarukochan.
  10. JS数组的深浅拷贝,by 蜗牛-.
  11. js正则校验数字和字母字符串,by hacker_LeeFei.
  12. 微信小程序onLaunch异步,首页 onLoad 先执行 ?,by juejing.
  13. 解决微信小程序 app onLaunch异步请求,在没有请求执行完就加载首页了的问题,by admin.
  14. 微信小程序canvas尺寸设置,by 楠倏之语.
  15. WeUI组件库快速上手,by weixin.
上一页1…272829…53下一页

Jack Huang

523 日志
67 标签
© 2025 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse