嵌入式软件开发从小工到专家

解决Java连接PostgreSQL中数组类型(Array)的传参问题 、、 之前困扰于Java连接PostgreSQL时数组类型的参数的入库问题,从Java的枚举类JdbcType可以看出跟数组有关的只有 "ARRAY(2003)" 这个类型 但是经尝试,PostgreSQL中并没有可以对应的类型 会报"No typehandler found for property xxx"的错 Caused by: java.lang.IllegalStateException: No typehandler found for property testArr 参考. 阅读详情

向单片机嵌入式开发小伙伴推荐了几本书

1. . 书籍推荐

书籍推荐
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 大师介绍

大师介绍

3. 大师书籍编写逻辑

25年大师出版的关于:嵌入式单片机开发方向的书籍

  • 思想:
    • OOP OOA OOD
    • UML建模
  • 软件开发生命周期
  • 软件开发模型
    • 螺旋模型
  • 软件开发方法论
    • DDD
    • 敏捷
    • 极限编程
  • 实时嵌入式操作系统
  • 设计模式
  • 故障分析:FMEA

4. 读后感:

“Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit” 这本书的复杂性和专业性让很多读者难以理解,主要原因在于它覆盖了多个高级主题和专业领域。为了充分理解书中的内容,读者需要具备以下方面的知识和经验:

  1. 专业背景:主要面向有嵌入式系统学术或工作背景的读者。对这一领域缺乏经验的读者可能难以理解复杂的概念。

  2. 编程和软件设计知识:书中设计模式和实例主要基于C语言,同时涉及面向对象分析(OOA)、设计(OOD)和编程(OOP)的理念。

  3. 设计模式的复杂性:设计模式是解决特定问题的抽象方案。没有一定的软件设计经验可能难以理解其应用和好处。

  4. 交叉学科知识:书中还涉及如统一建模语言(UML)、实时操作系统(RTOS)等领域的知识。

  5. 项目周期管理和产品研发流程:理解整个项目生命周期和产品研发的各个阶段对实现嵌入式系统至关重要。

  6. 丰富的项目经验:没有丰富的项目经验,尤其是在嵌入式系统领域,可能导致读者难以将理论应用到实践中。

  7. 嵌入式系统的特殊性:这类系统通常对资源、性能和可靠性有特别要求,理解这些特性对于理解书中的内容至关重要。

  8. 理论与实践结合:理论知识和实际应用的结合是理解书中内容的关键。单纯的理论学习可能不足以领会书中的深层次知识。

9.硬件知识:嵌入式系统设计涉及硬件和软件的紧密结合,了解硬件对软件设计的影响是必要的。

5. 软件工程化

硬件设计有硬件设计图纸,
机械设计有机械设计图纸,
建筑设计有建筑设计图纸,
园林设计有园林设计图纸,
电气工程有电气设计图纸
服装设计有服装设计图纸。
各行各业都有设计图纸,都遵循各领域行业标准画图纸。
大到航空母舰小到盖个鸡舍都需要图纸。

然而,令人遗憾的是,在嵌入式实时系统软件设计领域,UML(统一建模工具)使用仍然不普及,有时甚至完全缺失。
尽管UML已有三四十年历史,但在嵌入式实时系统软件设计领域仍步履蹒跚。
在医疗仪器龙头企业干几年,没人使用UML统一建模工具绘制嵌入式实时系统软件设计图纸,仅绘制非标设计图。

在嵌入式实时系统软件设计领域内,常见的做法是先行写代码,再补充设计图纸,
这种做法类似于“先盖楼,后画图”,在没有图纸的情况下盖起高楼,待楼房建成后才绘制设计图。

“先盖楼,后画图”已经是很负责的了,绝大多数是没有图纸没有文档的,
这种现象在该领域中普遍存在,导致网络上频频吐槽代码晦涩难懂,
只有开发者自己努力回想才能理解(大多数没有图纸,这似乎成了一种“价值”,因为可见的未来无人能替代)。
这不仅体现了行业内某种程度的自满和保守,也暴露了对软件建模的忽视,
所以随之而来的超乎想象的产品投诉率、产品故障率、甚至产品召回,但可以肯定的是都与项目负责人有关系,
毕竟将帅无能累死三军,其中大多数故障都是嵌入式开发工程师们的“杰作”,
因为,其他方向工程师都有标准化图纸,都有实体,实体都有质量属性,
就只有软件只有逻辑没有图纸,甩锅小能手,扯呼起来舍我其谁,谁与争峰……

