- 微服务监控 - Jaeger 简介
CatchZeng
原文:https://makeoptim.com/distributed-tracing/jaegerJaeger特性架构SpanTrace组件客户端库(clientlibraries)代理(Agent)收集器(Collector)查询(Query)Ingester小结上一篇我们讲解了分布式追踪的概念和作用以及OpenTracing。本篇主要介绍CNCF的分布式追踪方案Jaeger。Jaegeri
- OpenTelemetry 笔记 (OTel)
云满笔记
#opsopentelemetryotelobservabilitymetrictrace
目录1.OpenTelemetry笔记(OTel)1.1.What1.2.为什么使用OpenTelemetry1.3.数据类型1.4.架构图1.5.核心概念1.6.包含哪些内容1.6.1.跨语言的规范1.6.2.Collector1.6.3.Receiver1.6.4.Processor1.6.5.Exporter1.6.6.客户端1.7.SkyWalkingvsOpenTelemetry1.Op
- RocketMQ启动报错解决:Using the DefNew young collector with the CMS collector is deprecated and will likely
fyihdg
rocketmqjavajava开发语言
启动nameserver报错了,如下[root@localhost~]#mqnamesrvJavaHotSpot(TM)64-BitServerVMwarning:UsingtheDefNewyoungcollectorwiththeCMScollectorisdeprecatedandwilllikelyberemovedinafuturereleaseJavaHotSpot(TM)64-Bit
- 双极型晶体管
㉨㉨
零基础学模拟电路模电
目录一、双极型晶体管的基本结构二、双极型晶体管的工作原理三、双极型晶体管的特性曲线四、双极型晶体管的应用五、学习总结一、双极型晶体管的基本结构双极型晶体管(BipolarJunctionTransistor,简称BJT)是一种电流控制型半导体器件,由两个PN结组成。它包含三个区域:发射区、基区和集电区,以及对应的三个电极:发射极(Emitter)、基极(Base)和集电极(Collector)。二
- 5.11.6 jmeter组件-监听器—服务器性能监控PerfMon Metrics Collector
曹红杏
JMeterjmeter性能测试jmeter性能测试监听器服务器性能监控PerfMonMetricsCollector
服务器性能监控PerfMonMetricsCollector在性能测试时,了解加载的服务器的健康状况是很重要的。使用.jp@gc-PerfMonMetricsCollector,你可以监视几乎所有的平台的CPU,内存,交换,磁盘I/O和网络I/O!如上为插件的界面。它显示了负载测试中涉及的服务器(本机)的CPU、内存使用情况:当然你可以同时监控多台服务器的性能(被监控计算机上需要拷贝ServerA
- 腾讯mini项目总结-指标监控服务重构
嘻·嘻
Go沉淀opentelemetrykafkagoSigNozJaegerclickhouse
项目概述本项目的背景是,当前企业内部使用的指标监控服务的方案的成本很高,无法符合用户的需求,于是需要调研并对比测试市面上比较热门的几款开源的监控方案(选择了通用的OpenTelemetry协议:Signoz,otel-collector,jaeger;uptrace不能商用),去重构原有服务,实现降本增效:减少监控服务本身的接入成本、存储成本,提高监控服务的性能。项目目标我们需要通过在服务中接入不
- 电路笔记 :MOS场效应晶体管+红外遥控+AMS1117 电源模块
FakeOccupational
移动端笔记
三极管(BJT,BipolarJunctionTransistor)和MOSFET(Metal-Oxide-SemiconductorField-EffectTransistor)是两种不同类型的晶体管,它们在工作原理、性能特性和应用方面有一些重要的区别。结构和工作原理:三极管三极管:三极管有三个区域:发射极(Emitter)、基极(Base)、集电极(Collector)。它工作基于二极管PN结
- Java高级技术之RabbitMQ生产故障问题分析
就要学Java
JavaSpring消息队列java-rabbitmqrabbitmqjava分布式java-rocketmq
由某一次真实生产环境rabbitMQ故障引发血案,下面复盘问题发生原因以及问题解决方法。1、问题引发由某个服务BI-collector-xx队列出现阻塞,影响很整个rabbitMQ集群服务不可用,多个应用MQ生产者服务出现假死状态,系统影响面较广,业务影响很大。当时为了应急处理,恢复系统可用,运维相对粗暴的把一堆阻塞队列信息清空,然后重启整个集群。在复盘整个故障过程中,我心中有不少疑惑,至少存在以
- 云原生内容分享(四):OpenTelemetry 重塑云原生的可观测性
之乎者也·
云原生内容分享云原生
目录一、前言二、OpenTelemetry的出现三、OpenTelemetry架构四、收集、转换、转发遥测数据的工具Collector五、基于OpenTelemetry&&Kubernetes的解决方案六、基于Kubernetes的OpenTelemetry实现6.1、通过Helm的方式进行部署6.2、通过kubectl的方式进行部署七、来点实战7.1、集成OpenTelemetrySDK7.2、
- 【郑益慧】模拟电子技术:5.双极晶体管的结构与方法原理
白糖熊
模拟电子技术单片机嵌入式硬件stm32物联网51单片机mcu
双极晶体管的结构与方法原理空穴和自由电子都参与导电称之为双极晶体管(半导体三极管)1.结构及类型一块半导体材料上,做出三个不同的掺杂区域。发射极——emitter基极——basic集电极——collector’为什么叫不同的名字?因为掺咋浓度不同发射区:发射载流子的区域;——掺杂浓度是最高的集电区:收集载流子;——掺杂浓度不能过高,面积最大基区:控制;——掺杂浓度比较低,非常薄三个区域;三个电极;
- java8 流式编程详细讲解(一)之 Stream、Collector
nandao158
java相关javaservletjvm
Java8中引入了新特性,流式编程思想,为其增加了有一个新的亮点!因为流的一个核心好处是,使得代码程序更加精简并且更易理解。在某些数情况下,将对象存储在数组、集合中是为了处理他们,而现在你可以把编程的主要焦点从其转移到了流上,使得java更具有吸引力。下面看一些实例:1、随机展示1至50之间不重复的整数并进行排序。实际上,你的关注点首先是创建一个有序集合。使用流式编程,你就可以简单的这样做:pub
- ACM-背包问题Bone Collector&&饭卡
hy1405430407
BoneCollector#include#includeintf[2223],v[1111],w[1111];intmax(inta,intb){if(a>b)returna;elsereturnb;}intmain(){intnn;intn,i,j,m;scanf("%d",&nn);while(nn--){scanf("%d%d",&n,&m);for(i=0;i=v[i];j--){f[j
- 猿学-unity游戏开发之entitas框架
猿学
框架介绍entitas是一个超快、超轻量的c#Entity-Component-System(ECS)框架,专门为Unity引擎设计。提供内部缓存和高速的组件访问,经过精心设计,可以在垃圾收集环境中最优地工作。框架解析要理解框架,就需要知道这四种概念,分别是:Entiy实体、Context环境、Group组、Collector收集器。如图,在一个Context中,会有很多Entity,每个Enti
- Stream类中的collect方法和Collector/Collectors类
kkyeer
一、Stream类中的collect方法概述collect方法为java.util.Stream类的内部方法,有两种重载形式(Java1.8),主要用于将Stream中的元素通过一定的计算过程转化为另外的表现形式重载形式说明1.接受supplier,accumulator,combiner方法定义Rcollect(Suppliersupplier,BiConsumeraccumulator,BiC
- Java中的Stream流收集器
swadian2008
JavajavaStream流流收集器
目录1、归约和汇总2、分组3、分区4、理解收集器接口Java中Stream流用来帮助处理集合,类似于数据库中的操作。在Stream接口中,有一个抽象方法collect,你会发现collect是一个归约操作(高级规约),就像reduce一样可以接受各种做法作为参数,将流中的元素累积成一个汇总结果。具体的做法可以通过Collector接口来定义。//collect和reduce都是Stream接口中的
- Jmeter插件PerfMon Metrics Collector安装使用及报错解决
测试要用手
软件测试工程师软件测试职场经验单元测试软件测试职场和发展自动化测试测试工具
Jmeter作为一个轻量级的性能测试工具,开源、小巧、灵活的特性使其越来越受到测试人员喜爱。在实际的项目中,特别是跨地区项目,排除合作方指定要求使用Loadrunner作为性能测试工具外,Jmeter会是首选。本篇文章,就着重介绍下Jmeter服务器性能监控插件PerfMonMetricsCollector的安装使用以及使用过程中所遇问题的解决方法。Jmeter插件的下载安装可能大家会有疑问,为什
- Java lambda表达式如何自定义一个toList Collector
javartisan
java开发语言
匿名类:packagel8;importjava.util.*;importjava.util.function.BiConsumer;importjava.util.function.BinaryOperator;importjava.util.function.Function;importjava.util.function.Supplier;importjava.util.stream.C
- Zipkin相关问题及答案(2024)
辞暮尔尔-烟火年年
微服务
1、Zipkin是什么Zipkin是一个分布式追踪系统,它帮助收集服务架构中所发生的请求详情,以便开发者可以详细了解系统中发生的事情,主要用于追踪和解决微服务架构中的延迟问题。下面详细介绍Zipkin的主要组件、工作原理以及实现分布式追踪的方式。主要组件Collector:接收来自各服务的追踪信息,这些数据通常称为Spans。Collector负责收集、存储以及处理这些数据。Storage:存储追
- SpringCloud 集成SkyWalking链路追踪
Dragon Wu
springcloudspringcloud服务器微服务
目录一、点击运行skywalking服务二、查看链路信息一、点击运行skywalking服务端口号默认是8080,修改端口到:修改yml即可。为服务添加JVM参数-javaagent:D:\\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar-DSW_AGENT_NAME=service-3-DSW_AGENT_COLLECTOR_BA
- 盘点Java中的那些常用的Garbage Collector
编了个程
GC总览Java是一门面向对象的语言。在使用Java的过程中,会创建大量的对象在内存中。而这些对象,需要在用完之后“回收”掉,释放内存资源。这件事我们称它为垃圾收集(GarbageCollection,简称GC),而实际执行者就是各种各样的“垃圾收集器”(GarbageCollector,以下也简称GC)。为什么会有各种各样的GC?因为时代在发展,以前的GC可能不能满足现在的需求,所以就会有源源不
- jaeger基于docker非all-in-one搭建(加入kafka作为缓冲)
20、77
gokafkadockerelasticsearch
文章目录前言示意图一、部署collector收藏家配置将存储指向Kafka1.节点12.节点23.节点3二、部署三台摄食者ingester消费kafka内jaeger-spans下的span信息传给es集群1.节点12.节点23.节点3三、修改本地agent的指向地址,指向新的collector四、运行查询器五、总结前言需要有es和kafka环境,如果没有es参考这里,kafka参考这里,有了这些
- jaeger基于docker非all-in-one搭建
20、77
gogo
多个jaeger-agent与多个Collector,jaeger-agent部署在具体业务的容器里面,Collector作为集群部署在服务端统一收集jaeger-agent上报的信息,然后Collector把数据提交给es集群,然后在需要展示的地方部署jaeger-query查询器,展示数据在云主机上部署es集群和多个Collector容器组成集群,然后win10部署具体应用,本地虚拟机部署ja
- 神奇的 stream 与它的好兄弟 collector
cpe
对平平常常的事物表示惊奇。流,是个很酷的字眼。输入流输出流,字符流字节流,心流。Stream,flow,whatever.想象飓风把一切吹进了长长的管道,从另一头出来时,它们全都分门别类堆放整齐。stream是破坏者,collector是强迫症。引狼入室:importjava.util.stream.Collectors;如果你有一个listofentity,想把某个属性取出来集中存放:Listn
- PG15.3.0源码编译安装日志插件pgbadger(上)
就想做一条闲鱼
postgresqlpostgresql数据库
一、开启相关日志修改后alter一定要重启,才会修改pg_ctlrestart-D/usr/local/pgsql/data-llogfile按照下面的方法一个个修改。log_destination='csvlog'#可选logging_collector=onlog_min_duration_statement=0log_line_prefix='%t[%p]:user=%u,db=%d,app
- [每周一更]-(第50期):Go的垃圾回收GC
ifanatic
每周一更golang开发语言后端
参考文章:https://juejin.cn/post/7111515970669117447https://draveness.me/golang/docs/part3-runtime/ch07-memory/golang-garbage-collector/https://colobu.com/2022/07/16/A-Guide-to-the-Go-Garbage-Collector/htt
- 热拔插系统避免使用 I2C 总线。如因历史原因使用 I2C 总线,电源须采用二极管防止电流反灌。
手搓机械
fpga开发单片机stm32设计规范
热拔插(Hot-Swapping)系统指的是在不关闭电源的情况下插入或移除硬件设备的能力。在这样的系统中,使用I2C总线可能会遇到一些问题,这是因为I2C总线的设计并不原生支持热拔插,而是为静态配置和通信而设计的。以下是一些避免在热拔插系统中使用I2C总线的原因:总线内容易受干扰:I2C总线使用开漏(open-drain)或开集(open-collector)设计,需要外部上拉电阻来确保线路在没有
- Java List按照某字段去重
布丁吖
随笔Javajavaliststream去重
JavaList按照某字段去重嘚吧嘚distinct示例一示例二根据某个字段去重Collectors.collectingAndThen()嘚吧嘚Java8流的新类java.util.stream.Collectors实现了java.util.stream.Collector接口,同时又提供了大量的方法对流(stream)的元素执行各种统计操作。distinct示例一List>mapList=ne
- Collector收集器的高级用法
莪是男神
Java#常用知识javastreamcollector后端学习
Collectors收集器的高级用法场景1:获取关联的班级名称原先如果需要通过关联字段拿到其他表的某个字段,只能遍历List匹配获取for(Studentstudent:studentList){LongclazzId=student.getClazzId();//遍历班级列表,获取学生对应班级名称for(Clazzclazz:clazzList){if(ObjectUtil.equal(claz
- 常用命令
李孝伟
1.查找当前目录下大于100M的文件find.-typef-size+100M-execls-lh{}\;|awk'{print$9":"$5}';2.查看系统版本lsb_release-a3.定时任务crontab-e*/5****/home/smart/monitor-data-collector.sh>/dev/null2>&14.linux计算器计算浮点yum-yinstallbcif[`
- (promethues)node_exporter注册自定义监控数据,简单展示
运维仙人
Gogo后端prometheus
一、要使用node_exporter通过collect注册自定义监控数据,需要遵循以下步骤:1.创建一个自定义的collector。Collector是一个Go结构体,它实现了Collector接口的方法。这些方法包括:Collect(ctxcontext.Context)(metrics,error):此方法用于收集和返回自定义指标。Describe(ctxcontext.Context,chc
- 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