2 速趴赛亚金

尚未进行身份认证

我要认证

努力成为优秀的程序员

等级
TA的排名 23w+

Linux命令之awk详细介绍

1.简介awk是linux下的一个强大的文本分析处理工具,同时awk其实是一门编程语言,它支持条件判断、数组、循环等功能。awk处理数据的方式是逐行扫描文件,对符合条件的行进行处理。接下来,我们一起来了解一下awk的基础使用。2.awk命令解析awk命令的格式如下:awk [选项] '脚本命令' 文件名常用的选项主要有以下几种:-F //指定输入的分隔符-f //从脚本文件中读取awk的命令,取代从命令行输入指令-v //设置一个变量awk命令中的脚本命令由两个部分组成,如下:'匹

2020-07-03 00:13:58

c++ const的详细总结

1.const关键字c语言关键字const是constant的缩写,意思是不变的。当程序员定义了一个const对象,则编译器就不允许程序员再对该对象进行修改,相当于该对象仅仅是一个只读对象。const语法变化多端,而且许多面试中也会涉及到const的相关知识点。所以在此做一个总结,加深一下const的印象,也方便自己以后回顾相关的知识点。2.定义一个const对象定义一个const对象非常简单,只要对普通的对象加上const的修饰成了一个const对象:const int i = 10; cons

2020-06-30 23:50:04

C++程序的内存布局

1.c++内存布局对于一个C/C++程序员来说,搞清楚一个C/C++程序在计算机内存中的布局尤为重要。了解了程序在计算机内存中的布局,对程序员解决段错误,内存泄漏等问题也有一定的帮助,也能更加深刻的理解一个程序。在一个32位的Linux操作系统上,计算机将会为每一个进程分配4GB的虚拟空间。其中高地址的1GB内存为内核空间,低地址的3GB空间为用户空间,如下:代码中的所有内存分配操作都会在各个进程的用户空间进行。而3GB的进程用户态空间又会被分为好几个区域,用来分配不同类型数据的内存,具体的分布如下

2020-06-28 23:05:15

Thrift的安装及分布式调试

1.Thrift的简单介绍Thrift是一个跨语言跨平台的服务部署框架,由Facebook在2007年开发,2008年进入Apache开源项目。Thrift通过接口定义语言来定义RPC的接口和数据类型,再通过Thrift编译器生成不同的语言代码,并由生成的代码负责RPC协议层和传输层的实现。其架构如下:在上图中,最上层的是用户的业务逻辑代码,中间两层则是thrift编译器生成的代码,用于结构化数的解析,发送和接收等。TProtocol则是协议层,定义了数据的传输格式,主要支持数据格式有二进制格式、压缩

2020-06-22 19:25:11

C++11 新特性总结——全干货(上)

序言作为一名C/C++程序员,C++11的新特性想必大家多多少少都了解一些。对于实际项目,C++11的很多新特性给每一位C++程序员带来了不少的便利,例如智能指针,正则,自动推导,多线程编程等等;零一方面,对于面试,C++11又是很多面试的高频考点。因此,掌握C++11的新特性真是百利而无一害。对于BOOST库比较熟悉的人应该知道,实际上C++11许多的特性都是从BOOST中参考过来的。BOOST库被誉为是准标准库,有时间学习学习BOOST库也是一个不错的选择。好了,废话不多说,下面一起来看一下C++11

2020-06-07 19:03:16

C++深浅拷贝的理解

1.浅拷贝概念:浅拷贝也叫位拷贝,即在拷贝发生时,编译器只是将对象中的值按照基本的数据类型复制过来。例如以下就是个简单的复制过程:int a = 10;int b = a;将a的值赋给b的过程就是一个浅拷贝过程,这不会有任何问题。但是如果一个类中包含有指针成员变量,采用浅拷贝则会引发一些问题。例如以下:#include <iostream>#include <string>using namespace std;class String{public: St

2020-05-17 13:39:38

c++ static_assert关键字

