- k8s安装elasticsearch
老程随风
微服务数据库javaelasticsearch大数据bigdata
镜像镜像版本:可以去https://hub.docker.com/搜索镜像,这里用的是elasticsearch:7.17.4k8s已经存在存储类(StorageClass):alicloud-disk-ssd服务发现apiVersion:v1kind:Servicemetadata:name:elasticsearchspec:clusterIP:Noneports:-name:elastics
- [k8s集群管理]
郭式云源生法则
kubernetes容器云原生
SourceURL:file:///home/student/Desktop/k8s.dock8s集群管理信息查询命令子命令说明help用于查看命令及子命令的帮助信息cluster-info显示集群的相关配置信息api-resources查看当前服务器上所有的资源对象api-versions查看当前服务器上所有资源对象的版本config管理当前节点上的认证信息help#查看帮助命令信息[root@
- linux使用docker + docker compose 本地搭建redis cluster集群
BanFS
Linuxredisdockerredislinux
背景项目用到一个redis库,对于里面的集群相关功能要自己测试(就像《代码简洁之道》中说的,使用第三方库需要自己有测试用例,这样即使第三方库更新了,直接用原来的测试用例,也知道是否能兼容)。所以需要自己本地搭建redis集群测试。搭建是使用docker搭建的,一下需要启动很多个container,所以使用docker-compose作为容器编排我的环境已经有了,没有的自己下载直接上redis-cl
- K8S部署EFK(fluentd)收集日志
一个怀揣梦想的运维
kuberneteselasticsearch容器
首先部署es和kinbanes部署创建es-svckind:ServiceapiVersion:v1metadata:name:elasticsearchnamespace:logginglabels:app:elasticsearchspec:selector:app:elasticsearchclusterIP:Noneports:-port:9200targetPort:9200name:r
- 【MongoDB】分片部署和应用实践全过程
gaoyi1234560
mongodb数据库运维开发
基本概念Router(mongos):数据库集群请求的入口ConfigServers(replicaset)存储数据库的元数据,如路由,分片的配置Share:数据库拆分分片具体操作配置主机名:vi/etc/hosts192.168.0.222m1192.168.0.111m2192.168.0.113m3安装目录为:/opt/mongodb/cluster创建目录和日志目录:mkdir-p/opt
- Mongodb配置分片服务器
czw0723
mongodb数据库服务器
mongodb的sharding集群由以下3个服务组成:ShardsServer:每个shard由一个或多个mongod进程组成,用于存储数据ConfigServer:用于存储集群的Metadata信息,包括每个Shard的信息和chunks信息RouteServer:用于提供路由服务,由Client连接,使整个Cluster看起来像单个DB服务器另外,Chunks是指MongoDB中一段连续的数
- Open3D 点云DBSCAN聚类算法
MelaCandy
算法聚类numpy计算机视觉图像处理3d
目录一、DBSCAN基本原理二、代码实现2.1关键函数2.2完整代码三、实现效果3.1原始点云3.2聚类后点云Open3D点云算法汇总及实战案例汇总的目录地址:Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客一、DBSCAN基本原理DBSCAN(Density-BasedSpatialClusteringofApplicationswithNoise)是一种基于密度的聚类算法,
- Ceph集群2025(Squid版)导出高可用NFS集群(上集)
野猪佩挤
存储systemcephjava服务器
#创建一个CephFS文件系统cephfsvolumecreatecephfs02#创建子卷cephfssubvolumegroupcreatecephfs02myfsg2#查看子卷cephfssubvolumegrouplscephfs02[{"name":"myfsg2"}]创建NFSGanesha集群#例子$cephnfsclustercreate[][--ingress][--virtua
- k8s--集群内的pod调用集群外的服务
IT艺术家-rookie
k8s与docker容器技术kubernetes容器云原生
关于如何让同一个局域网内的Kubernetes服务的Pod访问同一局域网中的电脑上的服务。可能的解决方案包括使用ClusterIP、NodePort、HeadlessService、HostNetwork、ExternalIPs,或者直接使用Pod网络。每种方法都有不同的适用场景,需要逐一分析。例如,ClusterIP是默认的,只能在集群内部访问,所以可能需要其他方式。NodePort会在每个节点
- mysql与mariadb版本对应_MySQL与MariaDB及各种版本杂谈
weixin_39616416
MySQL1.MySQLCommunityServer社区版本,开源免费,但不提供官方技术支持。(我们通常使用的MySQL版本)2.MySQLEnterpriseEdition企业版本,需付费,可以试用30天。3.MySQLCluster集群版,开源免费。可将几个MySQLServer封装成一个Server。4.MySQLClusterCGE高级集群版,需付费。5.MySQLWorkbench(G
- MySQL HA的全新篇章:Semisynchronous Replication迁移至InnoDB Cluster的实用指南
库海无涯
MySQLmysql
1、概述临时接了一个搭建InnoDBCluster的活儿,客户给我说是有数据的,我当时想这不是非常简单吗?干活儿的时候,才发现并没有这么简单,接手的时候发现是SemisynchronousReplication的环境,然后把从库切换成InnoDBCluster的primary。2、环境复现2.1、从库5.140信息采集mysql>showreplicastatus\G***************
- k8s学习笔记(3)--- kubernetes核心技术概念
梦谜
k8s基础知识k8基本核心概念
kubernetes核心技术概念1.容器(Container)2.API对象3.集群(Cluster)4.Master5.Node6.Pod7.复制控制器(ReplicationController,RC)8.副本集(ReplicaSet,RS)9.部署(Deployment)10.服务(Service)11.任务(Job)12.定时任务(CronJob)13.后台支撑服务集(DaemonSet)
- 从零到一:Redis Cluster部署配置全流程详解,轻松搞定高可用分布式缓存!
IT成长日记
#数据库技术解析与应用实践RedisClusterredis缓存集群
RedisCluster是Redis官方提供的分布式解决方案,它通过数据分片(Sharding)和主从复制(Replication)来实现高可用性和横向扩展。RedisCluster能够在多个节点之间自动分配数据,并且在节点故障时自动进行故障转移,确保系统的高可用性。本文将详细介绍RedisCluster的部署和配置全流程,帮助读者快速搭建一个高可用的Redis集群。1RedisCluster概述
- K8S集群新增和删除Node节点(K8s Cluster Adds and Removes Node Nodes)
Linux运维老纪
天涯海角k8s伴你同行kubernetes容器云原生云计算运维开发linux
实战:在已有K8S集群如何新增和删除Node节点在Kubernetes(K8S)集群中,Node节点是集群中的工作节点,它们运行着容器的实际实例。管理K8S集群中的Node节点,包括新增和删除节点,是一个常见且重要的操作,可以帮助你根据需求扩展或缩减集群的容量。本篇文章将分享一下如何在已有集群添加新节点和删除现有节点1新增节点到K8S集群新增节点可以分为准备节点、配置节点和将其加入集群三步。1.1
- Redis Cluster(无中心化设计)详解
π大星星️
redis数据库缓存
1.1RedisCluster工作原理1.1.1背景与动机在传统的Redis单机模式中,哨兵(Sentinel)机制可以解决Redis的高可用问题。当主节点(Master)故障时,哨兵可以自动将从节点(Slave)提升为新的主节点,从而保证Redis服务的可用性。然而,这种机制无法解决单机Redis的写入瓶颈问题。单机Redis的写入性能受限于单机的内存大小、并发数量、网卡速率等因素。为了解决这一
- Flink启动任务
swg321321
flink大数据
Flink以本地运行作为解读例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Flink前言StreamExecutionEnvironmentLocalExecutorMiniClusterStreamGraph二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发
- clickhouse创建数据库以及表
鸭梨山大哎
clickhouse
创建数据库语法CREATEDATABASE[IFNOTEXISTS]db_name[ONCLUSTERcluster][ENGINE=engine(...)]例子CREATEDATABASEIFNOTEXISTSchtest;--使用默认库引擎创建库默认情况下,ClickHouse使用的是原生的数据库引擎Ordinary(在此数据库下可以使用任意类型的表引擎,在绝大多数情况下都只需使用默认的数据库
- 统计领域英语专业词汇补充
月亮月亮要去太阳
算法其他
应统考研复试:多元统计、回归分析、时间序列三大领域专业词汇翻译以下是多元统计、回归分析和时间序列三大统计领域的常见专业词汇的英汉互译,按类别整理:多元统计(MultivariateStatistics)英文术语中文术语MultivariateAnalysis多元分析PrincipalComponentAnalysis(PCA)主成分分析FactorAnalysis因子分析ClusterAnalys
- Redis 三主三从集群部署的完整方案
Honmaple
redis数据库缓存
一、架构设计原理分布式数据分片哈希槽机制:RedisCluster将数据划分为16384个槽位,每个主节点负责部分槽位(如主节点1管理槽0-5460,主节点2管理5461-10922等)。自动负载均衡:数据按哈希值分配到不同节点,避免单点性能瓶颈。高可用基础:每个主节点配置至少一个从节点,主节点故障时自动切换从节点接替。故障转移流程哨兵协同:3个哨兵节点通过投票机制(quorum=2)决
- MySQL InnoDB 存储引擎的索引详解
菜就多练少说
SQLmysql数据库
在MySQL中,InnoDB是最常用的存储引擎,它支持事务、行级锁和外键约束等功能,而索引则是提升数据库查询性能的关键。在InnoDB存储引擎中,索引不仅仅是提高查询速度的工具,还是数据库的核心组成部分之一。本文将详细介绍InnoDB存储引擎的索引结构、索引种类、索引优化技巧以及索引失效等方面的知识。1.InnoDB索引的结构在InnoDB存储引擎中,索引主要分为两种类型:聚集索引(Cluster
- OceanBase数据库常用巡检SQL
MoMoSQL666
数据库oceanbasemysqlsql
本文为墨天轮数据库管理服务团队原创内容,如需转载请联系小墨(VX:modb666)并注明来源。一、版本信息select*frominformation_schema.GLOBAL_VARIABLESWHEREVARIABLE_NAMElike'version%';二、集群状态select*fromoceanbase.v$ob_cluster;三、服务器状态检查所有服务器的状态,包括这个Server
- Java面试八股之Redis集群Cluster
天哥不爱学习
Java面试八股文java面试redis
Redis集群ClusterRedisCluster是一种基于数据分片(Sharding)的分布式缓存和存储系统,它实现了数据的水平扩展、高可用性和自动故障转移。以下是对RedisCluster模式详细实现流程的描述:1.初始化与配置部署节点:在不同的服务器上部署多个Redis节点,每个节点既可以作为主节点也可以作为从节点。配置集群模式:为每个节点启用Cluster模式,指定Cluster所需的端
- YashanDB日志收集
数据库
日志收集命令主要是一键收集节点的日志,把远端服务器上的节点的日志统一打包发送到本地服务器。日志收集命令仅适用于通过yasboot安装的数据库,否则需要先对该数据库进行托管。示例./bin/yasbootclusterlog-cyashandbstart:2023-07-2800:00:00end:2023-07-2820:11:19type|uuid|name|hostid|index|statu
- lvs
wzyzzu
linux
目录LVS项目理论项目介绍体系结构IP负载均衡负载调度安装配置简介组件背景硬件/网络的要求路由的必要条件节点内部连接的必要条件安装软件配置例子简单实例LVSLVS是章文嵩博士发起和领导的优秀的集群解决方案,许多商业的集群产品,比如RedHat的Piranha,TurboLinux公司的TurboCluster等,都是基于LVS的核心代码的。在现实的应用中,LVS得到了大量的部署,请参考http:/
- Docker Compose to Kubernetes 转换工具教程
裴辰垚Simone
DockerComposetoKubernetes转换工具教程docker-compose-kubernetesLaunchalocalKubernetesclusterviaDockerCompose项目地址:https://gitcode.com/gh_mirrors/do/docker-compose-kubernetes项目介绍本项目旨在提供一个简单的方法,将使用DockerCompose
- Linux企业实战-----LVS+keepalived负载均衡集群
Yang5208
linux负载均衡运维
用LVS实现负载均衡实现步骤:#若在虚拟环境中需执行此步骤创建两个新的虚拟机,VMWARE可忽略此步骤真实主机:cd/var/lib/libvirt/images/lsqemu-imgcreate-fqcow2-brhel7.6.qcow2server3qemu-imgcreate-fqcow2-brhel7.6.qcow2server4server1:pcsclusterdisable--all
- 实战篇:GBase 8a MPP Cluster 安装部署过程
Lucifer三思而后行
DBA实战系列数据库gbasecluster
目录前言☀️环境准备安装介质下载操作系统安装安装前准备1、关闭防火墙2、禁用Selinux3、创建gbase用户4、创建目录并授权5、重启主机❤️GBase8aMPPCluster安装主节点上传安装介质主节点解压安装包分发配置文件配置环境变量修改主节点安装配置文件主节点执行安装命令检查集群状态申请和导入授权①导出集群各节点的指纹信息②邮件申请授权③主节点导入授权④检查授权情况所有节点启动集群服务主
- Rabbitmq踩坑---删掉.erlang.cookie后重新启动服务报错
原子一式
Rabbitmq
集群部署的时候,自己笔记本安装3台centos7服务器【102,103,104】,各种前期准备好后,执行rabbitmqctlcluster_status发现报错,第一个想到的是cookie可能不对,检查发现三台.erlang.cookie都是一样的,仔细一看是103我改过hostname,重启后,从102拷贝过来发现还是报错,我就直接删掉了.erlang.cookie,然后又从102拷贝过来,启
- SQL Server数据库基于SQL性能优化
王小工
数据库数据库sql性能优化
以下是SQLServer数据库SQL性能优化的实战策略,综合高频优化场景与核心技巧:一、索引优化1.合理创建索引对WHERE、JOIN、ORDERBY常用字段创建索引,优先选择选择性高的列(如唯一性高的字段)。使用聚集索引(ClusteredIndex)优化范围查询和排序操作,非聚集索引(Non-clusteredIndex)用于单列或组合列查询。避免在频繁更新的列上创建过多索引,以平衡读
- Vue2+OpenLayers点聚合功能实现(提供Gitee源码)
黄团团
VueOpenLayersvue.js前端数据库html
目录一、案例截图二、安装OpenLayers库三、代码实现3.1、初始化点位3.2、初始化VectorSource3.3、初始化Cluster3.4、初始化VectorLayer3.5、完整代码四、Gitee源码一、案例截图一定距离的点(可配置)系统会自动聚合:二、安装OpenLayers库npminstallol三、代码实现3.1、初始化点位这里返回一个Features集合,也就是点位集合。关键
- 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