CSS选择器之标签选择器
一、基本用法
标签选择器也叫元素选择器、类型选择器,是css样式中的一个基础选择器,用于给指定标签设置相应的样式。
其语法规则为:
标签 {
属性: 值;
}
例如给页面中所有p标签的文字颜色设置为红色:
p { color: red; }
标签选择器也叫元素选择器、类型选择器,是css样式中的一个基础选择器,用于给指定标签设置相应的样式。
其语法规则为:
标签 {
属性: 值;
}
例如给页面中所有p标签的文字颜色设置为红色:
p { color: red; }
git和svn不同,没有一个中央服务器用于存放代码,作为一个分布式的版本控制工具,每台主机都是一个仓库。
如果多个人之间要分享代码,就需要一台远程的仓库协助完成,git中通过git remote
指令来完成这些操作。
使用git remote -v
可以看到所有的远程主机:
> git remote -v
origin git@github.com:maqianos/gitstudy.git (fetch)
origin git@github.com:maqianos/gitstudy.git (push)
分支是git的特性之一,它使得代码可以有多中不同的方向和代码路线,协作过程中彼此之间互不影响,大大增加了代码库的灵活性。
一般来说,项目的开发模型为:给定主分支master用于统筹所有代码,其他的功能拆散在子分支上开发,最后都合并到master。例如一个用于用户登录功能的代码库,用户A开启分支完成账户注册,用户B开启分支完成用户授权,两者在开发期间互不影响,开发完成后合并到主分支上合并完成总功能。
中间蓝色的表示主分支,上下两条表示子分支,子分支在初始时分离,最后都合并于主分支。
git中和分支相关的操作使用branch
命令完成,最简单的用法就是git branch
,它用于查看当前所在分支,加上-v选项显示详细信息。
显示的分支中默认只显示本地分支,如需显示远程分支要加上-a选项。
crontab是linux平台下的定时任务,用于周期性执行任务,基本用法为:
使用crontab保存的任务配置文件位于/etc/crontab
和/var/spool/cron/$USER
,前者是系统默认带有的,后面是每个用户单独出来文件,这两个文件中的配置都会生效。
默认的文件内容为:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
任务的格式如其中的注释所示,先是时间配置:分钟 小时 天 月 星期
,然后是执行身份和执行的命令,满足条件后系统自动执行。要注意的事项是命令中最好不要带相对路径,否则可能会导致错误。
实际上使用crontab -e
就相当于系统帮我们执行了vi /var/spool/cron/$USER
,而crontable -l
则等价于cat /var/spool/cron/$USER
。
每个整点执行ls:
0 * * * * root ls
每两分钟执行一次ls:
*/2 * * * * root ls
每个用户都有一份crontab文件,在/var/spool/cron/$USER
,正常情况下用户也是没有权限访问的,如果要设置属于用户的crontab,则需要通过crontab -e
完成。
要注意的一个问题是:编辑属于用户的crontab时,不用再指定执行的用户了,默认就是以当前用户身份运行的。
0 1 * * * ls
习惯了svn的svn co
,觉得git checkout
不方便遂通过git的alias
把checkout
重命名为co
。
这个操作以前一直都是相安无事,今天在一台新机器上运行时遇到以下问题:
> git co
fatal: cannot exec ''git-co'': Permission denied
> git ss # ss = status -s
fatal: cannot exec ''git-ss'': Permission denied
网上找了半天没有找到解决方案,并且发现不使用简写执行命令没有问题。
于是猜测可能是版本太低的原因,当前的版本是1.7
,升级到2.17
问题就不存在了,升级参考CentOS6.5源码安装Git。
Docker CE支持以下版本的Ubuntu操作系统:
Docker CE可以安装在64位的x86平台或ARM平台上。Ubuntu发行版中,LTS(Long-Term-Support)
长期支持版本,会获得5年的升级维护支持,这样的版本会更稳定,因此在生产环境中推荐使用LTS版本,本次安装的环境为Ubuntu 16.04
。
卸载旧版本:
sudo apt-get remove docker \
docker-engine \
docker.io
svn更新项目时出错Previous operation has not finished; run ''cleanup'' if it was interrupted
:
出现问题的原因是上一次更新或者提交代码操作未完成,此时需要根据提示进行cleanup
操作:
C语言中信号函数的原型为:
void (*signal(int signo, void (*func)(int)))(int);
这个函数定义看起来十分复杂,可以分为以下两步来理解:
首先看signal(int signo, void (*func)(int))
部分,signal
是一个函数,它的形参为一个int类型的signo和一个函数指针func。
除去形参部分后剩下的就是返回值了,即void (*)(int)
这部分是返回值,它是一个函数指针——这个函数形参类型为int,没有返回值。
使用exec
族函数时抛出以下警告:
exec.c: In function ‘main’:
exec.c:8:3: warning: missing sentinel in function call [-Wformat=]
if (execlp("/bin/ls", "/bin/ls", "-l", ".") == -1)
^
错误的原因在man page中找到:
The execv(), execvp(), and execvpe() functions provide an array of pointers to null-terminated strings that represent the argument list available to the new program. The first argu‐ment, by convention, should point to the filename associated with the file being executed. The array of pointers must be terminated by a null pointer.
三者的区别:
例如以下代码的f
函数中使用return,exit和_exit退出的结果都不一样。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void f() {
printf("f1\n");
printf("f2");
return;
}
int main() {
f();
printf("main\n");
return 0;
}