在C++的for循环中,for(初始化;条件;更新)的三个参数都是可选的,你可以不写其中的一个、两个,甚至全部三个参数。1.不写初始化如果循环变量已经在循环外部定义并初始化,可以省略for循环中的初始化部分。例子:inti=0;//初始化在外部完成for(;i=5){break;//手动退出循环}cout=5){break;//手动退出循环}cout<
【Mybatis】动态 SQL:代码与数据的灵动共舞,奏响数据库查询的华丽乐章
m0_74824483
面试学习路线阿里巴巴数据库mybatissql
前言???本期讲解关于SpringIOC&DI的详细介绍~~~??感兴趣的小伙伴看一看小编主页:-CSDN博客??你的点赞就是小编不断更新的最大动力??那么废话不多说直接开整吧~~目录???1.动态SQL1.1标签>标签1.2标签1.3标签1.4标签>标签1.5标签1.6标签???2.总结**??**1.动态SQL动态SQL是Mybatis的强特性之,能够完成不同条件下不同的sql拼接可以参考官档
模型优化之强化学习(RL)与监督微调(SFT)的区别和联系
搏博
深度学习人工智能机器学习架构transformer
强化学习(RL)与监督微调(SFT)是机器学习中两种重要的模型优化方法,它们在目标、数据依赖、应用场景及实现方式上既有联系又有区别。想了解有关deepseek本地训练的内容可以看我的文章:本地基于GGUF部署的DeepSeek实现轻量级调优之一:提示工程(PromptEngineering)(完整详细教程)_deepseekgguf-CSDN博客本地基于GGUF部署的DeepSeek实现轻量级调优
谈谈 ES 6.8 到 7.10 的功能变迁(6)- 其他
INFINI Labs
elasticsearchjenkins大数据
这是ES7.10相较于ES6.8新增内容的最后一篇,主要涉及算分方法和同义词加载的部分。自定义算分:script_score2.0Elasticsearch7.0引入了新一代的函数分数功能,称为script_score查询。这一新功能提供了一种更简单、更灵活的方式来为每条记录生成排名分数。script_score查询由一组函数构成,包括算术函数和距离函数,用户可以根据需要混合和匹配这些函数,以构建
设计模式之创建型
Good Note
设计模式设计模式javascript开发语言
大家好,这里是编程Cookbook,关注公众号「编程Cookbook」,获取更多面试资料。本文是对设计模式中创建模式的详细讲解,共5种,分别是单例模式、工厂模式、抽象工厂模式、建造者模式和原型模式。文章目录常用创建型模式单例模式什么是单例模式?单例模式的特点单例模式的使用场景单例模式的实现方式1.懒汉式(LazyInitialization)2.饿汉式(EagerInitialization)3.
设计模式之责任链模式
Forget the Dream
设计模式设计模式责任链模式javac++
引言在职场中,请假流程大家都再熟悉不过:申请1至2天的假期,只需直属主管审批即可;若要请假3至5天,就需部门负责人进行复核;而超过5天的假期申请,则必须由总经理最终定夺。要是遇到超长假期,甚至得上报至总裁或董事长那里。这种层层递进的审批机制,宛如一套设计精妙的权限传递系统:每位处理者只能在自己的职权范围内行使决策权,一旦请求超出了当前处理者的能力范围,便会依照既定的权力链条自动流转,直至抵达具备相
设计模式之适配器模式
Forget the Dream
设计模式设计模式适配器模式c++java
引言狂风呼啸,一场强台风正以迅猛之势逼近你所在的城市,带来极大的威胁。而祸不单行,市中心的一座大楼突发火灾,情况万分危急。应急指挥中心里气氛凝重,领导紧盯着屏幕,一边是GIS系统中由气象部门实时更新的降雨量、风速数据以及精准的地图信息,这些数据对于掌握台风的动态和影响范围至关重要;另一边则是CAD系统中结构工程师精心标注的建筑承重参数,这是评估大楼及周边建筑安全状况的关键依据。领导需要在极短时间内
最大公约数和最小公倍数
王嘉俊925
算法算法c++C++
最大公约数和最小公倍数最大公约数两个数a和b的最大公约数是指它们所有公约数中最大的那个,通常记作gcd(a,b)。定义公约数:能同时整除a和b的正整数。最大公约数:所有公约数集合中的最大值。例如:gcd(12,18)=6,因为6是12和18的最大公约数。求解方法1.欧几里得算法(辗转相除法)原理:对于正整数a和b,有gcd(a,b)=gcd(b,a%b),其中%表示取模运算(求余数)。该方法通过不
计算机组成原理----计算机系统概述
王嘉俊925
计算机组成原理计组计算机组成原理
计算机分类按照输入输出信号的形式可以将电子计算机分为:电子模拟计算机和电子数字计算机。电子模拟计算机定义:采用连续的模拟信号(如电压、电流)进行输入和输出,模拟物理量之间的关系。特点:计算过程基于模拟电路,反映连续变化的物理现象。擅长处理微分方程、动态系统仿真。应用:早期用于科学计算(如飞行模拟、天气预报)和工程设计。局限:精度较低,难以编程和扩展。电子数字计算机定义:使用离散的数字信号(通常为二
【设计模式】状态机详解与Spring State Machine实践
小徐Chao努力
设计模式设计模式springjava后端架构
状态机详解与SpringStateMachine实践目录状态机基础1.1什么是状态机1.2状态机的基本概念1.3状态机类型SpringStateMachine概述2.1核心组件2.2工作原理SpringStateMachine实战-订单状态流转3.1环境配置3.2状态与事件定义3.3状态机配置3.4状态机持久化3.5状态监听器实现3.6状态事件工具类3.7业务服务实现3.8接口控制器3.9运行效果
【并发编程】一文帮你搞懂并发编程常见概念-计算机架构去理解
小徐Chao努力
源码分析并发编程架构javaspring
原子操作与并发控制详解目录1.原子操作基础1.1原子操作定义1.2原子操作的重要性1.3原子操作的应用场景2.处理器实现原子操作2.1使用总线锁保证原子性2.1.1总线锁的定义2.1.2总线锁的工作原理2.1.3总线锁的优缺点2.2使用缓存锁保证原子性2.2.1缓存锁的原理2.2.2缓存锁的实现方式2.2.3缓存锁的优点和限制2.2.4缓存锁与总线锁的对比3.缓存行与内存架构3.1缓存行的定义3.
Linux 程序员必修课:命令、脚本、程序、进程与线程的全貌
内核程序员kevin
Linux程序员linux进程脚本线程
Linux程序员必修课:命令、脚本、程序、进程与线程的全貌1.Linux命令、脚本、程序、进程与线程的关系对比表概念定义存储形式执行方式是否需要进程是否支持并发示例命令用户输入给shell的指令,可以是内置命令或外部命令直接输入在shell中(无固定存储)由shell解析并执行仅外部命令需要取决于命令,如&可后台运行ls、cd、echo脚本一组命令的集合,存储在文件中,通常是shell脚本文本文件
VS code 之 c++远程开发环境搭建
汝何秀
linuxvscode
文章目录VScode之c/c++远程开发环境搭建1.基本环境2.远程主机的开发环境搭建3.本地vscode的配置配置ssh选项4远程开发教程VScode之c/c++远程开发环境搭建1.基本环境本地主机:VisualStudioCode远程主机:CentOS72.远程主机的开发环境搭建安装环境的压缩包:dev_env_install.tar.gz解压文件夹:repo自动安装脚本为:dev_env.s
【花雕学编程】Arduino FOC 之四连杆机构轮腿机器人的复杂路径规划
驴友花雕
机器人嵌入式硬件单片机c++Arduino动手做四连杆机构轮腿机器人的复杂路径规划
Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用ArduinoIDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Ardui
mysql通过视图插入数据_数据库视图 sql
weixin_39550410
mysql通过视图插入数据
数据库必知词汇:数据库视图视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。视图与表(有时为与视图区别,也称表为基本表——BaseTable)不同,视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视...文章萌萌怪兽2020-02-23113浏览量数据库优化之创建视图视图是保
Sakura编辑器:高效多语言代码编辑体验
就念
本文还有配套的精品资源,点击获取简介:Sakura编辑器是一款多功能的文本编辑工具,特别受到程序员和文档撰写者的青睐。它提供对多种编程语言的支持,并允许用户自定义代码高亮主题,提高代码可读性。内置的便捷编辑功能如自动完成、代码折叠和查找替换大大提升效率。其无需安装的特点增加了便携性,轻量级设计确保高效运行,而且可扩展性强,支持多种插件,适合各种工作环境。1.Sakura编辑器的概述与多语言支持简介
首发实测:地表最强AI?马斯克发布新一代AI模型Grok3
Code_流苏
AI漫谈先知实用软件与高效工具人工智能grok3AI实测首发测评AI
近年来,人工智能的迅猛发展让人们对其未来充满了无限期待。尤其是以马斯克为首的企业家们,始终走在AI技术的前沿。就在近期,马斯克宣布推出新一代AI模型——Grok3。这一消息无疑引起了行业的广泛关注,大家都在猜测,这款新AI模型究竟有何独特之处,是否能够在众多强大AI模型中脱颖而出?名人说:悟已往之不谏,知来者之可追。——《归去来兮辞》陶渊明创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的
XML标记语言简介
ozawacai
NotesOfComputerxml
XML标记语言简介XML(eXtensibleMarkupLanguage,可扩展标记语言)是一种标记语言,设计用于存储和传输数据。它通过标签结构来描述数据,并且标签是自定义的,这使得XML非常灵活。以下是对XML及其用途、好处和应用场景的详细介绍:什么是XMLXML是一种文本格式,用于表示结构化信息。其设计目标是可读性好、易于理解和扩展。XML文档的基本结构如下:ContentXML的用途数据存
Kotlin 数据类与密封类
lly202406
开发语言
Kotlin数据类与密封类引言在编程语言中,数据类和密封类是两种非常有用的特性,特别是在Kotlin中。数据类用于创建不可变的数据持有类,而密封类则用于限制类的继承结构。本文将详细介绍Kotlin中的数据类与密封类,包括它们的定义、使用场景以及它们在Kotlin中的优势。数据类定义数据类在Kotlin中用于创建不可变的值对象,它自动提供构造函数、getter、toString、equals、has
深入解析微服务架构之Spring Cloud
一休哥助手
分布式系统架构微服务springcloud
目录微服务架构简介什么是微服务微服务的优势微服务的挑战SpringCloud概述SpringCloud简介SpringCloud的主要特性SpringCloud的模块划分SpringCloud核心组件详解SpringCloudNetflixSpringCloudConfigSpringCloudGatewaySpringCloudSleuthSpringCloudBus实战案例:构建一个简单的微服
Grok-3和DeepSeek-R1,谁更胜一筹?
xiaocang668888
人工智能DeepSeek
关于Grok-3(xAI研发)与DeepSeek-R1(深度求索公司产品)的技术竞合,需从核心定位、场景穿透力和战略生态三重维度展开深度解构。两大模型代表两种技术演化路径的终极对决,其胜负取决于问题域的边界定义。一、基础能力的对称平衡能力维度Grok-3DeepSeek-R1参数量级混合专家模型(MoE)架构,总参量4.2T,活跃参数860B稠密神经架构,320B全激活参数知识保鲜动态知识注入(每
关于Spring基础了解
党和人民
基础spring
Spring简介Spring框架是一个开源的Java应用框架,旨在简化企业级应用程序的开发。它提供了一系列强大的工具和服务,帮助开发者构建高质量的Java应用程序。Spring框架的核心理念是使开发过程更加模块化、可测试和可维护。主要特性依赖注入(DependencyInjection,DI)定义:DI是一种设计模式,用于实现控制反转(InversionofControl,IoC)。通过DI,对象
My SQL笔记
党和人民
笔记mysql
数据库的使用主要功能:查询数据(SELECT):从一个或多个表中检索数据。插入数据(INSERT):向表中添加新记录。更新数据(UPDATE):修改现有记录。删除数据(DELETE):移除记录。定义数据库结构(CREATE,DROP):创建、修改或删除数据库对象(如表、索引等)。创建数据库创建数据库是通过SQL语句来完成的,通常使用createdatabase语句常用数据类型:整型(int):用于
API,URL,Token,XML,JSON是干嘛的
Frank牛蛙
数据结构xmljson
API,URL,Token,XML,JSON是干嘛的API的作用API(ApplicationProgrammingInterface,应用程序编程接口)是一组定义和协议,用于构建和交互软件应用程序。API允许不同的软件系统之间进行通信,它定义了软件组件应该如何交互。具体到网络服务中,API通常是指一组HTTP请求和响应的规则,通过这些规则,开发者可以从外部访问某个服务的数据或功能。例如,Yaho
redis学习笔记——不仅仅是存取数据
Everyday都不同
returnSourceexpire/delincr/lpush数据库分区redis
最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷)
1、关于JedisPool.returnSource(Jedis jeids)
这个方法是从red
SQL性能优化-持续更新中。。。。。。
atongyeye
oraclesql
1 通过ROWID访问表--索引
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高.
2 共享SQL语句--相同的sql放入缓存
3 选择最有效率的表
[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善
comsci
JAVA虚拟机
如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢?
&n
lvs- real
男人50
LVS
#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
#. /etc/rc.d/init.d/functions
VIP=10.10.6.252
host='/bin/hostname'
case "$1" in
sta
生成公钥和私钥
oloz
DSA安全加密
package com.msserver.core.util;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
public class SecurityUtil {
UIView 中加入的cocos2d,背景透明
374016526
cocos2dglClearColor
要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll
mysql常用命令
香水浓
mysql
连接数据库
mysql -u troy -ptroy
备份表
mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql
恢复表(与恢复数据库命令相同)
mysql -u troy -ptroy mm_database < user.sql
备份数据库
mysqldump -u troy -ptroy
我的架构经验系列文章 - 后端架构 - 系统层面
agevs
JavaScriptjquerycsshtml5
系统层面:
高可用性
所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速
利用ant进行远程tomcat部署
aijuans
tomcat
在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下:
1.配置tomcat的用户角色
获取复利总收入
baalwolf
获取
public static void main(String args[]){
int money=200;
int year=1;
double rate=0.1;
&
eclipse.ini解释
BigBird2012
eclipse
大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。
Overview
1、Eclipse.ini的作用
Eclipse startup is controlled by th
AngularJS实现分页功能
bijian1013
JavaScriptAngularJS分页
对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。
&nbs
[Maven学习笔记三]Maven archetype
bit1129
ArcheType
archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等.
mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式,
mvn archetype
1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener
【Java命令三】jps
bit1129
Java命令
jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看
[hadoop@hadoop bin]$ jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:
ZABBIX2.2 2.4 等各版本之间的兼容性
ronin47
zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容
zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p
unity 3d还是cocos2dx哪个适合游戏?
brotherlamp
unity自学unity教程unity视频unity资料unity
unity 3d还是cocos2dx哪个适合游戏?
问:unity 3d还是cocos2dx哪个适合游戏?
答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2,
百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
bylijinnan
java算法面试百度招聘
import java.util.Arrays;
/**
* 最早是在陈利人老师的微博看到这道题:
* #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K
* 设计一个排序算法。It should be faster than O(n*lgn)。
获取checkbox复选框的值
chiangfai
checkbox
<title>CheckBox</title>
<script type = "text/javascript">
doGetVal: function doGetVal()
{
//var fruitName = document.getElementById("apple").value;//根据
MySQLdb用户指南
chenchao051
mysqldb
原网页被墙,放这里备用。 MySQLdb User's Guide
Contents
Introduction
Installation
_mysql
MySQL C API translation
MySQL C API function mapping
Some _mysql examples
MySQLdb
HIVE 窗口及分析函数
daizj
hive窗口函数分析函数
窗口函数应用场景:
(1)用于分区排序
(2)动态Group By
(3)Top N
(4)累计计算
(5)层次查询
一、分析函数
用于等级、百分点、n分片等。
函数 说明
RANK() &nbs
PHP ZipArchive 实现压缩解压Zip文件
dcj3sjt126com
PHPzip
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。
一、解压缩zip文件 01 02 03 04 05 06 07 08 09 10 11
精彩英语贺词
dcj3sjt126com
英语
I'm always here
我会一直在这里支持你
&nb
基于Java注解的Spring的IoC功能
e200702084
javaspringbeanIOCOffice
java模拟post请求
geeksun
java
一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。 此处用HttpComponents的httpclient来完成使命。
import org.apache.http.HttpEntity ;
import org.apache.http.HttpRespon
Swift语法之 ---- ?和!区别
hongtoushizi
?swift!
转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:
var stringValue : String
//
centos7安装jdk1.7
jisonami
jdkcentos
安装JDK1.7
步骤1、解压tar包在当前目录
[root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz
步骤2:配置环境变量
在etc/profile文件下添加
export JAVA_HOME=/usr/java/jdk1.7.0_75
export CLASSPATH=/usr/java/jdk1.7.0_75/lib
数据源架构模式之数据映射器
home198979
PHP架构数据映射器datamapper
前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。
一、概念
数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。
&nb
在Python中使用MYSQL
pda158
mysqlpython
缘由 近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到
数据库中。 了解到
Python在这方面有优势,便选用之。 由于我有台
server上面安装有
mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里
记录一下,大家共勉。
python中mysql的调用
百度之后能够通过MySQLdb进行数据库操作。
单例模式
hxl1988_0311
java单例设计模式单件
package com.sosop.designpattern.singleton;
/*
* 单件模式:保证一个类必须只有一个实例,并提供全局的访问点
*
* 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件
*
* 必须考虑到并发情况下创建了多个实例对象
* */
/**
* 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率
27种迹象显示你应该辞掉程序员的工作
vipshichg
工作
1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。