- Llama.cpp 服务器安装指南(使用 Docker,GPU 专用)
田猿笔记
AI高级应用llama服务器dockerllama.cpp
前置条件在开始之前,请确保你的系统满足以下要求:操作系统:Ubuntu20.04/22.04(或支持Docker的Linux系统)。硬件:NVIDIAGPU(例如RTX4090)。内存:16GB+系统内存,GPU需12GB+显存(RTX4090有24GB)。存储:15GB+可用空间(用于源码、镜像和模型文件)。网络:需要互联网连接以下载源码和依赖。软件:已安装并运行Docker。已安装NVIDIA
- 【云原生】Docker搭建知识库文档协作平台Confluence
逆风飞翔的小叔
运维ConfluenceConfluence搭建Confluence使用Confluence搭建与使用Confluence使用详解
目录一、前言二、企业级知识库文档工具部署形式2.1开源工具平台2.1.1开源工具优点2.1.2开源工具缺点2.2私有化部署2.3混合部署三、如何选择合适的知识库平台工具3.1明确目标和需求3.2选择合适的知识库平台工具四、Confluence介绍4.2confluence特点4.3Confluence中的几个概念4.3.1空间(Space)4.3.2Dashboard4.3.3页面(Page)4.
- 镜像解决,向量数据库Milvus报错
zwzscnds
dockermilvus
MilvusMilvus是一款开源的向量数据库,具有高度的灵活性、稳定可靠性以及高速查询等特点。它支持针对TB级向量的增删改操作和近实时查询,适用于大规模向量数据的存储和检索。Milvus的官网:https://milvus.ioGithub上Milvus的链接:https://github.com/milvus-ioDockerDocker是一种容器化技术,它允许开发者将应用程序及其依赖项打包到
- 向量数据库milvus部署
一方有点方
milvus
官方文档MilvusvectordatabasedocumentationRunMilvusinDocker(Linux)|MilvusDocumentationMilvusvectordatabasedocumentation按部署比较简单,这里说一下遇到的问题一:DockerCompose方式部署1、镜像无法拉取,(docker.io被禁)只能获取以下镜像,image:quay.io/core
- 通过docker和gitlab实现项目自动打包部署
hxj..
服务部署docker容器运维
Gitlab如何实现自动打包部署到docker集群?预备知识:开发模式转变:瀑布模型——》敏捷开发——》DevOpsDevOps:DevelopmentOperations的组合词CICD:持续集成(ContinuousIntegration),持续交付(ContinuousDelivery),持续部署(ContinuousDeployment)使用Gitlab-CI实现自动打包部署通过pipel
- nvidia docker, nvidia docker2, nvidia container toolkits区别
coco_1998_2
#CUDA#Dockerdocker容器
背景在docker容器中用GPU时,查阅了网上许多教程,教程之间概念模糊不清,相互矛盾,过时的教程和新的教程混杂在一起。主要原因是Nvidia为docker容器的支持发生了好几代变更,api发生了不少变化。下面来总结一下各代支持发展历程。省流版总结凡是使用了命令nvidiadocker或者在docker中引入了--runtime=nvidia参数的都是过时教程,最新方法只需要下载nvidia-co
- 手把手教你用Docker部署Dify平台,打造可视化LLM应用环境
脱泥不tony
自然语言处理AI大模型LLM人工智能大语言模型语言模型Dify
“Dify是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(BackendasService)和LLMOps的理念,使开发者可以快速搭建生产级的生成式AI应用。即使你是非技术人员,也能参与到AI应用的定义和数据运营过程中。Dify内置了构建LLM应用所需的关键技术栈,包括对数百个模型的支持、直观的Prompt编排界面、高质量的RAG引擎、稳健的Agent框架、灵活的流程编排,并同时
- 在Ubuntu系统上部署Dify(开源大语言模型应用开发平台)
[shenhonglei]
deepseekubuntu开源语言模型人工智能
在Ubuntu系统上部署Dify(开源大语言模型应用开发平台)环境准备Dify部署接入本地模型(如Ollama)安装Ollama运行模型并接入Dify环境准备系统要求Ubuntu20.04/22.04,建议CPU≥2核,内存≥4GB。安装Docker及DockerCompose:#安装Dockersudoaptupdatesudoaptinstallapt-transport-httpsca-ce
- 02DevOps基础环境准备
梁萌
DevOpsDevOpsCICDdocker
准备两台Linux的操作系统,最简单的方式就是在本机上使用虚拟机搭建两个操作系统(实际生产环境是两台服务器,虚拟机的方式用于学习使用)我搭建的两台服务器的ip分别是192.168.1.10、192.168.1.11192.168.1.10服务器用于安装docker、Gitlab、Jenkins。192.168.1.11服务器用于自动化应用发布和运行应用。设备拓扑图VMware下Centos7安装步
- docker部署GPU环境
atom goper
grudocker
使用Docker部署GPU环境涉及到几个关键步骤,以下是详细步骤:1.安装NVIDIA驱动程序确保你的系统已经安装了NVIDIAGPU驱动。这是使用GPU的前提条件。2.安装Docker和nvidia-container-toolkit首先,确保你已经安装了Docker。然后,安装NVIDIAContainerToolkit,它允许Docker容器访问宿主机上的GPU资源。对于Ubuntu系统,安
- 用Docker搭建Redis主从复制的集群
2401_84046635
程序员dockerrediseureka
同样再到redis-slave1容器的命令窗口里,通过dockerexec-itredis-slave1/bin/bash命令进入容器的命令行窗口,也通过redis-cli命令进入客户端命令行,也再通过inforeplication命令查看该Redis服务器的主从模式的状态,部分结果如下所示。1c:\work>dockerexec-itredis-slave1/bin/bash2root@2e32
- Go Web 项目实战:构建 RESTful API、命令行工具及应用部署
一小路一
掌握Go语言:编程世界的进阶钥匙golang面试后端开发语言
GoWeb项目实战:构建RESTfulAPI、命令行工具及应用部署Go语言因其简洁高效、并发支持强大等特点,已经成为了后端开发的热门选择之一。本篇文章将通过实战案例带领你学习如何使用Go构建一个简单的RESTfulAPI,开发命令行工具,并展示如何使用Docker部署Go应用。通过这些实战内容,你可以更好地理解Go在实际开发中的应用。1.构建一个简单的RESTfulAPIRESTfulAPI是基于
- 在 CentOS 上安装 Docker 和 Docker Compose(可指定版本或安装最新版本)
用数据说话用数据决策
centosdockerlinux
文章目录一、安装Docker1.1安装最新版本的Docker1.2安装指定版本的Docker二、配置Docker镜像加速器(国内镜像源)三、安装DockerCompose3.1安装最新版本的DockerCompose3.2安装指定版本的DockerCompose四、卸载Docker和DockerCompose4.1卸载Docker4.2卸载DockerCompose五、常见问题与解决方案六、总结一
- 作为一名测试工程师如何学习Kubernetes(k8s)技能
网络安全小宇哥
学习kubernetes容器计算机网络web安全安全dubbo
前言Kubernetes(K8s)作为云原生时代的关键技术之一,对于运维工程师、开发工程师以及测试工程师来说,都是一门需要掌握的重要技术。作为一名软件测试工程师,学习Kubernetes是一个有助于提升自动化测试、容器化测试以及云原生应用测试能力的重要过程。以下是一个系统性的学习路径和建议:一、了解基础概念1)容器技术:学习Docker等容器技术的基础知识,了解容器的基本概念、镜像、容器运行与管理
- k8s拉取harbor镜像部署
舌尖上的五香
kubernetes容器云原生
在k8s中创建凭证首先在节点docker登录harbor,登录成功之后会在$HOME/.docker/生成一个config.json文件,这个就是登录凭证,后面dockerpull就不需要再登录了。但是如果在k8s发布pod或者deploment时,这个凭证要在k8s中创建一个对应secret,然后挂载到pod或deployment中的yaml中,这样k8s才能下载镜像,否则提示权限验证错误。生成
- Docker必掌握命令及参数Top10
二进制空间安全
基础知识学习docker
1.DockerRundockerrun命令是从Docker镜像启动容器的门户。它允许您指定镜像名称、选项和运行时配置。dockerrun-d-p8080:80nginx-d:在后台运行容器-p:将主机端口映射到容器端口2.DockerPull在运行容器之前,需要从仓库(如DockerHub)下载Docker镜像。dockerpull命令可以完成此操作。dockerpull命令会连接到Docker
- 容器基础_搭建Docker-Ce版本(入门篇)
琼歌
云服docker
一、介绍基于docker-ce的一些常见命令二、步骤1、确定服务器版本uname-r说明:保证系统内核版本>=3.102、移除旧版本sudoyumremovedockerdocker-commondocker-selinuxdocker-engine3、安装docker的依赖包sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm24、下
- minio多主机分布式部署
一剑丶飘香
云计算
Minio多主机分布式docker-compose集群部署_miniodocker-compose-CSDN博客
- Docker、docker-compose常用命令
珍朱(珠)奶茶
dockerdocker容器运维
最近很慌的一件事是要在客户的服务器上使用docker容器来部署项目,当时接到这个任务时一脸懵逼,我是谁我在哪;对于还不会docker容器技术的我确实很懵逼,啥也不会;所以最终的结果就是一边学一边部署,从不会到会,到最终上线完成,心情就像是过山车一样,遇到各种问题。好了,废话不多说直接上,这里整理了我在部署时遇到的一些问题,以及在实际部署常用的命令。docker卸载旧版本yumremovedocke
- Docker--Docker Network(网络)
芯作者
DD:日记docker
DockerNetwork(网络)是Docker容器之间和容器与外部网络之间的通信和连接的一种机制。以下是对DockerNetwork的详细解释:一、Docker网络的重要性Docker容器网络是为应用程序所创造的虚拟环境的一部分,它能让应用从宿主机操作系统的网络环境中独立出来,形成容器自有的网络设备、IP协议栈、端口套接字、IP路由表、防火墙等与网络相关的模块。通过Docker网络,可以实现以下
- 如何在docker上部署java服务
R-sz
dockerjavapython
目录结构首先DockerfileFROMbladex/alpine-java:
[email protected]=Asia/ShanghaiRUNln-sf/usr/share/zoneinfo/$TZ/etc/localtime&&echo$TZ>/etc/timezoneRUNmkdir-p/xhWORKDIR/xhEXPOSE8106A
- 【nginx】转发请求connect() failed (111: Connection refused) while connecting to upstream
麦当劳不要薯条
nginx运维
nginx转发请求Connectionrefused一、场景:小程序-->nginx(docker部署)-->转发到后端服务二、nxing转发服务时提示“Connectionrefused”三、解决方案1、解决方案一2、解决方案二一、场景:小程序–>nginx(docker部署)–>转发到后端服务下面是nginx的配置upstreamxian{serverip:端口;}server{listen8
- 基于OneAPI+ChatGLM3-6B+FastGPT搭建LLM大语言模型知识库问答系统
闯江湖50年
oneapi语言模型人工智能llamalangchaingpt自然语言处理
搭建大语言模型知识库问答系统部署OneAPI拉取镜像bash复制代码dockerpulljustsong/one-api创建挂载目录bash复制代码mkdir-p/usr/local/docker/oneapi启动容器bash复制代码dockerrun--nameone-api-d--restartalways-p3001:3000-eTZ=Asia/Shanghai-v/usr/local/do
- 在docker中运行R容器,并在Windows下的vscode中使用该R
smx6666668
dockerdockerr语言windows
步骤1:安装和配置Docker安装DockerDesktopforWindows访问Docker官网下载安装程序。安装时启用WSL2后端(推荐)或Hyper-V(旧版Windows)。启动DockerDesktop并确保服务运行正常(任务栏出现Docker图标)。验证Docker安装打开PowerShell或命令提示符,运行:dockerrunhello-world如果看到欢迎信息,说明安装成功。
- 一行指令自动搭建AI绘画:stable-diffusion-webui_v1.3.2
954L
AI前沿技术dockerstablediffusionlinux
Demo效果一、前言本文使用docker进行部署,环境等所有依赖全部整合完毕(版本:v1.3.2)容器内默认已支持(无需额外配置):xformers+controlnet支持自定义启动参数,本文示例为开放api接口供外部业务调用,并已解决API方式下Lora不生效的BUG;开启方式文末细说首次启动下载必要依赖较耗时,容器已配置国内代理加速,预计5分钟内完成容器内自带官方的模型:v1-5-prune
- docker下载redis,zookeeper,kafka超时time out
林小夕success
dockerrediszookeeper
最新地址将registry-mirrors相关复制进去即可,这些地址下载不会超时。{“builder”:{“gc”:{“defaultKeepStorage”:“20GB”,“enabled”:true}},“experimental”:false,“features”:{“buildkit”:true},“registry-mirrors”:[“https://do.nark.eu.org”,“
- jenkins自动打包vuejs部署到docker
戚辰先生丶
流程1、配置jenkins-git项目克隆2、配置运行jenkins的shell脚本3、编写Dockerfile自动制作镜像并复制jenkins打包好的文件到容器里4、jenkins负责运行docker命令进行停止、删除原有镜像,并重新运行镜像docker部署jenkinsdockerrun-d-p8086:8080-p50000:50000-v/var/run/docker.sock:/var/
- Docker镜像加速配置记录
土豆沒加
docker容器运维
编辑/etc/docker/daemon.json,没有的话就新建一个,文件内容如下{"registry-mirrors":["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://d
- Docker小游戏 | 使用Docker部署star-battle太空飞船射击小游戏
心随_风动
Docker部署小游戏项目docker容器运维
Docker小游戏|使用Docker部署star-battle太空飞船射击小游戏前言项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署star-battle网页小游戏下载镜像创建容器检查容器状态检查服务端口安全设置四、访问star-battle网页小游戏五、总结前言在数字化浪潮奔涌的当下,软件开发与部署的模式正经历着深刻变革,容器化技术脱颖而出,成为众
- docker查看正在运行的容器详细教程
黑子哥呢?
运维dockerjava容器
在Docker中,要查看正在运行的容器,可以使用dockerps命令。这个命令会列出当前所有正在运行的容器。以下是具体的用法和一些有用的选项:基本用法dockerps这个命令会显示一个表格,包含以下列:CONTAINERID:容器的唯一标识符。IMAGE:容器使用的镜像。COMMAND:容器启动时执行的命令。CREATED:容器的创建时间。STATUS:容器的状态,如UpXminutes表示容器已
- 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