- 博客(255)
- 资源 (55)
- 收藏
- 关注

原创 About Cache Coherence, Atomic Operation, Memory Ordering, Memory Barrier, Volatile
写这篇文章的起因是看到何登成博士的一个微博问题,自己想but
2014-04-06 21:43:52
7490

原创 虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?
四条基本规则:1、如果基类已经插入了vptr, 则派生类将继承和重用该vptr2、在遇到通过基类指针或引用调用虚函数的语句时,首先根据指针或引用的静态类型来判断所调函数是否属于该class或者它的某个public 基类,如果属于再进行调用语句的改写: C++ Code 1(*(p->_vptr[slotNum]))
2013-10-11 21:34:36
5663

原创 浅谈原始套接字 SOCK_RAW 的内幕及其应用(port scan, packet sniffer, syn flood, icmp flood)
一、SOCK_RAW 内幕首先在讲SOCK_RAW 之前,先来看创建socket 的函数:int socket(int domain, int type, int protocol);domain :指定通信协议族(protocol family/address) C++ Code 123456789101
2013-10-07 16:30:55
29485

原创 十种排序算法总结(冒泡、插入、选择、希尔、归并、堆、快速,计数,桶,基数)
首先声明一下,本文只对七种排序算法做简单总结,并参照一些资料给出自己的代码实现,并没有对某种算法理论讲解,更详细的了解可以参考以下资料(本人参考):1、《data structure and algorithm analysis in c 》2、《大话数据结构》3、http://blog.csdn.net/morewindows/article/details/7961256
2013-08-01 17:16:54
70104
6

原创 从零开始学C++之boost库(一):详解 boost 库智能指针(scoped_ptr<T> 、shared_ptr<T> 、weak_ptr<T> 源码分析)
一、boost 智能指针智能指针是利用RAII(Resource Acquisition Is Initialization:资源获取即初始化)来管理资源。关于RAII的讨论可以参考前面的文章。在使用boost库之前应该先下载后放在某个路径,并在VS 包含目录中添加。下面是boost 库里面的智能指针:二、scoped_ptr先来看例程: C++
2013-07-29 17:15:51
15590
1

原创 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下: C++ Code 12template class _Ty, class _Ax = allocator >class vector;但在VC2008 中vector 还有基类,如下:
2013-07-23 18:23:10
6542

原创 从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector
一、对象语义与值语义1、值语义是指对象的拷贝与原对象无关。拷贝之后就与原对象脱离关系,彼此独立互不影响。比如说int,C++中的内置类型都是值语义,前面学过的三个标准库类型string,vector,map也是值语义2、对象语义指的是面向对象意义下的对象对象拷贝是禁止的(Noncopyable)。一个对象被系统标准的复制方式复制后,与被复制的对象之间依然共享底层资源,对任何一个
2013-07-18 20:13:45
7077

