- 博客(108)
- 收藏
- 关注
原创 python setup.py 打包缺少静态资源
https://segmentfault.com/a/1190000038959526
2023-11-07 19:08:30
303
原创 Restful API 传送门
https://www.ruanyifeng.com/blog/2014/05/restful_api.html(阮一峰的博客)
2023-10-11 15:55:47
225
原创 golang singleflight资料整理
https://www.cyningsun.com/01-11-2021/golang-concurrency-singleflight.htmlhttps://juejin.cn/post/7261897250648817701https://segmentfault.com/q/1010000022916754https://juejin.cn/post/6916785233509482509https://segmentfault.com/a/1190000018464029
2023-10-10 22:22:58
379
1
原创 Write Streaming Mode
Write Streaming Mode数据从PCI总线,IO Controller直接到Memory Controller,而不经过cache的模式。不妨翻译为写穿透?或者流式写?参考Cortex_A55手册——Write Streaming Mode一节。在aarch64下通过CPUECTLR_EL1寄存器使Core进入Write streaming mode,进入该模式后Bus Interface Unit(BIU)的作用When a core has dropped into write s
2021-12-22 11:43:03
1475
原创 6.S081-Lab Util report
Lab Util reportBoot Xv6 (easy)没啥复杂的,按照教程来就可以了,基本没踩坑。Sleep描述:Implement the UNIX program sleep for xv6; your sleep should pause for a user-specified number of ticks. A tick is a notion of time defined by the xv6 kernel, namely the time between two inter
2021-12-16 22:15:00
1646
原创 6.S081 Lab book 第一章阅读
写在前面:本文基于mit 6.828 操作系统课程材料——《book riscv rev2》,仅用作学习交流,任何组织和个人未经允许不得将其用于商业用途,包括但不限于出版、授课等。文中包含对原文的部分翻译以及作者个人的理解。欢迎讨论交流。chapter 1 操作系统接口操作系统的基本作用:操作系统对底层硬件提供了抽象和管理;操作系统为用户程序提供了受控制的交互方式,支持用户程序共享数据或者协同工作;操作系统通过接口为用户程序提供服务,我们希望操作系统的接口包括以下设计要点:简单——因此
2021-12-15 10:15:00
2104
原创 开发过程中的各种愚蠢错误
今天记录一个愚蠢的错误。#include <stdint.h>int main(){ uint64_t a; uint64_t b; a = 0x999; b = 0x888; printf("uint64_t size : %dB, uint size: %dB\n", sizeof(unsigned long long), sizeof(unsigned int)); printf("a: %x b: %x\n", a, b); return 0; }输出结果:
2021-11-02 19:41:24
294
转载 0长度数组
https://blog.csdn.net/gatieme/article/details/64131322
2021-11-02 09:15:00
115
原创 ArchTM阅读笔记
ArchTM: Architecture-Aware, High Performance Transaction for Persistent MemoryArchTM is a variant of copy-on-write (CoW) system to reduce write traffic to PM.Introduction现有的保证数据crash一致性的方法多是基于logging的(问题是双重写入)和基于CoW的(问题是metadata更新会带来很多的微小写入,导致CoW更新的开销太大
2021-10-29 21:03:04
362
4
原创 初探Octopus中的分布式事务
Octopus中的分布式事务写在前面:Octopus中的分布式事务设计都在TxManager.cpp中,结合log,相当于把分布式事务的阶段分开实现,比如提交,准备等等,因此需要结合实际的例子来看,接下来我们看一个filesystem.cpp中的函数mknod的实现,具体分析Octopus中分布式事务的实现。2pc(两阶段提交)关于2pc事务的基础知识,网上的文章很多,不在这里详细阐述。直接看Octopus的实现。(只保留关键代码)bool FileSystem::mknod2pc(const ch
2021-10-28 21:27:05
298
原创 WORT: Write Optimal Radix Tree for Persistent Memory Storage Systems
WORT: Write Optimal Radix Tree for Persistent Memory Storage SystemsFAST17的一篇文章,介绍了内存索引中使用基数树保证数据一致性的方法。阅读本文的目的是通过该文章了解内存索引的基本知识。可以尝试将radix tree结构来解决文件数据一致性。持久内存(Persistent Memory)=非易失内存(Non-Volatile Memory)摘要radix tree可能是更适合NVM的索引结构,因为不涉及tree rebalanc
2021-10-28 15:56:30
442
原创 c++ most vexing parse
C++ most vexing parse今天在ROS tutorial的示例代码中见到了一个写法,类似于:class Test { Test();};Test::Test() { // do something}int main() { Test a();}之后在自己的实验中会发现,Test a()这行代码并没有执行Test的构造函数,但是也没报错。比较费解,尝试了很多办法,最后还是搜索引擎告诉我这叫most vexing parse,说人话就是C++标准对于一些带有歧义的声明
2021-10-27 13:18:43
208
原创 What is the difference between log-structured filesystems and copy-on-write filesystem?
What is the difference between log structured filesystems and copy on write filesystems?(Quora是个好网站,科学上网很有必要)https://www.quora.com/What-is-the-difference-between-log-structured-filesystems-and-copy-on-write-filesystems以下是简要的个人理解,欢迎各位指正。相同点:整体上都是异地更新的
2021-10-26 15:00:54
280
原创 All About Persistent Memory Flushing
All About Persistent Memory Flushing发现很多的NVM一致性的文章都在说flushing cacheline以及原因是写内存指令重排序等,但是好像都没有很清楚的解释为什么要刷?为什么NVM就需要如此重视这个问题而块设备就不需要?所以看了一篇Storage Developer Conference 2017上Intel和Oracle的工程师分享的talk。我们将在后面解释:为什么flushing对于NVM非常重要?以及什么时候我们不需要关心这个问题?一些容易混淆的技
2021-10-25 16:45:08
345
原创 What is the difference between a journaling vs a log structured file system?
What is the difference between a journaling vs a log structured file system?来源:Quora同名问题——Ravi的回答journaling File system简单来说,文件系统先把一系列的写操作写到一个循环日志(circular log)里面,这个循环日志与磁盘数据分开。文件系统中的journaling分成以下两部分:metadata journaling只有metadata(例如inode信息等)会存在log中,
2021-10-22 16:21:06
491
原创 符合python风格的类设计
本文是《fluent python》第九章的学习笔记。对象表示形式获取对象字符串表示形式的两个函数:repr()面向开发者str()面向用户需要分别实现__repr__和__str__两个方法。一个例子:向量下面看一个数学中vector的例子:from array import arrayimport mathclass Vector2d: typecode = 'd' def __init__(self, x, y): self.x = floa
2021-10-02 18:39:27
202
原创 区间重合问题
线段是否有重合部分:min(a2, b2) - max(a1, b1) < 0|------| |-------------|a1 a2 b1 b2min(a2, b2) - max(a1, b1) > 0|----|******|====|a1 b1 a2 b2...
2021-09-30 10:57:00
182
原创 python 读写锁学习及实践
读写锁:允许多个对象同时读,只允许一个写。写的时候不能有读锁。import threadingfrom time import sleep class Item: def __init__(self, x): self.x = x def add(self): self.x += 1x = Item(100)class ...
2021-09-26 16:10:00
1026
原创 Octopus 源码阅读(一)
Octopus 源码阅读——fs部分开源代码bitmap.cppbitmap中的代码基本上没啥好说的,比较清楚。不过不解的是为什么在初始化的时候要统计freecount,理论上buffer不是应该可以直接初始化成全零吗?Bitmap::Bitmap(uint64_t count, char *buffer) /* Constructor of bitmap. */{ if (c...
2021-09-24 17:32:00
369
原创 Octopus FS 论文阅读 (一)
Octopus 论文阅读Octopus: an RDMA-enabled Distributed Persistent Memory File System 论文阅读摘要共享内存池减少memory copyself-identified RPC分布式事务机制保证一致性IntroductionIn conclusion, the strict isolation between ...
2021-09-23 16:13:00
319
原创 Octopus FS 论文学习索引
OctopusOctopus的源码已开源,感谢Youyou Lu老师!(顺便IPADS的SoupFS和ZoFS啥时候能放出代码呀。。。找了一天没找到QAQ)论文阅读Octopus FS 论文阅读(一)源码解读Octopus 源码阅读(一)——fs部分改进思路具体设计实验论证相关资料【推荐!】Meditator_hkx csdn 对于Octopus论文以及源码的分析【Quora...
2021-09-22 22:19:00
229
原创 SoupFS 论文阅读
SoupFS notes题目:Soft Updates Made Simple and Fast on Non-volatile MemorykeyWords: soft updates, dual viewssoft updates 避免了同步的metadate刷新,但是这样不保证cache的一致性。dual views 在不同的视图中共享相同的数据,但是使用不同的指针,保证cache...
2021-09-22 22:13:00
154
原创 python 弱引用及实践
下面是一个比较好的博客。(一点想法:我们在写技术博客的时候,需要多关心这个东西是什么?怎么用?为什么他行?别的东西为什么不行?长篇累牍的介绍没啥意义。。。)基础知识与应用一个场景(例子)个人总结:非常认同博客:基础知识与应用中的观点,弱引用实际上就是观察者模式,而一个典型的例子是处理“循环引用”。所以如果需要去观察某个对象,并需要在这个对象回收时回调一些函数的时候,弱引用是一个非常好的...
2021-09-13 17:17:00
258
原创 python 深浅拷贝及实践
深拷贝:拷贝对象的内容。浅拷贝:拷贝对象的引用。相当于拷贝对象的引用。(个人并不喜欢用盒子,标签等概念来区别,用一个概念大致解释另一个概念有时会加深理解的难度。。。)一些例子可变类型作为函数参数python中的可变类型:list,dict,set不可变类型:number,string,tuple我们应该避免使用可变类型作为函数参数的默认值。一个例子(来自fluent python...
2021-09-13 16:07:00
70
原创 前端鉴权方案概述以及最佳实践
cookiesessiontokenraw login vs. flask-login参考文章前端鉴权的兄弟们:cookie、session、token、jwt、单点登录理解JWT(JSON Web Token)认证及python实践Flask-login详解用户验证----jwt生成token,及token解析 Python Flask...
2021-08-19 00:33:00
114
原创 jinja2 使用教程
jinja2模板使用教程网上很多教程都是直接copy官方文档。。。jinja2的内置测试器的行为非常迷惑。。。iterable,mapping,string等的测试行为实际上跟python中的理解不同:sw-office-lon-01 is an iterable: Truesw-office-lon-01 is a sequence: Truesw-office-lon-01 is ...
2021-08-04 12:02:00
882
原创 python singledispatch
关于singledispatch的知识不赘述,直接百度即可。而singledispatch仅支持静态方法的dispatch,如果在class内部的方法则不行,因为第一个参数一直是self。所以下面是一个实现class内部singledispatch的方法。### 基础的singledispatch装饰器只能实现静态方法from functools import singledispatc...
2021-07-28 17:04:00
425
原创 git 合并多个commit
作用:在 push & merge 之前整理本地分支 xjb 提交的commit,这样可以保持master相对干净。传送门
2021-07-28 16:28:00
218
原创 python 装饰器基础
Python 装饰器本文内容参考 fluent python装饰器基础知识装饰器一般将一个函数替换为另一个函数,举例来说:@decodef foo(): print("running foo")def foo(): print("running foo")foo = deco(foo)这两种写法的作用是一致的。所以目前可以直观的理解为,装饰器就是在某个函数的外面...
2021-07-25 17:37:00
96
原创 python 一等函数
一等函数首先要明确一等对象的概念,一等对象是一个编程语言里的概念,满足以下条件:在运行时创建能赋值给变量或者是数据结构中的元素能作为参数传给函数能作为函数的返回结果在python中,常常把“函数视作一等对象”称为“一等函数”。下例是把函数视为对象的一个例子:def foo(n): return ntmp = footmp(1)高阶函数接受函数为参数或者把函数作...
2021-07-24 14:11:00
244
原创 C++中的面向对象程序设计
写在前面:在19年UML那篇文章里提到过要系统的梳理一下OOP的相关内容,两年之后终于来填坑了!本文内容严重参考《C++ Primer》5th ch15。面向对象程序设计概述核心思想:数据抽象、继承和动态绑定。数据抽象:类的接口和实现分离;继承:定义相似类型并对其关系建模;动态绑定:一定程度上忽略类型的区别,使用相对统一的方式使用他们的对象。简单提一下数据抽象,直观上理解就是:一...
2021-05-27 18:01:00
592
原创 《Unix 网络编程》第三章习题
忙里偷闲,学一学《Unix 网络编程》哈哈哈哈哈。第三章有这样一个练习:试写一个名为inet_pton_loose的函数,它能处理如下情形:如果地址族为AF_INET且inet_pton返回0,那就调用inet_aton看是否成功;类似地,如果地址族为AF_INET6且inet_pton返回0,那么就调用inet_aton看是否成功,若成功返回其IPv4映射的IPv6地址。写完之后查了...
2021-04-10 23:12:00
237
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人