- webpack的SplitChunksPlugin和在路由或组件级别进行拆分
混血哲谈
webpack前端node.js
请问下面内容中提到的SplitChunksPlugin和“在路由或组件级别进行拆分是一种更简单的方法,可用于延迟加载应用的不同部分”在前端项目中如何应用?“”“在大型应用中,延迟加载第三方依赖项并不是常见的模式。通常,第三方依赖项会拆分为单独的供应商软件包,因为它们的更新频率较低,因此可以缓存。您可以详细了解SplitChunksPlugin如何帮助您实现这一点。使用客户端框架时,在路由或组件级别
- taro-vue2 如何使用国密加解密
周亚鑫
tarojavascript开发语言
taro-vue2如何使用国密加解密returnunescape(encodeURIComponent(str)).split("").map(val=>val.charCodeAt());returndecodeURIComponent(escape(String.fromCharCode(...strBuffer)));constsm2=require('miniprogram-sm-cry
- 使用CRACO自定义 Webpack 配置
黄毛火烧雪下
Reactwebpack前端node.js
1、为什么要用CRACO?默认情况下,CRA的Webpack配置是隐藏的,如果你需要修改Webpack,比如:✅CDN配置✅配置alias(路径别名)✅修改Less/Sass变量✅添加Babel插件✅优化Webpack构建(如SplitChunks、CDN加载)✅支持TailwindCSS✅移动端适配启用PostCSS+px转rem如果不用CRACO,你必须运行yarneject/npmrunej
- 使用MarkdownHeaderTextSplitter拆分Markdown文档
scaFHIO
python前端开发语言
在AI驱动的应用中,如聊天机器人或问答系统,处理大型文档时,通过分片技术将文档拆分为更小的单元是必要的步骤。尤其是对于Markdown格式的文件,它们通常由各种层级的标题结构化组织。通过按标题拆分,有利于保留文档的上下文语义一致性。本篇文章将讲解如何使用MarkdownHeaderTextSplitter来实现这一目标。技术背景介绍在将完整的段落或文档进行嵌入时,嵌入过程会考虑文本的整体上下文以及
- 使用CharacterTextSplitter实现文本按字符拆分
bavDHAUO
python
在文本处理任务中,按字符进行拆分是一种简单且有效的方法。本篇文章将介绍如何使用CharacterTextSplitter类对文本进行按字符拆分,并生成适用于下游任务的LangChainDocument对象。技术背景介绍文本拆分是自然语言处理(NLP)中的一个基础步骤,尤其在大文本分块处理、文本摘要等任务中。CharacterTextSplitter是langchain-text-splitters
- 如何绕开浏览器批量下载的限制
露露在前端
前端javascripthtml状态模式学习面试vue.js
前言最近遇到一个需求,需要将批量选择的图片,批量一个个下载。触发单个下载在浏览器中触发下载,我们可以借用a元素来触发。constdownloadFile=async(url:string,name:string)=>{constres=awaitfetch(url);constblob=awaitres.blob();conststrList=url.split('.');consttype=st
- 《Operating System Concepts》阅读笔记:p359-p388
操作系统
《OperatingSystemConcepts》学习第32天,p359-p388总结,总计30页。一、技术总结1.paging(1)定义Acommonmemorymanagementschemethatavoidsexternalfragmentationbysplittingphysicalmemoryintofixed-sizedframesandlogicalmemoryintoblock
- 前端架构师具备什么能力?前端性能优化全链路指南
kerwin_1727
前端架构师具备什么能力前端性能优化
前端性能优化全链路指南——从构建到运行,让你的页面飞起来!一、性能优化全链路概览性能优化不是“一招鲜”,而是从构建时到运行时的全流程优化。以下是核心链路:构建时:减少打包体积(TreeShaking、CodeSplitting)。加载时:加速资源加载(懒加载、预加载)。运行时:提升渲染效率(虚拟列表、WebWorker)。监控与诊断:用工具定位问题(ChromePerformance、Lighth
- 代码随想录算法训练营第六十五天| 图论10
Rachela_z
算法图论
Bellman_ford队列优化算法(又名SPFA)代码随想录importcollectionsdefmain():n,m=map(int,input().strip().split())edges=[[]for_inrange(n+1)]for_inrange(m):src,dest,weight=map(int,input().strip().split())edges[src].append
- 代码随想录算法训练营第六十六天| 图论11
Rachela_z
算法图论
Floyd算法精讲Floyd算法代码很简单,但真正理解起原理还是需要花点功夫,大家在看代码的时候,会发现Floyd的代码很简单,甚至看一眼就背下来了,但我为了讲清楚原理,本篇还是花了大篇幅来讲解。代码随想录if__name__=='__main__':max_int=10005#设置最大路径,因为边最大距离为10^4n,m=map(int,input().split())grid=[[[max_i
- 【蓝桥杯】省赛:连连看(暴力 非AC)
遥感小萌新
蓝桥杯蓝桥杯职场和发展
对角线遍历每个元素的左下、右下对角线,检查是否值相等n,m=map(int,input().split())A=[]foriinrange(n):ls=list(map(int,input().split()))A.append(ls)cnt=0foriinrange(n):forjinrange(m):#zuoxiaforpinrange(1,min(n-1-i+1,j+1)):ifA[i+p]
- 【蓝桥杯】省赛:神奇闹钟
遥感小萌新
蓝桥杯蓝桥杯职场和发展
思路python做这题很简单,灵活用datetime库即可codeimportosimportsys#请在此输入您的代码importdatetimestart=datetime.datetime(1970,1,1,0,0,0)for_inrange(int(input())):ls=input().split()end=datetime.datetime.strptime(ls[0]+ls[1],
- dhtmlxGantt 甘特图 一行展示多条数据
怡宝丶加冰
甘特图
效果如图:后台拿到数据处理之后如图:含义:如上图所示,如果一行需要展示多个需要给父数据的那条添加render:split属性,子数据的parent为父数据的Id即可切记父数据的id别为0为0时会出现错乱因为有些小伙伴提出分段展示的数据结构还是有点问题,下面展示一个完整的demoimport{gantt}from'dhtmlx-gantt';import"dhtmlx-gantt/codebase/
- 构建高效RAG系统的常用策略
背太阳的牧羊人
RAG+langchainRAG优化方法人工智能RAGRAG优化自然语言处理数据处理
示例代码:代码1cleaning.py:defclean_text(text:str)->str:text=re.sub(r"[^\w\s.,!?]","",text)text=re.sub(r"\s+","",text)returntext.strip()代码2chunking.py:fromlangchain.text_splitterimportRecursiveCharacterTextS
- 【人工智能】【Python】在Scikit-Learn中使用决策树算法(ID3和CART)
SmallBambooCode
机器学习人工智能python算法scikit-learn决策树机器学习ai
importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.treeimportDecisionTreeClassifier,plot_tree#加载数据集iris=load_iri
- 洛谷 P5534 【XR-3】等差数列 python
阿于阿于
xr
这题不用向下取整//就会错,不太能理解为什么...感觉对结果好像没什么影响啊a1,a2,n=map(int,input().split())d=a2-a1an=a1+d*(n-1)s=(a1+an)*n//2print(s)
- Python正则表达式(re模块)
qq742234984
python正则表达式mysql
Python正则表达式(re模块)概述正则表达式Python正则表达式re模块re.match方法常用的匹配规则-匹配字符常用的匹配规则-匹配字符数量常用的匹配规则-原生字符串常用的匹配规则-匹配开头结尾常用的匹配规则-分组匹配re.compile方法re.search方法re.findall方法re.sub方法re.split方法贪婪模式与非贪婪模式概述案例概述正则表达式英文名为RegularE
- 算法刷题汇总 python版本
lanlinbuaa
python算法leetcode
OJ在线编程常见输入输出练习牛客网练习链接:https://ac.nowcoder.com/acm/contest/5657#question1.读取行数未知方法一:使用forlineinsys.stdinimportsysforlineinsys.stdin:a=line.split()#split()默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等print(int(a[0])+i
- hive split 函数转义问题
进一步有进一步的欢喜
HiveSQL精进系列大数据
语法split(strstring,regexstring)--使用regex分割字符串str基本用法selectsplit('a,b,c,d',',')fromtemp_cwh_test;--分割--结果为数组>["a","b","c","d"]截取字符串中某个值selectsplit('a,b,c,d',',')[0]fromtemp_cwh_test;--提取第1个值>a特殊字符的处理针对特
- 算法手撕面经系列(1)--手撕多头注意力机制
夜半罟霖
算法python深度学习
多头注意力机制 一个简单的多头注意力模块可以分解为以下几个步骤:先不分多头,对输入张量分别做变换,得到Q,K,VQ,K,VQ,K,V对得到的Q,K,VQ,K,VQ,K,V按头的个数进行split;用Q,KQ,KQ,K计算向量点积考虑是否要添因果mask利softmax计算注意力得分矩阵atten对注意力得分矩阵施加Dropout将atten矩阵和VVV矩阵相乘再过一道最终的输出变换代码 给出一个d
- 雷林鹏分享:Ruby 命令行选项
weixin_30839881
ruby
Ruby命令行选项Ruby一般是从命令行运行,方式如下:$ruby[options][.][programfile][arguments...]解释器可以通过下列选项被调用,来控制解释器的环境和行为。选项描述-a与-n或-p一起使用时,可以打开自动拆分模式(autosplitmode)。请查看-n和-p选项。-c只检查语法,不执行程序。-Cdir在执行前改变目录(等价于-X)。-d启用调试模式(等
- Ruby学习之命令行选项&环境变量
luyaran
原创Ruby学习之路Ruby命令行选项环境变量
这个ruby文件一般呢都是通过命令行来运行的,语法格式如下:ruby[options][.][programfile][arguments...]解释器可以通过下列选项被调用,来控制解释器的环境和行为,来看下具体数据:选项描述-a与-n或-p一起使用时,可以打开自动拆分模式(autosplitmode)。请查看-n和-p选项。-c只检查语法,不执行程序。-Cdir在执行前改变目录(等价于-X)。-
- 基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[5]-高阶实战微调
汀、人工智能
LLM工业级落地实践LLM技术汇总langchain人工智能大模型推理大模型微调p-tuningfastchatRAG
基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[5]-高阶实战微调1.推荐的模型组合在默认的配置文件中,我们提供了以下模型组合LLM:Chatglm2-6bEmbeddingModels:m3e-baseTextSplitter:ChineseRecursiveTextSplitterKb_dataset:faiss我们推荐开发者根据自己的业务需求进行模型微调,如果不需
- Python写一个脚本——30行代码——1秒实现PDF任意页码拆分
穿梭的编织者
Python精选pdfpython
一、引入库importosfromPyPDF2importPdfReader,PdfWriter二、定义拆分方法defsplit_pdf(input_path,output_dir,ranges):ifnotos.path.exists(output_dir):os.makedirs(output_dir)withopen(input_path,'rb')asfile:pdf=PdfReader(
- Oracle RAC 三种心跳机制
数据库急诊日记
故障处理oracle数据库databaselinuxjavapythonc语言
在OracleRAC(RealApplicationClusters)中,心跳(Heartbeat)是集群节点间用于检测存活状态的核心机制,确保节点间的通信正常并避免脑裂(SplitBrain)问题。以下是RAC的三种关键心跳机制及其作用:1.网络心跳(NetworkHeartbeat)作用:通过私有网络互联(PrivateInterconnect)实时检测节点间的通信状态。工作原理:每个节点周期
- Java字符串以“.“分割
slient_love
软件开发
今天开发中需要对图片地址进行拼接,使用字符串分割函数split()进行处理,发现数组为空:Stringtemp=image[i];String[]str=temp.split(".");在百度之后发现,需要使用转义字符。测试成功~String[]str=temp.split("\\.");注意哦,在正则表达式中,小数点指的是任意字符,因此不能直接用".“来匹配小数点,需要使用”\\."来匹配小数点
- Bert的使用
巨鹿..
深度学习记录bert人工智能深度学习
一、Data.py#data负责产生两个dataloaderfromtorch.utils.dataimportDataLoader,Datasetfromsklearn.model_selectionimporttrain_test_split#给X,Y和分割比例,分割出来一个训练集和验证机的X,Yimporttorchdefread_file(path):data=[]label=[]with
- 使用CharacterTextSplitter进行文本分割的实战指南
bBADAS
python
在处理长文本时,将其切割成较小的片段是常见的需求,尤其是在自然语言处理任务中。CharacterTextSplitter是一个强大的工具,用于通过字符分隔符对文本进行分割,本文将深入介绍如何使用它进行文本处理。技术背景介绍当面对一份冗长的文本时,比如总统演讲稿、法律文档等,我们常常需要将其拆分成便于处理的小段。CharacterTextSplitter正是为此而生的一个轻量级工具,专门用于基于特定
- df.explode() 及等价写法
Cheer-ego
Coding随手记pythonpandas
数据场景以下面的DataFrame为例,每行数据都有多个site,以、分隔我想把数据分成多行,即一个query对应一个site,效果如下。如何实现?代码写法1:df.explode()#将site列的字符串按、拆分成列表df['site']=df['site'].str.split('、')#使用explode方法将列表元素展开成多行df_exploded=df.explode('site')注意
- Hadoop的mapreduce的执行过程
画纸仁
大数据hadoopmapreduce大数据
一、map阶段的执行过程第一阶段:把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。默认Splitsize=Blocksize(128M),每一个切片由一个MapTask处理。(getSplits)第二阶段:对切片中的数据按照一定的规则读取解析返回对。默认是按行读取数据。key是每一行的起始位置偏移量,value是本行的文本内容。(TextInputFormat)第三阶段:调用Mapp
- 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