经验教训-先明确需求
最近工作中遇到一个问题,完成一个工作后发现自己的实现方式不够精简,主要是当初没有分析好需求的原因。
需求来了最近要做一个linux下brasero刻录工具的刻录审计的功能。审计内容包括:刻录文件名称、大小、刻录机类型、刻录时间、刻录结果。
解决方法通过了解,brasero在刻录光盘的时候会在/tmp目录下产生临时刻录日志文件,日志文件中记录有刻录文件的名称和绝对路径,通过分析日志文件就能获取刻录文件名称、刻录时间、刻录结果,根据文件名称可以计算文件大小信息,所以文件的大小也可以获取到。
另外刻录
...
内存的申请和释放
C语言中的我们有时候需要手动申请内存空间,而手动申请的内存空间需要我们自己释放掉。这里我想总结一下变量与内存空间的关系。
变量一般情况下,c程序中存在有全局变量,局部变量,静态变量,函数参数变量,字符串常量等类型的数据,这些数据存放的地址在内存中是不同的,有些变量在程序执行完退出时或者跳出该变量作用域时由系统释放响应的内存地址。但是有些变量占用的内存地址在跳出作用域后不能由操作系统自动释放,只能在程序退出时由操作系统决定是否释放,但是这就要看操作系统的心情了,有可能会出现没有释放的情况。如果跳
...
进程间同步-信号量
最近项目中看到有的代码中使用到了信号量,想到之前数据库操作时多个线程同时写数据库造成的程序异常,加上信号量就可以解决异常了。
我的理解信号量是进程间或线程间同步的一种方式,这是与锁有区别的,锁是限制进程或线程访问相同的资源,某一时刻该资源只能由一个进程或线程访问,但是信号量可以指定一个或多个进程或线程同时执行某一个操作,用于进程间的同步。
另外需要注意的是进程间通信和线程间通信信号量的使用是不同的,这里主要介绍线程间通信时信号量的使用方法。
这里有一篇介绍信号量的文章,介绍得比较仔细,有兴
...
python中迭代器与生成器
参考文章:https://foofish.net/iterators-vs-generators.html
一直对python迭代器和生成器的概念不理解,其实没有什么特别复杂的概念,只是自己没有静下心来好好理解。
概念提到迭代器和生成器,就会牵扯到另外两个概念:可迭代对象和容器。所以我们要整体介绍一下容器、可迭代对象、迭代器、生成器,而且这样的排序从概念上来说是依次深入具体的。先从一个图片开始。
先整体说一下这几种概念之间的关系:
容器是一种数据结构,能够存放不同类型的数据到容器内部,常见的
...