Github的工作原理 标签(空格分隔): github操作 —这几天一直都在使用Github提交代码,日程。但是只是简单的git add, git push感觉懂得很皮毛的皮毛。有点好奇团队的工作原理,那就来记录一下吧^O^ [x] 蓝色代表功能分支,负责开发某一工作的工作流。 [x] 橙色代表功能总汇分支,里边是所有功能的汇总 [x] 黄色表示测试分支,用于产品内侧 [x] 紫色表示bug修复分支,只已发布的产品发现有bug时进行修复的分支。 [x] 绿色表示发布分支,用于发布产品,对外展示 虽然以上我大部分用不到(小声bb不会用),但是了解一下嘛。 如果团队在做开发,A做语音功能开发,B做页面功能开发,C做聊天功能开发..那么ABC三人都是在蓝色的Feature分支上进行各自的工作,平行方向的每个箭头则是pull request的结果. 当他们觉得自己负责的功能写的差不多了,就可以pull resquest 到橙色的Develop分支. 管理员D将程序员ABC推送过来的内容 继续阅读 >>


胡锦雲 18/07/31 17:18:44
时间轮 简述 顾名思义,时间轮就像一个轮子,在转动的时候外界会指向轮子不同的区域,该区域就可以被使用。因此只要将不同时间的定时器按照一定的方法散列到时间轮的不同槽(即时间轮划分的区域)之中,就可以实现在运转到某个槽时,进行判断该定时器是否已经到达运行时间(需要判断是由于有的定时器并非在这一圈就需要运行,可能需要后面几圈才会运行。 从图中也可以看出,每个槽中的定时器是以(双向)链表形式存储的,每次添加的时候直接插入到链表的开始(头插法)。值得注意的是,由于使用头插法,因此在运行到某个槽时,需要遍历一遍链表,已检查是否有到达时间的计时器,有的话就运行,并删除结点。 至于在每转到一个槽时都要检查是否到达运行时间,可以这样理解:时间轮进行散列的方法就是取余运算,假设每个槽的间隔为1s,共有n个槽,当前转到了第cur个槽,那么一个定时在 t s以后运行的定时器就要放在第( cur + t % n ) % n个槽,并在运行t / n圈后到达该槽时才会运行。因此一个槽中的定时器运行的时间是相差i( 继续阅读 >>


王良 18/07/31 17:08:21
对Linux环境变量的认识 引言: linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。 什么是环境变量? 环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。许多用户(特别是那些刚接触Linux的新手)发现这些变量有些怪异或者难以控制。其实,这是个误会:通过使用环境变量,你可以很容易的修改一个牵涉到一个或多个应用程序的配置信息。 重要的例子 下表罗列了一些Linux系统使用的变量并说明了它们的用处。在表格后面将列举一些变量例值。 变量说明 PATH这个变量包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件。如果你输入的可执行文件(例如ls、rc-update或者emerge)不在这些目录中,系统就无法执行它(除非你输入这个命令的完整路径,如/bin/ls)。 RO 继续阅读 >>


李重乐 18/07/31 15:20:44
五、执行新程序 当已经创建子进程后,子进程通常会调用exec函数来执行另一个程序。系统调用exec用于执行一个可执行程序来代替当前进程的执行映像。在exec调用的过程中没有产生新的子进程,当一个进程时他本身就死亡了,系统把代码替换成新程序的代码,废弃原有的数据段,堆栈段,用新的代替。唯一不变的就是进程ID,对系统而言还是同一个进程,但执行的已经是另一个程序了 exec函数          说起exec函数首先要了解环境变量概念,本文不做描述          Linux 下exec函数族有六种不同的调用形式 #include <unistd.h> int execl(const char *path, const char *arg, ...) int execv(const char *path, char *const argv[]) int execle(const char *path, const char *arg, ..., char *const en 继续阅读 >>


田正东 18/07/31 10:14:24
守护进程 标签: Linux系统编程之进程 Daemon(守护进程)是运行在后台的一种特殊进程.没有控制终端与之相连. 特点:独立于终端控制,周期性地执行某种任务 守护进程启动方式: 从启动脚本/etc/rc.d; 由作业规划crond启动; 又用户终端(通常是shell)执行 编写守护进程要点: * 让程序在后台执行.方法是fork产生一个子进程,然后使得父进程退出. pid_t pid; pid = fork();/*产生子进程*/ if(pid > 0) exit(0); /*结束父进程使得子进程成为后台进程*/ else if(pid < 0) exit(-1); 调用setsid创建一个新对话框.控制终端,登录会话和进程组通常是从父进程继承下来的.守护进程要摆脱他们,不受他们的影响,其方法是调用setsid使进程称为一个会话组长.(setsid可以创建一个新的对话) (当进程是会话组长时调用setsid失败,但是第一点已经保证进程不是会话组长) 会话(s 继续阅读 >>


胡锦雲 18/07/31 09:30:25
问题描述 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 Input 一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。 Output 左上角到右下角的最短路径,格式如样例所示。 Sample Input 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 思路(DFS寻路) 首先将迷宫存在一个二位数组中,然后遍历数组,遇到1则改变方向,遇到0接着向下走,将此点存入队列中,如果无路,则返回上一结点,将此结点移出队列,并将此点的数组值更改为1,防止死循环。直至找到出口。 struct path //定义一个结构体保留遍历到的路径座标 { 继续阅读 >>


朱文博 18/07/30 23:33:27
879. 盈利计划 帮派里有 G 名成员,他们可能犯下各种各样的罪行。 第 i 种犯罪会产生 profit[i] 的利润,它要求 group[i] 名成员共同参与。 让我们把这些犯罪的任何子集称为盈利计划,该计划至少产生 P 的利润。 有多少种方案可以选择?因为答案很大,所以返回它模 10^9 + 7 的值。 示例 1: 输入:G = 5, P = 3, group = [2,2], profit = [2,3] 输出:2 解释: 至少产生 3 的利润,该帮派可以犯下罪 0 和罪 1 ,或仅犯下罪 1 。 总的来说,有两种方案。 示例 2: 输入:G = 10, P = 5, group = [2,3,5], profit = [6,7,8] 输出:7 解释: 至少产生 5 的利润,只要他们犯其中一种罪就行,所以该帮派可以犯下任何罪行 。 有 7 种可能的计划:(0),(1),(2),(0,1),(0,2),(1,2),以及 (0,1,2) 。 提示: 1 <= G <= 继续阅读 >>


陈文浩 18/07/30 21:41:40
以前没有认真的总结readline,发现它的功能还是很赞的,这次记录一下,方便日后查看 安装 在deepin下可以用这个命令(Ubuntu和deepin一样) sudo apt-get install libreadline6-dev 原型 #include <readline/readline.h> #include <readline/history.h> ①char *readline (const char *prompt);//返回值就是读取的字符串 ②void add_history(const char *string);//用来返回历史 ③typedef char *rl_compentry_func_t(const char *text, int state); ④char **rl_completion_matches(const char *text, rl_compentry_func_t *entry_func); 继续阅读 >>


陈文浩 18/07/30 20:45:15
一、进程 进程是一个动态实体,是程序的一次执行过程,是操作系统资源分配的基本单位。进程是运行中的程序,程序是一些保存在硬盘上的可执行代码。 二、进程结构 Linux中进程由三部分组成:代码段,数据段,堆栈段 代码段(存放可执行代码) 数据段(存放程序全局变量,常量,静态变量) 堆栈段(堆存放动态分配的内存变量,栈用于函数调用,存放函数的参数,函数内部定义的局部变量) 三、创建进程 进程创建的两种方式 由操作系统创建:                  由操作系统创建的进程之间的关系平等,一般不存在资源继承关系。 由父进程(创建该进程的进程称父进程)创建:                  对于父进程创建的进程(子进程),子进程和父进程存在隶属关系。父子进程共享代码段,子进程还获得父进程数据段、堆、栈的复制。 fork函数 #include <sys/types.h> #include <unistd.h> pid_t 继续阅读 >>


田正东 18/07/30 17:37:10
简化版chmod命令 标签(空格分隔): Linux —使用系统调用实例 在实现之前首先说一下#include< 一个简单的系统编程: #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/stat.h> int main(int argc, char **argv) { int mode;//权限 int mode_u; int mode_g; int mode_o; char *path; //检查参数个数的合理性 if(argc < 3) { printf("%s <mode num> <target file>"); exit(0); } //获取命令行参数 mode = atoi(a 继续阅读 >>


胡锦雲 18/07/30 00:36:59