- ConcurrentHashMap深度解析
编程界的彭于晏qaq
javajava
ConcurrentHashMap深度解析引言:并发容器的"扛鼎之作"在Java并发编程领域,ConcurrentHashMap无疑是最核心的容器之一。作为HashMap的线程安全替代品,它既解决了Hashtable全表锁导致的性能瓶颈,又规避了HashMap在并发环境下的数据不一致风险(如死循环、数据丢失)。自JDK1.5引入以来,ConcurrentHashMap经历了三次重大演进(JDK7分
- JavaScript 模块化开发完全指南
小李也疯狂
前端技术javascript开发语言ecmascript模块化开发
目录前言一、模块化的基本概念1.1什么是模块化?1.2为什么需要模块化?二、JavaScript模块化的发展历程2.1早期解决方案2.1.1命名空间模式2.1.2立即执行函数表达式(IIFE)2.2社区规范2.2.1CommonJS2.2.2AMD(AsynchronousModuleDefinition)2.2.3CMD(CommonModuleDefinition)2.3ES6模块(ESM)三
- 最简单控制台版输入框学生信息处理平台
功能实现支持添加、删除、修改、查询、排序功能。使用并行数组nos,names,scores,学生信息统一下标。使用Scanner交互输入。使用冒泡排序实现成绩排序。packagecom.xiangmu.day04;importjava.util.Scanner;publicclassTest01{publicstaticvoidmain(String[]args){Scannersc=newSca
- docker-compose部署java项目
小瞿慢慢跑
dockerdocker-compose
docker-compose是定义和运行多容器的工具。换句话说就是通过配置yml文件来运行容器,简化了每次输入dockerrun等命令,把这些命令配置在yml文件统一管理,而且可以用一个yml文件一次启动多个容器,启动时还可以设置各个容器的依赖关系等。如下为测试docker-compose启动java程序1.docker-compose.ymlversion:'3'services:java05:
- 深入理解 synchronized 锁
与你久处不厌
Javajava
文章目录一、实现原理对象头Monitor二、synchronized优化1.锁的状态2.锁的升级一、实现原理Java中的每一个对象都可以作为锁。具体表现为以下3种形式。对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的Class对象。对于同步方法块,锁是Synchonized括号里配置的对象。代码块同步:使用monitorenter和monitorexit指令实现。方法同步:使用另
- Java EE的历史(转)
古剑诛仙
转自公众号码农翻身。前言:昨天下午有同学问我JavaEE是干什么用的,能开发什么系统,我在QQ中敲了很多字,掰扯了半天,终于给他整明白了。我突然意识在其实很多初学者对JavaEE的来龙去脉并去清楚,大家并不知道为什么会出现这个技术,要解决什么问题。所以就写了这篇文章介绍下JavaEE的历史。先把时间扯的远一点,94年我上高中的时候,见过亲戚家有过电脑,很好奇,虽然上面都是一些单机桌面程序,根本上不
- 延迟队列的入门使用
延迟队列的入门使用思考:1.什么是延迟队列?延迟队列运用场景?2.延迟队列的排队过程如何实现?真的是先进先出吗?3.如何实现运用延迟队列一.什么是延迟队列DelayQueue是Java中的一个基于优先级队列的实现的线程安全的延迟队列。运用场景:实现定时任务或者延迟任务的调度。DelayQueue实现BlockingQueue,加入这个队列的元素必须实现Delayed接口,当生产者提交元素进入队列时
- Java DelayQueue延迟队列的使用和源码分析
°Fuhb
Java基础与进阶javaDelayQueue延迟队列
文章目录概述示例原理分析概述DelayQueue是JAVA提供的延时队列,队列内部的对象必须实现Delayed接口,该接口只有一个getDelay方法,返回延迟执行的时长。publicinterfaceDelayedextendsComparable{longgetDelay(TimeUnitunit
- DelayQueue延时队列简单使用
泉泉写Java
java开发语言
DelayQueue是JDK1.5引入到工具,位置在java.util.concurrent。从包路径我们就能知道该工具是给多线程使用到。我们先看看官方注释:AnunboundedblockingqueueofDelayedelements,inwhichanelementcanonlybetakenwhenitsdelayhasexpired.TheheadofthequeueisthatDel
- Java性能监测工具JMC的使用介绍
一、JMC介绍JMC是源自JRockitJVM的一套监控和管理工具,Oracle在发布JAVA7u4(Java7Update40)时将其包含在JDK中,用户不再需要单独下载。使用JMC可以监视和管理Java应用程序,不会导致相关工具类的大幅度性能开销,它使用为Java虚拟机(JVM)的普通自适应动态优化收集的数据。官方地址:https://www.oracle.com/java/technolog
- Spring Boot 3.0新特性全面解析与实战应用
天天进步2015
Javaspringboot
SpringBoot3.0新特性全面解析与实战应用引言SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进。本文将深入解析SpringBoot3.0的核心变化,并通过实战示例展示如何在项目中应用这些新特性。核心变化概览Java版本要求提升SpringBoot3.0最显著的变化是Java版本要求提升至Java17。这一变化不仅仅是版本号的更新,更是对现
- JAVA面试八股文,万字长文!
Java进阶八股文
java面试开发语言职场和发展springbootspringjvm
1、多态的作用多态的实现要有继承、重写,父类引用指向子类对象。它的好处是可以消除类型之间的耦合关系,增加类的可扩充性和灵活性。多态允许你通过统一的接口来处理不同类型的对象,这样在添加新的类型时,不需要修改现有的代码,只需要实现相同的接口或继承相同的父类即可。这使得代码的扩展性大大增强。2、什么是反射?反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它
- 第一部分:MySQL 基础与核心架构(第二节: 存储引擎深度解析 之 MySQL存储引擎选择策略)
jarenyVO
Mysqlmysql架构数据库
第一部分:MySQL基础与核心架构(第二节:存储引擎深度解析之MySQL存储引擎选择策略)文章目录第一部分:MySQL基础与核心架构(第二节:存储引擎深度解析之MySQL存储引擎选择策略)MySQL存储引擎选择策略深度解析一、存储引擎选择决策框架1.核心决策维度2.关键评估指标矩阵二、典型业务场景引擎选择策略1.电商系统2.内容管理系统3.金融系统三、性能与一致性权衡策略1.CAP理论应用2.读写
- 设计模式-工厂方法模式 Java
模式概述工厂方法模式(FactoryMethodPattern)又称为工厂模式,定义创建对象的接口,但将具体实现延迟到子类,实现对象创建与使用的解耦。简单代码示例//1.抽象产品:日志记录器接口interfaceLogger{voidlog(Stringmessage);}//2.具体产品:文件日志记录器classFileLoggerimplementsLogger{@Overridepublic
- 大数据技术是解决什么问题的?
@佳瑞
大数据
基础知识1TB(太字节)=1024GB1PB(拍字节)=1024TB大数据核心框架HadoopHadoop作为大数据技术生态的核心框架,主要解决了海量数据(TB/PB级)的存储、处理和分析难题,尤其是在传统数据库(如MySQL)和单机计算无法应对的场景下,提供了低成本、高可靠、可扩展的解决方案。其核心解决的问题可归纳为以下几点:海量数据的存储问题传统痛点:单机存储容量有限(如单服务器硬盘通常在TB
- 实时时间钟表
命苦的孩子
java梦javajvmspring
目录一、前提二、代码2.1窗口2.2时间显示三、代码整合一、前提在之前我们学会了JDK时间相关类,那我们就来小小地利用它来写一个”小玩意儿”。没看过的快去看一遍,在初识JDK时间相关类二、代码2.1窗口首先,你是不是得有一个窗口,那就用得上Swing了。importjavax.swing.*;publicclasstestextendsJFrame{privateJPanelwindonpanel
- 【Java代码审计 | 第五篇】XSS漏洞成因+实战案例
秋说
Java代码审计javaxss
未经许可,不得转载。文章目录XSS漏洞成因1、直接输出用户输入2、在JSP中使用EL表达式输出用户输入3、在Thymeleaf模板中输出用户输入4、在JavaScript中嵌入用户输入实战案例案例1案例2案例3XSSXSS(跨站脚本攻击,Cross-SiteScripting)是一种常见的Web安全漏洞,攻击者通过在网页中注入恶意脚本,使得这些脚本在用户的浏览器中执行。XSS攻击通常分为以下三种类
- 第一部分:MySQL 基础与核心架构(第二节: 存储引擎深度解析 之 InnoDB 架构与核心特性)
jarenyVO
Mysqlmysql架构数据库
第一部分:MySQL基础与核心架构(第二节:存储引擎深度解析之InnoDB架构与核心特性)文章目录第一部分:MySQL基础与核心架构(第二节:存储引擎深度解析之InnoDB架构与核心特性)一、InnoDB架构概述1.内存结构2.磁盘结构二、核心特性深度解析1.事务支持(ACID)2.多版本并发控制(MVCC)3.锁机制4.缓冲池优化5.双写缓冲区(DoubleWriteBuffer)三、关键性能优
- Python处理MySQL大数据量:分页查询与性能优化
AI天才研究院
AI人工智能与大数据pythonmysql性能优化ai
Python处理MySQL大数据量:分页查询与性能优化关键词:Python分页查询、MySQL性能优化、大数据量处理、LIMITOFFSET、索引优化摘要:当数据库表数据量达到百万级时,传统的LIMITOFFSET分页查询会出现明显性能瓶颈。本文从实际场景出发,用“图书馆找书”的通俗比喻拆解分页原理,结合Python代码示例和MySQL执行计划分析,详细讲解传统分页的痛点、优化思路(索引分页/覆盖
- java二叉树遍历
在Java中,二叉树遍历通常有三种方式:先序遍历(PreorderTraversal):首先访问根节点,然后递归遍历左子树,最后递归遍历右子树。中序遍历(InorderTraversal):首先递归遍历左子树,然后访问根节点,最后递归遍历右子树。后序遍历(PostorderTraversal):首先递归遍历左子树,然后递归遍历右子树,最后访问根节点。例如,对于以下二叉树:1/\23/\/4567先
- java学习笔记
期末课堂作业,以下内容为2024年上学期java课堂学习笔记202402150705目录[第1章:Java语言概述](#第1章:Java语言概述)[第2章:数据类型与运算符](#第2章:数据类型与运算符)[第3章:控制流程语句](#第3章:控制流程语句)[第4章:数组](#第4章:数组)[第5章:类与对象](#第5章:类与对象)[第6章:封装、继承与多态](#第6章:封装、继承与多态)[第7章:异
- 第5章:数据访问层
liangxh2010
微服务后端架构
5.1SpringDataJPA使用文字讲解SpringDataJPA是SpringData项目的一部分,旨在极大地简化JPA(JavaPersistenceAPI)的使用。它通过提供基于Repository接口的编程模型,让我们无需编写任何实现代码就能完成大多数数据访问操作。核心概念:Entity:一个使用@Entity注解的普通Java对象(POJO),它映射到数据库中的一张表。Reposit
- docker容器中连接宿主机mysql数据库
最近要在docker中使用mysql数据库,首先考虑在ubuntu的镜像中安装mysql,这样的脚本和数据库都在容器中,直接访问localhost:3306,脚本很简单,如下:importpymysql#建立数据库连接db=pymysql.connect(port=3306,host="localhost",user="root",password="password",database="my_
- MySql 运维性能优化
内存相关配置innodb_buffer_pool_size:这是InnoDB存储引擎最重要的参数,用于缓存数据和索引。建议设置为服务器可用内存的50%-70%(对于专用数据库服务器)。innodb_buffer_pool_size=8G#根据服务器内存调整innodb_log_buffer_size:用于缓存InnoDB日志。对于写入频繁的系统,可适当调大(默认16M):innodb_log_bu
- MySQL(150)如何进行数据库自动化运维?
辞暮尔尔-烟火年年
MySQL数据库运维mysql
数据库自动化运维(DBAAutomation)是确保数据库高效、安全运行的关键步骤。自动化运维可以涵盖备份、恢复、监控、性能优化、数据迁移等多个方面。以下是一个详细的指南,展示如何使用Java进行数据库自动化运维,包括代码示例。一、环境准备确保安装有Java开发环境(JDK)、Maven(或Gradle)以及一个数据库(例如MySQL)。我们将使用JDBC来进行数据库操作,以及QuartzSche
- 直接内存溢出
p&f°
JVMjvm
一、什么是直接内存直接捏成是一块由操作系统直接管理的内存,也叫堆外内存可以使用Unsafe或ByteBuffer分配直接内存可用-XX:MaxDirectMemorySize控制,默认是0,表示不限制二、为什么使用直接内存直接内存vs堆内存io效率高推荐参考:Java直接内存与非直接内存性能测试-阿里云开发者社区三、什么场景使用直接内存1有很大的数据需要存储,它的生命周期又很长2适合频繁的IO操作
- 单身程序员的幻想女友模拟器,面对对象的三大特征
运维帮手大橙子
开发语言javaintellij-idea对象面对对象windows程序人生
你new出来的不仅是一个对象,更是一段陪伴、一份慰藉。你孤独的时候想有人和你说说话。而真正的那个她,也一定会出现,和你肩并肩看代码、看星星。项目结构SweetGirlfriendSimulator/├──src/└──com/└──love/├──Main.java//启动类├──Person.java//抽象人类├──IdealGirlfriend.java//理想女友类(可爱温柔)└──Coo
- 初始Java中的继承
七十二小時
JavaSEjava开发语言
为什么需要继承Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序是就需要考虑。比如:狗和猫,它们都是动物。那能否将这些共性抽取呢?面向对象思想中提出了继承的概念,专门用来进行共性抽取,实现代码复用。继承概念继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段
- Java炼金术:从代码到加密货币——用Java铸造数字黄金的黑科技
墨夶
Java学习资料4java科技开发语言
一、智能合约:比“契约精神”更严谨的代码1.1用Java写ERC-20代币(以太坊上的数字黄金)//ERC-20代币合约实现(需配合Web3j框架)publicclassMyERC20Token{privatefinalStringname="JavaCoin";privatefinalStringsymbol
- android.support.v7.widget.RecyclerView$SavedState cannot be cast to android.widget.AbsListView$Sa...
Mis丶H
全部错误信息:java.lang.RuntimeException:UnabletostartactivityComponentInfo{com.enhance.greapp/com.kaomanfen.enhance.gre3k.activity.QuestionWordActivity}:java.lang.ClassCastException:android.support.v7.widge
- 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