- 关于HTTP的内容
大风吹兮风清扬
HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(useragent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(originserver)。在用户代理和源服务器中间可能存在多个“
- 【爬虫】05 - 爬虫攻防
是小崔啊
#爬虫学习爬虫
爬虫05-爬虫攻防文章目录爬虫05-爬虫攻防一:随机User-Agent爬虫1:fake-useragent2:高级反反爬策略3:生产环境建议二:代理IP爬虫1:获取代理IP2:高阶攻防3:企业级的代理实战三:动态数据的抓取1:动态页面技术全景2:动态页面逆向工程2.1:XHR请求追踪与解析2.2:websocket实时数据捕获3:无头浏览器控制技术3.1:Playwright详解3.2:反反爬虫
- 爬虫_加速乐秒杀
kisloy
爬虫逆向爬虫python
加速乐补环境补环境window={navigator:{userAgent:"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/104.0.0.0Safari/537.36"},outerWidth:1920,outerHeight:1050,};location={reload:functi
- UserAgent-Switcher 项目常见问题解决方案
卫直超Unity
UserAgent-Switcher项目常见问题解决方案UserAgent-SwitcherAUser-Agentspooferbrowserextensionthatishighlyconfigurable项目地址:https://gitcode.com/gh_mirrors/us/UserAgent-Switcher项目基础介绍UserAgent-Switcher是一个高度可配置的用户代理欺骗
- 【亲测免费】 UserAgent-Switcher 技术文档
UserAgent-Switcher技术文档UserAgent-SwitcherAUser-Agentspooferbrowserextensionthatishighlyconfigurable项目地址:https://gitcode.com/gh_mirrors/us/UserAgent-Switcher1.安装指南1.1浏览器扩展安装UserAgent-Switcher是一个高度可配置的用户
- spring-webmvc @RequestHeader 典型用法
张紫娃
注解springpythonjava
典型用法基础用法:获取指定请求头值@GetMapping("/info")publicStringgetInfo(@RequestHeader("User-Agent")StringuserAgent){return"User-Agent:"+userAgent;}如果请求中包含User-Agent请求头,则其值将被注入到userAgent参数。若未找到该Header,默认会抛出异常(除非设置re
- Python 爬虫实战:华尔街见闻精选文章爬取(反反爬 + 投资情绪分析)
Python核芯
Python爬虫实战项目python爬虫开发语言
一、环境配置与工具选择1.1技术栈选型本次实战采用以下技术组合:核心框架:Playwright(浏览器自动化)、Requests(HTTP请求)、BeautifulSoup(HTML解析)反反爬模块:fake-useragent(随机UA)、proxypool(代理池)、playwright-stealth(反检测)数据分析:Pandas(数据处理)、SnowNLP(情感分析)、WordCloud
- 一个手机请求头的随机库
white.tie
javascript开发语言python
打包了一个有上万个手机ua的请求库,安装方式如下pipinstallmobile_ua安装完之后测试demo如下"""@Time:2025/6/213:51@Author:white.tie@File:test.py@Desc:"""frommobile_uaimportuseragent#获取随机Uaprint(useragent.random_ua())#获取指定UAprint(userage
- Python——email模块
田地里的大麦子
Pythonpython
一、发邮件的流程1、使用电子邮件软件MUA:mailuseragent--邮件用户代理,填写完成点击发送2、点击发送的时候电子邮件软件发出去,到MTA:mailtransferagent–邮件传输代理,即email服务提供商,如网易等3、MTA–邮箱传输代理会把邮箱投递到邮件的最终目的地MDA:maildeliveryagent—邮箱投递服务4、email到达MDA后就会放在某个服务器上,存在数据
- JS如何判断在微信浏览器里运行
chilavert318
点点滴滴
判断当前页面是否在微信浏览器中打开(四类方法整理)方法一:(微信官方js判断做法)复制代码varua=navigator.userAgent.toLowerCase();varisWeixin=ua.indexOf('micromessenger')!=-1;if(isWeixin){returntrue;}else{returnfalse;}复制代码方法二:(js判断做法)复制代码functio
- JS判断用户使用的是什么浏览器
钱端工程师
javascript开发语言ecmascript
//获取浏览器类型constgetSysType=()=>{varSys:any={};varua=navigator.userAgent.toLowerCase();vars;(s=ua.match(/msie([\d.]+)/))?Sys.ie=s[1]:(s=ua.match(/firefox\/([\d.]+)/))?Sys.firefox=s[1]:(s=ua.match(/chrome
- python代理IP爬虫贝壳抓取房源信息
zhi丶zhi
python爬虫
python爬虫实现贝壳抓取房源信息准备工作安装爬虫环境使用BeautifulSoup对网页数据抓取将数据插入MySQL数据库准备环境安装Python3.9环境https://www.python.org/安装pymysql,BeautifulSoup,fake_useragent获取代理IP池#用到的库importjsonimportosimportrandomimporttracebackim
- 解决Firefox代理身份验证弹出窗口问题:C#和Selenium实战指南
亿牛云爬虫专家
seleuium爬虫代理C#firefoxc#selenium代理验证窗口弹窗爬虫代理
引言在使用Selenium和C#进行网页抓取时,遇到代理服务器的身份验证弹出窗口是一个常见的问题。这不仅会中断自动化流程,还会导致抓取任务失败。本文将提供一个实战指南,帮助开发者解决这个问题,并介绍如何在代码中设置代理IP、UserAgent和Cookies。正文1.环境准备在开始之前,请确保已经安装了以下工具和库:VisualStudio(或任何C#开发环境)SeleniumWebDriverF
- 获取携程机票信息(爬虫)
秋秋的鱼板面
爬虫
仅供个人学习使用!2022-01-01版#@author:AIslandX#@date:2022-01-01importhashlibimportjsonimportloggingimportrandomimporttimeimportrequestsfromfake_useragentimportUserAgent#参考文章:#-机场列表-维基百科#https://zh.wikipedia.or
- Vue进阶(幺陆玖)信创终端适配改造_组件和插件怎么适应信创改造(1)
2401_84412050
程序员vue.js前端javascript
}注⚠️:**麒麟桌面操作系统自带麒麟安全浏览器标识为`Kylinbrowser`。***统信UOS自带浏览器:**版本6.0.7(正式版本)(64位)|93.0.4577.63(此浏览器基于Chromium开源项目及其他开源软件。)**----------------navigator.userAgent------------------Mozilla/5.0(X11;Linuxx86_64)
- mint-ui 企业微信PC端内置浏览器 Picker 无法滚动
dianzong9142
uijavascriptViewUI
处理在主JS代码之上附加以下代码:if(~navigator.userAgent.toLowerCase().indexOf('windowswechat')){deletewindow.ontouchstart}解析mint-ui判定是否是移动端源码从源码可以看出,MintUI主要通过判断window有无ontouchstart属性来控制picker用鼠标滑动还是用touch滑动。#mint-u
- QCefView应用和网页的交互
郑文博Coding
交互qt
一、demo的主要项目文件结合QCefView自带的demo代码main.cpp#include#include#include“MainWindow.h”intmain(intargc,char*argv[]){QApplicationa(argc,argv);//buildQCefConfigQCefConfigconfig;config.setUserAgent(“QCefViewTest”
- 爬虫学习的第一天(requests简单的框架--初阶5)
「已注销」
爬虫
#本章内容爬取腾讯体育网,将其中的新闻爬取显示出来。importrequestsfromfake_useragentimportUserAgent#调用fake_useragent库中UserAgent模块importretry:url="https://sports.qq.com/"#爬取的网站headers={'User-Agent':UserAgent().chrome#可以生成一个chro
- Scrapy框架之下载中间件(详解)
我还可以熬_
#python爬虫scrapy中间件
目录Scrapy中下载中间件概念方法process_request(self,request,spider)参数:process_response(self,request,response,spider)参数基本步骤示例代码注意Scrapy中Downloader设置UA开发UserAgent下载中间件代码三方模块配置模块到Setting文件Scrapy中Downloader设置代理爬虫代理原理代
- 两步还没确定值并且这个属性
node.js
要确定属性值的话,我们可以先想想CSS属性值都可以从哪里来?声明值?继承?默认值?想了想CSS值好像也只能从这三个地方来获取,再加上一个比较权重,我们是不是就可以确定一个CSS属性的值了?ok,浏览器也确实是按这些步骤来确定CSS属性值的:声明值:这里包含开发者自定义声明与用户代理的样式表【useragentstylesheet】(相当于浏览器默认样式表需要与默认值区分开)比较权重:因为可能会有重
- CSS属性值都可以从哪里来?
npmangular
CSS属性值的确定步骤要确定属性值的话,我们可以先想想CSS属性值都可以从哪里来?声明值?继承?默认值?想了想CSS值好像也只能从这三个地方来获取,再加上一个比较权重,我们是不是就可以确定一个CSS属性的值了?ok,浏览器也确实是按这些步骤来确定CSS属性值的:声明值:这里包含开发者自定义声明与用户代理的样式表【useragentstylesheet】(相当于浏览器默认样式表需要与默认值区分开)比
- 爬取B站热门视频
Cheney.W
defget_headers():“”"生成响应头:return:生成的响应头“”"#随机生成user_agentuser_agent=my_fake_useragent.UserAgent()ua=str(user_agent.random())headers={http://yezishuju.com/‘user-agent’:ua}returnheaders
- 数据分析异步进阶:aiohttp与Asyncio性能提升
亿牛云爬虫专家
python代理IP爬虫代理数据分析异步aiohttpAsyncio今日头条www.toutiao.com爬虫代理
一、时间轴呈现方案进程2023-04-01:需求确认确定目标:使用aiohttp与Asyncio提升采集性能,目标采集今日头条网站的新闻数据(标题、内容、时间等)。同时要求在程序中加入代理IP、Cookie和UserAgent的设置,保证反爬策略应对得当。2023-04-02:初步开发与测试开发基础异步爬虫框架,实现对目标网站的异步请求。初步测试发现由于目标网站限制措施,直接请求经常返回异常或内容
- 在Selenium 中更改 User-Agent 的步骤与最佳实践
守城小轩
网络爬虫selenium网络爬虫浏览器开发自动化浏览器爬虫chrome
引言在Selenium中更改UserAgent是许多网页自动化任务中的关键步骤。它有助于将自动化脚本伪装成常规浏览器,从而避免被网站检测到。本指南将带您了解如何在Selenium中更改GoogleChrome的UserAgent,并提供最佳实践以确保您的网页自动化任务顺利进行。目录了解SeleniumUser-AgentSelenium中的默认User-Agent为什么要更改User-Agent?
- js判断移动设备类型、浏览器类型、手机系统
枫叶&情缘
jq前端JavaScriptjavascript前端htmljquery
Document移动设备类型:浏览器类型:定制系统:ua:functiongetMobileDeviceInfo(){constua=navigator.userAgent;constdeviceModel=navigator.deviceModel||'';//判断是否为移动设备functionisMobile(){return/Android|iPhone|iPad|iPod|BlackBer
- b站视频爬虫-词云分析
kaka_R-Py
多元统计分析音视频爬虫
一、设置爬虫程序#requests请求b站视频importjsonimportfake_useragentimportrequestsfromlxmlimportetreeif__name__=='__main__':#UA伪装head={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeG
- 钉钉小程序(企业内部应用)开发--钉钉小程序web-view嵌套H5与小程序之间的通信(H5跳转钉钉小程序小程序postMessage)
青青子衿越
钉钉小程序前端
钉钉小程序代码:嵌套H5pages/login/index.axmlH5向小程序发送信息:H5代码:通过以下代码我一直报错dd没有被定义if(navigator.userAgent.toLowerCase().indexOf('dingtalk')>-1){document.writeln(''+'');}所以这样子引入dd!!!!代码:template.h5.html在h5页面中引入以上代码成功
- 简单爬取一下电影排行
孟婆来包棒棒糖~
数据库python爬虫
主要用到了requests和xpath来解析数据,然后储存在mysql数据库中,不过代码方面我是先写好简单实现工作,然后让ai帮我用类封装来成功实现,博主比较菜,如果有反爬措施可以找js逆向视频来学习importrequestsfromfake_useragentimportUserAgentfromlxmlimportetreeimportpymysqlfrompymysql.cursorsim
- ws协议与http协议的异同_Socket、WebSocket 、HTTP 与 TCP有什么区别
雪言AR纯
ws协议与http协议的异同
0、为什么需要WebSocket?Browser已经支持http协议,为什么还要开发一种新的WebSocket协议呢?我们知道http协议是一种单向的网络协议,在建立连接后,它只允许Browser/UA(UserAgent)向WebServer发出请求资源后,WebServer才能返回相应的数据。而WebServer不能主动的推送数据给Browser/UA,当初这么设计http协议也是有原因的,假
- 【dingding】钉钉应用开发总结
小墨鱼_z
dingding钉钉数学建模servlet
对接钉钉应用的开发过程中遇到的问题1、在header里放入钉钉监控中心代码块varisDingtalk=navigator&&/DingTalk/.test(navigator.userAgent);varisProductEnv=window&&window.location&&window.location.host&&window.location.host.indexOf('127.0.0
- ASM系列五 利用TreeApi 解析生成Class
lijingyao8206
ASM字节码动态生成ClassNodeTreeAPI
前面CoreApi的介绍部分基本涵盖了ASMCore包下面的主要API及功能,其中还有一部分关于MetaData的解析和生成就不再赘述。这篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。
在介绍前,先要知道一点, Tree工程的接口基本可以完
- 链表树——复合数据结构应用实例
bardo
数据结构树型结构表结构设计链表菜单排序
我们清楚:数据库设计中,表结构设计的好坏,直接影响程序的复杂度。所以,本文就无限级分类(目录)树与链表的复合在表设计中的应用进行探讨。当然,什么是树,什么是链表,这里不作介绍。有兴趣可以去看相关的教材。
需求简介:
经常遇到这样的需求,我们希望能将保存在数据库中的树结构能够按确定的顺序读出来。比如,多级菜单、组织结构、商品分类。更具体的,我们希望某个二级菜单在这一级别中就是第一个。虽然它是最后
- 为啥要用位运算代替取模呢
chenchao051
位运算哈希汇编
在hash中查找key的时候,经常会发现用&取代%,先看两段代码吧,
JDK6中的HashMap中的indexFor方法:
/**
* Returns index for hash code h.
*/
static int indexFor(int h, int length) {
- 最近的情况
麦田的设计者
生活感悟计划软考想
今天是2015年4月27号
整理一下最近的思绪以及要完成的任务
1、最近在驾校科目二练车,每周四天,练三周。其实做什么都要用心,追求合理的途径解决。为
- PHP去掉字符串中最后一个字符的方法
IT独行者
PHP字符串
今天在PHP项目开发中遇到一个需求,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下:
$str = "1,2,3,4,5,6,";
$newstr = substr($str,0,strlen($str)-1);
echo $newstr;
- hadoop在linux上单机安装过程
_wy_
linuxhadoop
1、安装JDK
jdk版本最好是1.6以上,可以使用执行命令java -version查看当前JAVA版本号,如果报命令不存在或版本比较低,则需要安装一个高版本的JDK,并在/etc/profile的文件末尾,根据本机JDK实际的安装位置加上以下几行:
export JAVA_HOME=/usr/java/jdk1.7.0_25  
- JAVA进阶----分布式事务的一种简单处理方法
无量
多系统交互分布式事务
每个方法都是原子操作:
提供第三方服务的系统,要同时提供执行方法和对应的回滚方法
A系统调用B,C,D系统完成分布式事务
=========执行开始========
A.aa();
try {
B.bb();
} catch(Exception e) {
A.rollbackAa();
}
try {
C.cc();
} catch(Excep
- 安墨移动广 告:移动DSP厚积薄发 引领未来广 告业发展命脉
矮蛋蛋
hadoop互联网
“谁掌握了强大的DSP技术,谁将引领未来的广 告行业发展命脉。”2014年,移动广 告行业的热点非移动DSP莫属。各个圈子都在纷纷谈论,认为移动DSP是行业突破点,一时间许多移动广 告联盟风起云涌,竞相推出专属移动DSP产品。
到底什么是移动DSP呢?
DSP(Demand-SidePlatform),就是需求方平台,为解决广 告主投放的各种需求,真正实现人群定位的精准广
- myelipse设置
alafqq
IP
在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的数倍。因此项目的可维护性、可复用性是衡量一个项目好坏的关键。而注释则是可维护性中必不可少的一环。
注释模板导入步骤
安装方法:
打开eclipse/myeclipse
选择 window-->Preferences-->JAVA-->Code-->Code
- java数组
百合不是茶
java数组
java数组的 声明 创建 初始化; java支持C语言
数组中的每个数都有唯一的一个下标
一维数组的定义 声明: int[] a = new int[3];声明数组中有三个数int[3]
int[] a 中有三个数,下标从0开始,可以同过for来遍历数组中的数
- javascript读取表单数据
bijian1013
JavaScript
利用javascript读取表单数据,可以利用以下三种方法获取:
1、通过表单ID属性:var a = document.getElementByIdx_x_x("id");
2、通过表单名称属性:var b = document.getElementsByName("name");
3、直接通过表单名字获取:var c = form.content.
- 探索JUnit4扩展:使用Theory
bijian1013
javaJUnitTheory
理论机制(Theory)
一.为什么要引用理论机制(Theory)
当今软件开发中,测试驱动开发(TDD — Test-driven development)越发流行。为什么 TDD 会如此流行呢?因为它确实拥有很多优点,它允许开发人员通过简单的例子来指定和表明他们代码的行为意图。
TDD 的优点:
&nb
- [Spring Data Mongo一]Spring Mongo Template操作MongoDB
bit1129
template
什么是Spring Data Mongo
Spring Data MongoDB项目对访问MongoDB的Java客户端API进行了封装,这种封装类似于Spring封装Hibernate和JDBC而提供的HibernateTemplate和JDBCTemplate,主要能力包括
1. 封装客户端跟MongoDB的链接管理
2. 文档-对象映射,通过注解:@Document(collectio
- 【Kafka八】Zookeeper上关于Kafka的配置信息
bit1129
zookeeper
问题:
1. Kafka的哪些信息记录在Zookeeper中 2. Consumer Group消费的每个Partition的Offset信息存放在什么位置
3. Topic的每个Partition存放在哪个Broker上的信息存放在哪里
4. Producer跟Zookeeper究竟有没有关系?没有关系!!!
//consumers、config、brokers、cont
- java OOM内存异常的四种类型及异常与解决方案
ronin47
java OOM 内存异常
OOM异常的四种类型:
一: StackOverflowError :通常因为递归函数引起(死递归,递归太深)。-Xss 128k 一般够用。
二: out Of memory: PermGen Space:通常是动态类大多,比如web 服务器自动更新部署时引起。-Xmx
- java-实现链表反转-递归和非递归实现
bylijinnan
java
20120422更新:
对链表中部分节点进行反转操作,这些节点相隔k个:
0->1->2->3->4->5->6->7->8->9
k=2
8->1->6->3->4->5->2->7->0->9
注意1 3 5 7 9 位置是不变的。
解法:
将链表拆成两部分:
a.0-&
- Netty源码学习-DelimiterBasedFrameDecoder
bylijinnan
javanetty
看DelimiterBasedFrameDecoder的API,有举例:
接收到的ChannelBuffer如下:
+--------------+
| ABC\nDEF\r\n |
+--------------+
经过DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())之后,得到:
+-----+----
- linux的一些命令 -查看cc攻击-网口ip统计等
hotsunshine
linux
Linux判断CC攻击命令详解
2011年12月23日 ⁄ 安全 ⁄ 暂无评论
查看所有80端口的连接数
netstat -nat|grep -i '80'|wc -l
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看TCP连接状态
n
- Spring获取SessionFactory
ctrain
sessionFactory
String sql = "select sysdate from dual";
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
String[] names = wac.getBeanDefinitionNames();
for(int i=0; i&
- Hive几种导出数据方式
daizj
hive数据导出
Hive几种导出数据方式
1.拷贝文件
如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。
hadoop fs –cp source_path target_path
2.导出到本地文件系统
--不能使用insert into local directory来导出数据,会报错
--只能使用
- 编程之美
dcj3sjt126com
编程PHP重构
我个人的 PHP 编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考 PHP 手册。希望下面的代码,会更有利于对递归以及静态变量的理解
header("Content-type: text/plain");
function static_function () {
static $i = 0;
if ($i++ < 1
- Android保存用户名和密码
dcj3sjt126com
android
转自:http://www.2cto.com/kf/201401/272336.html
我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码
1、通过普通 的txt文本存储
2、通过properties属性文件进行存
- Oracle 复习笔记之同义词
eksliang
Oracle 同义词Oracle synonym
转载请出自出处:http://eksliang.iteye.com/blog/2098861
1.什么是同义词
同义词是现有模式对象的一个别名。
概念性的东西,什么是模式呢?创建一个用户,就相应的创建了 一个模式。模式是指数据库对象,是对用户所创建的数据对象的总称。模式对象包括表、视图、索引、同义词、序列、过
- Ajax案例
gongmeitao
Ajaxjsp
数据库采用Sql Server2005
项目名称为:Ajax_Demo
1.com.demo.conn包
package com.demo.conn;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
//获取数据库连接的类public class DBConnec
- ASP.NET中Request.RawUrl、Request.Url的区别
hvt
.netWebC#asp.nethovertree
如果访问的地址是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu那么Request.Url.ToString() 的值是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree<&
- SVG 教程 (七)SVG 实例,SVG 参考手册
天梯梦
svg
SVG 实例 在线实例
下面的例子是把SVG代码直接嵌入到HTML代码中。
谷歌Chrome,火狐,Internet Explorer9,和Safari都支持。
注意:下面的例子将不会在Opera运行,即使Opera支持SVG - 它也不支持SVG在HTML代码中直接使用。 SVG 实例
SVG基本形状
一个圆
矩形
不透明矩形
一个矩形不透明2
一个带圆角矩
- 事务管理
luyulong
javaspring编程事务
事物管理
spring事物的好处
为不同的事物API提供了一致的编程模型
支持声明式事务管理
提供比大多数事务API更简单更易于使用的编程式事务管理API
整合spring的各种数据访问抽象
TransactionDefinition
定义了事务策略
int getIsolationLevel()得到当前事务的隔离级别
READ_COMMITTED
- 基础数据结构和算法十一:Red-black binary search tree
sunwinner
AlgorithmRed-black
The insertion algorithm for 2-3 trees just described is not difficult to understand; now, we will see that it is also not difficult to implement. We will consider a simple representation known
- centos同步时间
stunizhengjia
linux集群同步时间
做了集群,时间的同步就显得非常必要了。 以下是查到的如何做时间同步。 在CentOS 5不再区分客户端和服务器,只要配置了NTP,它就会提供NTP服务。 1)确认已经ntp程序包: # yum install ntp 2)配置时间源(默认就行,不需要修改) # vi /etc/ntp.conf server pool.ntp.o
- ITeye 9月技术图书有奖试读获奖名单公布
ITeye管理员
ITeye
ITeye携手博文视点举办的9月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。 9月试读活动回顾:http://webmaster.iteye.com/blog/2118112本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《NFC:Arduino、Andro