Linux
文章平均质量分 70
章志强
资深软件工程师,C/C++全栈技术专家,证券金融科技行业专家,mdb、zqdb、mytrader作者
展开
-
centos7 c++17
方案一:安装 devtoolset-7 工具包,并执行 “scl enable devtoolset-7 bash”yum install centos-release-sclyum-config-manager --enable rhel-server-rhscl-7-rpmsyum install devtoolset-7scl enable devtoolset-...转载 2020-03-27 11:27:23 · 3822 阅读 · 1 评论 -
CentOS下如何获取某个命令的源代码
以ls命令为例,其它命令类似:1.利用which命令获取命令可执行文件的位置:[root@228 /]# which lsalias ls='ls --color=auto' /usr/bin/ls2.利用rpm命令获取命令所在的安装包:[root@228 /]# rpm -qif /usr/bin/lsName : coreutilsVersion...转载 2020-03-16 18:12:03 · 652 阅读 · 0 评论 -
常用物联网应用协议汇总
本文罗列下市面上物联网通信中的各类消息技术-即工作在网络通信的应用层协议,总结下它们各自特点、特定的物联网应用场景等。这类协议都直接用于在无线或有线网络环境下的设备之间、人与设备之间的通信,物联网开发者都会与这些协议打交道。物联网联接的问题空间上图为物联网联接的问题空间,其中物联网的通信环境有Ethernet, Wi-Fi, RFID, NFC(近距离无线通信),转载 2017-04-17 12:41:30 · 1084 阅读 · 0 评论 -
gcc g++支持C++11 标准编译及其区别
g++ -g -Wall -std=c++11 main.cppgcc -g -Wall -std=c11 main.cpp如果不想每次写这个-std=C++11这个选项该怎么办呢? 方法出处:http://stackoverflow.com/questions/16886591/how-do-i-enable-c11-in-gcc 方法1:写Makefile 方法2:取别名 :alias ...转载 2018-06-15 17:35:01 · 2442 阅读 · 0 评论 -
boost::asio ssl
以 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 代替 boost::asio::ip::tcp::socket客户端connect成功之后, 需要socket().async_handshake(); 成功之后才能发起异步读写。服务端accept成功之后, 需要socket().async_handshake(); 成...转载 2018-06-24 13:40:46 · 9334 阅读 · 0 评论 -
CMAKE和RPATH
什么是RPATH?在Linux环境下,使用动态链接的程序在运行时会自动链接 ld.so 这个库(OS X上是 dyld),然后通过 ld.so 来查找链接其它的库。而 RPATH 就是编译的时候链接到执行文件的链接库路径。OS X在 RPATH 的设置上和Linux还是有点出入的,OS X的 RPATH 采用的是绝对路径。ld.so 搜索路径的优先级是这样的:1. RPATH ,编译链接时加入 -...转载 2018-06-17 14:40:02 · 19119 阅读 · 3 评论 -
git设置和保存用户名密码
[scott@scott mar_document]$ git clone http://git.idwzx.com:7990/scm/mar_document/document.gitCloning into 'document'...Username for 'http://git.idwzx.com:7990': zhangzhiqiangPassword for 'http://zh...原创 2018-06-27 09:58:21 · 1483 阅读 · 0 评论 -
使用Vs2015开发linux(centos7)程序
1.首先下载vs2015 with update32.然后下载Visual C++ for Linux Development(https://visualstudiogallery.msdn.microsoft.com/725025cf-7067-45c2-8d01-1e0fd359ae6e)Ps:另一篇文章介绍这个:(https://blogs.msdn.microsoft.com/vcblo...转载 2018-07-16 11:02:13 · 1510 阅读 · 0 评论 -
cmake构建时指定编译器架构(x86 or x64)
Windowsvs2015 x64编译器为例,cmake命令如下:Xml代码 cmake -G "Visual Studio 14 Win64" path\to\source\dir 去掉Win64,就是32bit:Xml代码 cmake -G "Visual Studio 14" path\to\source\dir 另外一种等价方式,用命令行参数-A来指定架构(x64或者ARM):X...转载 2018-06-28 10:47:10 · 8420 阅读 · 0 评论 -
gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
相关博客http://blog.chinaunix.net/uid-24954950-id-2956476.html相关博客http://blog.csdn.net/misiter/article/details/7514428相关博客http://blog.chinaunix.net/uid-23916171-id-2653114.htmlGcc 编译优化简介 gcc 提供了为了满足用户不同程度...转载 2018-06-28 11:40:43 · 25239 阅读 · 0 评论 -
Centos 7.2 failed to load SELinux policy freezing
调整SELINUX=permissive;造成一个很严重的问题就是服务器无法开机。主要是修改错误,不应该修改SELINUXTYPE=disabled 而应该修改 SELINUX 当时由于心急所以修改错了。造成不必要的麻烦。错误如图所示解决办法:1.重启系统时候在如下页面选择你要进的内核,按 E ,grub编辑页面。2.找到linux16那行 在LANG=zh_CN.UTF-8 空格 加上 seli...转载 2018-06-15 16:50:15 · 5495 阅读 · 2 评论 -
简易nginx TCP反向代理设置
nginx从1.9.0开始支持TCP反向代理,之前只支持HTTP。这是我的系统示意图:为何需要?为什么需要反向代理?主要是:负载均衡方便管控比如我现在要更新后端服务器,如果不用负载均衡的话,在更新过程中,用户会出现无法连接服务器的情况,而一旦用了负载均衡,用户此时的连接请求将会分配到别的没在更新的后端服务器去,尽可能地确保了服务的可用性;再考虑这么种情况,我有多个服务器后端,那么就需要打开多个不同...转载 2018-06-23 14:01:47 · 849 阅读 · 0 评论 -
make install - make uninstall - make clean 命令介绍
通常的安装方法是从源码安装包的目录执行以下命令:先解压 tar -zxvf soft1.tar.gz 若是bz2结尾的改用(其中第一个字母z改为j) tar -jxvf soft1.tar.bz2然后 cd soft1 #./configure #检查环境,配置编译条件,一个小数点一个斜划线不能省# make #调用gcc进行编译...转载 2018-06-23 13:38:54 · 5954 阅读 · 0 评论 -
Linux中常用操作命令
Linux简介及Ubuntu安装常见指令系统管理命令打包压缩相关命令关机/重启机器Linux管道Linux软件包管理vim使用用户及用户组管理文件权限管理 大牛笔记-www.weixuehao.com来自:http://www.weixuehao.com/archives/25Linux简介及Ubunt转载 2017-05-03 14:55:25 · 509 阅读 · 0 评论 -
C++11 并发指南系列
本系列文章主要介绍 C++11 并发编程,计划分为 9 章介绍 C++11 的并发和多线程编程,分别如下:C++11 并发指南一(C++11 多线程初探)(本章计划 1-2 篇,已完成 1 篇)C++11 并发指南二(std::thread 详解)(本章计划 1-2 篇,已完成 1 篇)C++11 并发指南三(std::mutex 详解)(本章计划 1-2 篇,已完成转载 2017-04-24 17:40:20 · 942 阅读 · 0 评论 -
C++和Lua交互教程(基于LuaBridge)
最近公司需要做向日葵远程控制软件跨平台项目,为了代码的可复用性,需嵌入跨平台脚本语言,我们选择了Lua,理由是Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,今天就跟大家分享下c++与Lua交互的一些问题。为了方便c++和lua的交互,我引进了LuaBridge。因为它源码简单易用,只有头文件,没转载 2017-10-31 17:18:46 · 1607 阅读 · 0 评论 -
gRPC基础:C++
原文地址:http://doc.oschina.net/grpc?t=57966gRPC基础:C++本教程提供了C++程序员如何使用gRPC的指南。通过学习教程中例子,你可以学会如何:在一个 .proto 文件内定义服务.用 protocol buffer 编译器生成服务器和客户端代码.使用 gRPC 的 C++ API 为你的服务实现一个简单的客户端和服务器.假设你已经阅读了概览并且熟悉prot...转载 2018-03-27 12:21:48 · 12316 阅读 · 2 评论 -
boost并发编程boost::atomic
三个用于并发编程的组件:atomic(原子),thread(线程),asio(异步io)1. atomic,封装了不同计算机硬件的底层操作原语,提供了跨平台的原子操作功能,解决并发竞争读写变量的困扰。包含头文件<boost/atomic.hpp>,atomic可以把对类型T的操作原子化,T的要求:1.标量类型,(算数,枚举,指针)2.只有平凡拷贝/转移构造、赋值和析构函数的类,并且可以...转载 2018-05-11 20:40:19 · 4929 阅读 · 0 评论 -
更新GCC版本
编译时提示“error: unknown option after ‘#pragma GCC xxx’”等信息就需要升级GCC#查看当前版本gcc --version #显示4.7cd /wget ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gztar -zxvf gcc-7.3.0.tar.gzcd gcc-7.3.0#检测和安装相关依赖包...转载 2018-06-08 09:21:24 · 1068 阅读 · 0 评论 -
解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。1. 问题原因分析为了安装最新版本的Node.js(最新版本的Node.j...转载 2018-06-08 09:22:34 · 1456 阅读 · 0 评论 -
CentOS修改防火墙 | VMware虚拟机上配置nginx后,本机无法访问问题
把nginx装在CentOS上,用本机访问虚拟机的时候却出现了不能访问的问题,查了资料以后,原来是防火墙的问题。具体情况如下:防火墙可以ping通虚拟机,虚拟机也可以ping通防火墙。接着检查了服务器端的80端口是否可以访问的到:telnet 192.168.131.130 80, 结果访问不到,原来果真防火墙的问题。做如下处理:[root@localhost html]# /sbin/iptab...转载 2018-06-23 13:15:22 · 1033 阅读 · 0 评论 -
CentOS 7 安装Boost 1.67
1. 到官网下载最新版的boost,http://www.boost.org/users/history/version_1_67_0.html2. 可能需要预先安装相关项:yum -y install gcc-c++ python-devel bzip2-devel zlib-devel3. 解压:tar zxvf boost_1_67_0.tar.gz4. 进入解...原创 2018-07-17 15:54:12 · 17446 阅读 · 0 评论 -
centos7 yum install redis
直接yum 安装的redis 不是最新版本yum install redis如果要安装最新的redis,需要安装Remi的软件源,官网地址:http://rpms.famillecollet.com/yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm然后可以使用下面的命令安装最新版本的redis:yu...转载 2018-07-06 16:05:17 · 1091 阅读 · 0 评论 -
Docker之搭建Go Web服务~~
需求最近在学习Go语言开发。既然学习了它,必然要接触Web开发。Go Web开发非常方便,在不使用任何框架的情况下即可快速搭建一个Web Server。既然有现成的框架,那就直接使用吧。 目前市面上比较流行的Go MVC框架有Revel、BeeGo等。最近正好学习了这两个框架,Revel开发一个框架非常迅速,不够需要借助一个revel命令工具。revel命令工具安装用到了golang.org域...转载 2018-11-05 14:16:54 · 838 阅读 · 0 评论 -
centos下升级git版本的操作记录
在使用git pull、git push、git clone的时候,或者在使用jenkins发版的时候,可能会报类似如下的错误: error: The requested URL returned error: 401 Unauthorized while accessing https://git.oschina.net/zemo/demo.git/info/refs fatal: HTTP...转载 2018-12-04 10:30:58 · 213 阅读 · 0 评论 -
优化或修改CentOS最大连接数限制
当我们在架设高可用服务器环境时会遇到来自于系统级别的连接数限制问题,这是因为CentOS根据系统硬件信息自己默认初始了一个限制连接数量,往往这个数量是我们遇到的问题,所以今天我们需要修改系统的默认值来达到我们需要的要求,解决一定的高并发产生的连接数问题。使用以下命令查看当前最大连接数:[root@HA ~]# ulimit -n1024修改以下配置文件:编辑/etc/securi...转载 2018-12-05 13:07:57 · 1279 阅读 · 0 评论 -
VMware设置共享文件夹之后中看不到怎么办?
点击VMWare 的菜单 VM --> Reinstall VMWare Tools,这样在Linux虚拟机端 /media 下 有个 VMware Tools文件夹,里面有个 VMwareTools-xxx-xxx.tar.gz 把它解压到其他目录(或先拷贝过去再解压,因为当前目录相当于是光驱,只读的),解压后得到一个 vmware-tools-distrib/文件夹,运行里面 vmwa...转载 2018-12-25 15:51:48 · 7198 阅读 · 0 评论 -
centos7.4安装配置使用简介Kubernetes (k8s)
Kubernetes集群部署Kubernetes集群组件:etcd 一个高可用的K/V键值对存储和服务发现系统 flannel 实现夸主机的容器网络的通信 kube-apiserver 提供kubernetes集群的API调用 kube-controller-manager 确保集群服务 kube-scheduler 调度容器,分配到Node kubelet 在Node节...转载 2019-01-14 18:03:41 · 1479 阅读 · 1 评论 -
解决Mac上adb: command not found问题
使用mac进行开发的时候,有时候需要使用adb指令来进行一些操作,但是如果没有配置过Android环境变量,可能会出现adb: command not found的问题,查了一些资料,这里记录一下mac上配置Android环境变量的方法:1 打开mac的terminal终端,输入 cd ~/ 【进入当前用户的home目录】2 输入 touch .bash_profile 【如果没有.bash...转载 2019-01-28 12:10:46 · 1342 阅读 · 1 评论 -
mac下#include nested too deeply错误处理
如果遇到下面这种错误:/usr/local/include/stdint.h:2:10: error: #include nested too deeply #include <stddef.h> ^ /usr/local/include/stdint.h:59:11: error: #include nested too deeply # in...原创 2019-01-29 10:45:56 · 4506 阅读 · 1 评论 -
jwt-cpp cmake 编译
1、通过工具安装:windows下可以使用vcpkg安装opensslubuntu下可以sudo apt-get install libssl-dev cmake lcov安装依赖mac下可以brew install cmake lcov openssl@1.1安装依赖2、通过源码安装:到openssl官网下载压缩包 http://www.openssl.org/source/...原创 2019-02-08 18:02:44 · 2256 阅读 · 0 评论 -
CentOS 7安装Docker官方指南
卸载旧版本安装新版本docker-ce前,需要先卸载旧版本docker或docker-engine,和关联依赖。 $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common...转载 2018-11-05 10:23:59 · 560 阅读 · 0 评论 -
Centos7 vscode go 开发环境搭建
如果你已经安装好了go,配置了GOROOT,GOPATH环境变量了,就可以进入下面的vscode+go的主题了,这里把自己搭建环境的过程记录一下,以便自己以后查看。安装 VS code$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc$ sudo sh -c 'echo -e "[code]\n...原创 2018-11-06 15:18:54 · 1155 阅读 · 0 评论 -
boost 进程间通讯
共享内存通常是进程间通讯最快的形式。 它提供一块在应用程序间共享的内存区域。 一个应用能够在另一个应用读取数据时写数据。这样一块内存区用 Boost.Interprocess 的 boost::interprocess::shared_memory_object 类表示。 为使用这个类,需要包含 boost/interprocess/shared_memory_object.hpp 头文件。...转载 2018-09-01 15:44:57 · 1440 阅读 · 1 评论 -
boost::asio::io_service使用时的注意事项
◆boost::asio::io_service使用时的注意事项:①请让boost::asio::io_service和boost::asio::io_service::work搭配使用。②想让event按照进入(strand)时的顺序被执行,需要boost::asio::io_service要和boost::asio::io_service::strand搭配使用。③一般情况下,io...转载 2018-09-07 13:16:23 · 3122 阅读 · 0 评论 -
VMware NAT端口映射 外网可以访问内网虚拟机
我想尝试的是利用本机的ip+port来访问虚拟机上的web服务器,因为这样的话,我就能够将我的web服务器部署成为一个能让外网访问的服务器了,首先说下我的环境:主机:系统win7,ip地址172.18.186.210 虚拟机版本是VMware Workstation 7,虚拟机下安装了Centos操作系统,ip地址是192.168.202.128,部署了LAMP,成为一个web服务器网络环...转载 2018-09-30 16:31:47 · 3873 阅读 · 0 评论 -
Protobuf使用手册
Protobuf使用手册第1章 定义.proto 文件首先我们需要编写一个 proto 文件,定义我们程序中需要处理的结构化数据,在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C 语言的数据定义,可以使用C或C++风格的注释。下面是一个proto文件的例子。 package tutorial; op...转载 2018-10-10 17:07:51 · 1529 阅读 · 0 评论 -
centos7下安装android studio运行环境
首先去android studio官方网站下载linux版本的,对应的版本如下图所示:因为android studio只是一个ide,android的编程环境三基于java的,所以要配置java jdk环境,centos7自带的jdk是openJDK,我们要卸载它,然后重新在jdk官方网站下载对应的linux版本的jdk,安装jdk,安装jdk,用linux的shell指令就可以的:...转载 2018-10-25 16:36:09 · 1761 阅读 · 0 评论 -
Android下的编译OpenSSL
1. 概述OpenSSL可以编译成ARM下面的二进制代码(动态库或者静态库),方便APP使用,APP在使用的时候,需要使用JNI来进行调用。官方WIKI有写如何为Android编译OpenSSL,地址是:https://wiki.openssl.org/index.php/Android因此也是参考这篇文章实现的。编译不太复杂,基本步骤如下:下载NDK 下载OpenSSL源码和...原创 2018-10-26 14:27:41 · 5072 阅读 · 1 评论 -
OpenSSL读写Socket
#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <netdb.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include转载 2018-10-24 13:42:36 · 922 阅读 · 0 评论