如何实现一个快速开发框架之crud

一次看透const a、#defineb、const#define修饰的符号名称是一个真量数值,而const修饰的栈常量,是一个“假”常量。在实际中,使用const定义的栈变量,最终还是一个变量,只是在编译期间对语法进行了检查,发现代码有对const修饰的变量存在直接修改行为则报错。——《C++反汇编与逆向分析技术揭秘》const 修饰的变量,根据实测,要区分是局部变量还是全局变量。如下图所示全局变量g_val,虽然我们通过指针转换,绕过了编译器检查,但实际在写入操作时,引发异常。 阅读详情

    我在《一个优秀框架的评判标准和方向》说了,一个优秀的企业级开发框架——以用户需求为向导的框架——应该至少实现crudworkflowreport三个范畴的常见需求的快速开发。

       Crud范畴的快速开发具体怎么做呢?这里提供一种我的实现方式,它采用了hibernate这个orm框架。

       Crud;说白了就是一个实体对象的增、删、改、查。是我们最常见的功能。做Crud的时候oo的思想特别有用。

       通过分析得到我们的实体对象和它们之间得关系。那么我们的功能无外呼就是维护实体对象和对象之间的关系。

       具体怎么来阐述我的思路呢?

       页面是功能得直接表现。我们就从页面说。(实体对象和对象之间的关系是本质,而页面是本质的体现。不同实体的不同关系,在页面上会有一定的表现。这个就上是生病了去看医生,医生通常是从你的表征上来看你得了什么病。)

举个例子:

例如:多对一的关联关系:

如班级和系别的关系,多个班级属于一个系。关系得主控方通常在多得一方。(具体hibernate怎么配置请参看《我的O/R MAPPING (HIBERNATE)方法小结》)那么我们的页面就是这样:

上面有一个选择,点击后弹出系别列表,可以选择系别。当然也可以是一个下拉框。可以让程序员根据需要用tag方便替换。

 

又如:多对多关系(或多对一关系主控方在一的一方)

如学生选客,学生和课程多对多,主控方在学生,这个时候我们的课程一方就可主动声明inverse="true"” (具体hibernate怎么配置请参看《我的O/R MAPPING (HIBERNATE)方法小结》)那么页面有可能是这样:

下面有一个多选框(当然可以是其他元素,可自由替换)来维护多对n的关系。在维护学生的时候维同时维护和课程之间的关系。但是对于课程的维护就无需维护关系了,即课程的维护页面就没有那个多选框了。

 

再如:聚合关系

课程和课程安排是聚合关系,课程安排组成了课程,课程安排离开了课程不存在意义(这通常说明课程安排不会有自己单独的增,删,改,查页面,而对它得增,删,改,查通常通过课程来完成)这个时候要没课程安排是一个hibernate组建,也可以是一个一对多的关联关系并且同时配置cascade="all-delete-orphan"/"all"fetch="join" lazy="false"。也就是说查看课程通常同时查看课程安排,课程安排的操作通过课程的操作级联来完成。这个时候页面通常是这样:

下面的列表在更新课程的时候级联更新课时安排。

由于fetch="join" lazy="false"我们加载课程的时候同时加载了课程安排,由于cascade="all-delete-orphan"/"all"我们修改课程的时候同时维护课程安排。

 

那我的的思路就是

1》  oo建模,得到实体对象和对象之间的关系

2》  配置hibernate配置文件

3》  根据配置文件生成功能默认实现,包括页面,业务逻辑等等。页面元素采用tag的形式。程序员可以根据需求替换。而代码实现尽量细力度,程序员只需要修改个性的那一部分。

