- C++趣味实践项目(超市管理系统、校园导航系统)
咔哆TryBid
c++开发语言
1️⃣超市管理系统(字符界面)|*程序1:超市管理系统*|#includeusingnamespacestd;#include//setw()函数#include//strcpy()函数#include//C头文件引入在交互模式下背景及字体颜色头文件#include//引入时间模块#include//引入操作系统头文件getch()voidSetcolor_0211adby(intuBack_02
- 【C语言】内存函数详解与模拟实现
利刃大大
C语言c语言开发语言
文章目录拓展:Ⅰ.memcpy--内存拷贝1、函数介绍与使用2、模拟实现Ⅱ.memmove--内存拷贝1、函数介绍与使用(与memcpy函数的区别)2、模拟实现Ⅲ.memcmp--内存比较1、函数介绍与使用2、模拟实现Ⅳ.memset--内存设置1、函数介绍与使用2、模拟实现拓展:符号扩展是指将有符号类型的值转换为更宽的类型时,如果符号位为1,则在更高位填充1,以保持符号不变。例如,将signed
- c++ 内存处理函数
heeheeai
c++开发语言
在C语言的头文件中,memcpy和memmove函数都用于复制内存块,但它们在处理内存重叠方面存在关键区别:内存重叠:memcpy函数不保证在源内存和目标内存区域重叠时能够正确复制数据。如果内存区域重叠,memcpy的行为是未定义的,可能会导致数据损坏或程序崩溃。memmove函数能够安全地处理源内存和目标内存区域重叠的情况。它会确保在复制过程中不会覆盖尚未复制的数据,从而保证数据的完整性。效率:
- 打开C语言常用内存函数的大门(一) —— memcpy()函数 (内含讲解用法和模拟实现)
埋头编程~
C语言c语言开发语言visualstudio算法
文章目录1.前言2.memcpy函数2.1memcpy函数的原型2.2memcpy函数的形参和返回值详解3.memcpy函数的演示4.memcpy函数的模拟实现5.总结1.前言在之前写的文章中,我介绍了几个比较常用的字符串函数strlen、strcmp、strcpy。它们作用的对象只能是形如字符串类型的数据。那这难免会引起我们心中一泡浓厚的求知欲——C语言有没有给我们提供一些类似于字符串函数的功能
- 9.4日常记录
冰榫
算法
一、索英笔试1.实现strcpy1.charsrc[]="Hello,World!";:这里定义了一个字符数组。这个字符串"Hello,World!"的内容被直接存储在这个数组中,数组的大小由字符串的长度加上一个额外的位置用于存储字符串结束符'\0'自动确定。例如,这个数组的大小为13(12个字符加上一个结束符)。可以修改这个数组中的内容,因为它是在栈上分配的可修改的内存区域。2.char*src
- Transiting from CUDA to HIP(三)
青禾子的夏
HIP异构计算Rocm开发语言
一、Workarounds1.memcpyToSymbol在HIP(Heterogeneous-computeInterfaceforPortability)中,hipMemcpyToSymbol函数用于将数据从主机内存复制到设备上的全局内存或常量内存中,这样可以在设备端的内核中访问这些数据。这个功能特别有用,因为它允许在主机端定义数据符号,并在设备端的内核中使用这些符号。#include#inc
- C/C++复习 day1
Mr_温
C++c语言c++开发语言
C/C++复习day1文章目录C/C++复习day1前言一、C语言1.memcpy函数2.memmove函数3.strstr函数4.宏定义的函数5.大小端的介绍以及判断二、C++入门基础1.C++是如何支持函数重载的?2.建议用constenuminline去替代宏三、C++类和对象1.类大小的计算2.移动构造和移动赋值1.右值引用2.move关键字3.模板右引用4.完美转发5.移动构造和移动赋值
- c 实现linux命令wc,C写的实现wc和ls函数
多特姚
c实现linux命令wc
#include//用lstat函数获取文件的类型intget_mode(char*file){structstatbuf;char*ptr;if(lstat(file,&buf)pw_name);strcpy(name2,getpwuid(buf.st_gid)->pw_name);printf("%s%s",name1,name2);return0;}//浏览文件夹的内容structdiren
- 内存函数memcpy//memmove//memcmp//memset
别辜负这场相遇
Cc语言
memcpy/*memcpy内存拷贝负责两份独立空间数据的拷贝void*memcpy(void*destination,constvoid*source,size_tnum)函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。这个函数在遇到'\0'的时候并不会停下来。如果source和destination有任何的重叠,复制的结果都是未定义的*/#
- c++ string类 重载实现(续)9月3日
୧㋡Mོickꦿ࿐
c++开发语言
#include#include#includeclassMystring{private:intlen;char*str;public:Mystring(){str=nullptr;len=0;}Mystring(constchar*s){len=strlen(s);str=newchar[len+1];strcpy(str,s);}~Mystring(){if(str!=nullptr){de
- CppBase
renzhe20092584
C++/C
1.数据类型的相互转换(1)int转换到stringcharbuf[10];sprintf(buf,"%d",100);stringb=buf;(2)string转换到intstd::stringstr="123456";inti;charbuf[10];strcpy(buf,str.c_str());sscanf(buf,"%d",&i);intkey=atoi(ks.c_str());(3)c
- C语言中10个字符串函数详解
土豆片啊
C语言学习c语言学习
目录1.strlen2.strcpy3.strcat4.strcmp5.strncpy6.strncat7.strncmp8.strstr9.strtok10.strerror1.strlen基本结构:size_tstrlen(constchar*str);功能:用于计算字符串的长度;字符串已经'0'作为结束标志,strlen函数返回的是在字符串中'\0’前面出现的字符个数;参数指向的字符串必须要
- 字符串操作相关函数(C语言)
Beginner_bml
c语言开发语言
目录头文件strlenstrcpystrcatstrcmpstrchrstrstratoXstrtoksprintfsscanf头文件string.hstrlen作用:测量字符串长度语法:size_tstrlen(constchar*s);参数:要测量的字符串(必须是一个以空字符结尾的字符数组或字符指针。)返回值长度注意:测量的长度不包括\0和空字符strcpy作用:拷贝字符串(深拷贝)语法:ch
- C++学习,函数
五味香
c++学习开发语言c语言linux
函数是一组执行一个任务的语句,每个C++程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义为函数。如何划分代码到不同的函数中是由功能决定,逻辑上划分通常是根据每个函数执行一个特定的任务来进行的。函数声明告诉编译器函数的名称、返回类型和参数。C++标准库提供了大量的程序可以调用函数。例如,函数strcat()用来连接两个字符串,函数memcpy()用来复制内存到另一个位置。定义函数
- memcpy()函数用法
余晴尽欢
c++算法开发语言
1.函数声明:void*memcpy(void*dest,constvoid*src,size_tn)参数:dest:指向目标内存的指针。src:指向源内存的指针。n:要被复制的字节数。返回值:该函数返回一个指向目标存储区dest的指针。memcpy是一个C语言标准库函数,用于内存拷贝。它的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。2.示例:
- 字符串函数详解
李妖妖的拯救者
算法运维c语言开发语言
前言:Hello,各位小伙伴上期我们学习了字符串操作函数中的strlen,这期我会带领大家详细介绍其他的一些字符串操作函数。我们会从格式,举例,还有模拟操作来更加深入的了解字符串操作函数。目录strlen的使用和模拟实现strcpy的使用和模拟实现strcat的使用和模拟实现strcmp的使用和模拟实现strncpy的使用和模拟实现strncat的使用和模拟实现strstr的使用和模拟实现strt
- c语言内存函数(memcpy/memmove/memset/memcmp)详解
无敌暴龙战神!
c语言c语言c++算法
目录一.什么是内存函数?二:内存函数1.memcpy2.memmove函数3.memset函数4.memcmp函数一.什么是内存函数?内存函数是指对内存空间块的数据进行操作的函数,都在string.h这个文件里。、二:内存函数1.memcpymemcpy:C和C++使用的内存拷贝函数函数原型:void*memcpy(void*destin,void*source,unsignedn);函数的功能:
- C语⾔内存函数整理
2301_80115625
c语言
本节我们学习了四个内存函数的使用,以及其中两个内存函数的模拟与实现。首先第一个memcpy函数,这是一个从source的位置开始向后复制num个字节的数据到destination指向的内存位置的函数,由于指定了复制的字节数,所以无论碰不碰到、0,他都不会停下,直到复制到指定字节数。但这个函数中的两个参数的数组不能有任何重合。然后就是memmove函数,这是针对memcpy函数无法满足的情况的补充,
- Linux C语言学习 内存管理 链表
linux快速学
Linux学习c语言linux算法
内存管理:1.操作野指针会导致程序崩溃注意:操作指针时,注意指针指向的空间是否存在?是否可用?2.避免产生内存溢出:1.存储越界当使用strcat、strcpy、strcmp函数时可能会产生内存越界应该用strncat、strncpy、strncmp函数替代2.越界访问数组避免越界访问字符串缺少\0导致的越界访问3.堆区空间的使用:mallocvoid*malloc(size_tsize);fre
- 字符函数和字符串函数(二)
Starry_hello world
c语言有问必答笔记
有任何不懂的问题可以评论区留言,能力范围内都会一一回答1.strcpy头文件#includechar*strcpy(char*destination,constchar*source);这个函数的功能是复制字符串将source指向的C字符串复制到指向destination的数组中,包括终止\0字符(并在该点处停止)。为避免溢出,destination指向的数组的大小应足够长,以包含与source相
- C语言简单题(7)从主函数中输入10个等长字符串,用一个函数对他们排序,然后在主函数输出这10个已排好序的字符串
没那么特别的特别
c语言算法数据结构
从主函数中输入10个等长字符串,用一个函数对他们排序,然后在主函数输出这10个已排好序的字符串/*从主函数中输入10个等长字符串,用一个函数对他们排序,然后在主函数输出这10个已排好序的字符串*/#include#includevoidsort(char(*s)[100]){inti,j;chartemp[100],*t=temp;for(i=0;i0){strcpy(t,s[j]);strcpy
- 含有字符串数组的结构体的赋值、输入、字符串比较
是攸宁啊
Cc语言算法蓝桥杯
1.之所以用到结构体,是因为一个物体有多个属性,此时使用结构体简单些2.对字符串进行整体操作时,需要添加头文件#include1).字符串赋值需要使用strcpy(char*dst,constchar*src)函数,即把后者的值赋予前者2).字符串比较需要使用intstrcmp(char*str1,char*str2)函数,相等返回0,前者大返回1,后者大返回-1下面是笔者认为比较经典的题(根据结
- C 语言string.h常见函数用法
爱掉发的小李
c语言数据结构算法学习
字符串处理函数中一些常用函数的使用方法和注意事项。1.strcpy()函数:用于将字符串复制到另一个字符串中。chardestination[100];charsource[]="Hello,World!";strcpy(destination,source);注意事项:确保目标字符串的缓冲区足够大,以容纳源字符串的内容。否则,可能会导致缓冲区溢出。2.strlen()函数:用于计算字符串的长度。
- 【无标题】
ainuliba
c语言
1.代码实现C语言库函数memcpy(两个数据内存不存在交集)代码在clion软件通过编译memcpy函数不限制原数据类型和目标数据类型只是操作用户输入的内存空间的数据#include#includevoid*my_memcpy(void*des,constvoid*src,size_tnumber){assert(des!=NULL);//假如指针是空直接不执行下面代码的操作assert(src
- memcpy
啵啵_long_港
memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。-百度百科https://baike.baidu.com/item/memcpy/659918?fr=aladdin
- 0124嵌入式第九天
obverd
数据结构嵌入式硬件排序算法算法
一、复习二、1.学习新函数---字符串拼接char*strcat(char*dest,constchar*src);2.比较字符串大小intstrcmp(constchar*s1,constchar*s2);3.字符串常用函数strlen--获取字符串长度strcpy--相当于字符串间赋值strcat--拼接字符串strcmp--比较字符串4.二维数组字符串的排序选择冒泡
- 【C++】vector模拟实现+迭代器失效
奶芙c
c++开发语言算法笔记c语言
vector模拟实现成员变量定义默认成员函数构造函数迭代器范围for、对象类型匹配原则容量操作sizeemptycapacityreserve成员变量未更新memcpy值拷贝resize内置类型的构造函数数据访问frontbackoperator[]数据修改操作push_backpop_backswapclearinsertpos位置未更新无返回值erase无返回值迭代器失效定义insert导致的
- 【C++航海王:追寻罗杰的编程之路】vector
枫叶丹4
C++c++开发语言后端visualstudioc语言
目录1->vector的介绍及使用1.1->vector的介绍1.2->vector的使用1.2.1->vector的介绍1.2.2->vectoriterator的使用1.2.3->vector空间增长问题1.2.4->vector的增删查改1.2.5->vector迭代器失效问题2->vector的深度剖析及模拟实现2.1->vector的模拟实现2.2->使用memcpy拷贝问题2.3->动
- 【C语言】长篇详解,字符系列篇1-----“混杂”的各种字符类型字符转换和strcpy的使用,模拟实现【图文详解】
CILMY23
C语言c语言开发语言
欢迎来CILMY23的博客喔,本期系列为【C语言】长篇详解,字符系列篇1-----“混杂”的各种字符函数……,图文讲解各种字符函数,带大家更深刻理解C语言中各种字符函数的应用,感谢观看,支持的可以给个赞哇。前言在C语言中,我们常常碰见各种字符,也需要对字符进行处理,那C语言提供了一系列的库函数,来帮助我们处理各种情况。字符函数有字符串函数,字符分类函数,还有字符转换函数……目录一、字符分类函数二、
- C语言第二十五弹---字符函数和字符串函数(上)
小林熬夜学编程
C语言详解c语言开发语言算法
✨个人主页:熬夜学编程的小林系列专栏:【C语言详解】【数据结构详解】目录1、字符分类函数2、字符转换函数3、strlen的使用和模拟实现4、strcpy的模拟实现5、strcat的模拟实现6、strcmp的模拟实现7、strncpy函数的使用总结在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语言标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些函数。1、字符分类函数C语
- ASM系列四 利用Method 组件动态注入方法逻辑
lijingyao8206
字节码技术jvmAOP动态代理ASM
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以
- java编程思想 --内部类
百合不是茶
java内部类匿名内部类
内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(
- web.xml报错
crabdave
web.xml
web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s
- 泛型类的自定义
麦田的设计者
javaandroid泛型
为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
- CSS清除浮动的4中方法
IT独行者
JavaScriptUIcss
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s
- Cygwin使用windows的jdk 配置方法
_wy_
jdkwindowscygwin
1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS
- linux下安装maven
无量
mavenlinux安装
Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹
- tomcat的https 配置,syslog-ng配置
aichenglong
tomcathttp跳转到httpssyslong-ng配置syslog配置
1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit
- 关于领号活动总结
alafqq
活动
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打
- java数据结构 冒泡排序的遍历与排序
百合不是茶
java
java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[]
- JS检查输入框输入的是否是数字的一种校验方法
bijian1013
js
如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
- Test注解的两个属性:expected和timeout
bijian1013
javaJUnitexpectedtimeout
JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it
- [Gson二]继承关系的POJO的反序列化
bit1129
POJO
父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap
- 【Spark八十四】Spark零碎知识点记录
bit1129
spark
1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
- WAS各种脚本作用大全
ronin47
WAS 脚本
http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自
- java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
bylijinnan
switch
借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o
- Netty源码学习-ObjectEncoder和ObjectDecoder
bylijinnan
javanetty
Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送
- spring 定时任务中cronExpression表达式含义
chicony
cronExpression
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb
- Nutz配置Jndi
ctrain
JNDI
1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可.
- 解决 /bin/sh^M: bad interpreter: No such file or directory
daizj
shell
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具
- [转]for 循环为何可恨?
dcj3sjt126com
程序员读书
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju
- Android实用小技巧
dcj3sjt126com
android
1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes
- Oracle 复习笔记之序列
eksliang
Oracle 序列sequenceOracle sequence
转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval
- 有“品”的程序员
gongmeitao
工作
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
- 使用KeleyiSQLHelper类进行分页查询
hvt
sql.netC#asp.nethovertree
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D
- SVG 教程 (三)圆形,椭圆,直线
天梯梦
svg
SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c
- 链表栈
luyulong
java数据结构
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public
- 基础数据结构和算法十:2-3 search tree
sunwinner
Algorithm2-3 search tree
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga
- spring配置定时任务
stunizhengjia
springtimer
最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi
- ITeye 8月技术图书有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http