自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AnSwEr不是答案

http://answerywj.com/

  • 博客(118)
  • 资源 (1)
  • 收藏
  • 关注

原创 inline使用注意事项

文章目录GCC在不优化时不会内联任何函数,除非指定函数的“always_inline”属性。先附上结论:GCC在不优化时不会内联任何函数,除非指定函数的“always_inline”属性。​测试代码:#include <stdio.h>inline void say(void) { printf("Hello, World\n");}int main(void) { say(); return 0;}使用-O3优化选项,一切正常:$ gcc

2021-07-28 14:49:23 373 1

原创 getrusage-进程资源统计函数

文章目录简介函数说明原型参数返回值属性示例getrusage用于统计系统资源使用情况,即进程执行直到调用该函数时的资源使用情况,如果在不同的时间调用该函数,会得到不同的结果。简介getrusage用于统计系统资源使用情况,即进程执行直到调用该函数时的资源使用情况,如果在不同的时间调用该函数,会得到不同的结果。目前在Linux和macOS支持该函数。函数说明原型#include <sys/time.h>#include <sys/resource.h>int

2021-06-23 15:59:48 1573

原创 RPATH与RUNPATH的区别

文章目录RPATH与RUNPATH的区别源文件复现步骤问题原因排除共享库本身问题分析库查找过程RPATH与RUNPATH的区别解决方案LD_LIBRARY_PATH(不推荐)--disable-new-dtags参考本文从一个实际遇到的问题出发,分析 RPATH 与 RUNPATH 的区别,以及产生的原因。RPATH与RUNPATH的区别年前升级了操作系统后,同样的代码在新系统编译后无法执行,提示找不到依赖库,本文用来记录一下是如何解决这个问题的。源文件main.c :#include "a

2021-02-22 18:38:10 2558 2

原创 Git速查手册(第三版)

本文是对Git速查手册(第二版)的更新,补充了一些近期使用或者收集的一些命令。设置Git版本Git下载地址:https://git-scm.com/downloads,推荐使用v1.8及以上版本。查看Git版本:$ git --version用户信息Git配置分为三个级别:--system:系统级,位于 /etc/gitconfig;--global:用户级,位于 ~/.gitconfig;--local:仓库级,位于 [repo]/.git/config,为默认级别且优先级

2020-09-30 10:58:10 170

原创 写好技术简历的一些建议

根据我求职与招聘的经验,结合网上相关资料,这里整理了一些写好技术简历的建议。这里提供了一份简历模版,可供参考。保证内容真实性写简历必须要保证内容的真实性,这是候选人个人诚信的体现,无论在简历中如何自夸,最终会在面试过程中也会露怯;同时现在大部分企业在招聘时,都会进行背调,所以请务必保证简历内容包括面试过程的真实性,实事求是,“知之为知之,不知为不知”。项目描述不是流水账对于技术人员来说,项目经历是简历的主体,也是简历中最需要突出的部分,项目中涉及的技能和成果等,是对求职者能力最具说服力的证

2020-07-23 16:56:56 1041

原创 C代码覆盖率测试工具Gcov

文章目录介绍简介基本概念基本块BB跳转ARC程序流图原理使用编译数据收集报告生成注意事项图形化展示列表形式XML文件形式HTML文件形式其它ReferenceAbout me代码覆盖率测试反映了测试的广度与深度,量化了测试和开发质量,是十分有必要的,业界目前有针对各种语言的覆盖率测试工具,本文主要介绍C/C++相关的覆盖率测试工具Gcov介绍简介Gcov是一个测试覆盖程序,是集成在GCC中的,随GCC一起发布基本概念基本块BB基本块指一段程序的第一条语句被执行过一次后,这段程序中的每一跳语句

2020-05-17 16:33:52 1110

原创 屏蔽静态库接口

文章目录准备编译链接去除无用的符号隐藏的符号本地化(我也不知道中文怎么翻译了)打包成静态库验证调用未被隐藏的`hello()`调用隐藏的`bye()`分享屏蔽静态库接口的一种方法.准备hello.c:#include <stdio.h>__attribute__ ((visibility ("default"))) void hello() { printf("Hello World!\n");}hello.h:#ifndef __HELLO__H#define __H

2020-05-17 16:31:42 1320

