- Netty案例:HTTP服务器开发方案
目录1、需求2、核心设计思路3、代码实现4、部署与测试5、关键功能说明1、需求Netty服务器监听8080端口,支持浏览器访问、信息恢复和资源过滤功能2、核心设计思路HTTP协议处理:使用Netty的HTTP编解码器资源过滤:通过URI分析实现黑白名单状态恢复:利用ChannelHandlerContext维护请求状态安全控制:过滤危险资源类型和路径遍历攻击3、代码实现importio.netty
- 【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用
Jackilina_Stone
#DeepLearning【改进】YOLO系列YOLO人工智能python计算机视觉深度学习
目录一ultralytics公司的最新作品YOLOV111yolov11的创新2安装YOLOv113PYTHONGuide二训练三验证四推理五导出模型六使用文档:https://docs.ultralytics.com/models/yolo11/代码链接:https://github.com/ultralytics/ultralyticsPerformanceMetrics
- Step-by-Step Diffusion&Flow Model Notes
克斯维尔的明天_
机器学习人工智能深度学习算法
Step-by-StepNotesFundamentalsofDiffusion生成模型的目标与扩散模型的基本思想生成模型的目标生成模型的目的是给定一组来自某个未知分布p∗(x)p^{*}(x)p∗(x)的独立同分布(i.i.d.)样本,构建一个采样器,能够近似地从相同的分布中生成新的样本。例如,假设我们有一组狗的图像训练集,这些图像来自某个潜在分布pdogp_{\text{dog}}pdog,我
- 【编辑器】.editorconfig统一代码风格
七灵微
基本理论编辑器
概念定义:用于统一和规范不同开发者编辑器(IDE)中的代码格式设置的配置文件。作用保证团队成员用不同编辑器(VSCode、WebStorm、SublimeText、Vim等)编辑代码时,保持统一的代码风格和格式避免因编辑器默认设置不同,导致代码风格不一致、无意义的格式差异兼容性:不是所有编辑器都“天生”支持.editorconfig,但现在主流编辑器大多数都能识别,或者通过插件支持。原理.edit
- 【Python】edge-tts :便捷语音合成
宅男很神经
python开发语言
第一章:初识edge-tts——开启语音合成之旅1.1文本转语音(TTS)技术概述文本转语音(Text-to-Speech,TTS),顾名思义,是一种将输入的文本信息转换成可听的语音波形的技术。它是人机语音交互的关键组成部分,使得计算机能够像人一样“说话”。1.1.1TTS的发展简史与重要性TTS技术的研究可以追溯到上世纪中叶,早期的TTS系统通常基于参数合成或拼接合成的方法,声音机械、不自然。参
- HTTP协议:深入理解超文本传输协议
需要重新演唱
web#javaweb基础http网络协议网络
HTTP协议:深入理解超文本传输协议在当今的互联网时代,HTTP(HyperTextTransferProtocol,超文本传输协议)是构建Web应用的基石。无论是浏览网页、观看视频还是进行在线交易,HTTP协议都在背后默默地发挥着作用。本文将深入探讨HTTP协议的基本概念、请求和响应的结构、GET和POST请求的区别以及在实际开发中的应用。1.什么是协议?1.1协议的定义协议是一套规范或标准,由
- 提示词工程推荐阅读论文
司南锤
LLMprompt人工智能自然语言处理
论文目录提示工程少样本提示思维链提示自洽性生成知识提示自动提示工程多模态提示提示技巧对抗提示提示工程PromptEngineeringforText-BasedGenerativeModels论文链接:https://arxiv.org/abs/2107.13586简介:本文概述了提示工程,并讨论了它在各种基于文本的生成模型中的应用。少样本提示Few-shotLearningwithRetriev
- HTTP协议详解与深入理解
菜就多练少说
计算机网络http网络协议网络
一、什么是HTTP?HTTP(HyperTextTransferProtocol,超文本传输协议)是互联网上应用最广泛的一种通信协议,它定义了客户端与服务器之间通信的标准规则,主要用于浏览器与服务器之间的数据交换。HTTP是万维网的基础,网页浏览、API调用、数据交互等都基于HTTP协议完成。二、HTTP的基本原理HTTP属于应用层协议,采用请求-响应模式(Request-Response)。基本
- 【Linux】vim工具
nanguochenchuan
Linux操作系统linuxvim运维
Vim简介与应用场景Vim(ViImproved)作为一款源自Unix系统vi编辑器的增强版本,以其独特的模式化编辑和全键盘操作闻名。主要特点包括:轻量级:仅需几MB空间,适合服务器环境高度可定制:通过.vimrc和插件实现个性化配置跨平台:支持Linux、macOS、Windows等系统典型应用场景:服务器远程管理(通过SSH连接时的高效编辑)编程开发(支持300+语言的语法高亮)日志文件分析(
- UniApp 开发第一个项目
速易达网络
uni-app
UniApp开发第一个项目全流程指南,涵盖环境搭建、项目创建、核心开发到调试发布,结合最新实践整理而成,适合零基础快速上手:一、环境准备(5分钟)安装开发工具HBuilderX(官方推荐IDE):下载App开发版,安装路径避免中文或空格微信开发者工具(调试小程序必备):官网下载,安装后开启服务端口(设置→安全设置)Node.js(可选):用于包管理,建议v18+️
- 【C++】备忘录模式
OpenC++
设计模式c++备忘录模式设计模式
目录一、模式核心概念与结构二、C++实现示例:文本编辑器撤销功能三、备忘录模式的关键特性四、应用场景五、备忘录模式与其他设计模式的关系六、C++标准库中的备忘录模式应用七、优缺点分析八、实战案例:游戏角色状态存档九、实现注意事项如果这篇文章对你有所帮助,渴望获得你的一个点赞!备忘录模式(MementoPattern)是一种【行为型】设计模式,它允许在不破坏对象封装性的前提下,捕获并保存对象的内部状
- Day01: Spring启动流程:从main()到容器初始化 - 深度解析SpringApplication.run()执行链路
zhysunny
Springspringjava
目录一、SpringBoot启动概览二、SpringApplication.run()执行链路三、核心:AbstractApplicationContext.refresh()源码分析1.prepareRefresh()-准备刷新上下文2.obtainFreshBeanFactory()-获取新的BeanFactory5.invokeBeanFactoryPostProcessors()-调用Be
- 第10课:《ChatGPT提示工程》—— Guidelines(入门)
Soyoger
chatgptPrompt提示性工程大模型
前面关于Prompt介绍了那么多理论的知识点,从本节内容开始进入代码实战,提供一些提示的指南,帮助你获得想要的结果。特别地,介绍了两个关键原则,即如何编写提示来有效地促使工程师,鼓励你随时运行代码自己查看输出是什么样子的,并改变确切的提示,尝试几种不同的变化,以获得有关提示的输入和输出的经验。在开始实战之前,假设我们已经申请了ChatGPT的账号,并获取到了APIkey,如果没有账号的,建议先注册
- 雪球股票信息超级爬虫:开源项目指南及新手问题解决方案
柏克栋
雪球股票信息超级爬虫:开源项目指南及新手问题解决方案XueQiuSuperSpider雪球股票信息超级爬虫项目地址:https://gitcode.com/gh_mirrors/xu/XueQiuSuperSpider雪球股票信息超级爬虫是一个强大的股票数据爬取工具,专门设计用于从雪球网提取丰富的股票市场信息。本项目采用Java语言编写,充分利用了JDK8的函数式编程特性,旨在提供灵活且高效的股市
- Notepad++开源文本编辑器深入剖析与应用
大苏牙
本文还有配套的精品资源,点击获取简介:Notepad++是一款小巧而功能强大的开源文本编辑器,广受编程领域用户的欢迎。它提供基础文字编辑功能并集成多种程序员友好的特性,如语法高亮、代码折叠、查找替换、宏录制与回放等。Notepad++还支持多文档界面,能够处理多种编程语言,并具备强大的插件系统,用户可以根据需求进行功能扩展。本文深入探讨Notepad++的开源特性、工作效率提升、编程语言支持等关键
- Notepad++:程序员的高效代码编辑与自定义利器
如水蜜
本文还有配套的精品资源,点击获取简介:Notepad++是一款专为Windows系统设计的免费源代码编辑器,深受程序员推崇。它不仅支持多种编程语言的语法高亮和自动缩进功能,还有着强大的搜索替换功能、宏录制播放、内置FTP/SFTP客户端以及可插件扩展功能。此外,Notepad++的轻量级设计和高度自定义性(包括主题、快捷键和配置选项)使其在提高编码效率的同时,也满足了个性化需求。1.Notepad
- uniapp 拦截器
满楼、
前端uni-appvue.js
exportdefault{config:{baseURL:'https://xxx.xxx.com',header:{},dataType:'json',//#ifndefMP-ALIPAY||APP-PLUSresponseType:'text',//#endif//注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部
- 用于 Yii 2 的 AuthClient 扩展--安装
topofgods
Yii
https://github.com/yiisoft/yii2-authclient/blob/master/docs/guide-zh-CN/installation.md安装安装扩展要安装该扩展,请使用Composer。运行composerrequire--prefer-distyiisoft/yii2-authclient"~2.1.0"或在你的composer.json文件的“requir
- RAG技术栈详解:构建智能问答系统的核心组件
认知超载
AI人工智能
本文深度剖析RAG(Retrieval-AugmentedGeneration)技术栈的核心构成,助你快速搭建企业级知识增强系统一、RAG技术架构全景图二、核心组件技术选型1.检索模块(Retriever)向量数据库主流选择:Pinecone、Milvus、Qdrant、Weaviate新兴势力:ChromaDB(开源轻量级)、腾讯云向量数据库嵌入模型(Embedding)OpenAItext-e
- 【深度学习】卷积神经网络(CNN)原理
chaser&upper
深度学习神经网络卷积计算机视觉
【深度学习】卷积神经网络原理1.卷积神经网络的组成2.卷积层2.1卷积运算过程3.padding-零填充3.1ValidandSame卷积3.2奇数维度的过滤器4.stride-步长5.多通道卷积5.1多卷积核(多个Filter)6.卷积总结7.池化层(Pooling)8.全连接层9.总结1.卷积神经网络的组成定义卷积神经网络由一个或多个卷积层、池化层以及全连接层等组成。与其他深度学习结构相比,卷
- 文本lint工具:textlint全面指南
包椒浩Leith
文本lint工具:textlint全面指南textlintThepluggablenaturallanguagelinterfortextandmarkdown.项目地址:https://gitcode.com/gh_mirrors/te/textlint项目介绍textlint是一款可插拔的文本和Markdown语法检查工具,专为JavaScript编写,旨在解决自然语言文本校对的难题。与专注于
- 推荐一个强大的文本质量检查工具 —— textlint-rule-preset-JTF-style
幸竹任
推荐一个强大的文本质量检查工具——textlint-rule-preset-JTF-styletextlint-rule-preset-JTF-styleJTF日本語標準スタイルガイドfortextlint.项目地址:https://gitcode.com/gh_mirrors/te/textlint-rule-preset-JTF-style在这个信息爆炸的时代,良好的语言表达能力不仅在学术界,
- Ubuntu22+ROS2+QtCreator+Ros_Qtc_Plugin开发环境搭建
ZPC8210
ROSpythongithubgit
Ubuntu22+ROS2+QtCreator+Ros_Qtc_Plugin开发环境搭建1.写在前面最近重装了ubuntu22.04,被告知ubuntu22已经不支持ROS1了,想着ROS2毕竟是大势所趋,所以安装了ROS2准备进行相应的学习开发。折腾了两天,没发现一款好用的、适合ROS2开发的IDE。之前开发ROS1程序时一直用的QTC,我本以为QTC应该还没有对应的ROS2插件,没想到网上查找
- Python爬虫设置代理IP
菜鸟驿站2020
python
配置代理ipfrombs4importBeautifulSoupimportrequestsimportrandom#从ip代理网站获取ip列表defget_ip_list(url,headers):web_data=requests.get(url,headers=headers)soup=BeautifulSoup(web_data.text,'lxml')ips=soup.find_all(
- win11 edge浏览器在播放网页视频或者抖音刷视频中视频页面变暗变黑解决方法
在edge浏览器中访问edge://flags/搜索hardware-acceleratedvideodecode并且禁用掉即可
- 17.RestClient实现数据聚合功能带过滤条件
卷土重来…
windows
@OverridepublicMap>filters(RequestParamsparam){Map>res=newHashMapbrandList=getAggByName(aggregations,"brandAgg");ListcityList=getAggByName(aggregations,"cityAgg");ListstarList=getAggByName(aggregation
- Vue3组件通信
whhhhhhhhhw
vue.js前端javascriptvue组件通信学习前端框架
前言:在组件化开发中,需要将页面抽离成组件的形式,抽离之后就涉及到了组件中数据传递,可分为:父传子(props)、子传父(emits)、祖孙通信(provide和inject)、兄弟通信、全局通讯(pinia)。这次我就以博客的形式复习一下前三种通讯,想了解pinia可点击看我前面写的博客。1.父传子首先需要在父组件中的子组件标签中添加自定义属性,将需要传递的值放如自定义属性中,在子组件中通过de
- 树莓派实验——人脸识别
Rounie
opencvpython计算机视觉
importnumpyasnp#导入numpy科学计算库importcv2#导入OpenCV函数库#装载人脸识别特征文件face_cascade=cv2.CascadeClassifier('/usr/local/lib/python3.5/dist-packages/cv2/data/haarcascade_frontalface_alt.xml')cap=cv2.VideoCapture(0)
- UE4 官方文档阅读笔记——材质篇
毛甘木
UE4材质修改androidjava
UE4官方文档阅读笔记——材质篇UE4免费材质:QuixelBridge网站材质基本概念材质编辑器参考1.MaterialExpression向材质节点添加描述2.快捷键C添加注释3.修改注释颜色4.LivePreview实时预览5.LiveNode实时节点6.LiveUpdate实时更新7.AddRerouteNode添加变更路线节点ContenxtMenuUtilityMaterialPale
- SpringBoot读取properties中文乱码解决方案
大饼酥
springbootspringjava
目录一、问题描述二、解决方案2.1、网络上的解决办法2.1.1、修改IDEA编码2.1.2、改为yml配置2.1.3、读取时设置编码2.2、重写资源加载类(个人推荐)一、问题描述由于业务需求需要在application.properties中配置一个带有中文字符串的参数,注入到业务类中,但是发现注入的中文是乱码的。大概情况如下所示:packagecom.cnstar.test;importorg.
- 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