- HTTP和HTTPS协议的区别,什么是TCP协议?什么是UDP协议?TCP协议的三次握手、四次挥手是什么?
淡漠爱清凉
node.js
一、HTTP与HTTPS的区别基本概念HTTP(HyperTextTransferProtocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。简单来说就是一种发布和接收HTML页面的方法,被用于在Web浏览器和网站服务器之间传递信息。HTTP默认工作在TCP协议80端口,用户访问网站http://打头的都是标准HTTP服务。HTTP协议以明文方式发送内容,不提供任何方式
- Nginx 正向代理互联网访问
hu_wenjie
NginxOpsDev运维开发nginx服务器运维
环境在一个网络环境中,只有一台服务器可以使用互联网,而其他内网服务器都可以访问到这台互联网服务器,于是,我们可以通过nginx的正向代理访问互联网地址此处举例:互联网服务器IP:192.168.1.100内网服务器IP:192.168.1.101部署安装包:nginx-1.20.2.tar.gzproxy_connect模块:https://gitee.com/hu_wj/ngx_http_pro
- 爬取大量哔哩哔哩评论的Python实现
墨如夜色
python开发语言Python
爬取大量哔哩哔哩评论的Python实现在本文中,我们将探讨如何使用Python编写代码来爬取哔哩哔哩(Bilibili)视频的大量评论数据。我们将使用Python中的requests和BeautifulSoup库来实现这个目标。首先,我们需要安装所需的库。可以使用pip命令在终端或命令提示符中运行以下命令来安装它们:pipinstallrequestspipinstallbeautifulsoup
- 如何在docker中访问宿主机其他服务的接口
2401_89793006
热门话题docker容器运维
1.使用host.docker.internal(推荐)适用场景:DockerDesktop(Windows和macOS)或DockerEngine18.03+(Linux)。原理:Docker提供了一个特殊的主机名host.docker.internal,指向宿主机。使用方法:在容器中访问宿主机服务时,使用host.docker.internal代替localhost或127.0.0.1。例如,
- Python:Pip包的安装与原理(Windows系统)
日晨难再
Pythonpippython
相关内容Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm=1001.2014.3001.5482pip是Python的包管理工具,用于安装、升级和卸载Python包和依赖。它的全称是“PipInstallsPackages”,是Python生态系统中的标准包管理器。pip从PythonPackageInde
- python15-列表
文人sec
python自动化python数据库redis缓存fastapi
课程:B站大学记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化列表那些事儿什么是列表列表的特点列表的定义字面量定义列表的构造方法定义列表中元素的引用列表中元素的修改列表的切片操作列表的用途列表操作获取列表元素个数统计查找操作增加元素删除元素列表排序元组和列表的区别相同点不同点内存占用实践是检验真理的唯一标准什么是列表列表是
- Test the complete case
xing2516
PythonPython自动化python
Testthecompletecasepython写的一段由pytest测试框架/allure报告框架/parameters数据驱动组成的完整案例代码目录结构project/├──test_cases/│├──__init__.py│└──test_math_operations.py#测试用例├──test_data/│└──math_data.json#测试数据└──pytest.ini#py
- ABAP内表两种DELETE方式的性能比较
程序员在路一...
SAPABAPSAPABAP数据库
ABAP内表两种DELETE方式的性能比较以代码实例为参考:REPORTZDELETE_COMPARE.PARAMETERS:numtypeiOBLIGATORYDEFAULT100.types:beginofty_product,idtypecomm_product-product_id,texttypestring,endofty_product.data:lt_producttypeSTAN
- ollama安装(ubuntu20.04)
名栩
#ollama大模型实战LLMollama安装
Ollama是一款开源的自然语言处理工具,它可以帮助开发者快速构建文本处理应用。ollama官网:https://ollama.ai/一、ollama自动安装linux统一采用sh脚本安装,一个命令行搞定。curl-fsSLhttps://ollama.com/install.sh|sh二、ollama手动安装ollama自动安装是通过github拉取下载包(现在安装包已经1G以上),在国内经常下
- Ollama的安装及使用
dwjf321
大模型ollama大模型
文章目录1.ollama下载2.linux安装3.ollama离线安装4.windows安装5.使用ollama1.ollama下载下载地址:https://ollama.com/download2.linux安装执行命令:curl-fsSLhttps://ollama.com/install.sh|sh设置启动访问IP和模型存储路径:vim/etc/systemd/system/ollama.s
- SOUI基于Zint生成UPC码
ceffans
windowsc++
UPC码(UniversalProductCode,通用产品代码)是一种广泛使用的条形码系统,主要用于零售商品的标识和追踪。有两种主要格式:UPC-A和UPC-E。UPC-A长度12位数字。适用于大型商品UPC-E长度8位数字。UPC-E是UPC-A的压缩版本,适用于小型商品。校验码计算:UPC-A跟UPC-E的算法一样,从右往左将奇数位数据值3跟偶数位的值相加,10减去得到的值的个位数即为校验码
- UE_C++ —— Gameplay Tags
挨代码
UE#CPPc++UE
目录一,DefiningGameplayTagsAddingTagsinProjectSettingsImportingTagsfromDataTableAssetsDefiningTagswithC++二,UsingDefinedGameplayTagsApplyingTagstoObjectsEvaluatingTagswithConditionalFunctions三,AdvancedTop
- Vmware桥接开放ip端口给局域网访问
舌尖上的五香
tcp/ip网络服务器后端运维
点击编辑,选择虚拟网络编辑器点击更改设置选择NAT模式点击NAT设置选择添加添加后点击确定或应用即完成需要打开防火墙7.控制面板,选择右上角小图标8.选择防火墙9.高级设置10.入站规则11.新建规则12.完成
- 解决 Linux 下 tar 解压错误:文件损坏与不完整问题的全面指南
码农阿豪@新空间
包罗万象linux运维服务器
个人名片作者简介:java领域优质创作者个人主页:码农阿豪工作室:新空间代码工作室(提供各种软件服务)个人邮箱:[2435024119@qq.com]个人微信:15279484656个人导航网站:www.forff.top座右铭:总有人要赢。为什么不能是我呢?专栏导航:码农阿豪系列专栏导航面试专栏:收集了java相关高频面试题,面试实战总结️Spring5系列专栏:整理了Spring5重要知识点与
- wps接入DeepSeek教程
柒夏码农之路
教程合集wps
访问DeepSeek官网申请APIkey3.配置WPS(1)访问OfficeAI助手插件下载地址:https://www.office-ai.cn/(2)安装插件后,打开WPS,菜单栏会新增“OfficeAI助手”4.接入DeepSeek不过现在不能免费使用了哦
- docker-compose 搭建redis集群(三台服务器,每台服务器上一主一从)
黑尾土拨鼠
redisdockerdockerredis服务器docker-compose
文章目录1、前言2、准备工作2.1、Docker安装2.2、docker-compose安装2.3目录创建3、redis配置文件3.1生成redis.conf文件3.2shell文件无法执行问题解决3.3docker-compose.yml文件编写4、启动集群及初始化4.1启动Redis集群4.2Redis集群初始化5、总结1、前言 使用DockerCompose搭建Redis集群是一种便捷高效
- vim进阶1.2 高亮关键字 自定义高亮 快捷键 插件Mark
dingdongkk
高效tools高亮vim自定义多单词进阶
一、高亮效果类似如下图:二、安装方法首先,安装Bundle插件管理器,安装参考:https://blog.csdn.net/sinat_29891353/article/details/88367335然后vim~/.vimrc文件添加一行:Bundle'Mark'然后按shift+:进入命令模式,输入PluginInstall,稍等一会儿即
- DeepSeek赋能学术论文写作
CodeJourney.
人工智能数据库算法架构
在学术研究领域,论文写作是一项至关重要且复杂的任务,它贯穿了从选题构思到最终答辩的漫长过程,每个环节都需要严谨对待和精心雕琢。随着人工智能技术的飞速发展,大语言模型如DeepSeek为学术论文写作带来了全新的机遇和变革。本文将深入剖析借助DeepSeek完成论文写作各关键环节的方法,详细解读文中提供的16个指令,并探讨其在实际应用中的优势、挑战及未来发展趋势。一、DeepSeek助力学术论文写作的
- C语言之运算符练习题
林赢56
湖南工业大学(移动云启)c语言开发语言
第1关:圆的面积及周长100任务要求参考答案评论153任务描述相关知识算术运算符圆的周长/面积公式编程要求测试说明任务描述本关需要你完成求圆的面积S及圆的周长C的小程序。相关知识算术运算符下方显示了C语言支持的算术运算符。假设变量A的值为10,变量B的值为20,则:A+B将得到30;<
- 嵌入式Modbus协议面试题及参考答案
大模型大数据攻城狮
嵌入式面试嵌入式硬件总线协议Modbus半双工通信全双工通信物联网
目录Modbus协议诞生的背景及主要解决的问题是什么?Modbus协议的主从模式如何定义?从机能否主动发送数据?Modbus支持的物理层接口有哪些?简述ModbusASCII与RTU模式的主要区别。ModbusTCP与RTU在协议栈上的核心差异是什么?ModbusPlus协议的特点及适用场景?解释Modbus协议中“开放式协议”的含义及其优势。为什么Modbus协议在工业领域广泛应用?列举至少3个
- 【最全教程】DeepSeek-R1大模型接入WPS
deepseek01
AI工具wps数据库java
方案一:OfficeAI插件快速接入(推荐新手)操作步骤插件安装下载地址:OfficeAI或评论区回复"OfficeAI"获取离线包安装时需关闭WPS,勾选安装VB运行库(解决90%加载失败问题)密钥获取访问硅基流动平台→手机注册→创建API密钥(免费2000万Tokens)或使用DeepSeek官网API(若开放)配置模型复制代码WPS操作路径:1.打开文档→点击顶部「OfficeAI」→「设置
- 浅谈大模型RAG架构落地的十大挑战
Python程序员罗宾
架构语言模型人工智能自然语言处理阿里云
0、RAG简介RAG(RetrievalAugmentedGeneration)结合知识库检索与大模型回答,确保信息可靠且精准,同时节省了微调成本。RAG流程简要概括为3步,对应其名:检索:借助Embedding,将问题转化为向量,比对知识库,选取最相关的TopK知识。1、增强:结合检索出的上下文和问题,构造Prompt。2、生成:将Prompt输入大模型,产出答案。3、从工程视角划分,RAG实施
- 使用conda-pack打包并迁移conda虚拟环境
烟锁池塘柳0
Anacondaconda
目录1.安装conda-pack库2.打包conda环境3.解压环境4.激活环境我们可以使用conda-pack库将conda环境打包并迁移到其他计算机上。具体步骤如下:1.安装conda-pack库在conda环境中,使用以下命令进行安装:condainstall-cconda-forgeconda-pack或者pipinstallconda-pack2.打包conda环境安装完成conda-p
- 安装vue浏览器插件
翻滚吧键盘
vuevue.js前端javascript
谷歌浏览器插件下载地址https://chromewebstore.google.com/detail/nhdogjmejiglipccpnnnanhbledajbpd?utm_source=item-share-cp需要关闭重新打开一下无法使用魔法就使用极简插件https://chrome.zzzmh.cn/
- pycharm函数跳转到remote_sources中的文件中
upupqlj
解决办法:file->settings->projectstructure将项目文件夹设为"Sources"(此时文件夹会变为蓝色)。参考:http://www.pythonheidong.com/blog/article/170882/
- ubuntu多版本cuda如何指定cuda版本
slience_me
服务器linuxubuntulinux运维
本文作者:slience_meubuntu多版本cuda如何指定cuda版本文章目录ubuntu多版本cuda如何指定cuda版本1.关于cuda设置1.1查看当前安装的CUDA版本1.2下载并安装所需的CUDA版本1.3设置环境变量1.4验证切换1.5安装对应的NVIDIA驱动程序2.设置环境变量2.1打开终端2.2编辑`~/.bashrc`或`~/.zshrc`2.3添加环境变量2.4保存并退
- Deepseek搭配神器Chatbox
2501_90713682
人工智能微信
Chatbox的使用方法主要包括以下几个步骤:一、安装与配置系统要求:Node.js:版本14.x或更高。npm:Node.js的包管理器,通常随Node.js一起安装。Git:用于克隆项目仓库。安装步骤:克隆项目仓库:打开终端,运行命令gitclonehttps://github.com/Bin-Huang/chatbox.git来克隆Chatbox项目仓库。安装依赖:进入项目目录cdchatb
- C++码农狂喜!DeepSeek代码生成器让祖传代码秒变赛博义肢!
yyyiwy
c++开发语言
听说上次的“服务器繁忙”整活代码被教授当反面教材了?这次咱们玩点真·黑科技——用DeepSeek自动生成高性能C++代码一、AI代码生成实测:5分钟搓一个联机贪吃蛇最近GitHub有个爆火项目——用DeepSeek生成C++游戏代码,实测效果离谱!比如输入这段Prompt:生成C++贪吃蛇游戏代码,要求:1.支持双人对战模式2.用OpenGL渲染3.集成DeepSeek智能碰撞预测算法DeepSe
- Linux操作系统——计算机硬件软件体系1
唔嗯雯的学习笔记
Linuxlinux
学习视频:Linux操作系统参考资料VMware的三种网络类型1.1冯诺依曼体系机构数据指令统一用二进制表示顺序执行程序计算机硬件有运算器、控制器、存储器输入和输出设备五大部分组成1.2计算机硬件组成存储器:RAM:起到一个中转站的作用ROM:读写速度较慢,但是断电不易丢失信息eg:电脑可以同时装很多软件,但是并不会同时使用1.3硬盘的分类分类依据:存储介质机械硬盘(HardDiskDriver)
- DeepSeek 赋能教育教学:开启智能教育的无限可能
AI_DL_CODE
人工智能深度学习辅助决策DeepSeek
摘要:本文深入探讨了DeepSeek在教育教学岗的应用。它能助力教师快速生成教学课件,整合丰富素材,简化制作流程;依据课程大纲设计在线课程内容,规划模块、设计互动;通过分析多维度学习数据,为学生提供个性化辅导建议和学习计划;利用自然语言处理等技术辅助作业批改和答疑解惑。使用时需注意数据质量与隐私保护、结合教师专业判断及持续学习探索功能。DeepSeek为教育教学带来变革,提升效率和质量,推动个性化
- 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