- vscode 远程执行ssh开发连接不上ssh: connect to host 192.168.144.130 port 22: Connection timed out
三希
vscodesshide
检查远程服务器的SSH配置:确保远程服务器的/etc/ssh/sshd_config文件中启用了端口转发功能:plaintextAllowTcpForwardingyes修改配置后,重启SSH服务:bashsudosystemctlrestartsshd再重新连接即可
- GrandientBoostingClassifier函数介绍
浊酒南街
#机器学习算法GBDT
目录前言用法示例前言GradientBoostingClassifier是Scikit-learn库中的一个分类器,用于实现梯度提升决策树(GradientBoostingDecisionTrees,GBDT)算法。GBDT是一种强大的集成学习方法,能够通过逐步构建一系列简单的决策树(通常是浅树)来提高模型的预测性能。它在多个机器学习竞赛中表现出色,是用于分类和回归任务的流行选择。用法fromsk
- serverless 框架_入门 Serverless :Serverless Framework 开发者工具
weixin_39614754
serverless框架
Serverless架构是云发展的产物,是一种去服务器化更加明显的架构。然而,细心的朋友可能会发现,有一个开发者工具也叫Serverless,那么Serverless到底是一个架构,还是一个开发者工具呢?这个开发者工具和Serverless架构又有什么关系呢?初探Serverless开发者工具Serverless架构开始发展没多久,就有一群人注册了serverless.com的域名,成立了一家叫S
- serverless framework 模块化部署
ice breaker
Serverlessnodejsserverlessframeworkserverless
serverlessframework模块化部署文章仅代表作者本人的认知,如有谬误,欢迎指正。文章建议配合@serverless/components源码食用本文使用的示例代码Forkedfromsecond-state/tencent-tensorflow-scf这个仓库可以直接部署成一个Serverless的AI推理函数,很有意思书接上回@serverless/components代码简析默认
- 免费Web online IDEs
me = "深情男二"
Webweb
协作开发&教学ReplitReplit支持多种编程语言,包括Python、JavaScript、Ruby、C++等,适用于各种编程任务。Glitch:Thefriendlycommunitywhereeveryonebuildstheweb快速开发调试CodePenJSFiddleJSBin-CollaborativeJavaScriptDebuggingLiveweave完整项目开发&框架支持C
- Serverless Framework 使用教程
裘羿洲
ServerlessFramework使用教程serverless无服务器框架——使用AWSLambda、AzureFunctions、GoogleCloudFunctions等构建无服务器架构的Web、移动和物联网应用程序!项目地址:https://gitcode.com/gh_mirrors/se/serverless项目介绍ServerlessFramework是一个开源项目,旨在帮助开发者
- serverless dev和serverless framework啥区别呢?
阿里开发者
serverless运维云原生开发语言阿里云
Serverless领域中有一个开发者工具,也叫做serverless,或者说它的全名叫做ServerlessFramework,它是一家美国的公司,Serverless架构是一种新的技术架构,而北美某公司出品的ServerlessFramework实际上是Serverless架构的开发者工具,所以对于新人来说Serverless很容易混淆它是领域还是开发工具。ServerlessFramewor
- React 进阶阶段学习计划
夜游猿
Reactreact.js学习前端javascript
React进阶阶段学习计划目标掌握自定义Hooks的创建和使用。深入理解上下文(Context)和Redux的高级用法。学会服务端渲染(SSR)。深入探讨性能优化技巧。学习内容自定义Hooks创建和使用自定义Hooks自定义Hooks:用于提取组件逻辑,使代码更加模块化和复用。示例://useFetch.jsimport{useState,useEffect}from'react';functio
- Kubernetes (K8S) 高效使用技巧与实践指南
挣扎与觉醒中的技术人
kubernetes容器云原生网络
Kubernetes(K8S)作为容器编排领域的核心工具,其灵活性和复杂性并存。本文结合实战经验,从运维效率提升、生产环境避坑、核心功能应用等维度,总结高频使用技巧与最佳实践,分享如何快速掌握K8S。一、kubectl高效操作技巧1.自动补全与上下文切换kubectl是操作K8S的核心命令行工具,通过以下配置可大幅提升操作效率:#Bash自动补全source快速切换目标集群。2.YAML模板生成与
- React 高级阶段学习计划
夜游猿
Reactreact.js学习前端
React高级阶段学习计划目标深入理解React的渲染机制和性能优化。学会代码分割和懒加载。掌握单元测试和集成测试。学习TypeScript与React的结合。学习内容性能优化React.memoReact.memo:用于优化函数组件的性能,避免不必要的重新渲染。示例:importReact,{useState,useMemo}from'react';constExpensiveComponent
- Kubernetes 1.29升级至1.31版本笔记
zkyqss
云计算笔记kubernetes云原生
一、概述之前安装了kubernetes1.29(参见:使用kubeadm安装Kubernetes1.29)。本次计划将该集群升级为1.31版本。Kubernetes版本表示方式:Kubernetes版本表示为x.y.z,其中x是主版本,y是次版本,z是补丁版本。建议升级顺序在Kubernetes中,推荐的升级方法是逐步升级,即一次升级一个次版本。本次集群升级策略1.29升级至→1.30,然后1.3
- mongodb常用操作命令
行思理
数据库mongodb数据库
1、MongoDBShell工具mongosh一般的链接命令格式为:mongosh"mongodb://hostname:port"示例:mongosh"mongodb://localhost:27017"2、显示所有数据库showdbs或者showdatabases3、切换到指定数据库(如果不存在则创建):use4、删除当前数据库:db.dropDatabase()5、查看当前所使用的数据库db
- Python类的组成
print('name')
Pythonpython开发语言pycharmvisualstudiocode数据结构
笔记classStudent:#类属性:定义在类中,方法外的变量school='北京XXX教育'#初始化方法def__init__(self,xm,age):#xm,age是方法的参数,是局部变量,xm,age的作用域是整个__init__方法self.name=xm#=左侧是实例属性,xm是局部变量,将局部变量的值xm赋值给实例属性self.nameself.age=age#实例的名称和局部变量
- Nodejs + MongoDB 快速构建Web应用 (入门级教程)
AI天才研究院
Python实战深度学习实战自然语言处理人工智能语言模型编程实践开发语言架构设计
作者:禅与计算机程序设计艺术1.简介本教程从零开始,带领大家学习如何使用Nodejs和MongoDB快速搭建一个简单的Web应用程序。涵盖的内容包括:使用Nodejs搭建本地服务器安装MongoDB并连接到本地服务器使用Express构建后端API接口配置路由和中间件使用Mongoose连接数据库和管理数据模型使用模板引擎(EJS)渲染视图页面用户注册、登录和身份验证文件上传与下载功能通过Sock
- Java连接TIDB数据库出现通讯失败的原因分析
奕辰杰
javatidb数据库
在实际项目使用中,java项目连接的是TIDB数据库,TIDB是使用了3个服务节点,生产环境时不时的出现如下错误:Thelastpacketsentsuccessfullytotheserverwas3600000millisecondsago.Thedriverhasnotreceivedanypacketsfromtheserver.com.mysql.jdbc.exceptions.jdbc
- 关于Activiti工作流框架的多种使用维度
奕辰杰
springjava工作流Activiti
activiti是个开源免费的工作流程框架,遵循BPMN2(BusinessProcessModelingNotation-BPMN业务流程模型注解)的规范,其简约思想的设计使得activiti非常轻量级,数据库层使用MyBatis,并且能与Spring完美的集成。在笔者遇到的公司实际运用项目中,对Activiti工作流框架的使用方式,总共有三种:(1)常规的使用。通过Ideal、Eclipse等
- 【举一反三】力扣刷题-组合总和(Python 实现)
幸运的小新粉
举一反三算法刷题剪枝回溯
快速通道39.组合总和40.组合总和II216.组合总和III377.组合总和Ⅳ前言最近喜欢写举一反三系列,看这个也算个系列就写了。这个系列主要是回溯、枚举还有剪枝,也是非常常用的方法。39.组合总和给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(
- BFS-混境之地4、6
Yunfay
宽度优先算法数据结构
混境之地4题目描述小蓝有一天误入了一个混境之地。他拿到了一张地图,并从中获取到以下信息:混境之地的大小为n×mn\timesmn×m,其中#表示不可通过的墙壁,.表示可以走的路,V表示圣泉。小蓝当前所在位置的坐标为(A,B)(A,B)(A,B),而这个混境之地出口的坐标为(C,D)(C,D)(C,D),当站在出口时即表示可以逃离混境之地。好消息是:他可以通过圣泉恢复体力。坏消息是:小蓝仅剩下EEE
- Java设计模式详解:原理、实现与应用场景
懒羊羊敲代码丫
java设计模式开发语言
设计模式是软件工程中解决常见问题的经典方案结晶。本文将深入讲解6种最常用的Java设计模式,通过代码实例解析其实现原理,并探讨适用场景和实际应用价值。一、单例模式(SingletonPattern)结构特点:私有化构造函数静态私有实例变量静态公有获取方法java复制publicclassConfigManager{privatestaticvolatileConfigManagerinstance
- 百度文心大模型API保姆级教程:从入门到实战
海棠AI实验室
智元启示录百度API文心大模型
目录文心大模型简介文心大模型vs.OpenAIGPT系列应用构建实例API集成详细步骤准备工作获取AccessToken发起API请求API的调试和常见问题的解决进阶应用安全性和最佳实践总结与未来展望随着大型语言模型(LLMs)在全球范围内的兴起,百度文心大模型(ERNIE)已成为人工智能领域的一颗耀眼新星。对标OpenAI的GPT系列,文心大模型致力于为中文用户提供卓越的自然语言处理能力,广泛赋
- ElasticSearch 数据老化清理之Curator
思快奇
javaelasticsearchlinux大数据分布式
前言随着接入ELK日志分析平台的系统增加,每日海量的日志数据使得磁盘空间越发紧张,从而ES的日志清理也成了一个常规操作。而ES官方也提供了一个很好用的工具——curator来实现这个事情。抽空也部署了一个,以供阅知。Curator简介据官方介绍,curator最早被称为clearESindices.py的python脚本,它的唯一功能就是删除索引清理数据,而后重命名为logstash_index_
- '2.587426955E9' in column '2' is outside valid range for the datatype INTEGER.
fan510988896
JAVA2.587426955E9incol
今天在展现人员信息时遇到这个错误,'2.587426955E9'incolumn'2'isoutsidevalidrangeforthedatatypeINTEGER.在网上查了,说是超出了INTEGER的最大长度,后经实践检验后并非如此。原因:因为这里是使用mybatis做的,这个sql的resultMap的返回值是一个实体类于是想到了与该实体类中该属性的类型有关果然,它原来的类型是int修改为
- 前端知识点个人实践
fan510988896
个人实践(前端)前端javascript
前端知识点最佳实践前端一些记录js相乘小数点问题场景解决方案table值获取问题背景:需要遍历table,获取每行数据解决方案jquery的一些实践自己看吧前端一些记录js相乘小数点问题场景在js相乘中,会发现有很多小数点解决方案首先确定相乘精确位数,然后再末尾去零handleCutZero(result.toFixed(size)functionhandleCutZero(num){//拷贝一份
- 在k8s中,如何在argocd中添加proxy
网络飞鸥
kubernetesargocd容器
在Kubernetes的ArgoCD中添加代理(Proxy)设置,你可以从多个层面进行操作,下面分别介绍不同组件设置代理的方法。1.ArgoCDServer代理设置ArgoCDServer负责提供WebUI和API服务,要为其设置代理,可以通过修改ArgoCDServer的部署配置来实现。步骤:编辑ArgoCDServer部署kubectleditdeploymentargocd-server-n
- 专访微软CEO:AGI并非真正基准,AI行业也不会“赢家通吃”
AI大模型头条
人工智能那些事儿microsoftagi人工智能游戏aigpt语言模型
【编者按】日前,微软首席执行官SatyaNadella在参加由知名科技播客主持人DwarkeshPatel主持的播客节目DwarkeshPodcast时,谈到了他对当前人工智能(AI)/通用人工智能(AGI)的前景、量子计算的革命性进展,以及科技如何推动全球经济变革的看法。当各家公司都在争先恐后地追逐AGI时,Nadella在访谈中却语出惊人,“我们自己宣称达成某个AGI的里程碑,对我来说,那只是
- 高版本k8s文件无法识别镜像
虚魍
kubernetes容器运维linux云计算
Kubernetes1.24正式移除了dockershim组件,意味着原生Docker容器运行时不再直接支持。集群管理员需要迁移至其他兼容的容器运行时,如containerd或CRI-O。高版本k8s不在支持docker运行容器运行服务,而使用ctr命令来识别pod文件的镜像。-----如有问题,请提醒,我会及时改正。解决yaml文件识别不到镜像:方法一:手动拉取,上传先拉取相应镜像:docker
- 【无标题】
fan510988896
JAVAjava
日常开发stream流示例基础对象代码块@Data@ToStringpublicclassPerson{privateStringname;privateStringcity;publicPerson(Stringname,Stringcity){this.name=name;this.city=city;}}集合转换示例转换为key,object场景示例代码Listlist=newArrayLi
- 【SQL数据库】MySQL的下载和使用(windows)
奖励0216
数据库sqlmysql
1在网页上搜索MySQLcommunity2点击mysqlcommunitydownloads3选择MySQLinstallerforwindows4选择上面那个download5不用登录6下载完就安装7Choosingasetuptype选custom就够了8selectproductsMySQLServes-MySQLServe8.0-选最上面的最新版-点右边的箭头,加入右边Applicati
- Docker 安装 PostgreSQL
王梓麒
Dockerdockerpostgresql容器
1.安装Docker和DockerCompose首先,确保你的服务器上已经安装了Docker和DockerCompose。你可以通过以下命令检查它们是否安装:docker--versiondocker-compose--version2.创建项目目录在你的服务器上创建一个用于存放PostgreSQLDockerCompose配置的目录,例如my-project:mkdirmy-projectcdm
- CMake学习记录
Spoon_94
C/C++CMake
参考文章:CMakePractice文章目录PROJECTSETMESSAGEADD_EXECUTABLE变量ADD_SUBDIRECTORYLIBRARY_OUTPUT_PATH/EXECUTABLE_OUTPUT_PATHINSTALL安装普通文件非目标文件的可执行程序安装(脚本)目录安装CMAKE脚本执行静态库与动态库SET_TARGET_PROPERTIESGET_TARGET_PROPE
- 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