- [leetcode] 24. 两两交换链表中的节点
会飞的大鱼人
leetcode题解leetcode链表算法数据结构dfsjava
文章目录题目描述解题方法方法一:数组存储java代码复杂度分析方法二:递归java代码复杂度分析方法三:迭代java代码复杂度分析相似题目题目描述给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:he
- python 获取字典值
adixuan8152
python
一、Python中的字典遍历方法:info={'name':'xiaoming','sex':'nan','age':20,'id':1}info2={'name':'hhh','sex':'nv','addr':'beijign'}第一种方法:#直接循环字典,循环的是字典的key,如果想循环的时候同时获取到key和value,那么就要用.items()方法fork,vininfo.items()
- 三星笔记备份指南【常见问题+介绍3种方法】
Coolmuster
三星手机安卓笔记android
SamsungNotes是众多可用应用程序之一,但它对于记笔记、画草图和掌握重要信息特别有用。但如何保护这些笔记的问题经常出现。我们将在这个内容丰富的教程中回答有关SamsungNotes的一些常见问题,并提供高效备份的分步说明。阅读以了解它们!第1部分:有关SamsungNotes问题的简要解答为了提供全面知识的基础,让我们在详细了解SamsungNotes备份之前先解决这些基本问题:Q1.三星
- MYSQL数据库(二)
python小桦
数据库mysqloracle
SQL分类:分类全称解释DDLDataDefinitionLanguage数据定义语言,用来定义数据库对象(数据库,表,字段)DMLDataManipulationLanguage数据操作语言,用来对数据库表中的数据进行增删改DQLDataQueryLanguage数据查询语言,用来查询数据库中表的记录DCLDataControlLanguage数据控制语言,用来创建数据库用户,控制数据库的访问权
- MySQL 进阶:运维与架构 - 从主从复制到链式复制
墨夶
数据库学习资料1mysql运维架构
MySQL进阶:运维与架构-从主从复制到链式复制在MySQL数据库的高可用性和扩展性架构中,主从复制是一种常见的技术手段。通过主从复制,可以实现数据的备份、故障恢复、读写分离等功能。然而,随着业务规模的扩大和复杂度的增加,单一的主从复制架构可能无法满足更高的需求。因此,链式复制作为一种扩展形式,逐渐成为数据库架构师们关注的重点。本文将详细介绍从主从复制到链式复制的演进过程,以及如何实现和管理链式复
- 掌握Gradle代理配置:加速你的构建过程
2401_85743969
深度学习人工智能数据库
掌握Gradle代理配置:加速你的构建过程在企业开发环境中,访问外部网络资源时经常需要通过代理服务器。Gradle作为Java项目自动化构建工具,提供了灵活的代理配置选项,以确保即使在代理环境下也能顺畅地进行依赖管理和项目构建。本文将详细介绍如何在Gradle中配置代理服务器,帮助你加速构建过程。一、代理服务器概述代理服务器充当客户端和目标服务器之间的中介,它可以用于访问控制、数据加密、缓存数据等
- Linux 文件权限详解
久绊A
#Linux服务器linux运维
目录前言查看文件权限修改文件权限符号方式数字方式前言Linux文件权限是系统中非常重要的概念之一,用于控制对文件和目录的访问。权限分为读(Read)、写(Write)、执行(Execute)三个部分,分别表示对文件的读取、修改和执行操作的权限。文件权限可以分为三类用户:文件所有者(Owner)、文件所属组(Group)、其他用户(Others)。查看文件权限可以使用ls-l命令来查看文件的详细权限
- MySQL 进阶:运维与架构 - 延迟复制
墨夶
数据库学习资料1mysql运维架构
MySQL进阶:运维与架构-延迟复制在MySQL的主从复制架构中,延迟复制(DelayedReplication)是一种特殊的复制策略,它允许从服务器(Slave)在接收到主服务器(Master)的二进制日志事件后,延迟一段时间再执行这些事件。这种机制在多种场景下都非常有用,例如,当需要在从服务器上保留旧的数据版本以供审计或备份时,或者当需要在从服务器上进行一些非实时的数据分析时。本文将详细介绍M
- 简单线性插值去马赛克算法的Python实现
大DA_辉
ISP图像处理_pythonpython计算机视觉人工智能
在图像处理领域中,去马赛克(Demosaicing)是一项关键技术,用于从单色彩滤波阵列(CFA)图像恢复全彩图像。本文将介绍一种简单的线性插值去马赛克算法,并将其从MATLAB代码转换为Python代码。最终结果将展示如何从Bayer格式的图像数据恢复出RGB全彩图像。什么是马赛克图像?马赛克图像是一种通过在传感器上覆盖彩色滤光片阵列(CFA)生成的单通道图像。最常见的CFA模式是Bayer模式
- vue3.0如何快速封装自定义指令!
web网站装修工
vue.jsjavascript前端node.js前端框架vueelementui
一、输入框自动获得焦点//定义自定义指令v-focusconstvFocus={//当被绑定的元素插入到DOM中时……mounted(el){//聚焦元素el.focus();}};全局注册指令app.directive('focus',vFocus);使用:二、只能输入数字constvOnlyNumber={mounted(el){//当元素挂载时设置事件监听器el.addEventListen
- pythonnumpy库离线安装_linux Python2.7 离线安装pip、numpy、scipy、sklearn等
weixin_39974932
服务器是离线的,只能离线安装安装pip1.先安装setuptools下载地址:https://pypi.python.org/pypi/setuptools#downloads将下载后的文件解压,进入到解压后的文件所在的目录执行命令:pythonsetup.pyinstall2安装pip下载地址:https://pypi.python.org/pypi/pip#downloads将下载后的文件解压
- C#html生成pdf之wkhtmltopdf及参数说明
Mick_小马哥
C#WEBc#htmlpdf
实现方法#regionHTML生成PDF//////HTML生成PDF//////页面URL如:http://127.0.0.1/index.html///保存地址如:/upload/pdf/123.pdf///publicstaticboolHtmlToPdf(stringurl,stringpath){if(string.IsNullOrEmpty(url)||string.IsNullOrE
- spring boot 服务使用过程常见bug 解决
寅灯
springboot相关springboot
springboot服务使用过程常见bug今天开始持续汇总:1、【Springboot端口号占用】Webserverfailedtostart.Portxxxxxwasalreadyinuse.检查此端口号:tasklist|findstr"50010"netstat-ano|findstr"50010"cmd命令查看端口号占用情况,例如查看端口50010,可以看出进程号为1572;cmd中通过命
- OpenCV计算机视觉 08 图像的旋转
伊一大数据&人工智能学习日志
OpenCV计算机视觉人工智能计算机视觉opencv
图像的旋转下面是一张小猪佩奇的照片,请进行顺时针90度,逆时针90度,180度旋转方法一:使用了NumPy库的np.rot90()函数来实现图像的旋转np.rot90(img,k=-1)表示将输入的图像img顺时针旋转90度,np.rot90(img,k=1)表示将图像逆时针旋转90度。importcv2importnumpyasnp#导入原图img=cv2.imread('小猪佩奇.png')
- matlab代码实现了对一幅沥青路面图像(可替换为其他图像)的处理,包括图像的读取、预处理(灰度化、对比度增强、低帽变换、滤波去噪等)
pk_xz123456
MATLAB算法matlab开发语言
%清除工作区和命令窗口clear;clc;closeall;%读取图像image_path='7876.jpg_wh860.jpg';%请将此路径替换为你的沥青路面图像的实际路径image1=imread(image_path);%图像预处理%1.灰度化image
- 学习笔记040——如何定时备份服务器中的数据库?
上下求索.
MySQLLinuxmysql服务器
目录1、编写备份脚本:2、创建crontab定时任务需求前景:Ubuntu系统的服务器中,需要定时备份MySQL数据库中的数据。确保数据能够得到安全保障。我的方法:1、写一个备份数据库的脚本2、利用Ubuntu的crontab每日定时执行脚本。下面是我的实现方式:1、编写备份脚本:#!/bin/bash#设置数据库名,用户和密码DB_NAME="数据库名"DB_USER="账号"DB_PASSWO
- Openstack架构构建及详解(5)--Neutron组件(1)
2401_84024576
程序员openstack架构ruby
5、验证[root@controller~]#sourceadmin-openrc.sh列出加载的扩展模块,确认成功启动neutron-server进程。[root@controller~]#neutronext-list±----------------------±----------------------------------------------+|alias|name|±-----
- 已解决RNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python
I'mAlex
pipsslpython
pip升级报错:WARNING:pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavailable.Lookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleRequirementalreadysatisfied:pipine:\an
- 学习笔记081——如何备份服务器中MySQL数据库数据?
上下求索.
MySQLLinux数据库学习笔记
方法:可以通过编写sh脚本的方式,结合Linux中的crontab定时任务来实现定时备份数据的功能。sh脚本如下:#!/bin/bash#要备份的数据库DB_NAME="wms"#数据库账号DB_USER="root"#数据库密码DB_PASSWORD="123456"#数据备份存放目录BACKUP_DIR="/home/htl/backup"mkdir-p$BACKUP_DIR#备份文件名BAC
- FPGA-全局时钟缓冲IBUFG BUFG IBUFGDS ODDR2
kelinnn
FPGAfpga嵌入式buffer
学习内容全局时钟缓冲,输入缓冲,输出缓冲开发环境xilinxspartan6、ISE14.7、modelsim10.5写在前面的话当你用ISE14.7时可能会出现如下的报错Thisdesigncontainsaglobalbufferinstance,,drivingthenet,,thatisdrivingthefollowing(first30)non-clockloadpins.Thisde
- 隐语课程 隐语架构概览学习笔记
皓月雪
学习笔记
隐语架构包含:产品层、算法层、计算层、资源层和硬件层隐语产品:定位:通过可视化产品,降低终端用户的体验和演示成本。通过模块化API降低技术集成商的研发成本。人群画像:作为隐语的直观入口,隐语保护计算从业者均应该关注产品:SecretPad:轻量化安装、快速验证POC、可定制集成;多部署形态:中心模式、P2P模式全栈产品:MPC、TEE、SCQLSecretNote:Notebook形式、交互式建模
- 数字图像的运算(3)
vsropy
matlab计算机视觉图像处理算法
一、图像的平移closeall;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量clearall;clc;I=imread('lenna.bmp');%输入图像a=50;b=50;%设置平移坐标J1=move1(I,a,b);%移动原图像a=-50;b=50;%设置平移坐标J2=move1(I,a,b);%移动原图像a=50;b=-50;%设置平移坐标J3=move1(I,a,b);
- FPGA 时钟树缓存布局布线
cckkppll
fpga开发
时钟树缓存布局布线在以下阶段,Vivado布局器确定MMCM/PLL,全局时钟缓存和时钟根的位置,同时遵守物理XDC约束:1.I/O和时钟布局布局器根据连接规则和用户约束布局I/O缓存和MMCM/PLL。布局器将时钟缓存分配给时钟区域,但不分配给单个site位置,除非使用LOC属性进行约束。只有仅驱动非时钟负载的时钟缓存可以基于它们的驱动器和负载的布局移动到该流程中稍后的不同时钟区域。在此阶段的任
- C#异步和多线程,Thread,Task和async/await关键字--12
冰茶_
C#开发语言c#学习visualstudio
目录一.多线程和异步的区别1.多线程2.异步编程多线程和异步的区别二.Thread,Task和async/await关键字的区别1.Thread2.Task3.async/await三.Thread,Task和async/await关键字的详细对比1.Thread和Task的详细对比2.Task与async/await的配合使用3.async/await的实际应用场景4.关键区别总结引言:在C#编
- docker-compose安装使用
redstone618
容器化部署docker运维linux
1、下载docker-compose链接:https://pan.baidu.com/s/1Mp0bgcgumncl_bPsg-KVYA?pwd=9q3z提取码:9q3z也可以去github上搜索docker-compose下载下载路径:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x
- 传统架构下应用部署
aherhuo
架构linux云原生
2.1传统架构下应用部署实验目标:目标为在传统架构下搭建LAMP(Linux+Apache+MySQL/MariaDB+PHP,流行的开源软件组合)环境并部署WordPress服务,本次模拟在安装好的openEuler22.03系统虚拟机实现。节点配置:虚拟机版本主机名Ip地址安装服务openEuler22.03web01192.168.110.200Apache、PHP、MariaDB2.1.1
- git 常用命令
2301_78094384
gitgit
1.常用命令gitaddREADME跟踪README文件gitrm--cachedfilename从暂存区、本地库删除filename文件gitcommit-m“”fn//把文件提交到仓库(commit命令后添加-m选项,将提交信息与命令放在同一行例:gitcommit-m“wroteareadme”filen)gitcommit--amend-m‘xxx’合并上一次提交(用于反复修改)gitst
- 学英语学技术:Elasticsearch 线程池
学会了没
elasticsearch大数据搜索引擎
单词汉语意思音标allocate分配/ˈæləˌkeɪt/coordination协调/koʊˌɔːrdɪˈneɪʃn/deprecated废弃的/ˈdɛprəˌkeɪtɪd/elasticsearch弹性搜索(专有名词)/ˌɛlɪkˈsɜːrtʃ/execute执行/ˈɛksɪˌkjuːt/generic通用的/dʒəˈnɛrɪk/initial初始的/ɪˈnɪʃəl/metadata元数据/ˈ
- SS00023.PBpositions——|Hadoop&PB级离线数仓.v02|——|Griffin.v02|Griffin部署|
yanqi_vip
数据库hadoophive大数据hdfs
一、Griffin编译准备###---软件解压缩[root@hadoop02~]#ls/opt/yanqi/software/griffin-griffin-0.5.0.zip/opt/yanqi/software/griffin-griffin-0.5.0.zip[root@hadoop02~]#cd/opt/yanqi/software/[root@hadoop02software]#unzi
- JAVA程序员工作常用英语
金士曼
JavaSEjava排序算法算法
基础单词部分ABCarray数组accessible可存取的area面积audio音频addition加法action行动arithmetic算法adjustment调整actual真实的argument参量ascent提升already已经AWT(AbstractWindowToolkit)抽象窗口工具API(ApplicationProgrammingInterface)应用程序接口byte字
- 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