- SpringMVC的执行流程
1、什么是MVCMVC是一种设计模式。MVC的原理图如下所示M-Model模型(完成业务逻辑:有javaBean构成,service+dao+entity)V-View视图(做界面的展示jsp,html……)C-Controller控制器(接收请求—>调用模型—>根据结果派发页面2、SpringMVC是什么SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,
- 2025最新Mybatis-plus教程(二)
三、CRUD(一)BaseMapper接口方法介绍BaseMapper中提供了crud方法,具体方法如下://插入一条记录intinsert(Tentity);//根据entity条件,删除记录intdelete(@Param(Constants.WRAPPER)Wrapperwrapper);//删除(根据ID批量删除)intdeleteBatchIds(@Param(Constants.COL
- 2025最新Mybatis-plus教程(四)
五、MyBatis-Plus的service封装(一)通用Service简介MyBatis-Plus除了通用的Mapper还有通用的Service层,这也减少了相对应的代码工作量,把通用的接口提取到公共。其实按照mp的这种思想,可以自己也实现一些通用的Controller。(二)通用Service方法介绍/***插入一条记录(选择字段,策略插入)**@paramentity实体对象*/defaul
- Java【代码 13】前端动态添加一条记后端使用JDK1.8实现map对象根据key的部分值进行分组(将map对象封装成指定entity对象)
シ風
..........JavaCodejava前端状态模式
前端动态添加一条记后端使用JDK1.8实现map对象根据key的部分值进行分组1.why2.前端3.后端处理4.总结1.why我是后端开发工程师,前端的很多函数不是很了解,所以很多问题期望在后端进行处理。2.前端有这样一个实现,前端要动态添加记录,然后将记录统一存储在一个字段里,代码如下://动态添加一行输入参数描写functionaddParamIn(){//输入参数列表varparamInLi
- 【Azure 存储服务】使用REST API操作Azure Storage Table,删除数据(Delete Entity)
云中路灯
问题描述使用AzureStorageTable的RESTAPI,实现根据过滤条件删除满足条件的数据,调用方法为DeleteEntity(AzureStorage)问题实现第一步:通过AzureStroage门户或者是其他工具(如:AzureStorageExplorer)生成Table的SASTokenimage.png第二步:准备过滤条件,用GETEntity进行验证,看是否可以查询出多条消息示
- c# SqlFunc.IF 使用方法
海天胜景
数据库c#
SqlFunc.IF是EF+(EntityFrameworkPlus)库中的一个功能,允许你在数据库查询中执行条件逻辑,类似于SQL中的IF语句。这对于在数据库级别执行条件查询非常有用,比如在选择字段时根据某些条件动态改变字段值。安装EF+首先,确保你的项目中已经安装了EntityFrameworkPlus。你可以通过NuGet包管理器来安装它:Install-PackageEntityFrame
- 模拟idea的SQL Params Setter插件,实现SQL语句的拼接
囧囧君
intellij-ideasqlwindows
packagecom.jd.doctor.v2.doctor.entity;importlombok.extern.slf4j.Slf4j;importjava.util.*;@Slf4jpublicclassSqlFormatUtil{staticStringpreparing="SELECTCOUNT(1)FROM(SELECTd.id,h.drug_code,h.drug_name,h.py
- OCCT Handle 学习导论
心瞳几何原语
学习OCCTOCCTQt
基本设计思想这是一个侵入式智能指针(类似于boost::intrusive_ptr),引用计数器直接嵌入在被管理的对象中(Standard_Transient基类),而不是单独分配内存存储计数器。核心成员变量private:Standard_Transient*entity;//指向被管理对象的指针引用计数管理机制BeginScope()-增加引用计数voidBeginScope(){if(ent
- .net core ef oracle,.NET Core EntityFrameworkCore(EF Core)介绍
weixin_39639698
.netcoreeforacle
目前最新的EFCore版本是3.0,最稳定的EFCore版本是2.2。EFCore的计划与.NETCore以及ASP.NETCore版本同步。EFCore是一个.NETStandard库,使用EFCore开发面向.NETCore的应用。生成.NETCore应用需要安装.NETCoreSDK。最后,不同的EF数据库提供程序使用可能需要特定的数据库引擎版本、.NET实现或操作系统。请确保可用的EFCo
- 框架面试题21SessionBean和EntityBean的区别?
理解SessionBean和EntityBean的区别是掌握传统JavaEE(J2EE)EJB架构的关键。它们代表了应用程序中不同的角色和责任。不过,需要特别强调:EntityBean在EJB3.0(2006年)及以后的版本中已被废弃,并被JPA(JavaPersistenceAPI)实体所取代。以下解释主要基于EJB2.x时代的概念,这对于理解历史代码或架构演变仍然重要。核心区别总结:特性Ses
- ECS设计框架
弟炜啊
游戏引擎java
ECS,Entity(实体)Component(组件)System(系统),是一个gameplay层面的框架,它是建立在渲染引擎,物理引擎之上的,主要解决的问题是如何建立一个模型来处理游戏对象的更新操作,是对数据集合的操作。Entity(实体),有点类似于Unity中的GameObject,在ECS中,它仅仅是一个Component(组件)的组合,不具有任何代表意义,它的意义就在于对其上的Comp
- ECS设计
断天涯zzz
游戏博客设计模式游戏
1、老外写的一篇讲解:什么是游戏开发的实体系统框架(https://www.richardlord.net/blog/ecs/what-is-an-entity-framework.html),对应的译文:https://blog.csdn.net/aisajiajiao/article/details/190112592、过程比较详细的基本框架(JS实现):如何通过实体组件系统在Javascri
- J2EE模式
奔走的蚂蚁~
设计模式java-eejava
系列文章目录J2EE模式特别关注表示层,这些模式是由SunJavaCenter鉴定的,包括:1、MVC模式(MVCPattern);2、业务代表模式(BusinessDelegatePattern);3、组合实体模式(CompositeEntityPattern);4、数据访问对象模式(DataAccessObjectPattern);5、前端控制器模式(FrontControllerPatter
- 设计模式(四)J2EE模式
J2EE模式这些设计模式特别关注表示层。这些模式是由SunJavaCenter鉴定的。包含以下模式:MVC模式(MVCPattern)业务代表模式(BusinessDelegatePattern)组合实体模式(CompositeEntityPattern)数据访问对象模式(DataAccessObjectPattern)前端控制器模式(FrontControllerPattern)拦截过滤器模式(
- MyBatis-Plus 与 Spring 新手指南
qq_31619295
mybatisspringjava
MyBatis-Plus与Spring新手指南概述本文档介绍MyBatis-Plus框架与Spring的集成方式,帮助新手快速理解数据访问层的设计模式和实现原理。核心架构1.分层架构概念Controller层(接口层)↓Service层(业务逻辑层)↓Repository层(数据访问层)↓Mapper层(数据映射层)↓Entity层(实体层)←→Database(数据库)2.Repository模
- uniapp打开第三方APP
界面架构师
uniappuni-app前端安卓
在uniapp中打开第三方应用,需要使用runtime模块1.调用第三方程序打开指定的URLplus.runtime.openURL(url,errorCB,identity)url(String):必选要打开的URL地址字符串类型,各平台支持的地址类型存在差异,参考平台URL支持表。errorCB(OpenErrorCallback):可选打开URL失败的回调,打开指定URL地址失败时的回调,并
- 如何打造个人品牌,从ID到IP
齐帆齐
如何打造个人品牌,从ID到IPID(IdentityDocument),是身份证标识号、账号、唯一编码、专属号码、工业设计、国家简称、法律词汇、通用账户、译码器、软件公司等各类专有词汇的缩写。我们的微信号,我们的任何平台注册号都有ID,我的ID就是我的首拼。有的人用首拼加上年份的名字,这是我们取ID的一个小窍门,让别人更方便地找到我们。从ID到IP,你要做好每一个细节,还要长期输出内容,尽可能在各
- Http请求中的特殊字符
问题一个springboot应用,包含如下controller@RestControllerpublicclassDemoController{@GetMapping("/get")publicResponseEntityget(@RequestParam(value="cid2")Stringcid2)准备测试数据Stringcid2="1;MFkwEwYHKoZIzj0CAQYIKoZIzj0
- 前后端分离项目进阶1---后端
屋外雨大,惊蛰出没
java开发语言
前端链接:前端解析一.项目目录二.关键代码分析1)Admin.javapackageimprov1.improv1.entity;publicclassAdmin{privateStringaccount;privateStringpassword;privateStringname;//构造方法、getter和setterpublicAdmin(){}publicAdmin(Stringacco
- Milvus向量数据库集合操作初尝试
麦克阿建
milvus
目录1.集合(Collection)2.字段(Field)3.索引(Index)4.分区(Partition)5.实体(Entity)6.代码示例6.1集合创建6.2向量插入6.3向量查询6.4向量删除1.集合(Collection)集合是Milvus中存储数据的最基本单元。它类似于数据库中的一个表(table)。集合定义了数据的整体结构,包括数据类型、字段、索引等。作用:集合是你数据的容器,用来
- 存储过程都有什么替代方案?
瑞信卡券提货系统
存储过程
存储过程的替代方案主要有以下几种:ORM(对象关系映射):ORM框架,如Hibernate、EntityFramework等,在客户端逻辑和数据库之间插入了一个层。这些框架能够生成SQL语句以在数据库上执行,从而避免了直接编写存储过程。使用ORM,开发人员可以在应用层表达复杂的业务逻辑,而无需将逻辑分散到存储过程中。ORM框架允许开发人员使用面向对象的方式操作数据库,提供了更高层次的抽象,使得代码
- 第5章:数据访问层
liangxh2010
微服务后端架构
5.1SpringDataJPA使用文字讲解SpringDataJPA是SpringData项目的一部分,旨在极大地简化JPA(JavaPersistenceAPI)的使用。它通过提供基于Repository接口的编程模型,让我们无需编写任何实现代码就能完成大多数数据访问操作。核心概念:Entity:一个使用@Entity注解的普通Java对象(POJO),它映射到数据库中的一张表。Reposit
- Qt 3D模块加载复杂模型
使用Qt渲染复杂的3D模型该怎么做呢?1.使用Qt3D模块示例如下:#include#include#include#include#include#include//创建基础3D场景Qt3DExtras::Qt3DWindowview;//创建根实体Qt3DCore::QEntity*rootEntity=newQt3DCore::QEntity;//添加相机Qt3DRender::QCamer
- 使用Mybatis-Plus进行单表操作
讴歌oge
Java后端mybatisjava数据库
使用updateById()修改数据时,值为null的属性不会被修改。intupdateById(@Param("et")Tentity);测试代码:@SpringBootTestpublicclassSpringBootMybatisPlusTest{@AutowiredprivateUserMapperuserMapper;@Testpublicvoidtest(){Useruser=newU
- Oracle分区表插入数据库时间时报ORA-14400
Indestructible
使用springdatajpa插入数据时,需要表中的createtime保存为数据库时间,而不是应用服务器时间,实现这个功能只需要在实体类上面加@DynamicInsert就可以了。代码如下:@Entity@Table(name="ENTITY")@DynamicInsertpublicclassEntity{@Column(nullable=false)privateDatecreatetime
- 本地开发用ASP.NET Core Web API项目创建及测试
way_hj
web开发asp.net后端
1.服务端代码(C#)1.1创建ASP.NETCoreWebAPI项目打开VisualStudio2022。选择“创建新项目”。选择“ASP.NETCoreWebAPI”模板,点击“下一步”。输入项目名称(如OracleApi),选择项目位置,点击“创建”。1.2安装Oracle数据库依赖使用NuGet管理包工具在项目中安装Oracle数据库的EFCore依赖:Oracle.EntityFrame
- Java——SpringBoot搭建(二)
文章目录Java成长中,学习记录一、SpringBoot二、controller控制层三、entity实体类四、mapper持久层五、service业务逻辑层总结Java成长中,学习记录小白记录学习springboot项目的过程,后续内容在专栏持续更新一、SpringBootspringboot可分为4层1.controller控制层2.entity实体类3.mapper持久层4.service业
- Doris用户管理
Edingbrugh.南空
运维大数据数据库sql
用户管理是Doris权限体系的核心,所有用户操作均依赖于严格的权限控制。本文将用户管理操作与对应权限要求深度绑定,详细说明用户创建、修改、删除等全流程的权限边界及操作规范。一、用户标识与权限基础用户标识(UserIdentity)唯一标识格式:username@'userhost',其中:username:用户名称(大小写敏感)userhost:登录IP限制(支持%通配符,如192.168.%)示
- ceph报错整理
时空无限
Kubernetescephlinux运维kubernetes
xxdaemonshaverecentlycrashedceph-scluster:id:d82dfc33-6a35-4fa4-b5f0-c32979b714cdhealth:HEALTH_WARN74daemonshaverecentlycrashedcephcrashlsIDENTITYNEW2024-07-26T06:17:34.480675Z_bd4c30b7-2347-4307-a9e6
- SpringBoot3+JPA+MySQL实现多数据源的读写分离(基于EntityManagerFactory)
没刮胡子
java软件开发技术实战专栏SpringBoot3JPAMySQL多数据源读写分离
1、简介在SpringBoot中配置多个数据源并实现自动切换EntityManager,这里我编写了一个RoutingEntityManagerFactory和AOP(面向切面编程)的方式来实现。这里我配置了两个数据源:primary和secondary,其中primary主数据源用来写入数据,secondary从数据源用来读取数据。注意1:使用Springboot3的读写分离,首先要保证主库和从
- ASM系列五 利用TreeApi 解析生成Class
lijingyao8206
ASM字节码动态生成ClassNodeTreeAPI
前面CoreApi的介绍部分基本涵盖了ASMCore包下面的主要API及功能,其中还有一部分关于MetaData的解析和生成就不再赘述。这篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。
在介绍前,先要知道一点, Tree工程的接口基本可以完
- 链表树——复合数据结构应用实例
bardo
数据结构树型结构表结构设计链表菜单排序
我们清楚:数据库设计中,表结构设计的好坏,直接影响程序的复杂度。所以,本文就无限级分类(目录)树与链表的复合在表设计中的应用进行探讨。当然,什么是树,什么是链表,这里不作介绍。有兴趣可以去看相关的教材。
需求简介:
经常遇到这样的需求,我们希望能将保存在数据库中的树结构能够按确定的顺序读出来。比如,多级菜单、组织结构、商品分类。更具体的,我们希望某个二级菜单在这一级别中就是第一个。虽然它是最后
- 为啥要用位运算代替取模呢
chenchao051
位运算哈希汇编
在hash中查找key的时候,经常会发现用&取代%,先看两段代码吧,
JDK6中的HashMap中的indexFor方法:
/**
* Returns index for hash code h.
*/
static int indexFor(int h, int length) {
- 最近的情况
麦田的设计者
生活感悟计划软考想
今天是2015年4月27号
整理一下最近的思绪以及要完成的任务
1、最近在驾校科目二练车,每周四天,练三周。其实做什么都要用心,追求合理的途径解决。为
- PHP去掉字符串中最后一个字符的方法
IT独行者
PHP字符串
今天在PHP项目开发中遇到一个需求,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下:
$str = "1,2,3,4,5,6,";
$newstr = substr($str,0,strlen($str)-1);
echo $newstr;
- hadoop在linux上单机安装过程
_wy_
linuxhadoop
1、安装JDK
jdk版本最好是1.6以上,可以使用执行命令java -version查看当前JAVA版本号,如果报命令不存在或版本比较低,则需要安装一个高版本的JDK,并在/etc/profile的文件末尾,根据本机JDK实际的安装位置加上以下几行:
export JAVA_HOME=/usr/java/jdk1.7.0_25  
- JAVA进阶----分布式事务的一种简单处理方法
无量
多系统交互分布式事务
每个方法都是原子操作:
提供第三方服务的系统,要同时提供执行方法和对应的回滚方法
A系统调用B,C,D系统完成分布式事务
=========执行开始========
A.aa();
try {
B.bb();
} catch(Exception e) {
A.rollbackAa();
}
try {
C.cc();
} catch(Excep
- 安墨移动广 告:移动DSP厚积薄发 引领未来广 告业发展命脉
矮蛋蛋
hadoop互联网
“谁掌握了强大的DSP技术,谁将引领未来的广 告行业发展命脉。”2014年,移动广 告行业的热点非移动DSP莫属。各个圈子都在纷纷谈论,认为移动DSP是行业突破点,一时间许多移动广 告联盟风起云涌,竞相推出专属移动DSP产品。
到底什么是移动DSP呢?
DSP(Demand-SidePlatform),就是需求方平台,为解决广 告主投放的各种需求,真正实现人群定位的精准广
- myelipse设置
alafqq
IP
在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的数倍。因此项目的可维护性、可复用性是衡量一个项目好坏的关键。而注释则是可维护性中必不可少的一环。
注释模板导入步骤
安装方法:
打开eclipse/myeclipse
选择 window-->Preferences-->JAVA-->Code-->Code
- java数组
百合不是茶
java数组
java数组的 声明 创建 初始化; java支持C语言
数组中的每个数都有唯一的一个下标
一维数组的定义 声明: int[] a = new int[3];声明数组中有三个数int[3]
int[] a 中有三个数,下标从0开始,可以同过for来遍历数组中的数
- javascript读取表单数据
bijian1013
JavaScript
利用javascript读取表单数据,可以利用以下三种方法获取:
1、通过表单ID属性:var a = document.getElementByIdx_x_x("id");
2、通过表单名称属性:var b = document.getElementsByName("name");
3、直接通过表单名字获取:var c = form.content.
- 探索JUnit4扩展:使用Theory
bijian1013
javaJUnitTheory
理论机制(Theory)
一.为什么要引用理论机制(Theory)
当今软件开发中,测试驱动开发(TDD — Test-driven development)越发流行。为什么 TDD 会如此流行呢?因为它确实拥有很多优点,它允许开发人员通过简单的例子来指定和表明他们代码的行为意图。
TDD 的优点:
&nb
- [Spring Data Mongo一]Spring Mongo Template操作MongoDB
bit1129
template
什么是Spring Data Mongo
Spring Data MongoDB项目对访问MongoDB的Java客户端API进行了封装,这种封装类似于Spring封装Hibernate和JDBC而提供的HibernateTemplate和JDBCTemplate,主要能力包括
1. 封装客户端跟MongoDB的链接管理
2. 文档-对象映射,通过注解:@Document(collectio
- 【Kafka八】Zookeeper上关于Kafka的配置信息
bit1129
zookeeper
问题:
1. Kafka的哪些信息记录在Zookeeper中 2. Consumer Group消费的每个Partition的Offset信息存放在什么位置
3. Topic的每个Partition存放在哪个Broker上的信息存放在哪里
4. Producer跟Zookeeper究竟有没有关系?没有关系!!!
//consumers、config、brokers、cont
- java OOM内存异常的四种类型及异常与解决方案
ronin47
java OOM 内存异常
OOM异常的四种类型:
一: StackOverflowError :通常因为递归函数引起(死递归,递归太深)。-Xss 128k 一般够用。
二: out Of memory: PermGen Space:通常是动态类大多,比如web 服务器自动更新部署时引起。-Xmx
- java-实现链表反转-递归和非递归实现
bylijinnan
java
20120422更新:
对链表中部分节点进行反转操作,这些节点相隔k个:
0->1->2->3->4->5->6->7->8->9
k=2
8->1->6->3->4->5->2->7->0->9
注意1 3 5 7 9 位置是不变的。
解法:
将链表拆成两部分:
a.0-&
- Netty源码学习-DelimiterBasedFrameDecoder
bylijinnan
javanetty
看DelimiterBasedFrameDecoder的API,有举例:
接收到的ChannelBuffer如下:
+--------------+
| ABC\nDEF\r\n |
+--------------+
经过DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())之后,得到:
+-----+----
- linux的一些命令 -查看cc攻击-网口ip统计等
hotsunshine
linux
Linux判断CC攻击命令详解
2011年12月23日 ⁄ 安全 ⁄ 暂无评论
查看所有80端口的连接数
netstat -nat|grep -i '80'|wc -l
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看TCP连接状态
n
- Spring获取SessionFactory
ctrain
sessionFactory
String sql = "select sysdate from dual";
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
String[] names = wac.getBeanDefinitionNames();
for(int i=0; i&
- Hive几种导出数据方式
daizj
hive数据导出
Hive几种导出数据方式
1.拷贝文件
如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。
hadoop fs –cp source_path target_path
2.导出到本地文件系统
--不能使用insert into local directory来导出数据,会报错
--只能使用
- 编程之美
dcj3sjt126com
编程PHP重构
我个人的 PHP 编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考 PHP 手册。希望下面的代码,会更有利于对递归以及静态变量的理解
header("Content-type: text/plain");
function static_function () {
static $i = 0;
if ($i++ < 1
- Android保存用户名和密码
dcj3sjt126com
android
转自:http://www.2cto.com/kf/201401/272336.html
我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码
1、通过普通 的txt文本存储
2、通过properties属性文件进行存
- Oracle 复习笔记之同义词
eksliang
Oracle 同义词Oracle synonym
转载请出自出处:http://eksliang.iteye.com/blog/2098861
1.什么是同义词
同义词是现有模式对象的一个别名。
概念性的东西,什么是模式呢?创建一个用户,就相应的创建了 一个模式。模式是指数据库对象,是对用户所创建的数据对象的总称。模式对象包括表、视图、索引、同义词、序列、过
- Ajax案例
gongmeitao
Ajaxjsp
数据库采用Sql Server2005
项目名称为:Ajax_Demo
1.com.demo.conn包
package com.demo.conn;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
//获取数据库连接的类public class DBConnec
- ASP.NET中Request.RawUrl、Request.Url的区别
hvt
.netWebC#asp.nethovertree
如果访问的地址是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu那么Request.Url.ToString() 的值是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree<&
- SVG 教程 (七)SVG 实例,SVG 参考手册
天梯梦
svg
SVG 实例 在线实例
下面的例子是把SVG代码直接嵌入到HTML代码中。
谷歌Chrome,火狐,Internet Explorer9,和Safari都支持。
注意:下面的例子将不会在Opera运行,即使Opera支持SVG - 它也不支持SVG在HTML代码中直接使用。 SVG 实例
SVG基本形状
一个圆
矩形
不透明矩形
一个矩形不透明2
一个带圆角矩
- 事务管理
luyulong
javaspring编程事务
事物管理
spring事物的好处
为不同的事物API提供了一致的编程模型
支持声明式事务管理
提供比大多数事务API更简单更易于使用的编程式事务管理API
整合spring的各种数据访问抽象
TransactionDefinition
定义了事务策略
int getIsolationLevel()得到当前事务的隔离级别
READ_COMMITTED
- 基础数据结构和算法十一:Red-black binary search tree
sunwinner
AlgorithmRed-black
The insertion algorithm for 2-3 trees just described is not difficult to understand; now, we will see that it is also not difficult to implement. We will consider a simple representation known
- centos同步时间
stunizhengjia
linux集群同步时间
做了集群,时间的同步就显得非常必要了。 以下是查到的如何做时间同步。 在CentOS 5不再区分客户端和服务器,只要配置了NTP,它就会提供NTP服务。 1)确认已经ntp程序包: # yum install ntp 2)配置时间源(默认就行,不需要修改) # vi /etc/ntp.conf server pool.ntp.o
- ITeye 9月技术图书有奖试读获奖名单公布
ITeye管理员
ITeye
ITeye携手博文视点举办的9月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。 9月试读活动回顾:http://webmaster.iteye.com/blog/2118112本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《NFC:Arduino、Andro