【笔记记录】2020-12-31

【安卓】

1.CoordinatorLayout:协调者布局主要协调子视图之间的联动、APPBarLayout。

2.MediaExtractor:作用是把音频和视频的数据进行分离。

3.自Android 3.1之后的版本,Google引入了USB Accessories的概念,并提供了相关的开发库与之通信。

4.[JVM] 主内存与工作内存:

主内存主要包括方法区和堆区,每个线程都有一个工作内存包括虚拟机栈、本地方法栈、程序计数器、寄存器、高速缓存。

5.[Kotlin] var:

1. var <标识符>:<类型> = <初始化值>
2. var <标识符>:<类型?> = <初始化值|null>

6.[Work] Worker:

1. work-runtime,其实就是管理一些要在后台工作的任务, 即使你的应用没启动也能保证任务能被执行。
2. Worker 是干活的主体,它只管轮到了它时要做的工作,不管其它的东西,在执行时可以获取任务参数。

7.[JVM] 运行时数据区

【区域】
1. 程序计数器
2. 虚拟机栈
3. 本地方法栈
4. 堆
5. 方法区

8.[SSL] 私钥:.key后缀文件通常用来存放一个公钥或者私钥(非对称加密的公钥或者私钥),并非X.509证书,编码格式一般都是PEM。

9.[Android] MediaCodec.BufferInfo:

// 创建BufferInfo,用于获取此次解码输出的信息
BufferInfo mBufferInfo = new MediaCodec.BufferInfo();
int outputBufferIndex = mMediaCodec.dequeueOutputBuffer(mBufferInfo, TIMES_OUT);

// 获取解码后的数据
ByteBuffer outputBuffer = null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    outputBuffer = outputBuffers[outputBufferIndex];
} else {
    outputBuffer = mMediaCodec.getOutputBuffer(outputBufferIndex);
}

if ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_CODEC_CONFIG) != 0) {
    MediaFormat format = mMediaCodec.getOutputFormat();
    format.setByteBuffer("csd-0", outputBuffer);
    mBufferInfo.size = 0;
}

if (mBufferInfo.size != 0) {
    // 如果API<=19,需要根据BufferInfo的offset偏移量调整ByteBuffer的位置,并且限定将要读取缓存区数据的长度,否则输出数据会混乱
    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
        outputBuffer.position(mBufferInfo.offset);
        outputBuffer.limit(mBufferInfo.offset + mBufferInfo.size);
    }
    
    byte[] encodedData = new byte[bufferInfo.size];
    outputBuffer.get(encodedData);
    mMuxer.writeSampleData(mTrackIndex, encodedData, bufferInfo);
    mediaCodecDecoder.releaseOutputBuffer(outputBufferIndex, false);
}

if ((bufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
    decoder.releaseOutputBuffer(outIndex, false);
}// 创建BufferInfo,用于获取此次解码输出的信息
BufferInfo mBufferInfo = new MediaCodec.BufferInfo();
int outputBufferIndex = mMediaCodec.dequeueOutputBuffer(mBufferInfo, TIMES_OUT);

// 获取解码后的数据
ByteBuffer outputBuffer = null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    outputBuffer = outputBuffers[outputBufferIndex];
} else {
    outputBuffer = mMediaCodec.getOutputBuffer(outputBufferIndex);
}

if ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_CODEC_CONFIG) != 0) {
    MediaFormat format = mMediaCodec.getOutputFormat();
    format.setByteBuffer("csd-0", outputBuffer);
    mBufferInfo.size = 0;
}

if (mBufferInfo.size != 0) {
    // 如果API<=19,需要根据BufferInfo的offset偏移量调整ByteBuffer的位置,并且限定将要读取缓存区数据的长度,否则输出数据会混乱
    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
        outputBuffer.position(mBufferInfo.offset);
        outputBuffer.limit(mBufferInfo.offset + mBufferInfo.size);
    }
    
    byte[] encodedData = new byte[bufferInfo.size];
    outputBuffer.get(encodedData);
    mMuxer.writeSampleData(mTrackIndex, encodedData, bufferInfo);
    mediaCodecDecoder.releaseOutputBuffer(outputBufferIndex, false);
}

if ((bufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
    decoder.releaseOutputBuffer(outIndex, false);
}

 

【科学】

1. [概率论] P(A∪B):韦恩图证明两个面积的交集。

2.[电学] 安培:1秒有6.24*10^18个电子流过导线横截面。

3.[三角学] 弧度制:弧度 = 弧长 / 半径

4.条件概率定义:P(E|F) = P(EF)/P(F)

5.磁场:磁性物质是因为内部运动电荷的整体形势的排列方向一致,磁能在空间上叠加(磁铁燃烧后,由于运动电荷的动能增加,运动电荷的排列变得不稳定,磁性消失)

 

【其他】

1.[CSS] 线性渐变图像:

The `linear-gradient()` CSS function creates an image consisting of a progressive transition between two or more colors along a straight line. Its result is an object of the `<gradient>` data type, which is a special kind of `<image>`.

2.[IOS] UIWindow:UIWindow是一种特殊的UIView,通常在一个应用中只会有一个UIWindow。

3.[Linux] 定时任务:crontab是一个服务,可以配置每到某个时间条件下执行某个shell命令。

4.[Dark] 字符:

Runes(字符)

在Dart中,字符是字符串的UTF-32编码点,因为Dart字符串是UTF-16代码单元的序列,所以在字符串中表示32位的Unicode值需要特殊的语法。

5.使用伪元素实现美化半个字符,左边一半红色,右边一半黑色。

.halfStyle {
    position:relative;
    display:inline-block;
    font-size:80px; /*  任何宽度都可以 */
    color: black; /* 任何颜色,或透明 */
    overflow:hidden;
    white-space: pre; /* 处理空格 */
}
.halfStyle:before {
    display:block;
    z-index:1;
    position:absolute;
    top:0;
    left:0;
    width: 50%;
    content: attr(data-content); /* 伪元素的动态获取内容 */
    overflow:hidden;
    color: #f00;
}


<p>单个字符</p>
<span class="halfStyle" data-content="风">风</span>
<span class="halfStyle" data-content="流">流</span>
<span class="halfStyle" data-content="倜">倜</span>
<span class="halfStyle" data-content="傥">傥</span>

<hr/>
<p>用脚本自动美化:</p>

<span class="textToHalfStyle lazy ">恋爱容易婚姻不易,且行且珍惜。</span>

 

上一篇:Android 音视频配音之音频提取、截断、混音、合并、合成(一)——从视频中提取音频文件


下一篇:Android硬编码知识点总结