- 博客(351)
- 资源 (10)
- 收藏
- 关注
原创 如何手动释放Python的内存
在上篇博客中,提到了对一个脚本进行的多次优化。当时以为已经优化得差不多了,但是当测试人员测试时,我才发现,踩到了Python的一个大坑。在上文的优化中,对每500个用户,会进行一些计算并记录结果在磁盘文件中。原本以为这么做,这些结果就在磁盘文件中了,而不会再继续占用内存;但实际上,Python的大坑就是Python不会自动清理这些内存。这是由其本身实现决定的。具体原因网上多有文章介绍,这里就不co...
2015-03-18 22:24:10 98564 10
原创 解决错误:Couldn‘t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
在使用yum install的时候,偶尔会碰见这样的错误:Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7这是因为在你的 /etc/yum.repos.d 目录下有关于yum repository的配置文件中列有如下的GPG key:gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7...
2018-02-11 20:18:18 27880 2
原创 用QT创建一个Windows Service以及踩到的若干坑
因为项目需要,做一个Tech Spike,看看用QT如何创建一个Windows Service,并实现触摸某硬件而弹出某应用程序的功能。一、自然的思路为实现“触摸某硬件而弹出某应用程序”,首先想到的是,这个触摸动作触发了一个特定的signal,而QObject的connect()函数就将这个signal与加载应用程序的动作连接起来,这样就实现了此功能。
2016-04-19 23:11:13 19254 20
原创 如何将Visual Studio的工程转成QT的工程
本文主要介绍了如何将一个Visual Studio的工程转换成一个QT的工程。同时也介绍了qmake,.pro文件,nmake和jom的知识。
2016-01-21 23:30:33 18982 3
原创 如何自己做Zabbix数据导出功能(上)
Zabbix是一款开源的监控工具,使用广泛。然而,它竟然不支持将监控数据导出。为此,本文尝试分析一下,应该如何去做Zabbix的数据导出功能。
2017-03-16 20:08:28 17806
原创 Python3中用什么替换commands模块的getstatusoutput()
先翻译一段文章:https://stackoverflow.com/questions/11344557/replacement-for-getstatusoutput-in-python-3在最后的“注意”一节中,给出笔者自己的看法。 在Python 2中,经常使用commands模块来执行shell的命令,尤其是常用getstatusoutput()函数。但是在Python ...
2017-09-29 22:16:11 17199 4
原创 iSCSI协议简介
本文综合了几篇参考文献的内容,做了删减与重组,但严格来说,不算原创。笔者笔记如下:iSCSI initiator和target的核心功能都在内核中,无须人工干预;而要人工干预的大约是这么几件事: 1. 建立iSCSI Initiator到iSCSI target的session(虽也可自动发现,但还是要有些配置)2. 建立LUN,以便位于Initiator端的系统进行块设备的挂载...
2018-10-02 23:09:58 16361
原创 PXE启动原理以及与普通Linux启动的对比
关于PXE部署的详细配置的文章已经有不少了,这篇文章主要讲一下PXE启动的原理以及PXE启动和普通Linux启动的对比。
2017-07-24 11:28:36 15323
原创 COW快照(copy-on-write)和ROW快照(redirect-on-write)的区别
概述所有快照类型的共同点是,它们都是虚拟的拷贝而不是物理的拷贝。一旦被保护对象(protected entity,一般指volume,而在对象存储的场景下指的可能是container或NAS share)遭遇损坏,所有快照都将宣告无效。做快照,通常有2个目的:一是为了将来对于删除或损坏的文件能够进行恢复;二是作为副本或备份的源端(注:比如,备份快照,而不是备份原volume)。为了防止
2018-01-25 23:31:25 14042
原创 做一个微信欢乐斗地主之残局解答器!
今年过年的时候,在玩微信小程序之欢乐斗地主。发现里面还含有一个小游戏叫做“残局闯关”,如下图。这里面的题,如果不熟悉其中的套路,有个别几道还真的不好做(下文有例子)。于是,我便萌发了设计并实现一个残局解答器的想法。从过年期间就开始利用业余时间进行coding,到今天晚上,用了大约3周左右的业余时间,终于实现出了一个基本的残局解答器。目前UI也已经全部完成。可以轻松解题了!那么,如...
2018-03-13 23:57:26 13749 11
转载 ELF文件介绍
ELF文件,大名叫Executable and Linkable Format。作为一种文件,那么肯定就需要遵守一定的格式。从宏观上看,可以分成四个部分:图中的这几个概念,如果不明白的话也没关系,下面我会逐个说明的。在 Linux 系统中,一个 ELF 文件主要用来表示3 种类型的文件:1. 可执行文件2. 目标文件3. 共享文件既然可以用来表示 3 种类型的文件,那么在文件中,肯定有一个地方用来区分这 3 种情况。在我的头部内容中,就存在一个字段,用来表示...
2022-03-31 21:48:23 13057 9
原创 关闭浏览器再打开,网站是否应该自动登录以及如何实现呢?
关闭浏览器再打开,或者说重启浏览器后,网站是否应该自动登录以及如何实现呢?要回答这个问题,首先要了解session和cookie的概念。基本概念先不说了,直接说重点。Session是一种服务器端的对象,保存在服务器端。 每个session 有一个唯一的session id。 session的超时也是由服务器来控制。比如,在Django的配置中就有一项叫做SESSION_TIMEOUT的用来控制se...
2017-12-26 00:50:36 13055 3
原创 用C++11的多线程读文件
曾经写了一篇博客做一些大数据的处理,但是其中在读取一个大文件的时候,并没有采取并行处理的方式。那么,一个大文件,为了能够批量处理,现在由多个线程来同时读它,各自读取一块(所读内容互不相同)。这么做会有问题吗?答:如果只有读线程,那么没有问题。因为,不同的线程可以创建自己的文件描述符表项,再分别指向不同的文件表项,而每个文件表项里面可以有不同的当前文件偏移量,所以没有问题。而且这种情况也根本不需要...
2019-03-03 23:27:54 12275 2
原创 为Ubuntu安装Realtek的无线网卡驱动
采用rufus制作的UbuntuU盘启动盘安装好Ubuntu 18.04之后,发现没有无线网络,不过有线可以连接。这就需要安装无线网卡的驱动了。首先,要搞清楚无线网卡的型号,否则怎会知道安装什么驱动呢。网上有人建议这么干:lspci -vv | grep Network -A 10其实这样是不行的,不会有特别准确的型号信息,至少对笔者的网卡是这样。还有人建议这么干:lshw...
2019-08-10 11:04:23 11240 1
翻译 C++11多线程之条件变量
原文: http://en.cppreference.com/w/cpp/thread/condition_variablestd::condition_variable定义在头文件<condition_variable>class condition_variable; (since C++11)condition_variable类是一个同步原语,可以被用来阻...
2016-06-04 22:12:07 11239 4
原创 Python - 实现数组相减
问题描述: 有2个数组如下a = [3,3,3,4,4,4,5,6,7]b = [3,3,4,4]第1题:从数组a中删除所有在数组b中出现过的元素。对于上例来说,a删除结束应该等于 [5, 6, 7]. 第2题:实现 c = a - b , c应该等于[3, 4, 5, 6, 7]. 先看第1题: 常规的思维大致会这么写代码:for i in a: if i i...
2018-03-04 13:23:56 11118
原创 让OpenCV枚举所有摄像头-附如何建立Windows下的OpenCV工程
因公司项目需要,开始学一点OpenCV的东西。本篇博客要介绍的是,如何在Windows平台上建立一个OpenCV的项目,以及如何让OpenCV枚举本机上的所有的摄像头。
2015-12-29 20:52:01 10789 2
原创 使用strip, eu-strip, objcopy等剥离与导回符号表及调试信息
1.符号表信息和调试信息符号表信息(symbols)和调试信息(debug info)是由不同段区分的。使用 readelf -S binfile 可以查看ELF文件的所有段。调试信息相关的段:# readelf -S a.out | grep debug [27] .debug_aranges PROGBITS 0000000000000000 000016d...
2020-01-29 16:11:41 10349
翻译 std的terminate函数
原文: http://en.cppreference.com/w/cpp/error/terminate本文翻译比较晦涩,可以只是大致了解下,也可以参考原文。
2016-05-29 22:55:21 9425
原创 比较Python和Perl的效率
本文通过一个Perl程序和一个Python程序对于多达212MB,170多万行的文本文件的分析,比较了Perl和Python程序在执行以及开发上的效率。
2016-01-09 21:53:40 9396 1
原创 解决git错误一则(unable to update local ref)
自Windows上更新了git版本之后,git pull 出错,关键字: “cannot lock ref”, “unable to resolve reference”, “reference broken”, “unable to update local ref”.$ git pullerror: cannot lock ref 'refs/remotes/origin/xxx/yyy/zzz': unable to resolve reference 'refs/remotes/origin/x
2020-12-17 22:43:34 8826 2
转载 Override注解的作用
如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override, 系统可以帮你检查方法的正确性: @Overridepublic String toString(){...} //这是正确的 一旦错写成这样: @Overridepublic String tostring(){...}编译器可以检测出这种写法是错误的 这样能保证你的确重写的方法正确. java
2015-09-20 20:39:13 8705
原创 如何自己做Zabbix数据导出功能(下)
Zabbix是一款开源的监控工具,使用广泛。然而,它竟然不支持将监控数据导出。为此,本文尝试分析一下,应该如何去做Zabbix的数据导出功能。
2017-03-17 00:18:30 8576
原创 git clone与git pull的时候不拉大文件
很多时候,人们需要在git仓库里存储一些巨大的动辄数百MB甚至数GB的二进制文件以帮助编译或部署用。git 通过 lfs 支持大文件存储。而这些大文件呢,往往也经常被更新。这就带来一个问题 - 开发人员并不需要这些巨大的二进制文件,而只是需要一些源代码文件即可。频繁的更新大文件,会浪费许多pull的时间。另外,开发人员有的时候只想在Windows机器上用IDE看看代码,而开发机上编译部署。开发...
2020-03-18 21:40:45 8550
原创 利用QProcess::finished信号(signal)来保持目标程序始终运行
QProcess有一个signal叫做finished,具体定义如下:void QProcess::finished(int exitCode, QProcess::ExitStatus exitStatus)当进程结束的时候,该signal会被发射出去。exitCode就是进程的退出码,而exitStatus就是退出状态。若在一个系统服务中,想保持另一个进程始终处于运行状态(比如某ser
2016-08-05 23:56:01 8307
原创 git如何更新fork的repository
Fork一个别人的repository,做了一些改动,想提交pull request的时候,发现原先别人的repository已经又有了一些更新了,这个时候想使得自己fork出的repository也得到这些更新,即和原repository同步,该怎么做呢?这个问题应该被问烂了,stackoverflow上也有解答,基本上是指向的GitHub上的官方文档。最主要的是这2篇:https://he
2016-05-20 20:24:22 8085 2
原创 CRUSH算法介绍
CRUSH数据分布算法的全称是:Controlled, Scalable, Decentralized Placement of Replicated Data.开源的分布式存储Ceph采用CRUSH数据分布算法以达到以下几个要求:1. 数据分布均衡2. 负载均衡3. 灵活应对集群扩容和缩容:无论是添加或删除设备,都能最小化数据迁移4. 支持大规模集群,消除因几种存储元数据而可能的...
2018-12-24 23:27:21 7712 5
原创 用gdb脚本进行自动化调试
本文首先介绍用于自动化调试的gdb脚本的基本语法和基本用法,然后给出程序实例和调试实例。在使用gdb调试程序的时候,如果想让调试自动化,该怎么办呢?比如,想关闭 confirm,关闭 pagination,打开 print pretty, 设置 system root 为当前目录,等等。如果是每次运行gdb都希望自动实现这些简单的设置,那么可以写在 ~/.gdbinit 文件中。如下:#~...
2020-05-03 23:30:37 7678 2
原创 自我黑客马拉松 -- 从零开始创建一个基于Go语言的web service
20个小时的时间能干什么?也许浑浑噩噩就过去了,也许能看一些书、做一些工作、读几篇博客、再写个一两篇博客,等等。而黑客马拉松(HackAthon),其实是一种自我挑战--看看自己在有限的短时间内究竟能做出些什么。比如:让一个毫无某种语言经验的人用该种语言去实现4个如下的Restful API(假设此种语言为Go)。
2016-03-26 22:17:41 7235
Lua编程语言详细介绍与实例(PPT)
2012-10-06
Lua5.1全三套:Lua Programming(中英文版)+中文手册
2012-07-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人