当前位置: 首页 > news >正文

电商网站的开发形式网站设计的六个因素

电商网站的开发形式,网站设计的六个因素,wordpress默认后台登陆地址,楼市最新消息2022新政目录 ⛳️推荐 一、预备知识 1.1 回车换行 1.2 缓冲区 二、倒计时 2.1 注意事项 三、进度条 3.1 源代码 3.2 代码分析 3.2 实际使用场景 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家… 目录 ⛳️推荐 一、预备知识 1.1 回车换行 1.2 缓冲区 二、倒计时 2.1 注意事项 三、进度条 3.1 源代码 3.2 代码分析 3.2 实际使用场景 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站 一、预备知识 1.1 回车换行 一般意义上的回车换行是两个独立的独立的动作而C语言中的\n则同时完成了回车和换行的工作。回车是将光标移动到当前行的做开始最左侧换行是将光标水平方向保持不变竖直方向向下平移一行。C语言中可以通过转义字符\r实现回车。 我们电脑键盘上的EBTER按键则是同时实现了回车和换行的功能当按下ENTER键光标会去到下一行的最开始的位置。 1.2 缓冲区 先看一个现象 #include unistd.hint main() {printf(Hello Linux!\n); sleep(2);return 0; }这段代码很简单现在屏幕上打印出Hello Linux!接着调用sleep函数让程序休眠两秒。接下来我们对上面的代码稍作修改去掉\n再来试试。 #include unistd.hint main() {printf(Hello Linux!); sleep(2);return 0; }通过动图可以看到在去掉/n后对代码编译运行先是休眠了两秒接着才在屏幕上打印出Hello Linux!并且因为没有\n所以打印完后没有换行导致bash命令行就紧跟在打印结果的后面。 现象分析 很多小伙伴会根据上面的现象猜测这段代码先执行了sleep休眠再去执行printf打印这样的猜测是错误的因为任何一个C程序都是严格按照代码的顺序去执行。既然这样的话先执行printf再执行sleep那在休眠的两秒期间printf的打印结果在哪里呢由于最终Hello Linux!还是出现在我们的屏幕上所以在这两秒期间Hello Linux一定是被保存起来了其实就是保存在缓冲区中。缓冲区就是C语言维护的一段内存。默认当程序结束的时候才会将缓冲区中的内容刷新出来。 如何强制刷新缓冲区 任何一个C程序运行的时候都会默认帮我们打开以下三个流 stdin - - - - 标准输入流键盘stdout - - - - 标准输出流显示器stderr - - - - 标准错误显示器 Linux下一切介文件这三个流都是FILE*的指针所以任何一个C程序运行的时候操作系统会帮我们打开以上三个文件。今天我们只需要关心stdout标准输出流即可。我们可以通过fflush函数来刷新缓冲区。 #include unistd.hint main() {printf(Hello Linux!); fflush(stdout);//刷新缓冲区 sleep(2);return 0; }通过运行结果可以看出这一次虽然在打印的时候也没有加\n但取先把Hello Linux!打印出来然后再休眠两秒。 小Tips通过上面的分析我们可以得出刷新缓冲区主要有以下几种方法 \n可以刷新缓冲区。程序结束也会刷新缓冲区。fflush(stdout)可以手动刷新缓冲区。 二、倒计时 有了上面的知识储备我们先来实现一个简单的倒计时练练手。 源代码 #include processBar.h #include unistd.h int main() {int cnt 10;while(cnt 0){printf(%-2d\r,cnt);fflush(stdout);sleep(1);cnt--;}printf(\n); return 0; }效果演示 2.1 注意事项 回车、刷新缓冲区 由于倒计时是用新数字去覆盖老数字因此每打印一个数字后不能用\n进行换行否则就会像下面这样 这里的正确做法是每打印一个数字后紧跟着打印一个\r回车让光标回到这一行最开始的位置这样新打印的数字就会去覆盖掉老的数字。但是\r不会去刷新缓冲区因此在每打印完一个数字后需要调用fflush(stdout)来刷新缓冲区。 格式化控制 这里我们需要知道往显示器上打印整型10本质上是打印了字符1和字符0由于这两个字符是挨在一起的我们看起来就像是整型10。因此打印10会占用两个字符而打印0~9只需要一个字符所以\r回车之后去覆盖写只会覆盖一个字符对第二个字符0始终没有影响因此我们需要用%-2d来控制每次打印两个位宽的字符-表示将这两个字符左对齐。如果不进行格式化控制打印出来的结果将是下面这样 三、进度条 3.1 源代码 processBar.h #pragma once #include stdio.h #define NUM 102 #define STYLE #define TOP 100 #define BODY extern void processbar();processBar.c #include processBar.h #include string.h #include unistd.h const char* lable |/-\\;//旋转提示 void processbar() {char bar[NUM];memset(bar, \0, sizeof(bar));int len strlen(lable);int cnt 0;while(cnt TOP){printf([%-100s][%d%%][%c]\r, bar, cnt, lable[cnt%len]);fflush(stdout);bar[cnt] STYLE;if(cnt 100){bar[cnt] BODY; }usleep(100000);//以微秒为单位进行休眠想让进度条10秒跑完因为一共会循环101次所以每次循环大概就是休眠0.1秒100毫秒10000微秒}printf(\n); }效果演示 3.2 代码分析 进度条往右走的实现原理 进度条向右走动的原理就是这一次比上一次多打印一点内容。因此我们可以定义一个字符数组bar通过循环每次往字符数组里面追加字符然后将这个字符数组打印出来由于每次循环都会往数组里追加字符所以就会导致下一次打印出来的内容比这一次的多视觉上就感觉进度条在往右走。又因为进度条始终是在同一行往右走的所以每打印完一次要用\r让光标回到当前行的最开始位置下一次打印就会产生覆盖的效果。其次是进度条的风格这里我们定义了标识符常量STYLE 来表示进度条的风格。 while循环逻辑分析 因为进度条是从0~100%中间有101个跨度因此循环的次数就是101次因此cnt的范围是[0,100]这里用TOP来表示区间的右端点100。整个循环会执行101次打印动作和101次字符追加动作因为总共会追加101个字符再加上末尾的\0一共就是102个字符因此表示数组大小的NUM就是102。最初将数组中的内容全部初始化为\0这样第一次打印的就是一个空串什么也没有对标0%打印完后进行追加在数组下标为cnt的位置也就是下标为0的位置追加了一个下标为cnt1的位置也就是下标为1的位置追加一个第二次打印出来的就是对标1%。当到进度到达100%的时候我们希望打印出来的进度条右边没有因为100%对应的是最后一次打印也就是当cnt 100的时候此时我们希望打印出100个即可这意味着当执行这次打印时数组下标为99的位置存储的是一个并且下标为100的位置是\0前者简单当cnt 99的时候字符串追加的时候会把其设置成要满足后者我们就要加一个判断条件当cnt 100的时候才能将bar[cnt]设置成否则不能修改bar[cnt]。 3.2 实际使用场景 上面的processBar.c中为了演示进度条的原理在里面写了一个while循环来模拟但实际上的进度条并不是这样用的。以下载东西为例作为一个进度条它本身并不知道下载了多少它只会提供一个接口在下载东西的时候调用这个接口然后将已经下载好的比率作为参数传给进度条模块它会根据比率打印出对应的进度条样式。 版本一 //processBar.h #pragma once #include stdio.h #define NUM 102 #define STYLE #define TOP 100 #define BODY extern void processbar(int ret);//processBar.c #include processBar.h #include string.h #include unistd.h const char* lable |/-\\; //V2版本 char bar[NUM] {\0};//定义在全局避免每一次函数调用都会重现创建 void processbar(int ret) {if(ret 0 || ret 100)//合理性判断{return;}if(ret 0)//当比率为0的时候将数组全置为\0{memset(bar, \0, sizeof(bar));}int len strlen(lable);printf([%-100s][%d%%][%c]\r, bar, ret, lable[ret%len]);fflush(stdout);bar[ret] STYLE;if(ret 100){bar[ret] BODY;} }//main.c int main() { int total 1000;//假设总共要下载1000个G int cur 0;//当前下载的 while(cur total) { processbar(cur * 100 / total); usleep(50000);//模拟下载花费时间 cur 10;//循环下载了一部分更新进度 } return 0; }版本二 //processBar.h #pragma once #include stdio.h #define NUM 102 #define STYLE #define TOP 100 #define BODY extern void processbar(int ret);//processBar.c #include processBar.h #include string.h #include unistd.h #define NONE \033[m #define RED \033[0;32;31M #define GREEN \033[0;32;32m #define LIGHT_BLUE \033[1;34m #define LIGHT_PURPLE \033[1;35m const char* lable |/-\\; //V2版本 char bar[NUM] {\0}; void processbar(int ret) {if(ret 0 || ret 100)//合理性判断{return;}if(ret 0)//当比率为0的时候将数组全置为\0{memset(bar, \0, sizeof(bar));}int len strlen(lable);printf([LIGHT_BLUE%-100sNONE][%d%%][%c]\r, bar, ret, lable[ret%len]); fflush(stdout); bar[ret] STYLE;if(ret 100){bar[ret] BODY;} }//main.c #include processBar.h #include unistd.h typedef void (*callback_t) (int); //模拟一种安装或者下载 void Downbload(callback_t ct) { int total 1000;//假设总共要下载1000个MB int cur 0;//当前下载的 while(cur total) { int rate cur*100/total; ct(rate); usleep(50000);//模拟下载花费时间 cur 10;//循环下载了一部分更新进度 } printf(\n); } int main() { printf(Downbload 1:\n); Downbload(processbar); printf(Downbload 2:\n); Downbload(processbar); printf(Downbload 3:\n); Downbload(processbar); printf(Downbload 4:\n); Downbload(processbar);return 0; }效果演示 结语 今天的分享到这里就结束啦如果觉得文章还不错的话可以三连支持一下您的支持就是我前进的动力
文章转载自:
http://www.morning.jlktz.cn.gov.cn.jlktz.cn
http://www.morning.kzrbd.cn.gov.cn.kzrbd.cn
http://www.morning.mhmcr.cn.gov.cn.mhmcr.cn
http://www.morning.kybyf.cn.gov.cn.kybyf.cn
http://www.morning.krzrg.cn.gov.cn.krzrg.cn
http://www.morning.clwhf.cn.gov.cn.clwhf.cn
http://www.morning.llsrg.cn.gov.cn.llsrg.cn
http://www.morning.kpmxn.cn.gov.cn.kpmxn.cn
http://www.morning.bswnf.cn.gov.cn.bswnf.cn
http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn
http://www.morning.c7501.cn.gov.cn.c7501.cn
http://www.morning.mqpdl.cn.gov.cn.mqpdl.cn
http://www.morning.ykmg.cn.gov.cn.ykmg.cn
http://www.morning.mywnk.cn.gov.cn.mywnk.cn
http://www.morning.bxczt.cn.gov.cn.bxczt.cn
http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn
http://www.morning.sqgsx.cn.gov.cn.sqgsx.cn
http://www.morning.frtt.cn.gov.cn.frtt.cn
http://www.morning.nmqdk.cn.gov.cn.nmqdk.cn
http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn
http://www.morning.xwbld.cn.gov.cn.xwbld.cn
http://www.morning.fqyqm.cn.gov.cn.fqyqm.cn
http://www.morning.qkrz.cn.gov.cn.qkrz.cn
http://www.morning.zqfz.cn.gov.cn.zqfz.cn
http://www.morning.gkjyg.cn.gov.cn.gkjyg.cn
http://www.morning.jxzfg.cn.gov.cn.jxzfg.cn
http://www.morning.zpkfb.cn.gov.cn.zpkfb.cn
http://www.morning.pphbn.cn.gov.cn.pphbn.cn
http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn
http://www.morning.zxybw.cn.gov.cn.zxybw.cn
http://www.morning.tpchy.cn.gov.cn.tpchy.cn
http://www.morning.wgrl.cn.gov.cn.wgrl.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.lbpfl.cn.gov.cn.lbpfl.cn
http://www.morning.wjhqd.cn.gov.cn.wjhqd.cn
http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn
http://www.morning.mqfkd.cn.gov.cn.mqfkd.cn
http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn
http://www.morning.dbqcw.com.gov.cn.dbqcw.com
http://www.morning.ndpzm.cn.gov.cn.ndpzm.cn
http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn
http://www.morning.fnxzk.cn.gov.cn.fnxzk.cn
http://www.morning.jtmql.cn.gov.cn.jtmql.cn
http://www.morning.tgcw.cn.gov.cn.tgcw.cn
http://www.morning.bmjfp.cn.gov.cn.bmjfp.cn
http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn
http://www.morning.crrjg.cn.gov.cn.crrjg.cn
http://www.morning.lhhdy.cn.gov.cn.lhhdy.cn
http://www.morning.bwjws.cn.gov.cn.bwjws.cn
http://www.morning.rqgq.cn.gov.cn.rqgq.cn
http://www.morning.kttbx.cn.gov.cn.kttbx.cn
http://www.morning.lxthr.cn.gov.cn.lxthr.cn
http://www.morning.stbhn.cn.gov.cn.stbhn.cn
http://www.morning.ybgpk.cn.gov.cn.ybgpk.cn
http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn
http://www.morning.ghkgl.cn.gov.cn.ghkgl.cn
http://www.morning.sooong.com.gov.cn.sooong.com
http://www.morning.qxrct.cn.gov.cn.qxrct.cn
http://www.morning.lqrpk.cn.gov.cn.lqrpk.cn
http://www.morning.deupp.com.gov.cn.deupp.com
http://www.morning.zqdzg.cn.gov.cn.zqdzg.cn
http://www.morning.mxbks.cn.gov.cn.mxbks.cn
http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com
http://www.morning.ggfdq.cn.gov.cn.ggfdq.cn
http://www.morning.qdscb.cn.gov.cn.qdscb.cn
http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn
http://www.morning.qxgmp.cn.gov.cn.qxgmp.cn
http://www.morning.rjnx.cn.gov.cn.rjnx.cn
http://www.morning.zmyzt.cn.gov.cn.zmyzt.cn
http://www.morning.kncrc.cn.gov.cn.kncrc.cn
http://www.morning.gpcy.cn.gov.cn.gpcy.cn
http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn
http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn
http://www.morning.hpprx.cn.gov.cn.hpprx.cn
http://www.morning.sdhmn.cn.gov.cn.sdhmn.cn
http://www.morning.qkqhr.cn.gov.cn.qkqhr.cn
http://www.morning.gsjzs.cn.gov.cn.gsjzs.cn
http://www.morning.nylbb.cn.gov.cn.nylbb.cn
http://www.morning.xtdtt.cn.gov.cn.xtdtt.cn
http://www.morning.ztmnr.cn.gov.cn.ztmnr.cn
http://www.tj-hxxt.cn/news/235154.html

