- C++11新特性:详解auto关键字
R6bandito_
C++新特性c++开发语言c语言visualstudio程序人生经验分享其他
目录引言对auto做出改变的意义C++11之前的autoC++11之后的auto类型的推导auto的优势auto的使用注意事项引言博主:R6bandito_所属专栏:C++新特性在C++11中,引入了不少令人惊喜的功能。其中不乏对类中与类间构造关系的改善(详见《C++11新特性:详解委托构造与继承构造》),以及对于多态性检查机制的完善(详见《C++11新特性:final与override关键字》)
- 如何查看华为服务器配置信息,华为服务器查看配置
Zcc四月
如何查看华为服务器配置信息
华为服务器查看配置内容精选换一换网站的访问与云服务器的网络配置、端口通信、防火墙配置、安全组配置等多个环节相关联。任意一个环节出现问题,都会导致网站无法访问。本节操作介绍网站无法访问时的排查思路。关于网站无法访问排查思路的操作视频请点击:https://bbs.huaweicloud.com/videos/103592如果打开网站有报错提示信息,首先应该根据报错提示信息在华为云上安装完成后输入公网
- 服务器硬件配置统计
mixboot
linux服务器运维硬件统计
服务器型号和SN#dmidecode-tsystem|grep-E"ProductName|SerialNumber"|awk-F':''{print$2}'PowerEdgeR75154567CPU型号和物理CPU数量echo"$(lscpu|grep"Modelname"|cut-d':'-f2|sed's/^*//')x$(lscpu|grep"Socket(s)"|cut-d':'-f2|
- 员工管理系统(简单版)
java王不二
后端java
1、项目介绍员工管理系统9功能简单,实现了用户的注册和登录、增删改查用户,适合新手学习2、项目技术后端框架:Servlet、mvc模式前端技术:jsp、css、JavaScript、JQuery3、开发环境JAVA版本:JDK1.8IDE类型:IDEA、Eclipse都可运行tomcat版本:Tomcat7-10版本均可数据库类型:MySql(5.x和8.x版本都可)maven项目:否硬件环境:W
- vue3开发uniapp转字节小程序注意事项
奔跑的代码!
vue3.0uniAppuni-app小程序vue
vue3开发uniapp转字节小程序注意事项1.provide-inject跨层通信不支持问题2.不能自定义头部,需要去申请3.不能使用moment日期插件4.不要再组件中使用onShow、onLoad等生命周期5.picker-view、picker-view-column抖音小程序无法选中问题开发相关地址1.抖音开放平台2.开发者平台项目本身是vue3+ts+uniapp写的微信小程序,因产品
- 如何分配给mysql资源_如何给mysql用户分配权限
G行为
如何分配给mysql资源
1,Mysql下创建新的用户语法:1.createuser用户名identifiedby'密码';例:createuserxiaogangidentifiedby'123456';新创建的用户,默认情况下是没有任何权限的。2.如何给用户分配权限语法:1.grant权限on数据库.数据表to'用户'@'主机名';例:给xiaogang分配所有的权限grantallon*.*to'xiaogang'@
- POJ-2227 The Wedding Juicer(NYOJ-547 Interesting Punch-Bowl)
weixin_30802171
TheWeddingJuicerTimeLimit:2000MSMemoryLimit:65536KTotalSubmissions:2803Accepted:1225DescriptionFarmerJohn'scowshavetakenasidejobdesigninginterestingpunch-bowldesigns.Thedesignsarecreatedasfollows:*Afl
- mysql 分配dba权限_数据库权限分配操作
长发在船头舞蹈
mysql分配dba权限
1.远程登录mysqlmysql-hip-uroot-p密码2.创建用户格式:grant权限on数据库.*to用户名@登录主机identifiedby“密码”;例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能。需要在mysql的root用户下进行mysql>grantselect,insert,update,deleteon*.*
- Python MayaVi
stereohomology
学习学习pythonMayaVi
http://www.sam.math.ethz.ch/~raoulb/teaching/PythonTutorial/tips_mayavi2.htmlMayavi2Mayavi2seekstoprovideeasyandinteractivevisualizationof3-Ddata.Itoffers:An(optional)richuserinterfacewithdialogstoint
- c# sdl 音频_使用SDL.NET教程C用C#编程游戏
cumao2792
c#游戏javapython.net
c#sdl音频Oneoftheproblemswithopensourceisthatprojectssometimesseemtofallbythewaysideortakeconfusingturns.TakeSDL.NET.Ignoringthewebsiteforsale,asearchonthewebrevealscs-sdl.sourceforge.netaprojectthatsee
- APICloud开源O2O商城源码
希希分享
开源开源O2O商城源码
APICloud最新O2O源码+教程:教你五步开发手机APP第一步:注册APICloud账号(www.apicloud.com)第二步:打开IDE开发工具,创建应用,导入源码第三步:源码自定义设置,检出至服务器端第四步:使用数据云服务完成服务器端工作第五步:云编译打包,生成ios和Android两个平台APP一、创建应用1.云端创建2.IDE检出二、创建Class表结构1.开启数据云2.修改Cla
- 使用MATLAB保存视频每一帧的图像
水深00安东尼
Matlabmatlab音视频开发语言
clear;clc;%chooseavideofile[filename,pathname]=uigetfile('*.mp4','chooseavideofile','video.mp4','Multiselect','off');%选择名称为video.mp4的视频获取文件名称和存储路径fprintf('filename=%s\npathname=%s\n\n',filename,pathna
- flex布局中flex-shrink的使用
Absorbed-
html
12345在给他子元素不加flex-shrink且父盒子中不加flex-wrap=“wrap”的情况下,超出父盒子的宽度,父盒子会自动压缩子盒子的宽度。当给子盒子加上flex-shrink:0,子盒子不会被压缩宽度;
- CSS flex-shrink 属性
shengyin714959
笔记csscss3前端
实例A,B,C设置flex-shrink:1,D,E设置为flex-shrink:2:菜鸟教程(runoob.com)#content{display:flex;width:500px;}#contentdiv{flex-basis:120px;border:3pxsolidrgba(0,0,0,.2);}.box{flex-shrink:1;}.box1{flex-shrink:2;}div总宽
- 27-flex-grow,flex-shrink,flex-basis,flex复合写法,order,flex-wrap
吴椰啵
Web前端HTML+CSS笔记前端javascripthtml
1.flex-grow:弹性元素的放大比例,默认值为0,即如果存在剩余空间,也不放大/*伸张系数:所有元素平分剩余空间*/flex-grow:1;2.flex-shrink:弹性元素的缩小比例,默认值为1,即如果空间不足,该项目将缩小/*flex-shrink收缩系数*//*大小相同的时候收缩的比例是一样的,否则反之*//*总结:剩余空间*弹性系数/弹性系数之和=分配空间本身的宽度+分配空间=最终
- css使用flex-shrink调整flex布局超出宽度
crayon-shin-chan
surprise#csscss
1.简介flex-shrink属性指定了flex元素的收缩规则。flex-shrink仅在flex布局的子元素中起作用flex元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的依据是flex-shrink的值。相反的,flex-grow定义了子元素的扩展比例,在默认宽度之和小于容器宽度时发生扩展。2.使用.container{overflow-x:scroll;overflow-y:hidd
- Java注解说明书:从正确姿势到防坑指南,让你的代码会说话!
双囍菜菜
Javajavapython开发语言
《Java注解说明书:从正确姿势到防坑指南,让你的代码会说话!》——手把手教你玩转官方小标签,避开90%新手踩过的坑文章目录《Java注解说明书:从正确姿势到防坑指南,让你的代码会说话!》第一章:初识注解——代码世界的智能便利贴1.1注解的前世今生:从纸质标签到数字革命1.2注解的四大核心价值与实现原理第二章:基础三巨头——每个Javaer必须刻进DNA的标签2.1@Override:防手残终极护
- HarmonyOS NEXT组件深度全解:十大核心组件开发指南与实战
北辰alk
鸿蒙harmonyos华为
文章目录引言:组件化开发的未来趋势第一章:基础UI组件精要1.1Button:交互设计的基石1.1.1多态按钮实现1.1.2高级特性1.2Text:文字渲染的进阶技巧1.2.1富文本混排1.2.2性能优化第二章:布局组件深度解析2.1Flex:弹性布局的工业级实践2.1.1复杂布局构建2.1.2响应式设计2.2Stack:层叠布局的魔法2.2.1悬浮层实现2.2.2高级应用第三章:容器类组件开发秘
- 排序算法动画网站
齊 天 大 聖
排序算法算法
排序算法动画网站(1)https://visualgo.net/zh(2)http://tools.jb51.net/aideddesign/paixu_ys(3)https://www.toptal.com/developers/sorting-algorithms(4)https://www.webhek.com/post/comparison-sort/(<-简单明了)
- 刚学习C++学习计划
李鲶鱼
c++python开发语言
30天的C++学习计划,适合零基础的小白:第1周:基础语法与环境搭建目标:熟悉C++的基本语法,搭建开发环境。学习内容:安装IDE(如VisualStudioCode、CLion或Code::Blocks),配置C++环境。学习C++基础语法:变量、数据类型、运算符、控制结构(if语句、for循环、while循环)、函数定义与调用。编写第一个C++程序:“Hello,World!”,了解编译与运行
- 第二章:基础概念精讲 - 第五节 - Tailwind CSS Flex 和 Grid 布局实战
Flex布局基础1.Flex容器设置Item1Item2Item3行布局列布局允许换行禁止换行2.主轴对齐左对齐居中对齐右对齐两端对齐环绕对齐均匀对齐3.交叉轴对齐顶部对齐居中对齐底部对齐拉伸对齐基线对齐Flex实战案例1.导航栏布局首页产品服务关于登录2.卡片网格布局卡片标题卡片描述内容Grid布局基础1.Grid容器设置Item1Item2Item32.网格列配置跨越4列跨越8列Grid实战案
- H5播放Rtmp之vue-video-player播放播放
视频播放器html5
一、简介我们看到了HLS播放视频实时性非常差,好的在6-7s,差点的就要10-12s了,也就是人走了,估计视频上还能看到,这对观感效果造成了很大的影响!但是好处就是它是基于http协议文件下载的,所以不需要任何插件,到处播放,处处兼容,所以rtmp和hls在web端的特点如下:HLS(1)使用http协议,兼容所有浏览器。(2)延时非常大,不太适合实时视频源,适合文件点播或历史录像直播。RTMP(
- H5播放HLS之videojs播放视频
视频播放器html5
一、简介如果要让网页支持在所有浏览器上播放,就需要使用第三方的播放器。VideoJs是一个较好的播放器库,完全免费,不像JWPlayer一样需要付费才能使用一些高级功能。videojs播放库是比较有名的一个播放库,它不仅支持hls也支持rtmp,不过如果是播放rtmp它最终也是通过flash插件完成的,我们暂时只看hls。二、实现如果使用videojs播放hls前端代码实现如下:Title请升级您
- 百度搜索url参数详解
阿尔法小菜鸡
百度http
http://www.baidu.com/s?wd=关键字wd(Keyword):查询的关键词;http://www.baidu.com/s?wd=关键字&cl=3cl(Class):搜索类型,cl=3为网页搜索,cl=2为图片搜索;http://video.baidu.com/v?rn=20&pn=0pn(PageNumber):显示结果的页数;http://www.baidu.com/s?ie
- DeepSeek R1-32B医疗大模型的完整微调实战分析(全码版)
Allen_LVyingbo
医疗高效编程研发健康医疗人工智能python
DeepSeekR1-32B微调实战指南├──1.环境准备│├──1.1硬件配置││├─全参数微调:4*A10080GB││└─LoRA微调:单卡24GB│├──1.2软件依赖││├─PyTorch2.1.2+CUDA││└─Unsloth/ColossalAI│└──1.3模型加载│├─4bit量化加载│└─FlashAttention2加速├──2.数据集构建│├──2.1数据源││├─CMD
- OSError: [Errno 24] Too many open files
LutingWang
debugpython
执行ulimit-a查看操作系统对打开文件数量的限制$ulimit-a-t:cputime(seconds)unlimited-f:filesize(blocks)unlimited-d:datasegsize(kbytes)unlimited-s:stacksize(kbytes)8192-c:corefilesize(blocks)0-m:residentsetsize(kbytes)unli
- uni-app基础拓展
阿常11
uni-app移动应用开发uni-app前端javascript
3.1生命周期uni-app生命周期分为应用生命周期、页面生命周期和组件生命周期。3.1.1应用生命周期onLaunch:当uni-app初始化完成时触发(只触发一次)onShow:当uni-app启动,或从后台进入前台显示时触发onHide:当uni-app从前台进入到后台时触发onError:当uni-app报错时触发onUniNViewMessage:对nvuew页面发送的数据监听onUnh
- android多个usb摄像头,Android中多USB摄像头解决方案——UVCCamera源码分析(四)
桔子毛
android多个usb摄像头
经过前几章的学习,我们大概了解了整个UVCCamera初始化、开始预览的过程。那么接着我们将来看看UVCCamera是如何实现拍照功能的。本章内容相对比较简单,均是Java层的实现。我们直接来看代码:@OverridepublicvoidcaptureStill(finalStringpath,OnCaptureListenerlistener){super.captureStill(path,l
- OpenCV计算摄影学(19)非真实感渲染(Non-Photorealistic Rendering, NPR)
村北头的码农
OpenCVopencv人工智能计算机视觉
操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述非真实感渲染(Non-PhotorealisticRendering,NPR)是一种计算机图形学技术,旨在生成具有艺术风格或其他非现实视觉效果的图像和动画。与追求照片级真实感的渲染技术不同,NPR专注于模仿各种绘画风格、手绘效果、卡通风格等,以创造具有独特美学价值
- OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()
村北头的码农
OpenCVopencv人工智能计算机视觉
操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述对选定区域内的梯度场应用适当的非线性变换,然后通过泊松求解器重新积分,可以局部修改图像的表观照明。cv::illuminationChange是OpenCV中用于调整图像光照效果的一个函数。通过这个函数,你可以修改图像中的光照分布,以达到改善图像视觉效果或者为图像
- 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