C
EnjoyCodingAndGame
Nothing raplaces hard work.
纸上得来终觉浅,绝知此事要躬行。
展开
-
Linux下进程创建与修改
前言函数fork()用来创建一个新的进程,该进程几乎是当前进程的一个完全拷贝,继承了了父进程整个进程的地址空间(代码段、堆栈段、数据段),包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等。当父子进程中对共有的数据段进行重新设值或调用不同方法时,才会导致数据段及堆栈段的不同。函数族exec()用来启动另外的原创 2016-09-09 17:25:38 · 2838 阅读 · 0 评论 -
YOLO源码(Darknet源码)解读(convolutional_layer.c)
#include "convolutional_layer.h"#include "utils.h"#include "batchnorm_layer.h"#include "im2col.h"#include "col2im.h"#include "blas.h"#include "gemm.h"#include <stdio.h&原创 2018-04-24 15:07:40 · 3369 阅读 · 1 评论 -
YOLO源码(Darknet源码)解读(layer.c)
#include "layer.h"#include "cuda.h"#include <stdlib.h>void free_layer(layer l){ if(l.type == DROPOUT){ if(l.rand) free(l.rand);#ifdef GPU if(l.rand_gpu) ...原创 2018-04-24 11:27:10 · 769 阅读 · 0 评论 -
YOLO源码(Darknet源码)解读(yolo.c)
yolo.c#include "darknet.h"// 20个类别定义char *voc_names[] = {"aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow",原创 2018-04-13 11:17:57 · 3480 阅读 · 2 评论 -
YOLO源码(Darknet源码)解读(darknet.c)
main函数int main(int argc, char **argv){ //test_resize("data/bad.jpg"); //test_box(); //test_convolutional_layer(); if(argc < 2){ fprintf(stderr, "usage: %s <function>\...原创 2018-04-12 20:36:14 · 1991 阅读 · 1 评论 -
YOLO源码(Darknet源码)解读(network.c)
network.c#include <stdio.h>#include <time.h>#include <assert.h>#include "network.h"#include "image.h"#include "data.h"#include "utils.h"#include "blas.h"#i原创 2018-04-18 10:44:37 · 4827 阅读 · 2 评论 -
YOLO源码(Darknet源码)解读(utils.c)
utils.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <assert.h>#include <unistd.h>#include <float.h>#include &l原创 2018-04-18 10:42:57 · 1101 阅读 · 0 评论 -
Fuzzing简介以及使用AFL对LibTIFF进行模糊测试
1. Fuzzing简介Fuzz testing or Fuzzing is a software testing technique, often used to discover security weaknesses in applications and protocols. The basic idea is to attach the inputs of a program to原创 2017-12-16 20:20:36 · 3669 阅读 · 2 评论 -
递归与尾递归(Tail Recursion)
1、递归 关于递归的概念,我们都不陌生。简单的来说递归就是一个函数直接或间接地调用自身,是为直接或间接递归。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。用递归需要注意以下两点:(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。递归一般用于解决三类问题原创 2016-10-07 15:56:49 · 4364 阅读 · 1 评论 -
offsetof宏分析
offsetof宏定义:#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER)对这个宏的讲解我们大致可以分为以下4步进行讲解:1>( (TYPE *)0 ) 0地址强制 "转换" 为 TYPE结构类型的指针;2>((TYPE *)0)->MEMBER 访问TYPE结构中的MEMBER数据成员;3>&( (转载 2016-10-22 13:30:49 · 593 阅读 · 0 评论 -
C语言中宏定义(#define)时do{...}while(0)的价值
1. 增加代码的适应性下面的宏定义没有使用do{...}while(0)#define FOO(x) foo(x); bar(x);这样宏定义,单独调用不会出现问题,例如:FOO(100)宏扩展后变成:foo(x);bar(x); 这样调用FOO没有任何问题,但是FOO(x)不能放入控制语句中,例如if (conditi转载 2016-10-11 16:11:22 · 1285 阅读 · 0 评论 -
常量指针与指针常量的区别
一、”const int” 与 “int const” 我们需要明白,const放在数据类型(int)前面和数据类型(int)后面是一样的。所以 const int *ptr 与 int const *ptr 是等价的二、简单理解“const int *ptr”, “const int * const ptr”, “int * const ptr”的本质含义 在原创 2016-09-25 21:31:27 · 651 阅读 · 1 评论 -
atoi在glibc 2.24中的实现的相关源代码
glibc 2.24atoi.c 1 /* Copyright (C) 1991-2016 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can原创 2016-09-08 00:09:41 · 1209 阅读 · 0 评论 -
POSIX thread (pthread) libraries
POSIX thread (pthread) librariesThe POSIX thread libraries are a standards based thread API for C/C++. It allows one to spawn a new concurrent process flow. It is most effective on multi-processor o转载 2016-09-16 21:42:45 · 1507 阅读 · 0 评论 -
cJSON source code reading
JSONhttp://www.json.org/json-zh.htmlcJSON.h/* cJSON Types: */#define cJSON_False (1 << 0)#define cJSON_True (1 << 1)#define cJSON_NULL (1 << 2)#define cJSON_Number (1 << 3)#def原创 2016-08-22 21:45:59 · 789 阅读 · 0 评论 -
YOLO源码(Darknet源码)解读(im2col.c)
#include "im2col.h"#include <stdio.h>// 获取图像像素值float im2col_get_pixel(float *im, int height, int width, int channels, int row, int col, int channel, int pad){ r...原创 2018-04-27 15:11:45 · 1137 阅读 · 0 评论