相关文章:

  • 2018年做网站游戏广告推广平台
  • 延安网站建设报价上海建筑建材业网官网入口
  • 如何对网站用户分析手机端网站开发技术
  • 有效果的网站排名聚名网app下载
  • 唐山市网站建设成都网站制作计划
  • ps做网站页面设置为多大聊城网站建设信息
  • 企业信息化建设方案 网站网站目录结构设计应注意的问题
  • 物流公司名称大全网站关键词优化原理
  • 网站 多国语言html成品网站
  • 网站是什么字体不用代码做交互式网站
  • 课程商城网站模板金华网站建设公司招聘
  • 哪个网站可以做汽车评估seo搜索引擎优化技术教程
  • 网站搭建有分谷歌wordpress 同城
  • 如何做网站互链规则合肥建行网站
  • php如何搭建网站后台湖南省做网站的
  • 蓬莱做网站那家好电子商务网站策划书布局设计
  • 建设网站 买了域名还要什么优化网站的步骤
  • 漳州网站开发wordpress 只显示某分类
  • 电脑和手机都能浏览的网站开发怎么在网上销售
  • 绍兴网站建设08keji外贸网站设计设计注意事项
  • 多语种外贸网站营口seo
  • 如何用电脑主机做网站上海企业网页制作
  • 企业家网站建设如何做国外假发网站
  • 怎么在子域名建立一个不同的网站媒体广告
  • 在wordpress主题后台安装了多说插件但网站上显示不出评论模块商务网站推广目标有哪些
  • 山西孝义网站开发网站开发实训报告模板
  • 云霄建设局网站网络广告策划流程
  • 环境设计排版素材网站石龙镇网站仿做
  • 网站诊断书网站设计是用什么软件做
  • 中英文双语网站站点网络舆情监测工作