- java工作流模式、背包模式、适配器工厂模式整合架构,让服务任务编排更便捷
窗外的寒风
适配器模式架构
工作流和背包模式虽然不在23种常用设计模式中,但是在对任务编排处理类的业务代码使用起来是非常有用的。下面给大家介绍下工作流模式:例如,我之前有个项目需要对模型进行转换,因为不同配置的模型需要使用的转换方法不同,且单个模型需要经历多次的执行转换脚本,那就可以把每个脚本抽离出来封装为工作流中的一个字节点,通过对节点编排适应不同的转换任务,代码流程清晰,转换流程通过配置文件进行配置。背包模式呢,其实并不
- npm常用命令
zhanggongzichu
npm前端node.js
以往nodejs版本Node.js—Node.js版本CNPMBinariesMirror查看当前版本npm-v查看node安装在哪里wherenode清除缓存npmcacheclean--force淘宝镜像(只支持下载,不支持上传发布)npmconfigsetregistryhttps://registry.npm.taobao.org设置公司私服地址npmconfigsetregistry私服
- NPM镜像源设置
一张假钞
npm前端node.js
以设置阿里镜像源为例:#查看当前镜像源npmconfiggetregistry #设置阿里镜像源npmconfigsetregistryhttp://registry.npmmirror.com #删除阿里镜像源npmconfigdeleteregistryhttp://registry.npmmirror.com阿里镜像源网址:https://developer.aliyun.com/mirro
- 尼科彻斯定理c语言,尼科彻斯定理!
销号le
尼科彻斯定理c语言
该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include"stdio.h"voidmain(){inti,j,k=0,l,n,m,sum,flag=1;printf("输入一个数:");scanf("%d",&n);m=n*n*n;i=m/2;if(i%2==0){i=i+1;}while(flag==l&&i>=1){sum=0;k=0;while(l){sum+=(i-2*k);k++;if
- linux文本编辑的几种退出方法
web15085181368
javajava后端
1.使用Vim的时候便捷方式:(1)ctrl+z退出,fg进入(2)正常模式下输入“:sh”进入linux环境,离开Linuxe环境进入Vim使用exit参考:https://blog.csdn.net/A632189007/article/details/78263459一般方式:输入“:wq”然后回车就退出了,表示先保存再退出按“:q”退出:在任何情况先按键盘上面的ESC按键,接着按冒号:q回
- MySQL知识点总结(九)
a_j58
mysql数据库
请说明FILE,PROCESS,RELOAD这三个系统权限的作用?FILE:允许运行SQL语句在服务器主机文件系统中读写文件。PROCESS;允许使用SHOWPROCESSLIST语句查看客户端正在执行的所有语句。RELOAD:允许执行FLUSH语句以重新加载日志和权限表。请说明授权表的内容和它的作用MySQL服务器在启动时将授权表从mysql数据库读取到内存中,所有的访问控制决策都以这些表为依据
- tomcat系统架构及运用
极致人生-010
tomcat系统架构java
文章目录下面是Tomcat架构的详细解析:1.**Server(服务器)**2.**Service(服务)**3.**Container(容器)**-分层结构4.**Connectors(连接器)**5.**类加载器(ClassLoader)**6.**Catalina**7.**配置文件与目录结构**8.**监听器(Listeners)**9.**安全性**10.**性能调优与监控**Tomca
- 【C语言】Main函数解析
Nebula嵌入式
c语言
目录前言Main函数解析代码前言我们从刚才是学习编程就学习了main函数,在linux中你执行一个可执行文件./a.out此时你同时想传入参数那应该怎么办呢?这时你就要了解main函数的一些用法才能实现上面的目的。Main函数解析intmain(intargc,char*argv[])也可以写成intmain(intargc,char**argv)。一般我们都习惯写前者。argc表示程序运行时发送
- RTX4060+ubuntu22.04+cuda11.8.0+cuDNN8.6.0 & 如何根据显卡型号和系统配置cuda和cuDNN所需的安装环境
computer_vision_chen
带你跑通人工智能项目cudacuDNN
文章目录电脑原配置安装cuda和cuDNN前的环境选择cuDNN与CUDAtookit和nvidiadriver的对应关系cuda版本选择⭐查看自己的nvidiadriver版本和最大支持的CUDA版本⭐最小支持版本查看11.8.0版本的cuda和ubuntu22.04对应的cuDNN版本查看ubuntu22.04中cuDNN支持的内核,GCC最终安装前的环境选择下载安装linux6.2.0内核安
- 大数据毕业设计hadoop+spark+hive豆瓣图书数据分析可视化大屏 豆瓣图书爬虫 图书推荐系统
qq_79856539
javawebjava大数据hadoop课程设计
系统总体目标基于Spark的个性化书籍推荐系统是一种基于大数据技术的智能推荐系统,它可以根据用户的历史行为和偏好,为用户提供个性化的书籍推荐。该系统采用Spark技术,可以实现大数据的实时处理,从而提高推荐系统的准确性和可靠性。此外,该系统还可以根据用户的习惯和偏好,提供更加个性化的书籍推荐,从而满足用户的需求。系统的使用者包含普通用户和管理员两类,普通用户是系统的主要服务对象,主流人群是经常查看
- 【Elasticsearch 】自定义分词器
程风破~
Elasticsearchelasticsearch大数据搜索引擎
博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分
- Cisco NX-OS ACI 16.0(8f)M - 适用于 ACI 模式下的 Nexus 9000 系列交换机系统软件
cisco
CiscoNX-OSSystemSoftware-ACI16.0(8f)M适用于ACI模式下的CiscoNexus9000系列交换机系统软件请访问原文链接:https://sysin.org/blog/cisco-aci-16/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoNX-OS网络操作系统软件CiscoNX-OS操作系统助力网络紧跟业务发展步伐。NX-OS网络操
- ubuntu22.04 + isaac gym环境配置流程
Yakusha
linuxbashc++
1.CUDA安装1.看系统架构:uname-m2.去官网下载适配你显卡驱动的最新cuda,可以通过nvidia-smi查看https://developer.nvidia.com/cuda-toolkit-archive3.然后执行,全选continue和yessudo./cuda_12.4.1_550.54.15_linux.run在bashrc中添加:exportPATH=/usr/local
- PostgreSQL 常用运维SQL整理
尚雷_TechTalk01
PostgreSQLpostgresql运维sql
一、查询并杀会话--查询会话selectpid,usename,client_addr,client_port,query_start,query,wait_eventfrompg_stat_activity;--杀会话selectpg_terminate_backend('pid号');--使用如下命令自动生成杀会话语句selectdatid,datname,pid,usesysid,usena
- 全国计算机一、二、三、四级考试备考资料
iamyzs
java
我整理了一些计算机等级考试的资料,大家有需要的拿去点击链接即可保存。参考链接:全国计算机一、二、三、四级考试备考资料-豌豆火博客01、全国计算机等级考试一二三四级笔试官方样卷02、计算机一级考试资料汇总(含17套真题+1000套选择题)03、计算机三级备考资料汇总(含数据库、网络、信息安全、嵌入式系统开发、Linux应用技术)04、计算机四级考试资料汇总((含数据库+网络+信息安全+嵌入式系统开发
- adb shell dumpsys 命令查看内存
2401_89693697
adbgitee
C:\Users\asus>adbshellservicelistFound163services:0call_adapter:[com.android.internal.telecom.IMzInCallAdapter]1flyme_novccusagestats:[android.nonvccUsageStats.INonVccStatsInterfaces]2alphame_server:[
- Apple M1 ARM MacBook 安装 Apache TVM
FF-Studio
arm开发apache
一、前置准备AppleSiliconMacBook本文以AppleM1/M2为例,M3及后续版本同理。已安装HomebrewmacOS上的包管理器,可前往Homebrew官网查看安装指引。已安装Anaconda或Miniforge确保Conda是ARM版本(通过condainfo|grepplatform验证应为osx-arm64)。二、创建并激活Conda环境在终端创建环境(Python3.8为
- 6. 深入Linux安全世界:构建坚不可摧的系统屏障
涛ing
Linux概览linux安全运维服务器ubuntuunixc++
本章目录前言6.1理解Linux安全模型深入了解文件权限权限位详解:修改文件权限:绘制示例图:文件权限的结构6.2用户账户的安全设置查看系统中的用户示例解释:管理用户的安全策略6.3防火墙与网络安全性常用iptables规则1.**只允许特定IP访问SSH服务**2.限制连接速率简单网络流量防火墙结构示意图:6.4数据加密技术使用GPG进行文件加密1.生成密钥对2.加密文件3.解密文件数据加密的流
- github最强Chatbox AI 模型桌面,支持 ChatGPT、Claude等主流模型,适用于 Win、Linux等,总结文档图片并互动,智能编程,AI实时联网搜索与查询,图片生成,科研写作等
struggle2025
人工智能深度学习语音识别计算机视觉语言模型图像处理数据分析
一、软件介绍(文末提供下载)Chatbox是一个AI模型桌面客户端,支持ChatGPT、Claude、GoogleGemini、Ollama等主流模型,适用于Windows、Mac、Linux、Web、Android和iOS全平台。github地址:GitHub-Bin-Huang/chatbox:User-friendlyDesktopClientAppforAIModels/LLMs(GPT,
- 【uniapp】uniapp使用java线程池
新青年.
uni-appjavascript
标题由于js是性能孱弱的单线程语言,只要在渲染中执行了一些其他操作,会中断渲染,导致页面卡死,卡顿,吐司不消失等问题。在安卓端可以调用java线程池,把耗时操作写入线程池里面,优化性能。实现使用native.js,直接贴出代码classJavaExecutorPool{constructor(){//#ifdefAPP-PLUSconstScheduledThreadPoolExecutor=pl
- Python中使用SQLite
昂热校长
开发十年,就只剩下这套Java开发体系了>>>SQLite:SQLite是一种数据库,Python中集成了SQLite3,所以在Python中使用SQLite,可以直接导入SQLite包,不需要做额外的配置。更多的SQLite简介和相关知识可以查看专门的教程:http://www.runoob.com/sqlite/sqlite-tutorial.htmlPython中使用SQLite:可以直接像
- 深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据
我的青春不太冷
服务器前端运维
深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据一、服务器如何响应前端请求前端与后端的交互主要通过HTTP协议实现。以下是详细步骤:1.前端发起HTTP请求GET请求:用于从服务器获取数据。POST请求:用于向服务器提交数据。例如,使用JavaScript的fetchAPI发送POST请求:fetch('https://example.com/api/data',{method:'PO
- RK3568中使用QT opencv(显示基础图像)
花落已飘
qtopencv开发语言
文章目录一、查看对应的开发环境是否有opencv的库二、QT使用opencv一、查看对应的开发环境是否有opencv的库在开发板中的/usr/lib目录下查看是否有opencv的库:这里使用的是正点原子的ubuntu虚拟机,在他的虚拟机里面已经安装好了opencv的库。二、QT使用opencv在QTpro文件中添加opencv的支持:QT+=coreguiCONFIG+=c++11#添加OpenC
- 架构整合要点。
jc_dreaming2
OPENSpringStrutsJavaHibernateXML
整合spring2+struts1.2+hibernate3.2程序要使用spring2,需要spring插件jar包和spring的类库外。1.web.xml配置spring的监听。org.springframework.web.context.ContextLoaderListener通过contextConfigLocation上下文参数指定spring配置文件javax.servlet.j
- macOS Sequoia 15.3 (24D60) Boot ISO 原版可引导镜像下载
macos
macOSSequoia15.3(24D60)BootISO原版可引导镜像下载iPhone镜像、Safari浏览器重大更新和AppleIntelligence等众多全新功能令Mac使用体验再升级请访问原文链接:https://sysin.org/blog/macOS-Sequoia-boot-iso/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgmacOSSequoia将Mac
- linux初始mysql_linux mysql初始化
隔壁王医生
linux初始mysql
一、mysql_install_db说明当MySQL的系统库(mysql系统库)发生故障或需要新加一个mysql实例时,需要初始化mysql数据库。需要使用的命令:/usr/local/mysql/bin/mysql_install_db#/usr/local/mysql/bin/mysql_install_db--help可以查看帮助信息如下Usage:/usr/local/mysql/bin/
- Linux gdisk 命令使用详解
linux
简介gdisk命令是Linux上管理GPT(GUID分区表)分区的强大工具。它可替代仅支持MBR(主引导记录)分区的fdisk。安装Debian/UbuntusudoaptinstallgdiskRHEL/CentOSsudoyuminstallgdisk检查分区类型sudogdisk-l/dev/sdXGPT磁盘:显示带有GUID代码的分区MBR磁盘:gdisk发出警告并询问是否要转换为GPT运
- 修改mysql初始密码
「已注销」
数据库mysqljava
查看当前MySQL登录密码[root@liwenjingmysql]#greppassword/var/log/mysqld.log2022-09-22T19:20:12.368849Z6[Note][MY-010454][Server]Atemporarypasswordisgeneratedforroot@localhost:mmxuyPx%+2hC当前登录密码为:mmxuyPx%+2hC执行
- linux防火墙禁止80端口入站,Linux中在防火墙中开启80端口的例子,linux80
在下乔西西
Linux中在防火墙中开启80端口的例子,linux80最近自己在学习Linux。搭建一个LNMP环境。在测试时一切都好。然后重启Linux后。再次访问网站无法打开。最终原因是在防火墙中没有加入80端口的规则。具体方法如下:在CentOS下配置iptables防火墙,是非常必要的。来我们学习如何配置!,其它版本一下:1.打开iptables的配置文件:代码如下复制代码vi/etc/sysconfi
- iptables禁止访问1端口和80端口
13572025090
网络linux服务器tcp/ip运维
iptables-AINPUT-ptcp--dport1-jDROPiptables-AINPUT-ptcp--dport80-jDROP这是在Linux系统上使用iptables禁止访问1端口和80端口的命令。其中-AINPUT表示添加规则到INPUT链,-ptcp表示使用TCP协议,--dport表示目标端口,-jDROP表示将匹配的数据包直接丢弃。
- 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