详解三大编译器:gcc、llvm和clang

编译器一般构成传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd)。在编译过程中,前端主要负责词法和语法分析,将源代码转化为抽象语法树;优化器则是在前端的基础上,对得到的中间代码进行优化,使代码更加高效;后端则是将已经优化的中间代码转化为针对各自平台的机器代码。GCCGCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。GCC 原名为 GNU C 语言编译器,因为它原本只能处
分类: 其他 发布时间: 10-08 23:25 阅读次数: 0

git图形化工具-gitk

gitk是一个git图形化工具,可以很方便的甩锅,哦不……查找代码,以及很多我不知道的功能可以在有git仓库的项目下打开命令行,输入gitk,大概长这样:(现在要自己安装了,可以在git官网找 到安装方式,windows的应该也差不多的)最上方显示的是每一次提交,中间是查找的功能,下方右侧是该提交所涉及到的文件,左侧则是文件的内容,可以清楚的显示修改的内容最上方的每一次提交处还可以右键,有很多功能可以选择(我主要拿来查代码,基本不用,可以自己试试),搜索上方还有该提交的哈希值...
分类: 其他 发布时间: 10-08 23:25 阅读次数: 0

Linux date命令实现日期查询与UTC时戳转换

需求使用shell自带date命令查询x天后日期 在当前时间UTC时戳之间相互转换查询命令$ date -d "1 day ago"Tue Oct 27 09:35:34 CST 2020-d参数支持自然语言输入,无符号默认为+date -d "+1 day"date -d "-1 month"还可配合格式化字符串输出指定格式date -d "1 year" +'%F %T'# %F 等效于 %Y-%m-%d# %T 等效于 %H:%M:%S转换命令#
分类: 其他 发布时间: 10-08 23:24 阅读次数: 0

libuv文件异步读写

libuv 采用了 异步 (asynchronous), 事件驱动 (event-driven)的编程风格, 其主要任务是为开人员提供了一套事件循环和基于I/O(或其他活动)通知的回调函数, libuv 提供了一套核心的工具集, 例如定时器, 非阻塞网络编程的支持, 异步访问文件系统, 子进程以及其他功能。libuv对文件操作的函数都封装在uv_fs开头的函数中,相关的handle就是uv_fs_t/uv_fs_s,这里直接贴一下测试的代码,在本地进行编译后就可以很直观的看到效果了。这里的demo功能
分类: 其他 发布时间: 10-08 23:24 阅读次数: 0

C++教程:NULL 指针、零指针、野指针

1. 空指针、NULL指针、零指针1.1什么是空指针常量0、0L、”、3 – 3、0 * 17 (它们都是“integer constant expression”)以及 (void*)0 (我觉得(void*)0应该算是一个空指针吧,更恰当一点)等都是空指针常量(注意 (char*) 0 不叫空指针常量,只是一个空指针值)。至于系统选取哪种形式作为空指针常量使用,则是实现相关的。一般的 C 系统选择 (void*)0 或者 0 的居多(也有个别的选择 0L);至于 C++ 系统,由于存在严格的类型转化
分类: 其他 发布时间: 10-08 23:24 阅读次数: 0

libuv线程池

libuv提供了一个线程池,可用于运行用户代码并在循环线程中得到通知。该线程池在内部用于运行所有文件系统操作以及getaddrinfo和getnameinfo请求。其默认大小为4,但可以在启动时通过将UV_THREADPOOL_SIZE环境变量设置为任何值(绝对最大值为1024)来更改它 。线程池是全局的,并在所有事件循环之间共享。当特定的函数利用uv_queue_work()线程池时(即使用时),libuv预分配并初始化允许的最大线程数 UV_THREADPOOL_SIZE。这会导致相对较小的内存
分类: 其他 发布时间: 10-08 23:24 阅读次数: 0

C语言中的sizeof()用法

一、sizeof的概念  sizeof是C语言的一种单目操作符,如C语言的其他操作符++、–等。注意,它并不是函数,有很多人都混淆了。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。二、sizeof的使用方法1、用于数据类型sizeof使用形式:sizeof(type); 注:数据类型必须用括号括住。如sizeof(int)。2、用于变量sizeof使用形式:sizeof(var_name)或siz
分类: 其他 发布时间: 10-08 23:23 阅读次数: 0

Linux输出的内容写入文件

有时候,你会想手动跟踪命令的输出内容,同时又想将输出的内容写入文件,确保之后可以用来参考。如果你想寻找这相关的工具,那么恭喜你,Linux 已经有了一个叫做tee的命令可以帮助你。本教程中,我们将基于tee命令,用一些简单的例子开始讨论。但是在此之前,值得一提的是,本文我们所有的测试实例都基于 Ubuntu 16.04 LTS。Linux tee 命令tee命令基于标准输入读取数据,标准输出或文件写入数据。感受下这个命令的语法:tee [OPTION]... [FILE]......
分类: 其他 发布时间: 10-08 23:23 阅读次数: 0

Linux socket里的send和recv,阻塞与非阻塞socket、TCP与UDP的区别

1. send函数#include <sys/types.h>#include <sys/socket.h>ssize_t send(int sockfd, const void *buf, size_t len, int flags);参数:sockfd是socket()的返回值,文件描述符;buf是待发送数据所在的数据区的指针;len是发送数据的长度;flags标志位,默认为0。返回值:(阻塞与非阻塞没有区别)>0表示成功将数据复制到缓冲区中,返回的值表示
分类: 其他 发布时间: 10-08 23:23 阅读次数: 0

fcntl的使用

