- 博客(56)
- 收藏
- 关注
原创 pwd-find_dir_entry(pwd核心算法)
pwd源码分析就到这里了,学到了很多知识,更重要的是体会到了活在当下的喜悦,下一个是realpath的源码分析自己实现的代码static voidfind_dir_entry (struct stat* dot_sb, struct file_name* file_name, size_t parent_height){ /* get last dir stat info and prepend it's name to FILE_NAME */ DIR* dp; struct .
2021-11-06 17:56:58
396
原创 pwd-robust_getcwd
有现成的函数直接调!其根据有鲁棒性!起始写代码的大部分工作就是在给一个算法增加鲁棒性!反思1. 源码中调用的是get_root_dev_info struct dev_ino dev_ino_buf; struct dev_ino *root_dev_ino = get_root_dev_ino (&dev_ino_buf);个人认为,有现成的函数调用还是用现成的,但是pwd的源码调用的库都在coreutils/lib中,我调不了,所以就使用了下面的方式。2. get_root.
2021-11-04 17:35:15
176
原创 pwd-file_name_prepend
反思1、计算中的+12、C语言中的const3、数据的构造方式更加符合实际文件的绝对路径是逐级往上走的,所以源码中采用了更加贴合实际的数据结构(指向文件名的指针是从尾往头走的)。代码/* prepend the n length of s before file_name, p. */static voidfile_name_prepend (struct file_name* p, char const* s, size_t n){ size_t n_free = p->sta
2021-11-03 21:51:48
292
原创 pwd-init_filename, nth_parent
反思Linux路径最大长度限制为4096字节,文件名为255字节struct file_name* p = malloc (sizeof *p)还可以这样赋值!!!我艹,另外sizeof可以不用加括号!!!sizeof *p表示指针所指位置的长度。让用户输入尽可能简单!运算放入函数内计算在nth_parent中,可以有两种传值方式,先计算好了3xn,另外就是只传n。显然后面这种对于用户和函数本身都是更加简单一些的方法。nth_parent是输出是../../..的形式,不是/../..,也不是
2021-11-02 22:17:18
252
原创 pwd-xgetcwd
可能有些迷失在细节中,但是这就是我的性格反思xmalloc, xalloc_die,为什么要用这些呢?这些方法对响应的函数(malloc…)进行了封装,对内存泄漏进行了检查。xalloc_die中为什么error以后还要进行abort呢?注解中是帮助编译器理解函数不返回任何值,但是不是特别理解。foo(void)与foo()有什么区别?加了void,C编辑器会认为函数没有参数,否则可以传任何类型的参数。代码voidxalloc_die (void){ error (1, 0.
2021-11-01 21:36:49
620
原创 Linux-pwd命令--logical_getcwd
好好活就是做有意义的事,做有意义的事就是好好活。反思:1、为什么这里不用正则表达式?我认为C语言的表达式过于复杂了,即使有库可以直接调。这里不用正则表达式反而整个代码更加简洁!2、为什么这里要检查"/.", “/./”, “/…”, "/…/"这几种情况?我发现stat函数会漠视这几种情况,即"/home/test/." == “/home/test”,这也符合Linux的文件系统规则。重新实现:static char*logical_getcwd(){ struct stat s.
2021-10-31 20:47:17
137
原创 ranger 全局复制失败
Linux下 ranger 使用yn, yp全局复制失败检查是否有下面的命令'pbcopy', 'xclip', 'xsel', 'wl-copy'随便装个就ok了。
2021-10-19 18:40:44
134
原创 linux下无桌面环境安装chromium插件
1、国内下载插件网址极简插件插件迷2、下载解压以后一般是以crx为后缀修改后缀为zipmv ****.crx *****.zip解压unzip ****.zip -d extension在google的chrome://extensions/页面点击Load unPackage选择刚才解压文件extension即可核心:修改crx后缀为zip等可解压格式...
2021-10-10 11:59:14
575
原创 Crontab notify-send无法显示消息弹窗
环境:Debain + i31、需要设置DBUS_SESSION_BUS_ADDRESS变量。默认情况下,cron 无权访问该变量。为了解决这个问题,将以下脚本放在某处并在用户登录时调用它,该脚本会导出DBUS_SESSION_BUS_ADDRESS变量到$HOME/.dbus/Xdbus中#!/bin/shtouch $HOME/.dbus/Xdbuschmod 600 $HOME/.dbus/Xdbusenv | grep DBUS_SESSION_BUS_ADDRESS > $.
2021-10-04 17:10:47
535
原创 emacs 变量无颜色问题
1、使用插件我使用的是doom-theme的主题插件,但是变量没有高量。可以使用 Rainbow identifiers mode 解决2、安装在 MELPA中可以下载M-x package-install RET rainbow-identifiers RET3、使用直接使用:M-x rainbow-identifiers-mode加入配置文件:(add-hook 'prog-mode-hook 'rainbow-identifiers-mode)...
2021-09-18 20:51:35
170
原创 evil神器
还纠结是使用emacs,还是使用vim吗。在emacs中装上evil插件即可。一、概述Emacs作为一个操作系统,在大型项目的开发上确实体验要比vim好,所有的事情都可以在上面完成,但是没有像vim中的 . ; * 这种重复命令,当进行重复操作时有点繁琐。Vim的优势是在帮我们从重复的工作中解放出来,但是不好管理多文件,并且vim的配置语言我不是很喜欢,没有elisp那么纯粹,适合单文件编辑,如该一个配置文件,写一个脚本文件。二、福音所以可以在emacs上使用vim是由多爽,感谢evil(ex.
2021-09-18 11:36:48
274
原创 linux 下 vscode 使用vim插件摆脱输入法切换烦恼
一、正文如果是使用的fcitx输入法,只需在vscode的setting.json中添加如下信息:"vim.autoSwitchInputMethod.enable": true,"vim.autoSwitchInputMethod.defaultIM": "1","vim.autoSwitchInputMethod.obtainIMCmd": "/usr/bin/fcitx-remote","vim.autoSwitchInputMethod.switchIMCmd": "/usr/bin/fc
2021-08-15 20:00:27
2844
2
原创 linux stat命令输出的几个大小解释
stat machine.info File: `machine.info' 4 Size: 1646 Blocks: 8 IO Block: 4096 regular file 5 Device: 803h/2051d Inode: 66814001 Links: 1 6 Access: (0664/-rw-rw-r--) Uid: ( 501/ map) Gid: ( 503/ map)...
2021-08-15 19:42:56
867
3
原创 linux下vscode等软件删除的东西在那
在linux中使用vscode删除项目中的某个文件时,提示move to trash。所以linux的transh在那里?经过一番探索,才找到:~/.local/share/Trash/
2021-08-12 17:07:21
1652
1
原创 钢琴块autojs<一>
可行,但点击很慢requestScreenCapture();let w = device.width;let h = device.height;let halve = w/4;let region = []let insepct_regions = [];for (let i=0; i<4; i++){ region = [i*halve, h-700, 50, 50] insepct_regions.push(region);}//点击开始//循环四个通道就好f
2021-08-09 22:57:53
668
原创 ld: i386 架构于输入文件foo.o 与 i386:x86-64 输出不兼容
ld: i386 architecture of input file `foo.o’ is incompatible with i386:x86-64 output编译链接指令nasm -f elf foo.s -o foo.ogcc -c bar.c -o bar.old -s -o foobar bar.o foo.o汇编语言用nasm编写并用nasm编译器编译,而C语言用的是gcc编译,这些都没有问题,但是在链接的时候出错了,提示如下:ld: i386 architecture.
2021-08-08 08:59:01
2841
原创 如何实践操作系统实现一书中关于FAT12实验
在于渊的一个操作系统的实现第二版中,第四章开始那里写到:假设是x.img,然后把它作为FreeDos的B盘,格式化后就可以方便的往其中添加文件了和目录了(比如使用FreeDos里面的edit.exe),可是在FreeDos里面我找不到edit.exe啊。解决方法https://blog.csdn.net/judyge/article/details/52373751软件下载地址...
2021-08-02 16:52:30
119
原创 debian 10 (linux) 安装bochs
若直接使用命令安装,安装的是2.6版本,但是存在很多问题,可以安装2.4.5版本。链接: 下载 提取码: 7ep9 复制这段内容后打开百度网盘手机App,操作更方便哦
2021-07-30 23:31:26
257
原创 问题记录-cpu架构
1、IA-32是啥?从1985年80386开始,intel通过对x86架构进行32位的扩展,实现了32位CPU,而之前的都是16位。Intel把支持32位的 x86指令集架构命名为ia-322、i3-86、x86-64都是些啥?x86架构首度出现在1978年推出的Intel 8086中央处理器.1999年,AMD宣布了x86-64架构。其实 现方式与之前的80386思路一致,继续对IA-32扩展,增加64位通用寄存器…i386=Intel 80386。其实i386通常被用来作为对Int
2021-07-26 21:08:09
99
原创 问题记录-保护模式<一>
《OrangeOs一个操作系统的实现》一、为什么描述符的设计是这种设计(段基址、段界限不连续)呢?使用两个域存放段基地址和段界限的原因与80286有关。在80286保护方式下,段基地址只有24位长,而段界限只有16位长。80286存储段描述符尽管也是8字节长,但实际只使用低6字节,高2字节必须置为0。80386存储段描述符这样的安排,可使得80286的存储段描述符的格式在80386下继续有效。二、为什么选择子的定义如此矛盾呢?在p32中,selectorvideo的定义是:SelectorV.
2021-07-26 10:29:14
77
原创 debian10安装virtualbox6.1(How to install virtualbox6.1 on debian 10?)
一、下载:在官网中选择VirtualBox 6.1.24 for Linux标题下的Debian 10选项,进行下载。官网介绍了很多种安装方式,包括添加源等,遇到的问题都是一样的二、安装:sudo dpkg -i virtualbox.deb三、依赖:会缺少依赖,很多博客推荐直接使用sudo apt install -f,但是该命令会删除上面安装过程在apt留下的缓存1、直接安装直接尝试安装,有些以来可以直接使用sudo apt install ****安装,*****表示依赖名
2021-07-23 15:08:22
394
1
原创 debian完全卸载包(以qemu为例)
sudo aptitude remove qemu-system#qemu现在实际上以改为了qemu-system,直接install qemu是没用的
2021-07-23 11:11:37
580
原创 什么是codeLens
CodeLens(代码信息指示器)使用来自项目元数据和 Team Foundation Server 2013 预览版的信息,在代码中的每个方法上放置修饰符,其中显示哪些变更集导致创建该方法或做出最近的更改、谁是最后一个处理该代码的人、哪些单元测试涵盖该方法(包括最新的通过/未通过状态)以及存在哪些代码引用等信息。另外,单击一下即可迅速跳入该数据,如关联的变更集或引用的代码文件。(最左边那个框)...
2021-07-20 11:13:48
4490
原创 编译、调试coreutils源码
1、下载源码1.1、查看系统中的coreutils版本>> apt list coreutils ->我的是8.321.2、下载对应源码[下载地址]2、编译编译以后的可执行文件会跟源码在一个目录下(src目录)#进入解压出来文件目录,依次执行以下命令1、./configure --prefix=/tmp/coreutils/prefix #后面的路径自选 =》生成MAKEFILE文件2、make3、# make install 可以不执行这条, 这条命令执行以后编译
2021-07-17 19:03:39
1266
原创 linux stat 几个与文件大小相关输出的解释
1、输出>> stat machine.info File: `machine.info' Size: 1646 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 66814001
2021-07-15 17:44:13
2072
原创 python装饰器探究
本文主要回答python的装饰器函数内部的代码要放在一个新的函数里?以及由此引发的其他对python装饰器的探讨1、一般装饰器函数写法我们看到的python装饰器函数写法如下:def logging(func): def wrapper(*args, **kwargs): print("%s is running" % func.__name__) return func(*args, **kwargs) return wrapper@logg.
2021-04-17 11:40:22
111
1
原创 大学总结
Everything is product项目经验项目类高校新闻可视化系统学校失物招领小程序 毕业设计,开发中工具类易班签到职业生涯彩虹图搜题工具己聊小程序知识竞赛刷分记录CSDNGitlab阅读书籍<<福尔摩斯全集>><<白夜行>><<解放战争>><<朝鲜战争>><<人性的弱点>><<人人都是产品经理&.
2020-08-07 14:43:03
145
原创 文案训练手册
配置文件不要预先配置很多功能, 不然自己都忘了配置了些啥, 应该根据自己的需要配置公理1: 文案中的每一句话的目的都是让读者继续读下去公理2: 第一句话要做到短而有趣, 让读者放下警惕公理3: 营造你想要的环境(购买)公理4: 让你的读者说"是", 让他们在阅读的时候, 因为你的真诚而产生共鸣公理5: 让文案产生滑梯效应(保存一些有趣的文章, 有趣的调查结果)公理6: 当试图解决问题的时候, 打破那些思维定式公理7: 通过好奇心的力量, 使文案趣味横生, 使读者兴趣盎然,比如, 在段落后面.
2020-07-04 14:57:03
522
原创 创造力的基础
热爱生活是创造力的前提条件 伟大的产品需要创造力,需要创新. 但是创造力和创新的前提条件是得热爱生活. 有这么一个关于婴儿保温箱的故事.在19世纪80年代的时候,当时的婴儿死亡率很高,尤其是早产儿,在法国,早产婴儿的死亡率更是 达到了75%. 塔尼是一家二流医院的妇产科医生, 每每看到早产婴儿夭折的时候都很惋惜,觉得应该为他们做点什么,一次带着女儿 去巴黎动物园参观的时候看见了一些小鸡孵化器,看见刚刚出生的小鸡呆在孵化器里活蹦乱跳. 他就想为什么不设计一种类似的容 器, 将早产.
2020-06-21 09:46:11
479
原创 一文弄清像素
英寸: 屏幕的对边长度像素: 将图片放到最大所看到的一个个小方格分辨率: 屏幕1英寸所包含的像素点物理分辨率: 屏幕实际的1英寸所包含的像素点,(如经常看到电脑标的2.5k等等)在浏览console中输入:window.screen.width*window.devicePixelRatio逻辑分辨率: 屏幕逻辑上的1英寸所包含的像素点(在开发中常用的,如css)在浏览console中输入:window.screen.width设备像素比(Device Pixel Ratio.
2020-06-10 16:45:49
251
原创 layui劝退
之前没有接触过layui, 这次项目中尝试了一下,巨坑。而且 现在 react、vue大行其道,心得:作为程序员应该尝试流行的技术需求:上传图片的时候需要检查图片的宽高比,使用layui的upload模块,即使拦截了,也会上传,而且无需请求后端。我怀着急躁的心情只好在后端检测了layui:upload.render({ elem: '#layuiadmin-upload-list' , url: '/books/uploadImg' .
2020-06-09 10:11:08
1217
原创 用YOLOV2对垃圾进行目标检测《三》
快速实现,先不要自己写代码 --效率决定一切有了前面的准备工作,一开始是像使用darknet在Google colab上训练的,奈何网速等等问题,换成了华为云的modelArts,里面直接就有yolo的服务,直接训练,效果还不错。...
2020-06-04 11:28:41
788
2
原创 用YOLOV2对垃圾进行目标检测《二》
天下武功为快不破 ————————————————搬砖的缘由二、使用K-means选择archor(瞄框)的形状K-means聚类有三个步骤:步骤1:设置集群数量并初始化集群中心步骤2:将每个项目分配给最近的群集中心。步骤3:将聚类中心计算为聚类中所有案例的平均值(或中位数)。重复步骤1和2,直到两次连续迭代产生相同的聚类中心在步骤1中,使用1-IOU计算到群集中心的距离在步骤2中,使用中位数来计算聚类中心。1. standardize bounding box width and .
2020-06-02 20:03:54
575
1
原创 用YOLOV2对垃圾进行目标检测《一》
对于容易制作的数据集应尽量自己制作数据集准备及标注1. 使用工具:roLabelImg2. 使用Windows相机进行拍摄,结果如下图3. 标注过程
2020-06-02 17:39:02
815
原创 Pyinstaller failed to execute script main
相信看这篇文章的同学肯定折腾了很久,不急,慢慢来首先如果你没有打包之前运行是没问题的话,那基本就是资源(图片)在打包过程中的引用问题先不要用“pyinstaller -F” 用 “pyinstaller -D” 然后进入到main.exe所在目录使用命令行运行main.exe,这样我们能看到所报的错误。然后根据错误该导入资源的导入。但是我发现报了些莫名其妙的错误, 原因竟然是项目的上层目录中包含有与这个项目相同文件名的文件,移除这些就可以了.spec的使用:.spec的使用...
2020-05-31 18:00:34
655
原创 微表情
悲伤: 眉头抬起、上眼睑下垂、嘴角向下愉悦: 眼睛眯起、眼角纹、下眼睑向上、鼻唇沟、瞳孔收缩厌恶: 眉中心收、鼻子起皱愤怒: 眉毛下压、上眼睑抬起、嘴唇变薄惊讶: 上眼睑上台、瞳孔增大恐惧: 眉毛下压、上眼睑抬起、下眼睑紧张、双唇向双耳的方向缩回...
2020-05-21 21:09:52
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人