- Steam游戏一键入库自动化工具详解
国营窝窝乡蛮大人
本文还有配套的精品资源,点击获取简介:“Steam一键入库工具”专为游戏开发者设计,用以简化游戏发布到Steam的过程。它通过自动化创建产品页面、上传游戏文件、配置价格和区域限制等繁琐步骤,使得游戏能够快速入库Steam平台,从而让开发者有更多时间专注于游戏开发和优化。该工具基于SteamworksAPI,提供版本管理、更新发布、版权保护等功能,帮助开发者维护游戏生命周期和保护权益,同时要求开发者
- 【CATIA的二次开发35】对象Selection部分属性介绍
江树月华
CATIAVBA二次开发CATIA的VBA二次开发CATIAVBACATIA宏CATIAVBA
在CATIAV5的VBA开发中,Selection对象是用户交互的核心组件,用于管理用户在图形区域或特征树中的选择操作。Selection对象是CATIAVBA中的中央交互枢纽,充当用户界面与程序逻辑之间的桥梁。它代表当前在图形区域或特征树中被选中的元素集合,是自动化操作的基础。一、Selection对象属性和方法二、属性分类概览属性类型作用域主要用途ApplicationObject全局获取当前
- UIKit详解
ldl_csdn_ios
iOSuikit
NSObjectUIAcceleration------三维加速数据(游戏开发)UIAccelerometer------加速计(游戏开发)UIAccessibilityElement------封装的项目信息对一些特殊的人可见,默认情况下是不可访问的。UIBarItem------一个抽象的超类用来在屏幕的底部给项目加上一栏。UIBarButtonItem------一个栏按钮项目是放置在一个U
- 安卓端某音乐类 APP 逆向分享(二)协议分析
泡泡以安
爬虫技术#安卓逆向安卓逆向爬虫安全
以歌曲搜索协议为例,查看charles中歌曲搜索协议详情拷贝出搜索协议的Curl形式curl-H'Host:interface3.music.xxx.com'-H'Cookie:EVNSM=1.0.0;NMCID=oufhty.1667355455436.01.4;versioncode=8008050;buildver=221010200836;resolution=2392x1440;devi
- 【TVM 教程】PAPI 入门
ApacheTVM是一个深度的深度学习编译框架,适用于CPU、GPU和各种机器学习加速芯片。更多TVM中文文档可访问→https://tvm.hyper.ai/性能应用程序编程接口(PerformanceApplicationProgrammingInterface,简称PAPI)是一个可在各种平台上提供性能计数器的库。在指定的运行期间,性能计数器提供处理器行为的准确底层信息,包含简单的指标,如总
- 云上游戏服务器架构全解析
你一身傲骨怎能输
架构设计游戏服务器架构
文章摘要本文提出了一套现代化、可落地的云上游戏服务器架构方案,针对FPS、MOBA、MMO等游戏类型的高并发、低延迟需求。该架构采用微服务设计,包含全球接入层、API网关、匹配/大厅服务、对局服务器、业务微服务等组件,通过Kubernetes实现弹性伸缩,支持百万级玩家同时在线。关键技术包括:多地域部署降低延迟、WebSocket/UDP实时通信、帧同步/状态同步机制、Saga分布式事务处理以及完
- 使用Picgo+Cloudflare R2构建图床
Chrislime
云计算网络网络安全缓存
R2是Cloudflare推出的非结构性Objectstorage(对象存储)服务。本文将介绍我推荐R2的原因以及与Picgo联动的使用方式。为什么选择R2正如我在博客中多次提到,Cloudflare是一家服务范围遍及全球的网络资源供应商。因此对象存储自然也会成为其主打服务之一选择R2的理由有以下:10GB免费空间无流量费免费CDN节点及DDos防护服务国际化兼容S3无政治原因的审查得益于Clou
- 源码运行效果图(六)
芝麻粒儿
案例项目实战源码源码java大作业毕业设计论文
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册
- C# Winform弹出确认窗口
richhsx
C#
C#Winform弹出确认窗口privatevoidbtn_Click(objectsender,EventArgse){MessageBoxButtonsmess=MessageBoxButtons.OKCancel;DialogResultd=MessageBox.Show("确定要关闭吗?","提示",mess);if(d==DialogResult.OK){MessageBox.Show(
- nlp遇到的问题
1.AttributeError:'CodeGenTokenizer'objecthasnoattribute'encoder'pipinstalltransformers==4.33.22.ImportError:Using`low_cpu_mem_usage=True`ora`device_map`requiresAccelerate:`pipinstallaccelerate`pipinst
- vue+react面试题
宇宙超级无敌暴龙嗜血战士
vue.js前端javascript
一、响应式原理vue2响应式的原理是借助数据劫持和发布订阅者模式1、数据劫持:目的:能够感知到数据的改变。数据劫持是:使用ES5的Object.defineProperty()。把data配置项中的所有数据进行遍历,转成setter和getter(或者说,给每个属性增加set和get函数)既就是:访问器属性。2、发布订阅者模式:目的:当数据改变时,(直接和间接)使用该数据的模板处都会有相应的改变(
- 数字人驱动技术:让虚拟角色“活起来”
CarlowZJ
数字人
目录前言一、数字人驱动技术的概念(一)驱动技术的定义(二)驱动技术的关键组成部分二、数字人驱动技术的代码示例(一)安装依赖(二)语音输入处理(三)动作捕捉数据处理(四)Unity端的驱动实现(五)完整的数字人驱动系统三、应用场景(一)虚拟客服(二)虚拟直播(三)教育与培训(四)游戏开发四、注意事项(一)输入信号的准确性(二)动作映射的自然性(三)实时性(四)反馈机制(五)性能优化(六)安全性和隐私
- python-can + can-isotp + udsoncan 实现基础的UDS诊断功能;附代码
dujunqiu
pythonpython开发语言
1:功能说明在网上搜了一下python-can+udsoncan的使用说明,发现都是很笼统的介绍,没有详细的使用说明;下面根据我自己的使用经验,来给大家介绍一下;2:源代码介绍这里主要修改的配置是“bus1=can.interface.Bus(interface=‘canalystii’,channel=0,bitrate=500000)”这一行代码,需要根据实际使用的CAN盒进行配置;详细的代码
- 玩转传奇搭建,怎样用手里的云服务器搭建一款战神传奇手游技术教程,实现完全联网,实现多人同玩,10分钟学会架设游戏,云服务器或轻量云皆可搭建,快叫上朋友一起挂机砍怪吧!
qq_502428990
服务器游戏运维
这段时间不知怎么的,忽然有些怀念过往,想起十几年前和兄弟们网吧通宵砍传奇的场景,于时自己找了一些传奇代码,用云服务器搭建了一款传奇,怀念一下青春岁月!配置要求:最低2核4G,普通云服务器或轻量云皆可。系统要求:windows2008或者windows2012版64位。首先把服务器硬盘分出一个D盘来,云服务器默认没有D盘,需要从C盘分出一部分做D盘,当然你也可以购买,然后挂载上去。开始架设:第一步:
- 政企终端安全综合治理方案(无技术人员)
兢谨网安
企业安全政务安全网络安全网络攻击模型渗透测试网络
核心原则:制度管理为主,技术工具为辅,全员参与共治一、管理机制建设(关键措施,占比70%)行政指令强制规范发布《办公终端软件安装白名单制度》仅允许安装政务版杀毒软件、办公软件(如WPS政务版)、专用业务系统。白名单示例:360安全卫士政务版、奇安信、金山毒霸企业版(政务)、微软Office(正版授权)、企业微信政务版。明确禁止行为(纳入员工守则):禁止安装娱乐软件(如视频播放器、游戏)、破解软件、
- sqlserver 中的go的作用
NaiQai
SqlServer
如果只是执行一条语句,有没有go都一样,如果多条语句之间用go分隔开就不一样了,每个被go分隔的语句都是一个单独的事务,一个语句执行失败不会影响其他语句执行。例如:首先同时执行下边的语句select*fromsysobjectswhereid=aselectgetdate()你会发现会报错,并且不会显示任何结果集而你再执行select*fromsysobjectswhereid=agoselect
- 关于插件参数传递
harmonyos
关于插件参数传递按照以前的习惯,dart端传递map参数,原生端根据map解析参数。但由于ts支持将字符串直接转换成对应的interface,那么我们可以将dart的端的参数。参数定义比如geolocator_ohos中的CurrentLocationSettingsOhos在dart端的实现为如下:MaptoMap(){return{if(priority!=null)'priority':pr
- Java中的finalize()方法
周杰伦fans
JAVAai学习参考考试学习javapythonjvm
Java中的finalize()方法详解Java的finalize()方法是Object类定义的一个特殊方法,主要用于在对象被垃圾回收器回收之前执行一些清理工作。下面我将从基本概念、工作原理、使用场景、注意事项以及示例代码等方面详细解释这个方法。基本概念finalize()方法是Java中Object类的一个protected方法,每个Java类都隐式继承了这个方法。它的基本语法如下:protec
- Java猜拳小游戏
wp_tao
Java从入门到精通java开发语言
Java猜拳小游戏使用java设计一个猜拳小游戏,要求如下:在控制台提示用户输入出拳结果(1:石头,2:剪刀,3:布)。计算机生成出拳结果。裁判判断出拳结果。输出游戏结果。com.game.Judge.java。packagecom.game;publicclassJudge{privateintplayer1;//选手一的出拳结果:1为石头,2为剪刀,3为布
- golang游戏开发学习笔记-开发一个简单的2D游戏(基础篇)
2.人物运动图(只展示第一帧)2.方块纹理图将资源准备完成之后,就能开始代码的开发了五.开始实现!1.资源管理在上一篇文章中我们将纹理和着色器分别封装成了两个类,这里我们创建一个资源管理类对这两个类进行管理,由于golang中是没有静态变量的,需要用包内变量对其进行模拟shader.gopackageresourceimport(“github.com/go-gl/gl/v4.1-core/gl”
- WPF中获取主窗体
周杰伦fans
ai学习参考WPF笔记学习C#的笔记wpf
在WPF的MVVM模式中,通常不直接引用主窗体(MainWindow),而是通过依赖注入、事件聚合器或命令参数传递等方式实现逻辑解耦。以下是几种推荐方法:方法1:依赖注入(推荐)在ViewModel中定义一个接口,通过构造函数注入主窗体服务。步骤:定义接口(可选):publicinterfaceIMainWindowService{voidShowMessage(stringmessage);}在
- python+requests+excel 接口测试
鱼鱼说测试
postmanpython开发语言
1、EXCEL文件接口保存方式,如图。2、然后就是读取EXCEL文件中的数据方法,如下:1importxlrd234classreadExcel(object):5def__init__(self,path):6self.path=path78@property9defgetSheet(self):10#获取索引11xl=xlrd.open_workbook(self.path)12sheet=x
- Leetcode 3600. Maximize Spanning Tree Stability with Upgrades
Espresso Macchiato
leetcode笔记leetcode3600leetcodehardleetcode周赛456二分法DSUUF并查集
Leetcode3600.MaximizeSpanningTreeStabilitywithUpgrades1.解题思路2.代码实现题目链接:3600.MaximizeSpanningTreeStabilitywithUpgrades1.解题思路这一题核心思路就是一个二分法的思路。我们定义函数is_possible(x),表示是否存在一个树的构造,使得任意一条边的长度均不少于xxx。显然,这里有两
- Spring Cache+Redis缓存方案详解:从代码到实践
大手你不懂
JavaJava项目实战Redisspring缓存redis
描述:在现代Java开发中,缓存是提升系统性能的核心手段之一。本文通过实际代码案例,深入解析SpringCache与Redis的集成原理,结合项目中的ModuleDatabaseInfoService接口和RedisConfig配置,探讨如何通过声明式缓存实现高效的数据库访问优化。一、核心代码解析1.服务接口设计(拿查询数据源配置信息举例)publicinterfaceModuleDatabase
- JSON数据格式及其在WEB开发中的应用
m0_70273331
Web前端经验分享前端前端框架
json与xml互相转换JSON的格式必须是数组或者对象,其属性支持一下类型:boolean:true,falsenumber:0,1,2,3string:“abc”object:null,{},{“a”:“b”}array:[],[1,2]严格的语法约束不能有ascii之外的字符,汉字应使用”\u6c49”格式;然而在utf-8流行的时代,汉字不编码已不是啥大问题了;不能有注释,行注释与块注释都
- JSON简介及其应用
Jackson@ML
MongoDBJavaScriptNode.jsjsonJavaScriptNode.js
JSON简介及其应用
[email protected]的概念JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,采用键值对(key-value)的方式组织数据,语法类似JavaScript对象,易于人阅读和机器解析。2.JSON的作用JSON有几方面的作用如下:•在前后端数据交互中传
- C++封装python调用库
技术大白
c++开发语言
传结构体中间用空字符串问题使用callback传输结构体,中间出现\0字符,使用std::vector类型voidPyProcessInterface::ProcessContent(constchar*buff,UINT32size,boolfromSelf){if(callback){std::vectordataVec(buff,buff+size);callback(std::move(d
- ifconfig工具源码分析
weixin_34357887
操作系统数据结构与算法
ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是networkinterfacesconfiguring。同netstat一样,ifconfig源码也位于net-tools中。源码位于net-tools工具包中,这是linux网络的基本工具包,此外还有arp,hostname,route等命令。项目链接:http://net-tools.sourceforge.
- Python基础(吃洋葱小游戏)
aaiier
pythonpygame开发语言
下面我将为你设计一个"吃洋葱小游戏"的Python实现方案,使用Pygame库开发。这个游戏模拟吃洋葱的过程,玩家需要收集不同种类的洋葱以获得高分,同时避免吃到辣椒。吃洋葱小游戏-Python实现方案1.游戏设计概念游戏目标:玩家控制角色吃掉尽可能多的洋葱获得高分核心机制:洋葱从屏幕上方随机下落玩家左右移动角色接住洋葱不同洋葱有不同分值(普通洋葱+10,红洋葱+20,紫洋葱+50)辣椒会扣减生命值
- Linux 文件权限管理详解(chmod/chown)
真IT布道者
linux运维服务器
查看文件权限2.1使用ls-l命令$ls-l/etc/passwd-rw-r--r--1rootroot2412Mar110:00/etc/passwd输出解析:-rw-r--r--:权限字符串第一个root:属主第二个root:属组2.2权限字符串解析类型属主权限属组权限其他用户权限-rw-r--r--更多面试题:https://duoke360.com/tutorial/iv-linux/l7
- 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