学无止境
欢迎转载,转载请注明出处!原文地址
Follow me on GitHub ^_^
2017年9月17日
- 耐心积累
2017年9月13日
- 又很长一段时间没有记录了,开始win32汇编了,顺便抽抽空余时间来搞搞Qt
2017年8月28日
很长一段时间没有记录了,现在开始学习汇编了,总结一下前面二十多天的学习与项目:
-
学习使用了Frida
-
做了一个远控项目
-
做了一个三层网络架构、使用SqlServer搭建服务层数据库
-
学习了com组件的设计思想,并手动实现的一个简单地com(非com组件)
2017年8月5日
- libuv + curl 实现高并发 HTTP 请求
2017年7月28日
总结一下最近的学习:
-
理解并使用了
IOCP
模型做了一个远控软件,可以同时连接多个被控端,并同时监控所有被控端屏幕、执行cmd命令、查看/结束进程、查看文件,并使用心跳包检测状态 -
对
WireShark
底层库调用方式有了更多理解,并通过修改tshark
源码的形式抓到了http
图片、音频数据
2017年7月10日
- 准备将网络socket相关API封装成一个类,最好能够跨平台
2017年7月8日
- 在做自己的PC工具,今天搞完了进程相关的
2017年7月6日
- 开始接触
WireShark
源码^_^
2017年7月5日
- HOOK
2017年7月4日
- DLL注入
2017年6月30日
- 多线程拷贝文件
2017年6月28日
- 做一个CMD控制台
2017年6月27日
- 通过第三方库
WpdPack
获取电脑所有网卡信息 - 进程间通信
2017年6月26日
- 用MFC做了一个IP设置界面并保存到文件
- 继续练习进程相关
2017年6月25日
- 用俄罗斯方块练习SDK
2017年6月24日
- 开始SDK&MFC
2017年6月19日
- lib dll
2017年5月27日
- 又做了一天论文相关的事情,没敲代码的日期+3
2017年5月26日
- 论文定稿了,接下来要认真敲代码了
2017年5月23日
- 要回学校了,半个多月后就要毕业了
2017年5月22日
- 今天看到了很多优秀的设计、代码、文档,虚心学习,凡事要认真
2017年5月20日
-
仅两天时间就写完了为期9天的项目,总觉得对不起自己,在很多应该精致的地方都没有做到精益求精。对于这个项目,虽然实现了所有的需求,但是我只能给它打60分,不能为自己找借口。
-
项目做完了,要继续做毕业论文了,对于这篇论文,不能再马虎了,前几天用时间紧的借口来让自己对论文的写作是马马虎虎,对项目的完成也没有精益求精。现在,留出时间来写论文,相信能给自己一个满意的交代。
2017年5月19日
- 今天狂撸1400行代码,为了编码速度牺牲了很多,虽然在这段特殊时间里能够快速按要求完成项目,但给未来的功能扩展留下了隐患,这是一个教训
2017年5月18日
- 好的设计决定了好的代码
2017年5月16日
- 开始倒腾百万数据的数据结构设计
2017年5月15日
- 大半夜和朋友折腾GPG的各种功能,这是个非常好的产品,安全性极高,但使用成本也比较高,对于我而言使用命令行比图形界面舒服得多,但是对于普通大众来说用起来只会有一个感觉:麻烦。如果这样的加密工具能够简化到让大众可以轻易使用的程度,可能重视个人隐私的普通人也就会有一个好的保护工具了
2017年5月14日
- 折腾了
Git
的团队写作功能,在GitHub
上创建了组织并进行了系列的实验,在团队写作中保护master
分支尤为重要
2017年5月13日
- 多思考、多动手
2017年5月12日
- 发现一个虚函数的小坑 - Link
2017年5月9日
- 继线索二叉树之后,现在开始研究平衡二叉树了
2017年5月8日
- 毕业论文,尽快完成
2017年5月7日
懂规矩比技术好更重要。软件安全行业更是如此,并没有无法破解的壳,只不过是壳的作者人缘好,所以能破解的人都没有公布破解方法。这个和古代的镖局一样。
拉风就那几秒钟,吃苦很多,跟狙击手训练一样。这个行业,脱壳、去保护并不是一个常量问题,不是努力就有结果,这个是一个对抗问题。主要是看对手的实力,比如练拳再好,打泰森也打不赢。
钱老师语录
2017年5月6日
- 人生苦短。。。Python。。。
2017年4月27日 - 5月1日
- 吃豆人游戏终于做完啦 - Game Code
2017年4月26日
- 发现头文件中有小问题并将其修复
2017年4月25日
- C++异常处理
2017年4月24日
- 写了一篇长文《探索C++虚函数在内存中的表现形式及运行机制》
- C++模板继承、文件操作、输出输出流结构
2017年4月23日
- 总结C++虚函数原理和其在内存中的表现形式
2017年4月22日
- C++智能指针的简单实现
2017年4月21日
- C++菱形继承、虚继承、智能指针、模板
2017年4月20日
- C++虚函数继续探索、纯虚函数、接口、多重继承
2017年4月19日
- C++多态与虚函数实现原理
2017年4月18日
- C++继承相关知识
2017年4月17日
- 完成实践,采用传函数指针的方式实现底层逻辑和输出逻辑分离
2017年4月16日
- 实践引用计数、单例模式、组合对象
2017年4月15日
- 搞了一个用于调试和节省少许时间的头文件
2017年4月14日
- C++引用计数、重载
new; new[]; delete; delete[]
、重载转换
2017年4月13日
- C++友元运算符重载
2017年4月12日
- C++重载运算符、编译器对无名对象的优化
2017年4月11日
- C++静态对象成员、参数列表、常成员
2017年4月10日
- 探索C/C++的
va_list
原理 - Article - C++拷贝、析构、堆对象(数组)创建与释放
2017年4月9日
- GPG加密工具
2017年4月8日
- 实现
CMystring
类
2017年4月7日
- C++函数重载与类
2017年4月6日
- 了解C语言程序调用函数时,函数压栈的情况
- 踩C++
cin.gitline();cin.get();
的坑,探索Release
版中的inline
2017年4月5日
- 探索 C++ 与 C 的不同
2017年4月3日
- 修改学生管理系统Bug
- 合并相邻空碎片
- 输入缓冲区溢出问题
2017年4月2日
- C语言学生管理系统(基于文件)第四天 完成所有功能 - Code
2017年4月1日
- C语言学生管理系统(基于文件)第三天 - Code
2017年3月31日
- C语言学生管理系统(基于文件)第二天 - Code
2017年3月30日
- C语言学生管理系统(基于文件)第一天 - Code
2017年3月25日
- 实现了线索二叉树 - code
- 完成了KMP算法的推导与实现 - code
《大话数据结构》书中的KMP算法的实现是定义字符数组第0位为保存字符串长度,从第1位开始才是字符串,所以算法的实现也是从第一位开始的。而我觉得这样有些不实际,毕竟一个字符数组要转化成第一位保存长度的数组需要对数组每一位进行操作拷贝或移动操作,浪费时间。
所以我就采用自定义了一个包含长度和字符数组的结构体,对其进行后续的操作,但是这样算法的实现就要从下标0开始了,next
数组第一位和j
的初始值就要设为-1,和书中采用的实现方法产生了冲突,于是自己推导新的实现,最终采用相反的逻辑顺序实现了。
自第一次实现KMP到现在才开始推导和实现我的想法,已经三个月了,这拖延症,真没法了。。。
2017年3月24日
- 数据结构基础练习
2017年3月23日
- 数据结构基础练习
2017年3月22日
- 数据结构基础练习
2017年3月21日
- C++基础练习
2017年3月20日
- C++基础练习
2017年3月19日
- C语言版坦克大战,完成所有功能,等待使用C++重构 - Code
- C++基础练习
2017年3月17日
- C语言版坦克大战第四天,完成所有基本功能 - Code
2017年3月16日
- C语言版坦克大战第三天,完成碰撞检测,重写输出逻辑 - Code
2017年3月15日
- C语言版坦克大战第二天,功能实现 - Code
2017年3月14日
- C语言版坦克大战第一天,抽象所有元素为一个结构体 - Code
2017年03月13日
- 《C和指针》第十二章练习题7 - Code
2017年03月11日
- C语言基础练习
2017年03月10日
- C语言基础练习
2017年03月09日
- C语言基础练习
2017年03月08日
- C语言基础练习
2017年03月07日
- C语言基础练习
2017年03月06日
- 二进制转换
2016年12月21日
- KMP算法 - Code
2016年12月15日
- 练习了《算法笔记》第四章第1节 - 排序
在练习题中采用了比书中更有效的方法 - Code
2016年12月14日
- 练习了《程序员代码面试指南》第一章第9节 - 最大值减去最小值小于或等于num的子数组数量 - Code
2016年12月13日
- 练习了《程序员代码面试指南》第一章第8节 - 最大子矩阵 - Code
- 看完了《编码:隐匿在计算机软硬件背后的语言》:接下来阅读《现代操作系统(第3版)》
2016年12月12日
- 向用汇编写程序的前辈们致敬
2016年12月11日
- Python是很优秀的语言!
2016年12月09日
- 阅读了《编码:隐匿在计算机软硬件背后的语言》15到19章:
在实现自动操作中,条件跳转是重中之重,通过由逻辑门组成的各种计数器、选择器、累加器、加法器、锁存器等组合之后可以实现在存储器中寻址、获取数据、存储数据与条件跳转等功能,从而实现了自动操作。
这些硬件的组合实现了计算机芯片的简单原型,而各种复杂的自动操作组合成的编码就是软件开发!这个程度的编码其实是在内存中存入相应的操作码和数据码,通过硬件的寻址与跳转功能对这些存储器中的数据进行操作。而对这些操作码起别名(助记符)、建立规则就形成了汇编语言!
2016年12月08日
- 阅读了《编码:隐匿在计算机软硬件背后的语言》前14章:
理解了如何使用继电器实现二进制的加减法,以及如何使用由继电器制作的边沿触发器作为计数器;似乎明白了为什么简单的晶体管能够实现功能如此强大的计算机芯片,其实这些复杂的机制背后都是由这些简单的编码组合实现的。
2016年12月07日
- 完成了LevelDB的文档翻译工作 - 文档翻译
- 注释了LevelDB的
include/leveldb/slice.h & status.h
2016年12月06日
2016年12月05日
- 开始阅读LevelDB源码 - 总结
- 在阅读过程中使用OpenGrok辅助,但是发现很多时候需要使用VIM,但是在VIM插件不多的情况下有些力不从心,于是继续丰富VIM功能,把VIM打造成了一个强大的IDE - 参考
2016年12月04日
- 学习了《算法笔记》第六章
- 练习了《算法笔记》第六章 - vector - Code
2016年12月03日
- 练习了《C++ Primer》练习册第七章 - Code
2016年12月02日
- 继续学习C++
2016年11月26日
- 学习了《C++ Primer》四到六章
2016年11月25日
- 学习了《C++ Primer》第三章
2016年11月24日
- 学习了《C++ Primer》前两章
2016年11月23日
- 练习了《程序员代码面试指南》第一章第7节:打印窗口最大值 - Code
- 练习了《程序员代码面试指南》第一章第6节:用栈实现汉诺塔 - Code
- 练习了《程序员代码面试指南》第一章第6节:用递归实现汉诺塔 - Code
2016年11月22日
- 练习了《程序员代码面试指南》第一章第5节:用一个栈实现另一个栈排序 - Code
2016年11月21日
2016年11月18日
- 复习了《C和指针》第十、十一章
2016年11月17日
- 练习了《C和指针》第九章——第17题 - Code
2016年11月16日
- 练习了《C和指针》第九章——第16题 - Code
2016年11月15日
- 练习了《C和指针》第九章——第15题 - Code
2016年11月11日
- 复习了《C和指针》第九章
- 验证书中关于strtok函数返回指针内容的错误 - Code
2016年11月10日
- 练习了《C和指针》第八章——问题4 - Code
2016年11月9日
- 复习了《C和指针》第八章
2016年11月08日
- 复习了《C和指针》第七章
- 练习了《C和指针》第七章——第6题 - Code
2016年11月04日
- 练习了《C和指针》第六章——第4题 - Code
- 复习了《C和指针》第五章——第4题
2016年11月03日
- 复习了《C和指针》第六章——指针
2016年11月02日
- 复习了《C和指针》第四、五章
- 《C和指针》第五章练习题5 - Code
2016年11月01日
- 练习了《C和指针》第三章练习题 - Code
2016年10月31日
- 复习了《C和指针》第三章
2016年10月26日
- 复习了《C和指针》前两章 - Code
2016年10月24日
2016年10月23日
- 练习了《大话数据结构》中线性表的单链表建立方式 - Code
2016年10月20日
- 没有练习代码
- 玩儿GitHub博客和MarkDown了
- 有半天时间被紧急的事情占用
2016年10月19日
- 练习了《大话数据结构》中线性表的数组建立方式 - Code