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

1. 要求: 验证表达式getchar() != EOF的值是0还是1 2. 分析. 1. getchar()是获取一个输入字符, 判断是否为输入结尾, 结尾特定EOF(End of File) 2. Linux中,在新的一行的开头,按下Ctrl-D,就代表EOF(如果在一行的中间按下Ctrl-D,则表示输出"标准输入"的缓存区,所以这时必须按两次Ctrl-D);Windows中,Ctrl-Z表示EOF。(顺便提一句,Linux中按下Ctrl-Z,表示将该进程中断,在后台挂起,用fg命令可以重新切回到前台;按下Ctrl-C表示终止该进程。) 3. 代码 1. 注意a = getchare() != EOF与a = (getchar() != EOF)等价, 原因是=是赋值, !=比=的优先级高, 就像四则运算/号的优先级比+号高一样. 2. while的判断到EOF时会中止执行, 里面语句不会执行, 故需要在外部打印getchar() != EOF的值. #include<stdio.h> int main(){ int a ; while(a = (getchar() != EOF)){ printf("%d\n", a); } printf("%d\n", a); return 0; } ...

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

1. 要求: 编写一个程序打印摄氏温度转换为相应华氏温度的转换表. 2. 分析. 1. 由C = (5/9)(F-32)得到F = C(9/5)+32 2. C摄氏和F华氏温度都有小数, 可使用float 3. 代码 注意事项: %6.1f表示6个数字宽右对齐且保留1位小数 #include<stdio.h>int main(){ float f; float c; int step = 20; int minc = -20; int maxc = 300; c = minc; printf("摄氏温度转换华氏度\n"); while( c <= maxc ){ f = c * 9.0 / 5.0 + 32; printf("%3.0f %6.1f\n", c, f); c = c + step; } return 0; } ...

不准确的01-浮点数

1. 整数时, 二进制与十进制可准确转换, 小数时与二进制转换起来情况就复杂了, 二进制不能准确表示某些十进制的小数. 2. 整数, 二进制与十进制转换. 整数转换规则: 除2, 得商和余数, 商除2得商和余数, 直到商为0. 以125为例, 十进制转换为二进制. 数 商 余数 125/2 62 1 62/2 31 0 31/2 15 1 15/2 7 1 7/2 3 1 3/2 1 1 1/2 0 1 由个位数向前除得最高位数. 125=1x2^0 + 0x2^1 + 1x2^2 + 1x2^3 + 1x2^4 + 1x2^5 + 1x2^6得到二进制数1111101 3....

acme.sh获取域名并自动更新到kubernetes中

0. 原因letsencrypt获取的证书只有3个月有效期, 每次手动更新易出错也会忘记, 所以使用crontab定时acme.sh定时更新最好不过了. 放下文章结构 1. 安装acme.sh, acme.sh官网中文链接. # 推荐使用root用户, 后续也以root用户操作的. curl https://get.acme.sh | sh 2. 使用acme.sh的dns方式, 这里服务商以cloudflare为例. 域名使用cloudflare解析(注册cloudflare官方教程更换域名), 拿到Global API Key和邮箱. 参照官方教程中cloudflare部分. # Global API Key和邮箱 export CF_Key="cloudflare设置中的Global API Key" export CF_Email="cloudflare注册邮箱" # 首次生成域名证书(\*号需要转译) /root/.acme.sh/acme.sh --issue --dns dns_cf -d \*.actiger.com TLSCRT=$(cat /root/.acme.sh/\*.actiger.com/\*.actiger.com.cer) TLSKEY=$(cat /root/.acme.sh/\*.actiger.com/\*.actiger.com.key) # base64转换 ACTIGER_TLSCRT=$(echo "${TLSCRT}"|base64 -w 10000) ACTIGER_TLSKEY=$(echo "${TLSKEY}"|base64 -w 10000) # 生成新的secret. FILE_ACTIGER="/root/kubernetes/pro-blog-cc6/ingress-secret.yml" cat << EOF | tee ${FILE_ACTIGER} apiVersion: v1 data: tls....

重现sudo漏洞

