第13章 定时任务的介绍

13.1 定时任务的分类

13.1.1 系统实现定时任务的配置

[root@oldboyedu ~] # cd /etc/cron.

cron.d/ cron.daily/ cron.hourly/ cron.monthly/ cron.weekly/

[root@oldboyedu ~] # cd /etc/cron.

cron.daily                        每天定时执行同步任务

cron.hourly                        每小时定时执行同步任务

cron.monthly                        每个月定时执行同步任务

cron.weekly                        每星期定时执行同步任务

cron.deny                            限制哪些用户不可以使用定时任务进行配置

13.1.2 用户自定义定时任务的配置(-个命令,俩个文件)

13.3.1.1 一个命令

crontab -l:查看配置的定时任务

[root@oldboyedu ~] # crontab -l

30 2 * * * cp -rf /etc/hosts /etc/hosts.bak

[root@oldboyedu ~] #

crontab -e:编写定时任务

[root@oldboyedu ~] # crontab -e

no crontab for root - using an empty one

30 2 * * *

crontab -r:清空定时任务配置的任务信息

[root@oldboyedu ~] # crontab -l 查看定时任务信息

#30 */1 * * * cp /etc/hosts /etc/hosts_lyx.bak

#*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

#*/5 * * * * sh /server/scripts/ntpdate_sync.sh & > /dev/null

#* * * * * tar zcvf /opt/hosts_$(date +\%F).tar.gz /etc/hosts

#* * * * * sh /server/scripts/tar_sync.sh & >/dev/null

[root@oldboyedu ~] # crontab -r 清除定时任务信息

[root@oldboyedu ~] # crontab -l 再次查看发现已经没有信息

no crontab for root

[root@oldboyedu ~] #

13.1.1.2 俩个文件

13.1.1.2.1 root用户设置定时任务的配置文件

[root@oldboyedu ~] # ll /var/spool/cron/root root用户设置定时任务的配置文件

-rw------- 1 root root 44 Oct 2 15:25 /var/spool/cron/root

[root@oldboyedu ~] #

13.1.1.2.2 root用户定时任务的日志文件

[root@oldboyedu ~] # tail -f /var/log/cron root用户定时任务的日志文件

Oct 2 19:30:01 oldboyedu CROND[8172]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Oct 2 19:40:01 oldboyedu CROND[8258]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Oct 2 19:50:01 oldboyedu CROND[8345]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Oct 2 20:00:01 oldboyedu CROND[8431]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Oct 2 20:01:02 oldboyedu CROND[8444]: (root) CMD (run-parts /etc/cron.hourly)

Oct 2 20:01:02 oldboyedu run-parts(/etc/cron.hourly)[8444]: starting 0anacron

Oct 2 20:01:02 oldboyedu run-parts(/etc/cron.hourly)[8453]: finished 0anacron

  • Oct 2 20:01:02                                    产生定时任务信息的时间
  • oldboyedu                                         用户主机名
  • run-parts(/etc/cron.hourly)[8453]                        读取什么定时任务信息
  • finished 0anacron                                    具体执行的任务

13.1.3 定时任务atd的描述(此了解即可)

atd每天只能执行at命令一次,不能循环使用

13.2 定时任务的表示方式

13.2.1 书写方式

* * * * * 接文件和脚本

13.2.2 每个*号代表的意思

第一个*                                    分(0-59)            (每分钟)

第二个*                                    小时(0-23)        (每小时)

第三个*                                    天数(1-31)        (每天)

第四个*                                    月数(1-12)        (每月)

第五个*                                    周数(0-6)            (每周)

警告:天数和周数不能同时指定