前言static_assert在c++0x中加入该关键字,用来做编译期间的断言,也叫静态断言。该关键字是从c语言的assert中继承过来的,但是assert是在运行期间的断言。static_assert语法static_assert的语法有两种:static_assert ( 布尔常量表达式 , 消息 ) (C++11 起)static_assert ( 布尔常量表达式 ) (C++...

2020-05-06 19:32:29

c++智能指针----unique_ptr

前言继auto_ptr智能指针之后,在c++11中又提供了三种智能指针,分别是unique_ptr,shared_ptr和weak_ptr。auto_ptr在上一篇文章中以及详细介绍过了,接下来我们就来了解一下其他的几种智能指针。unique_ptr通过上一篇文章的学习(auto_ptr详解),我们知道auto_ptr在赋值之后会产生悬挂指针,稍不注意就会因为访问悬挂指针而导致程序奔溃。为了...

2020-05-06 16:25:56

Ubuntu中安装ICE3.7.3

前言上一篇博客,我大概讲述了一下ICE中间件在windows上搭建的过程以及跑通一个小的demo。今天,我们来看一下Ubuntu下如何安装ICE,在Ubuntu上安装ICE相对于windows上简单一些。安装过程1.下载并且解压ICE源码压缩包以及第三方库源码的压缩包。2.使用install指令安装部分第三方库。sudo apt-get install libssl-dev liblmd...

2020-04-28 18:21:50

C++设计模式之策略模式

前言在日常生活中,我们经常会遇到为完成某件事情,通常我们的方法都有很多种选择。例如,从上海去北京,我们可以坐火车,坐飞机或者自己开车去。事实上,在软件开发中也经常会有相类似的情况,当需要实现某一需求或功能时,可能存在多种算法。例如,在做一道算法题时,我们可以根据要求的时间复杂度或者空间复杂度采取不同的算法去实现。假设这样一种场景,当我们要出门旅游时,去近的地方,我们可能选择自驾,去远一些的地方...

2020-04-12 22:21:22

ICE中间件环境搭建

前言本次搭建ICE中间件的环境对我来说还是比较艰辛的,一来是没有听过ICE中间件,连个初学者都算不上,二来网上关于ICE的环境搭建少之又少,而且很多都是java的,而我需要搭建的是C++相关的。不过好在功夫不负有心人,经过不断的琢磨,总算是把环境搭建好了并且运行demo,测试结果也符合预期。正好有时间,所以就把整个过程记录一下,也算是自己的一个小总结,也可以给正要搭建ICE环境的朋友们一个参...

2020-04-02 13:26:35

进程/线程绑定到特定CPU核的linux实现(有代码有实例)

前言现在计算机上的CPU大多都是多核的,有4核甚至是8核的。但是一个计算机启动之后其进程数是远远多于CPU核数的,因为操作系统会给自动调度这些进程在CPU核上轮流运行。但是对于应用程序或者进程,其性能要求较高时,可能有必要绑定该进程到指定的CPU核来运行,避免调度带来的额外开销。我自己也是因为最近的项目上有需要进程运行在指定的CPU核上的要求,所以了解了一下这项技术,并且将过程和总结记录于此。...

2020-01-07 14:21:18

使用boost处理xml和json

前言由于工作需要,后面可能会处理xml和json相关的数据。因此在前期就需要确定采用哪种库来处理两种数据格式的文件。考虑到跨平台和库的流行程度,最终选择使用boost库来处理这两种文件,下面我就记录一下我在windows和linux两种环境下搭建boost库环境以及简单测试一下boost库如何处理这两种文件的。搭建boost环境1.到boost官网上下载boost源码: http://www...

2020-01-02 17:21:13

c++智能指针之auto_ptr详解(有源码有实例)

前言内存泄漏大概是每一个c/c++程序员最深恶痛绝的问题,因为大部分此类问题都是令广大c程序员很抓狂,掉头发的疑难杂症。而内存泄漏的根本原因就是指针的使用不当引起的,例如指针指向的内存没有释放,导致产生了程序无法控制的内存块,而随着程序不断执行,这样的内存越积越多,最终导致程序使用的内存空间不够导致宕机等一些严重的后果。为了解决这种让人讨厌的问题,c++提供了一系列的智能指针例如auto_ptr...

2019-12-26 14:44:31

c++设计模式之装饰模式

前言装饰,顾名思义,就是对现有的物件进行优化,比如加一些好看的物件等等。例如拍出来的照片需要进行美化,刚建好的房子需要装修等等。在软件设计中,有时候也需要对现有的类进行“装饰”,以满足客户的要求。装饰模式的定义装饰模式:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰模式能够实现动态的为对象添加新的功能,并且是从类的外部来增加...

2019-12-19 19:55:42

c++设计模式之适配器模式

前言在生活中,经常出现因为两个对象的接口不兼容而不能一起工作的情况。例如中国人和美国人进行交流,就需要一个翻译;还有家用的220V电压在给一些电器如手机,电脑等进行充电时就需要电源适配器,还有一台电脑要读取一张sd卡的数据也需要将sd卡先插在读卡器上,再插在电脑上才能读取数据,这些都是因为两个对象之间的接口不兼容,所以需要一个适配者来使他们能够一起工作,在软件设计中依旧如此。当软件设计中出现这种...

2019-12-18 20:01:36

makefile的使用总结(一)

概述什么是makefile?或许也有许多的程序员不知道是什么是makefile,特别是windows上开发的程序员对此应该是了解的更少了。但是我觉得作为一个合格的程序员特别是linux环境下开发的程序员,是不能不掌握makefile的。想必许多unix程序员在编译小型程序或者测试程序都写过类似 g++ test.c -o test这样的编译命令吧。但是在大型工程,特别是包含了许多源文件的时候,...

2019-12-17 13:59:30

c++隐式类类型转换和explicit关键字详解

前言关于c++中的隐式类型转换,一种是内置数据类型的转换,还有一种就是自定义数据类型的转换,例如类。下面我们来详细探讨一下c++中隐式类类型转换。在c++prime中有:可以用单个形参来调用的构造函数都定义了从形参类型到类类型的隐式转换。在这里需要特别注意用单个形参来调用的构造函数并不是一定只有一个参数,它可以有多个参数,但是这些形参都是有默认值的。下面会通过几个例子把这两种形式(构造函数只有...

2019-12-16 10:46:15

c++设计模式之代理模式

前言在某些情况下,客户不能或者不想直接访问一个对象时,可以通过寻找一个中介来帮他完成访问对象的任务。例如自己不愿意去上课时,可以找一个人A代替你去上课,A就扮演了代理者的角色。在软件设计中,代理模式的使用也是为了完成这样的一种机制。代理模式的定义由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。...

2019-12-12 18:24:57

c++设计模式之观察者模式

前言观察者模式是使用频率最高最常用的模式之一,观察者模式要解决的问题为:建立一个一( Subject)对多( Observer) 的依赖关系, 并且做到当“一” 变化的时候, 依赖这个“一”的多也能够同步改变。模式的定义和特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订...

2019-12-09 20:10:25

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。