1. 首先创建onetiger用户, 然后在/etc/sudoers中添加onetiger用户的sudo命令, 即/etc/sudoers中添加下面代码(root身份) onetiger ALL=/bin/vim 2. 登录onetiger用户 3. 以onetiger用户执行下面命令, 以用户id -1或4294967295运行后, 再0(用户id是0是root)用户运行命令成功. sudo -u#-1 vim /etc/sudoers sudo -u#0 vim /etc/sudoers 4. 解决办法. 4.1 CVE-2019-14287 漏洞影响 1.8.28 之前的 Sudo 版本, 将 sudo 软件包更新为最新版本. 4.2 禁用非root用户的sudo权限. ...

Jira中问题Bug的工作流

新的项目需要设置问题Bug的工作流, 故整理下. 1. 先看整理好的工作流图片, 点击下载Jira问题工作流. 2. 问题(Bug)可能的状态, 依据项目来定, 以我的项目为例, 共有9个状态. 待办(new) 处理中 已解决 测试中 验证通过(closed) 线上验证中 线上验证通过 重新打开(reopened) 已取消(canceled) 3. 开发与测试能够更改的状态. 3.1 开发能够更改的状态 待办->处理中 处理中->已解决 重新打开->处理中 3.2 测试能够更改的状态 已解决->测试中->验证通过->线上验证中->线上验证通过 测试中->重新打开 验证通过(closed)->重新打开 线上验证中->重新打开 线上验证通过->重新打开 全部状态->已取消...

MariaDB MySQL连接的2种错误

1. 常见MySQL Mariadb连接的2种错误 错误一 ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES) 错误二 ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO). 2. 错误一 常见错误是密码错误 重置密码即可 3. 错误二 输入账号密码时没有输入密码. 1. 命令行中没有-p进行无密码登录 2. 如果是IDE中的yaml文件确定password的缩进正确 cat application.yaml spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mariadb://localhost:3306/admin username: admin password: 123456 上面的password缩进错误, 就会提示(using password:No) 正确的是 spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mariadb://localhost:3306/admin username: admin password: 123456 ...

腾讯云安装docker碰到的问题

1. CentOS 7.6版本 docker版本yum install -y docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 2. 解决docker启动失败问题 Error starting daemon: error initializing graphdriver: \"/var/lib/docker\" contains several valid graphdrivers: devicemapper, overlay; Please cleanup or explicitly choose storage driver (-s <DRIVER>) 删除/var/lib/docker中的devicemapper即可 Error starting daemon: Error initializing network controller: list bridge addresses failed: no available network 缺少桥接,添加一个 ip link add name docker0 type bridge ip addr add dev docker0 172.17.0.1/16 重启docker systemctl restart docker ...

Kubernetes扩容增加node节点

1. Kubernetes扩容增加node节点 创建token kubeadm token create 查看kubernetes认证的SHA256加密字符串是多少 openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' 加入master节点 kubeadm join <主master ip>:6443 --token <刚刚创建的token> --discovery-token-ca-cert-hash sha256:<上面的加密字符串> 操作这些时先更新下系统. ...

解决腾讯云PVC网络指定公网ip安装kubernetes master节点失败问题

1. 问题描述, 使用腾讯云VPC(Virtual Private Cloud)即专有网络, 初始化kubernetes init指定公网ip, 初始化失败 kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<公网ip> --ignore-preflight-errors=NumCPU 截取提示错误信息 Nov 23 20:09:16 mm.com kubelet[22940]: E1123 20:09:16.997560 22940 kubelet.go:2252] node "mm.com" not found Nov 23 20:09:17 mm.com kubelet[22940]: E1123 20:09:17.053858 22940 controller.go:125] failed to ensure node lease exists, will retry in 7s, error: Get https://118.89.82.5:6443/apis/coordination.k8s.io/v1beta1 Nov 23 20:09:17 mm.com kubelet[22940]: E1123 20:09:17.097695 22940 kubelet.go:2252] node "mm.com" not found Nov 23 20:09:17 mm.com kubelet[22940]: E1123 20:09:17.101372 22940 reflector....