Kubernetes下nginx静态图床

1. 为什么需要图床 1. 自己的搭建的图床地址不会更改, 长期可用, 服务保证, 第3方服务, 随时因为各种异常封禁的. 2. Hugo写markdown过程中需要使用图片. 使用Hugo相对地址比较麻烦. 3. 七牛,又拍云之类需要备案和认证, 时间和精力成本比较高. 4. 而且自己搭建后, 凡是可使用markdown的地方都可使用, 富文本也可用, 公众号之类文章也可以使用, 综上图床必须的. 2. 图床原理, 需要搭建什么的图床. 1. 原理的话 就是服务器上的一个一个图片文件, 通过nginx apeache类服务器访问这些图片. 2. 搭建什么的图床. Chevereto + nginx可网页上传, 稍微有点难度, 有需求再上. Nginx 这个目前觉得最简单, 就用这个了. 3. 在Kubernetes下nginx pod创建图床. 1. vim nginx-deployment.yaml, 使用到pvc, 命名空间命名的是nginx-space apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx namespace: nginx-space spec: replicas: 1 selector: matchLabels: app: my-nginx template: metadata: namespace: nginx-space labels: app: my-nginx spec: containers: - name: my-nginx image: nginx:1....

往哪走

生活要往哪走 继续还是放弃 永远都是个问题 心里总是想着凭什么 迟早成仇人 哎… ...

C程序设计语言1.9字符数组示例

1. 要求: 程序读入一组文本行, 并把最长的文本行打印出来. 2. 分析. 要做什么, 读取一行, 与最长行比较, 保存最长行, 读取完, 比较完了, 打印最长行. 读取一行, 碰到换行符或EOF结束符是一行, 能读取的最大长度也是一行, 记录行的长度. 循环内当前行长度与最大行长度比较, 当前行比最大行长, 最大行=当前行, 否则不变. 循环结束后, 结束行与最大行比较, 结束行长度>最大行, 最大行=结束行. 打印最大行. 3. 代码. 1. 为了结束循环, 结束行的长度返回负数. 负数比较时需要转为正数. 2. int数组中’\0’表示结束, 这个特殊需要记下. #include<stdio.h> #include<stdlib.h> #define MAXLINE 1000 int getLine(char line[], int maxline); void copy(char to[], char from[], int maxline); int main(){ int index; int len; int max; max = 0; char line[MAXLINE]; char maxlong[MAXLINE]; while((len=getLine(line, MAXLINE)) > 0){ if(len > max){ max = len; copy(maxlong, line, MAXLINE); } } if(len<0){ if(abs(len) > max){ copy(maxlong, line, MAXLINE); } } for(index=0;maxlong[index] !...

C程序设计语言练习1-15

1. 要求: 重新编写1.2节中的测试计划转换程序, 使用函数实现温度转换计算. 2. 分析. 1. C = (5 / 9) (F - 32) 2. 华氏温度与摄氏温度都是整数, 故输入是整数, 输出也是整数. 3. 代码. 1. 整数. #include<stdio.h> // 华氏温度转摄氏温度 int transfc(int f); int main(){ int i; for(i=0;i<=300;i=i+20){ printf("%-3d %-3d\n", i, transfc(i)); } return 0; } int transfc(int f){ return (f - 32) * 5 / 9; } 2. 补充double数. #include<stdio.h> // 华氏温度转摄氏温度 double transfc(double f); int main(){ double i; for(i=0;i<=300;i=i+20){ printf("%-3.1f %-3.1f\n", i, transfc(i)); } return 0; } double transfc(double f){ return (f - 32....

C程序设计语言练习1-14

1. 要求: 编写一个程序, 打印输入中各个字符出现频度的直方图. 2. 分析. 一.输入部分: 1. 统计什么样的字符? 这里就统计ASCII表中可显示字符, 查询ASCII表可显示字符知, 字符 32~126是可见的, 共95个. 2. 使用一维数组来计数. 3. 不在32~126中的字符, 单独统计到sum中. 4. 超出最大个数则用H打印出. 二.输出部分: 1. 水平直方图, 每行进行判断, 字符统计个数<=HIST, 打印字符和字符统计个数的*, 字符统计个数>HIST, 打印H. 2. 垂直直方图, 每行进行判断. 字符统计个数<=HIST(能统计的最大数), HIST-字符统计个数>当前行row, 打印空格, HIST-字符统计个数<=当前行row, 打印*号. 字符统计个数>HIST(能统计的最大数), 最后一行MAX-1(因为数组0开始数, 最后一行MAX-1)打印H, 其余打印空格. 3. 代码. #include<stdio.h> #define MAX 95 #define HIST 20 int main(){ int input; int a[MAX]; int sum, row, col; sum = 0; for(row=0;row<MAX;row++){ a[row] = 0; } while( (input=getchar()) !...