DeepLens是一个用于计算镜头设计的可微光线追踪器 若安装过程中遇到网络问题导致安装失败,可尝试更换pip源,例如使用国内的镜像源,修改pip配置文件(Windows系统在。 阅读详情

相关推荐

如何配置SSC CANopen的excel文件

如何配置 CANOpen 的 EXCEL 文件

PI_sunyang的博客 3639

CMS系统项目常规开发流程和简单CRUD实现

步骤 1.设计实体,数据库表和基本实现类 1.1 数据库表 DDL CREATE TABLE `t_images` ( `imgid` int(11) NOT NULL AUTO_INCREMENT, `storepath` varchar(255) DEFAULT NULL, `storename` varchar(255) DEFAULT NULL, `intro` ...

qq_43423383的博客 1579

快速构建CRUD应用的easyserver框架指南

本文还有配套的精品资源,点击获取 简介:easyserver是一个为Node.js环境优化的框架,旨在通过提供高效简洁的API来简化CRUD应用程序的开发。它允许开发者通过简单的安装和配置步骤,快速创建数据驱动的Web应用,同时提供包括路由管理、中间件支持、数据库集成和响应式设计在内的多种功能。该框架遵循Node.js的模块化设计原则,使得应用程序易于扩展和维护。 ...

weixin_42601134的博客 1311

勾股OA添加一键CRUD功能

链接:https://pan.baidu.com/s/1G-u2QpvfGObdjnwNznpeEg。--来自百度网盘超级会员V3的分享。

weixin_46140691的博客 450

软件开发中的利器:CRUD矩阵分析表

CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)四个单词的首字母缩写,这四种操作是软件开发中对数据进行管理的基础。CRUD矩阵则是一种将这些操作与系统中的数据实体进行关联的方法。它通常以表格的形式呈现,列出系统中的各种实体(如数据库中的表格)和相应的CRUD操作。

十年运维开发经验的王义杰在此分享自己的知识和经验 2785

Fast-Crud:颠覆传统开发模式的快速开发框架

还在为繁琐的CRUD操作而烦恼吗?每天重复编写相似的增删改查代码,不仅耗时耗力,还容易出错。Fast-Crud正是为解决这一痛点而生的Java CRUD库,让数据库操作变得前所未有的简单高效。 ## 为什么需要快速开发框架? ### 开发效率的瓶颈 在传统开发中,开发者往往需要: - 为每个实体类编写重复的CRUD方法 - 处理复杂的SQL语句和数据库连接 - 手动管理事务和异常处理 -

gitblog_01096的博客 932

看透内存中的数组

一 数组在內存中的存储方式看待一个数组时,一定要把数组看成两个部分:一部分是数组引用,也就是在代码中定义的数组引用变量,它存储在内存的栈部分,另一部分是实际的数组对象,这部分存储在內存的堆部分,通常无法直接访问它,只能通过数组引用变量来访问,下图清晰的描述了数组在内存中的存储示意图。 二数组应用举例1代码示例 public class ArrayInRam { public static

实践求真知 366

你真的懂数组吗?:从 Length 与 Rank 看透多维数组底层机制

掌握数组 Length 与 Rank,深入理解多维数组的底层存储与维度机制。适用于矩阵运算、科学计算等场景,通过 Length 与 Rank 准确判断数组大小与维度结构,提升代码效率与可读性。值得收藏

InstrFun的博客 590

你真的懂Numpy广播吗?一文看透多维数组运算的底层扩展规则

掌握Numpy广播机制的关键,本文深入解析Numpy广播的维度扩展规则,涵盖多维数组运算的适用场景与核心方法,揭示自动对齐背后的逻辑。提升计算效率,避免维度错误,值得收藏。

SimTrans的博客 926

看透【数组名】的小把戏(试题详解版)

在进行题目分析之前,需要先知道以下内容:数组名代表的是数组首元素的地址sizeof 计算的是对象所占内存的大小,单位是字节。

阿顺的学习记录。 161

C语言指针与数组:内存操作与性能优化实战

指针和数组是C语言中处理内存的核心机制。指针本质是存储地址的变量,通过解引用操作直接访问内存,其算术运算基于类型大小自动缩放。数组则是连续内存块的抽象,在多数场景会退化为指针。理解它们的底层原理对嵌入式开发、性能优化等场景至关重要。在硬件寄存器操作、动态内存管理、数据处理等场景中,指针与数组的配合使用能显著提升代码效率。通过内存对齐、缓存友好访问、SIMD指令等技术,可以进一步发挥它们的性能优势。本文深入解析指针与数组的关系,并给出嵌入式开发中的典型应用实例。

weixin_30431445的博客 228

为什么 Redis BitMap 既省内存又跑得快?深入源码看透本质

Redis BitMap的高效性源于三个层面的优化:存储层使用SDS结构实现二进制安全存储,1bit存储一个状态,1亿用户仅需12MB内存;操作层通过位运算实现O(1)复杂度,SETBIT/GETBIT仅需2-3次位运算;运算层采用查表法、SWAR算法和CPU硬件指令优化BITCOUNT/BITOP操作。三者协同作用使BitMap在统计10亿用户在线状态等场景下,能以119.2MB内存支撑千万级QPS,展现了极致的内存利用率和计算效率。

程序员小星星的博客 372

Java 数据类型与内存模型:从字节到引用的底层逻辑

Java 中的数据类型是构建程序的基础,但其底层的内存存储逻辑却常常被初学者忽略。理解数据类型在内存中的表现形式,不仅能帮我们规避很多隐藏的 Bug,更能深入理解 Java 语言的设计哲学。本文将从基本数据类型的字节细节,到引用类型的内存布局,一步步揭开数据类型与内存模型的神秘面纱。

Java是世界上最好的语言 1271

从JVM内存模型看透Java Lambda的“effectively final”规则:原理、误区与性能考量

本文深入解析Java Lambda表达式中的'effectively final'规则,从JVM内存模型角度揭示其原理,探讨常见误区与性能优化策略。通过对比原子类、数组包装等解决方案的性能差异,提供最佳实践建议,帮助开发者理解变量捕获机制并编写高效代码。

weixin_30407613的博客 572

【.NET性能优化核心课】:从内存布局看透值类型与引用类型的本质区别

掌握C#值类型与引用类型内存分配规律,深入解析堆栈分配机制、逃逸分析与性能优化策略,揭示高并发场景下的内存管理本质。帮你写出更高效的.NET代码,值得收藏。

FuncWander的博客 851

ESP8266-学习点滴(3)看透char char* char[]到底是个啥?如何用?

1)数组长度获取方法 int a[10] = {0}; printf("sizeof(a) = %d\n", sizeof(a));//返回40,数组 a 是 int 型的,每个元素占 4 字节,所以长度为 10 的数组在内存中所占的字节数就是 40。而总的字节数除以一个元素所占的字节数就是数组的长度。 int cnt = sizeof(a) / sizeof(a[0]); printf(...

无线智能模块 可视DIY智能专家 1107

C/C++数组与指针深度解析:从内存模型到多维访问实战

在C/C++编程中,数组和指针是理解内存模型与数据访问的核心基础。数组在内存中连续存储,其名称在大多数表达式中会隐式转换为指向首元素的指针常量,这一特性直接映射到底层的内存寻址操作。理解指针运算和解引用原理,是掌握高效、安全内存操作的关键,尤其在处理动态内存、函数参数传递及复杂数据结构时至关重要。本文以多维数组为例,深入剖析了如`*a`、`*a[0]`、`*(*(a+i)+j)`等表达式的本质,通过内存布局图示和代码示例,揭示其与`a[i][j]`的等价关系,并探讨了指针数组、数组指针以及`sizeof`运

weixin_34414196的博客 502

交通违规目标检测数据集.zip

数据集介绍:交通违规目标检测数据集数据集名称:交通违规目标检测数据集数据量:- 训练集:580张图片- 验证集:210张图片- 测试集:210张图片分类类别:- 安全头盔佩戴检测(helm/no-helm)- 交通工具检测(mobil/motor)- 行人安全检测(pejalankaki)- 交通标识检测(zebracross)- 车牌识别(platnomor)标注格式:YOLO格式标注,包含多目标边界框及类别标签,支持目标检测模型训练自动驾驶安全系统开发:训练车辆识别交通参与者(行人/车辆)及违规行为检测(未戴头盔/未礼让行人)的核心模型智能交通管理系统:支持构建车牌识别、斑马线行人检测等智能监控功能,优化城市交通管理驾驶行为分析研究:提供违规驾驶行为的结构化数据支撑,适用于交通安全领域的学术研究安全教育应用开发:可集成至驾驶培训系统,实时检测并反馈危险驾驶行为精准场景覆盖:包含7类关键交通元素,完整覆盖头盔佩戴检测、车辆识别、行人安全等核心道路场景专业标注质量:所有标注经过交通法规验证,边界框精准标注运动目标,支持复杂交通场景下的多目标检测动态场景多样性:涵盖日间/夜间、不同天气条件下的交通场景,包含车辆多种行驶状态及行人行为模式工业级兼容性:原生YOLO格式适配主流检测框架(YOLOv5/v7/v8),可直接用于工业级模型训练法规应用价值:特别强化未戴头盔、未礼让行人等违规行为的标注数据,为交通执法AI系统提供核心训练素材

上一篇: 一个优秀框架的评判标准和方向
luopan
博客等级 码龄21年 0粉丝 5原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值