- 博客(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分段分页
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
2019-06-16
asio图解,可以加快对代码结构的理解
2019-04-03
boost.asio muduo toft类图
2019-04-03
汇编基础知识(快速入门)
2018-08-18
Protobuf协议快速入门指南(一个小时入门protobuf)
2018-08-18
鸟哥linux私房菜(基础篇+服务器篇)
2018-08-18
C++ Primary中文\英文两本
2018-08-18
STL实现代码(SGI版本,侯捷 STL源码解析)
2018-08-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人