- Django REST Framework中的序列化器类和视图类
八九燕来
djangorestfulsqlite
序列化器类一、Serializer序列化类Serializer是DRF的序列化器基类,提供基本功能,使用Serializer类需要自己定义字段名称和类型。BookSerializer(Serializer):name=serializers.CharField()price=serlializers.IntegerField()date=serlializers.DateField()Serial
- 用Python写一个天气预报小程序
穿梭的编织者
Python脚本python小程序
一、界面效果二、完整代码importtkinterastkfromtkinterimportttkimportrequestsimportjsonfromdatetimeimportdatetimefromPILimportImage,ImageTkimportiofromttkbootstrapimportStyleclassWeatherApp:def__init__(self,root):s
- Docker 入门指南:如何在 Ubuntu 上安装和使用 Docker
天青色等烟雨°
linuxdockerubuntu
Docker入门指南:如何在Ubuntu上安装和使用Docker安装Dockerdocker的配置安装k8s安装Docker官方Ubuntu存储库中提供的Docker安装软件包可能不是最新版本。Ubuntu官方的版本库中并不一定是Docker最新的安装包,为了保证是最新版,我们从Docker官方库来安装。首先,更新现有的软件包列表:$sudoaptupdate注意:如果无法更新,可能是你的软件源指
- 如何更新 Oh My Zsh
獨梟
全面配置linux运维服务器
OhMyZsh会定期更新,提供新功能、优化和Bug修复。如果你想获取最新版本,可以手动更新。方法1:使用官方更新命令(推荐✅)OhMyZsh提供了内置的更新命令,非常简单高效。1.1运行更新命令omzupdate或者upgrade_oh_my_zsh1.2重启Zsh使更新生效execzsh✅这个方法最推荐,因为它:自动拉取最新的OhMyZsh版本更新所有插件不会覆盖你的.zshrc配置方法2:手动
- Spring Boot中@Valid 与 @Validated 注解的详解
misschen888
springboot后端java
SpringBoot中@Valid与@Validated注解的详解引言@Valid注解功能介绍使用场景代码样例@Validated注解功能介绍使用场景代码样例@Valid与@Validated的区别结论引言在SpringBoot应用中,参数校验是确保数据完整性和一致性的重要手段。@Valid和@Validated注解是SpringBoot中用于参数校验的两个核心注解。本文将详细介绍这两个注解的用法
- laravel中 firstOrNew(), firstOrCreate(), updateOrInsert(), updateOrCreate() 方法的区别和实现原理
Amber_37
laravelphp
在Laravel中,firstOrNew,firstOrCreate,updateOrInsert,和updateOrCreate是用于处理数据库记录的常用方法,每个方法有其特定的用途和行为。下面是它们的主要区别和工作原理:1.firstOrNew目的:该方法主要用于查找数据库中与给定属性相匹配的第一条记录,如果找不到,则创建一个新的模型实例(但不会立即保存到数据库)。返回值:返回一个Eloque
- mysql 查询后, 不存在则插入记录, 但是在高并发时容易导致重复插入, 有什么解决办法吗
Amber_37
mysql数据库
在高并发场景下,为了避免因并发请求导致的重复插入问题,可以采用以下几种策略:使用INSERT...ONDUPLICATEKEYUPDATE:利用MySQL提供的ONDUPLICATEKEYUPDATE语句,可以在尝试插入数据时,如果发现唯一键(如主键或唯一索引)冲突,即数据已存在,自动转为执行更新操作。确保无论多少并发请求同时到达,只要涉及的关键字段值相同,只会执行一次插入或更新操作。INSERT
- vscode 配置golang开发环境
Amber_37
vscodegolangide
vscode配置golang开发环境在go1.20环境中需要指定工具的安装版本goinstallgolang.org/x/tools/
[email protected]/go-delve/delve/cmd/
[email protected]使用goinsertorupdate安装工具会报错go版本太低,而很多时候为了项目稳定或风险太高,我们不太希望升级到go最新版解决办法:在S
- 一些时间方法
院人冲冲冲
vue.js前端javascript
1.禁用之前的时间timeDate;//比较时间戳},isDate(value,time){constvalueDate=newDate(value);//将value转换为Date对象consttimeDate=newDate(time);//将time转换为Date对象returnvalueDate>=timeDate;//比较时间戳},getCurrentTime(){constnow=ne
- 【JS性能优化黑魔法】从8秒到0.8秒的奇迹の逆袭(祖传代码大改造)—— 让老板跪下喊爸爸的极致优化指南
vvvae1234
github
️第一章:渲染の禁忌仪式(重绘与回流)场景:购物车动画卡成PPT//菜鸟写法(每秒60次全局地震)setInterval(()=>{cartItems.forEach(item=>{item.style.top=`${Math.sin(Date.now())*10}px`;//持续触发回流});},16);//老司机优化(GPU加速の奥义)functionsmoothAnimation(){req
- 【后端】【django】Django DRF `@action` 详解:自定义 ViewSet 方法
患得患失949
django知识面试考题专栏(前后端)djangosqlitepython
DjangoDRF@action详解:自定义ViewSet方法在DjangoRESTFramework(DRF)中,@action装饰器用于为ViewSet添加自定义的API端点。相比于update、create等默认方法,@action允许我们定义更加清晰、语义化的API访问路径,使接口更加易读且符合RESTful设计原则。1.@action的作用@action主要用于自定义API端点,避免滥用
- 25年大数据开发省赛样题第一套,离线数据处理答案
Tometor
大数据sparkscala
省赛样题一,数据抽取模块这一模块的作用是从mysql抽取数据到ods层进行指标计算,在题目中要求进行全量抽取,并新增etl-date字段进行分区,日期为比赛前一天importorg.apache.spark.sql.SparkSessionimportjava.util.PropertiesobjectTask1{defmain(args:Array[String]):Unit={valspark
- shell脚本 重启python脚本
mzgong
python
#!/bin/bashwhiletrue#循环检测脚本是否停止doprocnum=$(ps-ef|grep"run.py"|grep-vgrep|wc-l)#记录正在运行run.py的数量echo"ps-efgrepreturn:"${procnum}#信息输出if[[${procnum}==0]];then#如果run.py正在运行数量等于0,脚本中断,需要重启filename=$(date+%
- C语言学习笔记-进阶(17)预处理详解
John.Lewis
c语言学习笔记
1.预定义符号C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。__FILE__//进⾏编译的源⽂件__LINE__//⽂件当前的⾏号__DATE__//⽂件被编译的⽇期__TIME__//⽂件被编译的时间__STDC__//如果编译器遵循ANSIC,其值为1,否则未定义举个例子:printf("file:%sline:%d\n",__FILE__,__LINE__);2
- MySQL主从复制架构原理及部署(work)
只想按时下班
Mysqlmysql数据库memcached
文章目录一、原理1、什么是MySQL主从复制2、MySQL主从复制应用场景3、MySQL主从复制架构及原理4、MySQLbinlog日志三种模式二、主从复制配置搭建1、MySQL8二进制安装2、主从复制配置3、测试主从复制三、二进制日志管理说明四、MySQL主从复制常见问题1、从库binlog落后主库binlog?2、主库update,从库迟迟没有更新3、主从复制延时配置(从库配置)4、主从复制故
- Mysql 主从复制架构
百里自来卷
mysql架构数据库
MySQL主从复制(Master-SlaveReplication)是一种常见的数据库架构,广泛用于提高数据库的可扩展性、读写分离以及数据备份和容灾恢复。主从复制架构中,一个MySQL实例作为主库(Master),负责处理所有的写操作,而一个或多个从库(Slave)从主库复制数据,并负责处理读操作。主库(Master):主库负责处理数据库的所有写操作(如INSERT、UPDATE和DELETE),
- 学习面向对象编程之前的准备工作(二)
笺上山河梦
C++学习c++算法开发语言
综述本次学习的所有知识点如下:/**C++struct使用*//**Filename:StructDemo.cpp*AuthorName:xxx*Date:2025.3.10*Email:xxxxxxxxxxxxxx*Function:DemonstrationtohowtousethestructureofC++.*/#include#includeusingnamespacestd;//结构体
- 【MySQL基础-3】SQL语言详解:定义、分类、注意事项与注释
AllenBright
#MySQLmysqlsql
SQL(StructuredQueryLanguage,结构化查询语言)是用于管理和操作关系型数据库的标准编程语言。无论是查询数据、插入新记录、更新数据还是删除数据,SQL都是与数据库交互的核心工具。本文将深入探讨SQL语言的定义、分类、注意事项以及注释的使用,帮助你全面掌握这一强大的数据库操作语言。1.什么是SQL语言?SQL是一种专门用于管理关系型数据库的编程语言。它允许用户执行以下操作:查询
- Flutter中使用image_picker拍照并上传
aiguangyuan
Flutter移动端开发Flutter
1.安装插件配置image_picker插件。dependencies:flutter:sdk:flutterflutter_localizations:sdk:flutterdate_format:^1.0.6flutter_cupertino_date_picker:^1.0.26+2flutter_swiper:^1.1.6fluttertoast:^7.1.6http:^0.12.2flu
- js 时间显示 时间戳转换为时分秒
J总裁的小芒果
javascript开发语言ecmascript
javaimportjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss");Do.getCreateTime().format(formatter);//获取为格式的值//
- vue3 el-form校验 报错formRef.value.validate is not a function
J总裁的小芒果
vue.jselementuijavascript前端vue
这是需要校验的表单【每一行都需要校验】保存在保存按钮中打印formRef.value.validate()是有值的,所以我给它们增加了异步constformData=ref([])construles={name:[{required:true,message:'请输入姓名',trigger:['blur','change']}]}constsaveData=async()=>{constvali
- 4-001:MySQL 中的索引数量是否越多越好?为什么?
盖盖衍上_染染熊_代码集
00-刷题mysql数据库
MySQL中的索引并不是越多越好,索引数量要合理控制!过多索引的影响增加存储开销每个索引都会占用额外的磁盘空间,索引多了,存储成本增加。降低INSERT、UPDATE、DELETE性能任何涉及数据修改的操作,都需要同时更新索引,影响性能。示例:INSERTINTOusers(id,name)VALUES(1,'Tom');,如果users表有多个索引,则插入时每个索引都需要更新,影响插入速度。可能
- docker web镜像制作
chao09_01
docker容器web服务
前后端服务镜像制作与发布1、dockerFile内容编写后端dockerFile内容FROMjava:8#FROMopenjdk:8-jdk#RUNapt-getupdate&&apt-getinstall-yiputils-pingtelnet##设置所属时区ENVTZ=Asia/ShanghaiMAINTAINERhjyCOPY./xxx.jar/xxx.jarENTRYPOINT["java
- 前端及后端实现csv文件下载功能
绝顶少年
前端
方法一、前端内容:consturl=window.URL.createObjectURL(newBlob([res.data]));constlink=document.createElement('a');link.href=url;constfileNameDateTime=getFormattedDateTime();constfilename="用户提现列表"+fileNameDateTi
- @JsonFormat @DateTimeFormat 注解
徐寿春
待整理文档java
@JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-ddHH:mm:ss",timezone="GMT+8")@DateTimeFormat(pattern="yyyy-MM-ddHH:mm:ss")@JsonFormat注解用于在Java对象与JSON数据之间进行序列化和反序列化操作序列化过程时,转化为对应属性的日期时间格式。○s
- 使用 Theos 开发 iOS 应用(IPA)记事本
木木黄木木
c#ios
使用Theos开发iOS应用(IPA)记事本前提条件已越狱的iOS设备已安装Theos已安装OpenSSH(用于远程操作)Windows电脑(可选,用于远程操作)Theos环境搭建Windows环境搭建安装WSL(WindowsSubsystemforLinux)wsl--install安装必要工具sudoapt-getupdatesudoapt-getinstallgitperlbuild-es
- 超详细Python教程——SQL详解之DDL
月流霜
pythonsql数据库
SQL详解之DDL我们通常可以将SQL分为四类,分别是DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)和TCL(事务控制语言)。DDL主要用于创建、删除、修改数据库中的对象,比如创建、删除和修改二维表,核心的关键字包括create、drop和alter;DML主要负责数据的插入、删除、更新和查询,关键词包括insert、delete、update和select;DCL用于授予
- JS内置构造函数有哪些???
全马必破三
javascript开发语言ecmascript
JavaScript内置构造函数是语言本身提供的一些特殊函数,用于创建特定类型的对象。常见的内置构造函数包括Object、Array、String、Number、Boolean、Date、RegExp等。1、Object构造函数(用于创建一个普通对象)常用方法:Object.keys(obj):返回一个包含对象所有自身可枚举属性的键的数组。Object.values(obj):返回一个包含对象所有
- CLR中的marshal_as 介绍
qzy0621
C#C++笔记c++c#
CLR中的marshal_as介绍CLR和CLI的关系CLI(CommonLanguageInfrastructure)CLR(CommonLanguageRuntime)marshal_as介绍marshal_as代码使用示例工程文件说明CLR和CLI的关系CLR和CLI是与.NET技术密切相关的两个概念,它们在编程语言和运行时环境中扮演着重要角色。简单来说,CLI是一种标准,而CLR是该标准的
- 深度剖析Redis:双写一致性问题及解决方案全景解析
寒冰碧海
Redisredis数据库缓存java
在高并发场景下,缓存与数据库的双写一致性是每个开发者必须直面的核心挑战。本文通过5大解决方案,带你彻底攻克这一技术难关!一、问题全景图:当缓存遇到数据库1.1典型问题场景//典型问题代码示例publicvoidupdateProduct(Productproduct){//操作1:更新数据库db.update(product);//操作2:删除缓存redis.del(product.getId()
- 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