
未归类--
未归类--
SleepyPat
化整为零
有的放矢,心无旁骛
展开
-
[其他] GNome KDE / GTK GTK+ Qt / GDK / Glib
forOne。原创 2023-12-11 10:28:35 · 1179 阅读 · 0 评论 -
[其他] microkernel 和 monolithic kernel 的区别
microkernel 又叫微内核,是指内核程序中只有核心程序,这部分程序负责管理和服务其他子模块,服务的方式是 ipc , 子模块可以是内存管理模块,文件系统模块,网络模块等等。子模块不属于内核,内核仅仅是那个核心程序。微内核场景下,仅有核心程序运行在内核态,子模块都运行在特殊的用户态,所以像内存管理和文件系统这样我们普遍认为重要的功能均没有运行在内核态。从代码结构上来看,子模块也不是内核(核心程序)的一部分,因此内核代码非常精简。monolithic kernel 是指一体化内核。原创 2023-03-27 14:37:45 · 752 阅读 · 0 评论 -
[WEB] Learn HTML5 && CSS3
HTML5 & CSS3 Fundamentals: Development for Absolute Beginners | Microsoft Learn原创 2022-10-11 17:24:06 · 199 阅读 · 0 评论 -
[WEB] HTML的element分为 inline 和 block 两大类
Html 中的 element 分为两大类 : inline 和 block ,分类的依据是 element 的尺寸和布局。所有block element都会单独起一行,并占用整行的宽度。所有 inline element 都不会另起一行,而且宽度只需要足够显示自己的宽度即可。原创 2022-10-12 22:01:15 · 380 阅读 · 0 评论 -
[Windows] windows环境下编译Nginx
前言:Nginx工程没有使用cmake进行管理,而是传统的make和configure,因此就需要一个linux环境用来进行工程配置。这里推荐使用MSYS,因为后面的make动作需要使用windows的nmake工具主导编译。官方的编译步骤为:http://nginx.org/en/docs/howto_build_on_win32.html但是按照其推荐步骤进行的话并不是很顺利,有很多坑,这里几种记录一下,同时总结一个完全可靠的方案流程。准备工作:1. windows下的c语言编.原创 2020-10-19 19:51:42 · 1800 阅读 · 0 评论 -
[虚拟化] KVM QEMU KVM-QEM
What is QEMU Emulator and How It Works with KVM? - Vinchin BackupThis post tells what is QEMU and describes the process of how QEMU Emulator works with KVM with an example.https://www.vinchin.com/en/blog/qemu-emulator.htmlhttps://www.cnblogs.com/wujuntian/原创 2023-03-27 15:56:10 · 104 阅读 · 0 评论 -
[其他] 常用网页整理
常用网页整理原创 2023-01-18 15:31:45 · 76 阅读 · 0 评论 -
[其他] 装双系统
How to Install Two Operating Systems on One Computer原创 2022-11-11 14:14:27 · 118 阅读 · 0 评论 -
[其他] 字节byte不总是内存中的最小寻址单位(极少情况下不是)
另外,物理内存是不存在字节这样的概念的,所以字节及数据类型这些标识内存空间大小的概念是由不同的语言标准定义的,而目前几乎所有操作系统都是由c语言编写,所以内存管理模块遵循的是c语言对于内存的划分原则,因此c语言的内存划分规则就变成了“普适性”的惯例。但是我们还是需要了解底层原理,在不同的机器架构上,甚至在特定的操作系统上,最小的内存寻址单位都可能不同,但是在大部分情况下字节就是最小的内存寻址单位,c和c++标准都有明确的要求。这有助于定位一些跨系统和跨硬件架构的兼容问题。原创 2022-11-10 10:24:46 · 749 阅读 · 0 评论 -
[其他] 常用的系统信息
【代码】[其他] 常用的系统信息。原创 2022-08-20 14:06:37 · 243 阅读 · 0 评论 -
[其他] 代码覆盖率检查 gcov 和 lcov
代码覆盖率检查是只在一次程序运行过程中,哪些代码和函数被运行到了,哪些没有被运行到,以此来观察是否又无用代码,同时也能观察哪些代码被频繁运行,进而可以进行针对性的优化。gcov 用来生成报告,lcov用来把 gcov 生成的报告做二次加工成,比如做成 html 网页。.........原创 2022-08-10 16:01:13 · 1130 阅读 · 0 评论 -
[其他] DS5
ArmDevelopmentStudioDownloads–ArmDeveloperArmDevelopmentStudioDownloadshttps//developer.arm.com/tools-and-software/embedded/arm-development-studio/downloads。原创 2022-07-27 16:05:06 · 130 阅读 · 0 评论 -
[其他] shell 中 export 命名不生效
shell 脚本中通过 export 设置环境变量时,需要用 source 执行脚本,如果使用 . 和 sh 执行,都会导致 export 不生效。原创 2022-04-21 16:40:48 · 569 阅读 · 0 评论 -
[MM] underrun && overrun
Underrun(underflow)ide In computing, buffer underrun or buffer underflow is a state occurring when a buffer used to communicate between two devices or processes is fed with data at a lower speed than the data is being read from it. This requires the...原创 2022-03-28 19:34:26 · 537 阅读 · 0 评论 -
[其他] 常见的信号诱因
Segmentation fault(SIGSEGV)andBus error(SIGBUS)are signals generated when serious program error is detected by the operating system and there is no way the program could continue to execute because of these errors.1)Segmentation Fault(also known as S...原创 2022-03-22 09:57:37 · 400 阅读 · 0 评论 -
[其他] 使用unsigned char作为十六进制数存储的必要性
参考:字符串格%02x式化输出出现FFFFFF解决办法_zqxwce821的博客-优快云博客正文:C89标准规定,short和char会被自动提升为int(整形化,类似地,float也会自动提升为double),这样做是为了便于编译器进行优化,使变量的长度尽可能一样,尽可能提升所产生代码的效率。data[i]的值当它是正数的时候也同样进行了符号扩展的,只不过正数是前面加0,用%02x打印的时候那些0被忽略;而补码表示的负数的符号扩展却是前面加1,用%02x打印的时候那些1不能被忽略,因此才原创 2022-03-03 17:54:22 · 1361 阅读 · 0 评论 -
[其他]gtest
手把手教你使用gtest写单元测试(1/2) - 知乎原创 2022-01-28 11:57:34 · 355 阅读 · 0 评论 -
pragma omp parallel for
#pragma omp parallel for#pragma omp parallel for是OpenMP中的一个指令,表示接下来的for循环将被多线程执行,另外每次循环之间不能有关系。示例如下:intmain(intargc,char* argv[]){#pragmaomp parallelfor //后面是for循环for(inti = 0; i < 10; i++ ) { printf("i = %d/n", i)...原创 2022-01-25 15:50:22 · 1277 阅读 · 0 评论 -
[软件架构] 相关web
SoftwareArchitectures.comhttp://www.softwarearchitectures.com/原创 2022-01-10 17:25:00 · 752 阅读 · 0 评论 -
[其他] 浅析ELF中的GOT与PLT
浅析ELF中的GOT与PLT__wells的博客-优快云博客_elf plt一、ELF简介现在PC平台流行的可执行文件格式主要是Windows下的PE(portable Executable)和Linux的ELF(Excutable Linkable Format)。编译器编译源代码后生成的文件叫做目标文件,从目标文件的结构上讲,它是已经编译后的可执行文件格式,只是还没有链接的过程,其中可能有些符号或有些地址还没有被调整。其实它本身就https://blog.youkuaiyun.com/u011987514/ar.原创 2022-01-05 11:28:25 · 666 阅读 · 0 评论 -
[其他]简单理解傅里叶级数和傅里叶变换
傅里叶变换(时域频域)_kalp_yp-优快云博客_时域频域变换公式我保证这篇文章和你以前看过的所有文章都不同,这是 2012 年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者……这篇文章的核心思想就是:要让读者在不看任何数学公式的情况下理解傅里叶分析。傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此对...https://blog.youkuaiyun.com/u013原创 2021-10-27 18:15:44 · 163 阅读 · 0 评论 -
[其他] 书签自用
保存为 bookmark.html<!DOCTYPE NETSCAPE-Bookmark-file-1><!-- This is an automatically generated file. It will be read and overwritten. DO NOT EDIT! --><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"><TIT.原创 2021-10-14 16:13:21 · 23605 阅读 · 0 评论 -
[其他] 解决cannot open shared object file: No such file or directory
Windows 下 exe 和动态库再同级目录下时可以自动搜索到动态库;Linux 下 可执行程序不会搜索同级目录,因此需要单独设置。参考:解决cannot open shared object file: No such file or directory_sssss-spring-优快云博客一、linux下调用动态库.so文件时提示:cannot open shared object file: No such file or directory解决办法:1、此时ldd xxx查看依赖缺少原创 2021-10-09 18:10:13 · 734 阅读 · 0 评论 -
[其他] X11 Qt 窗口管理
[GUI] Linux中的图形管理 - yonpenghan - 博客园[GUI] QT事件与X11的关系 - yongpenghan - 博客园原创 2021-10-08 18:00:06 · 1200 阅读 · 0 评论 -
[其他] 栈分配策略
栈分配的策略是:先分配一个MB级别的页面,然后从这里面取一块KB尺寸的页面给外部使用,但是用户如果访问kb之外,mb之内的内存,会报非法访问。当mb快用完时,触发操作系统的缺页异常,然后操作系统在分配一个mb。当栈快用完时,不再分配mb内存,而是提示快用完了,当再次申请,则stack overflow,如果一次请求的栈大于mb尺寸,则操作系统把这次请求切割成小的mb级别请求,防止不触发缺页异常,以及一次就触发了stack overflow。局部数组在栈中存放的顺序:[0]放在栈低地址(栈顶方向)原创 2021-08-03 22:38:07 · 215 阅读 · 0 评论 -
[其他] 软件设计时的一些技能
1)多线程同步2)多进程通讯3)多线程无锁并发执行4)线程优先级调控5)NUMA6原创 2021-06-17 11:35:44 · 135 阅读 · 0 评论 -
[其他] Windows线程优先级
Process priority class Thread priority level Base priority IDLE_PRIORITY_CLASS THREAD_PRIORITY_IDLE 1 THREAD_PRIORITY_LOWEST 2 THREAD_PRIORITY_BELOW_NORMAL 3 THREAD_PRIORITY_NORMAL 4 THREAD_PRIORITY_ABOVE_NORMAL 5 THREAD原创 2021-05-12 17:48:53 · 429 阅读 · 0 评论 -
[其他] Intel的一些库和工具
TBB : Threading Building BlocksIntel 的 线程库,其中包含 scalable 的任务管理、内存分配、内存池管理 等等。最重要的是它提供了 lock-free 队列。MKL :Math Kernel LibraryIPP :Integrated Performance Primitives...原创 2021-05-12 10:19:53 · 167 阅读 · 0 评论 -
[其他] 字符和编码相关(UNICODE/ANSI/UTF-8)
UNICODE:由多家大公司共同制定的一套字符集,用4字节(最初是2字节)表示一个字符,所谓的字符就是“独立的符号”,比如每个汉字都是一个字符,每个英文字母也是一个字符,每个日语片甲也是一个字符,最早的2字节(16位)最多能表示65000个字符,这65000个字符用来表示全世界所有语言的字符明显是不够用的,单单汉字就有超过十万个,而这65000个空间的分配原则如下:16位代码区间 语言文字 0 0 0 0 - 0 0 7 F ASCII 0 0 8 0 - 0 0 F F原创 2021-04-16 16:00:51 · 243 阅读 · 0 评论 -
[其他] 多核编程、线程绑核、多线程在多核上运行
todo原创 2021-03-31 17:37:42 · 129 阅读 · 0 评论 -
[其他] SDL
https://blog.youkuaiyun.com/leixiaohua1020/article/details/11954039原创 2021-03-31 09:57:10 · 84 阅读 · 0 评论 -
[其他] 多线程对数据结构的访问模式
serialization :多个线程 依次 访问(增删改查)数据结构,这叫做serialization , 一般用锁来作数据结构的访问权限控制。这种场景比较常用,比较可靠,但是效率较低,当一个线程访问的时候,其他线程都会处于starving状态,这不是 并发,虽然是多线程,但是很遗憾确实不是 并发,因为只有一个线程活跃。串行化的有两大缺点:1)效率低;2)锁会带来一定的不稳定性,比如死锁和优先级翻转就经常出现。但是有点也是很明显的:设计简单易于理解和维护。concurrent:...原创 2021-03-30 19:09:17 · 292 阅读 · 1 评论 -
[其他] 一些简单的字节算法
8个仅由0和1组成的数组合并为一个字节://----------- 数乘法 ------------bool UTI::Encode8ByteTo1Byte(BYTE *in_bitBuf, DWORD in_Len, BYTE* out_byteBuf , DWORD out_Size){ if (out_Size < in_Len / 8) { return false; } int times = in_Len / 8; int j = 0; BYTE tmp = 0;原创 2021-03-25 19:41:36 · 440 阅读 · 0 评论 -
[其他] Linux下如何动态加载动态库
https://blog.youkuaiyun.com/eydwyz/article/details/74932628主程序编译: gcc test.c -ldl -rdynamic动态库编译: gcc -shared -fPIC -nostartfiles -o mylib.so mylib.c主程序通过dlopen()加载一个.so的动态库文件, 然后动态库会自动运行 _init() 初始化函数, 初始化函数打印一个提示信息, 然后调用主程序的注册函数给结构体重新赋值,然后调用结构体的函数指针, 打印.原创 2021-03-16 14:13:47 · 301 阅读 · 0 评论 -
[其他] 使用const的重要性
场景一:多线程场景下,对共享资源访问时如果返回共享资源的指针或引用,那么请使用const修饰,使之成为指向常量的指针。//如果不加const,那么多线程场景下加锁将毫无意义,因为外部可以随意通过指针和引用随意修改共享资源const int *func() { int* pi = new int; *pi = 10; return (const int *)pi;}int main(){ const int *pl; pl = func(); s原创 2021-03-12 10:50:01 · 108 阅读 · 0 评论 -
[其他] 多线程无锁同步
参考:https://docs.microsoft.com/zh-cn/windows/win32/dxtecharts/lockless-programming?redirectedfrom=MSDN小结:1)Volatile 无法保证无锁同步;2)windows下锁的是通过 memory barrier 实现的,掌握了内存屏障的使用便掌握了无锁同步;3)DirectX提供了LockFreePipe,此管道只接受 “一个生产者,一个消费者” 模型;4)Windows下,Memor.原创 2021-03-10 15:31:25 · 502 阅读 · 2 评论 -
[其他] 可能导致死锁的几个场景
场景一:多线程 + 多锁这种场景最容易常见和容易理解,如果同时存在多个线程和多个锁,而每个线程都有机会操作所有的锁,那么这就可能导致死锁。解决办法网上有很多,一般设计系统时也应当避免多线程与多锁互相交织在一起的情况。场景二:线程对同一个锁反复加锁如果单线程对同一个锁加锁两次,那么这会导致死锁,这种情况在使用 自释放锁时经常出现,比如 c++ 11 的 lock_guard ,如果在 lock_guard 还没释放时再次对同一个锁使用 lock_guard ,则会立刻导致死锁。.原创 2021-03-10 09:51:02 · 2234 阅读 · 0 评论 -
[图像] 几种YUV格式到底是什么意思
红线划分的每个方格都是一个像素,在色彩信息最全的场景下 (YUV444) ,每个像素都是全采样的,即 Y U V都采样。这样一幅图像就会很大。在 YUV422 和 YUV420 场景下,有的像素 只采样 Y (只有白色空心原点的像素点),有的像素 采样 U和V (既有黑色原点又有灰色原点),有的像素不采样 (空白)。这便是YUV的数据压缩方式。小结:所谓的YUV444 YUV422 和 YUV420 其实是指 像素点采样策略 。...原创 2021-03-04 16:09:35 · 486 阅读 · 1 评论 -
[其他] 栈 和 函数调用
前言:程序 = 算法 + 数据结构算法 = 内存正文区(.text)的执行逻辑数据结构 = 堆 + 栈 + 其他数据存储区栈:栈是进程虚拟内存模型中的一块连续内存区域,不同的操作系统对于虚拟内存的划分策略存在一定的差异,但是不论是什么操作系统都会流出一大块内存区用作栈空间(大多数情况下是堆和栈共享)。x86架构下,栈是向着低地址蔓延的,堆是向着高地址蔓延的。每一次函数调用,寄存器组都会重新被赋予一套值,这套值表明了当前函数的栈帧范围,当函数执行完毕时,寄存器组会被重新赋值以回退.原创 2021-02-26 11:54:51 · 83 阅读 · 1 评论 -
[其他] MSVC编译器的选择(x86,amd64_x86,amd64,x86_amd64)
转:https://blog.youkuaiyun.com/xiongya8888/article/details/99944866x86:编译器为x86版本,输出文件为x86。 amd64_x86:编译器为amd64版本,输出文件为x86。 amd64:编译器为amd64版本,输出文件为amd64。 x86_amd64:编译器为x86版本,输出文件为amd64。ps:需要根据本机cpu型号和目标机器cpu型号来确定使用那个编译器。...原创 2021-02-18 23:26:44 · 4473 阅读 · 0 评论