- 爬虫必备html和css基础知识
ylfhpy
爬虫项目入门爬虫htmlcsspython
一、引言在当今数字化时代,网络上蕴含着海量的有价值数据。Python爬虫技术凭借其高效、灵活的特点,成为了获取这些数据的重要手段。而网页数据通常以HTML格式呈现,要想准确地从网页中提取所需信息,就需要深入了解HTML标签的结构和含义,以及如何运用CSS选择器精准定位目标元素。本文将围绕这两方面展开详细阐述,旨在帮助掌握Python爬虫的关键基础技能。二、常用HTML标签详解2.1文本结构标签2.
- Python常见面试题的详解13
ylfhpy
python开发语言面试
1.以下X是什么类型X=(iforiinrange(10))要点在Python中,变量的类型取决于其赋值的对象。下面代码中的(iforiinrange(10))是一个生成器表达式。生成器表达式是一种简洁的创建生成器的方式,它类似于列表推导式,但使用圆括号而非方括号。生成器是一种特殊的迭代器,它不会一次性生成所有的值,而是在需要时逐个生成,这在处理大量数据时可以节省内存。pythonX=(ifori
- 2020年Python最新面试题(四):爬虫基础知识
Amo Xiang
Python3入门与进阶pythonhttp面试题spider
目录1.什么是爬虫?2.爬虫的基本流程有哪些?3.Request中包含了哪些内容?4.Response中包含了哪些内容5.HTTP请求中的POST、GET有什么区别?6.HTTP、HTTPS协议有什么区别?7.Cookie和Session有什么区别?8.域名和IP之间有什么关系?如何查看某个域名对应的IP地址?9.在HTTP协议头中,keep-alive字段有什么作用?10.HTTP常用的状态码(
- Python常见面试题的详解7
ylfhpy
python开发语言面试
1.内置的数据结构有哪几种Python中有多种内置的数据结构,主要分为以下几种:1.1数值类型整数(int):用于表示整数,没有大小限制。例如:1,-5,100。浮点数(float):用于表示小数。例如:3.14,-0.5。复数(complex):由实部和虚部组成,虚部以j或J结尾。例如:3+4j。1.2序列类型字符串(str):由零个或多个字符组成的不可变序列。例如:"hello"。列表(lis
- Python常见面试题的详解10
ylfhpy
python开发语言面试
1.哪些操作会导致Python内存溢出,怎么处理?要点1.创建超大列表或字典:当我们一次性创建规模极为庞大的列表或字典时,会瞬间占用大量的内存资源。例如,以下代码试图创建一个包含10亿个元素的列表,在执行这段代码时,由于需要为这10亿个整数分配内存空间,很容易就会导致内存溢出错误。pythonhuge_list=[iforiinrange(10**9)]2.递归深度过大:递归函数在没有正确设置终止
- Python常见面试题的详解11
ylfhpy
Python基础和面试python开发语言面试
1.函数调用参数的传递方式是值传递还是引用传递?要点在Python中,参数传递方式既不是纯粹的值传递,也不是纯粹的引用传递,而是“对象引用传递”。本质上传递的是对象引用的副本,对于不可变对象,函数内修改参数不会影响原对象;对于可变对象,函数内修改参数可能会影响原对象。python#不可变对象作为参数(类似值传递)defmodify_immutable(num):num=num+1returnnum
- Python实现一个非常简单的http服务
小游66
程序语言
本文档为个人博客文档系统的备份版本、作者:小游、作者博客:点击访问废话不多少,直接上代码host=('',8888)classResquest(BaseHTTPRequestHandler):defdo_GET(self):self.send_response(200)self.send_header('Content-type','application/json')self.end_heade
- 使用Python创建简单的HTTP服务器
xiaoyaozi2020
服务器http运维
转自:https://www.weidianyuedu.com/如果需要一个简单的WebServer,而不是安装那些复杂的HTTP服务程序,比如:Apache,Nginx等。那么可以使用Python自带的包完成一个简单的内建HTTP服务器。于是,你可以把你的目录和文件都以HTTP的方式展示出来。基本命令python-mWeb服务器模块[端口号,默认8000]这里的“Web服务器模块”有如下三种:B
- Python并发编程实战:用concurrent.futures榨干CPU性能的终极指南
清水白石008
pythonPython题库python网络服务器
Python并发编程实战:用concurrent.futures榨干CPU性能的终极指南引言:从“单线程苦力”到“并发指挥官”你是否遇到过这样的场景?处理10万条数据需要跑通宵,Web爬虫每秒只能请求3次,批量处理图片时CPU利用率不到20%……这些问题的根源往往在于未能有效利用计算资源。Python的concurrent.futures模块提供了一种优雅的解决方案——通过线程池和进程池,开发者可
- 279.完全平方数
程序员正在诞生中
代码随想录打卡算法数据结构leetcode动态规划python蓝桥杯
classSolution(object):defnumSquares(self,n):""":typen:int:rtype:int"""dp=[float('inf')]*(n+1)num=int(n**(0.5))+1#0.5不能写成1/2,因为在python2中1/2等于0dp[0]=0foriinrange(1,num):forjinrange(i*i,n+1):dp[j]=min(dp
- Python 发送短信
黑足-山治
短信发送python
Python发送短信短信发送平台在发送短信前需要添加两个配置文件,将下面两个文件复制下来即可xmltojson.py```#-*-coding:utf-8-*-#pythonxml.etree.ElementTreeimportxml.etree.ElementTreeasET#fromxml.domimportminidomclassxmltojson:#globalvar#showlogSHO
- 本地部署 deepseek-r1 1.5B方法-ubuntu20.04 python3.10 pycharm虚拟环境
Terry Cao 漕河泾
elasticsearch大数据搜索引擎
1.环境安装ubuntu20.04python3.10pycharm虚拟环境2.拉取代码虚拟环境下安装vllm:pipinstallvllmubuntu命令窗口安装sudoaptinstallgit-lfs初始化GitLFS安装GitLFS后,你需要虚拟环境命令窗口初始化它:gitlfsinstall拉取代码gitlfsinstallgitclonehttps://huggingface.co/d
- 利用Python发短信
尘盖天
科普
#首先注册互亿无线,然后复制发短信界面右上角的apiid和apikey更换代码中的account和password#APIID:1#APIKEY:a9#接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。#账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html#注意事项:#(1)调试期间,请用默认的模板进行测试,默认模板详见接口文档;#(
- python怎么用pip怎么用_python的pip怎么用
爱文斯坦
python怎么用pip怎么用
详细内容pip是一个Python包管理工具,主要是用于安装PyPI上的软件包,可以替代easy_install工具。pip的一些使用(推荐学习:Python视频教程)1)pip的自我更新$pipinstall-Upip2)安装PyPI软件包$pipinstallSomePackage#latestversion$pipinstallSomePackage==1.0.4#specificversio
- chatgpt赋能python:用Python发送短信的简单方法
u012804784
ChatGptpythonchatgpt开发语言计算机
用Python发送短信的简单方法在今天的数字时代,没有任何事情比即时通讯更方便。然而,短信仍然是一种极为有用的通信方式。实际上,正如您所看到的,本文将告诉您如何使用Python在几步内轻松地发送短信。发送短信的三种方法要发送短信,您有三种主要方法:使用SMSAPI-这是一种专为发送短信而设计的API,您可以将其集成到代码中。SMSAPI允许您访问专业工具,例如发送统计和交付报告等,但通常需要收费。
- 《李航 统计学习方法》学习笔记——第五章决策树
eveiiii
统计学习决策树算法剪枝python机器学习
决策树5.1决策树模型与学习5.2特征选择5.2.1信息增益5.2.2信息增益比python代码实现例题:信息增益与信息增益比5.3决策树的生成5.3.1ID3算法(python实现)5.3.2C4.5生成算法(python实现)5.4决策树的剪枝5.5CART算法5.5.1CART生成5.5.2CART剪枝习题5.1(python实现)习题5.2(python实现)习题5.3习题5.4参考5.1
- python open() 函数 参数 文件读写参数
licy__
python
open函数的参数读写文件,要通过内置函数open()打开文件,获得文件对象。函数open的参数如下:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)参数filefile参数指定了要打开文件的路径。可以是相对路径,比如'text.txt',就是指当前工作目
- Python使用阿里云发送短信的两种方式
菲宇
python项目实战python
参考文档https://help.aliyun.com/document_detail/215764.html安装依赖包pipinstallalibabacloud_tea_openapipipinstallalibabacloud_dysmsapi20170525==2.0.9第一种方式fromaliyunsdkcore.clientimportAcsClientfromaliyunsdkcor
- python http服务
面向未来的历史
pythonpython3httpserver
环境:python3.68centos7.5python3中实现httpserverr有很多种方法,可以使用flask(light),django,tornado等等。也可以使用build-in模块实现,即:http.server-HTTPservers以下代码就是实现的一个httpget请求的完整流程。importjsonimporthttp.serverimportsocketserverfr
- Python常见面试题的详解23
ylfhpy
Python基础和面试python开发语言面试数据库
1.存储过程与触发器有什么区别要点定义用途:存储过程是预编译SQL语句集合,存于数据库,含逻辑控制和变量,用于特定业务,可被调用;触发器是特殊存储过程,特定数据库事件触发,用于数据完整性和审计。调用方式:存储过程需显式调用;触发器由事件自动触发,不可显式调用。参数传递:存储过程可接收输入输出参数;触发器通常无显式参数,基于触发事件表数据操作。存储过程和触发器在数据库中扮演着不同但又重要的角色。存储
- 用于训练基于pytorch构建的小型字符级语言模型的数据集汇总
搏博
大模型pytorch语言模型人工智能python学习机器学习
前文,我们从零开始基于transformer框架在pytorch上构建一个小型字符级语言模型,并编写了完整的python示例,模型是需要训练的,所以在原有代码的基础上,我们寻找一些公开的数据集对模型进行训练。本文需要先了解的前置内容以及代码(如果不训练,仅看如何获取数据集,就可以跳过这部分),可以看的我文章:从零开始构建一个小型字符级语言模型的完整详细教程(基于Transformer架构)-CSD
- Python 网络编程实战:手把手教你打造高效 HTTP 服务器!
威哥说编程
python开发语言
随着互联网的普及和发展,越来越多的应用需要通过网络进行数据传输和通信。作为开发者,掌握网络编程的技能是非常重要的。Python是一门非常适合进行网络编程的语言,它拥有简单易用的库,可以帮助我们快速实现高效的网络服务。在本篇文章中,我们将通过实际案例,手把手教你使用Python创建一个高效的HTTP服务器。通过这个实例,你将掌握Python网络编程的基本概念、使用常用的网络库以及如何优化网络服务的性
- 在 SQLite 中使用 SpatiaLite 实现地理空间数据自动化读写
高堂明镜悲白发
sqlite自动化数据库GIS
地理空间数据(如坐标点、区域边界)的存储与查询是物联网、位置服务等领域的常见需求。本文提供一套简洁的解决方案,利用SQLite和SpatiaLite扩展,通过触发器和视图实现以下目标:写入简化:直接插入人类可读的坐标文本(如POINT(116.439.9)),自动转为二进制存储。读取简化:查询时自动返回坐标文本,无需手动调用转换函数。代码友好:便于与Python、Java等后端程序集成,隐藏底层空
- Python进阶
weixin_30886233
json数据结构与算法python
注:本文来源于https://docs.pythontab.com/interpy/,逐个实践操作,增加些原文章中未讲述的知识Python进阶《Python进阶》是《IntermediatePython》的中文译本,谨以此献给进击的Python和Python程序员们!前言Python,作为一个"老练"、"小清新"的开发语言,已受到广大才男俊女的喜爱。我们也从最基础的Python粉,经过时间的摧残慢
- 【Jenkins】一种闭包(函数嵌套)函数的Jenkinsfile写法,类似于Python的装饰器
luojiaao
汽车软件开发-工具链jenkinspython运维
defprepare(MapJOB,Closurebody){dir('xxxxx'){sh(script:"gitupdate${JOB.version}")body()}}//调用方法1prepare(version:"3asd8asd7a7ds"){sh(script:"gitcommit")}defJOB=[version:"3asd8asd7a7ds",xxxx:"xxxx"]//调用方
- Python之pymysql模块
鲸鱼妹子
python数据库mysqlpython
文章目录一、环境的配置二、mysql的基本操作三、python操作mysql数据库基础1、连接数据库且创建数据表2、插入数据3、查询数据库4、移动游标指针5、cursor.scroll的用法四、mariadb中如何修改数据库的编码格式一、环境的配置1.需要在自己的linux中安装mariadb-server程序(端口为3306),并且开启。注意,不能进行网络的安全设定(vim/etc/my.cfv
- 每天40分玩转Django:简介和环境搭建
凡人的AI工具箱
#Django学习djangosqlitepython开发语言后端
Django简介和环境搭建一、课程概述学习项目具体内容预计用时Django概念Django框架介绍、MVC/MTV模式、Django特点60分钟环境搭建Python安装、pip配置、Django安装、IDE选择45分钟创建项目项目结构、基本配置、运行测试75分钟实战练习创建个人博客项目框架60分钟二、Django框架介绍2.1什么是Django?Django是一个高级的PythonWeb框架,它鼓
- python的django框架http请求_Django框架学习——Django(四)请求与响应
weixin_39895881
请求回想一下,利用HTTP协议向服务器传参有几种途径?提取URL的特定部分,如/weather/beijing/2018,可以在服务器端的路由中用正则表达式截取;查询字符串(querystring),形如key1=value1&key2=value2;请求体(body)中发送的数据,比如表单数据、json、xml;在http报文的头(header)中。1、URL路径参数在定义路由URL时,可以使用
- python总结报告_python 学习总结
weixin_39628247
python总结报告
数据蛙第一期课程已经进行了两周了,最近一周学习的内容是python相关,这里总结性地概况课程内容,以作知识回顾参考。一、python的基础知识1、数据类型数字型:int、float、Boolean非数字型:字符串、列表、元组、字典可变类型:列表、字典不可变类型:数字、字符串、元组格式化字符串:两种写法a、python的格式化字符串,使用%如果希望输出文字信息的同时输出数据,那就需要使用到格式化操作
- python将字符串s和换行符写入文件fp_【python】文件操作
徐士萍
本文内容包括:文件的读写操作文件的各种系统操作存储对象遍历文件上代码:importosimportos.pathrootdir="d:/code/su/data"#指明被遍历的文件夹forparent,dirnames,filenamesinos.walk(rootdir):#三个参数:分别返回1.父目录2.所有文件夹名字(不含路径)3.所有文件名字fordirnameindirnames:#输出
- 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