cursor重构谷粒商城02——30分钟构建图书管理系统【cursor使用教程番外篇】
前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。
本项目将基于谷粒商城项目,并且对谷粒商城项目进行二次重构,使其满足最新的主流技术栈要求。
上一篇博客,我们已经介绍了为何使用cursor对谷粒商城重构。并且下载了cursor。这一篇文章,我们将对cursor进行快速入门。如果您已经掌握了cursor使用,可以跳过这一章。
一、hello,cursor
我们先试试修改代码,很傻瓜。
二、图书管理系统需求
现在你已经会用cursor了,让我们愉快的做个小练习,构建一个图书管理系统吧了。
先让chatgpt帮我生成个需求。
再让它推荐下使用的技术栈。
最后自己选择下模块和技术栈,确定图书管理系统需求如下。
这里打个广告,需要使用chatgpt镜像(无需科学上网),可以私聊博主哟。
三、创建项目
IDEA创建项目。
接下来我们创建一下前端项目。这里需要用到node。
补充:Node是什么?npm 是什么?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它使得 JavaScript
可以在服务器端运行,而不仅仅是在浏览器里。类似于后端的tomcat。npm 是 Node.js 的包管理工具,用于安装和管理 Node.js 项目中的依赖包(库和工具)。类似于后端的Maven。
下载node.js,官网链接:https://nodejs.org/zh-cn
安装后,测试下。
重启IDEA,使其能够重新加载环境变量,检测到node。在IDEA终端测试上述命令。
注:如果遇到下面bug。
请打开 PowerShell 终端,使用管理员权限运行 PowerShell(右键点击 PowerShell 图标,选择“以管理员身份运行”)。
输入以下命令来允许执行脚本:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
初始化个demo。下面这个命令的作用是使用 npm 来初始化一个新的 Vue.js 项目,并自动安装最新版本的 Vue CLI 创建的项目模板。
npm create vite@latest
项目名称为library-ui。framework选择vue。语言选择javascript。会看到如下提示。
按照提示,执行命令。不过,我们使用pnpm代替npm。如果您的环境里还没有pnpm,可以按照如下方式安装下。
## 换源(如果没有换过源,或者失效无法正常安装,执行这个操作,若我的镜像源失效,可自行搜索:npm换源)
npm config set registry https://registry.npmmirror.com
## 安装
npm install -g pnpm
补充:什么是pnpm?和npm有什么区别?
pnpm 是一个替代 npm 的 JavaScript 包管理器,它的目标是提高依赖包的安装速度并节省磁盘空间。
相比npm,它有下面优点。
速度:pnpm 比 npm 更快,特别是在安装大项目或者多个项目之间共享依赖时。
磁盘空间:pnpm 更节省磁盘空间,因为它使用硬链接来共享依赖。
依赖管理:pnpm 的依赖结构更为高效,不会重复安装相同版本的包。
接着执行命令。
cd library-ui
# 用来安装依赖包。
pnpm install
# 启动开发服务器,通常用于本地开发和调试。
pnpm run dev
访问浏览器,okk。好漂亮。
IDEA终端:ctrl + C关闭。现在我们已经把后端、前端的项目初始化好了。
在cursor中,打开刚刚的项目。
导入项目后,唤起我们的cursor对话窗口。我的快捷键是ctrl+L。如果您的不是,可以参考下图自行搜索下。
四、后端代码快速生成
在对话窗口,输入如下提示词,回车。
@Codebase 这个项目是一个springboot+vue3的项目脚手架,其中前端vue的代码写在library-ui目录下。
接下来我会用这个项目创建一个图书管理系统,包含后端接口和前端页面。
在我描述具体需求之前不要生成代码
注:1、在 Cursor 中,@Codebase 是一种用于增强对话框中代码相关查询的功能。 通过在对话框中输入 @Codebase,Cursor 会扫描你的代码库,收集与查询相关的文件和代码块,并根据相关性对其进行排序,以提供更准确的回答。
2、在软件开发中,脚手架(Scaffolding)指的是一套自动化工具或框架,旨在帮助开发者快速搭建项目的基础结构和开发环境。 这些工具通常会自动生成项目的目录结构、配置文件、构建脚本、测试工具和依赖管理工具等,从而减少开发者在项目启动阶段需要手动完成的工作量。 使用脚手架,开发者可以更加专注于业务逻辑的实现,而不是在项目配置上花费大量时间我们前面安装的Vue CLI 就是一个广受欢迎的脚手架工具
接下来,把具体的业务需求告知cursor。
可以直接把图片给他,ctrl c,ctrl v即可。牛不。
接下来让它帮忙设计数据库:
请开始设计数据库。
接下来,不一一演示了。可以自行探索。选择右下角的accept all。
五、进阶:cursorrules
如何保证ai更听话呢?
在这里,给大家提供一个有用的提示词。cursor rule,也就是,让cursor生成代码时,遵循的规范。
你是一个 web 应用程序开发专家,精通 Spring Boot、Vue3、Element Plus 和相关技术栈。你的任务是帮助我构建一个清晰、高效、可维护的全栈项目。
1、代码风格与结构规范
要求编写清晰、高效、有良好注释的代码。提供准确的 Spring Boot和Vue3示例。
遵循 Spring Boot 和 Vue3 的最佳实践和约定。
使用 RESTful API 设计模式构建后端服务。
前后端代码遵循命名规范:变量和方法名使用 camelCase(驼峰式),类名使用 PascalCase(帕斯卡式)
项目结构分明
Spring Boot 后端:按controller、service、repository、model、configuration 模块组织代码
Vue3 前端:按views、components、store、router、utils、assets组织代码
2、Spring Boot 规范
使用 Spring Boot Starter 快速搭建项目和依赖。
正确使用常用注解(@SpringBootApplication、@RestController、@Service)
使用 @ControllerAdvice 和 @ExceptionHandler 实现全局异常处理
使用 Spring Data JPA 简化数据库操作
3、Vue3 规范
使用
4、测试与调试
后端测试:
编写单元测试(JUnit 5)和集成测试(@SpringBootTest)
使用 MockMvc 测试控制器层
前端测试:
使用 Vitest 和 Vue Test Utils 编写组件单元测试
测试覆盖率要达到 80% 以上
提交代码前进行代码审查,并使用 SLF4J 记录日志
5、性能与安全
实现缓存策略(如使用 Spring Cache 进行缓存管理)
后端异步处理使用 @Async 注解,必要时使用 WebFlux 实现响应式编程
使用 Spring Security 实现认证和授权,密码采用 BCrypt 加密
配置 CORS,确保跨域访问正常
6、配置与部署
使用 application.yml 配置文件,按环境(开发、测试、生产)划分配置
使用 Docker 容器化应用,按需添加 CI/CD 流程
通过 Spring Boot Actuator 实现监控和指标收集
7、API 文档
使用 Springdoc OpenAPI 生成接口 API 文档
提供测试集成调试工具(如 Postman Collection)
8、最终项目目标
构建一个功能完整、用户友好的应用程序,包括:用户管理、权限分配、数据展示等核心功能,注重代码质量和可维护性
用以上规范,生成代码和建议。
在项目目录下新建.cursorrules
文件。把上述规则粘过去即可。
更多参考资料,可以参考官方文档:https://cursor.document.top/tips/usage/set-rules/
6、报错解决
可以直接alt+enter,让ai帮忙解决。
7、Cusor的PJ(仅供学习)
如果您看到提示:Too many free trial accounts used on this machine,说明您需要充值了。
如果是学习用途,可以参考下列内容,进行和谐。
下载:https://github.com/bestK/cursor-fake-machine/releases/download/v0.0.2/cursor-fake-machine-0.0.2.vsix
查看下载扩展的快捷键,输入快捷键。
文件拖进来。自动安装后如图。
输入ctrl+shift+P,输入fake,回车。
登录官网,将你远程账户删除。
重新登录远程账户。
相关文章:
cursor重构谷粒商城02——30分钟构建图书管理系统【cursor使用教程番外篇】
前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。 本项目将基于谷粒商城…...
提升大语言模型的三大策略
1.概述 随着大语言模型(LLMs)在技术和应用上的不断发展,它们已经深刻地改变了我们与计算机的互动方式。从文本生成到语言理解,LLMs的应用几乎涵盖了各个行业。然而,尽管这些模型已展现出令人印象深刻的能力,…...
Ubuntu 24.04 LTS 安装 Docker Desktop
Docker 简介 Docker 简介和安装Ubuntu上学习使用Docker的详细入门教程Docker 快速入门Ubuntu版(1h速通) Docker 安装 参考 How to Install Docker on Ubuntu 24.04: Step-by-Step Guide。 更新系统和安装依赖 在终端中运行以下命令以确保系统更新并…...
mysql查看binlog日志
mysql 配置、查看binlog日志: 示例为MySQL8.0 1、 检查binlog开启状态 SHOW VARIABLES LIKE ‘log_bin’; 如果未开启,修改配置my.ini 开启日志 安装目录配置my.ini(mysql8在data目录) log-binmysql-bin(开启日志并指定日志前缀ÿ…...
2. Flink分区策略
一. Flink分区策略概述 Flink任务在执行过程中,一个流(stream)包含一个或多个分区(Stream partition),TaskManager中的一个slot的SubTask就是一个stream partition(流分区)。 Flink分区之间进行数据传递模式有两种。 1. one-to-one模式 数据不需要重新…...
Qt 5.14.2 学习记录 —— 십칠 窗口和菜单
文章目录 1、Qt窗口2、菜单栏设置快捷键添加子菜单添加分割线和菜单图标 3、工具栏 QToolBar4、状态栏 QStatusBar5、浮动窗口 QDockWidget 1、Qt窗口 QWidget,即控件,是窗口的一部分。在界面中创建控件组成界面时,Qt自动生成了窗口…...
微信小程序中实现背景图片完全覆盖显示,可以通过设置CSS样式来实现
wxml页面代码 <view class"beijing"></view>wxss样式代码 /* pages/beiJing/beiJing.wxss */ .beijing {background-image: url("https://www.qipa250.com/qipa.jpg");/* 定位:绝对定位 */position: absolute;/* 上下左右都定位到…...
亲测有效!如何快速实现 PostgreSQL 数据迁移到 时序数据库TDengine
小T导读:本篇文章是“2024,我想和 TDengine 谈谈”征文活动的优秀投稿之一,作者从数据库运维的角度出发,分享了利用 TDengine Cloud 提供的迁移工具,从 PostgreSQL 数据库到 TDengine 进行数据迁移的完整实践过程。文章…...
中国综合算力指数(2024年)报告汇总PDF洞察(附原数据表)
原文链接: https://tecdat.cn/?p39061 在全球算力因数字化技术发展而竞争加剧,我国积极推进算力发展并将综合算力作为数字经济核心驱动力的背景下,该报告对我国综合算力进行研究。 中国算力大会发布的《中国综合算力指数(2024年…...
51c~ONNX~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/11608027 一、使用Pytorch进行简单的自定义图像分类 ~ONNX 推理 图像分类是计算机视觉中的一项基本任务,涉及训练模型将图像分类为预定义类别。本文中,我们将探讨如何使用 PyTorch 构建一个简单的自定…...
线下陪玩系统架构与功能分析
2015工作至今,10年资深全栈工程师,CTO,擅长带团队、攻克各种技术难题、研发各类软件产品,我的代码态度:代码虐我千百遍,我待代码如初恋,我的工作态度:极致,责任ÿ…...
海康工业相机的应用部署不是简简单单!?
作者:SkyXZ CSDN:SkyXZ~-CSDN博客 博客园:SkyXZ - 博客园 笔者使用的设备及环境:WSL2-Ubuntu22.04MV-CS016-10UC 不会吧?不会吧?不会还有人拿到海康工业相机还是一脸懵叭?不会还有人…...
SAP POC 项目完工进度 - 收入确认方式【工程制造行业】【新准则下工程项目收入确认】
1. SAP POC收入确认基础概念 1.1 定义与原则 SAP POC(Percentage of Completion)收入确认方式是一种基于项目完工进度来确认收入的方法。其核心原则是根据项目实际完成的工作量或成本投入占预计总工作量或总成本的比例,来确定当期应确认的收…...
【Elasticsearch 】 聚合分析:聚合概述
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
【算法】二分
二分 1.二分查找1.在排序数组中查找元素的第一个和最后一个位置2.牛可乐和魔法封印3.A-B 数对4.烦恼的高考志愿 2.二分答案1.木材加工2.砍树3.跳石头 1.二分查找 当我们的解具有二段性(根据最终答案所在的位置判断是否具有二段性)时,就可以使…...
如何将自己本地项目开源到github上?
环境: LLMB项目 问题描述: 如何将自己本地项目开源到github上? 解决方案: 步骤 1: 准备本地项目 确保项目整洁 确认所有的文件都在合适的位置,并且项目的 README.md 文件已经完善。检查是否有敏感信息࿰…...
编辑器Vim基本模式和指令 --【Linux基础开发工具】
文章目录 一、编辑器Vim 键盘布局二、Linux编辑器-vim使用三、vim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)末行模式(last line mode) 四、vim的基本操作五、vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…...
Scade 表达式 - 使用索引的迭代器
Scade 表达式中的 map, fold, mapfold,会对输入数组参数中的元素逐个作处理,不需要数组元素的索引信息。若在处理数组元素时,需要数组元素相应的索引信息,则可使用迭代器算子 mapi, foldi, mapfoldi。 mapi 算子 mapi 算子的行为…...
K8s学习
Kubernetes 1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点…...
面试--你的数据库中密码是如何存储的?
文章目录 三种分类使用 MD5 加密存储加盐存储Base64 编码:常见的对称加密算法常见的非对称加密算法https 传输加密 在开发中需要存储用户的密码,这个密码一定是加密存储的,如果是明文存储那么如果数据库被攻击了,密码就泄露了。 我们要对数据…...
微服务学习-快速搭建
1. 速通版 1.1. git clone 拉取项目代码,导入 idea 中 git clone icoolkj-microservices-code: 致力于搭建微服务架构平台 1.2. git checkout v1.0.1版本 链接地址:icoolkj-microservices-code 标签 - Gitee.com 2. 项目服务结构 3. 实现重点步骤 …...
兼职全职招聘系统架构与功能分析
2015工作至今,10年资深全栈工程师,CTO,擅长带团队、攻克各种技术难题、研发各类软件产品,我的代码态度:代码虐我千百遍,我待代码如初恋,我的工作态度:极致,责任ÿ…...
【云岚到家】-day03-门户缓存实现实战
【云岚到家】-day03-门户缓存实现实战 1.定时任务更新缓存 1.1 搭建XXL-JOB环境 1.1.1 分布式调度平台XXL-JOB介绍 对于开通区域列表的缓存数据需要由定时任务每天凌晨更新缓存,如何实现定时任务呢? 1.使用jdk提供的Timer定时器 示例代码如下…...
Ubuntu 24.04 LTS 开启 SMB 服务,并通过 windows 访问
Ubuntu 24.04 LTS 背景资料 Ubuntu服务器折腾集Ubuntu linux 文件权限Ubuntu 空闲硬盘挂载到 文件管理器的 other locations Ubuntu开启samba和window共享文件 Ubuntu 配置 SMB 服务 安装 Samba 确保 Samba 已安装。如果未安装,运行以下命令进行安装ÿ…...
“AI人工智能内容辅助创作平台:让创意不再“卡壳”
在如今这个信息爆炸的时代,内容创作成了每个人的“必修课”。无论是自媒体大V、文案策划,还是普通学生写作文,大家都会遇到一个让人抓狂的问题——“创意枯竭”。有时候,脑袋里空空如也,一个字都写不出来,那…...
mac 安装 node
brew versions node // 安装 node brew versions node14 // 安装指定版本 卸载node: sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* sudo rm -rf /usr/local/include/node /Users/$USER/.npm su…...
VUE之Router使用及工作模式
1、路由的使用 【两个注意点】 1)路由组件通常放在pages 或 views文件夹,一般组件通常放在components文件夹。 2)通过点击导航,视觉效果上"消失"了的路由组件,默认是被"卸载"掉的,需要的时候再去挂载。 // 创建一个路由器,并暴露出去// 第一步:…...
day25_HTML
今日内容 零、 复习昨日 一、HTML 零、 复习昨日 一、Web开发 前端 HTML ,页面展现CSS , 样式JS (JavaScript) , 动起来 二、HTML 2.1 HTML概念 网页,是网站中的一个页面,通常是网页是构成网站的基本元素,是承载各种网站应用的平台。通俗…...
(开源)基于Django+Yolov8+Tensorflow的智能鸟类识别平台
1 项目简介(开源地址在文章结尾) 系统旨在为了帮助鸟类爱好者、学者、动物保护协会等群体更好的了解和保护鸟类动物。用户群体可以通过平台采集野外鸟类的保护动物照片和视频,甄别分类、实况分析鸟类保护动物,与全世界各地的用户&…...
【AI日记】25.01.20
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛:Forecasting Sticker Sales 读书 书名:自由宪章阅读原因:作者哈耶克,诺贝尔经济学奖得主,之前读过他的 《通往奴役…...
基于机器学习的用户健康风险分类及预测分析
完整源码项目包获取→点击文章末尾名片! 背景描述 在这个日益注重健康与体能的时代,健身已成为许多人追求健康生活的重要组成部分。 本数据集包含若干健身房会员的详细信息,包括年龄、性别、体重、身高、心率、锻炼类型、身体脂肪比例等多项关…...
AI生成内容——JavaScript中的Promise、async和wait
一、Promise *1. 概念: Promise 是 JavaScript 中处理异步操作的一种对象,它表示一个异步操作的最终完成(或失败)及其结果值。一个 Promise 对象处于以下三种状态之一: Pending(进行中)&#…...
Java基于SSM框架的社区团购系统小程序设计与实现(附源码,文档,部署)
Java基于SSM框架的社区团购系统小程序设计与实现 博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 Ǵ…...
Git原理与应用(三)【远程操作 | 理解分布式 | 推送拉取远程仓库 | 标签管理】
Git 理解分布式版本控制系统远程仓库新建远程仓库克隆远程仓库向远程仓库推送配置Git忽略特殊文件 标签管理理解标签创建标签操作标签删除标签 理解分布式版本控制系统 我们⽬前所说的所有内容(工作区,暂存区,版本库等等)&#x…...
【esp32小程序】小程序篇02——连接git
一、创建仓库 进入gitee官网,登录(如果没有gitee账号的就自行注册一下)。 点击号-->新建仓库 填写好必填信息,然后点击“创建” 二、微信开发者工具配置 在微信开发者工具打开我们的项目。按下面的步骤依次点击 三、验证 点…...
MongoDB基本操作
一、实验目的 1. 熟悉MongoDB的基本操作,包括CRUD(增加、读取、更新、删除)。 2. 理解MongoDB的文档型数据库特性和Shell的使用。 3. 培养学生通过命令行操作数据库的能力。 4. 强化数据库操作的实际应用能力。 二、实验环境准备 1.…...
Brooks MagnaTran LEAP User Manual 指导半导体机械手
Brooks MagnaTran LEAP User Manual 指导半导体机械手...
【Red Hat8】:搭建DHCP服务器
1、新建挂载文件 2、挂载 3、关闭防火墙 4、搭建yum源 (搭建的时候用vim 自行定义文件名.repo或者是vi 自行定义文件名.repo) 5、安装dhcp-server 6、复制模板文件 dhcpd.conf 是DHCP服务的配置文件,DHCP服务所有参数都是通过修改dhcpd.co…...
JupyterLab 安装以及部分相关配置
安装 JupyterLab pip install jupyter启动 JupyterLab jupyter lab [--port <指定的端口号>] [--no-browser] # --port 指定端口 # --no-browser 启动时不打开浏览器安装中文 首先安装中文包 pip install jupyterlab-language-pack-zh-CN安装完成后重启 JupyterLab 选…...
深圳桂湾公园的花海
工作日的午休时间我经常骑行到桂湾公园,时不时都能碰上一些阿姨问:小伙子你知道桂湾公园的花海在哪里吗?我找了半天了哈。我发现不少找花海的人是从桂湾地铁或前湾地铁下车,然后在偌大的桂湾公园找寻。其实只要定位前海紫荆园就好…...
寒假刷题Day10
一、220. 存在重复元素 III 两种解法:并没有弄懂,待复盘 class Solution { public:bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {set<long> st;for (int i 0; i < nums.size(); i) {auto lb st.lower_…...
【Java-图片存储方案】
Java功能相关文章 一、Minio存储大体量图片 上传到Minio指定路径,前端预览时,需要生成临时访问凭证的URL import io.minio.MinioClient; import io.minio.errors.MinioException; import io.minio.http.Method; import io.minio.GetPresignedObjectUrlArgs; impo…...
机器人传动力系统介绍
以下是对机器人驱动系统的分析、最新科技应用以及世界顶级公司机器人型号使用的技术: 机器人驱动系统分析 液压驱动:利用液体压力来传递动力,通过液压泵将液压油从油箱抽出,送至液压缸,推动活塞运动,进而…...
DDD - 微服务落地的技术实践
文章目录 Pre概述如何发挥微服务的优势怎样提供微服务接口原则微服务的拆分与防腐层的设计 去中心化的数据管理数据关联查询的难题Case 1Case 2Case 3 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服…...
《Vue3 十》Vue 底层原理
命令式编程和声明式编程: 以计时器为例: // 原生 JavaScript 实现计数器,是命令式编程 <div><h1>当前数字:<span class"count"></span></h1><button class"add" click&qu…...
GMM高斯混合聚类算法(Matlab)
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GMM高斯混合聚类算法 matlab2023b语言,一键出图,直接运行 1.代码注释清晰,自行解读容易。 2…输出图例如图所示包括:聚类图(聚类结果图),协方差矩阵类型…...
【Leetcode 每日一题】2266. 统计打字方案数
问题背景 Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了 打出 一个字母,Alice 需要 按 对应字母 i i i 次, i i i 是该字母在这个按键上所处的位置。 比方说,为了按出字母 ‘s’ ,Alice 需要按 ‘7’ 四次…...
多线程杂谈:惊群现象、CAS、安全的单例
引言 本文是一篇杂谈,帮助大家了解多线程可能会出现的面试题。 目录 引言 惊群现象 结合条件变量 CAS原子操作(cmp & swap) 线程控制:两个线程交替打印奇偶数 智能指针线程安全 单例模式线程安全 最简单的单例&…...
Nginx调优
Nginx 是一个高性能的反向代理服务器和负载均衡器,在处理大量并发请求时表现出色。但是,随着系统负载的增加,Nginx 的性能可能受到多方面的影响,因此进行适当的调优至关重要。以下是 Nginx 调优的几个方向和关键点: 1…...
自定义UITableViewCell
很多时候,我们是不能直接使用系统自带的UITableViewCell,因为自带的比较简单只有一个UIImageView和两个UILabel,假设需要多个UIImageView或者两个以上UILabel,那就需要自定义了。本文就实现如何自定义UITableViewCell。 假设我们现…...