摘要:
1.组和用户的添加 添加组:groupadd [-g gid [-o]] [-r] [-f] group 示例:groupadd -g 2001 testgoup1 #添加组testgroup1,同时指定gid 2001 删除组:groupdel [群组名称] 示例:groupdel testgroup #删除testgroup 组 添加用户:useradd testuser -g testgroup #添加用户testuser, 指定组为testgroup 删除用户:userdel testuser #删除用户 testuser2、修改用户对文件的关系以及权限chgrp root... 阅读全文
摘要:
1.获取字符串长度1 value=abcd;echo ${#value}输出:42.获取子串value=abcd;echo ${value:3:1}输出:dvalue:a:b,其中a表示起始位置,b表示获取的子串的长度。3.字符串截取#!/bin/bashx=aabbaarealwwvvwwecho “${x%w*w}“ # 截去尾部最短匹配echo “${x%%w*w}“ # 截去尾部最长匹配echo “${x##a*a}“ # 截去头部最长匹配echo “${x#a*a}“ # 截去头部最短匹配 阅读全文
摘要:
关于协程coroutine前面的文章已经介绍过了,本文总结对qemu中coroutine机制的分析,qemu 协程coroutine基于:setcontext函数族以及函数间跳转函数siglongjmp和sigsetjmp实现。使用setcontext函数族来实现用户态进程栈的切换,使用函数间跳转siglongjmp和sigsetjmp实现协程coroutine不退出以及多次进入,即使coroutine执行的任务已经完成,这实现了协程池的功能,避免大量协程创建和销毁带来的系统开销。 qemu coroutine主要提供了5个接口,用于协程创建、协程进入、协程让出,下面首次介绍qemu 实... 阅读全文
摘要:
1.1 环境以及变量的定义、赋值、展开、删除export:将一个变量导入到环境中:export PATH=$PATH:/home。readonly 讲一个变量设置为只读模式,在shell脚本中定义字面值常量特别有用:readonly days_per_week=7, readonly -p 打印当前环境只读模式变量。env可以对命令执行时的环境做更细致的控制:env -i PATH=$PATH HOME=$HOME awk '...' file1, 执行awk命令时的环境仅仅为env指定的环境。unset 删除变量:unset [-v] full_name,删除函数:unset 阅读全文
摘要:
1.find命令 主要用途:主要用来做文件查找。 使用方法:查找文件的方式可以基于:文件名,文件时间属性,文件的所有者和组,文件权限属性,文件类型属性,文件大小,另外可以指定 查找目录的深度,排除指定子目录,具体使用方法: http://www.cnblogs.com/mchina/archive/2012/07/02/2573313.html 其他:可以通过-exec ,-OK选项对匹配的文件做进一步的处理。-exec选项:对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格,同时两个{}之间没有空格,-OK: 阅读全文
摘要:
前面介绍了一个创建迷宫的实现,首先介绍了一种最直接的实现,creator-也即MazeGame的CreateMaze()方法通过直接引用具体对象类来创建一个迷宫,这种通过硬编码的方式来创建对象存在可扩展性的问题,当创建其他类型的迷宫时需要修改CreateMaze()方法。 为解决CreateMaze()方法硬编码具体对象类的问题,抽象工厂模式和生成器模式抽象了创建对象的过程,将创建对象的过程分装了MazeFactory和MazeBuilder,MazeFactory仅仅封装了具体对象的创建而MazeBuilder不仅封装了具体对象的创建,并且封装了组装对象的细节。同时抽象工厂模式和生成器... 阅读全文
摘要:
单件模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单件模式实现:1.类方法Instance()提供访问实例的全局访问点。2.类构造函数声明为protected,防止直接实例化类的对象。将抽象工厂实现为单件的一种简单方式,客户通过Instance接口获取唯一实例:/* 实现为单件的抽象工厂类 */ class MazeFactory {public: static MazeFactory* Instance(); //existing interface goes hereprotected: MazeFactory();/* 构造方法为保护,避... 阅读全文
摘要:
原型:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型实现:1.用于创建对象的具体类必须实现clone()操作,用于对象克隆自己以生成新的对象。下面通过原型来实现一个抽象工厂MazePrototypeFactory,creator使用原型工厂来创建对象。派生MazePrototypeFactory原型工厂:/* 原型工厂 */class MazePrototypeFactory:public MazeFactory {public: MazePrototypeFactory(Maze*, Wall*, Room*, Door*); virtual... 阅读全文
摘要:
工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 工厂方法实现:迷宫地图创建类MazeGame声明创建构件对象的接口或者创建默认的构件对象,派生不同的MazeGame子类来实现其他迷宫类型的创建。产品对象创建类MazeGame:/* 产品创建类 */class MazeGame {public: Maze* CreateMaze(); //... /* 工厂方法 */ virtual Maze* MakeMaze() const { return ... 阅读全文
摘要:
生成器模式意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 生成器模式实现:1.定义MazeBuilder迷宫地图生成器以封装创建产品使用的构件(具体类)以及产品的内部表示。通过派生新的生成器并使用新的生成器对象,同样的构件过程可以创建不同的产品。生成器封装了创建产品使用的那些具体类,已经组装具体类对象的细节:/* 迷宫地图抽象构造器类 */class MazeBuilder {public: virtual void BuilderMaze() {} virtual void BuilderRoom(int room) {} virtu... 阅读全文