原创 sysroot为何物?

文章目录sysroot为何物Reference本文介绍链接过程中sysroot的作用。sysroot为何物做过交叉编译的同学们,一定对下面这个错误十分熟悉吧:/cross-compiling/ld: cannot find crt1.o: No such file or directory/cross-compiling/ld: cannot find crti.o: No such file or directory在我们的pc上,这两个文件一般在/usr/lib或者/usr/lib32

2020-05-17 16:30:15 7853 1

原创 深究strtok系列函数

文章目录函数说明说明参数返回值示例使用注意事项不会生成新的字符串,只是在源字符串上做了修改,源字符串会发生变化第一个参数不可为字符串常量若在第一次提取子串后,继续对源字符串进行提取,应在其后的调用中将第一个参数置为空值`NULL`第二个参数是分割符的集合,支持多个分割符若首字符为分割符,则会被忽略`strtok`为不可重入函数,使用`strtok_r`更灵活和安全源码Reference本文通过分析源码,深究GLIBC中strtok和strtok_r函数的实现原理和使用过程中的注意事项。函数说明#i

2020-05-17 16:28:55 274

原创 wav文件解析

文章目录wav文件解析wav文件简介wav文件头wav文件格式编码类型wav文件读写API本文将解析wav音频文件格式,并实现一套用于读写wav文件的API。wav文件解析wav文件简介wav/wave文件格式是由微软开发的用于音频数字存储的标准,它采用RIFF(Resource Interchange File Format,资源交换文件标准)文件规范,文件扩展名为.wav,采用小端存储。wav文件头wav文件分成两部分:文件头:主要包含标准的44字节文件头或经过了一些软件处理的58字

2020-05-17 16:26:46 330

原创 将二进制文件作为目标文件中的一个段

文章目录查看该平台的ELF文件相关信息转换测试Reference本文将展示,如何将一个二进制文件(如图片、音频等)作为目标文件中的一个段,该技巧主要应用在一些无文件系统的平台。本次的实验场景为i386:x86-64 GNU/Linux,测试音频为nhxc.wav,测试程序为bin2obj.c。查看该平台的ELF文件相关信息生成目标文件$ gcc -c bin2obj.c -o bin2obj.o查看该平台ELF文件相关信息$ objdump -x bin2obj.obin2obj.o

2020-05-17 16:24:30 500

原创 Git仓库过大导致clone失败的解决方法

文章目录错误一增大postBuffer使用openssl替换gunssl错误二浅层clone本文记录工作中遇到的clone大仓库失败的解决过程,以下问题与解决方案均基于https访问。错误一从web端查看仓库大小,大约1.5G左右,首先直接执行git clone,报错如下:remote: Counting objects: 10994, done.remote: Compressing objects: 100% (3085/3085), done.error: RPC failed; cu

2020-05-17 16:22:36 6759

原创 全面理解Homebrew

文章目录Homebrew简介安装卸载解决软件源更新慢问题取消更新关闭自动更新替换软件源替换homebrew源替换homebrew-core源(核心软件仓库)替换homebrew-cask源(macOS应用)替换homebrew bottles源(预编译二进制软件包)常见错误附Homebrew常用命令确认shell版本方式本文将介绍Homebrew的安装与使用。Homebrew简介Homebrew是OS X上类似于apt-get和yum的软件包管理器,软件源依托于Github之上,所以在国内的网络

2020-05-17 16:20:00 307

原创 --hash-style兼容性问题

文章目录问题名词解释实验分析结论解决方案参考本文记录了解决 --hash-style 兼容性问题的过程。问题dlopen failed: empty/missing DT_HASH in "libxxx.so" (built with --hash-style=gnu?)最近,稳定性监控平台,被这一行错误日志霸榜,刚看到时也一脸懵逼,下面我们来逐步分析。名词解释首先需要查阅一下相关文档,了解一下其中的”新朋友”。DT_HASHELF 中的一个 Sections,保存了一个用于查找符

2020-05-17 16:10:13 2299 4

原创 cJSON的秘密

