在写程序的时候,由于出现错误,创建了许多以特殊字符命名的文件 比如 "\%dsfgg&f*egg"等等 “/” 既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的"\),因此"/"不能出现在文件名中。 “.” 和 “…” 分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名。 如果不小心创建了,这些文件是用 rm 命令删除不了的,并且也不能重命名 那么可以用 inode编号 删除掉 具体实现为: ls -i 命令显示出所有文件的inode值 比如某个文件为   1054553 \%dsfgg&fegg 然后 find ./ -inum 1054553 -delete 就可以删除掉啦 关于inode的知识,发现一篇文章总结的特别好,借用一下,虽然有的还没有看懂,先码着,回头慢慢啃 链接: [link]https://www.cnblogs.com/xiexj/articles/7214502.html. 继续阅读 >>


赖鑫 18/10/08 20:32:15
私有数据: 在多线程环境下,进程内的所有线程共享进程的数据空间,因此全局变量为所有线程共有。 而有时候我们需要保存线程自己的全局变量,这种特殊的变量仅在某个线程内部有效。 可以通过创建线程的私有数据来解决:在线程内部,私有数据可以被各个函数访问,但对其他线程是屏蔽的。 线程的私有数据采用了—— 一键多值 的技术,即一个键对应多个数值,访问数据时通过键值来访问,好像是对一个变量进行访问,其实是在访问不同的数据, 使用线程私有数据时,首先要为每个线程数据创建一个相关联的键,在各个线程内部,都使用这个公用的键来指代线程数据。但在不同的线程中,这个键所代表的数据是不同的。 pthread_key_create ( pthread_key_t key ,void ( *destr_function )( void ) ) : 从linux 的TSD池中分配一项,将其值赋给key供以后访问使用,第一个参数为指向键值的指针,第二个参数为一个函数指针。key一旦被创建,所有线 继续阅读 >>


赖鑫 18/08/07 21:28:33
线程是什么?  线程是计算机中独立运行的最小单位,运行时占用很少的系统资源,也可以认为是操作系统分配CPU时间的基本单位  单核cpu在执行多个线程时是来回切换的,每个线程只有在系统分配给它的时间片内才能执行线程中的代码。 多线程比多进程的优点: 每个进程都有自己的独立空间,而同一进程内的线程共享进程的地址空间 线程间的切换速度远快过进程间的 进程间的数据空间相互独立,彼此间通信要经过操作系统,而线程数据可以直接提供给其他线程使用 提高程序的响应速度 提高多处理器效率 改善程序结构 线程的私有数据:  线程号  寄存器  堆栈  信号掩码  优先级  线程私有的存储空间 线程创建: 函数 pthread_create(pthread_t * thread,pthread_attr_t * attr,void * (* start_routine)(void *),void *arg ); 继续阅读 >>


赖鑫 18/08/07 16:57:52
由于自己感觉自己讲算法讲的不是那么......清晰明了   ㄟ( ▔, ▔ )ㄏ 所以还是分析题吧...... 这道题......反正绕了我很久 比较难过,感觉太麻烦,有很多种可能性,比较烦     ╮(╯_╰)╭ 也是一度放弃过,但是最后静下心来分析...... 发现其实只要思路清晰就 No Problem    ~( ̄▽ ̄~)(~ ̄▽ ̄)~ 话不多说!来人!上题! 题目 :喝可乐! 夏天到了,没有什么比喝冰可乐更爽的事情了。同样的,和最喜欢的人一起 分享可乐也是一件很快乐的事。现在你买了一瓶 S 毫升的可乐,并且你手边 有两个容量为 N 毫升和 M 毫升的杯子(M + N = S),若你想把这瓶可乐完 美的平分为两份,但无论是可乐瓶还是两个杯子都没有刻度,该怎么办呢? 输入 输入的数据有多组,每组数据在一行内有以空格作为分隔符的三个非负整数 S, N 和 M。若 S, N, M 均为 0,表示输入结束,该组数据 不输出任何内容 。 继续阅读 >>


赖鑫 18/08/03 09:37:14
导语 提到深搜算法,你能想到什么?  φ(≧ω≦*)♪ --深度搜索算法-- --以时间换空间-- ---递归实现--- ---遍历全部--- -适合算路径个数而不是路径最值- 没错,在我看来深搜算法就是由这样的几个关键字构成的 主要步骤: 主要分为以下几个简单的步骤: ╰(°▽°)╯ 1.找到起点和终点,并构建一个可以描述所有点的数组,和一个可以表示所有点状态的数组 比如要在一条路上移动,直线型,那么直接一维数组就可以。 比如要在一个5*5构成的方格里移动,那么就是坐标二维数组s[5][5]。 2.构建一个递归函数,函数参数应该最起码包括位置参数和根据题目需求要使用的参数 3.递归函数里首先列出递归结束的条件,即满足要求或者超出可移动范围或者遇到障碍物等等 4.接着列出所有~是所有可能移动或者变化的路径 5.然后这时候就用上了我们之前的状态数组,如果该点未走过且满足条件,将该点状态记为1,然后再进行递归函数,参数为已经变化的点的坐标, 继续阅读 >>


赖鑫 18/08/03 08:13:06
好啦,不吊大家胃口了~先贴代码: s=buf.st_mode; int d,u,g,o,i; o=s%8; g=s/8%8; u=s/8/8%8; int a[3]; a[0]=u;a[1]=g;a[2]=o; for(i=0;i<3;i++) { switch(a[i]) { case 0:printf("---");break; case 1:printf("--x");break; case 2:printf("-w-"); 继续阅读 >>


赖鑫 18/07/27 20:17:55
由于偷懒,第一次写博客,先写个简单的吧      (~o ̄3 ̄)~ 有不对的地方希望指正     ((*・∀・)ゞ→→ 最近在写ls命令时有涉及到这一部分,怎样将 通过获取文件属性函数 ---- stat  所获得的东西 转换成我们在Shell下输入“ls -l”所得到的样子,就是这样的: 那么,我们一步一步的来: 1.首先是先调用stat函数获得该文件或者目录信息                  不要忘记头文件  ヾ(≧O≦)〃 #include<stdio.h> #include<sys/stat.h> #include<sys/types.h> #include<unistd.h> #include<stdlib.h> struct stat buf; if(stat(file_name,&buf)==-1) 继续阅读 >>


赖鑫 18/07/27 19:19:05
1