6. 从小工到专家

完全理解并掌握 “Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit” 这本书中的内容是达到高级研发工程师岗位要求的重要一步,但需要注意的是,成为一名高级研发工程师通常还需要以下几方面的能力和经验:

  1. 实际项目经验:理论知识固然重要,但高级工程师通常需要在实际项目中应用这些知识。成功的项目经验能展示一个人的技能不仅限于理论,还能在实际问题中找到解决方案。

  2. 问题解决能力:高级工程师应能独立解决复杂的技术问题。这不仅包括编程技能,还包括系统设计、性能优化、问题诊断和创新解决方案的能力。

  3. 团队合作与领导能力:高级工程师通常需要在团队环境中工作,有时还需要领导项目或团队。良好的沟通能力和团队合作精神是必不可少的。

  4. 持续学习和适应能力:技术领域不断进步,高级工程师需要持续学习新技术和方法论,以保持其技能的相关性和前沿性。

  5. 软件工程的全面知识:除了嵌入式系统,高级工程师还应对软件工程的其他方面有深入的理解,如软件架构、测试、维护和软件生命周期管理。

  6. 创新和研究能力:在某些情况下,高级工程师还需要能够进行技术创新和研究,以推动领域的发展。

总之,虽然完全理解这本书是成为高级研发工程师的重要条件之一,但还需要广泛的技术知识、丰富的实践经验和良好的软技能。在职业生涯中不断学习和积累经验是达到高级水平的关键。

PostgreSQL查询传入多字段多值(数组实现) java端代码可以传入数组。 阅读详情

相关推荐

PostgreSQL高级编程:存储过程与函数

PostgreSQL的过程化编程能力正在重新定义应用架构的边界。将数据处理逻辑靠近数据源,实现数量级的性能提升构建自洽的业务规则体系,确保数据一致性扩展数据库原生能力,处理JSON、GIS、时序等复杂数据类型随着PostgreSQL 16对窗口函数、并行查询、JIT编译等特性的持续优化,数据库端编程正在成为高并发、低延迟系统的首选方案。需要原子性保证的复杂事务高频访问的热点数据处理实时数据管道和ETL流程敏感数据的审计跟踪。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 2483

将数组传递给PostgreSQL PL / pgSQL函数

通过PostgreSQL数组将字符串集合传递给PL / pgSQL存储函数可能很方便。 通常,这是一件非常容易完成的事情,但是这篇文章演示了将数组从JDBC或psql传递给PL / pgSQL函数时要注意的一些细微差别。 下一个代码清单是关于人为的PL / pgSQL存储功能的,将在本文中使用。 该函数接受文本变量数组,根据数组长度在它们上循环,并通过PL / pgSQL RAISE语句...

danpu0978的博客 2154

Mybatis调用PostgreSQL存储过程实现数组入参传递

主要介绍了mybatis调用postgresql自定义函数传递数组参数的解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

java开发中如何把实体类的字符串数组List<String>转换成postgresql数组字段类型text[]

java开发中如何把实体类的字符串数组List转换成postgresql数组字段类型text[]

qq_41894068的博客 703

RV1106G3的fastboot调试

本文详细描述了在幸狐的Luckfox Pico Ultra硬件平台上,使用官方SDK进行系统优化和YOLOv5s模型部署的过程。首先,硬件板卡使用幸狐的SDK进行EMMC非Fastboot配置时功能正常,但Fastboot配置编译失败,通过修改设备树中的ramdisk大小解决了编译问题,但运行时仍报错。幸狐提供的Fastboot烧录文件可正常运行,表明硬件支持Fastboot。随后,使用官方SDK版本rv1106_rv1103_240813进行编译和调试,发现EMMC Fastboot启动失败,通过修改U-

fzktongyong的博客 2360

Palabos 并行计算与多物理场模拟实战指南

本文详细介绍了Palabos在并行计算与多物理场模拟中的实战应用。作为基于C++和LBM的开源CFD工具,Palabos通过MPI实现高效并行计算,特别适合处理复杂流体模拟问题。文章涵盖从基础安装、多物理场耦合技巧到性能优化策略,并分享工业级应用案例与调试经验,帮助开发者快速掌握这一强大工具。

