自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (9)
  • 收藏
  • 关注

原创 linxu tensorflow-1.13.1 C++动态库编译

这里建议选择默认值。cp bazel-bin/tensorflow/libtensorflow_framework.so ../tf_test/lib/ # 之前编译r0.12和r1.3版本的库,只需要libtensorflow_cc.so,1.4版本的似乎分成了两个so文件,即还需要libtensorflow_framework.so。解决办法:cp -r ../tensorflow/tensorflow/contrib/makefile/downloads/absl/absl/ include/.

2024-04-01 19:31:35 850

原创 linux-0.11内核中的内存管理函数malloc

内存管理

2022-06-06 16:37:37 328

原创 Linux-0.11分段分页

1、地址变换分段:提供了程序中代码、数据和堆栈区域的保护机制,每个程序都有这一套段分页:提供了按需加载、虚拟内存等功能,基本目标是多进程共享物理内存2、分段、分页

2022-01-15 20:07:28 449

转载 股票买卖问题

很多读者抱怨股票系列问题奇技淫巧太多,如果面试真的遇到这类问题,基本不会想到那些巧妙的办法,怎么办?所以本文拒绝奇技淫巧,而是稳扎稳打,只用一种通用方法解决所用问题,以不变应万变。这篇文章用状态机的技巧来解决,可以全部提交通过。不要觉得这个名词高大上,文学词汇而已,实际上就是 DP table,看一眼就明白了。先随便抽出一道题,看看别人的解法:int maxProfit(vector&...

2020-01-13 20:31:09 930 1

转载 静态库、动态库混编方法

链接库链接指定的库有两种方式-llibrary -l library如链接LuaJIT库,可以用-lluajit-5.1,此时gcc会在库路径中查找libluajit-5.1.so或者libluajit-5.1.a。 也可以用-l llibluajit-5.1.a,第二种只能用在POXIS上,推荐使用第一种方式。而且第二种方式只会在特定的目录进行搜索,会发生找不到库的情况。通过-l...

2019-07-19 17:08:42 932

转载 C++头文件与源文件的作用

一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separatecompilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是相对独立的...

2018-11-03 12:51:08 166

原创 Maven基础

1、maven简介maven是跨平台的项目管理工具,主要功能项目构建、依赖管理、项目信息管理。项目构建:以指令的方式执行编译源码、测试程序、生成文档、打包和部署等工作依赖管理:自动管理项目依赖的构件(类库,插件等)项目信息管理:可以轻松生成项目文档、测试报告等(可能要借助一些插件)2、maven的配置系统级配置文件:安装目录下的conf/settings.xml文件用户级配置文件:...

2018-10-20 17:05:19 149

转载 Scala 方法与函数的区别、联系

Scala中既有函数也有方法,大多数情况下我们都可以不去理会他们之间的区别。但是有时候我们必须要了解他们之间的不同。 Scala中的方法跟Java的方法一样,方法是组成类的一部分。方法有名字、类型签名,有时方法上还有注解,以及方法的功能实现代码(字节码)。 Scala中的函数是一个完整的对象。Scala中用22个特质(trait)抽象出了函数的概念。这22特质从Function...

2018-10-02 23:12:05 456

原创 kafka基本操作指令(脚本)

先启动zookeeper,然后启动kafkazookeeper启动:[root@VM_0_9_centos bin]#./zkServer.sh start  查看:[root@VM_0_9_centos bin]#./zkServer.sh status停止:[root@VM_0_9_centos bin]#./zkServer.sh stop登录:./zkCli -server i...

2018-08-22 15:05:05 324

原创 git常用指令

工作区-------->暂存区--------->版本库(当前分支)基础命令:git init:初始化一个本地仓库git add file:将工作区的修改添加到暂存区,注意,可反复多次使用,添加多个文件git commit -m "message":提交暂存区的修改到本地仓库git status:查看仓库当前的状态,显示结果有以下3种情况 1、Changes not st...

2018-08-22 14:55:48 165

原创 C/C++内存对齐原则以及作用

struct/class/union内存对齐原则:1).普通数据成员对齐规则:结构体(或联合)的第一个普通数据成员放在offset为0的地方,以后每个普通数据成员存储的起始位置从min(#pragma pack(n),普通数据成员自身长度)的整数倍开始。2).结构体作为数据成员:如果一个结构里面有其他的结构体数据成员,则结构体数据成员要从其内部“最宽基本类型数据成员"的整数倍地址开始存储。...

2018-03-11 22:32:21 649

原创 Linux静态链接库、动态链接库、动态加载库

所谓静态链接库,说白了就是在你把写好的代码编译的时候,就把你引用的库一起给编进去了,从此后你编出来的执行程序跟外面都不再有任何关系,即使这个库更新了,你也搭不上边儿,其次,如果系统中许多类似的程序都需要用到这个库,那么各自在编译的时候都需要把这个库给编进去,浪费存储空间(加载到内存里应该也是浪费内存空间的)。linux系统中静态库的名字一般叫xxx.a, 所以如果你看到一个以 .a结束的文件那么它...

2018-03-11 09:49:28 632

转载 MySQL索引类型

一、简介MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引二、语句CREATE TABLE table_name[col_name data type][unique|fulltext][index|key][index_name](col_name[length])[asc|desc]1.unique|fulltext为可选参数,分别表示唯一索引...

2018-03-10 22:36:29 156

原创 MySQL事物的ACID属性与隔离级别

1事物的概念    即是一连串(一组)执行指令,事物具有ACID属性2事物的ACID属性    原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。一致性(Consistency)    事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务...

2018-03-10 22:11:58 488

转载 C++ const原理

抛出问题 下列代码输出的结果是什么?#include#includeusing namespace std;int main(){/*在c++下*/ const int a = 10; //a = 100;error int *p = (int*)(&a); *p = 100;//正确 cout << *p << endl; cout

2017-09-06 12:01:23 392

原创 Linux静态链接库,动态链接库,动态加载库

Linux 动态库剖析进程与 API动态链接的共享库是 GNU/Linux® 的一个重要方面。该种库允许可执行文件在运行时动态访问外部函数,从而(通过在需要时才会引入函数的方式)减少它们对内存的总体占用。本文研究了创建和使用静态库的过程,详细描述了开发它们的各种工具,并揭秘了这些库的工作方式。0 评论M. Tim Jones, 顾问工程师

2017-08-31 11:52:36 439

转载 protobuf入门:二

从公司的项目源码中看到了这个东西,觉得挺好用的,写篇博客做下小总结。下面的操作以C++为编程语言,protoc的版本为libprotoc 3.2.0。一、Protobuf? 1. 是什么?   Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。2. 为什么要用

2017-06-01 21:51:39 2296

转载 protobuf学习入门:一

1 在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。安装步骤如下所示: tar -xzf protobuf-2.1.0.tar.gz  cd protobuf-2.1.0  ./configure --prefix=/usr/local/protobuf

2017-06-01 17:27:42 321

转载 CMake在linux下构建应用程序

CMake 简介CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。文件 CMakeLists.txt 需要手工编写,也可以通过编写脚本进行半自动的生成。CMake 提供了

2017-05-27 10:39:02 226

原创 静态链接库与动态链接库的使用

静态链接库的使用1.生成目标文件 gcc -c -o test.o test.c2.归档目标文件到静态链接库test中 ar -rcs -o libtest.a test.o补充:可以使用ar -t libtest.a查看静态链接库包含哪些目标文件3.使用静态链接库 gcc -o main.c -ltest //要求静态链接库在系...

2017-05-21 11:44:19 473

转载 MYSQL API2

一.MySQL 常用基本结数据构介绍typedef struct st_mysql_res {  my_ulonglong row_count;                               // 结果集的行数  unsigned int field_count, current_field;            // 结果集的列数,当前列 

2017-05-20 16:30:21 207

原创 C++中两个类相互引用的解决办法

一、问题描述现在有两个类A和B需要定义,定义A的时候需要用到B,定义B的时候需要用到A。二、分析A和B的定义和调用都放在一个文件中肯定是不可以的,这样就会造成两个循环调用的死循环。根本原因是:定义A的时候,A的里面有B,所以就需要去查看B的占空间大小,但是查看的时候又发现需要知道A的占空间大小,造成死循环。解决方法:(1)写两个头文件A.h和B.h分别用于声明类A和B;(

2017-05-18 10:36:13 1914

转载 Linux软连接与硬链接

Linux 系统中有软链接和硬链接两种特殊的“文件”。软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。硬链接则透过文件系统的inode来产生新档名,而不是产生新档案。创建方法都很简单:软链接(符号链接) ln -s   source  target 硬链接 (实体链接)ln       source  targetinode要解释清楚两者的

2017-03-31 09:24:26 458

转载 Linux文件共享原理

前段时间读到《Computer Systems: A Programmer's Perspective》的第10章—系统级I/O,书中从整体角度对Unix I/O做了介绍,对Unix/Linux初学者来说,"Unix共享文件"一节的解释得尤为有用。故作为笔记,记录于此。1. Unix I/O        一个Unix文件就是一个m个字节的序列:            B0, B1,

2017-03-31 09:22:40 1346

原创 顺序容器结构

vector:vector维护的是一个连续的线性空间,所以不论其元素型别为何,普通指针都可以作为vector的迭代器。vector的主要数据结构如下:templateclass vector{...typedef value_type* iterator;... iterator start; iterator finish; iterator end_of_stora

2017-03-06 22:35:50 204

原创 STL中traits编程技法

在STL中迭代器是容器与泛型算法之间的粘合剂。要想使泛型算法独立于容器,泛型算法必须以迭代器为对外接口,同时要想容器能独立于泛型算法,容器必须有专属的迭代器。1.迭代器相应型别在算法中运用迭代器时,很有可能会用到迭代器的相应型别。假设算法要以“迭代器所指之物的型别(value_type)”定义对象,如何是好?解决办法是利用函数模板的参数推导机制。例如:但是如果我们要使用valu

2017-03-06 21:37:45 391

原创 new/operator运算符,operator new/operator delete函数,定位new

new,delete运算符:当我们使用一条new表达式时,实际上执行了三步操作:第一步,new表达式调用一个名为operator new(或者operator new[])的标准库函数,该函数分配一块足够大的,原始的,未命名的内存空间以便存储特定类型的对象(或对象数组);第二部,编译器运行相应的构造函数以构造这些对象,并为其传入初始值;第三部,返回一个指向该对象的指针。当我们使用一条dele

2017-03-05 11:05:25 461

原创 排序算法整理

#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define MAXSIZE 10typedef struct { int r[MAXSIZE]; int length;}SqList;void swap(SqList* L,...

2017-03-04 16:09:31 210

原创 斐波那契查找

int F[] = {0,1,1,2,3,5,8,13,21,34}; //斐波那契数组int research2(int*a, int n, int key) { int low = 0,high = n - 1,mid; int k = 0; while (n-1 > F[k]-1) k++; for (int i = n; i < F[k]-1; i++) a[i]

2017-02-16 19:39:42 160

原创 KMP模式匹配

#includeusing namespace std;int strlen(char* S){ int i = 0; int counter = 0; while (S[i] != '\0') { i++; counter++; } return counter;}void get_next(char* T, int *next){ int i =0,j = -

2017-01-19 17:34:06 217

转载 逆波兰表达式实现

#include#includeusing namespace std;//把一个算式先转化为逆波兰表达式int Priority(char ch)//定义优先级别 { int i; switch (ch) { case'(':i = 1; break; case'+':i = 2; break; case'-':i = 2; break; case'*':i = 4

2017-01-12 10:48:00 332

原创 XSI消息队列与复用IO的结合实例

XSI消息队列的使用上存在一个问题:不能将他们与poll或者select一起使用,这是因为他们不能关联到文件描述符。然而我们可以通过使用Unix域套接字客服这一特点,为每个消息队列建立一个线程,在线程中接收消息,一旦有消息到达就通过UNIX域套接字一端发送,在套接字的另一端可以使用poll或者select读取消息。这样可以达到同时监听多个消息队列的目的。具体看代码:#include"apue.h"

2016-12-24 15:28:59 342

转载 linux下多进程共享资源互斥访问实例

#include      #include      #include      #include      #include      #include      pthread_mutex_t* g_mutex;  //创建共享的mutex  void init_mutex(void)  {      int ret;      //g_mutex

2016-12-22 17:31:03 3946

原创 FIFO例程

//生产者模式#include"apue.h"#include#include#define FIFO_NAME "./fifo"int main(){ int res; int fd; char data[MAXLINE]="hello world"; char recv[MAXLINE]; int n; if((res=mkfifo(FIFO_NAME,0777))

2016-12-21 17:57:42 1157

原创 带缓冲IO与不带缓冲的IO

首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘。因此所谓的不带缓冲的I/O是指进程不提供缓冲功能(但内核还是提供缓冲的)。每调用一次write或re

2016-12-19 19:47:01 4349 2

转载 线程和fork

前言:exce调用并不创建新进程,所以前后的进程ID并未改变,exec只是用一个全新的程序替换了当前进程的正文、数据、堆和栈段多线程程序里不准使用fork :为什么???UNIX上C++程序设计守则3准则3:多线程程序里不准使用fork在多线程程序里,在”自身以外的线程存在的状态”下一使用fork的话,就可能引起各种各样的问题.比较典型的例子就是,fork出来的子进程可

2016-12-18 11:51:58 386

转载 C语言程序内存布局

一个程序本质上都是由 BSS 段、data段、text段三个组成的。这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。BSS段:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Starte

2016-12-18 09:22:38 234

原创 权限问题

linux进程中的实际用户ID,实际组ID,有效用户ID,有效组ID与一个进程相关联的ID有6个或更多:实际用户ID:进程创建者的用户ID实际组ID:进程创建者的实际用户组ID有效用户ID:该ID标识进程的权限有效组ID:该ID标识进程的权限附属组ID,保存的设置用户ID,保存的设置组ID通常进程的有效用户ID等于进程的实际用户ID,进程的有效组ID等于进程的实

2016-12-01 22:22:49 366

原创 linux启动流程

启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Ma

2016-11-11 15:40:35 207

转载 linux tcpdump工具

工作中一直在用tcpdump,感觉非常方便,今天心血来潮百度了一下tcpdump的用法,才发现原来还有这么多强大的功能自己都不知道,那叫一个汗啊。以此文作为备份,记录一些新知道的用法,各位网友谁有新的用法,也可以及时告知我进行补充,一起丰富,哈哈!本人邮箱:rick1026zhang@gmail.com废话不多说,切入正题。命令及解释用红色字体,命令所需参数的参数值用斜体标

2016-11-09 11:01:07 1327

asio网络库类图分解.vsdx

简单来说,Boost.Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库。 计算机网络的设计方式有很多种,但是Boost.Asio的的方式远远优于其它的设计方式。它在2005年就被包含进Boost,然后被大量Boost的用户测试并在很多项目中使用,比如Remobo(http://www.remobo.com),可以让你创建你自己的即时私有网络(IPN)的应用,libtorrent(http://www.rasterbar.com/products/libtorrent))一个实现了比特流客户端的库,PokerTH (http://www.pokerth.net)一个支持LAN和互联网对战的纸牌游戏。 Boost.Asio在网络通信、COM串行端口和文件上成功地抽象了输入输出的概念。你可以基于这些进行同步或者异步的输入输出编程。

2019-06-16

asio图解,可以加快对代码结构的理解

最近尝试使用了一下Boost.Asio,不知道是否因为各大公司都有自己相对成熟的网络库的缘故,网络上Asio相关的资料实在不多,而且很多翻来覆去就是那几个简单的示例,所以打算自己小结一下。总的来说Boost.Asio是个非常易用的库,避免了你在各种系统底层API之间的挣扎,让你可以非常迅速的开发出高并发的网络服务器程序。

2019-04-03

boost.asio muduo toft类图

简单来说,Boost.Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库。 计算机网络的设计方式有很多种,但是Boost.Asio的的方式远远优于其它的设计方式。它在2005年就被包含进Boost,然后被大量Boost的用户测试并在很多项目中使用,比如Remobo(http://www.remobo.com),可以让你创建你自己的即时私有网络(IPN)的应用,libtorrent(http://www.rasterbar.com/products/libtorrent))一个实现了比特流客户端的库,PokerTH (http://www.pokerth.net)一个支持LAN和互联网对战的纸牌游戏。 Boost.Asio在网络通信、COM串行端口和文件上成功地抽象了输入输出的概念。你可以基于这些进行同步或者异步的输入输出编程。这是我整理的类图

2019-04-03

汇编基础知识(快速入门)

汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。

2018-08-18

Protobuf协议快速入门指南(一个小时入门protobuf)

什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。 或许您和我一样,在第一次看完这些介绍后还是不明白 Protobuf 究竟是什么,那么我想一个简单的例子应该比较有助于理解它。

2018-08-18

鸟哥linux私房菜(基础篇+服务器篇)

《鸟哥的Linux私房菜:基础学习篇》是最具知名度的Linux入门书《鸟哥的Linux私房菜基础学习篇》的最新版,全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linux的文件系统、文件、目录与磁盘的管理;第三部分介绍文字模式接口shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法;第四部分介绍了对于系统安全非常重要的Linux账号的管理,以及主机系统与程序的管理,如查看进程、任务分配和作业管理;第五部分介绍了系统管理员(root)的管理事项,如了解系统运行状况、系统服务,针对登录文件进行解析,对系统进行备份以及核心的管理等。 本书内容丰富全面,基本概念的讲解非常细致,深入浅出。各种功能和命令的介绍,都配以大量的实例操作和详尽的解析。本书是初学者学习Linux不可多得的一本入门好书。

2018-08-18

C++ Primary中文\英文两本

本书是久负盛名的C++经典教程 [1] ,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。 对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。 本版对前一版进行了彻底的修订,内容经过了重新组织,更加入了C++先驱Barbara E.Moo在C++教学方面的真知灼见。既显著改善了可读性,又充分体现了C++语言的最新进展和当前的业界最佳实践。书中不但新增大量教学辅助内容,用于强调重要的知识点,提醒常见的错误,推荐优秀的编程实践,给出使用提示,还包含大量来自实战的示例和习题。

2018-08-18

STL实现代码(SGI版本,侯捷 STL源码解析)

学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之中。在你仔细推敲之中,迷惑不解之时,恍然大悟之际,你的经验、思维、视野、知识乃至技术品位都会获得快速的成长。 本书所呈现的源码,使你踏上了基度山岛。源码之前了无秘密,你将看到vector的实现、list的实现、heap的实现、deque的实现、Red Black tree的实现、hash table的实现、set/map的实现;你将看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;你甚至能够看到底层的memory pook和高阶抽象的traits机制的实现。

2018-08-18

《汇编语言》王爽pdf

书籍不错,对于Intel早期内核相关原理介绍不错。《汇编语言》王爽pdf

2018-08-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除