- Selenium基础教程
lemontree1945
seleniumpython测试工具
1.Selenium环境安装1.1浏览器安装Chrome和ChromeDriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/注意:驱动版本号要和浏览器版本号一致;安装后关闭浏览器自动更新:services.msc:打开系统服务找到和google相关的服务,全部修改为禁用1.2安装第三方库seleniumpipinstall
- C++中std::variant的使用详解和实战代码示例
点云SLAM
C++c++开发语言variantC++泛型编程联合体C++类型擦除机制C++17
std::variant是C++17引入的一个类型安全的联合体(type-safeunion),它可以在多个类型之间存储一个值,并在编译时进行类型检查。它是现代C++类型擦除与泛型编程的核心工具之一,适用于构建可变类型结构、消息传递系统、状态机等。一、基本概念#includestd::variantv;类似于联合体union,但类型安全。std::variant只能存储其中一个类型的值。默认构造时
- ubuntu国内镜像源手动配置
鬼才血脉
ubuntulinux运维
备份当前源列表打开终端,执行以下命令备份当前的源列表:sudocp/etc/apt/sources.list/etc/apt/sources.list.backup编辑源列表文件使用文本编辑器编辑/etc/apt/sources.list文件,例如使用nano:sudovim/etc/apt/sources.list添加或修改镜像源将文件中的内容替换为适合的国内镜像源地址。例如,使用阿里云的镜像源
- [python][flask]Flask-Login 使用详解
awonw
pythonpythonflask开发语言
1.简介Flask-Login是Flask的一个扩展,专门用于处理用户认证相关的功能。它提供了用户会话管理、登录/注销视图、记住我功能等常见认证需求,让开发者能够快速实现安全的用户认证系统。2.安装与基础配置首先,需要安装Flask-Login:pipinstallflask-login然后在Flask应用中进行基础配置:fromflaskimportFlaskfromflask_loginimp
- [python][flask]Flask-Principal 使用详解
awonw
pythonflask开发语言
Flask-Principal是一个专为Flask应用设计的身份管理和权限控制扩展。它能够帮助开发者轻松实现用户身份验证和权限管理,从而提升应用的安全性和用户体验。该项目最初由AliAfshar开发,现已成为Pallets社区生态系统的一部分,由社区共同维护。1.安装Flask-Principal首先,需要安装Flask-Principal。可以通过以下命令安装:pipinstallflask-p
- Chrome MCP 部署与使用教程 (最新版)
ChromeMCP部署与使用教程(最新版)1.概述ChromeMCP(ModelContextProtocol,以下简称MCPServer)是一种开源协议,旨在让AI助手(如Claude、Cursor等)能够直接与您的本地Chrome浏览器交互,实现复杂的自动化操作。它通过一个本地服务器和配套的Chrome扩展协同工作,实现对Chrome浏览器的精细化控制。核心功能与优势:原生环境交互:直接利用您
- 如何解决 undetected_chromedriver 启动慢问题
小马哥编程
chromeseleniumui
要解决undetected_chromedriver启动慢的问题,可以从以下几个方面优化配置和代码:1.指定本地Chrome二进制路径避免自动搜索Chrome路径,直接指定位置:driver=uc.Chrome(browser_executable_path=r'C:\ProgramFiles\Google\Chrome\Application\chrome.exe')2.禁用GPU和沙盒(关键优
- qt c++借助开源的.pro工程文件解读.pro文件中的各项配置的含义
##ProjecttocompileQCustomPlotassharedlibrary(.so/.dll)fromtheamalgamatedsources#QT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsprintsupportgreaterThan(QT_MAJOR_VERSION,4):CONFIG+=c++11lessThan(
- selenium完整版一览
paid槮
selenium测试工具
selenium库驱动浏览器selenium库是一种用于Web应用程序测试的工具,它可以驱动浏览器执行特定操作,自动按照脚本代码做出单击、输入、打开、验证等操作,支持的浏览器包括IE、Firefox、Safari、Chrome、Opera等。而在办公领域中如果经常需要使用浏览器操作某些内容,就可以使用selenium库来实现,例如将大量数据上传到网页中或者实现自动驱动浏览器进行操作。与reques
- selenium 反爬虫识别特征处理
因为业务中发现网站对selenium特征识别为爬虫了,因此在搜索引擎中搜索进行处理方式一#实例化一个浏览器对象options=webdriver.ChromeOptions()options.add_experimental_option('excludeSwitches',['enable-automation'])ifsys.platform=="win32":browser=webdrive
- 四个小型,开源数据库(sqlite,mysql,redis,mongodb)
半斗烟草
python数据库数据库
前言sqlite,mysql,redis,mongodb四个数据认识笔记四个数据库的详细介绍,请看博客:https://www.cnblogs.com/pungchur/p/14086915.html一、四个数据的安装ubuntuapt更换国内源:step1:vi/etc/apt/sources.list,内容:https://www.cnblogs.com/dream4567/p/9690850
- Cpython
先编译在运行fromdistutils.coreimportsetup,ExtensionfromCython.Buildimportcythonizeimportnumpysetup(ext_modules=cythonize(Extension('dot_cython',sources=['dot_cython.pyx'],language='c',include_dirs=[numpy.ge
- Node.js 手册:详细介绍及使用指南
江一破
node.jsjavascript后端
Node.js手册:详细介绍及使用指南1.Node.js的本质与设计演进Node.js是一个基于ChromeV8JavaScript引擎构建的异步事件驱动型JavaScript运行时(AsynchronousEvent-DrivenJavaScriptRuntime),其核心是利用非阻塞I/O和事件驱动模型解决高并发场景的性能瓶颈。历史背景:Web服务器的"并发之殇"线程模型的代价:2000年代主
- CANoe 使用详解全攻略
承接电子控制项目开发
网络canoe
(注:根据推测,“canoepn”可能为“CANoe”的拼写错误,CANoe是Vector公司开发的汽车总线开发、仿真、测试工具,广泛用于汽车电子领域。以下是针对CANoe的详细使用指南。)一、CANoe简介应用场景汽车总线(CAN、LIN、FlexRay、Ethernet等)仿真与测试ECU(电子控制单元)通信分析自动化测试脚本开发诊断(UDS、KWP2000)与网络管理核心功能仿真:模拟ECU
- Item13:以对象管理资源
双马尾为什么是神
EffectiveC++c++开发语言
在C++编程中,资源管理是一个核心问题。《EffectiveC++》中的Item13“以对象管理资源”(Useobjectstomanageresources)提出了一个重要的设计原则:将资源封装在对象中,利用对象的生命周期自动管理资源的获取和释放。这一原则不仅能避免资源泄露,还能提高代码的健壮性和可维护性。本文将深入探讨这一条款,分析资源管理的挑战、对象管理资源的实现方式以及相关的最佳实践。一、
- Python专门用于执行系统命令库之sh使用详解
Rocky006
python网络
概要sh库是Python生态系统中一个专门用于执行系统命令的第三方库,由AndrewMoffat开发。该库的设计理念是将系统命令转化为Python函数,使得在Python程序中调用系统命令变得更加直观和优雅。sh库提供了更加简洁的API接口,大大简化了系统命令的调用过程。sh库的核心优势在于其独特的设计思路:将每个系统命令都视为一个可调用的Python函数对象。安装1、安装方法sh库可以通过pip
- Python数据可视化库之autoviz使用详解
概要在数据可视化的广阔领域中,快速且智能地将数据转化为直观图表,是数据分析师和开发者的共同需求。Python的autoviz库应运而生,它凭借“一键生成可视化”的强大功能,极大地简化了数据可视化流程。无论是处理简单数据集,还是复杂的多变量数据,autoviz都能自动分析数据特征,生成高质量可视化结果,成为提升数据分析效率的得力助手。安装与验证1、安装方法autoviz库的安装可以借助Python常
- Selenium自动化测试入门:从零到精通
文章目录一、前言1.浏览器驱动下载2.配置二、seleium使用教学1.基础框架2.常用操控浏览器的方法3.定位元素八种方法及其优缺点4.元素定位的隐性等待一、前言1.浏览器驱动下载chromedriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/#stable谷歌浏览器网址栏输入:chrome://version查看你的
- 【Spring Boot】热部署终极指南:IDEA高效配置与JRebel替代方案深度解析
SpringBoot热部署终极指南:IDEA高效配置与JRebel替代方案深度解析一、热部署核心原理深度剖析1.1JVM类加载机制与热部署1.2各方案技术对比二、SpringBootDevTools高级配置2.1完整配置模板2.2IDEA终极配置指南步骤1:开启自动编译步骤2:启用运行时编译步骤3:配置远程调试步骤4:Chrome实时刷新插件2.3多模块项目特殊配置三、JRebel高级使用技巧3.
- 【自动化测试】Selenium Python UI自动化测试实用教程
软件测试-阿涛
自动化测试python学习seleniumpythonui自动化
一、引言:Selenium与UI自动化测试基础1.1Selenium简介Selenium是一个开源的Web应用自动化测试框架,支持多浏览器(Chrome、Firefox、Edge等)和多编程语言(Python、Java、JavaScript等),核心组件包括:WebDriver:通过浏览器原生API控制浏览器,模拟用户操作(点击、输入等),无侵入性。IDE:浏览器插件,支持录制/回放操作,可导出测
- selenium安装--基于python
selenium安装--基于python一、selenium安装--基于python1、前提2、selenium安装、卸载、查看命令3、浏览器对应的selenium版本和驱动下载3.1、Firefox火狐浏览器(推荐)3.2、IE浏览器(了解)3.3、Chrome谷歌浏览器3.4、各个浏览器驱动的下载地址一、selenium安装–基于python1、前提在安装selenium时,前提是python
- 突然网页打不开,钉钉登不了,但是微信能登陆
Chrome菜单>“设置”>“显示高级设置…”>“更改代理服务器设置…”>“LAN设置”,最后排查跟梯子软件有关系;打开这个软件能登录了;可能昨天电脑关机这个软件没正常退出就强制关机了
- Unity路径(抄录)
慢慢沉
Unityunity
1.Resource:在Unity编辑器的Project窗口里创建,Resources文件夹下的资源全部会打包进.apk或者.ipa,并且打包时会将里面的资源压缩处理。加载方法是Resources.Load(文件名),需要注意:文件名不包括扩展名,打包后不能更改Resources下的资源内容。但是从Resources文件夹中加载出来的资源可以更改。2.Application.dataPath:这个
- linux下route命令详解
三支烟
linuxroute
文章转载自:http://www.cnblogs.com/snake-hand/p/3143041.htmllinuxroute命令的使用详解route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问In
- Vysor 使用
鸡蛋灌烧饼
Vysor是一个免root实现电脑控制手机的chrome插件,页面简洁,操作简单,可以同屏显示。下载插件时需要自备梯子Chorme打开:下载链接1.添加插件之后可以在桌面创建快捷方式创建快捷方式2.打开插件发现设备3.选择设备选择设备4.连接设备(首次使用会在手机上安装一个apk)连接成功
- Python探索性数据分析库之sweetviz使用详解
概要Sweetviz是一个Python库,专为数据科学家和分析师设计,旨在加速探索性数据分析(EDA)过程。在数据科学项目中,探索性数据分析是必不可少的步骤,但通常也是最耗时的环节之一。Sweetviz通过自动生成高度详细、交互式且美观的可视化报告,大幅简化了这一过程。该库能够对数据集进行全面分析,包括特征分布、相关性、缺失值和目标变量关系等,使用户能够快速理解数据结构和潜在模式,为后续的特征工程
- Python密码学库之pycryptodome使用详解
Rocky006
python开发语言
概要pycryptodome是一个功能强大的Python密码学库,是pycrypto库的现代化替代品。它提供了全面的密码学功能,包括对称加密、非对称加密、哈希算法、数字签名等。该库具有良好的性能、安全性和易用性,广泛应用于网络安全、数据保护、身份验证等领域。安装1、安装命令pipinstallpycryptodome2、验证安装from Crypto.Cipher import AESfrom C
- Python企业级进程管理库之supervisor使用详解
概要Supervisor是一个功能强大的Python第三方库,专门用于在类Unix系统中管理和监控进程。该库采用客户端-服务器架构设计,提供了完整的进程生命周期管理功能,包括进程启动、停止、重启以及状态监控等核心能力。Supervisor的设计理念源于企业级应用对系统稳定性和可靠性的严格要求,能够确保关键业务进程在异常退出后自动重启,从而保障系统的持续运行。安装1、基础安装Supervisor的安
- npm开箱
花霏花
安装Node.jsNode.js®是一个基于ChromeV8引擎的JavaScript运行时npm在正式开始Node.js学习之前,我们先认识一下npm。npm是什么东东?npm其实是Node.js的包管理工具(packagemanager)。为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索
- github上的学习材料三:前端入门资源汇总
X-Prince
JS生活Git
本篇转载自:https://idoras.com/frontend-resources/前言前端无疑是2016年最火热的技术,没有之一。各种前端mvc框架层出不穷,angularjs,vue,react,前端组件化开发概念已经深入人心。前端工资已经比手机端开发还要高了。作为个人站长,学习下前端设计也是有必要的,一来有些小的设计问题可以自己解决,同时还能提高自己的审美,提高网站的ui设计水平。必备基
- eclipse maven
IXHONG
eclipse
eclipse中使用maven插件的时候,运行run as maven build的时候报错
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
可以设一个环境变量M2_HOME指
- timer cancel方法的一个小实例
alleni123
多线程timer
package com.lj.timer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer extends TimerTask
{
private int a;
private Timer timer;
pub
- MySQL数据库在Linux下的安装
ducklsl
mysql
1.建好一个专门放置MySQL的目录
/mysql/db数据库目录
/mysql/data数据库数据文件目录
2.配置用户,添加专门的MySQL管理用户
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户
3.配置,生成并安装MySQL
>cmake -D
- spring------>>cvc-elt.1: Cannot find the declaration of element
Array_06
springbean
将--------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3
- maven发布第三方jar的一些问题
cugfy
maven
maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令
有许多参数,具体可查看
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
以下是一个例子:
mvn deploy:deploy-file -DgroupId=xpp3
- MYSQL下载及安装
357029540
mysql
好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址
- ios TableView cell的布局
张亚雄
tableview
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]];
CGSize itemSize = CGSizeMake(60, 50);
&nbs
- Java编码转义
adminjun
java编码转义
import java.io.UnsupportedEncodingException;
/**
* 转换字符串的编码
*/
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final Strin
- Tomcat 配置和spring
aijuans
spring
简介
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。
Server.xml -- tomcat主
- Java打印当前目录下的所有子目录和文件
ayaoxinchao
递归File
其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。
import java.io.File;
/**
* @author Perlin
* @date 2014-6-30
*/
public class PrintDirectory {
public static void printDirectory(File f
- linux安装mysql出现libs报冲突解决
BigBird2012
linux
linux安装mysql出现libs报冲突解决
安装mysql出现
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686
- jedis连接池使用实例
bijian1013
redisjedis连接池jedis
实例代码:
package com.bijian.study;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo
- 关于朋友
bingyingao
朋友兴趣爱好维持
成为朋友的必要条件:
志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。
志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他
- 【Spark七十九】Spark RDD API一
bit1129
spark
aggregate
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
//测试RDD的aggregate方法
object AggregateTest {
def main(args: Array[String]) {
val conf = new Spar
- ktap 0.1 released
bookjovi
kerneltracing
Dear,
I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu
- 能保存Properties文件注释的Properties工具类
BrokenDreams
properties
今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。
&nb
- 读《研磨设计模式》-代码笔记-外观模式-Facade
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 百度百科的定义:
* Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
* 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
*
* 可简单地
- After Effects教程收集
cherishLC
After Effects
1、中文入门
http://study.163.com/course/courseMain.htm?courseId=730009
2、videocopilot英文入门教程(中文字幕)
http://www.youku.com/playlist_show/id_17893193.html
英文原址:
http://www.videocopilot.net/basic/
素
- Linux Apache 安装过程
crabdave
apache
Linux Apache 安装过程
下载新版本:
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi)
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi)
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac
- Shell学习 之 变量赋值和引用
daizj
shell变量引用赋值
本文转自:http://www.cnblogs.com/papam/articles/1548679.html
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
- Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)
dcj3sjt126com
javajdk
Java SE 第一讲:
Java SE:Java Standard Edition
Java ME: Java Mobile Edition
Java EE:Java Enterprise Edition
Java是由Sun公司推出的(今年初被Oracle公司收购)。
收购价格:74亿美金
J2SE、J2ME、J2EE
JDK:Java Development
- YII给用户登录加上验证码
dcj3sjt126com
yii
1、在SiteController中添加如下代码:
/**
* Declares class-based actions.
*/
public function actions() {
return array(
// captcha action renders the CAPTCHA image displ
- Lucene使用说明
dyy_gusi
Lucenesearch分词器
Lucene使用说明
1、lucene简介
1.1、什么是lucene
Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。
1.2、lucene能做什么
要回答这个问题,先要了解lucene的本质。实际
- 学习编程并不难,做到以下几点即可!
gcq511120594
数据结构编程算法
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
- Java面试十问之三:Java与C++内存回收机制的差别
HNUlanwei
javaC++finalize()堆栈内存回收
大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的
- 第二章 Nginx+Lua开发入门
jinnianshilongnian
nginxlua
Nginx入门
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:
nginx启动、关闭、重启
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html
agentzh 的 Nginx 教程
http://openresty.org/download/agentzh-nginx-tutor
- MongoDB windows安装 基本命令
liyonghui160com
windows安装
安装目录:
D:\MongoDB\
新建目录
D:\MongoDB\data\db
4.启动进城:
cd D:\MongoDB\bin
mongod -dbpath D:\MongoDB\data\db
&n
- Linux下通过源码编译安装程序
pda158
linux
一、程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在linux下用man命令查看的命令的文档
二、linux下程序的存放目录 linux程序的存放目录大致有三个地方: /etc, /b
- WEB开发编程的职业生涯4个阶段
shw3588
编程Web工作生活
觉得自己什么都会
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。
根本不是自己想的那样
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,
- 遭遇jsonp同域下变作post请求的坑
vb2005xu
jsonp同域post
今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));
贴出我前端代码片段:
$.aj