原创 从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
首先重新回顾一下关于类/对象大小的计算原则:类大小计算遵循结构体对齐原则第一个数据成员放在offset为0的位置其它成员对齐至min(sizeof(member),#pragma pack(n)所指定的值)的整数倍。整个结构体也要对齐,结构体总大小对齐至各个min中最大值的整数倍。win32 可选的有1, 2, 4,
2013-07-13 09:38:11
4978

原创 linux网络编程之socket(十四):基于UDP协议的网络程序
一、下图是典型的UDP客户端/服务器通讯过程下面依照通信流程,我们来实现一个UDP回射客户/服务器 #include #include ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t sendto(int sockfd, const void *bu
2013-06-12 09:03:05
30344
原创 工作5年的一点感想
此文写于2020年年中,博客备份下题记研究生毕业工作5年了,有一些感想,还算不上感悟,想写出来,也算是对自己这5年时光的一个交代。抬头看路刚毕业时做的是安全后台开发,曾经一个周期扫描任务跨月的问题困扰了我很久,为了解决这个问题写了一些脚本来弥补表结构设计的缺陷,甚至有一次半夜两三点还在解决潜在的问题。直到一年后我才了解到原来mysql 有partition的机制,在表名不变的情况下可以直接分区存储,直接就能解决我遇到的那个问题。另外在做扫描客户端时,还遇到一个python 多进程加锁的问题,也是反复
2022-04-26 09:11:18
3784
2
原创 学习 iOS Application Security 需要注意的一些点
http://highaltitudehacks.com/0. 基础环境 iPhone 5s 64bit iOS 8.1 已越狱1. mobileTerminal 使用 源 http://cydia.angelxwind.net 的版本;vim 版本7.1-3p,不要升级到7.3-1;2. dyld: Library not loaded: /usr/lib/libpcre.0.dyl...
2018-10-17 11:01:27
3229
原创 Struts2 S2-045 漏洞触发流程不严谨推测
// 根据 已有的一些信息和修复版本的代码,推测应该是如下的触发流程// 因为没有测试环境,也只是不严谨的代码触发流程推测,不保证正确性,欢迎大神交流分享。//core\src\main\java\org\apache\struts2\dispatcher\multipart\JakartaMultiPartRequest.javapublic void parse(HttpServlet
2017-03-07 20:04:04
4881
原创 学习 Android Application Security Series 时需要注意的一些点
最近想扩展学习下 Android 应用安全,找到一份入门指引 ,大概走了一遍,有一些注意的点且记下。1. 建议下载的 Appie 版本为 2.0,因为作者写这些文章时用的是2.0 版本,亲试使用3.1版本时 goat droid 等 app 的 db 都是损坏的如果在 cmd 内 goatdroid 执行不了,可以找到 jar 文件并 java -jar xx.jar 启动它2. 在 droze
2017-03-07 19:58:26
1482
原创 使用 github, gitbook, markdown 写博客/写书
Github 是基于 开源代码管理工具 Git 的一个代码托管平台。Gitbook 是一个命令行工具,可以把你的 Markdown 文件汇集成电子书,并提供PDF等多种格式输出。你可以把Gitbook 生成的HTML发布出来,就形成了一个简单的静态网站。Gitbook还有一个同名的平台(gitbook.io),可以发布和销售电子书。Gitbook 其实跟 Git/Github 没啥关系,但可以
2016-08-08 20:23:07
12051
原创 移动支付时代的手机和app安全设置
进入移动互联网时代,移动支付已被大多数都市上班族所接受,逛个超市如果你说不能支持支付宝或者微信支付,估计会被深深鄙视,甚至就连菜市场买菜都可以随手给阿姨发个红包,虽然她们不一定懂手机淘宝 or 微信上的收付款功能,但在微信上收红包肯定是会的。 然而,移动支付给人民带来方便之外,同样也带来一些安全隐患,假设手机丢失了,在手机本身以及 某些 app 没有做好安全设置的情况下,坏人通过
2016-07-25 15:34:53
6421
原创 apache, php, mysql 安装过程命令记录
一、安装apache httpd-2.0.64 1. ./configure --prefix=/usr/local/apache2 2. make3. make install;4. 配置/usr/local/apache2/conf/httpd.conf5. 绑定内网:Listen 本机ip :80 6. 设置根目录/usr/local/apache2,静...
2015-09-28 19:23:34
1816
原创 《Python 源码剖析》一些理解以及勘误笔记(3)
以下是本人阅读此书时理解的一些笔记,包含一些影响文义的笔误修正,当然不一定正确,贴出来一起讨论。注:此书剖析的源码是2.5版本,在python.org 可以找到源码。纸质书阅读,pdf 贴图。文章篇幅太长,故切分成3部分,这是第三部分。p316: 初始化线程环境Python 虚拟机运行期间某个时刻整个的运行环境如下图:建立
2015-05-09 11:57:27
4893
1
原创 《Python 源码剖析》一些理解以及勘误笔记(2)
以下是本人阅读此书时理解的一些笔记,包含一些影响文义的笔误修正,当然不一定正确,贴出来一起讨论。注:此书剖析的源码是2.5版本,在python.org 可以找到源码。纸质书阅读,pdf 贴图。文章篇幅太长,故切分成2部分,这是第二部分。p248: 嵌套函数、闭包和 decorator co_cellvars: 通常是一个tuple,保存嵌套的作用域内
2015-04-28 22:20:57
2812
1
原创 《Python 源码剖析》一些理解以及勘误笔记(1)
以下是本人阅读此书时理解的一些笔记,包含一些笔误的地方,当然不一定正确,贴出来一起讨论。注:此书剖析的源码是2.5版本,在python.org 可以找到源码。p9:int_repr 函数中 PyObject_Print(str, stdout, 0); stdout-->outp23:tp_as_number.nb_add --> tp_as_number-->nb_ad
2015-04-26 14:51:06
2665
原创 建议程序员都读一读的31篇论文系列笔记(1~2)
1. An Axiomatic Basis for Computer Programming. 1969年的一篇论文,主要讲用公理基础证明计算机编程的正确性,包括赋值/递推/组合/循环等。不是那么容易读懂,特别是一些数理符号,想要完全看懂估计得查不少书。扫过重要的部分,关键就是 P{Q}R, 即前置条件满足assert(P) 为true,Q是一段程序(可以是多个子程序的组合),后置条件R是人们
2015-01-30 14:10:03
4055
2
原创 JSONP存在的JSON Hijacking漏洞以及与csrf/xss漏洞的关系
在实习过程中接触过所谓的JSON Hijacking 漏洞,但最近在写论文时发现理解得不深,好像跟xss与csrf又有点区别与联系,索性深入学习了下JSONP。下面一段话截取自:http://stackoverflow.com/questions/2067472/what-is-jsonp-all-about举例
2015-01-28 22:19:49
9077
原创 linux环境常用的性能监控和协助开发调试工具
linux有诸多优秀的工具帮助我们分析服务器各项性能指标和协助开发调试工作。下面只列举比较基础的命令,且一般是集成在linux环境中而不需再次安装的命令。更多更详细的命令可以参考https://github.com/brendangregg/perf-toolsA、CPU进程相关常用工具列举下:uptime、ps、top、mpstat、pidstat等uptime: 查看系统运行时
2015-01-25 11:53:55
6673
1
原创 makefile基础和工作常用点补充
一、Makefile简介Makefile是什么,能做什么用,为什么要用?定义编译规则、自动化编译、提高效率组织文件Makefile由一组规则(Rule)组成,每条规则的格式是:例如:依赖关系如下图:注意:(1) 当我们为了执行命令而非创建目标文件时,就会使用伪目标比如 clean,伪目标总是被执行。".
2015-01-23 14:45:05
2475
原创 gdb基础命令和常用操作补充
GDB是Unix下的一个程序调试工具,类似于windows下面的VC调试器,区别在于GDB采用全命令行控制。使用GDB需要在编译时使用-g选项,gcc支持-g –O选项同时使用,但如果还在调试阶段,尽量不要-O2,也不要删除(strip)符号表。作用如下:让程序按照自己定义的要求运行,不必每次改变程序让程序在设置的断点处停住,并且检查程序
2015-01-23 11:42:51
5217
原创 在腾讯实习的那段日子:不要在难受的时候选择 '逃避/离开'
时间过得很快,从2014.6.5入职实习到2015.1.5已经是7个月的时间了,在这边还是学到了很多东西,遇到的人大多数比较nice。中间拿到了留任offer,本来也是想来深圳,也就没有再去找工作。实习过程做了不少事,也遇到一些坑,犯过几个小错误。此篇不会记录流水账,也不会写技术细节,关于生活经历可能会在空间写写吧,在这里就是做些总结,和摸索以后要走的路。工作、为人处事、心态篇:1. 尽量用低权限...
2015-01-02 12:49:24
9981
24
原创 Java与C/C++不同的一些基础知识点
1. 关键字final可以修饰类,方法和成员变量final修饰的类不能被继承final修饰的方法不能被覆盖 final修饰的变量是常量,只能赋值一次覆盖注意
2014-11-23 11:24:48
2333
原创 90% of python in 90 minutes
注:本文整理自 http://www.slideshare.net/MattHarrison4/learn-90----------------------------------------------------------------------------------------------------------------------------------------------
2014-11-09 20:41:00
2415
原创 有关Web 安全学习的片段记录(不定时更新)
1、有关html/css, js, php, cgi 的一些认识 当我们浏览器访问一个站点的静态文件,会把文件内容都下载下来(一般压缩),当然如果遇到外联的css/js,会再发起请求得到。如果我们右键查看网页源代码,一片混乱没法看,可以使用firefox + firebug,可以清晰看到html dom tree,右键inspent element 可以很快定位到tree
2014-10-26 18:59:42
4537
原创 Perl 工作积累(不定期更新)
1)url 判断是否合法: /^(http:\/\/|https:\/\/)?((?:[A-Za-z0-9]+-[A-Za-z0-9]+|[A-Za-z0-9]+)\.)+([A-Za-z0-9]+)[\/\?\:]?.*$/2)什么时候需要转义:1. 比如在"" 里面还要使用",则\"; 2. 一些特殊字符3)数据库乱码问题:在脚本中查询的表和插入的表都要设置同样的
2014-09-01 21:32:26
2735
原创 用Python socket 实现一个简单的http服务器(post 与get 的区别)、CGI、WSGI、MVC
预备知识:关于http 协议的基础请参考这里。关于socket 基础函数请参考这里。关于python 网络编程基础请参考这里。 一、python socket 实现的简单http服务器 废话不多说,前面实现过使用linux c 或者python 充当客户端来获取http 响应,也利用muduo库实现过一个简易http服务器,现在来实现一个python版的简易ht...
2014-05-27 20:22:29
18636
1
原创 从汇编角度来理解linux下多层函数调用堆栈运行状态
我们用下面的代码来研究函数调用的过程。 C++ Code 12345678910111213141516int bar(int c, int d){ int e = c + d; return e;}int foo(int a, int b
2014-05-06 21:05:03
4581
原创 腾讯2014年实习生招聘广州站offer经历(TEG-后台开发)
过去的一年学的都是linux 系统编程和网络编程方面的东西,比较熟悉的语言也是c/c++,python仅限写一些测试客户端。所以这学期开始投的实习职位都是后台开发类,比如前面笔面的网易CC(面完hr后挂)。大概3月10多号就在腾讯 join.qq.com 上注册了简历,一直等到4.12才在大学城华工笔试。期间有过怀疑,不知道自己适不适合投后台,因为大三很菜水平的时候投过技术运营,面到了hr之后还是
2014-04-27 12:08:39
10877
6
原创 2014.03.16 网易游戏TTT计划实习生笔试题
注:这份试题是本人事后回忆的,题目可能会有出入,且给出的答案不一定正确,仅供参考,欢迎指正错误。前面这些题是试卷的第I部分,试卷上面说第一部分达不到基本线直接淘汰,最终排名主要看II卷I 卷 基础题1.求1111+2*1111+....+1111*1111对7求余的结果。n(n+1)/2, 即556*1111*1111对7求余,每个数分别对7求余,余数相乘后对
2014-03-26 11:37:47
11666
17
原创 Mysql数据库学习(四):常用Mysql C API 介绍和使用、封装一个访问Mysql数据库的类MysqlDB
首先,环境是windows + vs2008,Mysql数据库已经安装好,在使用之前,需要配置工程属性,附加包含目录添加D:\Program Files\MySQL\MySQL Server 5.6\include (Mysql安装目录),附加库目录添加 D:\Program Files\MySQL\MySQL Server 5.6\lib ,附加依赖项添加 mysqlib.lib,当然
2014-02-28 21:36:57
4242
原创 详解流编辑器 sed 和 编程语言 awk
一、流编辑器 sedsed 是一个精简的、非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出。逐行读取文件内容存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。原文件内容并没有改变。(一)sed 简单用法
2014-02-19 21:45:25
3872
原创 shell programming tutorial
一、什么是shell程序以文件形式存放批量的Linux命令集合,该文件能够被Shell解释执行,这种文件就是Shell脚本程序通常由一段Linux命令、Shell命令、控制语句以及注释语句构成Shell 脚本的编写Shell 脚本是纯文本文件,可以使用任何文本编辑器编写Shell 脚本通常是以 .sh 作为后缀名第一行:指定用哪个程序来编译和执行脚本。#!/bin/
2014-02-19 14:02:40
3035
原创 Mysql数据库学习(三):表的crud操作、完整性约束、select各种查询
一、表的crud操作指增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)// select 查询后面再讲 SQL Code 12345678910111213141516171819202122232
2014-02-18 14:33:53
4359
原创 Mysql数据库学习(二):数据类型(数值类型 日期和时间类型 字符串类型)
数据类型数值类型日期和时间类型字符串类型一、数值类型整数tinyint[M] [unsigned] [zerofill] // [ ] 表示可选,这里的M表示显示宽度,并不是取值范围,显示宽度不够前面以0填充bool是tinyint(1)的别名浮点型IEEE 754浮点数表示S:符号位
2014-02-18 11:56:32
4638
1
原创 Mysql数据库学习(一):数据库基本概念、关系型数据库、Mysql数据库安装配置、DDL/DCL/DML语句
一、数据库基本概念数据库(DB)按照数据结构来组织、存储数据的仓库数据库管理系统(DBMS)数据库管理系统(Database Management System)是一套操纵和管理数据库的软件,是用于建立、使用和维护数据库数据库系统(DBS)数据库数据库管理系统(及其开发工具)应用系统数据库管理员用户二、关系数据
2014-02-18 11:10:21
9036
原创 大型网站架构演变过程、大并发服务器架构
大型网站架构演变过程:[Step1]web server与数据库分离web动静资源分离静态请求:如html, js, css, img动态请求:如jsp, php[Step2]缓存处理客户端(浏览器)缓存前端页面缓存(squid)页面片段缓存ESI(Edge Side Includes)
2013-11-14 12:39:06
9438
2
《单片机C语言程序设计实训100例基于8051+Proteus仿真》源代码
2011-08-16
分形电容 英文论文三篇
2011-08-15
cst+2010+crack
2011-08-15
Crack_dsp_builder_11.0
2013-05-01
Windows6.1-KB917607-x86 (32bit)
2011-08-15
系统程序员成长计划 PDF
2011-08-15
PROTEUS VSM help
2011-08-15
Proteus VSM SDK 英文版的中文翻译
2011-08-15
耦合多工器综合软件 带例程与帮助文档
2011-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人