4k5l6j7h8的博客 245

php数组转换成url参数函数,如何将数组编码为URL参数,在PHP中提取并作为函数参数传递给Postgres...

如果我有一个正确工作的postgres函数(类似于下面);package."func_SetValues"(id integer, values integer[])DECLAREi integer;BEGINFOR i IN 1..array_upper(values, 1)LOOPEXECUTE package."func_DoStuff"(id, values[i]);END LOOP;EN...

weixin_42467428的博客 232

劳特巴赫 Trace32 调试使用教程

详细介绍如何使用trace32进行调试

m0_56208280的博客 4万+

PostgreSQL - 函数与存储过程的性能优化技巧

PostgreSQL 函数与存储过程性能优化摘要 🚀 PostgreSQL 函数与存储过程是业务逻辑下沉的关键组件,但不当使用会导致性能问题。本文总结核心优化技巧: 1️⃣ 区分函数与存储过程 函数必须返回值,可嵌入SQL;存储过程无返回值,支持事务控制(PostgreSQL 11+) 2️⃣ 选择合适语言 性能排序:SQL函数 > C函数 > PL/pgSQL > 其他语言 简单逻辑用SQL函数,复杂业务用PL/pgSQL 3️⃣ 正确设置函数波动性 IMMUTABLE(纯计算)、ST

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

HomeAssistant+HACS实战:5分钟搞定米家设备接入(附HomeKit配置技巧)

本文详细介绍了如何通过HomeAssistant和HACS插件商店快速接入米家设备,并分享HomeKit配置技巧。从HACS安装到米家设备接入,再到HomeKit设备集成,提供一站式智能家居解决方案,帮助用户实现设备统一管理和自动化场景设置。

weixin_29192141的博客 1050

某手短视频用户主页视频列表爬虫实战:从原理到完整实现

随着短视频平台的迅猛发展,某手(为保护平台隐私,本文以“某手”代指实际目标)已经成为国内最大的短视频社交平台之一,拥有数亿日活用户。对于数据分析师、内容创作者和市场营销人员而言,获取某个用户主页的视频列表具有重要的研究价值——无论是分析头部创作者的内容策略,还是监测竞品的发布频率与互动数据,爬虫技术都成为不可或缺的工具。然而,在2024-2025年的技术环境下,某手已经构建了多层次的反爬机制:包括接口签名加密、请求参数动态混淆、设备指纹检测、IP行为分析以及Web端无限滚动加载的异步数据获取方式。

2201_76125261的博客 540

Postgresql源码(84)语义分析——函数调用结构CallStmt的构造与函数多态的实现(pl参数)

本文涉及模块:~~语法分析~~ 、**语义分析**、~~查询重写~~ 函数调用时在语义分析阶段,transform函数对函数入参进行分析,直观上需要完成几步工作: 1. 检查是否有函数能匹配上调用输入的参数列表 2. 如果匹配不上,是参数个数匹配不上,还是参数类型匹配不上? - 如果是个数,用默认参数拼接后能否匹配?【默认参数拼接】 - 如果是类型,经过类型转换后能否匹配?【类型转换】 3. 如果匹配上了多个,那么需要应该执行哪个函数?【多态】 PG对于上述问题都有了完善的处理逻辑,本篇尝试分析。

InternalsOf 1357

基于python CNN卷积神经网络模型实现6类别垃圾分类 毕业设计 附完整代码数据

基于python CNN卷积神经网络模型实现6类别垃圾分类 毕业设计 附完整代码数据

1665

在PostgreSQL中,函数调用是一个非常重要的操作

PostgreSQL支持用户定义函数(User-Defined Functions, UDFs),这些函数可以包含SQL语句、PL/pgSQL(PostgreSQL的过程语言)、PL/Perl、PL/Python等多种语言编写的代码。函数在数据库中注册后,可以像SQL内置函数一样被调用。在PostgreSQL中,可以使用语句来定义函数。下面是一个简单的例子,展示如何定义一个返回两个整数之和的函数。BEGINEND;:创建一个新的函数,如果函数已经存在,则替换它。:函数名。

MrLi的博客 1385

Avalonia+ReactiveUI跨平台路由:从零到舞者,你的UI也能跨界起舞?

