- 基于Python的新闻采集与分析:新闻平台的全面数据采集实践
数据知道
爬虫和逆向教程python开发语言爬虫网络数据采集
更多内容请见:爬虫和逆向教程-专栏介绍和目录文章目录1.项目概述2.网页抓取2.1环境准备2.2使用requests和BeautifulSoup2.3使用Scrapy3.数据解析与存储4.数据分析4.1基本统计分析4.2可视化分析5.新闻平台抓取总结基于Python的企业新闻抓取与分析是一个涉及多个步骤的任务,包括网页抓取、数据解析、数据存储和数据分析。以下是一个全面的指南,帮助你从官网到新闻平台
- 使用 Flask 框架添加多个AI模型的API进行对话
欣然~
人工智能
1.概述该应用是一个基于Flask框架的AI模型API管理系统,允许用户添加、删除不同AI模型(如DeepSeek、阿里云、智谱、百度、科大讯飞等)的API密钥,并通过这些配置好的API与相应的AI模型进行交互,获取回复。应用包含后端的Flask服务和前端的HTML页面及JavaScript脚本。2.后端代码说明2.1依赖库导入pythonfromflaskimportFlask,request,
- #前端js发异步请求的几种方式
在下千玦
前端javascript开发语言
JavaScript进行异步请求的方式经历了多个阶段的发展,每个阶段都在解决上一阶段的问题,变得更简洁、易用、强大。我们从历史发展角度来看,主要经历了以下几个阶段:1️⃣早期阶段:XHR(XMLHttpRequest)诞生背景1999年W3C引入XMLHttpRequest,是AJAX(异步JavaScript和XML)的基础。主要用于局部刷新页面,避免整个页面重新加载,提高用户体验。早期用于XM
- harmony OS NEXT- HTTP 模块笔记
遇到困难睡大觉哈哈
http笔记网络协议鸿蒙
harmonyOSNEXT-HTTP模块笔记1.基础请求流程1.1模块初始化importhttpfrom'@ohos.net.http';//创建请求实例(支持连接池复用)consthttpRequest=http.createHttp();1.2GET请求基础模板asyncfunctionfetchData(url:string):Promise{try{constresponse=awaith
- 【微服务架构】SpringCloud Alibaba(六):SpringCloud Gateway网关(过滤器工厂配置)
道友老李
#架构师进阶-微服务架构架构微服务springcloud
文章目录一、SpringCloudAlibaba1、核心组件2、优势3、应用场景二、过滤器工厂(GatewayFilterFactories)配置1、内置过滤器1.1AddRequestHeader过滤工厂1.2AddRequestParameter过滤工厂1.3AddResponseHeader过滤工厂1.4DedupeResponseHeader过滤工厂1.5PrefixPath过滤工厂1.6
- JSR 303全解析:如何在Java项目中实施高效数据校验
代码魔法师Sunny
javapython开发语言
1.JSR303是什么?JSR303(JavaSpecificationRequest303),也称为BeanValidation,是Java中的一个规范,用于定义Java对象的校验规则。1.1JSR303的主要功能注解驱动:通过注解直接在Java类上定义校验规则。内置约束:如@NotNull、@Size、@Min、@Max等。自定义约束:可以定义自定义的校验注解和逻辑。分组校验:支持对不同场景(
- Shiro源码剖析——Subject的创建与获取(一次完整的请求执行流程)
得过且过的勇者y
shirojava后端springboot
文章目录一、AbstractShiroFilter二、createSubject(request,response)1、newBuilder(this.getSecurityManager(),request,response)2、buildWebSubject()1)this.copy(SubjectContextsubjectContext)2)this.ensureSecurityManag
- tomcat修改jsessionid在cookie中的名称
jaymou
Tomcattomcatjsessionid
同一台server部署多个tomcat,每个tomcat里部署了同一个app作为不同的环境,在同一个浏览器同事访问不同环境的时候,session会混乱如下:server1登录>产生sessionID>回传给客户端浏览器>客户端进行接下来的操作,request默认会加上JSESSIONID,就是回传的sessionID,tomcat根据request里的sessionID判断要不要新建session
- ARM驱动学习之静态申请字符类设备号
JT灬新一
嵌入式Carm开发学习
ARM驱动学习之静态申请字符类设备号内核文件:宏定义MKDEV的头文件“include/linux/kdev_t.h”register_chrdev_region和unregister_chrdev_region在头文件"include/linux/fs.h"1.“module_param.c“改写为“request_cdev_num.c”修改Makefile对应名字2.添加linux头文件/*字
- 过滤器filter,监听器Listener
星星不打輰
java
过滤器(filter)将浏览器请求的数据进行过滤,对于服务器向浏览器的相应进行过滤//TODO:当访问/servlet1时,会先经过MyFilter1过滤器,再经过MyServlet1@WebFilter("/servlet1")publicclassMyFilter1implementsFilter{@OverridepublicvoiddoFilter(ServletRequestservle
- python语言tdcq剧集下载爬虫程序代码
EYYLTV
python爬虫开发语言
importrequestsimportreimportosfromlxmlimportetreeurl=“https://xunaizhan.com/xgplay/tiandichuanqi-1-1/”h={‘user-agent’:‘Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/131
- nginx:关于刷新404问题
dingcho
运维前端nginx运维
location/{root/www/wwww.kingbal.com;if(!-e$request_filename){rewrite^(.*)$/index.html?s=$1last;break;}}
- uniapp选择文件使用formData格式提交数据
会说法语的猪
前端uniapp后端uni-app前端javascript
1.Vue实现在vue项目中,我们有个文件,和一些其他字段数据需要提交的时候,我们都是使用axios设置请求头中的Content-Type:multipart/form-data,然后newFormData的方式来进行提交。方式如下:constsendRequest=()=>{constformData=newFormData()formData.append('name',data.value.
- 【Nginx】可以做哪些优化?
重启就好
nginxlinux运维服务器
一、配置文件优化1.1性能优化开启网页压缩gzipon;设置网页缓存时间expires缓存时间;设置连接保持超时keepalive_timeout服务端超时时间客户端超时时间;设置连接保持最大请求数keepalive_requests设置工作进程数worker_processes与服务器CPU数量相同或auto设置工作进程连接数worker_connections设置工作进程绑核worker_cp
- 解决docker报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request cancel
申朝先生
dockerlinux
报错:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)解决方法:配置加速地址:vim/etc/docker/daemon.json进入这个文件
- Python 爬虫实战:多数据源抓取与自动化报表生成高效流程
西攻城狮北
python爬虫自动化开发语言
目录一、准备工作1.1环境搭建1.2安装所需库二、多数据源抓取2.1确定数据源2.2使用Requests和BeautifulSoup抓取静态网页数据2.2.1发送HTTP请求2.2.2解析HTML内容2.3使用Selenium抓取动态网页数据2.3.1安装浏览器驱动2.3.2编写Selenium爬虫代码2.4使用API抓取数据2.4.1发送API请求三、数据处理与清洗3.1使用Pandas进行数据
- 加载MiniLM-L12-v2模型及知识库,调用Deepseek进行问答
欣然~
pytorch
这段Python代码实现了一个基于知识库的问答系统KnowledgeBaseSystem。该系统主要具备以下功能:加载本地模型对文本进行编码。从指定路径加载知识库文件。对知识库中的文本进行向量化处理。根据用户的问题,找出知识库中最相关的知识。调用DeepSeekAPI结合相关知识生成回答。代码详细说明导入必要的库pythonimportosimportnumpyasnpimportrequests
- Requests高级使用指南:状态保持、会话管理与异常处理
小L工程师
爬虫知识点python网络爬虫爬虫selenium课程设计数据分析
在现代网络爬虫和API交互中,简单的GET/POST请求往往不能满足需求。本文将深入探讨Pythonrequests库的高级特性,包括状态保持、会话管理以及常见异常处理,帮助你更好地模拟浏览器行为,完成复杂的网页采集任务。1.HTTP状态保持与Cookie管理1.1为什么需要CookieHTTP协议是无状态的,这意味着服务器不会记住之前的请求信息。Cookie的引入解决了这个问题,它允许服务器在客
- 将调用deepseek的python包装成一个方法,使用流式,多轮对话
痕迹*
python开发语言
要将调用DeepSeek的Python代码包装成一个方法,并支持流式输出和多轮对话,你可以按照以下步骤进行。假设你已经有了一个可以调用DeepSeekAPI的函数,并且该API支持流式输出。1.安装必要的库首先,确保你已经安装了requests库,用于发送HTTP请求。pipinstallrequests2.创建DeepSeek客户端类我们可以创建一个DeepSeekClient类来封装与Deep
- 四大作用域(request,session,application,pagecontext)
星星不打輰
JavaWeb前端java
四大作用域:(servlet或者JSP页面之间共享数据,servlet有四种作用域)一、请求(requestscope)作用域定义:表示数据再一次http请求和响应期间有效,从客户端发送请求到服务器响应请求的整个过程(1次请求中数据是有效的)生命周期:当一次请求处理完成,即浏览器得到响应了,请求作用域中的数据就会被销毁适用场景:请求转发,表单提交—》在request中存放数据(request.se
- 【12】Ajax的原理和解析
微臣愚钝
WebScrapingajax前端javascript
一、前言二、什么是Ajax三、Ajax的基本原理3.1发送请求3.2解析内容3.3渲染网页3.4总结四、Ajax分析五、过滤请求-筛选所有Ajax请求一、前言当我们在用requests抓取页面的时候,得到的结果可能会和在浏览器中看到的不一样:在浏览器中正常显示的页面数据,使用requests却没有得到结果。这是因为requests获取的都是原始HTML文档,而浏览器中的页面则是经过JavaScri
- SpringMVC04:数据处理及跳转
LI JS@你猜啊
springmvc系列笔记javaspringeureka
结果跳转方式ModelAndView设置ModelAndView对象,根据view的名称,和视图解析器跳到指定的页面.页面:{视图解析器前缀}+viewName+{视图解析器后缀}对应的controller类publicclassControllerTest1implementsController{publicModelAndViewhandleRequest(HttpServletReques
- 去除Azure依赖
旧约Alatus
软件架构设计javascript华为harmonyos开发语言前端stablediffusionDALL·E2
去掉这个azure风格组件啥依赖得,完整全部得代码!!不要省略,要完整得:importsysimportjsonimporttimeimportpprintimportplatformimportwebbrowserimporturllib.parseimporturllib.requestimportrandomimportioimporttempfilefromthreadingimportT
- 基于Python+Django的计算机专业就业分析可视化系统
QQ79278590
javawebpythondjango开发语言
基于Python+Django的计算机专业就业分析系统1.使用django-simpleui实现后端管理系统,使用requests爬取的数据2.使用django-allauth插件实现登录注册修改密码等,实现数据的搜索3.使用django框架实现的后端4.前端使用html5,css3,JavaScript,bootstrap2,使用echarts实现可视化
- BS4 案例实战 小案例
Test-Sunny
pythonBeutifulSoup
BS4案例分析实现步骤:1.了解HTML和网页结构2.安装和导入相关依赖库3.发送http请求获取网页内容4.解析HTML网页内容5.定位内容和提取数据6.保存抓取的数据-coding:UTF-8importosimporttimeimportrequestsfrombs4importBeautifulSoupfromopenpyxlimportWorkbook#创建Excel文件#wb=Work
- 基于python爬虫:requests+BeautifulSoup+MySQL/MongoDB(或:CSV、JSON等格式的文件)+...
Test-Sunny
python爬虫beautifulsoup
爬虫技术(基于python介绍)-应用场景数据抓取、数据挖掘、搜索引擎优化http协议通过HTTP请求来获取网页数据-编程语言pythonpython库数据请求与解析requests、BeautifulSoup、Scrapy等requests(Python):用于发送HTTP请求。BeautifulSoup:用于解析HTML和XML文档-数据存储数据库(如MySQL、MongoDB):用于存储抓取
- Python爬虫:开启数据抓取的奇幻之旅(一)
小周不想卷
python
目录一、爬虫初印象:揭开神秘面纱二、工欲善其事:前期准备(一)Python环境搭建1.下载Python安装包:2.运行安装程序:3.配置环境变量(若自动添加失败):(二)开发工具推荐1.PyCharm:2.JupyterNotebook:(三)必备库安装1.requests库:2.BeautifulSoup4库:3.Scrapy框架:4.Selenium库:三、爬虫原理剖析:探寻内在机制(一)发起
- 【DeepSeek】使用Kivy实现DeepSeek聊天系统
Botiway
移动APP教育信息化pythonDeepSeek人工智能
使用Kivy实现DeepSeek聊天系统下面是一个完整的Kivy应用程序示例,它集成了DeepSeekAPI,实现了一个简单的聊天界面。完整代码1.安装依赖首先确保安装了必要的库:pipinstallkivyrequests2.主程序代码(main.py)importosimportrequestsimportjsonfromkivy.appimportAppfromkivy.uix.boxlay
- python下载m3u8格式视频
fengchengwu2012
devopspython开发语言m3u8
一、安装m3u8库pipinstallrequestspipinstallrequestsm3u8二、编码实现importosimportreimportrequestsimportsubprocess#下载ts文件defdown_ts_file(base_url,m3u8_url,download_dir):#从m3u8文件中获取所有ts的分片名称信息response=requests.get(
- 基于Flask的通用登录注册模块,并代理跳转到目标网址
vener__
通用网站搭建flaskpython后端
实现了用户密码的加密,代理跳转到目标网址,不会暴露目标路径,未登录的情况下访问proxy则自动跳转到登录页,使用时需要修改配置项config,登录注册页面背景快速修改,可以实现登录注册模块的快速复用。1.app.pyfromflaskimportFlask,render_template,request,redirect,url_for,session,Responseimportsqlite3i
- ASM系列六 利用TreeApi 添加和移除类成员
lijingyao8206
jvm动态代理ASM字节码技术TreeAPI
同生成的做法一样,添加和移除类成员只要去修改fields和methods中的元素即可。这里我们拿一个简单的类做例子,下面这个Task类,我们来移除isNeedRemove方法,并且添加一个int 类型的addedField属性。
package asm.core;
/**
* Created by yunshen.ljy on 2015/6/
- Springmvc-权限设计
bee1314
springWebjsp
万丈高楼平地起。
权限管理对于管理系统而言已经是标配中的标配了吧,对于我等俗人更是不能免俗。同时就目前的项目状况而言,我们还不需要那么高大上的开源的解决方案,如Spring Security,Shiro。小伙伴一致决定我们还是从基本的功能迭代起来吧。
目标:
1.实现权限的管理(CRUD)
2.实现部门管理 (CRUD)
3.实现人员的管理 (CRUD)
4.实现部门和权限
- 算法竞赛入门经典(第二版)第2章习题
CrazyMizzz
c算法
2.4.1 输出技巧
#include <stdio.h>
int
main()
{
int i, n;
scanf("%d", &n);
for (i = 1; i <= n; i++)
printf("%d\n", i);
return 0;
}
习题2-2 水仙花数(daffodil
- struts2中jsp自动跳转到Action
麦田的设计者
jspwebxmlstruts2自动跳转
1、在struts2的开发中,经常需要用户点击网页后就直接跳转到一个Action,执行Action里面的方法,利用mvc分层思想执行相应操作在界面上得到动态数据。毕竟用户不可能在地址栏里输入一个Action(不是专业人士)
2、<jsp:forward page="xxx.action" /> ,这个标签可以实现跳转,page的路径是相对地址,不同与jsp和j
- php 操作webservice实例
IT独行者
PHPwebservice
首先大家要简单了解了何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端与client端。我测试的环境为:apache2.2.11 php5.2.10做这个测试之前,要确认你的php配置文件中已经将soap扩展打开,即extension=php_soap.dll;
OK 现在我们来体验webservice
//server端 serve
- Windows下使用Vagrant安装linux系统
_wy_
windowsvagrant
准备工作:
下载安装 VirtualBox :https://www.virtualbox.org/
下载安装 Vagrant :http://www.vagrantup.com/
下载需要使用的 box :
官方提供的范例:http://files.vagrantup.com/precise32.box
还可以在 http://www.vagrantbox.es/
- 更改linux的文件拥有者及用户组(chown和chgrp)
无量
clinuxchgrpchown
本文(转)
http://blog.163.com/yanenshun@126/blog/static/128388169201203011157308/
http://ydlmlh.iteye.com/blog/1435157
一、基本使用:
使用chown命令可以修改文件或目录所属的用户:
命令
- linux下抓包工具
矮蛋蛋
linux
原文地址:
http://blog.chinaunix.net/uid-23670869-id-2610683.html
tcpdump -nn -vv -X udp port 8888
上面命令是抓取udp包、端口为8888
netstat -tln 命令是用来查看linux的端口使用情况
13 . 列出所有的网络连接
lsof -i
14. 列出所有tcp 网络连接信息
l
- 我觉得mybatis是垃圾!:“每一个用mybatis的男纸,你伤不起”
alafqq
mybatis
最近看了
每一个用mybatis的男纸,你伤不起
原文地址 :http://www.iteye.com/topic/1073938
发表一下个人看法。欢迎大神拍砖;
个人一直使用的是Ibatis框架,公司对其进行过小小的改良;
最近换了公司,要使用新的框架。听说mybatis不错;就对其进行了部分的研究;
发现多了一个mapper层;个人感觉就是个dao;
- 解决java数据交换之谜
百合不是茶
数据交换
交换两个数字的方法有以下三种 ,其中第一种最常用
/*
输出最小的一个数
*/
public class jiaohuan1 {
public static void main(String[] args) {
int a =4;
int b = 3;
if(a<b){
// 第一种交换方式
int tmep =
- 渐变显示
bijian1013
JavaScript
<style type="text/css">
#wxf {
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#97FF98);
height: 25px;
}
</style>
- 探索JUnit4扩展:断言语法assertThat
bijian1013
java单元测试assertThat
一.概述
JUnit 设计的目的就是有效地抓住编程人员写代码的意图,然后快速检查他们的代码是否与他们的意图相匹配。 JUnit 发展至今,版本不停的翻新,但是所有版本都一致致力于解决一个问题,那就是如何发现编程人员的代码意图,并且如何使得编程人员更加容易地表达他们的代码意图。JUnit 4.4 也是为了如何能够
- 【Gson三】Gson解析{"data":{"IM":["MSN","QQ","Gtalk"]}}
bit1129
gson
如何把如下简单的JSON字符串反序列化为Java的POJO对象?
{"data":{"IM":["MSN","QQ","Gtalk"]}}
下面的POJO类Model无法完成正确的解析:
import com.google.gson.Gson;
- 【Kafka九】Kafka High Level API vs. Low Level API
bit1129
kafka
1. Kafka提供了两种Consumer API
High Level Consumer API
Low Level Consumer API(Kafka诡异的称之为Simple Consumer API,实际上非常复杂)
在选用哪种Consumer API时,首先要弄清楚这两种API的工作原理,能做什么不能做什么,能做的话怎么做的以及用的时候,有哪些可能的问题
- 在nginx中集成lua脚本:添加自定义Http头,封IP等
ronin47
nginx lua
Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。刚开始我们只是用Lua 把请求路由到后端服务器,但是它对我们架构的作用超出了我们的预期。下面就讲讲我们所做的工作。 强制搜索引擎只索引mixlr.com
Google把子域名当作完全独立的网站,我们不希望爬虫抓取子域名的页面,降低我们的Page rank。
location /{
- java-归并排序
bylijinnan
java
import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int[] a={20,1,3,8,5,9,4,25};
mergeSort(a,0,a.length-1);
System.out.println(Arrays.to
- Netty源码学习-CompositeChannelBuffer
bylijinnan
javanetty
CompositeChannelBuffer体现了Netty的“Transparent Zero Copy”
查看API(
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/buffer/package-summary.html#package_description)
可以看到,所谓“Transparent Zero Copy”是通
- Android中给Activity添加返回键
hotsunshine
Activity
// this need android:minSdkVersion="11"
getActionBar().setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- 静态页面传参
ctrain
静态
$(document).ready(function () {
var request = {
QueryString :
function (val) {
var uri = window.location.search;
var re = new RegExp("" + val + "=([^&?]*)", &
- Windows中查找某个目录下的所有文件中包含某个字符串的命令
daizj
windows查找某个目录下的所有文件包含某个字符串
findstr可以完成这个工作。
[html]
view plain
copy
>findstr /s /i "string" *.*
上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中查找"string&qu
- 改善程序代码质量的一些技巧
dcj3sjt126com
编程PHP重构
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。让我们看一些基本的编程技巧: 尽量保持方法简短 尽管很多人都遵
- SharedPreferences对数据的存储
dcj3sjt126com
SharedPreferences简介: &nbs
- linux复习笔记之bash shell (2) bash基础
eksliang
bashbash shell
转载请出自出处:
http://eksliang.iteye.com/blog/2104329
1.影响显示结果的语系变量(locale)
1.1locale这个命令就是查看当前系统支持多少种语系,命令使用如下:
[root@localhost shell]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
- Android零碎知识总结
gqdy365
android
1、CopyOnWriteArrayList add(E) 和remove(int index)都是对新的数组进行修改和新增。所以在多线程操作时不会出现java.util.ConcurrentModificationException错误。
所以最后得出结论:CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。发生修改时候做copy,新老版本分离,保证读的高
- HoverTree.Model.ArticleSelect类的作用
hvt
Web.netC#hovertreeasp.net
ArticleSelect类在命名空间HoverTree.Model中可以认为是文章查询条件类,用于存放查询文章时的条件,例如HvtId就是文章的id。HvtIsShow就是文章的显示属性,当为-1是,该条件不产生作用,当为0时,查询不公开显示的文章,当为1时查询公开显示的文章。HvtIsHome则为是否在首页显示。HoverTree系统源码完全开放,开发环境为Visual Studio 2013
- PHP 判断是否使用代理 PHP Proxy Detector
天梯梦
proxy
1. php 类
I found this class looking for something else actually but I remembered I needed some while ago something similar and I never found one. I'm sure it will help a lot of developers who try to
- apache的math库中的回归——regression(翻译)
lvdccyb
Mathapache
这个Math库,虽然不向weka那样专业的ML库,但是用户友好,易用。
多元线性回归,协方差和相关性(皮尔逊和斯皮尔曼),分布测试(假设检验,t,卡方,G),统计。
数学库中还包含,Cholesky,LU,SVD,QR,特征根分解,真不错。
基本覆盖了:线代,统计,矩阵,
最优化理论
曲线拟合
常微分方程
遗传算法(GA),
还有3维的运算。。。
- 基础数据结构和算法十三:Undirected Graphs (2)
sunwinner
Algorithm
Design pattern for graph processing.
Since we consider a large number of graph-processing algorithms, our initial design goal is to decouple our implementations from the graph representation
- 云计算平台最重要的五项技术
sumapp
云计算云平台智城云
云计算平台最重要的五项技术
1、云服务器
云服务器提供简单高效,处理能力可弹性伸缩的计算服务,支持国内领先的云计算技术和大规模分布存储技术,使您的系统更稳定、数据更安全、传输更快速、部署更灵活。
特性
机型丰富
通过高性能服务器虚拟化为云服务器,提供丰富配置类型虚拟机,极大简化数据存储、数据库搭建、web服务器搭建等工作;
仅需要几分钟,根据CP
- 《京东技术解密》有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的12月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
12月试读活动回顾:
http://webmaster.iteye.com/blog/2164754
本次技术图书试读活动获奖名单及相应作品如下:
一等奖(两名)
Microhardest:http://microhardest.ite