概述
近日在一边复习一边摸鱼玩RSS,十几年前的老东西竟然该死的有魅力。
(再不复习就复不完了啊)
话说这RSSHub真是个好东西,可以在Vercel免费构建运行,但是你看人家萌歪 https://moeyy.cn/rsshub/
自建的怎么就有和人家RSSHub官方一样的文档呢?所以我将在文章中记录在Vercel上同时部署RSSHub本体及其使用Vuepress实现的docs页面。
近日在一边复习一边摸鱼玩RSS,十几年前的老东西竟然该死的有魅力。
(再不复习就复不完了啊)
话说这RSSHub真是个好东西,可以在Vercel免费构建运行,但是你看人家萌歪 https://moeyy.cn/rsshub/
自建的怎么就有和人家RSSHub官方一样的文档呢?所以我将在文章中记录在Vercel上同时部署RSSHub本体及其使用Vuepress实现的docs页面。
很久以前喜欢捣鼓电脑啊外设什么的,却也没有搞出什么名堂。经常见到标题里的一些术语,却也只是一知半解。最近在复习操作系统,对以往的瞎捣鼓小有感触和总结。故写下此文。
初中的时候开始认识磁盘(硬盘),还是因为在教室用Ghost映像给电脑装系统,磁盘引导记录给整坏了,从家里拆了一块过去顶用(笑死)。
磁盘是一中基于磁介质的外部存储装置,我们经常叫机械硬盘,就是因为里面是用机械装置驱动、读写的(马达马达马达马哒哒哒)。
协程是一种不同于进程
和线程
的存在,其本质是一种函数,同一线程中的多个协程是串行执行的,但为了理解仍然需要三者一起对比。
进程、线程、协程三者的上下文切换对比:
进程 | 线程 | 协程 | |
---|---|---|---|
切换者 | 操作系统 | 操作系统 | 用户(编程者/应用程序) |
切换时机 | 根据操作系统自己的切换策略,用户不感知 | 根据操作系统自己的切换策略,用户不感知 | 用户自己(的程序)决定 |
切换内容 | 页全局目录&内核栈&硬件上下文 | 内核栈&硬件上下文 | 硬件上下文 |
切换内容的保存 | 保存于内核栈中 | 保存于内核栈中 | 保存于用户自己的变量(用户栈或者堆) |
切换过程 | 用户态 - 内核态 - 用户态 | 用户态 - 内核态 - 用户态 | 用户态(没有陷入内核态) |
切换效率 | 低 | 中 | 高 |
问题背景:
首先,在基于动态规划的灰度图像压缩算法中,压缩前灰度值序列的每个值原本以8bit,即1byte进行存储,压缩后,灰度值序列分为n个段,每个段中的每个元素都不一定以8bit存储,具体存储位数存放在一个大小为n的byte数组中。我们称这为不定长存储。
其次,我们知道在计算机中一般为按字节编址和存储,在Python、C/C++等编程语言中主要提供的读写的最小单位也是字节,而不是比特。但要实现灰度值序列的不定长存储,按比特读写是更方便的。
解决问题:现有一个byte值序列data[data_size],和另外一个byte值序列B[data_size]。其中第i个元素B[i],表示data[i]将以B[i]个bit存储。例如B[i]=3表示data[i]希望以3个bit存储。
输出结果: