const

Regex C++ : 正则表达式(2).

旧时模样 提交于 2020-02-29 16:46:49
既然有了std::basic_regex存储我们的正则表达式了,那我们怎么匹配到的字符串呢? 重点强调 : 无论是std::regex_match还是std::regex_search都不能接受一个右值版本的std::basic_string!!!!! 下面我们将介绍: std::regex_search :检验是否部分字符串匹配给定的正则表达式. std::regex_match :检验是否整个字符串匹配给定的正则表达式. std::regex_search //first: 一个指向被匹配字符串开始位置的迭代器. //last: -个指向被匹配字符串结束位置的迭代器. //m: 存放匹配的结果. //e: 存放正则表达式. //flags: 指出使用哪种正则表达式的语法. template< class BidirIt, class Alloc, class CharT, class Traits > bool regex_search( BidirIt first, BidirIt last, std::match_results<BidirIt,Alloc>& m, const std::basic_regex<CharT,Traits>& e, std::regex_constants::match_flag_type flags = std::regex

进程和程序:编写shell——《Unix/Linux编程实践教程》读书笔记(第8章)

落爺英雄遲暮 提交于 2020-02-29 15:11:33
1、Unix shell的功能 shell是一个管理进程和运行程序的程序。所有常用的shell都有3个主要功能: (1)运行程序; (2)管理输入和输出 (3)可编程 shell同时也是带有变量和流程控制的编程语言。 2、Unix的进程模型 一个程序是存储在文件中的机器指令序列,一般它是由编译器将源代码编译成二进制格式的代码。运行一个程序意味着将这些机器指令序列载入内存然后让处理器(CPU)逐条执行。在Unix术语中,一个可执行程序是一些机器指令机器数据的序列。一个进程是程序运行时的内存空间和设置。数据和程序存储在磁盘文件中,程序在进程中运行。 每个进程都有一个可以唯一标识它的数字,被称为进程ID,一般简称PID;同时也有一个父进程ID(PPID)。每个进程都与一个终端相连,都一个已运行的时间,有优先级,有niceness级别,有大小。。。 Unix系统中的内存分为系统空间和用户空间。进程存在于用户空间。 3、如何执行一个程序 shell打印提示符,用户输入指令,shell就运行这个命令,然后shell再次打印提示符——如此反复。 一个shell的主循环执行下面的4步: (1)用户键入a.out (2)shell建立一个新的进程来运行这个出现 (3)shell将程序从磁盘载入 (4)程序在它的进程中运行知道结束 即: while (!end_of_input) get

HDU 1561 The more, The Better (树形DP)

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-29 12:38:10
http://acm.hdu.edu.cn/showproblem.php?pid=1561 数组开小了越界,查了好久才查出来。。。GCC太能容忍错误了。。。坑!!! 题意: 给你一棵树,选中某一个节点花费1,得到它的价值,而且必须选中父节点才能选中子节点,问:在花费m下,最大价值为多少? 最基本的树形DP,和前面的几道题一样 dp[s][k]表示选中s节点,总花费k时的最大价值 状态转移: for (int k = m; k >= 2; k--) for (int j = 1; j < k; j++) dp[s][k] = max(dp[s][k], dp[s][k - j] + dp[v][j]); 1 #pragma comment(linker, "/STACK:102400000,102400000") 2 #include <cstdio> 3 #include <iostream> 4 #include <cstring> 5 #include <string> 6 #include <cmath> 7 #include <set> 8 #include <list> 9 #include <map> 10 #include <iterator> 11 #include <cstdlib> 12 #include <vector> 13 #include <queue

wpa_supplicant软件架构分析

三世轮回 提交于 2020-02-29 12:33:44
struct socket 数据结构 interface network callback 目录 (?) [+] 启动命令 wpa_supplicant 初始化流程 main函数 wpa_supplicant_init函数 wpa_supplicant_add_iface函数 wpa_supplicant_run函数 Wpa_supplicant提供的接口 上行接口 Dbus接口 Unix domain socket 接口 下行接口 Control interface commands 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant 对于启动命令带的参数,用了两个数据结构来保存, 一个是 wpa_params, 另一个是 wpa_interface. 这主要是考虑到 wpa_supplicant 是可以同时支持多个网络接口的。 wpa_params 数据结构主要记录与网络接口无关的一些参数设置。 而每一个网络接口就用一个 wpa_interface 数据结构来记录。

android从应用到驱动之—camera(2)---cameraHAL的实现

谁都会走 提交于 2020-02-29 11:16:04
本文是camera系列博客,上一篇是: android从应用到驱动之—camera(1)---程序调用流程 本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这篇先写cameraHAL的基本实现框架,下一篇在具体写camerahal的流程吧. cameraHAL的实现: 对于初学者来说,最大的疑问是系统是如何调用hardware的. 这里就以camera来举例说明. 调用hardware的程序是cameraservice,我们就去它里面看看它是如何找到hardware的 先把源码贴上来: CameraService.cpp/* ** ** Copyright (C) 2008, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by

JVM第三天 Java Class File structure

女生的网名这么多〃 提交于 2020-02-29 09:39:33
Reference: http://viralpatel.net/blogs/tutorial-java-class-file-format-revealed/ A Java class file is consist of 10 basic sections: 1.Magic Number: 0xCAFEBABE 2.Version of Class File Format: the minor and major versions of the class file 3.Constant Pool: Pool of constants for the class 4.Access Flags: for example whether the class is abstract, static, etc. 5.This Class: The name of the current class 6.Super Class: The name of the super class 7.Interfaces: Any interfaces in the class 8.Fields: Any fields in the class 9.Methods: Any methods in the class 10.Attributes: Any attributes of the class

源码阅读笔记:webbench-1.5

我们两清 提交于 2020-02-29 08:19:49
WebBench是个比较简单的程序,只有两个源文件:webbench.c, socket.c。 对源码重新排版一下,方便阅读: /* * (C) Radim Kolar 1997-2004 * This is free software, see GNU Public License version 2 for * details. * * Simple forking WWW Server benchmark: * * Usage: * webbench --help * * Return codes: * 0 - sucess * 1 - benchmark failed (server is not on-line) * 2 - bad param * 3 - internal error, fork failed * */ #include "socket.c" #include <unistd.h> #include <sys/param.h> #include <rpc/types.h> #include <getopt.h> #include <strings.h> #include <time.h> #include <signal.h> /* * 超时标记,当被设置为 1 时,所有子进程退出 * volatile: * - 让系统总是从内存读取数据, * -

《Effectirve C++》笔记(条款1~10)

╄→гoц情女王★ 提交于 2020-02-29 03:54:21
条款1:视C++为一个语言联邦 C是多种范式汇集的语言,包括C的过程、C面向对象、Template泛型(STL模板库)、模板元编程、lambda。(后面自己补充可能由曲解原文意思) 条款2:尽量以const、enum、inline替换#define 单纯变量用const或enum替换define,形势函数的宏用inline函数替换。 class ttt{ enum{NumTurns=5}; int scores[NumTurns]; } 用枚举替换更像define,因为枚举和define均不可取地址,而const的变量可以被取地址。 条款3:尽可能使用const const char *p; 指针非常量,数值为常量--我还是喜欢声明时把*和变量放一起,构成一个整体,这样也容易理解,const就是对这个整体修饰的这个整体不可变也就是*p也就是值不可变。char * const p;指针常量,值非常量 对函数指定const:void a() const;此时函数不可调用非const成员(可以读非const数据成员),如某个数据成员需要被const方法操作,可以用mutable修饰:mutable boos bbb; const char& operator[](std::size_t position)const { XXXXX return pText[position]; }

C++模板之特化与偏特化详解

和自甴很熟 提交于 2020-02-29 03:49:03
C++函数模板与类模板实例解析_C 语言_脚本之家 http://www.jb51.net/article/53746.htm C++关键字typename的深入理解_C 语言_脚本之家 http://www.jb51.net/article/37565.htm 深入分析:C++模板究竟会使代码膨胀吗_C 语言_脚本之家 http://www.jb51.net/article/36209.htm 这篇文章主要介绍了C++模板之特化与偏特化详解,本文讲解了什么是C++模板、模板特化、模板偏特化、特化与偏特化的调用顺序等内容,需要的朋友可以参考下 前言 说到C++模板,这个已经不是什么新东西了,自己在实际开发中也用过;对于C++模板特化和偏特化,对于别人来说,已经不是什么新东西了,但是对于我来说,的确是我的盲区,那天在群里讨论这个问题,自己对于这部分确实没有掌握,又联想到在《STL源码剖析》一书中,对于此也是有着介绍。所以,今天就对此进行详细的总结,以备后忘。 C++模板 说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板。我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样显然不利于程序的扩充和维护。C++模板就应运而生。C++的模板提供了对逻辑结构相同的数据对象通用行为的定义

STL源码剖析(deque)

夙愿已清 提交于 2020-02-29 03:04:58
deque是一个双向开口的容器,在头尾两端进行元素的插入跟删除操作都有理想的时间复杂度。 deque使用的是分段连续线性空间,它维护一个指针数组(T** map),其中每个指针指向一块连续线性空间。 (map左右两边一般留有剩余空间,用于前后插入元素,具体下面可以看到其实现) 根据上图,可以了解到deque的迭代器的基本定义。 1 template <class T, class Ref, class Ptr, size_t BufSiz> 2 struct __deque_iterator { 3 // 基本型别的定义 4 typedef __deque_iterator<T, T&, T*, BufSiz> iterator; 5 typedef random_access_iterator_tag iterator_category; 6 typedef T value_type; 7 typedef Ptr pointer; 8 typedef Ref reference; 9 typedef size_t size_type; 10 typedef ptrdiff_t difference_type; 11 typedef T** map_pointer; 12 typedef __deque_iterator self; 13 14 // 缓冲区的大小 15 tatic