- flask 如何实现高并发
Msura
flaskpython后端开发语言
在Flask中,可以通过一些方法来实现高并发:使用Gunicorn或uWSGI作为WSGI容器,可以将Flask应用部署到多个工作进程上,实现多进程并发处理请求。使用Flask-SocketIO可以将Flask应用扩展为WebSocket应用,可以通过它实现长连接和消息推送功能,从而实现高并发。使用Flask-SQLAlchemy可以将Flask应用与数据库进行集成,可以使用数据库连接池来实现高效
- 解锁高性能Web应用:Gunicorn、Flask与Docker的高并发部署秘籍
我是瓦力
前端gunicornflask
引言在当今的互联网时代,高并发Web应用已成为许多企业的核心需求。无论是电商平台、社交网络还是实时数据分析系统,高并发能力直接影响到用户体验和业务成败。本文将带你深入探讨如何利用Gunicorn、Flask和Docker,实现高性能、高并发的Web应用部署。Gunicorn、Flask和Docker的基本概念Gunicorn:GreenUnicorn(简称Gunicorn)是一个PythonWSG
- 【容器镜像】:获取原始 rootfs 及各系统大小对比
Talbot3的笔记
容器dockerlinux
之前一秒构建了alpine的容器镜像,甚至使用静态编译的应用不需要rootfs就可以运行,这也是golang在容器时代大流行的主要原因。如果不用科学上网,就可以从零构建基础IT设施,速度又很快,这大大增强了研发进度。下面介绍各rootfs的来源linuxcontainers,并根据images.linuxcontainers.org的镜像结构和搜索结果中提供的索引解析方法,我们可以通过以下步骤获取
- 438. 找到字符串中所有字母异位词
Zannnne
leetcode
438.找到字符串中所有字母异位词题号:力扣438知识点:字符串,滚动窗口目标完成度:59/150总结题干:思路:1.如果s的长度小于p,则s中必然找不到与p是异位词的子串。2.异位词的特点是每个字母出现的次数一直,但是出现的顺序不一定相同。因此我们建立两个容器,来记录p中和滚动窗口中每个字母出现的次数,由于字母一共只有26个,所以容易大小为26。3.第一个for循环相当于是对scount进行初始
- Uniapp当中的scroll-view滚动条不出现或者触底刷新事件不触发
堕落年代
uniappuni-app
一、未正确设置容器高度问题描述scroll-view未设置明确高度或高度值无效,导致无法形成有效滚动区域。解决方案•使用行内样式直接设置height(如style="height:500rpx;"),避免类名样式被覆盖。•动态计算高度(例如通过uni.getSystemInfoSync()获取屏幕剩余高度)。二、滚动条样式被覆盖或隐藏问题描述•默认滚动条被全局CSS样式(如::-webkit-sc
- 运维系列(亲测有效):Docker pull拉取镜像报错“Error response from daemon: Get “https://registry-1.docker.io/v2”解决办法
坦笑&&life
运维运维docker容器
Dockerpull拉取镜像报错“Errorresponsefromdaemon:Get“https://registry-1.docker.io/v2”解决办法一、报错信息二、检查daemon.json文件1.编辑daemon.json2.重启服务三、查看dns解析四、添加host解析五、重新拉取镜像一、报错信息[root@node~]#dockerpullo2oa/o2serverUsingd
- Docker 入门指南:如何在 Ubuntu 上安装和使用 Docker
天青色等烟雨°
linuxdockerubuntu
Docker入门指南:如何在Ubuntu上安装和使用Docker安装Dockerdocker的配置安装k8s安装Docker官方Ubuntu存储库中提供的Docker安装软件包可能不是最新版本。Ubuntu官方的版本库中并不一定是Docker最新的安装包,为了保证是最新版,我们从Docker官方库来安装。首先,更新现有的软件包列表:$sudoaptupdate注意:如果无法更新,可能是你的软件源指
- Kubernetes集群版本升级
程序员Realeo
Java后端kubernetes容器云原生
集群升级注意事项升级集群版本建议逐步升级,比如v1.20.1–>v1.21.1–>v1.22.1–>v1.23.1–>v1.24.1,不能跨度过大,否则会报错。升级步骤查看集群版本[root@hadoop102~]#kubectlgetnodesNAMESTATUSROLESAGEVERSIONhadoop102Ready,SchedulingDisabledcontrol-plane,maste
- docker启动报错:Job for docker. service failed because the control process exited with error code
奇怪的大象
javadocker容器运维intellij-ideajava
1、在使用systemctlstartdocker时,一直报错,如下图。试了网上的方法:**a、修改docker.service文件;b、在daemon.json中增加代码,**都不能解决我遇到的情况。2、经过不懈努力,终于找到办法。在/etc/docker文件目录下,找到daemon.json,这个文件是我们在安装时创建的,如果没有的话,使用mkdir/etc/docker&&touchdaem
- spring BeanFactory解析
yulin959
spring
BeanFactory是spring容器的根容器,定义和约定了获取对象.定义了spring管理的对象的生命周期;生命周期如下:Beanfactoryimplementationsshouldsupportthestandardbeanlifecycleinterfacesasfaraspossible.Thefullsetofinitializationmethodsandtheirstandar
- C++中map和set的详解
yang789022
c++算法开发语言
C++中map和set的介绍与使用在C++编程中,map和set是标准模板库(STL)中两种非常重要的关联容器。它们基于平衡二叉搜索树(通常是红黑树)的数据结构来实现,提供了高效的数据存储和检索功能。本文将详细介绍map和set的特点、用法以及一些常见的操作示例。一、map的介绍与使用1.map的基本概念map是一个键值对容器,其中每个键都是唯一的,且按照升序排序。map的内部结构是红黑树,这使得
- 构建centos7镜像调用外部gpu
周子青
linux
sudovi/etc/docker/daemon.json{"runtimes":{"nvidia":{"path":"/usr/bin/nvidia-container-runtime","runtimeArgs":[]}}}/*{"registry-mirrors":["https://9cpn8tt6.mirror.aliyuncs.com"]}{"runtimes":{"nvidia":{
- C++中map和set的详解
漏洞猎人001
c++算法开发语言
C++中map和set的介绍与使用在C++编程中,map和set是标准模板库(STL)中两种非常重要的关联容器。它们基于平衡二叉搜索树(通常是红黑树)的数据结构来实现,提供了高效的数据存储和检索功能。本文将详细介绍map和set的特点、用法以及一些常见的操作示例。一、map的介绍与使用1.map的基本概念map是一个键值对容器,其中每个键都是唯一的,且按照升序排序。map的内部结构是红黑树,这使得
- BLAS loading error: Neither BLAS_VERSION is set nor does blas.spec return a library name.
霍志杰
开发语言dockermatlab
序言最近在使用Docker打包MATLAB程序,之前一直运行着好好的,没有一点问题,最近在银河麒麟v10系统上面部署,遇到了这个很恶心的问题。我都一度去怀疑是Docker的问题,最初感觉是Docker版本不对,我在高版本打包在低版本上运行,然后重装Docker,发现还是报错。然后搜索一番,发现可能是芯片不支持,MATLAB的bug,他没法自动找到路径,所以需要自己下载并指定blashttps://
- Docker拉取镜像 - 代理
纳兰雨天
docker容器代理模式
docker配置代理创建或编辑Docker配置文件sudomkdir-p/etc/systemd/system/docker.service.dsudonano/etc/systemd/system/docker.service.d/http-proxy.conf在文件中添加代理配置:[Service]Environment="HTTP_PROXY=127.0.0.1:7897"Environme
- Docker配置代理,以保证可以快速拉取镜像
霍志杰
docker容器运维
序言本来不想写了,然后记笔记了,但是今天遇到这个问题了再一次,还是写一写吧,加深一下印象因为Docker被墙了,所以拉取Docker镜像的时候,需要通过代理的方式xxxxxxxxxx,此处省略十几个字,然后,在目标主机上面配置代理,但是需要注意的是,docker并不能使用bash的代理配置,所以需要额外配置docker的代理,这里需要注意,一开始认为不需要所以一直不通。配置Docker使用代理的配
- 蓝易云 - kubernetes介绍,什么是k8s,kubernetes概念,组件介绍
蓝易云
kubernetes容器云原生驱动开发开发语言
Kubernetes(常简称为K8s)是一个开源的容器编排和管理平台,用于自动化部署、扩展和管理容器化应用程序。Kubernetes的概念和组件包括:Pod:最小的可部署单位,可以包含一个或多个容器,共享网络和存储空间。ReplicaSet:用于维护指定数量的Pod副本,确保应用的可用性和弹性。Deployment:用于管理Pod的版本和更新,实现滚动升级和回滚等。Service:定义一组Pod的
- janeczku / calibre-web忘记密码 命令行重置密码
慌雨
前端linux运维
根据博客https://blog.csdn.net/gaoxiangfei/article/details/137070897但一直报错:Passworddoesn’tcomplywithpasswordvalidationrules进入容器:dockerexec-itcontainer_id/bin/bash直到我尝试这样的方式:root@782e4226f457:/#python3/app/c
- Docker 安装 sentinel
TsengOnce
Dockerdockersentinel容器
Docker安装系列1、拉取[root@Tseng~]#dockerpullbladex/sentinel-dashboardUsingdefaulttag:latestlatest:Pullingfrombladex/sentinel-dashboard4abcf2066143:Pullcomplete1ec1e81da383:Pullcomplete56bccb36a894:Pullcompl
- 轻松掌握:Milvus向量数据库部署与RAG使用技巧
威研威语
人工智能数据库milvus数据库人工智能RAG
Milvus简介Milvus是一款开源的向量数据库,由Zilliz开发并维护,适合用于机器学习和人工智能领域。是一款专为处理向量查询而设计的数据库,Milvus能够对万亿级向量进行索引。Milvus官网:https://milvus.io/Milvus中文文档:https://www.milvus-io.com/Milvus部署环境准备Linux操作系统Docker19.03或更高版本Docker
- docker拉取 sentinel 并启动
追风林
dockersentinel容器
拉取镜像dockerpullbladex/sentinel-dashboard:latest#默认拉取最新版启动镜像访问账号密码都是默认的sentinel
- 征程 6 基于 Linux 和 Node-Locked License 配置 DSP 开发环境
自动驾驶算法
说明:该文档以征程6上使用的Q8DSP安装为例,同样的步骤在征程5上使用方法类似只是征程6使用的DSP为VP61.获取所需文件在配置征程6的DSP开发环境前,您需要获取以下文件:标准工具链发布包部分(请联系地平线项目对接人获取)OpenExplorer算法工具链Docker镜像OpenExplorer算法工具链交付包(OE包中提供了大量示例,包括DSP示例)OpenExplorer算法工具链中文文
- kubernetes集群部署kubesphere环境
weixin_43806846
devopskubernetes自动化
安装步骤选择4核8G(master)、8核16G(node1)、8核16G(node2)三台机器,按量付费进行实验,CentOS7.9安装Docker安装Kubernetes安装KubeSphere前置环境安装KubeSphere1.安装Docker配置docker的yum源地址yum-yinstallwgetwgethttps://mirrors.aliyun.com/docker-ce/lin
- kubernetes-helm详细介绍及使用
冷漠程序员小哥哥
kuberneteskuberneteskuberctldocker
致读者完整入门示例请参考:Helm完整入门实战Helm本指南介绍了使用Helm来管理Kubernetes集群上的软件包的基础知识。在这之前,假定您已经安装了Helm客户端。如果您仅对运行一些快速命令感兴趣,则不妨从快速入门指南开始。本章包含了Helm命令的详细说明,并解释如何使用Helm。三大概念Chart代表着Helm包。它包含在Kubernetes集群内部运行应用程序,工具或服务所需的所有资源
- 【笔记】Helm-1 介绍
许科大
Helm云原生kubernetesk8s
欢迎欢迎使用Helm文档。Helm是Kubernetes的包管理器,您也可以在CNCFHelm项目过程报告阅读详细的背景信息。HelmHelmProjectJourneyReport|CNCF文档构成Helm有大量的文档。高级组织概述会让您知道在哪里查找特定内容。1、教程如果您是新手,从这里开始,手把手带您通过一系列的步骤创建您的第一个Helmchart。Helm|Docs2、主题引导以相当高的水
- 2025年Python后端开发指南:从基础到云原生实践
ctrl_cv工程师¥
云原生djangoflaskpycharm
在2025年,Python后端开发已全面进入云原生与智能化时代。开发者不仅需要掌握传统后端技术栈,还需融合容器化、AI辅助编程等新兴技术。本文基于行业最新趋势与最佳实践,系统梳理Python后端开发的核心要点与进阶方向,涵盖开发环境、架构设计、性能优化等关键领域。一、开发环境与工具链1.环境配置标准化Python版本:推荐Python3.12+,支持模式匹配(PatternMatching)和更优
- ollama官方安装包
哈拉少12
人工智能
一、官方安装包基本信息最新版本Windows版:v0.6.0.0(国内镜像版,大小999.8M)Linux版:v0.6.0(官方版,大小1.59G)macOS版:支持通过官网直接下载(版本号与Windows/Linux同步)支持平台桌面端:Windows(Win7及以上)、Linux(x86_64/ARM64)、macOS容器化部署:支持Docker(需配合DockerDesktop)
- 【Docker项目实战】使用Docker部署PS-web项目
江湖有缘
Docker部署项目实战合集docker前端容器
【【Docker项目实战】使用Docker部署ps-web项目一、PS-web介绍1.1PS-web简介1.2PS-web使用场景二、本地环境介绍2.1本地环境规划2.2本次实践介绍三、本地环境检查3.1检查Docker服务状态3.2检查Docker版本3.3检查dockercompose版本四、构建ps-web镜像4.1拉取项目4.2查看项目内容4.3编写Dockerfile文件4.4构建镜像4
- SpringBoot 自动装配
SilvertipSage
springboot后端java
SpringBoot自动装配:自动装配是Springboot框架的一个核心特性之一。SpringBoot的自动装配通过条件注解和自动配置类,根据应用需求自动配置组件,简化配置过程,提高开发效率不需要手动配置许多繁琐的细节,而是通过自动装配来简化配置过程好处:简化配置,减少了出错的可能性,提高了开发效率,提升了应用程序的可维护性和可扩展性。自动把第三方组件的bean加到IOC容器里,在SpringB
- Spring Cloud 与微服务学习总结(14)—— 云原生时代,如何从 Java 开发者转型微服务?
一杯甜酒
SpringCloud与微服务java云原生springcloud微服务微服务架构
前言根据维基百科定义,微服务不是整体应用程序中的一个层。相反,微服务是一个独立的业务功能,具有清晰的接口,并且可以通过内部组件实现分层架构。从战略角度来看,微服务架构基本上遵循“做一件事,就要做得好”的Unix哲学。为了应对传统单体架构的缺陷,微服务架构被企业广泛应用。然而,实践之前有很多问题都需要提前考虑清楚,比如Java背景的开发者是否更有优势?微服务、容器化、DevOps和CI/CD之间的关
- 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