char函数

C++ Primer 5th 第11章 关联容器

一个人想着一个人 提交于 2020-02-25 20:43:28
练习11.1:描述map 和 vector 的不同。 map是关联容器,vector是顺序容器,关联容器与值无关,vector则与值密切相关 练习11.2:分别给出最适合使用 list、vector、deque、map以及set的例子。 list链表 vector动态数组 deque队列 map映射 set集合 练习11.3:编写你自己的单词计数程序。 #include <iostream> #include <map> void words_count() { std::map<std::string, std::size_t> m; std::string word; while (std::cin >> word) { ++m[word]; } } int main() { words_count(); return 0; } 练习11.4:扩展你的程序,忽略大小写和标点。例如,"example."、"example,"和"Example"应该递增相同的计数器。 #include <iostream> #include <map> void words_count() { std::map<std::string, std::size_t> m; std::string word; while (std::cin >> word) { for (auto& ch : word

pl/sql函数学习

我的未来我决定 提交于 2020-02-25 01:10:17
7種函數的詳細介紹及用法: 1、錯誤報告(error reporting)函數 sqlcode 返回 oracle 錯誤號 sqlerrm 返回oracle錯誤信息 主要用於異常處理 declare err_num number; err_msg varchar2(100); begin ... exception ... when others then /*當引發異常的時候,將SQLERRM和SQLCODE值取出,插入表ERRORS中*/ err_num:=sqlcode; err_msg:=substr(sqlerrm,1,100); insert into errors(errnum,errmsg) values(err_num,err_msg); end; 2、數值(Number)函數 abs 返回絕對值 acos 返回以弧度為單位的反余弦值 asin 返回以弧度為單位的反正弦值 atan(m) 返回m的反正切值(以弧度為單位),即返回arctan(m) atan2(m,n) 返回m與n的反正切值即返回aretan(m/n) bitand 位與函數,即按位相與 ceil 返回大於等於特定值的最小整數 cos 返回以弧度為單位的余弦值 cosh 返回以弧度為單位的雙曲余弦值 exp 求e的x方(e=2.71828,如 exp(3)=e的3次方) floor

文件操作

眉间皱痕 提交于 2020-02-24 23:01:24
一.文件的打开与关闭  1.定义文件指针的一般形式:FILE *指针变量标识符  2.C语言中有三个特殊的文件指针无需定义、打开可直接使用:    stdin:标准输入,默认为当前终端(键盘)      我们使用的scanf、getchar、函数默认从此终端获得数据    stdout:标准输出,默认为当前终端(屏幕)      我们使用的printf、puts函数默认输出信息到此终端    stderr:标准出错,默认为当前终端(屏幕)      当我们程序出错或使用perror函数时信息打印在此终端  3.打开文件    FILE *fp = NULL;    fp = fopen(文件名,文件打开方式);    • 文件名:要操作的文件的名字,可以包含路径信息     • 文件打开方式:"读"、"写"、"文本"、"二进制"等    • fp文件指针:指向被打开的文件,失败返回空,成功返回相应指针    例如:FILE *fp = NULL;       fp = fopen("test.txt","r");       if(fp == NULL)        printf("File open error\n");  4.文件打开的几种方式:读写权限:r  w  a  +   r:以只读方式打开文件     文件不存在,返回NULL     文件存在,返回文件指针

Linux多线程编程初探

南笙酒味 提交于 2020-02-24 14:37:20
Linux线程介绍 进程与线程   典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。     进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。   线程 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程包含了表示进程内执行环境必须的信息,其中包括进程中表示线程的线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno常量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本、程序的全局内存和堆内存、栈以及文件描述符。在Unix和类Unix操作系统中线程也被称为轻量级进程(lightweight processes),但轻量级进程更多指的是内核线程(kernel thread),而把用户线程(user thread)称为线程。 "进程——资源分配的最小单位,线程——程序执行的最小单位"  

Bloom Filter 原理及实现

≯℡__Kan透↙ 提交于 2020-02-24 13:05:39
题外话: 很久没写博客了,因为前一段时间过年在家放假,又因为自己保研了,所以一直比较闲。整个假期,基本都在准备毕业设计的相关内容。我毕业设计的方向是关于搜索引擎的,因此,期间阅读了大量相关论文。阅读了很多论文和技术书籍之后,我有几点感触。首先,发现国内很多论文或是书籍只是大量引述其他人的研究结果,自己的独特的见解非常少,一篇文章,70%的内容都是在以介绍为主,感觉发这样的论文是没有什么意义的。相反,国外尤其是像MIT,斯坦福,google之类的领域专家发表很多极其优秀的论文,阅读后给人一种震撼。我之前在网上搜索技术文章或是论文的时候经常绕过英文的,现在发现国外的确有非常多优秀的外文文章,所以无障碍英文阅读能力是提升自己专业水平的重要因素。 我现在已经逐渐习惯阅读外文文章和书籍。 期间,我还翻译了一篇关于网络信息采集和索引的外文文章,收获很大。不是因为,我从中获得了多少知识,而是在翻译的过程中,我了解了作者精心的设计思路以及严谨的语言表达,也锻炼了我翻译的能力以及组织语言的能力。 废话不多说了,开始正题,写个在爬虫系统中常用的URL去重经典算法Bloom Filter. 正题: Bloom Filter概念和原理 引用一篇讲述非常好的文章。 http://blog.csdn.net/jiaomeng/article/details/1495500 ,其博客里还有很多关于Bloom

关于数组和指针作为参数时遇到的问题

≡放荡痞女 提交于 2020-02-23 19:09:04
自己在实现一个类strcpy函数时,发现一些小问题: 首先,函数如下: char *str_n_cpy(char *dest,const char *src) { char *_temp = dest; assert(dest != NULL || src !=NULL); //注意越界 printf("%d",sizeof(dest)); while((*dest++ = *src++) != '\0'); return _temp;}   main函数如下: int main() { char *str1 = "123"; char *str2 = "4567"; printf("%s\n",str_n_cpy(str1,3,str2,3)); return 0; }   运行程序会发现程序崩溃,后来在main函数中把char *str1 = "123"改成char str1[3]={"123"};会发现程序就能正常运行,为什么会这样呢? 经查知,前者实际将str1指向一个常量”123“了,即此时的str1是一个常量指针,其中的内容固然不可改变,所以赋值操作不能进行了;而后者str1实际作为一个普通的char型指针传到函数中,自然可以进行赋值操作。 来源: https://www.cnblogs.com/wangkundentisy/p/4202027.html

C++内存管理转自http://soft.yesky.com/lesson/110/2381610.shtml

拈花ヽ惹草 提交于 2020-02-23 15:04:50
转自 http://soft.yesky.com/lesson/110/2381610.shtml 踏入C++中的雷区——C++内存管理详解 2006-04-25 09:22 作者:蒋涛 出处:计算机教学网 责任编辑:方舟   伟大的Bill Gates 曾经失言:   640K ought to be enough for everybody — Bill Gates 1981   程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。    1、内存分配方式   内存分配方式有三种:   (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。   (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。   (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。    2

LeetCode 力扣 76. 最小覆盖子串

自闭症网瘾萝莉.ら 提交于 2020-02-23 11:51:19
题目描述(困难难度) 给两个字符串,S 和 T,在 S 中找出包含 T 中所有字母的最短字符串,不考虑顺序。 解法一 滑动窗口 没有想出来,直接看来了 题解 ,这里总结一下。 用双指针 left 和 right 表示一个窗口。 right 向右移增大窗口,直到窗口包含了所有要求的字母。进行第二步。 记录此时的长度,left 向右移动,开始减少长度,每减少一次,就更新最小长度。直到当前窗口不包含所有字母,回到第 1 步。 S = "ADOBECODEBANC" , T = "ABC" A D O B E C O D E B A N C //l 和 r 初始化为 0 ^ l r A D O B E C O D E B A N C //向后移动 r,扩大窗口 ^ ^ l r A D O B E C O D E B A N C //向后移动 r,扩大窗口 ^ ^ l r A D O B E C O D E B A N C //向后移动 r,扩大窗口 ^ ^ l r A D O B E C O D E B A N C //向后移动 r,扩大窗口 ^ ^ l r //此时窗口中包含了所有字母(ABC),停止移动 r,记录此时的 l 和 r,然后开始移动 l A D O B E C O D E B A N C ^ ^ l r //向后移动 l,减小窗口,此时窗口中没有包含所有字母(ABC)

31.Linux-分析并制作环形缓冲区

给你一囗甜甜゛ 提交于 2020-02-22 23:43:29
1.环形缓冲区log_buf[]又是存在内核的哪个文件呢?   位于/proc/kmsg里,所以除了dmesg命令查看,也可以使用cat /proc/kmsg来查看 2.但是,dmesg命令和cat /proc/kmsg有所不同 2.1 dmesg命令   每次使用,都会打印出环形缓冲区的所有信息 2.2 cat /proc/kmsg   只会打印出每次新的环形缓冲区的信息   比如,第一次使用cat /proc/kmsg,会打印出内核启动的所有信息   第二次使用cat /proc/kmsg,就不会出现之前打印的信息,只打印继上次使用cat /proc/kmsg之后的新的信息,比如下图所示: 3.接下来我们便进入内核,找/proc/kmsg文件在哪生成的   搜索"kmsg",找到位于fs\proc\proc_misc.c 文件的proc_misc_init()函数中,   该函数主要用来生成登记的设备文件,具体代码如下所示: const struct file_operations proc_kmsg_operations = { . read = kmsg_read , //读函数 . poll = kmsg_poll , . open = kmsg_open , . release = kmsg_release , } ; void __init proc_misc

Python使用Ctypes与C/C++ DLL文件通信过程介绍及实例分析

坚强是说给别人听的谎言 提交于 2020-02-22 12:59:40
项目中可能会经常用到第三方库,主要是出于程序效率考虑和节约开发时间避免重复造轮子。无论第三方库开源与否,编程语言是否与当前项目一致,我们最终的目的是在当前编程环境中调用库中的方法并得到结果或者借助库中的模块实现某种功能。这个过程会牵涉到很多东西,本篇文章将简要的介绍一下该过程的一些问题。 1.背景 多语言混合编程可以弥补某一种编程语言在性能表现或者是功能等方面的不足。虽然所有的高级语言都会最终转换成汇编指令或者最底层的机器指令,但是语言本身之间的千差万别很难一言以蔽之,这对不同语言之间相互通信造成很大的障碍。 工作中需要用python完成一项功能,但是所有现有的python库都不满足需求。最终找到了一个开源的C++库,编译得到动态库被python调用才完成工作需求。虽然整个过程耗时不多,但是期间碰到很多的问题,而且这些问题都很有思考价值。 除了这篇博文外,后续还将有一到两篇文章通过具体的实例讲解一下跨语言调用。 2.问题思考 在进行具体的介绍之前,先来思考一下调用外部库或者自己实现库所牵涉的一些一般性的问题。这样或许实际中操作使用时会理解的更加深刻,遇到问题也能够逐项的排查。 如果用C语言写的库调用了Linux的system call,纵使C本身是跨平台的,那么该库也不可能在Window上被使用,即便我们能拿到源码。这里有两个核心问题: 是否开源 是否跨平台 如果库的实现不依赖平台