- 自动化测试 —— Pytest fixture及conftest详解
咖啡加剁椒③
软件测试pytest功能测试软件测试自动化测试程序人生职场和发展
前言fixture是在测试函数运行前后,由pytest执行的外壳函数。fixture中的代码可以定制,满足多变的测试需求,包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在,类似unittest中setup/teardown,但是比它们要强大、灵活很多,它的优势是可以跨文件共享。一、Pytestfixture1.pytestfix
- WordPress Plugin NotificationX插件 SQL注入漏洞复现(CVE-2024-1698)
OidBoy_G
漏洞复现sqlweb安全安全
0x01产品简介WordPress和WordPressplugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。0x02漏洞概述WordPresspluginNotificationX是一个应用插件。2.8.2版本及之前存在安全漏洞,该漏洞源于对用户提供的参数转义不充分以及对现有SQL查询缺乏充分
- MySQL Enterprise Backup (MEB) for MySQL 8.0 深入解析及企业级备份恢复演练
lzyever
MySQLmysql数据库
一、备份恢复核心概念MEB简介MySQLEnterpriseBackup是Oracle提供的专业物理备份工具,专为MySQL8.0及以后版本设计,提供高效且低干扰的在线备份解决方案。它能够实现对InnoDB存储引擎数据的快速备份,并兼容MySQL的诸多高级特性。主要特点在线热备份:MEB在备份期间尽可能减少对数据库活动的阻塞,采用多线程技术并结合InnoDB的元组锁定机制,创建一致性备份。增量备份
- ClickHouse副本节点数据损坏恢复
旺仔_牛奶
ClickHouseclickhouse数据库java
参考链接:https://blog.csdn.net/qq_42082701/article/details/127771766参考链接:https://kb.altinity.com/altinity-kb-setup-and-maintenance/suspiciously-many-broken-parts/#背景CK配置为1分片2副本#配置参数,这里我们将max_suspicious_br
- Vue生命周期
长沙火山
iOS开发vue.js前端javascript
一、生命周期在Vue.js中,组件实例有一个完整的生命周期,包括创建、挂载、更新和销毁等阶段。Vue生命周期钩子函数允许我们在组件不同阶段添加自定义逻辑。以下是Vue生命周期的详细介绍:1.1创建阶段(Creation)beforeCreate在实例初始化之后,数据观测(dataobserver)和事件配置(event/watchersetup)之前被调用。此时实例还未初始化完成,数据和方法均不可
- [转载]ubuntu16.04安装python3.7
廷裕同学
1.安装依赖包sudoapt-getupdatesudoapt-getinstallbuild-essentialpython-devpython-setuptoolspython-pippython-smbussudoapt-getinstallbuild-essentiallibncursesw5-devlibgdbm-devlibc6-devsudoapt-getinstallzlib1g-
- count(*)、count(主键id)、count(字段)和count(1)的区别
追涨杀跌
#MySQLmysqlcount聚合函数
学习丁奇(林晓斌)老师MySQL实战45讲课程后提炼的笔记!!!需要注意的是,下面的讨论还是基于InnoDB引擎的。这里,首先你要弄清楚count()的语义。count()是一个聚合函数,对于返回的结果集,一行行地判断,如果count函数的参数不是NULL,累计值就加1,否则不加。最后返回累计值。所以,count(*)、count(主键id)和count(1)都表示返回满足条件的结果集的总行数;而
- MySQL 中常用的存储引擎
Rcain_R
数据库SQL数据库SQL操作mysql数据库databasejava后端sql
1、MySQL中的存储引擎MySQL支持多种数据库引擎,每种引擎都有其特定的优势和适用场景。1.1InnoDB:这是MySQL的默认数据库引擎。它提供了事务安全(ACID兼容)的表,支持行级锁定和外键约束。InnoDB还具有崩溃恢复能力,对于需要高并发读写和事务支持的应用场景非常适用。默认存储引擎,支持事务处理(ACID特性),具备崩溃恢复能力。支持行级锁定,提高并发性能,尤其是在多用户同时更新同
- list和dict的效率问题
胖虎很可爱
timeit模块timeit模块可以用来测试一小段Python代码的执行速度。classtimeit.Timer(stmt='pass',setup='pass',timer=)Timer是测量小段代码执行速度的类。stmt参数是要测试的代码语句(statment);setup参数是运行代码时需要的设置;timer参数是一个定时器函数,与平台有关。timeit.Timer.timeit(numbe
- vue 3 CDN 模版代码
xiaofei0627
vuevue.js前端javascript
Document***const{createApp,ref,reactive,watch,computed}=VueconstApp={setup(){conststate=reactive({status:'1',name:''})return{state}}}constapp=createApp(App)app.use(ElementPlus)app.mount('#app')
- QT在scrollArea中添加按钮,可滚动
你又食言了哦
qt开发语言c++
添加按钮可滚动,同时设置按钮大小,代码如下ui->setupUi(this);//在UI里面已经拖了一个scrollAreamyWidget=newQWidget(this);//新建一个QWidget放在scrollArea中QVBoxLayout*layout=newQVBoxLayout();//创建一个布局管理器放在QWidget中for(inti=0;iaddWidget(btn);//
- 【Sql】数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别
王果冻ddd
数据库javaoraclesql
目录数据库的三范式?MySQL数据库引擎有?InnoDB与MyISAM的区别数据库的三范式?第一范式:是数据库最基本的要求,列不可再分第二范式:行可以唯一区分,主键约束第三范式:是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。第一范式(1NF):属性不可分割第一范式是数据
- MySQL表锁与行锁
信缘 ꈍ 随缘
mysql数据库java
//MyISAM查看表的情况:showopentables;加锁:locktable表名read(write),表二read(write);释放锁:unlocktables;分析表锁定:showstatuslike'table%';//innoDB事务四个特性:ACID(Atomicity:原子性、Consistent:一致性、Isolation:隔离性、Durable:持久性)并发事务处理带来的
- vue3速查笔记
一只小白菜~
vue笔记vue3vue
文章目录一、创建Vue3.0工程1.使用vue-cli创建2.使用vite创建二、常用CompositionAPI1.拉开序幕的setup2.ref函数3.reactive函数4.Vue3.0中的响应式原理vue2.x的响应式Vue3.0的响应式5.reactive对比ref6.setup的两个注意点7.计算属性与监视1.computed函数2.watch函数3.watchEffect函数8.生命
- vue3学习(更新中)
倒霉娃不要倒霉
vue.js
目录创建一个vue应用编写APP组件main.tsAPP.vuesetupref和reactiverefreactive创建一个vue应用npmcreatevue@latest编写APP组件main.tsimport{createApp}from'vue'importAppfrom'./App.vue'createApp(App).mount('#app')APP.vueappsetup{{nam
- MySQL 主键与索引的联系与区别
AAA非专业划水人士小张
SQL学习mysql数据库学习sql
关系数据库依赖主键主键有两个用途:惟一地标识一行。主键还作为一个可以被外键有效引用的对象。索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。A.主键是什么?比如看书,书的每页都有个页码(对每页来说,它的页码是唯一的),数据表的主键就相当于是这个页码。B.索引是什么?索引相当于书的目录,有了目录我们可以很快的知道这本书的基本内容和结构,
- python安装pyautogui
ciwei24456
Pythonpythonpycharm后端
1、安装使用pip进行安装,pipinstallpyautogui在直接安装的时候会出现如上的错误,由于pygetwindow安装的版本是0.0.4,所以出现了错误ERROR:Completeoutputfromcommandpythonsetup.pyegg_info:ERROR:Traceback(mostrecentcalllast):File"",line1,inFile"C:\Users
- Git基本用法教程
dllmayday
Gitgitelasticsearch大数据
1.Git安装Git(官网:https://git-scm.com/download/)安装之后鼠标右键会自动多出两个选项,这时就代表了安装成功2.git初始化及提交第一次clone使用ssh-keygen-o生成ssh密钥Gitglobalsetupgitconfig--globaluser.name"username"gitconfig--globaluser.email"email@123.
- Vue 3 中的 setup 函数是如何工作的?
奔强的程序
javascript前端vue.js
Vue3中的setup函数是一个新的组件选项,用于使用组合式API定义组件的逻辑。这个函数的引入是为了解决Vue2中随着组件复杂度的增长,选项式的API可能导致代码难以维护和理解的问题。通过setup函数,开发者可以更加灵活地组织和共享代码逻辑,提高代码的可读性和可维护性。setup函数的工作原理执行时机:setup函数是组件生命周期中最早执行的函数,它在beforeCreate和created生
- 每日五道java面试题之mysql数据库篇(一)
中北萌新程序员
java面试题数据库javamysql
目录:第一题.为什么要使用数据库?第二题.数据库三大范式是什么?第三题.mysql有关权限的表都有哪几个?第四题.MySQL的binlog有有几种录入格式?分别有什么区别?第五题.MySQL存储引擎MyISAM与InnoDB区别第一题.为什么要使用数据库?数据保存在内存优点:存取速度快缺点:数据不能永久保存数据保存在文件优点:数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方
- 【Mysql】InnoDB 中 B+ 树索引的注意事项
咖 啡加剁椒
软件测试mysqljava数据库软件测试功能测试自动化测试程序人生
一、根页面万年不动在之前的文章里,为了方便理解,都是先画存储用户记录的叶子节点,然后再画出存储目录项记录的内节点。但实际上B+树的行成过程是这样的:每当为某个表创建一个B+树索引,都会为这个索引创建一个根节点页面。最开始表里没数据,所以根节点中既没有用户记录,也没有目录项记录。当往表里插入用户记录时,先把用户记录存储到这个根节点上。当根节点页空间用完,继续插入记录,此时会将根节点中所有记录复制到一
- vue3+ts实现图片预览功能
前端fighter
vue.jsjavascript前端
首先,需要创建一个Vue组件,用于显示图片和预览图。import{ref}from'vue';exportdefault{props:{imageSrc:{type:String,required:true,},previewSrc:{type:String,required:true,},},setup(props){constpreviewVisible=ref(false);constsho
- Vue-5
-seventy-
#Vuevue.js
Vue3的优势更容易维护(组合式API)更快的速度更小的体积更优的数据响应创建Vue3项目前提环境条件:已安装16.0或更高版本的Node.jsnode-v创建一个Vue应用(下面的指令将会安装并执行create-vue)npminitvue@latestsetup组合式API-setup选项setup函数在什么时候执行?exportdefault{setup(){console.log('set
- B20424--Day 4 JAPAN 2021 BOUNCING BACK
傅东东
Japanwitnessedahardyearin2020duetothepandemicandithadtopostponethehostingtheOlympicgames,butitisbelievedthattheJapan’seconomywillrecover,becausethecompanylikeCanonareadaptingandinnovatingduringtheperi
- MySQL 核心模块揭秘 | 07 期 | 二阶段提交 (1) prepare 阶段
mysqlinnodb事务
二阶段提交的prepare阶段,binlog和InnoDB各自会有哪些动作?本文基于MySQL8.0.32源码,存储引擎为InnoDB。1.二阶段提交二阶段提交,顾名思义,包含两个阶段,它们是:prepare阶段。commit阶段。我们只考虑SQL语句操作InnoDB表的场景,对于用户事务,是否使用二阶段提交,取决于是否开启了binlog。因为MySQL把binlog也看作一个存储引擎,开启bin
- 《The Art of InnoDB》第二部分|第4章:深入结构-磁盘结构-redo log
无码之宗
写一本书《TheArtofInnoDB》交个朋友数据库mysql
4.3redolog目录4.3redolog4.3.1redolog介绍4.3.2redolog的作用4.3.3redologfile结构4.3.4redolog提交逻辑4.3.5redolog持久化逻辑4.3.6redolog检查点4.3.7小结
- mysql 运行参数优化
qq_21305943
mysql数据库
mysql运行参数优化InnoDB设置1.innodb_buffer_pool_size——默认值为128M.这是最主要的优化选项,因为它指定InnoDB使用多少内存来加载数据和索引(data+indexes).针对专用MySQL服务器,建议指定为物理内存的50-80%这个范围.例如,拥有64GB物理内存的机器,缓存池应该设置为50GB左右.如果将该值设置得更大可能会存在风险,比如没有足够的空闲内
- python 环境隔离
Unalian
python开发语言
python环境隔离https://www.freecodecamp.org/chinese/news/how-to-setup-virtual-environments-in-python/如果显示如下错误:WARNING:pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavailabl
- ROS2 学习笔记13:创建 ROS2 包
斯丢彼得大帝
ROS2学习笔记机器人自动驾驶
ROS2学习笔记13:创建ROS2包Background背景1什么是ROS2包2ROS2包的组成3工作空间的包Prerequisites前提Tasks任务1Createapackage2Buildapackage3Sourcethesetupfile4Usethepackage5Examinepackagecontents6Customizepackage.xmlSummary总结Nextstep
- QT c++ 海康红外热像仪
weixin_39926429
QT测控qt开发语言
//本文描述2通道海康通道红外热像仪预览和抓图#include"mainwindow.h"#include"ui_mainwindow.h"MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);userID=-1;previewID=-1;if(initS
- 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