C程序设计语言练习1-13

1. 要求: 编写一个程序, 打印输入中单词长度的直方图. 水平方向的直方图学校录取容易绘制, 垂直方向的直方图则要困难些. 2. 水平直方图和垂直直方图. 1. 水平方向的直方图: 清楚直方图的定义: 又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况. 单词长度的直方图, 就是打印输入单词的长度. 水平方向的, 容易, 打印这个单词的长度就可以. 需要注意: 单词组成的字符个数不能超过MAXHIST20位, 暂时可以这么定义, 超出这20位用X表示. 统计单词的数量MAXWORDS最多15个, 使用数组来存储单词长度. 读取单词的字符长度练习1-12更改下即可得到. 2. 垂直直图. 使用数组来存单词长度 说明打印规则, 在第0行时, w1列打印空格还是*号, 取决于(HIST-w1长度) 和 当前行row比较, 大于当前行则打印空格, 小于等于则打印*号. 为何从0开始, 数组是从0开始. 下面举例HIST是4, w3单词的长度是2, 在第0行时, w1列是, 4-2 >0 则打印空格. 考虑到有些单词长度可能超出限制,如果有则打印X, 判断逻辑(单词长度>HIST) && 当前不在(row-1)行打印空格, 否则打印X. 为防止数组越界, 需要if(sum<MAXWORDS), 在单词数组内才进行计算字符数. row 0 1 * 2 * * * 3 * * * X w1 w2 w3 w4 (col) 3....

C程序设计语言练习1-12

1. 要求: 编写一个程序, 以每行一个单词的形式打印其输入. 2. 分析. 1. 在每个单词的结尾处换行, 单词结尾的判断, 即前一个字符即不是空格, 制表符, 也不是换行符,后面跟着空格或制表符或换行符. 2. 在遇到不是空格,不是制表符, 不是换行符时输出, 设置标记为1; 3. 遇到空格或制表符或换行符时, 同时判断标记 标记是1则打印换行符(\n), 重置标记位为0. 标记是0(表示上一个输入字符是空格或制表符或换行符)则不处理, 什么也不打印. 3. 代码 注意: 在执行的时候每次回车都是输入, 程序在while就开始循环判断, 同时打印数据. C程序设计语言练习1-12之前的习题则在EOF之后才打印. #include<stdio.h> #define IN 1 #define OUT 0 int main(){ int c, state; state = OUT; while( (c= getchar() ) !=EOF ){ if( c != ' ' && c != '\t' && c != '\n'){ putchar(c); state = IN; }else if( ( c == ' ' || c == '\t' || c !...

C程序设计语言练习1-10

1. 要求: 编写一个将输入复制到全输出的程序, 并将其中的制表符替换为\t, 将回退符替换为\b, 将反斜杠替换为\. 这样可以将制表符和回退符以可见的方式显示出来 2. 分析: 1. 制表符是\t, 输出是\\t, 反斜杠的输入\输出2个\, 那输出是\\\\. 3. 代码. #include<stdio.h> int main(){ int input; while((input=getchar()) != EOF){ if(input == '\\'){ printf("\\\\"); }else if(input == '\t'){ printf("\\t"); }else if(input == '\b'){ printf("\\b"); }else{ putchar(input); } } return 0; } ...

C程序设计语言练习1-9

1. 要求: 编写一个输入复制到输出的程序, 将其中多个空格用一个空格代替. 2. 分析. 1. 比较前一个字符和当前字符如果同为空格(’ ‘), 则不打印, 否则打印. 3. 代码. 1. a的上一个字符可设默认一个非空格字符, 方便判断. #include<stdio.h> int main(){ int a, alast; alast=0; while((a=getchar()) !=EOF){ if(a==' ' && alast ==' '){ continue; } else{ putchar(a); } alast = a; } } ...

C程序设计语言练习1-8

1. 要求: 编写一个统计空格,制表符与换行符个数的程序 2. 分析. 1. 使用getchar()获取输入的字符 2. 判断输入的符. 查询ASCII对照表, 空格ASCII值32(也可使用’ ‘). 制表符’\t’, 换行’\n’. 3. 代码 1. 想输入EOF, linux是按Ctrl + D组合键2次, windows Ctrl + Z, 2. else if的条件成立就进行下一次循环, 如果3个if条件程序判断3次, 没有效率. #include<stdio.h> int main(){ int sumspace = 0; int sumt = 0; int sumn = 0; int c ; while( (c = getchar()) != EOF ){ if( c == 32){ sumspace++; } else if(c == '\t'){ sumt++; } else if(c == '\n'){ sumn++; } } printf("空格数%d 制表符数%d 换行符数%d\n", sumspace, sumt, sumn); return 0; } ...