ARTS-week50
Algorithms
String Compression
思路: 指针i指向修改内容的位置,指针j遍历整个数组chars,当下一个字符与当前字符不相同时,直接将该字符赋值到i处,然后i++,j++;若相同,k指向j所在位置,j继续向前出发遍历所有与k处相同的字符,则相同的个数为j-k,将j-k转化为字符串s,将s的每一个字符都赋值在i所在位置开始的chars中。
1 | class Solution { |
Find All Numbers Disappeared in an Array
思路: 将nums[i]
置换到其对应的位置nums[nums[i]-1]
上去,比如[4,3,2,7,8,2,3,1],其中4应该和7交换位置,以此类推,最后得到的顺序应该是[1, 2, 3, 4, 3, 2, 7, 8],最后在对应位置进行检验,如果nums[i]
和i+1
不等,将i+1
存入结果res中即可。
1 | class Solution { |
Review
本周阅读英文文章:
1、Adversarial Attacks on Deep Neural Networks
3、Building a Minimal Blockchain in Python
Technique
在与CPU所处的同一芯片内设计有高速小容量内存,它们的工作就是频繁复制使用中的主存储器,代替主存储器工作,将其称为高速缓存。
高速缓存与缓存块被分区管理。块的型号因CPU的构造有所不同。主存储器与缓存,或者上层缓存与下层缓存之间的数据传送,均由块单位来执行。也就是说,当CPU想读取4字节的数据时,在缓存里没有该数据的情况下,将从外部内存复制已包含相应地址数据的块大小单位。
缓存分为三类:直接映射高速缓存、组相联高速缓存、全相联高速缓存
缓存中的数据随着程序的执行而不断更新。当缓存中没有空白块可分配时,就有必要置换出缓存中的某一块数据。常见的置换策略如下:
- LRU(Least Recently Used):最近最少使用的数据将被置换出缓存。
- PLRU(Pseudo-LRU):一段时间内未使用的缓存块作为替换候补,在需要替换时将某一候补替换出去。
- FIFO(First In First Out):置换最先放入缓存的缓存块。
- RANDOM:随机置换。
Share
分享两篇勾陈安全实验室的文章,分别对netstat和ss进行了源代码调试和原理分析: