- IP2Region通过IP库ip定位城市来处理评论
未来AI编程
服务器运维
Ip2region是什么ip2region-是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的xdb数据生成和查询客户端实现。Ip2region特性1、IP数据管理框架xdb支持亿级别的IP数据段行数,默认的region信息都固定了格式:国家|区域|省份|城市|ISP,缺省的地域信息默认是0。region信息支持完全自定义,例如:你可以在region中
- 一直绕waf一直爽!利用 multipart/form-data 解析差异绕 WAF!!(全网最详细)
Dest1ny(沉淀版)
php开发语言web安全经验分享网络安全
、大家好,我是Dest1ny!今天是介绍利用multipart/form-data解析差异绕WAF!文中共介绍了八种绕过方法,基于对应的特征。1.multipart/form-data结合参数污染2.multipart/form-data参数覆盖3.multipart/form-data文件名覆盖4.multipart/form-dataContent-Disposition参数覆盖5.multi
- feign调用跳过HTTPS的SSL证书校验配置详解
秋分的秋刀鱼
Java网络编程sslhttps网络java
一、问题抛出如果不配置跳过SSL证书校验,当Feign客户端尝试连接到一个使用自签名证书的服务器时,可能会抛出类似以下的异常:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCe
- 解决redux中state更新是异步的问题
_Kay_
前端reactredux
在开发的过程中突然发现了一个非常诡异的问题,伪代码如下:this.props.dispatch(updateData(value))//1console.log(this.props.data)//2状态没有更新setTimeout(()=>//3状态发生了更新)于是猜想redux执行action应该是同步的,但是reducer中将新状态返回更新store数据仓库的过程应该是异步的.所以当上面1处
- 程序默认栈空间大小
tadus_zeng
操作系统
linuxlinux下线程的默认栈大小是8M$ulimit-s8192#8*1024KB查看单个进程暂用堆栈的信息$strace-f-p{PID}临时改变栈空间的大小ulimit-s102400#改为100MBulimit-sunlimited#不限制永久修改栈空间大大小echo-ne"*softstack102400">>/etc/security/limits.conf或者$sudoecho'
- oracle组件详解,Oracle数据库组件系列小结
SUST206林子大
oracle组件详解
Oracle组件的信息可以通过v$option和dba_registry查看:--查看v$option:V$OPTIONdisplaysOracleDatabaseoptionsandfeatures.Typically,althoughnotalways,optionsmustbeseparatelylicensed,whereasfeaturescomewiththeproductandare
- lisp不是函授型语言_LISP语言
sunlee0520
lisp不是函授型语言
[拼音]:LISPyuyan[外文]:LISP为非数值符号运算而设计的表处理语言。LISP是英文LISTPROCESSING(表处理)的缩写。LISP语言是1960年J.麦卡锡在递归函数论基础上首先设计出来的。LISP语言的形式化程度高,表达力强,适合于描述各种知识和编写问题求解的程序,因此一直是用来研究人工智能的一种基本语言。自然语言中词可以认为是能单独用来构成句子的最小单元,由词可以构成词组,
- lisp语言与python_Lisp 语言优点那么多,为什么国内很少运用?
特殊后勤小干事
lisp语言与python
为什么Lisp没有流行起来本文探讨的是为什么Lisp语言不再被广泛使用的。很久以前,这种语言站在计算机科学研究的前沿,特别是人工智能的研究方面。现在,它很少被用到,这一切并不是因为古老,类似古老的语言却被广泛应用.其他类似的古老的语言有FORTRAN,COBOL,LISP,BASIC,和ALGOL家族,这些语言的唯一不同之处在于,他们为谁设计,FORTRAN是为科学家和工程师设计的,他们在计算机上
- Blazor-AdminLTE 项目教程
诸余煦
Blazor-AdminLTE项目教程blazor-adminlteThisprojectadaptsADMINLTE3sothecomponentscanbeusedfromdotnetcoreBlazor/Server/WebAssembly项目地址:https://gitcode.com/gh_mirrors/bl/blazor-adminlte1.项目的目录结构及介绍Blazor-Admi
- Lisp语言:循环控制
YdvCss
lisp开发语言
Lisp是一种功能强大的编程语言,具有灵活的控制结构和丰富的语法。在Lisp中,我们可以使用循环控制结构来迭代执行一系列操作。本文将介绍Lisp中的循环控制结构以及它们的使用方法,并提供相应的源代码示例。在Lisp中,常用的循环控制结构有三种:do、dotimes和dolist。这些结构各有特点,适用于不同的循环场景。下面我们将逐个介绍它们的用法。do循环do循环是Lisp中最通用的循环控制结构,
- 微信小程序开发项目-基于微信小程序的毕业设计180套(源码+演示录像+LW)
职场程序猿
微信小程序毕业设计微信小程序课程设计小程序java毕设毕业设计
大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。今天给大家分享180+的微信小程序毕业设计,后台用Java开发,这些项目都经过精心挑选,涵盖了不同的实战主题和用例,可做毕业设计和课程设计参考。✍️除了源码,对于大部分项目实现的功能都有相应的介绍,并且配有演示视频,方便大家根据自己的需要择优下载学习。另外如有定制需求或者想要相对应的论文参考,文末可以十我VX联系。后续还会持续更新,欢迎关注!
- Lisp语言的循环实现
齐雅彤
包罗万象golang开发语言后端
Lisp语言的循环实现引言Lisp(LIStProcessing)是一门历史悠久且具有高度灵活性和表达力的编程语言。自1958年首次面世以来,Lisp语言在学术界与工业界均得到了广泛应用。它的函数式编程范式和强大而独特的宏系统使得Lisp在处理符号处理和人工智能领域特别出众。循环结构是程序设计中不可或缺的部分,而在Lisp中,循环的实现与其他编程语言有很大不同。本文将探讨Lisp语言中循环的各种实
- OpenCV相机标定与3D重建(66)对立体匹配生成的视差图(disparity map)进行验证的函数validateDisparity()的使用
jndingxin
OpenCVopencv3d
操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述使用左右检查来验证视差。矩阵“cost”应该由立体对应算法计算。cv::validateDisparity函数是OpenCV库中用于对立体匹配生成的视差图(disparitymap)进行后处理的一个工具。其主要功能是对计算出的视差值进行验证,确保相邻像素间的视差值
- SpringBoot+Netty+WebSocket 如何实现消息推送
技术琐事
rxjavajavajava-ee架构后端
Netty是一个利用Java的高级网络的能力,隐藏底层的复杂性而提供一个易于使用/使用其服务器的API的客户端框架。基于SpringBoot+MyBatisPlus+Vue&Element实现的后台管理系统+用户小程序,支持RBAC动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
- 如何精力旺盛
CIb0la
程序人生学习
其实这是一个常聊常新的话题,保持充足睡眠,轻松愉快的心神,良好的生活习惯,作息和吃饭极其规律,有一周健身3到4次的习惯,这个保持精力旺盛还是能做到的。下面是给职场牛马的一些建议:1、抽空做深呼吸,深呼吸可以减慢心跳速度,减少神经张力,降低血压。每天做10-15次深呼吸。另外,任何时候,当你感觉紧张或压力很大时,就做做深呼吸。让空气充满你的胸部和腹部,然后再慢慢地呼出。迈克尔·施密德特著有《厌倦疲劳
- 十六进制文本码流转pcap(text2pcap)
wang.wenchao
css前端
HextoPCAPConverterbody{font-family:Arial,sans-serif;margin:0;padding:0;padding-top:0;min-height:100vh;background:rgb(251,250,250);display:flex;justify-content:center;align-items:flex-start;}.container
- AI写代码工具:程序员的效率利器与职业发展新机遇
前端
在如今竞争激烈的职业环境中,个人职业发展至关重要。提升工作效率,专注于核心竞争力,已成为每位职场人士,特别是程序员的共同追求。而随着人工智能技术的飞速发展,各种AI写代码工具应运而生,为程序员们提供了前所未有的效率提升和职业发展新机遇。本文将深入探讨AI代码生成工具如何帮助程序员提升效率,掌握新技术,并最终促进职业发展。提升效率,专注核心竞争力程序员的工作常常涉及大量重复性的代码编写,例如前端页面
- 【论文速读】| 评估并提高大语言模型生成的安全攻击探测器的鲁棒性
llm
基本信息原文标题:EvaluatingandImprovingtheRobustnessofSecurityAttackDetectorsGeneratedbyLLMs原文作者:SamuelePasini,JinhanKim,TommasoAiello,RocíoCabreraLozoya,AntoninoSabetta,PaoloTonella作者单位:UniversitàdellaSvizze
- html简单项目案例
张小特
htmlcsscss3
数据展示/*全局样式*/body{font-family:Arial,sans-serif;margin:0;padding:0;background-color:#f9f9f9;display:flex;flex-direction:column;min-height:100vh;}/*页面容器*/.container{max-width:1200px;margin:0auto;padding:
- Android studio 3.0 常用插件备忘录
kimonik
1.Androidbutterknifezelezny2.gsonfomat3.ectranslation4.adbeifi5.permissiondispatcherpluginctrl+shift+i快速查看函数实现ctrl+shift+enter补全if,for等函数结构ctrl+shift+上下箭头快速移动整行代码alt+shift+F10快速打开run菜单
- 华为e9000服务器pxe安装系统,E9000安装与配置.ppt
独角瘦
E9000安装与配置资料本节主要介绍URP8100产品的市场定位,组成部分及业务能力、组网能力、集成度、可靠性、安全性、可维护性等特点。如果CX910安装在E1/E2槽位,Base平面将会失效*******本节主要介绍URP8100产品的市场定位,组成部分及业务能力、组网能力、集成度、可靠性、安全性、可维护性等特点。3.4查看Base/Fabric平面端口对应关系displayport-conne
- 领导力与职业发展:帮助团队成员成长
AI天才研究院
大数据AI人工智能ChatGPTjavapythonjavascriptkotlingolang架构人工智能大厂程序员硅基计算碳基计算认知计算生物计算深度学习神经网络大数据AIGCAGILLM系统架构设计软件哲学Agent程序员实现财富自由
《领导力与职业发展:帮助团队成员成长》关键词:领导力、职业发展、团队成长、管理技能、领导艺术摘要:本文深入探讨了领导力与职业发展的关系,探讨了领导力在团队中的核心作用,以及如何通过有效的领导力帮助团队成员实现个人与职业的成长。文章从领导力的基础理论出发,逐步分析了领导力的定义、重要性、技能与个人发展,详细阐述了职业规划、职场技能提升、职业发展策略等方面的内容。同时,文章结合实践案例,提供了具体的领
- python复制word全部内容,包括图片、文字、格式
clean_water
pythonpythonpython复制word
importwin32com.clientapp=win32com.client.Dispatch('Word.Application') doc=app.Documents.Open(r'D:\winGUI\test\1.doc')doc.Content.Copy()doc.Close()
- 元素滚动和内容居中同时存在时,flex 布局的 safe 关键字,保证dom元素滚动的时候不溢出
我有一棵树
javascript前端css
假设你有一个元素div,同时设置了flex布局居中和overflow:auto/scroll。为了防止内容溢出,我们可以使用safe这个属性,比如display:flex;justify-content:safecenter;align-items:safecenter;overflow-y:scroll;这样就可能保证元素在滚动的时候内容能够显示全。但是注意,这个safe的属性,兼容性不太好。注
- ubuntu server 24 安装备忘
fancybit
linuxubuntu数据库
I.安装桌面和VNCsudoapt-getinstallgnomesudoapt-getinstallgnome-panelsudoapt-getinstalltigervnc-standalone-servervi~/.vnc/configsession=gnomegeometry=1920x1080localhost=nodepth=32SecurityTypes=VncAuthvi~/.vn
- 巨好看的登录注册界面源码
bjzhang75
前端开发HTMLCSS登录注册页面
展示效果源码Document*{margin:0;padding:0;box-sizing:border-box;}body{width:100%;height:100%;}.container{width:100%;height:100vh;background-color:#f0f8ff;/*淡蓝色背景*/display:flex;justify-content:center;align-it
- React Native 0.77发布,新样式特性,Android 16KB页面支持,Swift模板
ReactNative0.77版本发布:新特性、改进与迁移说明2025年1月21日,ReactNative0.77正式发布,此版本带来诸多新特性、对Android的支持增强、社区模板更新以及一些重要变更。一、新特性亮点(一)CSS新特性助力布局、尺寸与混合效果display:contents简化布局逻辑:该属性使元素自身在布局结构中“消失”,但子元素仍正常渲染,就像直接作为父元素的子元素一样。在构
- Swift语言的多线程编程
Code侠客行
包罗万象golang开发语言后端
Swift语言的多线程编程在现代软件开发中,多线程编程是提高应用性能和响应速度的重要手段。尤其是在iOS和macOS开发中,由于用户界面(UI)的交互性和复杂性,合理利用多线程可以极大地提升用户体验。本文将深入探讨Swift语言中的多线程编程机制,包括GCD(GrandCentralDispatch)、NSOperation、线程的基本概念及其使用场景。一、什么是多线程多线程是一种程序设计理念,通
- Solidity基础(8)--Solidity合约继承
Burning_ice
soliditysolidity
本章节主要介绍solidity的单继承及多继承,接口相关内容1.继承简述继承通过关键字is来实现,例如:pragmasolidity^0.4.0;contractPerson{stringname;uintage;}contractmanisPerson{}2.子类访问父类权限问题pragmasolidity^0.4.0;contractA{uintstateVar;functionsomePub
- 2025 年成为 AI 独立开发者的 3 个步骤
程序员陆通
人工智能
2025年成为AI独立开发者的3个步骤每天拆解一个AI应用或模型功能选择一个热门的AI应用或开源模型(如ChatGPT、MidJourney、Whisper),深度体验其核心功能,分析背后的技术实现。用笔记工具记录其亮点、缺点,以及你认为可以改进的地方。思考如何通过自己的开发能力优化这些功能,形成自己的产品思路。每天学习1小时AI开发相关技能针对独立开发者需要的核心技能,每天学习一点点,比如:如何
- 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