- 【力扣(LeetCode)】数据挖掘面试题0013:1264. 页面推荐(泛化后,基于MySQL题解)
言析数智
数据挖掘常见面试题leetcode数据挖掘mysql笔试笔试题
文章大纲一、题目要求:二、模拟数据构建三、题解参考方案朋友关系列表:Friendship+---------------+---------+|ColumnName|Type|+---------------+---------+|user1_id|int||user2_id|int|+---------------+---------+(user1_id,user2_id)是这张表具有唯一值的列
- [netty5: WebSocketServerHandshaker & WebSocketServerHandshakerFactory]-源码分析
idolyXyz
netty5-源码阅读netty
在阅读这篇文章前,推荐先阅读以下内容:[netty5:WebSocketFrame]-源码分析[netty5:WebSocketFrameEncoder&WebSocketFrameDecoder]-源码解析WebSocketServerHandshakerFactoryWebSocketServerHandshakerFactory用于根据客户端请求中的WebSocket版本构造对应的WebSo
- [netty5: WebSocketClientHandshaker & WebSocketClientHandshakerFactory]-源码分析
在阅读这篇文章前,推荐先阅读以下内容:[netty5:WebSocketFrame]-源码分析[netty5:WebSocketFrameEncoder&WebSocketFrameDecoder]-源码解析WebSocketClientHandshakerFactoryWebSocketClientHandshakerFactory是用于根据URI和协议版本创建对应WebSocket握手器(Ha
- [netty5: HttpServerCodec & HttpClientCodec]-源码分析
idolyXyz
netty5-源码阅读netty
在阅读该篇文章之前,推荐先阅读以下内容:[netty5:ChannelHandler&ChannelHandlerAdapter]-源码解析[netty5:HttpObjectEncoder&HttpObjectDecoder]-源码解析HttpServerCodecHttpServerCodec是一个Netty编解码器,结合HttpRequestDecoder和HttpResponseEncod
- CppCon 2015 学习:Beyond Sanitizers
虾球xz
CppCon学习c++开发语言
Sanitizers,一类基于编译时插桩(instrumentation)的动态测试工具,用来检测程序运行时的各种错误。Sanitizers简介基于编译时插桩:编译器在编译代码时自动插入检测代码。动态运行时检测:程序运行时实时检查错误。常见类型:ASan(AddressSanitizer):检测内存相关错误,如越界访问、使用后释放(Use-After-Free)、内存泄漏等。UBSan(Undef
- Esim:简化业务复杂度的Golang业务框架
周琰策Scott
Esim:简化业务复杂度的Golang业务框架esim微服务应用框架项目地址:https://gitcode.com/gh_mirrors/esi/esim项目介绍Esim是一款专注于解决业务复杂度、测试、代码组织和扩展等问题的Golang业务框架。它不提供微服务整套技术体系,如服务治理、服务注册、服务发现等,而是将这些交给了ServiceMesh。Esim默认集成了gin和grpc两个技术框架,
- python profile_python程序之profile分析
操作系统:CentOS7.3.1611_x64python版本:2.7.5问题描述1、Python开发的程序在使用过程中很慢,想确定下是哪段代码比较慢;2、Python开发的程序在使用过程中占用内存很大,想确定下是哪段代码引起的;解决方案使用profile分析分析cpu使用情况可以使用profile和cProfile对python程序进行分析,这里主要记录下cProfile的使用,profile参
- go-carbon v2.6.10发布,轻量级、语义化、对开发者友好的 golang 时间处理库
gocarbontime
carbon是一个轻量级、语义化、对开发者友好的Golang时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日/简化儒略日、波斯历/伊朗历的支持。carbon目前已捐赠给dromara开源组织,已被awesome-go收录,并获得gitee2024年最有价值项目(GVP)和gitcode2024年度G-Star项目,如果您觉得不错,请给个star吧官网:carbo
- Python知识点:如何使用memory_profiler进行内存分析
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候!如何使用memory_profiler进行Python代码内存分析在开发高性能的Python应用程序时,理解和优化内存使用是至关重要的。memory_profiler是一个强大的工具,它可以帮助你监控Python代码的内存使用情况。本文将介绍如何使用memory_profiler来分
- 【Python】memory_profiler
宅男很神经
python开发语言
1.1引用计数与垃圾回收:Python的“贴身管家”与“清洁工”Python,特别是其标准实现CPython,其内存管理的核心是建立在一个优雅而高效的组合机制之上的:以引用计数为主,分代垃圾回收为辅。1.引用计数(ReferenceCounting):主要的内存管家这是CPython内存管理的基石。其原理极其简单:CPython中的每一个对象(一个整数、一个列表、一个自定义类的实例),其内部都维护
- 数据结构之栈实验
lannnn_
学习记录数据结构c语言栈
栈实验实验目的实验环境实验要求实验内容源代码运行结果实验目的掌握栈这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。实验环境CodeBlocks实验要求1.熟悉c语言的语法知识;2.掌握栈的顺序存储结构—顺序栈的定义、构造、获得栈顶元素、入栈、出栈等基本操作;实验内容完成栈的定义、构造、获得栈顶元素、进栈、出栈等函数的编写。要求在主函数中实现对以上操作的调用,编写一个算法判断给定的字符向
- 《力扣》链表 | 19. 删除链表的倒数第 N 个结点 C++题解
一只一只
算法数据结构链表c++leetcode
19.删除链表的倒数第N个结点-力扣(LeetCode)给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]好神奇的解法,有股相对运动的赶脚双指针:a,b(同时指向头节点)1.先让a指针移动n个节点2.然后a,b一起移动,当a移动到末尾的时候,b就恰好移动到倒数第n个数也就是我们通过a指针限制b只能移动(len
- 第一章Pandas快速入门
Hajo_
深入浅出Pandas学习代码pythonpandas
《深入浅出Pandas》第一章代码数据来源:https://www.gairuo.com/file/data/dataset/team.xlsximportnumpyasnpimportpandasaspdfile_path='E:\\Data_python\\anconda_code\\Dive_into_Pandas\\data_files\\'team_path='team.xlsx'tea
- 一文汇总VSCode多光标用法
筑凡
知识杂项vscode光标多光标批量
光标的创建按住alt,鼠标左键单击,在单击位置生成光标/删除光标按住ctrl+alt,单击↑/↓,在每行同一个位置(若某一行较短,则在行尾)生成光标,这个不会删除光标,只会在光标的上下界不断增加新光标按住ctrl+shift+alt,单击↑/↓,在每行的同一个位置(若某一行较短,则在行尾)生成光标/删除光标按住shift+alt+鼠标左键,拖动鼠标即可进行垂直方向上的列选择标红部分为鼠标起止位置c
- 图解操作系统资料 - 小林Coding整理
图解操作系统资料-小林Coding整理去发现同类优质开源项目:https://gitcode.com/欢迎使用小林Coding精心整理的《图解操作系统》资料,版本号为v1.0。本资源文件以直观、易懂的方式,详细介绍了操作系统的基本原理与运作机制。资料概述本压缩包(小林Coding-图解操作系统-v1.0.rar)包含了以下内容:操作系统概述:介绍操作系统的定义、作用、发展历程及分类。进程管理:详细
- 四种微调技术详解:SFT 监督微调、LoRA 微调、P-tuning v2、Freeze 监督微调方法
当谈到人工智能大语言模型的微调技术时,我们进入了一个令人兴奋的领域。这些大型预训练模型,如GPT-3、BERT和T5,拥有卓越的自然语言处理能力,但要使它们在特定任务上表现出色,就需要进行微调,以使其适应特定的数据和任务需求。在这篇文章中,我们将深入探讨四种不同的人工智能大语言模型微调技术:SFT监督微调、LoRA微调方法、P-tuningv2微调方法和Freeze监督微调方法。第一部分:SFT监
- VSCode遇到的一些小毛病(自动保存、运行后光标不再处于编辑区)
1.右键点击RunCode没有触发自动保存1.打开VSCode设置(Ctrl+,)2.搜索:coderunnersave3.勾选你需要的2.运行后光标仍然处于编辑区(容易误输入)1.打开VSCode设置(Ctrl+,)2.搜索:code-runnerpreserveFocus3.取消这个勾选
- c++ python 共享内存
qianbo_insist
音视频和c++java物联网c++c++python开发语言
一、目的是为了c++来读取并解码传递给python,Python做测试非常方便,c++和python之间必须定好协议,整体使用c++来解码,共享内存传递给python二、主类主类,串联decoder,注意decoder并没有直接在显存里面穿透,是解码以后传递给内存,从内存传给python#pragmaonce#define__STDC_CONSTANT_MACROS#defineSDL_MAIN_
- 相机位姿估计:基于四个特征点的精准姿态解算
童嘉航Denley
相机位姿估计:基于四个特征点的精准姿态解算【下载地址】相机位姿估计1根据四个特征点估计相机姿态随文Demo本资源文件提供了一个基于OpenCV的相机位姿估计Demo,主要功能是根据四个特征点来估计相机的姿态。通过该Demo,您可以学习如何使用OpenCV库中的相关函数来实现相机位姿的估计项目地址:https://gitcode.com/open-source-toolkit/df72a项目介绍在计
- Feign 解码异常处理:解决 No Suitable HttpMessageConverter 问题
码傻啦弟
软件开发java开发语言Feignspringboot
一、问题场景与错误解析在使用SpringCloudFeign进行微服务间通信时,常遇到以下典型错误:feign.codec.DecodeException:Couldnotextractresponse:nosuitableHttpMessageConverterfoundforresponsetype[classXxxResponse]andcontenttype[text/plain;char
- vscode remote-ssh 拓展免密访问 linux虚拟机
前置步骤,在linux安装好ssh并且win可以使用密码登录linuxsudoaptinstallopenssh-server-y在win上检查密钥是否存在检查公钥和私钥cat~/.ssh/id_rsa.pubcat~/.ssh/id_rsa如果不存在,重新生成ssh-keygen-trsa-b4096重新执行cat~/.ssh/id_rsa.pub将公钥的内容粘贴到linux下~/.ssh/au
- K8S 集群配置踩坑记录
KKKingWei
kubernetes容器云原生
系统版本:Ubuntu22.04.5-live-server-amd64K8S版本:v1.28.2Containerd版本:1.7.27kubeletlogs====================kuberuntime_sandbox.go:72]"Failedtocreatesandboxforpod"err="rpcerror:code=Unknowndesc=failedtocreatec
- Axure版ArcoDesign 组件库-免费版
AxureMost
axure模板-素材axure产品经理
ArcoDesign元件库是字节系基于ByteDesign升级而来的、能力全面的企业级产品设计系统。以下是对它的详细介绍:链接地址特点丰富的组件和样式:包含各种类型的组件,覆盖了多种交互场景,如通用类、布局类、数据展示类、数据输入类、反馈类、导航类等。同时提供丰富的颜色主题配置,支持自定义,包括基础颜色、字体、阴影等,且支持可视化编辑与实时预览。灵活的布局方案:基于模块化设计,支持响应式设计,便于
- PyTorch torchtune.modules.peft.lora
Yongqiang Cheng
PyTorchPyTorchtorchtunepeft.lora
PyTorchtorchtune.modules.peft.lora1.Sourcecodefor`torchtune.modules.peft.lora`2.`LoRALinear`2.1.`defadapter_params(self)->list[str]`2.2.`defforward(self,x:torch.Tensor)->torch.Tensor`2.3.`defto_empty(
- AtCoder ABC344 A-E题解
seanli1008
#AtCoder题解题解
传送门:ABC344咕了一个周的题解。省流:D>E+不可以总司令专场ohhhhhhhhhhhhhhhhhhhhhhhhhhProblemA:善用STL。#includeusingnamespacestd;intmain(){stringS;cin>>S;inti=S.find('|');j=S.find('|',i+1);coutusingnamespacestd;intmain(){vector
- 在VSCode中搭建ESP32的编译环境详解
承接电子控制项目开发
vscodeide编辑器ESP32环境
在VSCode中搭建ESP32的编译环境,主要可通过两种方式实现:基于乐鑫官方推荐的EspressifIDF插件或使用PlatformIO插件。以下是基于EspressifIDF插件的详细步骤及注意事项:一、环境准备安装必要软件VSCode:从官网下载并安装最新版本12。Python3.8+:建议选择Python3.8或更高版本,安装时需取消勾选“Downloaddebuggingsymbols”
- 七、性能优化
瓜子三百克
Flutter性能优化flutter
目录1.如何检测Flutter应用的性能问题?2.什么是重绘边界(RepaintBoundary)?3.如何避免不必要的重建?4.`const`构造函数在优化中起什么作用?5.如何优化长列表的性能?6.如何减少应用启动时间?1.如何检测Flutter应用的性能问题?核心工具:工具用途使用方式DevTools性能面板分析UI渲染时间、GPU耗时、CPU耗时flutterrun--profile→da
- Zookeeper异常ConnectionLossException: KeeperErrorCode = ConnectionLoss for / 问题解决大全
takmehand
Javajavazookeeper
zookeeper报ConnectionLossException:KeeperErrorCode=ConnectionLossfor异常我的开发环境是Windows开发zookeeper客户端程序,zookeeper集群安装在本地虚拟机上centos7经过自己踩坑和查找博客,发现报此异常有三种原因一是:zookeeper服务没有启动,这是最low的错误二是:centos防火墙未关闭,导致连接不上
- vscode C++环境配置(供自己查阅)
想要躺平的一枚
VSCODEvscode
目录前言一、配置文件1、.vscode(1)c_cpp_properties.json(2)tasks.json(3)launch.json(4)settings.json参考链接:link前言 vscode可以当成一种强大的编辑器,只能够写代码(像VS这种IDE是集成编辑器、编译器,调试等等所有环境一起)。想要运行代码,还需要配置编译器,C++常用的编译器为MinGW,下载后将其配置到系统环境
- VScode 里面使用 python 去直接调用 CUDA
NeRF_er
pythonvscodepytorch
上一个帖子主要分享了如何去将C++程序打包成一个package。我们最后的目的实际上是想把CUDA的程序打包成一个Package,C++程序只是起到了桥梁的作用:首先:CUDA程序和C++的程序一样,都有一个.cu的源文件和一个.h的头文件。我们的文件包含Cpp文件组成,负责当作CUDA和Python的桥梁。还有对应的CUDA的源代码文件和头文件。将这个cpp文件命名成ext.cpp.#inclu
- 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