- android mvvm官方demo,Android mvvm架构demo(DataBinding+LiveData+ViewModel+ Repository)
1.实现效果实现页面加载Bing每日一图的功能2.项目结构image(忽略没有按分类创建).png3.实现过程1.注入依赖//ViewModel与LiveDataimplementation"android.arch.lifecycle:extensions:1.1.1"//图片加载implementation'com.github.bumptech.glide:glide:4.9.0'//网络请
- Android github 快速实现多人协作
weixin_34037977
移动开发
前言:最近要做github多人协作,也就是多人开发。搜索了一些资料,千篇一律,而且操作麻烦。今天就整理一下,github多人协作的简单实现方法。下面的教程不会出现:公钥、组织、team、pullrequest1、首先小张在github上创建一个仓库,比如叫做:GlideDemo2、小张开始邀请小王创建仓库后,然后开始添加小王了。注意在第三步的时候,要输入小王的github用户名。3、小王接收小张的
- Android 音乐播放器实现底部播放器、全屏播放器一体化(Fragment+ BottomSheet实现)
一个基础的一体化播放控制器,用于提升用户体验,减少界面切换带来的不便,以及提高开发效率和性能。依赖添加implementation'com.github.bumptech.glide:glide:4.16.0'implementation'androidx.cardview:cardview:1.0.0'最终效果,底部控制器、过渡动画、全屏控制器一整体思路项目已上传至github,musicpla
- android 图片背景毛玻璃效果实现
stevenzqzq
android基础android
图片背景毛玻璃效果实现1依赖//Glideimplementation("com.github.bumptech.glide:glide:4.16.0")kapt("com.github.bumptech.glide:compiler:4.16.0")implementation("jp.wasabeef:glide-transformations:4.3.0")2布局//...内容布局3Main
- 掌握Glide:Android高效图片加载解决方案
一点旧一点新
本文还有配套的精品资源,点击获取简介:Glide是一个专为Android优化的图片加载库,由GoogleVolley团队开发,能提供流畅的滚动体验和高效的内存与图片解码管理。本文深入探讨了Glide的功能特点,例如智能缓存、内存管理、图片变形与缩放、动画支持、生命周期管理以及易于定制的API。文中还指导如何在项目中集成和使用Glide,包括基本和高级用法、自定义配置的示例代码,以及如何选择适合项目
- android图片资源加载失败,Android图片加载问题分析
清水湾落车
android图片资源加载失败
下图是一个客户端图片加载模块常见的处理流程。imagepipeline.png本文以UniversalImageLoader为例分析了这一流程,然后分析了Fresco的优势和问题,最终推荐大家使用Glide。从UniversalImageLoader分析图片加载中需要处理的问题网络主要用于下载网络图片,在UIL中是将图片地址变为InputStream。UIL支持多种类型来源的图片显示,包括:网络文
- 【Android】Glide基本用法及With方法源码解析
去看全世界的云
Androidglideandroidjava
文章目录引入优点使用步骤导入依赖权限使用其他用法占位符错误图片后备回调符圆角过渡动画大小调整gif缩略图使用RequestOptions缓存机制设置缓存策略清理缓存使用集成库OkHttpVolleywith源码解析getRetrieverGlide.getinitializeGlidegetRequestManagerRetrieverRequestManagerRetriever#get引入Gl
- 强力推荐:logspout-logstash——Docker日志直输Logstash的利器
常琚蕙
强力推荐:logspout-logstash——Docker日志直输Logstash的利器logspout-logstashAminimalisticadapterforgithub.com/gliderlabs/logspouttowritetoLogstash项目地址:https://gitcode.com/gh_mirrors/lo/logspout-logstash在现代容器化应用中,高效
- Git常用命令
旺仔大牛
版本控制软件gitgit命令
文章目录拉取远程代码提交(commit)提交到本地仓库查看提交记录修改已提交的message撤消分支拉取远程代码master分支:gitclone仓库地址gitclonehttps://github.com/bumptech/glide拉其他分支:gitclone-b分支名仓库地址gitclone-b3.0https://github.com/bumptech/glide提交(commit)提交到
- GLIDE论文阅读笔记与DDPM(Diffusion model)的原理推导
大写-凌祁
论文阅读笔记人工智能深度学习python机器学习计算机视觉
Abstract扩散模型(Diffusionmodel)最近被证明可以生成高质量的合成图像,尤其是当它们与某种引导技术结合使用时,可以在生成结果的多样性与保真度之间进行权衡。本文探讨了在文本条件图像生成任务中使用扩散模型,并比较了两种不同的引导策略:CLIP引导和无分类器引导。我们发现,人类评估者更倾向于使用无分类器引导方法,无论是在照片真实感还是与文本描述的匹配度方面,该方法通常都能生成具有高度
- Glide图片加载库的缓存机制全面解析:从原理到企业级优化实战
Android洋芋
glide缓存Glide缓存机制内存优化磁盘缓存分区性能调优
简介掌握Glide的三级缓存机制是构建高性能图片加载应用的关键。本文将深入解析Glide的缓存架构设计,从活动缓存、内存缓存到磁盘缓存的工作原理,同时结合企业级实战案例,展示如何通过动态内存调整、磁盘分区优化等技术解决Glide默认配置的四大致命缺陷,实现图片加载的零卡顿体验。通过本文的系统分析和代码示例,您将能够全面理解Glide的缓存机制,并在实际项目中应用这些优化策略,显著提升应用性能和用户
- Android 2020-2021年 最新面试题(附个人面试经历),Glide的缓存机制
wa2231a
程序员架构移动开发android
4.Broadcast注册方式与区别(1)静态注册(minifest),(2)动态注册http://www.jianshu.com/p/ea5e233d9f43此处延伸:什么情况下用动态注册5.HttpClient与HttpUrlConnection的区别http://blog.csdn.net/guolin_blog/article/details/12452307此处延伸:Volley里用的哪
- Android图片加载框架最全解析(三),深入探究Glide的缓存机制
u010142437
AndroidguolinGlide缓存androidjava
随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)from:https://blog.csdn.net/guolin_blog/article/details/54895665在本系列的上一篇文章中,我带着大家一起阅读了一遍Glide的源码,初步了解了这个强大的图片加载框架的基本执行流程。不过,上一篇文章只能说是比较粗略地阅读了Glide整个执行流程方
- Android中图片的三级缓存介绍及实现
2401_87555412
android缓存php
最后,简单粗暴的一句话概括:****Picasso所能实现的功能,Glide都能做,无非是所需的设置不同。但是Picasso体积比起Glide小太多如果项目中网络请求本身用的就是okhttp或者retrofit(本质还是okhttp),那么建议用Picasso,体积会小很多(Square全家桶的干活)。Glide的好处是大型的图片流,比如gif、Video,如果你们是做美拍、爱拍这种视频类应用,建
- android Glide 加载网络图片
thiscopy
AndroidJavaandroid网络Glide
importandroid.content.Context;importandroid.widget.ImageView;importcom.bumptech.glide.Glide;importcom.bumptech.glide.Priority;importcom.bumptech.glide.load.engine.DiskCacheStrategy;importcom.xolo.v6ap
- Glide4.11源码分析(二)三级缓存之内存缓存
acaixuediannao
源码分析android源码面试
Glide4.11源码分析(一)生命周期的绑定Glide4.11源码分析(二)三级缓存之内存缓存Glide4.11源码分析(三)子线程执行的那些事儿及本地缓存上文讲了Glide.with(activity)方法的流程,获取到了RequestManager对象,梳理出来了RequestManager和Fragment生命周期绑定的过程。这篇文章我们看看看RequestManager的load过程。R
- Android面试总结之Glide源码级理解
每次的天空
Android学习知识总结glide
当你的图片列表在低端机上白屏3秒、高端机因内存浪费导致FPS腰斩时,根源往往藏在Glide的内存分配僵化、磁盘混存、网络加载无优先级三大致命缺陷中。本文从阿里P8级缓存改造方案出发,结合Glide源码实现动态内存扩容、磁盘冷热分区、智能预加载等黑科技,彻底解决万级图片加载场景下的性能灾难一、Glide默认缓存架构的四大缺陷(源码级剖析)1.内存分配僵化:固定比例引发高低端机两难默认内存缓存为APP
- Android第三方常用库汇总
坚强的小水滴
android
网络请求RxEasyHttp基于RxJava2+Retrofit2实现简单易用的网络请求框架retrofitokhttpokhttp-OkGo封装了OkHttp的网络请求框架图片加载glideglide-transformations基于glide的图片变化库frescopicassoLargeImage加载大图可以高清显示10000*10000像素的图片,轻松实现微博长图功能视频播放器ExoPl
- 安卓常用第三方库
胡子洲
Androidandroid
以下是一些安卓常用的第三方库:网络请求OkHttp:由Square开发的高效、简洁的HTTP客户端库,支持HTTP/2、连接池、缓存等功能,能方便地进行网络请求和处理响应。Retrofit:基于OkHttp封装的网络请求框架,通过注解方式简洁地定义API接口,将网络请求封装成易于调用的方法,方便与服务器进行数据交互。图片加载Glide:广泛使用的图片加载库,具有强大的图片缓存机制、图片变换功能,支
- 美团客户端 -点评部 (Android) 一面
我也念过晚霞
android
1.java泛型,泛型是怎么实现的,然后又问类型擦除2.重载和重写3.Java是如何进行内存回收的4.可达性算法5.线程池的应用场景,OkHttp中线程池有哪些参数6.OkHttp拦截器的设计模式7.MVVM设计模式8.MVVM架构,数据变化时如何通知UI刷新9.安卓中使用MVVM架构,会用到那些组件10.LiveData如何监听生命周期11.Glide的缓存机制12.Handler如何消费事件1
- Android 图片加载库系列之Universal-Image-Loader
程序员K哥
Androidandroid缓存
未经本人授权,不得转载!否则必将维权到底平时做开发的时候,App中肯定有异步加载图片,或者加载大量图片的需求。而加载图片常常会遇到许多的问题,比如说图片的错乱,OOM等问题。相信大多数Android程序员都是用网络上最流行的图片加载库来实现咱们的需求。比较著名的就是Universal-Image-Loader、Fresco、Picasso、Glide。今天首先来讲下大名鼎鼎的Universal-I
- 使用Glide实现毛玻璃的效果
zhaoxianwang
Android
最近项目中需要用到一个接口中获取到的图片作为当前activity的背景图片,并且图片的效果需要是毛玻璃效果。怀着直接使用轮子的心情于是到github上查找轮子,终于找到了。步骤1.引用库repositories{jcenter()}dependencies{compile'jp.wasabeef:glide-transformations:3.0.1'//IfyouwanttousetheGPUF
- Android开发Glide做毛玻璃效果
893151960
Android开发案例分享androidglideAndroid开发Android教程Glide做毛玻璃效果
Android开发Glide做毛玻璃效果其实毛玻璃效果,服务器端也可以在图片上加。客户端做的示例代码:importandroid.graphics.Bitmapimportandroid.graphics.Matriximportcom.bumptech.glide.load.Keyimportcom.bumptech.glide.load.engine.bitmap_recycle.Bitmap
- android 实现头像堆叠效果
“嗯哈
android
1:依赖```implementation("com.github.bumptech.glide:glide:4.12.0")annotationProcessor("com.github.bumptech.glide:compiler:4.12.0")```第一种方式,布局创建frameLayout使用动态添加view方式实现``````代码中动态添加view```publicclassMain
- 大厂Android面试秘籍:Glide 缓存模块源码深度解析(三)
Android 小码峰啊
AndroidGlide原理android面试glideandroidstudioandroidruntimeandroid-studioandroidjetpack
Glide缓存模块源码深度解析:从设计到实现的全方位剖析本人掘金号,欢迎点击关注:掘金号地址本人公众号,欢迎点击关注:公众号地址一、引言在Android开发领域,图片加载是一个极为常见且关键的功能。Glide作为一款被广泛使用的图片加载库,其缓存模块是提升图片加载效率和性能的核心组件。合理的缓存机制能够显著减少网络请求,降低流量消耗,同时加快图片显示速度,为用户带来流畅的使用体验。本文将深入Gli
- android 自定义图片裁剪,Android图片裁剪工具封装
SecretCity
android自定义图片裁剪
笔者从零开始开发Android,而且是跳过java直接使用kotlin开发,这其中的好处是可以避开java这门传统语言诸多的潜规则,难处是相比资深Android开发者少了许多可以现用的工具库。比如Android对图片的支持就非常开放,换言之就是非常依赖一个成熟的工具库(比如Glide),(相比web里标签就安全易用很多)。包括本文将实现的工具在内,笔者目前也收集了整整2个成熟好用的图片相关工具类,
- Android Okhttp3添加https自签名证书以及Glide4,掌握这个提升路径,
mm627mm
2024年程序员学习androidhttps数据库
三、OkHttp3添加自签名证书如何使用自签名证书?1.获取证书流有两种方式:将服务端提供的证书文件放到assets文件夹里面,然后获取。(因为是在assets文件下,所以会写入到apk里面)打开证书文件,将证书里面的内容以字符串的形式通过流写入。(不会写入到apk中)2.创建秘钥,添加证书进去3.创建信任管理器,并把秘钥初始化到信任管理器里4.获取SLL上下文,并把信任管理器初始化到SSL里5.
- Rust + WebAssembly 实现康威生命游戏并进行单元测试
Hello.Reader
rust前端技术rustwasm游戏
1.设计思路1.1选择有限的宇宙康威生命游戏的世界是无限二维网格,但由于计算机内存和性能有限,我们通常采用以下三种有限宇宙策略:动态扩展宇宙:仅存储“活跃区域”,并按需扩展(可能会无限增长)。固定大小无边界:边界处的细胞无法继续扩展,会被“消灭”。固定大小的环绕宇宙(ToroidalUniverse)✅(我们采用此方案)环绕宇宙允许**滑翔机(Glider)**无限运行,而不会被边界阻止:顶部边界
- 开源框架--Glide源码阅读下
Bonnie_cat
开源glide
接上半部分开源框架–Glide源码阅读上,我们接着看Glide源码的with和load。3.源码阅读3.2load上半部分分析知道了with()方法返回的是RequestManager,下面看RequestManager的load()方法,@OverridepublicRequestBuilderload(@NullableStringstring){returnasDrawable().load
- Android第二次面试总结(项目拷打实战)
每次的天空
android
MVVM+Jetpack组件落地采用ViewModel+LiveData实现数据驱动开发,将UI逻辑与业务逻辑解耦,通过LiveData的生命周期感知能力避免内存泄漏。使用WorkManager替代传统Service处理后台任务(如数据同步),结合Room数据库实现任务持久化,确保应用被杀后仍能恢复任务。性能优化实战集成Glide加载国风插画,结合自定义三级缓存策略(内存LRU+磁盘缓存+本地资源
- 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