至此,你已掌握了Avalonia+ReactiveUI的跨平台路由精髓!你的应用现在能够优雅地在各个界面间穿梭,就像是在不同星球间跳跃的宇宙飞船。无论是初探跨平台开发的新手,还是经验丰富的老船长,这段旅程都能让你的UI编排技能更上一层楼。现在,是时候让世界见证你的跨平台魔术了!💫记住,每一次实践都是向着完美编舞迈进的一步,勇敢地在你的项目中尝试吧!如果在航行中遇到风暴,别忘了回来看看这篇指南,或者在评论区抛出你的救生圈,我们一起解决!🌊。

java专栏 1534

Altium Designer(AD)PCB拼版——两种方法教程

本文详细介绍了PCB拼版的设计要点与操作方法。主要内容包括:拼版目的(解决小尺寸夹持问题、提高利用率、降低成本)和三大连接方式(V-CUT、邮票孔、空心连接条)的特点与参数设置;工艺边设计规范(宽度、定位孔、Mark点等要求);拼版尺寸限制与常见错误检查;以及两种具体拼版操作方法(特殊粘贴和拼版阵列),并附有工艺边、定位孔、Mark点的绘制步骤示意图。同时提供了硬件工程师笔试面试相关资源链接。全文系统阐述了PCB拼版的核心技术和操作流程,为电子设计人员提供了实用指导。

XU157303764的博客 7601

PostgreSQL学习手册(PL/pgSQL过程语言)

为什么80%的码农都做不了架构师?>>> ...

weixin_34007020的博客 184

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数据库之postgreSQL存储过程写法示例

PostgreSQL的存储过程简单入门 [url]http://blog.youkuaiyun.com/rachel_luo/article/details/8073458[/url] 存储过程事物 [url]http://www.php100.com/manual/PostgreSQL8/tutorial-transactions.html[/url] PL/pgSQL - SQL存储过程语言 [url]h...

weixin_40594160的博客 2119

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

postgreSQL存储过程写法示例

PostgreSQL的存储过程简单入门 [url]http://blog.youkuaiyun.com/rachel_luo/article/details/8073458[/url] 存储过程事物 [url]http://www.php100.com/manual/PostgreSQL8/tutorial-transactions.html[/url] PL/pgSQL - SQL存储过程语言 [url...

pyzheng的专栏 4411

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

postgresql 存储过程demo

传递数组,返回值 CREATE OR REPLACE FUNCTION test(tt INTEGER[]) returns integer as $$ declare sqll text; cou INTEGER; BEGIN sqll:='SELECT count(*) from (select UNNEST($1)) v'; execute sqll into cou u...

weixin_43632687的博客 471

Postgresql源码(77)plpgsql中参数传递和赋值(pl参数)

介绍参数从ExecuteCallStmt到plpgsql堆栈中的传递、构造细节;下一篇介绍ExecuteCallStmt之前的参数列表从哪里来。

InternalsOf 3627

postgresql使用触发器函数监控表中数据的改变

PL/pgSQL可以用于定义触发器过程。 一个触发器过程是用CREATE FUNCTION命令创建的, 创建的形式是一个不接受参数并且返回trigger类型的函数。 请注意该函数即使在CREATE TRIGGER声明里声明为准备接受参数, 它也必需声明为无参数,因为触发器的参数是通过TG_ARGV传递的,触发器函数里面可以使用的参数如下: PL/触发器函数参数列表 参数名 描述 ...

yxl_1207的博客 4235

Postgresql源码(87)数组构造与计算(Flat格式与Expand格式)

一句话总结 **数组的标准构造函数会生成紧凑的flat结构ArrayType,像元组一样数据跟在后面;pl中会把flat紧凑结构解析到expand数组结构中,并加上mxct内存上下文归属关系,便于计算。**

InternalsOf 1662

oracle存储过程异常时返回值,PostgreSQL存储过程(5)-异常错误处理

1. 异常错误处理 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回滚.我们可以通过使用带有EXCEPTION子句的BEGIN块来捕获异常并使其从中恢复.见如下声明形式: [ <> ] [ DECLARE declarations ] BEGIN statements EXCEPTION WHEN condition [ OR condi...

weixin_32401075的博客 953
上一篇: 4. 嵌入式软件开发之架构设计
下一篇: 软件开发方法论
Let's Chat Coding
博客等级 码龄3年 1020粉丝 92原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值