1、获取文件的flags,即open函数的第二个参数: flags = fcntl(fd,F_GETFL,0);2、设置文件的flags: fcntl(fd,F_SETFL,flags);3、增加文件的某个flags,比如文件是阻塞的,想设置成非阻塞: flags = fcntl(fd,F_GETFL,0); flags |= O_NONBLOCK; fcntl(fd,F_SETFL,flags);4、取消文件的某个flags...
分类: 其他 发布时间: 10-08 23:22 阅读次数: 0

可执行文件格式

1.BinBin文件是最纯粹的二进制机器代码, 或者说是"顺序格式"。按照assembly code顺序翻译成binary machine code,内部没有地址标记。Bin是直接的内存映象表示,二进制文件大小即为文件所包含的数据的实际大小。 BIN文件就是直接的二进制文件,一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可。可以直接在裸机上运行。2.HexIntelhex文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都..
分类: 其他 发布时间: 10-08 23:22 阅读次数: 0

sscanf()用法

  在我的学习过程中,从文件读取数据是一件很麻烦的事,所幸有sscanf()函数。C语言函数sscanf()的用法sscanf() - 从一个字符串中读进与指定格式相符的数据.  函数原型:  int sscanf( string str, string fmt, mixed var1, mixed var2 ... );  int scanf( const char *format [,argument]... );  说明:  sscanf与scanf类似,都是用于输入的,只是后者.
分类: 其他 发布时间: 10-08 23:22 阅读次数: 0

uclibc、eglibc、glibc、Musl-libc之间的区别和联系

1.Glibc glibc = GNU C Library 是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library)。 目前,常见的桌面和服务器中的GNU/Linux类的系统中,都是用的这套C语言标准库。 其实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大。2.uClibc 一个小型的C语言标准库,主要用于嵌入式。 其最开始设计用于uClinux(注:uClinux不支持MMU),因此比较适用于微处理器中。 对应的,此处的u意思
分类: 其他 发布时间: 10-08 23:21 阅读次数: 0

【科普】为什么ip地址通常以192.168开头

我们平日的工作与生活中,与ip地址接触最多,无论是哪方面都需要跟ip地址打交道,通常我们也会经常听到公网、内网?那什么是公网ip地址呢?什么是私网ip地址呢?为什么我们常见到的ip地址以192.168开头呢?我们今天来了解下。内、外网是相对于防火墙而言的,在防火墙内部叫做内网,反之就是外网。在一定程度上外网等同于公网,内网等同于私网。一、IP地址分类公网地址是指在因特网上直接可达的地址,如果你有一个公网地址,那就意味着你不但能访问别人,还能被人访问。公网地址是架设各种服务器必不可少的条件
分类: 其他 发布时间: 10-08 23:21 阅读次数: 0

C语言高频率--typedef和const用法详解

一、typedef用法详解C语言允许为一个数据类型起一个新的别名,就像给人起“绰号”一样。起别名的目的不是为了提高程序运行效率,而是为了编码方便。例如有一个结构体的名字是 stu,要想定义一个结构体变量就得这样写:struct stu stu1;struct 看起来就是多余的,但不写又会报错。如果为 struct stu 起了一个别名 STU,书写起来就简单了:STU stu1;这种写法更加简练,意义也非常明确,不管是在标准头文件中还是以后的编程实践中,都会大量使用这种别名。1、
分类: 其他 发布时间: 10-08 23:21 阅读次数: 0

谈谈对ARM紧致内存TCM的理解

ARM的ram包括静态ram,动态ram, TCM---紧耦合内存(TCM: Tightly Coup ledMemories)。TCM是一个固定大小的RAM,紧密地耦合至处理器内核,提供与cache相当的性能,相比于cache的优点是,程序代码可以精确地控制什么函数或代码放在哪儿(RAM里)。当然TCM永远不会被踢出主存储器,因此,他会有一个被用户预设的性能,而不是象cache那样是统计特性的性能提高。TCM对于以下几种情况的代码是非常有用、也是需要的:可预见的实时处理(中断处理)、时间可预见(加
分类: 其他 发布时间: 10-08 23:21 阅读次数: 0

REACT_react使用antd-mobile UI框架

安装npm install antd-mobile --savepublic/index.html<script src="https://as.alipayobjects.com/g/component/fastclick/1.0.6/fastclick.js"></script> <script> if ('addEventListener' in document) { document.addEventListener('DOMC
分类: 其他 发布时间: 10-08 23:20 阅读次数: 0

VUE_axios使用post请求后端接受不到参数,axios使用application/x-www-form-urlencoded和application/json传递参数的两种方式表现形式

https://hbiao68.blog.csdn.net/article/details/106004100‘Content-Type’: ‘application/json’ 请求将数据转为 key=value 的形式import qs from 'qs'http({ method: 'post', url: 'http://127.0.0.1:10111/login', data: qs.stringify(data)})‘Content-Type’: ‘appl
分类: 其他 发布时间: 10-08 23:20 阅读次数: 0

REACT_react表单数据绑定封装

import React from 'react';class Index extends React.Component { state = { name:"", age:"" } change(event){ let name = event.target.name this.setState({[name]:event.target.value}) } render() { return ( <div className
分类: 其他 发布时间: 10-08 23:20 阅读次数: 0

UNI-APP_APP微信授权登录

在App中要实现微信授权则需要在微信公众平台申请一个应用,获取相应的appid和appsecret在填写申请时有2个地方需要注意:应用包名:是app打包时候可以填写的如下图位置:应用签名可以在:微信公众平台的头部导航 — 资源中心 —资源下载 中点击下载一个手机软件,输入应用包名后直接生成复制;在uniapp项目中的manifest.json 进行APP模块配置;getApploginData(data) { let that = this //这边是前端自己去调微信用户信息的接口
分类: 其他 发布时间: 10-08 23:20 阅读次数: 0