学习使用cJSON过程的一些发现和总结,不涉及具体的函数 cJSON简介cJSON是一个快速,高性能的json解析器,由C语言编写,仅包含cJSON.c和cJSON.h两个文件,不支持跨平台;跨平台推荐纯lua写的dkjsoncJSON结构体cJSON结构体的组成:typedef struct cJSON { struct cJSON *next, *pr...

2018-05-07 09:37:01 2160 1

原创 Linux下core文件使用

有时候程序会异常退出而不带任何日志,此时就可以使用code文件进行分析,它会记录程序运行的内存,寄存器,堆栈指针等信息什么是core文件通常在Linux下遇到程序异常退出或者中止,我们都会使用core文件进行分析,其中包含了程序运行时的内存,寄存器,堆栈指针等信息,格式为ELF,可以理解是程序工作当前状态转储成一个文件,通过工具分析这个文件,我们可以定位到程序异常退出或者终止时...

2018-03-07 18:36:30 382

原创 线程同步机制条件变量的使用与思考

条件变量是Linux线程同步的一种机制,与互斥量一起使用时,允许线程以无竞争的方式等待特定条件的发生关键函数初始化与注销线程等待线程唤醒示例一些思考条件变量实质是什么互斥量保护的是什么为什么用while来判断条件先唤醒线程还是先解锁ReferenceAbout me关键函数初始化与注销#include <pthread.h>// 静态初始化pthread_cond_t c

2017-12-16 14:34:43 607

原创 GCC编译ARM篇

ARM 平台下GCC编译相关介绍,待补充 ARM处理器架构ARM处理器架构,通过选项-march指定,如-march=armv7-a,目前常见的有armv5te,armv6和armv7-a等指令集指令集,通过选项-m指定,如-mthumb,常见的有 1. thumb 16位指令集,它将32位arm指令的压缩成16位的指令编码方式,,实现低功耗 2. thumb-2 16位/32位指令集,对

2017-08-07 09:08:34 6672

原创 UNIX下IO模型分析

UNIX下IO模型分析对UNIX下的五种常见IO模型分析,帮助理解 IO操作的两个阶段以读数据操作为例: 1. 等待内核数据准备(数据拷贝到内核缓冲区) 2. 将数据从内核拷贝到用户空间IO模型UNIX下共有五种常见的IO模型: 下面以recvfrom接口举例阻塞IO默认情况下,所有的套接字都是阻塞的 调用recvfrom接口,进程在IO操作的两个阶段都会阻塞,直到最终数据拷贝到用

2017-06-28 10:10:46 562

原创 记一次踩坑|空table应该编码为数组还是对象

Json有两种比较常用的数据类型:被{}包裹的对象(object),被[]包裹的数组(array)问题描述从第三方API返回的json数据,存在一个key的值为空数组,可是经过decode和encode这两步操作后,这个key的值就变为空对象了:local cjson = require('cjson')local raw = {}raw.name = 'answer'raw.list = {}

2017-06-16 17:09:49 2476 1

原创 Git速查手册(第二版)

本文是对之前Git速查手册的更新,增加了一些这段时间使用到的命令。配置git笔者使用的是v2.1.0,推荐大家使用v1.8以上的版本。 查看git版本:$ git --version配置命令git config分为三个级别:--system : 系统级,位于 /etc/gitconfig .--global : 用户级,位于 ~/.gitconfig .--local : 仓库级,位于 repo

2017-04-05 20:09:50 377

原创 科普|云计算的四种服务模式介绍

科普|云计算的四种服务模式介绍本文将介绍SaaS,BaaS,PaaS和IaaS这四种云计算服务模式,并分析之间的联系和区别。四种服务模式介绍SaaS(Software as a Service):软件即服务,SaaS公司提供完整并可直接使用的应用程序,用户通过网页浏览器即可接入使用。比较知名的SaaS有GoToMeeting,WebEx和Salesforce。BaaS(Backend as a

2017-03-23 17:03:45 7243

原创 UNIX网络编程-listen函数及其包裹函数介绍

UNIX网络编程-listen函数及其包裹函数介绍函数简介#include<sys/socket.h>int listen(int sockfd,int backlog); 返回:若成功则为0,若出错则为-1目前listen函数仅为TCP服务器调用,主要完成两个任务: 1. 将socket函数创建的还未建立连接的主动套接字转换为被动(

2017-03-23 16:56:34 906

原创 WAVE音频文件格式分析--实现C语言读写文件头

本文将详细分析WAVE音频文件的格式,并通过C语言对wave文件头进行读写操作。WAVE音频文件格式分析–实现C语言读写文件头WAVE音频文件WAVE文件格式是一种由微软和IBM联合开发的用于音频数字存储的标准, 它采用RIFF(Resource Interchange File Format,资源交换文件标准)文件格式结构文件的扩展名为“WAV”, 所有的WAV都有一个文件头, 数据本身的格式为P

2017-01-09 18:35:00 4062 2

原创 C程序判断你主机的数据存储方式(大端和小端)

本文将使用C语言编写一个可以判断你主机数据存储方式(大端和小端)的程序.C程序判断你主机的数据存储方式(大端和小端)大端和小端字节序计算机硬件存储数据的方式有两种: 大端字节序(big endian) 和 小端字节序(little endian),两者的区别可以简单理解为: - 大端: 数据高位字节放在内存低地址(人类读写的习惯). - 小端: 数据高位字节放在内存高地址.如现在有数 0x123

2016-12-07 15:54:18 1093

原创 从文件流中读写整数--C语言

本文将介绍在文本流中,读写整数的两个接口– int getw(FILE *fp)和int putw(int w, FILE *fp),并且与你分享改进后的更实用的接口– unsigned int get_uint(FILE *fp)和unsigned int put_uint(unsigned int i,FILE *fp).从文件流中读写整数–C语言我们都知道,数据在计算机内存中都是以二进制的形式

2016-12-07 10:29:59 10221

原创 Linux下C调用静态库和动态库

Linux下C调用静态库和动态库本文主要介绍Linux下C调用静态库和动态库,使用的样例文件请点击这里. 样例文件welcome.c:#include<stdio.h>#include"welcome.h"void welcome(){ printf("welcome to my code world!\n");} 这是一个样例程序,打印一句话.welcome.h:#ifnde

2016-11-23 16:29:04 9925

原创 Linux下处理json数据

Linux下处理json数据当我们在LInux下需要处理json数据时,第一反应是用脚本编写一个工具,这样即耗时又不通用. 本文将介绍专门的命令行json处理工具jq. 安装Ubuntu用户可以直接使用下列命令安装:$ sudo apt-get install jq 也可以选择源码安装,当然最简单的方法是直接下载可执行文件,不过需要找到适配你系统的版本.详细的安装方法可以参考这里.使用首先构建一个

2016-11-23 16:26:21 7965

原创 [科普]3.5mm耳机国标和美标

现在3.5mm规格的耳机已经普遍使用,但是用户会发现一些国外厂家的耳机并不适用国产手机,下面就为大家科普一下,解开这个迷题。区别美标也称为国际标准(CTIA),从头开始分别是左声道/右声道/地线/MIC。目前在市场上最流行国标(OMTP),从头开始分别是左声道/右声道/MIC/地线。从上图可以发现美标和国标的差别就在于MIC和地线的位置不同,导致会出现在听音乐时只有伴奏没有人声,只有按住接听键

2016-09-20 13:48:25 45005 2

原创 Shell脚本浮点运算

本文将介绍几种Linux下通过Shell脚本进行浮点数计算的方法。WhyBash Shell本身不具备处理浮点计算的能力, 如expr命令只支持整数运算 :#!/bin/basha=59b=60expr $a / $b运行结果 :$ ./cal.sh0$Plan A使用bc进行处理。 代码 :#!/bin/basha=59b=60echo "scale=4; $a / $b" | b

2016-09-07 14:52:03 6732

原创 Git速查手册

本手册旨在记录实际工程项目中使用的git命令,方便查找。配置git笔者使用的是v2.1.0,推荐大家使用v1.8以上的版本。 查看git版本:$ git --version配置命令git config分为三个级别:--system : 系统级,位于 /etc/gitconfig .--global : 用户级,位于 ~/.gitconfig .--local : 仓库级,位于 repo/.git

2016-09-07 14:50:57 684

原创 Hexo+Github博客备份方法

Why使用hexo+github搭建的博客,博客作为一个单独的github仓库存在,可是仓库中不包含你每篇博客的源文件。如果你换了一台机器想要更新博客或者想重新发布以前的博客,这就不好办了。我这里推荐一种云端备份的方法。How首先,在你博客的仓库中新开一个分支,作为backup(master为博客的推送分支),并且设为默认分支。将远程仓库获取到本地(两个仓库都需要获取)。每次写完博客之前,需要

2016-09-07 14:49:25 3487 4

原创 Linux的硬链接和软链接

Linux下链接的命令是ln,可以通过man ln查看.硬链接链接的是索引节点(inode),硬链接文件inode值相同(在Linux的文件系统的文件不管是什么类型都给它分配一个indoe号),所以硬链接文件不占用磁盘空间.相当于创建一个别名.有两个限制:目录不能创建硬链接;只能在同一个文件系统中进行硬链接.命令: ln srouce dest 对源文件进行修改或删除,硬链接文件会同步修

2016-09-07 14:48:11 399

原创 Git实用命令补充

Git实用命令补充这是对廖雪峰老师的git教程的一个补充,增加了一些实用却很少被提及的命令.如果你是初学者,建议先阅读廖雪峰老师的git教程.ssh连接检查git支持https和ssh等协议.https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,而ssh支持的原生git协议速度最快. 当ssh配置完成后,再次检查ssh连接情况:ssh -T [email protected]如果看到如下所

2016-07-09 00:59:10 453

原创 Github 徽章整理

Github 徽章整理 相信很多在Github上玩耍过的同学们都会发现,在很多项目的README里会有各式各样的徽章,是不是顿时感觉到很高上大?没关系,读完这篇文章你就也可以拥有这些徽章了,甚至可以定制自己的徽章。NodeJs如果这是一个用npm管理的一个包,请添加:[版本图片](https://www.npmjs.com/package/项目名)如果你使用了第三方的组件,那可以标识是否为最新

2016-06-30 11:23:25 5656 1

原创 我的源码阅读论

我的源码阅读论这是一篇随笔。最近准备开始阅读一些开源的项目,还有公司的项目源码也开放给我了,准备认认真真的进入状态啦。(PS:已经实习近两个月了,貌似进步太慢!)。因为我记性比较差,所以觉得有必要在这里记录一下自以为比较正确有效的源码阅读方法。工具论SourceInsight:据说是最好的源码阅读工具。Doxygen:可以将批注转换为说明文档。各种IDE。 其实,我觉得对于不是特别复杂的项目

2016-05-31 00:12:27 484

原创 JavaScript学习笔记

JavaScript学习笔记前言:本文是我在学习过程中的一些记录,主要通过慕课网等在线学习网站或论坛学习。JavaScript学习笔记基础语法引用方法语句与注释变量与函数数组操作符流程控制语句互动方法输出内容documentwrite警告alert 消息对话框确认confirm 消息对话框提问prompt 消息对话框打开窗口windowopen关闭窗口windowclos

2016-05-29 00:33:22 440

原创 Linux下adb devices : no permissions解决方案

Linux下adb devices : no permissions解决方案Linux下adb工具下载,下载解压到/usr/bin目录。问题当我们在Linux下连接安卓手机,进行adb调试时,执行adb devices会出现如下错误提示:List of devices attached???????????? no permissions解决方案首先创建一个规则配置文件:sudo vi /etc/

2016-04-29 18:13:46 1881

原创 Linux Shell 脚本调试总结

自制Linux屏保程序 这是一个我自制的Linux下屏幕保护程序的脚本.sl命令你没看错,是sl,不是ls. “sl”代表了蒸汽机机头,我们的屏保图像就是利用了sl所展示的蒸汽机,效果如下:在当下两个主流系统中的安装命令如下:#Ubuntu:sudo apt-get install sl#Centos:sudo yum install slsl还有一些选项,可以展示不同的效果: -a

2016-04-15 18:47:19 580

原创 可变参数(C语言):stdarg.h

可变参数(C语言):stdarg.h前言:本文将介绍C语言函数的可变参数使用,头文件stdarg.h为函数提供了类似的能力,最后会附上一个完整例程来帮助大家理解。详解头文件stdarg.h为函数提供了使用可变参数的能力,但是必须按照指定的步骤进行。1.在函数原型中使用省略号使用可变参数的函数必须要有一个参量列表,参量列表中至少有一个后跟省略号的参量:int fun(int n, ...);n表示省略

2015-12-10 22:31:01 1030 1

大作业代码

大作业代码

2013-06-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除