- ImportError: cannot import name ‘OpenAI‘ from partially initialized module ‘openai‘
营赢盈英
AIaipythonopenai人工智能openaiapi
题意:Python在尝试从openai模块中导入一个名为OpenAI的类或函数时遇到了问题问题背景:IamtryingtousetheOpenAIPythonSDK,Iinstalledthelatestversionviapipandverifiedthatitisinstalledviapiplist.NowwhenIgotorunthecodeandmakeasimplerequestIge
- ImportError: cannot import name ‘db‘ from partially initialized module ‘app‘ (most likely due to a c
总是幸福的老豌豆
日常工作总结pythonflask
前言最近编写flask项目时,无法加载db,报错错误信息C:\Users\Administrator\.virtualenvs\movie_project-7781sJXo\Scripts\python.exe"D:\pycharm\PyCharm2020.2.3\plugins\python\helpers\pydev\pydevd.py"--multiproc--qt-support=auto
- selenium入门示例
abcque
PythonSpiderTutorial
fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysfromselenium.webdriver.support.waitimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.web
- 异步操作中的潜在问题及影响分析
weixin_43833540
java多线程springboot
在软件开发与系统架构中,异步操作被广泛应用,旨在提升系统的整体性能与响应效率。然而,就像任何技术手段一样,它也伴随着一系列潜在的问题,在通过线程池调用HTTP请求通知API服务以及Java异步存储日志到MongoDB这两个典型场景下问题更为突出。一、异步操作带来的数据一致性挑战(一)设备上报异步调用HTTP请求在设备上报状态并通过线程池异步调用HTTP请求通知API服务时,数据一致性面临着诸多考验
- 用 Go 语言还原 2025 刘谦春晚魔术!
后端go面试
去年大年初二,我写了一篇文章「用Go语言实现刘谦2024春晚魔术,还原尼格买提汗流浃背的尴尬瞬间!」,里面揭秘了小尼魔术失败的原因,这也是我公众号的第一篇文章。今天刚好也是大年初二,我再带大家用Go语言还原一下刘谦在蛇年春晚上的魔术。先吐个槽,相比去年的魔术,今年的魔术是不是有点「降本增效」了:)。我看有人提到今年的魔术类似冒泡排序...这个属实有亿点夸张了。没什么数学原理,也什么算法公式,咱们就
- Go 并发控制:sync.Cond 详解
后端go并发编程面试并发原语
公众号首发地址:https://mp.weixin.qq.com/s/c1C2rv3nGCtnfm2n34K6VQ在Go中因为channel的存在,sync.Cond并发原语并不常用。不过在一些开源组件中还能能见到sync.Cond的应用,比如Kubernetes用它来实现并发等待队列,这也是sync.Cond的典型应用场景。本文将通过源码和示例带你学会sync.Cond的正确用法。源码解读我们可
- Selenium——入门
暗夜小白白
Seleniumselenium测试工具
一、Selenium简介Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaFirefox,Safari,GoogleChrome,Opera等。适用于自动化测试,js动态爬虫(破解反爬虫)等领域。二、Selenium组成1)SeleniumIDE:嵌入到Firefo
- 网盘解析工具1.3.0,修改了一些bug,建议更新到此版本
后端
最近问题反馈比较多,本来想着周末再更新了来着,但是账号黑的实在太快了。排查了下应该是某度网盘的一个接口缺少了一些参数,导致一直进黑名单。所幸参数不难找,新版本已经修复了,建议大家赶紧更新到1.3.0版本,之前的版本别用了。网盘解析助手本次是个大版本更新,以下是新增的功能替换了原来的下载器,用了开源的gopeed。增加了夸克网盘的错误处理,解决了反馈的夸克下载进度一直是0的bug下载界面新增了暂停、
- 卷积神经网络 - 微步卷积、空洞卷积
谦亨有终
AI学习笔记cnn人工智能神经网络机器学习
一、微步卷积微步卷积(FractionallyStridedConvolution),通常也称为转置卷积(TransposedConvolution)或反卷积(Deconvolution),是深度学习(尤其是卷积神经网络,CNN)中用于上采样(Upsampling)或特征图尺寸恢复的关键操作。它的核心目的是通过卷积操作将较小的特征图(低分辨率)扩展为更大的特征图(高分辨率)。1.微步卷积的核心思想
- 解决浏览器不支持访问FTP服务器的问题
彼岸花@开
linux服务器运维
1.抛出问题由于安全性和性能方面的考虑,GoogleChrome在版本72之后停止了对FTP协议的支持。因此,如果你想查看FTP目录,你可以考虑以下几种方法:使用专门的FTP客户端软件:可以使用一些专门的FTP客户端软件,如FileZilla、WinSCP等。这些软件提供了直观的用户界面,可以方便地连接到FTP服务器,并浏览、上传、下载文件。使用其他支持FTP的浏览器:虽然GoogleChrome
- 【人工智能】卷积神经网络(Convolutional Neural Network)
AI天才研究院
DeepSeekR1&大数据AI人工智能大模型人工智能cnn深度学习
文章目录卷积神经网络(ConvolutionalNeuralNetwork)卷积神经网络|CNN,ConvolutionalNeuralNetworks.1.卷积操作(ConvolutionOperation):2.池化操作(PoolingOperation):3.激活函数(ActivationFunction):4.全连接层(FullyConnectedLayer):卷积神经网络1.卷积神经网络
- 如何使用Anthropic Chat模型:快速入门指南
shuoac
python开发语言
如何使用AnthropicChat模型:快速入门指南Anthropic提供了多个聊天模型,这篇文章将帮助你快速入门。详细文档请参考AnthropicAPI文档。技术背景介绍Anthropic提供了多种聊天模型,这些模型可以通过AWSBedrock和GoogleVertexAI进行访问。使用Anthropic你可以快速创建高效的对话代理。核心原理解析Anthropic模型支持结构化输出、JSON模式
- 【漏洞修复】Android Studio快速编译glibc2.39、curl7.86.0、openssl3.1.2、cups2.4.10、zlib1.3.0源码(arm64 Android11为例)
漫步企鹅
androidstudiogiteeandroid
要在AndroidStudio中编译或获取高版本的glibc、curl、openssl等库的arm64-v8a架构二进制文件,需结合NDK工具链和构建脚本配置。以下是具体步骤和建议:一、环境配置安装NDK和CMake在AndroidStudio中通过SDKManager安装最新NDK(建议r25及以上版本)和CMake,确保支持C++17/20特性12。NDK路径通常位于Android/sdk/n
- 主流云平台(AWS、华为云、阿里云、Google Cloud等)的**大数据及人工智能技术栈**及其核心组件的深度解析
无级程序员
云计算平台大数据aws华为云阿里云云原生
云计算系列文章:1.GCP(Cloud-nativestack)的云原生技术栈介绍2.主流云厂商的云原生技术栈(Cloud-nativestack)及其核心组件对比3.主流云平台(AWS、华为云、阿里云、GoogleCloud等)的大数据及人工智能技术栈及其核心组件的深度解析目前项目要用到大数据及AI,于是在网上研究了一下各大平台的技术栈及其核心组件,现分享一下,包括AWS、华为云、阿里云、Goo
- 【华为OD机考真题】- 最大时间(B卷-100分)(Java)
bug菌¹
华为odjavapython华为OD机考真题华为OD最大时间
本文收录于「2025华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!!提醒:拒绝一切代考/替考,违法必究!本人所写题库均搜集于互联网。 订阅福利:一次订阅,可永久免费阅读,提供在线答疑解
- Python Django入门(创建应用程序)
钢铁男儿
Python从入门到精通pythondjangosqlite
在本章中,你将学习如何使用Django(http://djangoproject.com/)来开发一个名为“学习笔记”(LearningLog)的项目,这是一个在线日志系统,让你能够记录所学习的有关特定主题的知识。我们将为这个项目制定规范,然后为应用程序使用的数据定义模型。我们将使用Django的管理系统来输入一些初始数据,再学习编写视图和模板,让Django能够为我们的网站创建网页。Django
- 【Django】教程-4-一个增删改查的Demo
唐古乌梁海
Djangodjango
【Django】教程-1-安装+创建项目+目录结构介绍【Django】教程-2-前端-目录结构介绍【Django】教程-3-数据库相关介绍9.demo一个包含前后端的,增删查demo9.1前端代码layout.html定义父级,需要被其他前端页面继承的html模板,JQ跟bootstrap使用cdn的就可以!我的为本地的{%loadstatic%}{%blocktitle%}{%endblock%
- 【Django】教程-1-安装+创建项目+目录结构介绍
唐古乌梁海
pythondjango
欢迎关注我!后续会更新django教程。一周2-3更,欢迎跟进,本周会更新第一个Demo的单独一个模块的增删改查【Django】教程-4-一个增删改查的Demo【Django】教程-2-前端-目录结构介绍【Django】教程-3-数据库相关介绍1.项目创建1.1安装Djangopython环境下载地址:https://www.python.org/downloads/windows/pipinst
- 【后端】【Django DRF】Django ORM 详解:一对一、一对多、多对多
患得患失949
面试考题专栏(前后端)django知识ormdjango数据库sqlite
DjangoORM详解:一对一、一对多、多对多在Django的ORM(对象关系映射)中,数据库的表之间通常需要建立关联关系。最常见的三种关系是:一对一(OneToOneField):一个对象只能对应另一个对象,例如一个用户只能有一个个人资料。一对多(ForeignKey):一个对象可以关联多个对象,但多个对象只能属于同一个,例如一个作者可以写多本书,但一本书只能有一个作者。多对多(ManyToMa
- Django-Vue-Admin项目指南
樊元隽
Django-Vue-Admin项目指南django-vue-admin基于RBAC模型权限控制的中小型应用的基础开发平台,前后端分离,后端采用django+django-rest-framework,前端采用vue+ElementUI,移动端采用uniapp+uView(可发布h5和小程序).项目地址:https://gitcode.com/gh_mirrors/dj/django-vue-ad
- Django-Quill-Editor 项目教程
翁晔晨Jane
Django-Quill-Editor项目教程django-quill-editordjango-quill-editormakesQuill.jseasytouseonDjangoFormsandadminsites项目地址:https://gitcode.com/gh_mirrors/dj/django-quill-editor1.项目的目录结构及介绍django-quill-editor/├
- Django-Vue3-Admin 项目教程
缪阔孝Ruler
Django-Vue3-Admin项目教程django-vue3-adminDjango-Vue3-AdminisacomprehensivebasicdevelopmentplatformbasedontheRBAC(Role-BasedAccessControl)modelforpermissioncontrol,withcolumn-levelgranularity.Itfollowsafr
- gatsby_从零到部署:我如何使用Netlify + Gatsby从零开始创建静态网站
cumian8165
javapython大数据编程语言数据库
gatsbyAftermyfirstyearworkingasafrontendwebdeveloper,Igottheideatohavemyownpersonalsite.It’dbeaplatformtoshowcasemywork,sharecontent,andserveasacreativeoutletformeoutsideofwork.Here,I’llwalkyouthrough
- 使用el-upload实现文件的自动上传,并根据业务需要进行改造。
apple_pingwan
vuewindows前端vue.js
根据业务需要,先将业务B所需文件上传至服务器,并将文件记录保存到业务数据库中;业务A要根据条件找到业务B中的文件,并展示,且可将该记录删除、将该文件上传至服务器。基于该情况,要将自动上传的el-upload进行改造。在改造过程中遇到了一些问题,也对el-upload有了更进一步的了解。文件上传(支持文件格式:.doc.docx.pdf.xls.xlsx.wps.ppt.pptx.jpg.jpeg.
- maxun爬虫工具docker搭建
想做后端的小C
网络安全docker容器运维
思路来源开源无代码网络数据提取平台Maxun先把代码克隆到本地(只有第一次需要)gitclonehttps://github.com/getmaxun/maxun.git转到maxun目录cdmaxun启动容器docker-compose--env-file.envup-d成功启动六个容器网址http://localhost:8080目前还无法运行爬虫程序,可能是因为后端nginx.conf或数据
- 设计模式——策略模式
骊恨
设计模式策略模式
1.策略模式简介1.1定义:原文:Defineafamilyofalgorithms,encapsulateeachone,andmaketheminterchangeable.翻译:定义一系列算法,将它们一个个封装起来,并且使它们之间可以相互替换。策略模式也称为政策模式(Policy),让算法独立于使用它的客户而变化,且算法的变化不会影响到使用算法的客户。1.2开闭原则(OCP,OpenClos
- 前缀和 ( C++ )
卷纸要用清风的
C++
#include#includeusingnamespacestd;voidupData(inta[],intprefix[],intnum,intindex,intn){intold=a[index];a[index]=num;for(inti=index;i
- SQL 复杂查询和性能优化
不辉放弃
sql数据库
一、掌握复杂查询的核心技能1.理解SQL执行顺序SQL语句的逻辑执行顺序(非书写顺序):FROM→JOIN→WHERE→GROUPBY→HAVING→SELECT→DISTINCT→ORDERBY→LIMIT关键点:每一步的结果会传递给下一步,影响优化逻辑。2.多表连接(JOIN)类型:INNERJOIN(默认)LEFT/RIGHTJOINFULLOUTERJOIN(部分数据库不支持)CROSSJ
- flutter 获取设备的唯一标识
肥肥呀呀呀
flutter
插件device_info_plus|FlutterpackageFlutterpluginprovidingdetailedinformationaboutthedevice(make,model,etc.),andAndroidoriOSversiontheappisrunningon.https://pub.dev/packages/device_info_plus安卓androidInfo
- Flutter常用功能教程:新手入门指南
网络安全天地
httpudphttpswebsocket网络安全网络协议tcp/ip
Flutter常用功能教程本文提供了详细的Flutter常用功能教程,涵盖环境搭建、布局与UI设计、导航与路由管理、状态管理入门、数据获取与网络请求以及保存用户数据等内容,帮助开发者快速上手Flutter开发。Flutter简介及环境搭建Flutter是什么Flutter是Google开发的一套开源UI软件开发工具包,支持创建高性能、美观的原生应用程序,可在iOS和Android上运行。Flutt
- 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