- 力扣刷题-热题100题-第26题(c++、python)
weixin_44505472
leetcodec++算法python
142.环形链表II-力扣(LeetCode)https://leetcode.cn/problems/linked-list-cycle-ii/?envType=study-plan-v2&envId=top-100-liked哈希法c++中有unordered_set,python中有set,作为哈希的集合,遍历链表时,若当前指针在集合中就说明有环,返回当前指针,否则将指针加入集合,最后若是正
- P3375 【模板】KMP
三流搬砖艺术家
算法数据结构c++
目录题目描述输入格式输出格式输入输出样例说明/提示样例1解释数据规模与约定代码无注释版有注释版题目描述给出两个字符串s1和s2,若s1的区间[l,r]子串与s2完全相同,则称s2在s1中出现了,其出现位置为l。现在请你求出s2在s1中所有出现的位置。定义一个字符串s的border为s的一个非s本身的子串t,满足t既是s的前缀,又是s的后缀。对于s2,你还需要求出对于其每个前缀s′的最长border
- 多台 Windows 电脑之间共享鼠标和键盘,并支持 剪贴板同步(复制粘贴)
旧故新长
计算机外设
MouseWithoutBorders是微软出品的一款工具,用于在多台Windows电脑之间共享鼠标和键盘,并支持剪贴板同步(复制粘贴)。它是PowerToys工具集中的一部分,但你提到的是中文界面,这没问题,软件会根据系统语言自动调整。如果你看到的是中文界面,应该就是这个工具了。下面是如何确认和使用它:操作步骤:确认是否安装PowerToys:打开开始菜单,搜索PowerToys,看看有没有这个
- HCIE笔记填空题(H12-891)
卓应
笔记智能路由器
1、传统网络的流量由Edge节点接入VXLAN网络,VXLAN网络通过()(英文填写,首字母大写)节点访问VXLAN外部网络正确答案:Border2、在配L3VPNv4verSRv6BE时,若在SR域内采用了RR,则需要在RR上配置()(请输入完整命令,不可以有多余的空格,所有字母均小写)命令保证两端PE可以正确学习到VPNv4路由正确答案:undopolicy-target想要解答版的朋友可以V
- mybatis里in关键字拼接id问题
williamyi74
mybatisjavasql
我们一般会把ids集合用StrUtil.join(‘,’)转成"1,2,3"这种形式然后放入in中我们会这么写:selectid,nick_name,iconfromtb_userwhereidin(#{ids})orderbyFIELD(id,#{ids})结果发现sql执行是这样的:selectid,nick_name,iconfromtb_userwhereidin('1011,1022')
- 代码随想录打卡Day58
编程绿豆侠
代码随想录深度优先算法c++数据结构leetcode
今天一共三道题,前两道看题解的,最后一道自己AC的,总体不算特别难。110.字符串接龙(卡码网)这道题没什么思路,直接看的题解,这道题用广度优先搜索是最合适的,这里我也明白了一个道理,到凡涉及到最短路径问题,用BFS是最合适的,要么就找不到,一旦找到了,就一定是最短的。这道题的字符串字典用unordered_set来实现,用来存储strList中的字符串。此外,本题还需要定义一个哈希表,键为字符串
- 碎点篇—— oracle 语法和练习
万道一
碎章知识碎点
返回主目录--selectfromwherehavinggroupbyorderby的正确执行顺序为:--from-->where-->groupby-->having-->select-->orderby----------------------------------------------------------1、去重:distinct必须放在开头,多字段,每个字段不一样才去重--2、条
- 关于数据结构--不同的哈希表
wyshh119
数据结构散列表
基于哈希表的两个容器unordered_set和vector。unordered_set是无序的,不重复的储存容器,对于那些需要按一定顺序输出的内容只用unordered_set是报错的,他是按随机顺序输出的。所以这时候往往需要同时利用两个容器。vector负责按插入顺序记录唯一元素。unordered_set负责以O(1)的复杂度判断元素是否存在。例如单词去重:#include#include#
- map类的介绍及使用
三吋时光
map的介绍及使用1、map的介绍1、map是关联式容器,它按特定的次序(按照key来比较)存储由键key和值value组合而成的元素2、在map中,键值key通常用于排序和唯一标识元素,值value中存储与键key关联的内容。3、map按照键key来比较排序4、map中通过键值访问单个元素比unordered_map容器慢,但map允许根据顺序对元素进行直接迭代5、map支持下标访问,即map[
- C++ map, unordered_map
JCjunior
C/C++c++
1.map1.1map简介map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,能在处理一对一数据时,在编程上提供快速通道。容器map的底层实现是红黑树,表明其内部数据结构是一个map对应一颗红黑树(一种非严格意义上的平衡二叉树),红黑树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,由小
- 扩展 MybatisPlus 添加强制更新字段的方法
会功夫的李白
Javamybatismybatisplus数据库
因为MybatisPlus的update方法都是默认不更新值为null的字段,所以需要进行扩展,以适应某些强制更新字段的场景使用示例OrderItemDOorderItemDOUpdate=BeanUtils.toBean(orderItemDO,OrderItemDO.class);orderItemDOUpdate.setId(orderItemDO.getId());//退回到分发将清空所有
- 【SQL多表查询完全指南】从零到精通:5种JOIN详解与性能优化实战
2401_83194332
sql性能优化数据库
附20+示例代码与思维导图,轻松应对复杂数据关联开篇:为什么需要多表查询?在电商系统中,用户信息存储在users表,订单数据在orders表,商品信息在products表。要分析“每个用户的消费金额”,必须关联多张表进行查询。这正是多表查询的核心价值:通过表间关联,挖掘数据深层关系。一、多表查询基础:理解关系代数1.1表关系类型关系类型描述示例一对一一条记录对应另一表的一条记录用户↔身份证信息一对
- MySQL 索引优化避坑指南:为什么你的 B+树索引反而降低了查询速度?
恒星漫游者
mysqlb树后端
引言:索引的“蜜糖”与“毒药”你是否曾遇到这样的场景:明明精心设计了索引,期望查询性能飞速提升,结果EXPLAIN一看——全表扫描!你不禁怀疑人生:“索引不是用来加速查询的吗?为什么反而拖慢了速度?”别慌,你并不是一个人。MySQL索引,尤其是B+树索引,就像一把双刃剑,用得好,它能让查询效率飞升;用得不好,可能会让数据库性能一落千丈。曾经有位DBA朋友,满怀信心地在orders表上创建了一个(u
- Css环形旋转立体感动画
不想上班只想要钱
前端css前端
Css环形旋转立体感动画index.htmlCss环形旋转立体感动画style.csshtml{height:100%;}body{background:#222222;background:linear-gradient(#222222,#4e6e79);overflow:hidden;}.c{width:240px;height:240px;border:3pxsolid#98bdcd;bor
- c++进阶之------哈希(开放寻址法)
卷卷的小趴菜学编程
C++哈希算法散列表算法c++c语言visualstudiocode数据结构
注意:本篇文章内容我们了解即可,后续对unordered_set和unorder_map的封装是基于哈希桶实现的!首先,为了理解开放寻址法,我们要从哈希的概念入手,哈希简单来说就是对一堆数,通过某种特定的方式(即哈希函数)将其映射出来,但是有可能两个数会被映射到同一位置上,这便产生了冲突,我们成为哈希冲突,为了解决这一冲突,我们可以采用开放寻址法来解决问题!1.基本原理开放寻址法的核心思想是:当发
- 海康工业相机SDK错误码常见场景解析
爱凤的小光
海康机器人网络常用网站
文章目录1.MV_OK**0x00000000**成功,无错误2.MV_E_HANDLE**0x80000000**错误或无效的句3.MV_E_SUPPORT**0x80000001**不支持的功能4.MV_E_BUFOVER**0x80000002**缓存已满5.MV_E_CALLORDER**0x80000003**函数调用顺序有误6.MV_E_PARAMETER**0x80000004**错
- @Transactional 注解配置信息整理(完整10项),最后表格整理Propagation 传播行为对比表和Isolation 隔离级别对比表
爱的叹息
python数据库开发语言
@Transactional注解配置信息整理(完整10项)一、核心配置参数详解(10项)参数名作用默认值示例值代码示例value事务管理器别名(与transactionManager同义)默认事务管理器"myTxManager"@Transactional(value="orderTxManager")transactionManager指定事务管理器名称(多数据源时必填)默认事务管理器"data
- MySQL表设计
·薯条大王
数据库mysqlsql数据库
一、基础规范命名规范表名/字段名:小写+下划线,避免保留字(如order→orders)。order→orders)。见名知义:user、order_detail。避免冗余命名:user表字段用name而非user_name。存储引擎InnoDB(默认):支持事务、行锁、外键,适用高并发写入。MyISAM:仅适合读多写少场景(如日志表),不支持事务。字符集统一使用utf8mb4(支持Emoji及生
- CA2 - React - E-Commerce website
后端
CA2-React-E-Commercewebsite2025/5/8InProgressNEXTUP:Submitassignment2025/3/27to2025/5/22Attempt1AddcommentDetails1-IntroductionAreactivewebsitewillscaleandreorderelementstosuitthescreensizeofthedevice
- SpringBoot分布式项目订单管理实战:Mybatis最佳实践全解
潘多编程
springboot分布式mybatis
一、架构设计与技术选型典型分布式订单系统架构:[网关层]→[订单服务]←→[分布式缓存]↑↓[用户服务][支付服务]↓↓[MySQL集群]←[分库分表中间件]技术栈组合:SpringBoot3.xMybatis-Plus3.5.xShardingSphere5.3.xRedis7.xSeata1.7.x二、核心实现步骤1.订单表设计(分库分表场景)CREATETABLEt_order_0(orde
- HTML+CSS+Vue3的静态网页,免费开源,可当作作业使用
violet_evergarden.
htmlcss开源前端vue.js
拿走请吱一声,点个关注吧,代码如下,网页有移动端适配HTMLDocumentHomeTrackMyOrderContactusFAQsReturnPolicyPaymentMethodsTermsofServicePrivacyPolicyShippingPolicyLASTDAY60%OFFIntelligentElectricHeatingScarf$45.96$22.98HURRY!ONLY
- 《2025年MySQL性能翻倍秘籍:这6个新特性让慢查询原地消失》
小小鸭程序员
javaspring数据库mysqlpython
一、为什么你的MySQL越用越慢?2025年数据量爆炸现状:单表过亿成常态,传统分页查询耗时从1s→10s高频写入场景(如物联网)导致锁竞争激增50%性能对比实验:--传统方式(耗时3.2s)SELECT*FROMordersWHEREuser_id=1000LIMIT1000000,10;--2025新方案(耗时0.15s)SELECT*FROMordersWHEREuser_id=1000AN
- Chapter 33&Chapter 34:Case Study & The Missing Chapter_《clean architecture》notes
lianghu666
架构师架构开发语言笔记
PartIII:CaseStudy&TheMissingChapterChapter33:CaseStudy-VideoSalesSystemCoreConcepts:UseCaseAnalysisFocusesonbusinessworkflowslikeorderprocessing,paymenthandling,andinventorymanagement.ComponentArchite
- mysql 对中文内容按拼音首字母做 ascii 排序
mysql按中文内容的拼音首字母做ascii排序ORDERBYCONVERT(`name`USINGgbk)COLLATEgbk_chinese_ciASC;如上所示,加入到你的sql中去即可。
- WPF路由事件全解析:从原理到复杂场景实践
Leon@Lee
wpf
一、路由事件体系架构1.1树形结构与事件传播WPF通过逻辑树和可视化树构建了独特的UI层级结构。逻辑树由布局容器和控件组成(如Window>Grid>Button),而可视化树则细分为具体的视觉元素(如Button的边框、文本块)。路由事件在这两种树结构中的传播路径决定了其影响力范围。示例可视化树结构:Button└─Border└─ContentPresenter└─TextBlock1.2事件
- 如何优化SQL查询性能?
破碎的天堂鸟
学习教程数据库
以下是从多维度综合整理的SQL查询性能优化方案,结合索引设计、查询结构优化、数据库架构调整及硬件配置等关键因素,提供一套系统性的解决方案:一、索引优化策略(核心优化方向)精准索引定位在WHERE、JOIN条件、ORDERBY子句高频字段创建索引联合索引遵循最左前缀原则,区分度高的列靠左字符串索引采用前缀优化,如ALTERTABLEADDINDEX(col(20))避免在低选择性字段(如性别)建索引
- mysql sql 子查询 执行顺序_MySQL,SQL语句执行顺序
文章写-发
mysqlsql子查询执行顺序
1.SQL执行顺序:select考生姓名,max(总成绩)asmax总成绩fromtb_Gradewhere考生姓名isnotnullgroupby考生姓名havingmax(总成绩)>600orderbymax总成绩(1).首先执行FROM子句,从tb_Grade表组装数据源的数据(2).执行WHERE子句,筛选tb_Grade表中所有数据不为NULL的数据(3).执行GROUPBY子句,把tb
- Java核心基础七:锁机制和并发工具类
HongXuan-Yuan
Java开发java开发语言
一、锁锁的定义锁(Lock)是多线程编程中用于控制对共享资源访问的同步机制,确保同一时刻只有一个或特定数量的线程能访问资源,避免数据不一致或竞态条件(RaceCondition)。锁的作用互斥(MutualExclusion):防止多个线程同时修改共享资源。可见性(Visibility):确保线程对共享资源的修改对其他线程立即可见。有序性(Ordering):保证代码执行顺序符合预期(如通过锁同步
- LeetCode 347.前k个高频元素【c++】
G.X.Y~苏
LeetCodeleetcodec++算法
目录一、题目二、解题思路三、代码四、补充知识1.unordered_map与map2.priority_queue一、题目给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。示例1:输入:nums=[1,1,1,2,2,3],k=2输出:[1,2]示例2:输入:nums=[1],k=1输出:[1]提示:1topKFrequent(vector&nums
- std::unordered_map和 std::map的区别
打工人你好
算法哈希算法数据结构
最近在做程序能行分析,发现std::map比较耗时,于是去了解下:std::unordered_map和std::map1.实现方式:std::unordered_map:使用哈希表实现。元素根据键的哈希值存储在桶(buckets)中。提供平均常数时间复杂度的查找、插入和删除操作。std::map:使用红黑树(一种自平衡二叉搜索树)实现。元素按键的顺序排序。提供对数时间复杂度的查找、插入和删除操作
- 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