13.2.3 例子

  • 5 * * * * 指定每小时的第5分钟执行一次
  • 30 5 * * * 指定每天的 5:30 执行
  • 30 7 8 * * 指定每月8号的7:30分执行
  • 30 5 8 6 * 指定每年的6月8日5:30执行
  • 30 6 * * 0 指定每星期日的6:30执行[注:0表示星期天,1表示星期1,

    以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。

  • 30 3 10,20 * * 每月10号及20号的3:30执行[注:","用来连接多个不连续的时段
  • 25 8-11 * * * 每天8-11点的第25分钟执行[注:"-"用来连接连续的时段
  • */15 * * * * 每15分钟执行一次 [即每个小时的第0 15 30 45 60分钟执行
  • 30 6 */10 * * 每个月中,每隔10天6:30执行一次[即每月的1、11、21、31日是的6:30执行一次

13.3 定时任务常见的几种表示方法

*/n                                        表示出现n的倍数/小时/天/月/周

n-m                                        表示在n-m的时间段内进行备份

n,m                                        表示在n和m的时间段内进行备份

n-m/2                                    表示在n-m时间段内每隔2个小时进行备份

13.3.1 在2点30分的时候备份/etc/hosts文件

13.3.1.1 编写定时任务配置

[root@oldboyedu ~] # crontab -l

30 2 * * * cp /etc/hosts /etc/hosts_lyx.bak

[root@oldboyedu ~] #

13.3.1.2 修改时间为20191003 2:29:40

[root@oldboyedu ~] # date -s "20191003 2:29:40"

Thu Oct 3 02:29:40 CST 2019

[root@oldboyedu ~] # date

Thu Oct 3 02:29:42 CST 2019

13.3.1.3 查看日志

[root@oldboyedu ~] # tail -f /var/log/cron 查看定时任务日志

Oct 2 21:03:23 oldboyedu crontab[9129]: (root) REPLACE (root)

Oct 2 21:03:23 oldboyedu crontab[9129]: (root) END EDIT (root)

Oct 3 02:30:21 oldboyedu crontab[9180]: (root) LIST (root)

Oct 3 02:30:27 oldboyedu CROND[9183]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Oct 3 02:30:27 oldboyedu CROND[9184]: (root) CMD (cp /etc/hosts /etc/hosts_lyx.bak)

13.3.1.4 查看配置是否成功

[root@oldboyedu ~] # ll /etc/hosts_lyx.bak 备份成功

-rw-r--r-- 1 root root 158 Oct 3 02:30 /etc/hosts_lyx.bak

[root@oldboyedu ~] #

13.3.2 每小时的第30分钟进行备份文件/etc/hosts文件

13.3.2.1 编写定时任务配置

[root@oldboyedu ~] # crontab -e

30 */1 * * * cp /etc/hosts /etc/hosts_lyx.bak

13.3.2.2 修改时间

[root@oldboyedu ~] # date -s "20191003 9:29:50" 点29分40秒

Thu Oct 3 09:29:50 CST 2019

[root@oldboyedu ~] # date

Thu Oct 3 09:29:52 CST 2019

13.3.2.3 查看日志

[root@oldboyedu ~] # tail -f /var/log/cron 查看日志备份成功

Oct 3 02:37:47 oldboyedu crontab[9242]: (root) REPLACE (root)

Oct 3 02:37:47 oldboyedu crontab[9242]: (root) END EDIT (root)

Oct 3 02:38:01 oldboyedu crond[1269]: (root) RELOAD (/var/spool/cron/root)

Oct 3 09:30:27 oldboyedu CROND[9296]: (root) CMD (cp /etc/hosts /etc/hosts_lyx.bak)

Oct 3 09:30:27 oldboyedu CROND[9297]: (root) CMD (/usr/lib64/sa/sa1 1 1)

13.3.2.4 查看配置是否成功

[root@oldboyedu ~] # ll /etc/hosts_lyx.bak

-rw-r--r-- 1 root root 158 Oct 3 09:30 /etc/hosts_lyx.bak

[root@oldboyedu ~] #

13.3.3 在每天的9点,10点.11点的30分钟的时候进行文件/etc/hosts文件备份

13.3.3.1 编写定时任务配置

[root@oldboyedu ~] # crontab -e

30 9-11 * * * cp /etc/hosts /etc/hosts_lyx.bak

13.3.3.2 修改时间

[root@oldboyedu ~] # date -s "20191003 9:29:50" 点29分40秒

Thu Oct 3 09:29:50 CST 2019

[root@oldboyedu ~] # date

Thu Oct 3 09:29:52 CST 2019

13.3.3.3 查看日志

[root@oldboyedu ~] # tail -f /var/log/cron 查看日志备份成功

Oct 3 02:37:47 oldboyedu crontab[9242]: (root) REPLACE (root)

Oct 3 02:37:47 oldboyedu crontab[9242]: (root) END EDIT (root)

Oct 3 02:38:01 oldboyedu crond[1269]: (root) RELOAD (/var/spool/cron/root)

Oct 3 09:30:27 oldboyedu CROND[9296]: (root) CMD (cp /etc/hosts /etc/hosts_lyx.bak)

Oct 3 09:30:27 oldboyedu CROND[9297]: (root) CMD (/usr/lib64/sa/sa1 1 1)

13.3.3.4 查看配置是否成功

[root@oldboyedu ~] # ll /etc/hosts_lyx.bak

-rw-r--r-- 1 root root 158 Oct 3 09:30 /etc/hosts_lyx.bak

[root@oldboyedu ~] #

13.3.4 下午3点40,8月6日,周日将数据进行备份

错误,这种写法错误

在定时任务的配置中,不能将日期和周进行同时配置

13.3.5 在每天的9点,11点的30分进行数据的备份

13.3.5.1 编写定时任务配置

[root@oldboyedu ~] # crontab -e

30 9,11 * * * cp /etc/hosts /etc/hosts_lyx.bak

13.3.3.2 修改时间

[root@oldboyedu ~] # date -s "20191003 9:29:50" 点29分40秒

Thu Oct 3 09:29:50 CST 2019

[root@oldboyedu ~] # date

Thu Oct 3 09:29:52 CST 2019

13.3.3.3 查看日志

[root@oldboyedu ~] # tail -f /var/log/cron 查看日志备份成功

Oct 3 02:37:47 oldboyedu crontab[9242]: (root) REPLACE (root)

Oct 3 02:37:47 oldboyedu crontab[9242]: (root) END EDIT (root)

Oct 3 02:38:01 oldboyedu crond[1269]: (root) RELOAD (/var/spool/cron/root)

Oct 3 09:30:27 oldboyedu CROND[9296]: (root) CMD (cp /etc/hosts /etc/hosts_lyx.bak)

Oct 3 09:30:27 oldboyedu CROND[9297]: (root) CMD (/usr/lib64/sa/sa1 1 1)

13.3.3.4 查看配置是否成功

[root@oldboyedu ~] # ll /etc/hosts_lyx.bak

-rw-r--r-- 1 root root 158 Oct 3 09:30 /etc/hosts_lyx.bak

[root@oldboyedu ~] #

13.4 定时任务常见的问题

13.4.1 每隔5分钟进行时间的同步(采用绝对路径)

13.4.1.1 错误示范

13.4.1.1.1 配置定时任务

[root@oldboyedu ~] # crontab -l

*/5 * * * * ntpdate ntp1.aliyun.com

You have new mail in /var/spool/mail/root

[root@oldboyedu ~] #

13.4.1.1.2 修改时间

[root@oldboyedu ~] # date -s "20191003 9:49:50"

Thu Oct 3 09:49:50 CST 2019

[root@oldboyedu ~] # date

Thu Oct 3 09:49:51 CST 2019

13.4.1.1.3 查看日志

[root@oldboyedu ~] # tail -f /var/log/cron

Oct 3 09:45:12 oldboyedu crontab[9480]: (root) REPLACE (root)

Oct 3 09:45:12 oldboyedu crontab[9480]: (root) END EDIT (root)

Oct 3 09:50:12 oldboyedu crond[1269]: (root) RELOAD (/var/spool/cron/root)

Oct 3 09:50:12 oldboyedu CROND[9502]: (root) CMD (ntpdate ntp1.aliyun.com)

Oct 3 09:50:12 oldboyedu CROND[9503]: (root) CMD (/usr/lib64/sa/sa1 1 1)

13.4.1.1.4 查看配置是否成功

[root@oldboyedu ~] # date

Thu Oct 3 09:50:31 CST 2019

[root@oldboyedu ~] #

结论;这样配置出来的时间没有进行同步

13.4.1.2 正确示范

利用命令的绝对路径来备份

13.4.1.2.1 采用绝对路径进行编写

[root@oldboyedu ~] # crontab -l

*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

13.4.1.2.2 修改时间

[root@oldboyedu ~] # date -s "20191003 9:29:50"

Thu Oct 3 09:29:50 CST 2019

[root@oldboyedu ~] # date

Thu Oct 3 09:29:51 CST 2019

13.4.1.2.3 查看日志

[root@oldboyedu ~] # tail -f /var/log/cron

Oct 3 09:57:21 oldboyedu crontab[9585]: (root) REPLACE (root)

Oct 3 09:57:21 oldboyedu crontab[9585]: (root) END EDIT (root)

Oct 3 09:29:59 oldboyedu crond[1269]: (root) RELOAD (/var/spool/cron/root)

Oct 3 09:30:01 oldboyedu CROND[9644]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Oct 3 09:30:01 oldboyedu CROND[9645]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com)

13.4.1.2.4 查看更新是否成功

[root@oldboyedu ~] # date

Wed Oct 2 21:40:43 CST 2019 更新成功

[root@oldboyedu ~] #

脚本完成

13.4.1.2.5 编写脚本

[root@oldboyedu ~] # cat /server/scripts/ntpdate_sync.sh 编写ntpdate_sync.sh脚本

#!/bin/bash

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

echo $PATH &>/tmp/oldboy.txt

ntpdate ntp1.aliyun.com

[root@oldboyedu ~] #

13.4.1.2.6 配置定时任务

[root@oldboyedu ~] # crontab -e

*/5 * * * * sh /server/scripts/ntpdate_sync.sh 将脚本配置到定时任务里面

13.4.1.2.7 修改时间

[root@oldboyedu ~] # date -s "20191004 11:00:40" 年10月4日11点

Fri Oct 4 11:00:40 CST 2019

[root@oldboyedu ~] # date

Fri Oct 4 11:00:41 CST 2019

[root@oldboyedu ~] # date

Fri Oct 4 11:00:42 CST 2019

13.4.1.2.8 查看日志

[root@oldboyedu ~] # tail -f /var/log/cron 查看日志发现脚本已经触发

Oct 3 10:56:46 oldboyedu crontab[2211]: (root) REPLACE (root)

Oct 3 10:56:46 oldboyedu crontab[2211]: (root) END EDIT (root)

Oct 3 10:57:01 oldboyedu crond[1365]: (root) RELOAD (/var/spool/cron/root)

Oct 4 11:01:24 oldboyedu CROND[2386]: (root) CMD (run-parts /etc/cron.hourly)

Oct 4 11:01:24 oldboyedu run-parts(/etc/cron.hourly)[2386]: starting 0anacron

Oct 4 11:01:24 oldboyedu anacron[2398]: Anacron started on 2019-10-04

Oct 4 11:01:24 oldboyedu run-parts(/etc/cron.hourly)[2400]: finished 0anacron

Oct 4 11:01:24 oldboyedu anacron[2398]: Will run job `cron.daily' in 37 min.

Oct 4 11:01:24 oldboyedu anacron[2398]: Jobs will be executed sequentially

Oct 4 11:00:44 oldboyedu CROND[2492]: (root) CMD (sh /server/scripts/ntpdate_sync.sh)

Oct 4 11:00:44 oldboyedu CROND[2494]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Oct 3 11:00:01 oldboyedu CROND[2520]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Oct 3 11:00:01 oldboyedu CROND[2523]: (root) CMD (sh /server/scripts/ntpdate_sync.sh)

13.4.1.2.9 查看是否执行成功

[root@oldboyedu ~] # date

Fri Oct 4 11:00:42 CST 2019

[root@oldboyedu ~] # date 发现时间已经修改为正确的时间

Thu Oct 3 10:59:55 CST 2019

[root@oldboyedu ~] # ll /tmp/oldboy.txt

-rw-r--r-- 1 root root 60 Oct 3 11:00 /tmp/oldboy.txt

[root@oldboyedu ~] # cat /tmp/oldboy.txt 环境变量也同步成功

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@oldboyedu ~] #

13.4.2 规范化的编写定时任务(将输出信息放入黑洞)

13.4.2.1 定时任务执行错误与正确的结果显示在哪里

13.4.2.1.1 postfix服务关闭的时候(inode会占用更多的)

[root@oldboyedu maildrop] # cd /var/spool/postfix/maildrop/ 定时任务会存在这个文件里面

[root@oldboyedu maildrop] # ll

total 8

-rwxr--r-- 1 root postdrop 608 Oct 3 11:19 1C423B3260

-rwxr--r-- 1 root postdrop 608 Oct 3 11:18 CA426B2D3C

13.4.2.1.2 postfix服务开启的时候(block会占用更多的)

[root@oldboyedu maildrop] # cat /var/spool/mail/root 定时任务会存在这个文件里面

From user@localhost.localdomain Mon Sep 23 22:43:29 2019

Return-Path: user@localhost.localdomain

最合理的做法

13.4.2.1.3 使用黑洞来保存输出内容的信息

[root@oldboyedu ~] # crontab -e

*/5 * * * * sh /server/scripts/ntpdate_sync.sh & > /dev/null 将内容输出到黑洞中

13.4.3 编写任务时候的特殊符号(特殊符号无法识别使用\来进行转义)

13.4.3.1 错误示范

13.4.3.1.1 编写定时任务

[root@oldboyedu ~] # crontab -e

* * * * * tar zcvf /opt/hosts_$(date +%F).tar.gz /etc/hosts 编写打包定时任务

13.4.3.1.2 查看日志

[root@oldboyedu maildrop] # tail -f /var/log//cron

查看定时任务日志,发现命令打包出错,不识别+号后面的字符

Oct 3 11:26:40 oldboyedu crontab[3053]: (root) REPLACE (root)

Oct 3 11:26:40 oldboyedu crontab[3053]: (root) END EDIT (root)

Oct 3 11:27:01 oldboyedu crond[1365]: (root) RELOAD (/var/spool/cron/root)

Oct 3 11:27:01 oldboyedu CROND[3122]: (root) CMD (tar zcvf /opt/hosts_$(date +)

13.4.3.2 正确示范

13.4.3.2.1 使用转义符号进行编写

[root@oldboyedu ~] # crontab -e

#30 */1 * * * cp /etc/hosts /etc/hosts_lyx.bak

#*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

#*/5 * * * * sh /server/scripts/ntpdate_sync.sh & > /dev/null

* * * * * tar zcvf /opt/hosts_$(date +\%F).tar.gz /etc/hosts 添加转义符号

13.4.3.2.2 查看日志

[root@oldboyedu maildrop] # tail -f /var/log//cron 日志已经备份成功

Oct 3 11:32:09 oldboyedu crontab[3189]: (root) REPLACE (root)

Oct 3 11:32:09 oldboyedu crontab[3189]: (root) END EDIT (root)

Oct 3 11:33:01 oldboyedu crond[1365]: (root) RELOAD (/var/spool/cron/root)

Oct 3 11:33:01 oldboyedu CROND[3201]: (root) CMD (tar zcvf /opt/hosts_$(date +%F).tar.gz /etc/hosts)

13.4.3.2.3 查看备份是否真的成功

[root@oldboyedu ~] # ll /opt/

total 4

drwxr-xr-x. 2 root root 6 Sep 6 16:53 1.txt

-rw-r--r--. 1 root root 0 Sep 7 10:33 aa.txt

-rw-r--r-- 1 root root 170 Oct 3 11:33 hosts_2019-10-03.tar.gz 备份成功

drwxr-xr-x 2 root root 6 Oct 31 2018 rh

[root@oldboyedu ~] #

13.4.3.2.4 .使用脚本进行编写

[root@oldboyedu ~] # cat /server/scripts/tar_sync.sh

#!/bin/bash

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

tar zcvf /opt/hosts_$(date +\%F).tar.gz /etc/hosts

[root@oldboyedu ~] #

13.4.3.2.5 编写定时任务

[root@oldboyedu ~] # crontab -e 定时任务编写

* * * * * sh /server/scripts/tar_sync.sh & >/dev/null

13.4.3.2.6 查看日志

Oct 3 11:40:27 oldboyedu crontab[3410]: (root) REPLACE (root)

Oct 3 11:40:27 oldboyedu crontab[3410]: (root) END EDIT (root)

Oct 3 11:41:01 oldboyedu crond[1365]: (root) RELOAD (/var/spool/cron/root)

Oct 3 11:41:01 oldboyedu CROND[3444]: (root) CMD (sh /server/scripts/tar_sync.sh & >/dev/null)

日志中查看脚本执行成功

13.4.3.2.7 查看真实是否打包成功

[root@oldboyedu maildrop] # ll /opt/

total 4

drwxr-xr-x. 2 root root 6 Sep 6 16:53 1.txt

-rw-r--r--. 1 root root 0 Sep 7 10:33 aa.txt

-rw-r--r-- 1 root root 170 Oct 3 11:41 hosts_2019-10-03.tar.gz 已经打包成功

drwxr-xr-x 2 root root 6 Oct 31 2018 rh

[root@oldboyedu maildrop] #

13.4.4 定时任务编写的注意事项

  • (1). 编写定时任务需要有注释信息 (时间 编写人员 任务作用)
  • (2). 编写定时任务注意环境变量 /usr/bin:/bin 命令书写为绝对路径
  • (3). 编写定时任务注意特殊符号 需要标记转义符号 \
  • (4). 编写定时任务需要将输出信息定义到空 &>/dev/null
  • (5). 编写定时任务建议使用脚本编写

13.4.5 编写定时任务错误表示方法(定时任务编写方式错误)

13.4.5.1 错误书写方式

4/2 * * * * cp /etc/hosts /etc/hosts_$(date +\%F-\%T) 4/2这种写法是无法保存成功的,格式书写错误

"/tmp/crontab.JQwB8M" 14L, 352C written

crontab: installing new crontab

"/tmp/crontab.JQwB8M":13: bad minute

errors in crontab file, can't install.

Do you want to retry the same edit?

13.4.5.2 编写定时任务正确的表示方法

4-59/2 * * * * cp /etc/hosts /etc/hosts_$(date +\%F-\%T)

13.5 定时任务编写时候的规范

13.5.1 命令编写定时任务时候的注意事项

  • 测试命令是否可以在命令行执行
  • 放入定时任务中(绝对路径)
  • 调整时间信息进行测试
  • 检查日志信息/检查任务执行结果

13.5.2 脚本编写定时任务时候的注意事项

  • 编写脚本信息
  • 测试脚本执行效果(/bin/sh /server/scripts/ntpdate_sync.sh)
  • 放入定时任务中(绝对路径)
  • 调整时间信息进行测试
  • 检查日志信息/检查任务执行结果

教你们学习一个最简单又企业最需要的服务-crond的更多相关文章

  1. Netty学习笔记(四) 简单的聊天室功能之服务端开发

    前面三个章节,我们使用了Netty实现了DISCARD丢弃服务和回复以及自定义编码解码,这篇博客,我们要用Netty实现简单的聊天室功能. Ps: 突然想起来大学里面有个课程实训,给予UDP还是TCP ...

  2. 【酷Q插件制作】教大家做一个简单的签到插件

    酷Q插件已经有很多了,社区分享一大堆,不过还是自己写才有乐趣,哈哈.不得不吐槽一下,酷Q竟然不更新了,出了个酷Q pro,还收费!!诶.不过这也影响不了咱写插件的心情,今天教大家写一个酷Q签到插件,虽 ...

  3. [0403]学习一个——苟(简单Java开发)

    学习一个--苟 1. 开发目的 拜读了某神犇的blog,感到了自身深深的不足.蒟蒻如我,决定提高一蛤自身的姿势水平,学习一个,使用Java重写用GreatestLanguage写的某小说网站的抓取器. ...

  4. SQL 数据库 学习 007 通过一个示例简单介绍什么是字段、属性、列、元组、记录、表、主键、外键 (上)

    SQL 数据库 学习 007 通过一个示例简单介绍什么是字段.属性.列.元组.记录.表.主键.外键 (上) 我们来介绍一下:数据库是如何存储数据的. 数据库是如何存储数据的 来看一个小例子 scott ...

  5. 通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布

    之前的章节我们介绍了如何通过dapr发起一个服务调用,相信看过前几章的小伙伴已经对dapr有一个基本的了解了,今天我们来聊一聊dapr的另外一个功能--订阅发布 目录:一.通过Dapr实现一个简单的基 ...

  6. 通过Dapr实现一个简单的基于.net的微服务电商系统(三)——一步一步教你如何撸Dapr

    目录:一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实现一个简单的基于.net的微服务电商系统(二)--通讯框架讲解 三.通过Dapr实现一个简单的基于.net的微服务电 ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(五)——一步一步教你如何撸Dapr之状态管理

    状态管理和上一章的订阅发布都算是Dapr相较于其他服务网格框架来讲提供的比较特异性的内容,今天我们来讲讲状态管理. 目录:一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实 ...

  8. 通过Dapr实现一个简单的基于.net的微服务电商系统(六)——一步一步教你如何撸Dapr之Actor服务

    我个人认为Actor应该是Dapr里比较重头的部分也是Dapr一直在讲的所谓"stateful applications"真正具体的一个实现(个人认为),上一章讲到有状态服务可能很 ...

  9. 通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流

    在一般的互联网应用中限流是一个比较常见的场景,也有很多常见的方式可以实现对应用的限流比如通过令牌桶通过滑动窗口等等方式都可以实现,也可以在整个请求流程中进行限流比如客户端限流就是在客户端通过随机数直接 ...

随机推荐

  1. [git]关于github的一些用法笔记(入门)

    本视频来自于观看尚硅谷B站教学:https://www.bilibili.com/video/av10475153?from=search&seid=9735863941344749813 而 ...

  2. spring boot使用注解的方式引入mybatis的SqlSessionDaoSupport

    出现这个问题, 说明一点, 我对spring的注解方式的配置只是知道一个皮毛. 没有深入理解. 有时间要把这部分充充电 package com.zhike.qizhi.common.dao; impo ...

  3. python3.7.1安装Scrapy爬虫框架

    python3.7.1安装Scrapy爬虫框架 环境:win7(64位), Python3.7.1(64位) 一.安装pyhthon 详见Python环境搭建:http://www.runoob.co ...

  4. GeoServer 安装教程

    准备内容 安装环境:win10*64位专业版 安装文件:geoserver-2.15.2 安装步骤 安装JDK 1.安装GeoServer是基于Java的环境,所以需要先装Jdk环境. 2.前往官网下 ...

  5. css三大特效之层叠性

    css三大特效之层叠性

  6. Socket 实现简单的多线程服务器程序

    **********服务器端************* public class ServerSocket{ public static void main(String[] args) throws ...

  7. 使用aop加解密http接口

    背景 最近在写一个小程序接口,由于安全性比较高,因此需要给请求参数和响应进行加密处理.如果在每个方法上都加密解密,那样代码就显得太繁琐了而且工作量会加大.所以,我们会统一进行加解密处理,一种比较传统的 ...

  8. OOXML中回车等特殊字符处理方法

    问题点:NPOI处理xlsx文档时,将\r写成了换行符. 实例:以下字符abc\rcde 如果直接复制到Excel 2016,显示结果如下(单元格设置为折行显示): 如果用NPOI写入Xlsx文档,显 ...

  9. redis - redis数据结构与API

    通用命令 keys:遍历所有的key[keys一般不再生产环境使用],时间复杂度O(n) keys * keys he* keys he[h-l]* keys ph? dbsize:计算key的总数, ...

  10. ios中数据存储方式

    以上三种不能存储大批量数据 plist只能先取出来 里面的数据 覆盖存储 SQLLite3 数据库 纯C语言 轻量级 CoreData  基于SQLLite3 OC版本 重量级 大批量数据缓存 SQL ...