
linux
文章平均质量分 61
hacker_lpy
学的通信工程专业,做过一年的java J2EE开发,现在从事C++开发,熟悉windows程序设计及linx后端服务器开发
展开
-
虚拟硬盘数据恢复(vmdk、vdi、vhd等虚拟磁盘文件)
首先给自己做了难么多尝试后总结一些经验,可能让很多对磁盘分区,文件系统不熟悉的读者遇到类似的问题时少走很多弯路。(1)很多磁盘恢复、磁盘分区工具是可以直接读取虚拟机使用的虚拟磁盘文件(包括vdi,vmdk,vhd等格式的虚拟磁盘文件)的。比如windows下的diskgenius磁盘恢复工具,就可以直接打开这些虚拟磁盘文件,但是diskgenius并不支持所有的文件系统类型,比如Linux下常用的LVM文件系统类型,diakgenius就只能显示出虚拟磁盘文件里面的分区信息,无法读取分区里面的数据。原创 2024-09-24 23:11:13 · 4016 阅读 · 0 评论 -
openvpn配置使用静态密钥
openvpn客户端在和服务端建立连接时,一般建立ssl通信,流量都需要经过加密。正常建立ssl连接的时候,流程是很复杂的,需要握手信息,需要验证证书,需要协商和交换对称加密密钥。这个对称加密密钥是用来做什么的呢?其实ssl在建立连接前期的协商步骤中使用非对称加密算法(一般为RSA算法),是为了交换某些生成后续对称加密密钥所必须的信息,避免在网络中明文传输对称加密的密钥。一旦协商完成,对称密钥也就交换完成,后续的通信,都是使用对称加密来通信。为什么不能全程都使用非对称加密来加解密数据?原创 2024-02-25 15:07:24 · 3219 阅读 · 0 评论 -
VirtualBox 网络连接配置
我们在windows上使用linux虚拟机,一般网络需要两个要求:1、虚拟机里面要能访问到外网(互联网) 2、能从宿主机连接进入到虚拟机 在virtalbox的设计看来,这两个需求是独立的,因此就设计了不同的网络连接方式。最常用的是 网络地址转换(NAT)和 仅主机(Host-Only)网络。其中网络地址转换(NAT)是为了使虚拟机能通过虚拟的 NAT设备接入外网,而仅主机(Host-Only)网络就是为了能从宿主机能访问到虚拟机。原创 2023-12-28 15:09:49 · 2537 阅读 · 1 评论 -
虚拟机文件瘦身
减小VirtualBox虚拟硬盘文件的大小 (bbsmax.com)转载 2023-02-03 17:29:00 · 206 阅读 · 0 评论 -
windows换行符(\r\n)与unix换行符(\n)互转
因为windows下文本的换行符为\r\n,而unix下只为\n,因此windows换行符(\r\n)与unix换行符(\n)互转,最直观的做法是直接用sed替换。windows换行符转unix换行符:sed -i -e 's/\r\n/\n/g' test.txtunix换行符转windows换行符:sed -i -e 's/\n/\r\n/g' test.txt原创 2022-05-14 12:23:16 · 5013 阅读 · 0 评论 -
awk 命令使用示例
1、 如何在awk脚本内部调用shell命令2、awk 脚本内部如何获取外部变量3、awk 数组4、使用awk 去除重复行比较简洁的写法是下面这样:echo -e "aaa\nbbb\naaa"| awk '!a[$0]++'但是上面的写法比较难理解,比较易懂的写法如下:echo -e "aaa\nbbb\naaa" | awk '{ if (!a[$0]++) { print $0 } }'5、awk 脚本内部给外部变量赋值原创 2022-04-07 16:34:49 · 1036 阅读 · 0 评论 -
解决centos ssh可以使用却无法传文件的问题
今天想在宿主机windows和虚拟机linux里面传文件,发现无论是用sz还是pscp,都无法使用,提示是SFTP的问题,上网百度了一下,解决办法是修改/etc/ssh/sshd_config文件将Subsystem sftp /usr/libexec/openssh/sftp-server改为Subsystem sftp internal-sftp重启后就可以了,不知道这是啥原理,之前是好好的可以用,这个虚拟机是从vm ware 移植到virtual bo...原创 2021-07-17 09:41:12 · 3000 阅读 · 0 评论 -
使用互斥锁和条件变量实现windows的Event
#include<iostream>#include<unistd.h>#include<pthread.h>using namespace std;class DEvent{ public: DEvent(bool bSet):bSet(bSet) { pthread_mutex_init(&mutex, NULL); pthread_cond_init(&cond, NULL); } ~DEvent().原创 2021-02-27 18:18:21 · 364 阅读 · 1 评论 -
升级linux c++标准库
最近在自己的虚拟机运行某个项目用到的程序的时候,报错:./yimi_camera_proxy: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./libexport_cpp_utility.so)./yimi_camera_proxy: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./libexport_cpp_u原创 2020-05-19 12:27:24 · 3119 阅读 · 0 评论 -
虚拟机里的 centos 使用静态ip地址
自己装了个虚拟机运行centos版本的linux,有时候启动linux的时候分配的ip地址往往不一样,都要重新查看ip地址后才能用xshell连接,很麻烦,因此想把linux机器的ip地址配置成静态的。其实配置静态ip地址是很简单的,只需要修改一下网卡配置文件,但是是新手,往往出现这样那样的问题配置不成功。折腾了一阵终于可以了,记录一下操作步骤1、进入目录:/etc/sysconfig/net...原创 2019-10-15 14:36:21 · 401 阅读 · 0 评论 -
总结避免死锁的几种方法
最近项目中用到一些多线程的知识,涉及到一个线程需要锁住多个资源的情况,这就会涉及到多线程的死锁问题。特此总结一下死锁产生的方式有好几种,并不是只有一个线程涉及多个锁才会出现死锁的情况,单个锁也有可能出现死锁。1、第一种常见的情况是加锁之后没有解锁。有可能是lock之后真的忘了unlock,这种比较少见也容易发现。但是有时候程序并不是跟我们预想的一样一帆风顺的走完流程,可能是在lock和un...原创 2019-10-14 18:04:45 · 15346 阅读 · 1 评论 -
使用websocket++库监听端口失败:asio listen error: system:97 (Address family not supported by protocol)
最近使用websocket++这个库来与网页保持长连接通信,这个库的底层使用的是boost库中的asio来进行socket通信。我在windows上编译之后可以正常监听端口,通信也正常,但是编译成linux版本,在centos 版本2.6.32-696.10.1.el6.x86_64上运行,端口监听时会报asio listen error: system:97 (Address family no...原创 2019-09-27 15:19:05 · 2482 阅读 · 1 评论 -
linux 打包(tar)和复制(cp)中的软链接问题
在linux下会有软链接(也叫符号链接),类似于windows的快捷方式。在复制或者打包带有软链接的文件时,稍不注意就会出错。如果没有特殊的参数,打包或者复制命令会把符号链接文件替换为真实的文件。正确的做法为:当使用tar命令时加参数p来保持软连接当使用cp命令时加参数P(大写的)来保持软连接...原创 2019-09-23 11:52:31 · 8095 阅读 · 0 评论 -
centos 自动化安装redis
有时候在linux上安装个程序就很麻烦,要看教程,找地方下载,安装编译,很多时候各种各样的错误需要解决,最近准备学习redis,需要安装一个,正好看到开源项目Teamtalk里有自动安装的脚本,特地分享出来,一个命令就能完成,省事多了,下面是脚本源码,可以自己保存成.sh文件然后执行就可以了。安装完成之后,只要输入redis-cli -h 127.0.0.1 -p 6379打开red...原创 2019-08-19 11:41:26 · 167 阅读 · 0 评论 -
centos 7 安装boost(1_70_0)库
最近项目中用到boost库的很多东西,包括boost::function、共享指针boost::share_ptr、字符串处理、网络通信库、文件处理等等,觉得这个boost库功能十分强大,所以在自己电脑上按装学习一下。(1)安装方法有好几种,下面给出一种最简单的安装方式,使用yum命令: yum install boost yum install boost-dev...原创 2019-07-09 20:23:38 · 14147 阅读 · 2 评论 -
【转】CentOS 7下protobuf的源码编译安装
CentOS 7下protobuf的源码编译安装转载 2019-05-16 15:44:02 · 229 阅读 · 0 评论 -
C++ const关键字的用法
之前对const这个关键字也有一些了解,但是也就停留在一知半解的状态,面试的时候别人一问,才知道自己孤陋寡闻了。今天特地总结了一下const的各种用法。也许const关键字是在c++中用途最多最广的关键字了。 const顾名思义就是为了定义常量而设计的,即不想改变数据的值。const可以修饰变量,指针,对象,函数参数,函数返回值,以及成员函数本身。用const修饰的各种...原创 2019-03-23 15:23:48 · 661 阅读 · 0 评论 -
linux进程的七种状态
在学操作系统原理的时候,书上都说进程分为5种状态,分别为:新建状态、就绪状态、运行状态、阻塞状态,结束状态他们的转换关系如下图但是查了linux的进程状态之后,发现并不是那么回事,linux进程状态分为7种,分别如下:1、R (TASK_RUNNING):运行状态,即包括了上图中的就绪状态和运行状态2、S (TASK_INTERRUPTIBLE):可中断的睡眠状态,即上图中的阻...原创 2019-03-10 18:14:21 · 4938 阅读 · 0 评论 -
linux僵尸进程
僵尸进程产生的原因:子进程先于父进程结束,而父进程又没有调用wait或者waitpid函数回收子进程,这时候子进程就成为了一个僵尸进程。但是如果父进程此时结束,系统就会回收子进程,即子进程就不是一个僵尸进程了。僵尸进程产生的条件是父进程还没结束,但是又不调用wait或者waitpid函数回收子进程。另外,如果父进程先于子进程结束,这也就成了有些人所说的孤儿进程。孤儿进程会被init进程接管...原创 2019-03-10 16:54:49 · 342 阅读 · 0 评论 -
【转】linux守护进程
守护进程就是在后台运行且不与任何终端关联的进程在网上看到一位仁兄总结的不错,摘抄如下:守护进程的一般编写步骤:脱离控制终端(父进程),使父进程为init 禁止进程重新打开控制终端 关闭文件描述符(从父进程继承了文件描述符,最好先进行关闭,避免不必要的系统资源的浪费) 更改工作目录(避免工作目录被卸载) 重设文件创建掩码(避免创建文件的时候权限和我们所需要权限不一致)以下...转载 2019-03-10 14:57:21 · 141 阅读 · 1 评论 -
本地主机客户端访问不了VMware虚拟机里的服务器
最近使用windows的客户端访问vmware虚拟机里面的服务器失败,显示connection refused。服务器是linux contos版本,可以用windows的putty连接上linux,windows端ping linux主机也可以ping通。因此断定链路是没有问题的,问题应该出现在防火墙过滤规则上,网上找了一下解决办法,在linux输入如下两个命令就可以连接上了: iptab...原创 2018-09-17 16:58:20 · 3671 阅读 · 1 评论 -
linux和windows平台下,获取套接字缓冲区中待读取字节数的方法
在进行网络套接字编程的时候,当数据到来时,需要读取数据,但是有时候需要确定有多少数据需要读取,在linux和windows平台下都有特定的函数进行获取,并且参数都一样。linux下的使用ioctl函数:u_long avail =0;ioctl(socket, FIONREAD, &avail);其中socket为套接字标识符,FIONREAD为获取待读取数据大小的标志,...原创 2018-09-14 14:58:41 · 1248 阅读 · 0 评论 -
【转】CMake生成的可执行文件能够gdb调试
最近在看开源项目TeamTalk的源码,想要调试一下,发现调试不了,因为原来的编译脚本没有加入调试信息,百度了一下,只需要在CMakeLists.txt文件中加入下面三行代码:SET(CMAKE_BUILD_TYPE "Debug") SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")SET(CMAKE_CXX_...转载 2018-09-07 16:42:01 · 805 阅读 · 0 评论 -
【转】VMware内CentOS7虚拟机硬盘扩容
centos版本参考这篇博客https://blog.youkuaiyun.com/Wang_Xin_SH/article/details/77872885我做的时候也参考这篇,但是我的是xfs系统,调整文件系统大小,必须使用xfs_growfs命令调整,若其他文件系统,如ext4使用resize2fs命令,注意区分VMware 虚拟机(linux)增加根目录磁盘空间的方法 ...转载 2018-08-30 22:13:58 · 279 阅读 · 0 评论 -
gdb调试的一些技巧
【1】虽然list已经很方便了, 但还是不尽人意. 如果能够在运行的同时显示代码就好了, 答案是肯定的.使用如下命令启动gdb:gdb -tui main或者在启动gdb后, 输入命令focus或layout:【2】linux下,程序出现崩溃都会在可执行文件的目录生成core文件,此时可以使用core文件查看崩溃时的调用堆栈,命令:gdb 程序名 core文件名然后就像平时的...原创 2018-06-12 11:16:31 · 503 阅读 · 0 评论 -
vim 使用的一些总结
vim是一款高效的代码编辑器,刚接触vim不久,还需要学习很多东西,有必要把一些心得记录下来,以便于以后查看首先,vim的一些基本的使用可以参考菜鸟教程网站上的总结:http://www.runoob.com/linux/linux-vim.html【1】关于vim缩进在命令模式下,输入 >> 增加缩进当前光标所在行 , << 减少缩进在插入模式下 组合键 CTRL + ...原创 2018-05-28 11:59:56 · 200 阅读 · 0 评论 -
【收藏】shell中各种括号的作用详解()、(())、[]、[[]]、{}(推荐)
最近在学linux shell,搞不清楚各种括号的用途,在网上找了一篇详细介绍,很有用,以后可以多参考http://www.jb51.net/article/123081.htm转载 2018-05-04 11:03:18 · 273 阅读 · 0 评论