linux
IT超人
软件开发,各种语言
展开
-
linux命令
1. 查看bin中的文件名:readelf --syms bin2. 查看debug信息中的文件名路径等:readelf --string-dump=.debug_str (必须使用-g编译)3. c++命名粉碎反转:nm bin | grep xxx | cut -d " " -f 3,3 | c++filt原创 2022-04-19 15:24:11 · 1073 阅读 · 0 评论 -
ubuntu使用相关
ubuntu查看显卡驱动并安装适配的显卡驱动https://blog.csdn.net/qiancaobaicheng/article/details/95096354原创 2021-01-14 16:00:50 · 110 阅读 · 0 评论 -
ubuntu virtualbox修改磁盘vdi的格式
You can convert a dynamic sized VDI or VMDK into a fixed (and faster) fixed size disk when you deploy your VM using VirtualBox tools.VBoxManage clonehd dynamic.vdi fixed.vdi --variant Fixed...and if you need to resize the disk you can use:VBoxManag原创 2021-01-13 15:01:29 · 161 阅读 · 0 评论 -
ubuntu18安装virtualbox
1. 报错No rule to make target 'arch/x86/tools/relocs_32.c'解决办法:sudo apt install linux-source sudo apt-get install linux-headers-5.4.0-42:i386原创 2021-01-06 17:31:45 · 2174 阅读 · 0 评论 -
win10安装spacemacs
1、下载emacs最新版26.12、解压emacs到你的安装目录,我的系统是D:/Program File/。执行/bin目录下的addpm.exe 这一步会在开始菜单创建快捷方式3、在系统环境变量中添加新项HOME(具体环境变量设置方式请自行google),该变量的路径决定了emacs启动时.emacs.d目录的搜索路径。我在系统变量中设置HOME值为:D:\Program Files\emacs-26.1 。指定到emacs解压目录下,这样你的.emacs.d文件夹位置作相应调整。以下步.转载 2020-07-14 22:05:16 · 384 阅读 · 0 评论 -
深入理解TCP协议(下):RTT、滑动窗口、拥塞处理
前言此文为系列文章的下篇,如果你对TCP不熟悉的话,请先看看上篇《[通俗易懂]深入理解TCP协议(上):理论基础》 。上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种...转载 2019-12-03 20:54:45 · 501 阅读 · 0 评论 -
liunx查看python的site-packages路径
有时候我们在liunx上想修改查看python的包路径可以试试以下命令from distutils.sysconfig import get_python_libprint(get_python_lib())如图:转载 2019-11-28 16:29:31 · 508 阅读 · 0 评论 -
OTA升级flash分区
什么是在线OTA升级- OTA是Over-the-Air的简写,空中下载技术的意思。- OTA在线升级在日常消费电子产品中很常见,比如手机,机顶盒等,通过网络,下载升级数据包,更新操作系统等底层固件进行系统更新升级。- 在线升级系统对于批量化消费电子产品来说是相当重要的。因为销售给客户的电子产品,其中的软件系统可能有潜在的bug或者功能为...转载 2019-03-01 15:47:36 · 1253 阅读 · 0 评论 -
git track远程分支
在本地初始化仓库,提交代码时会出现,上游为空,当前分支为选择,等错误提示。其实就是本地仓库分支和远程仓库分支并未进行关联,即本地分支未追踪到远程分支。1.本地和远程的状态本地: 本地所有的文件显示,是本地仓库的所有文件,当你在此文件夹进入git Bash Here首行末尾会显示当前所在分支(一般是默认的本地分支master) 本地可以创建多个分支,但当前仓库会...转载 2019-03-25 17:05:41 · 6800 阅读 · 0 评论 -
binutils工具集用法
addr2line用于得到程序指令地址所对应的函数,以及函数所在的源文件名和行号。在不少嵌入式开发环境中,编译器的名称往往不是gcc,而是想arm-rtems-gcc这样的,对于这种命名形式的编译器,读者通常可以找到arm-rtems-addr2line ,arm-rtems-objdump等相应名称的工具,这是GNU工具集的一种命名惯例。本文并不是binutils工具集的完...转载 2019-03-26 22:24:52 · 5447 阅读 · 2 评论 -
socket connect阻塞和非阻塞处理
建立socket后默认connect()函数为阻塞连接状态,在大多数实现中,connect的超时时间在75s至几分钟之间,想要缩短超时时间,可解决问题的两种方法:方法一、将socket句柄设置为非阻塞状态,方法二、采用信号处理函数设置阻塞超时控制。在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未完成;同...转载 2019-03-27 23:07:57 · 3036 阅读 · 1 评论 -
arm寄存器介绍
寄存器介绍 首先,寄存器是什么?如果你从事过嵌入式开发,写过单片机程序、写过linux内核驱动、焊过电路板画过PCB,那么你肯定对寄存器不陌生,因为在单片机程序和内核驱动程序中,你需要经常与寄存器直接打交道(当然排除只用固件库开发的模式,比如stm32就提供了寄存器开发和固件库开发两种模式)。如果你是上层开发人员,寄存器对你而言可能仅仅是一个概念。 程序在被编译为机器码...转载 2019-03-28 17:38:26 · 619 阅读 · 0 评论 -
git-flow工作流说明
本文以一虚拟项目为例,描述了Git Flow在项目中的应用;还以此为主线,以表格形式给出了速查手册;最后,结合这两点介绍了一个基于Git Flow的项目实例。希望这篇文章能够帮助Git初学者尽快上手。1.1 什么是Git Flow?Git Flow实际上是一种软件项目管理模型,由大牛Vincent Driessen提出,核心思想如所图 1示。从中可以看出,主分支有master...转载 2019-04-08 15:52:50 · 219 阅读 · 0 评论 -
linux proc/xx/maps文件分析
转载:https://blog.csdn.net/lijzheng/article/details/23618365Proc/pid/maps显示进程映射了的内存区域和访问权限。对应内核中的操作集为proc_pid_maps_op,具体的导出函数为show_map。内核中进程的一段地址空间用一个vm_area_struct结构体表示,所有地址空间存储在task->mm->mmap链...转载 2019-05-21 12:16:54 · 1602 阅读 · 0 评论 -
Linux 下 UltraEdit 版本: 16.1.0.18 破解 30 天试用限制
rm-rfd~/.idm/uex rm-rf~/.idm/*.spl rm-rf/tmp/*.spl转载 2019-05-22 21:22:34 · 2108 阅读 · 0 评论 -
解决firefox ubuntu无法打开页面的问题
firefox备份用户配置信息https://support.mozilla.org/zh-CN/kb/%E5%A4%87%E4%BB%BD%E4%BD%A0%E7%9A%84%E4%BF%A1%E6%81%AF把xxxxxxxx.default 覆盖掉xxxxxxxx.default-release里面的内容原创 2019-05-28 11:06:41 · 11392 阅读 · 0 评论 -
ubuntu下wireshark添加root权限
wireshark要监控eth0,但是必须要root权限才行。但是,直接用root运行程序是相当危险,也是非常不方便的。解决方法如下:1.添加wireshark用户组sudo groupadd wireshark 2.将dumpcap更改为wireshark用户组sudo chgrp wireshark /usr/bin/dumpcap 3.让wireshark用户组有root权限使用d...转载 2019-07-02 21:57:06 · 653 阅读 · 0 评论 -
tcpdump抓包并保存到远程服务器
有的时候,运行tcpdump抓包进程的主机A可能没有足够的硬盘空间。例如我们使用树霉派搭建了一个热点,然后我们想在树霉派上抓包,因为树霉派的存储很小,所以很容易在短时间内将存储空间使用完。为了解决该问题,我们可以使用下面的指令将tcpdump的结果重写向到另外一台主机B上。命令:tcpdump -i eth0 -w - | ssh jmh@pcB -p 22 "cat - > p...转载 2019-07-10 11:06:09 · 2438 阅读 · 0 评论 -
ssl握手过程和ca证书验证
转载:https://www.cnblogs.com/cposture/p/9029014.htmlSSL 认证可以将 SSL 服务器与客户端之间的通信配置为使用单向或双向 SSL 认证。单向 SSL 认证一般是客户端利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”...转载 2019-07-05 17:38:23 · 3260 阅读 · 0 评论 -
linux内存管理和原理分析
https://blog.csdn.net/rebirthme/article/details/50402082转载 2019-07-17 19:51:42 · 128 阅读 · 0 评论 -
google gn构建系统的介绍
GN语言和操作GN语言和操作 内容 介绍 使用内置的帮助 设计理念 语言 字符串 清单 条件语句 循环 函数调用 作用域和执行Scoping and execution 命名事物 文件和目录名称 构建配置 目标 CONFIGS 公共配置 模板 其他特性 Imports 路径...转载 2019-07-17 20:06:54 · 2269 阅读 · 0 评论 -
为什么free()时不需要传指针大小
malloc()和free()是c中两个非常基本的函数,但这种最基本的东西往往都是特别复杂的。malloc和free的原形如下:void *malloc(unsigned int num_bytes);void free(void *ptr);在c的标准中并没有定义这两个函数的具体实现,在我们最常用的gcc中,malloc使用的是ptmalloc的实现,最早由Doug Lea完成,并被Wolf...转载 2018-06-04 15:12:50 · 2809 阅读 · 0 评论 -
Buildroot构建指南--快速上手与实用技巧
Buildroot官方全英文使用手册的链接是https://buildroot.org/downloads/manual/manual.html,需要知道每一个细节的朋友,可以仔细查阅,这篇文章只是我自己从中提炼出来的一下快速上手的技巧。如何在现有项目加入自己的APPBuildroot从零开始构建的过程还是很复杂的,以后的文章会一步步介绍。我们先来看看如何在现有项目中加入一个自己的应用的构建...转载 2019-03-01 15:32:37 · 229 阅读 · 0 评论 -
makefile 中 =, :=, ?=, +=的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endififeq ($(...转载 2019-02-28 15:53:37 · 121 阅读 · 0 评论 -
valgrind massif内存分析
valgrind检查内存泄露#valgrind ./程序内存泄漏问题,我们有memcheck工具来检查。很爽。但是有时候memcheck工具查了没泄漏,程序一跑,内存还是狂飙。这又是什么问题。。。其实memcheck检查的内存泄漏只是狭义的内存泄漏,或者说是严格的内存泄漏,也就是说,在程序运行的生命周期内,这部分内存你是彻底释放不了了,即,你失去了这些地址。其实还有第二种类型的...转载 2018-07-30 21:07:55 · 7207 阅读 · 1 评论 -
gdb+gdbserver
内容摘要 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用 GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。 就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序...转载 2018-07-26 19:58:39 · 333 阅读 · 0 评论 -
嵌入式linux内存使用和性能优化
这本书有两个关切点:系统内存(用户层)和性能优化。这本书和Brendan Gregg的《Systems Performance》相比,无论是技术层次还是更高的理论都有较大差距。但是这不影响,快速花点时间简单过一遍。然后在对《Systems Performance》进行详细的学习。由于Ubuntu测试验证更合适,所以在Ubuntu(16.04)+Kernel(4.10.0)环境下做了...转载 2018-07-19 11:52:45 · 2455 阅读 · 0 评论 -
c++成员函数指针typedef
A tutorial on a useful yet poorly understood language feature,useful to cache the outcome of a decision or to enable a different sort ofpolymorphism. Mike CrawfordConsulting Software Engineermike@sog...转载 2018-06-05 11:43:30 · 2203 阅读 · 0 评论 -
ubuntu16.10 lenovo拯救者笔记本无线网络开关修复方法(联想拯救者 + ubuntu16.04 + WIFI设置)
一、问题描述本人使用的是联想超极本yoga2 pro,默认装入Win8系统,然当装入Ubuntu双系统时,会出现无线硬件开关关闭的问题,当然也就无法连网。使用rfkill list all会出现如下提示0:ideapad_wlan: Wireless LANSoft blocked: noHard blocked:yes1:ideapad_bluetooth: Bl转载 2017-11-01 23:48:15 · 6992 阅读 · 0 评论 -
git管理大项目或者大文件
git 是追踪代码库演进的最佳选择,并且它能让你与你的同事间高效协作。当你想要追踪的库非常巨大时会发生什么?在这篇文章里,我会尝试着给你一些想法和技巧来恰当地处理不同种类的大仓库。两种大代码库如果仔细想想,大概会有两种导致仓库大规模增长的原因:项目累积了非常长的历史(项目成长了很长一段时间并且积累了包袱)。项目包括了巨大的二进制资产,需要与代码一起跟...转载 2018-05-27 11:35:55 · 6875 阅读 · 0 评论 -
ubuntu添加sudo权限
使用如下命令可以添加到用户组(也可是超级用户组)。命令如下:sudo usermod -aG 超级用户组名 用户名例子:sudo usermod -aG sudo username其中a:表示添加,G:指定组名第二种方法是直接修改,/etc/sudoers修改sudoes文件也有两种形式,其一是给单个用户添加sudo权限。方法是将这一行天追加udoers文件中:username ALL=(AL...转载 2018-05-16 11:44:25 · 19853 阅读 · 0 评论 -
pkg-config工具在实际工程中的用法
在如今这个开源的环境里,想要开发某个功能,我们都会下意识的上网搜索有没有开源库,如果有开源库,那么好,下载下来给它编译好,使用。但是在使用过程中,你是否遇到不知如何将第三方库编译,链接到自己的工程中?怎么改makefile就是改不好?是否看到开源库lib/中pkgconfig文件夹,想都没想这是干什么用的,打开.pc文件也不知所云?那么好,今天我就总结下开源库中pkgconfig文件夹中.pc文件...转载 2018-04-18 14:25:10 · 307 阅读 · 0 评论 -
while read line无法读取最后一行的问题
while read line读取文件时,如果文件最后一行之后没有换行符\n,则read读取最后一行时遇到文件结束符EOF,循环终止,虽然此时$line内存有最后一行,但程序已经没有机会再处理此行,因此可以通过以下代码来解决此问题:while read line || [[ -n ${line} ]]; do...done这样当文件没有结束时不会测试-n $line,当遇到文件结束时,仍然可以...转载 2018-04-18 14:08:40 · 4988 阅读 · 0 评论 -
linux内存实际占用分析
作者: 黄永兵/译 出处:51CTO.com 阅读提示:本文是为那些经常疑惑的人准备的,“为什么一个简单的KDE文本编辑器要占用25M内存?”导致大多数人认为许多Linux应用程序,特别是KDE或GNOME程序都象ps报告一样臃肿...【51CTO.com独家译文】本文是为那些经常疑惑的人准备的,“为什么一个简单的KDE文本编辑器要占用25M内存?”导致大多数人认为许多Linux应用程序,特别是K...转载 2018-07-27 18:07:23 · 7356 阅读 · 0 评论 -
proc/[pid]/maps 文件解释
proc/[pid]/maps 文件解释查看进程的虚拟地址空间是如何使用的。 该文件有6列,分别为: 地址:库在进程里地址范围权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有;偏移量:库在进程里地址范围设备:映像文件的主设备号和次设备号;节点:映像文件的节点号;路径: 映像文件的路径每项都与一个vm_area_struct结构成员对应范例: 应用程序的正文段(...转载 2018-07-27 18:42:41 · 1883 阅读 · 0 评论 -
I2C和SPI总线优缺点对比
IIC vs SPI现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。IIC 开发于1982年,当时...转载 2019-01-18 14:22:45 · 6945 阅读 · 0 评论 -
物联网11种通信协议
今天的网络通信技术也是日新月异,有众所周知的WIFI、Bluetooth、Zigbee、2G、3G、4G蜂窝网络,也有新兴的LiFi、AirGig、量子通信等,更有物联网产业爆发前夜,市场衍生出来的一些比较有前景的通信技术,如以窄带物联网NB-IOT为代表的商业化应用,众多技术都是根据不同的应用场景,为解决不同现实问题而被开发出来。下面让我们见识一下这些技术到底应该如何应用?蓝牙重要的短距...转载 2018-12-25 21:03:10 · 5423 阅读 · 0 评论 -
利用c语言结构体和union实现类似c++的public,private的实现
最近在看strongswan源代码,看到strongswan的代码框架很有意思,用C语言实现类的思想。当我们编写完一个模块,我们需要提供的是H的文件给其他模块使用,我们希望H文件中就只能包含一些公有函数,和一些类型的申明,不希望其他模块篡改我们C文件私有的变量,访问我们的私有方法,strongswan的代码实现这种类思想,举个简单的例子,如图:比如左侧C文件是一个主程序,可以调用模块1和模块2...转载 2018-12-29 17:10:41 · 1895 阅读 · 0 评论 -
systemd用法
一、开机启动对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。$ sudo systemctl enable httpd上面的命令相当于在/etc/systemd/system目录添加一个符号链接,指向/usr/lib...转载 2018-12-19 16:43:38 · 279 阅读 · 0 评论 -
ssh远程执行多个命令
shell远程执行: 经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了。一下介绍两种shell命令远程执行的方法。前提条件: 配置ssh免密码登陆对于简单的命令: 如果是简单执行几个命令,则:ssh user@remoteNode "cd /home ; ls" 基本能完成常用的对于远程节...转载 2018-11-16 17:07:52 · 30776 阅读 · 0 评论