设计模式

期刊第8期 | 分享C/C++嵌入式系统编程思想

人盡茶涼 提交于 2020-12-29 13:58:35
关注、星标公众号,直达精彩内容 ID:技术让梦想更伟大 作者:李肖遥 期刊是之前主要分享原创文章知识总结,读者提问,职场杂谈等,目前前两者已经有了新的形式,后续主要随机分享,不定期更新,属于自己的私密空间,希望对大家有收获。 原创汇总 专辑链接汇总在下面: 【技术让梦想更伟大】专辑 | 原创汇总 读者提问 具体可查看: 逍遥的小蜜圈 分享一本书,分享嵌入式系统编程思想 嵌入式系统编程的文章 最近一两个月分享了很多嵌入式系统编程的文章,例如软件架构、性能优化、内存操作等。 嵌入式系统编程软件架构该注意哪些方面? 嵌入式系统编程怎么实现性能优化? 嵌入式系统编程之内存操作的注意事项 也分享了一些模块化编程、魔法编程、状态机思路等。 如何写模块化的代码? 嵌入式单片机编程魔法之三权分立 状态机思路在嵌入式开发中的应用详解 嵌入式工程师,解析硬核单片机编程思想! 状态机——单片机的万能语言(附代码) 【架构篇】嵌入式编程中如何给代码的结构分层 并且也说到了防御式编程,这个其实就是写一些预防代码,写防止以后出错的代码。 到底什么是防御式编程? 总之这些系列看下来,或者本人写一些下来,收获很大。同时也是对嵌入式系统编程有了更深的理解。 就像是之前和一群大佬讨论的,设计模式要不要学,实际上嵌入式设计模式也就是在这些知识中渐渐的形成了,不用专特去干巴巴的学习。 推荐一本书 另外在嵌入式编程中

Linux内存管理(最透彻的一篇)【转】

一笑奈何 提交于 2020-12-29 07:40:11
转自: https://www.cnblogs.com/ralap7/p/9184773.html 摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。 前言 内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市面上或是网上都充斥着大量涉及内存管理的教材和资料。因此,我们这里所要写的Linux内存管理采取避重就轻的策略,从理论层面就不去班门弄斧,贻笑大方了。我们最想做的和可能做到的是从开发者的角度谈谈对内存管理的理解,最终目的是把我们在内核开发中使用内存的经验和对Linux内存管理的认识与大家共享。 当然,这其中我们也会涉及到一些诸如段页等内存管理的基本理论,但我们的目的不是为了强调理论,而是为了指导理解开发中的实践,所以仅仅点到为止,不做深究。 遵循“理论来源于实践”的“教条”,我们先不必一下子就钻入内核里去看系统内存到底是如何管理,那样往往会让你陷入似懂非懂的窘境(我当年就犯了这个错误!)。所以最好的方式是先从外部(用户编程范畴)来观察进程如何使用内存,等到大家对内存的使用有了较直观的认识后

领域驱动设计,让程序员心中有码(四)

梦想与她 提交于 2020-12-29 03:40:45
题图 from unsplash 我一直认为,程序员也是艺术家,他们撰写的每一行代码,是献给这大好世界的优美诗篇。不同的人,写的代码也许风格迥异。有的,如春风化雨润物无声,有的,如高山流水,曲高和寡,还有的如旱日春雷,先声夺人。而如果说,代码是诗篇,那么代码的分层艺术绝对是最先映入读者眼帘的序幕了。 分层,一直以来是一个非常经典的软件工程学问题,提到分层,无论是资深或者新入门的开发者,或多或少都有自己的理解。 在8年前,我刚参加工作时,有幸参与了比较多项目的研发和维护过程,这些项目的开发者,大多是比我年长几岁的软件开发者。在他们的开发习惯中,往往会倾向于直接在代码中写入用户界面、数据库访问等支持代码,甚至有相当一部分情况下,会把代码写入到用户界面中,这意味着在用户界面层,往往会写入大量的代码,说不定会超过上万行代码。我觉得可以将这种设计,理解为“单层架构“。 再后来的项目开始有了一点点改变,这个时候的架构,被成为“三层架构“。在.NET开发史上,三层架构成为一种历史悠久的框架,从十年前开始,一直到今天,依然是.NET开发者最为熟练的技术框架。如图所示,三层架构在客户端和数据库之间增加了一个中间层,将有效的业务规则、数据访问等放在业务层中进行处理。界面层主要使用对数据的绑定渲染,再通过数据层实现数据的提交处理。有的开发者说,三层架构通吃一切项目,似乎所有的项目都可以用三层架构来套用

领域驱动设计,让程序员心中有码(四)

无人久伴 提交于 2020-12-29 03:15:12
#领域驱动设计,让程序员心中有码(四) ----------------------追忆有关分层的古老往事 我一直认为,程序员也是艺术家,他们撰写的每一行代码,是献给这大好世界的优美诗篇。不同的人,写的代码也许风格迥异。有的,如春风化雨润物无声,有的,如高山流水,曲高和寡,还有的如旱日春雷,先声夺人。而如果说,代码是诗篇,那么代码的分层艺术绝对是最先映入读者眼帘的序幕了。 分层,一直以来是一个非常经典的软件工程学问题,提到分层,无论是资深或者新入门的开发者,或多或少都有自己的理解。 在8年前,我刚参加工作时,有幸参与了比较多项目的研发和维护过程,这些项目的开发者,大多是比我年长几岁的软件开发者。在他们的开发习惯中,往往会倾向于直接在代码中写入用户界面、数据库访问等支持代码,甚至有相当一部分情况下,会把代码写入到用户界面中,这意味着在用户界面层,往往会写入大量的代码,说不定会超过上万行代码。我觉得可以将这种设计,理解为“单层架构“。 再后来的项目开始有了一点点改变,这个时候的架构,被成为“三层架构“。在.NET开发史上,三层架构成为一种历史悠久的框架,从十年前开始,一直到今天,依然是.NET开发者最为熟练的技术框架。如图所示,三层架构在客户端和数据库之间增加了一个中间层,将有效的业务规则、数据访问等放在业务层中进行处理。界面层主要使用对数据的绑定渲染,再通过数据层实现数据的提交处理

领域驱动设计,让程序员心中有码(八)

余生颓废 提交于 2020-12-27 00:29:12
回顾   领域驱动是十五年前,由 Eric Evans 提出的解决软件工程复杂性问题的方法,作者从自己多年软件开发的角度 出发,通过引入领域驱动设计的概念以及一系列战略设计模式和战术方法,为混沌的软件开发领域带来了一缕阳光。   在过去的许多年,我经历了从技术岗位到管理岗位的变化,也深深的意识到,每一个软件的设计与实施过程之艰辛,缺乏一些科学的管理方法,只会让人疲于奔命,毫无积累,尤其是对于开发过程而言,看似枯燥乏味的编码过程,却充满了更大的变数。   例如,在以前传统企业开发中设计系统架构时,往往会使用三层架构,用户界面层,业务层,数据访问层上手就来,但是却看似三层分立,但是由于开发者开发过程中出现的一些不规范问题,容易在用户界面层和数据层中堆积大量的冗余代码,而中间的业务层反而非常单薄,代码行很少,仅仅只是实现对象的输出而已。用户界面层和数据访问层就很容易成为腐化代码,随着需求的变更,容易变成大泥球系统。   尤其是那些核心模块的用户界面层代码,轻易就突破了上千行,甚至上万行,这些代码并非完全都是由于不规范的操作造成的,一定程度上也是由于个别开发者的代码不规范,形成的破窗效应。不管发生了什么,这些代码最终成为一座屎山。如果再加上古人写的存储过程,对不起,我选择自闭。   屎山的命运往往都是一样的,要么重构成功,得以逆天改命,要么被公司抛弃,成为企业发展过程中的一座重要里程碑

web开发前端面试知识点目录整理

不想你离开。 提交于 2020-12-26 06:26:28
web开发前端面试知识点目录整理 基本功考察 关于Html 1. html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化 2. h5中新增的属性; 如自定义属性 data, 类名className等, 新增表单元素, 拖拽 Drag 3. h5中新增的 API, 修改的 API, 废弃的 API 稍作了解 (离线存储, audio, video) 关于CSS 1. CSS选择器( 三大特性 ) 2. BFC机制 3. 盒模型 4. CSS模块化开发(封装); SCSS和LESS的使用 5. 屏幕适配 以及 页面自适应 6. CSS3中新增的选择器 7. CSS3中新增的属性, transform trasition animation等... 关于布局 1. 标准文档流(padding + margin + 负margin) + 浮动 float + 定位 2. 百分比布局(流式布局): px单位 用 %num代替, 占父级元素的百分比 3. flex弹性布局: 主轴 辅助轴的几个属性 4. grid栅格布局: 使用框架中的类名来替代: 本质上还是百分比布局 关于JS基础 1. 变量数据类型及检测: 基本 + 引用 2. 运算符: 算术 + 条件 + 逻辑 + 位 + 短路, 隐式转换等 3. 条件, 循环, 异常处理 if switch(){

领域驱动设计,让程序员心中有码(七)

百般思念 提交于 2020-12-26 06:03:02
领域驱动设计- 让程序员心中有码(七) -设计原则和设计模式,互联网开发者们共同的追求 前言   多年来,笔者一直从事传统软件企业的软件开发和项目管理工作。笔者发现在众多的传统软件企业中,评判优秀开发者的标准往往是技能的熟练程度,基本上都是以梭代码的速度论英雄。有人评价说,这种开发可以称之为cv编程,即ctrl+c和ctrl+v编程为主。这种开发往往对开发者的技能要求并没有想象中的那么高,由于工时和合同的限制,不得不压缩开发时间,通过靠密集的劳动力资源、较高的工作强度来完成项目的开发。这种模式,通过简单的复用历史代码,可以更快的输出结果,对于中小型企业和一些外包企业来说,也意味着更快的项目完成速度、而越快做完项目,也意味着可以越快收回合同款,尽快开始下一个项目。   然而,也必须承认,在这种模式下,代码的质量取决于项目管理者对于技术和代码的把握能力,如果摊上不懂技术的项目管理者以及对于代码质量没有要求的研发人员,可能最终输出的代码,将成为一团乱麻,只能在一个个项目中无穷次的积累,直到遇到一群优秀的开发人员费劲心力把体系重构为止。   而当今互联网时代下,面向互联网的应用开发,不再追求短期成效,更在乎长期技术的沉淀,这个过程中,也对开发者提出了更高的要求。互联网行业的开发者,不仅仅要求代码梭得快,还在乎编写代码编写的质量,谁能编写出更加优美的代码,往往也更容易受人欢迎。于是

《大话数据结构》 分享下载

老子叫甜甜 提交于 2020-12-26 00:53:05
书籍信息 书名: 大话数据结构 作者: 程杰 豆瓣评分: 7.9分(1381人评价) 标签: 数据结构,算法,计算机,编程,程序设计,计算机科学,软件开发,计算机/编程,大话数据结构,免费,程序员书籍,编程,pdf,电子书 内容简介 本书为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。 本书以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇?一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。 作者简介 一个被读者誉为很适合写IT技术书的家伙。《大话设计模式》作者。此书07年末出版至今已经简体版印刷9次、繁体版印刷6次,取得了较好的成绩,开创了一种适合国人阅读的趣味讲解IT知识的风格模式。其本人参与过政府、证券、游戏、交通等多种行业的软件开发及项目管理工作

大前端完整学习路线

醉酒当歌 提交于 2020-12-25 21:15:22
第一阶段: HTML+CSS: HTML进阶、CSS进阶、div+css布局、HTML+css整站开发、 JavaScript基础: Js基础教程、js内置对象常用方法、常见DOM树操作大全、ECMAscript、DOM、BOM、定时器和焦点图。 JS基本特效: 常见特效、例如:tab、导航、整页滚动、轮播图、JS制作幻灯片、弹出层、手风琴菜单、瀑布流布局、滚动事件、滚差视图。 JS高级特征: 正则表达式、排序算法、递归算法、闭包、函数节流、作用域链、基于距离运动框架、面向对象基础、 JQuery:基础使用 悬着器、DOM操作、特效和动画、方法链、拖拽、变形、JQueryUI组件基本使用。 第二阶段:HTML5和移动Web开发 HTML5: HTML5新语义标签、HTML5表单、音频和视频、离线和本地存储、SVG、Web Socket、Canvas. CSS3: CSS3新选择器、伪元素、脸色表示法、边框、阴影、background系列属性改变、Transition、动画、景深和深透、3D效果制作、Velocity.js框架、元素进场、出场策略、炫酷CSS3网页制作。 Bootstrap: 响应式概念、媒体查询、响应式网站制作、删格系统、删格系统原理、Bootstrap常用模板、LESS和SASS。 移动Web开发: 跨终端WEB和主流设备简介、视口、流式布局、弹性盒子、rem

Java面试 32个核心必考点完全解析

别来无恙 提交于 2020-12-25 18:37:18
[TOC] 这是一份来自哔哩哔哩的Java面试 Java面试 32个核心必考点完全解析(完) 课程预习 1.1 课程内容分为三个模块 基础模块 : 技术岗位与面试 计算机基础 JVM原理 多线程 设计模式 数据结构与算法 应用模块 : 常用工具集 常用框架 缓存 队列 数据库 综合模块 : 系统架构设计 微服务架构 容器化 1.2 换工作面临问题 能力不错,却总被忽略 不知道简历怎么准备 工作年限 美观度 多分简历 不知道面试官考什么 社交门户侧重于大规模并发场景的应用和架构能力 OTO行业侧重于综合能力考察 金融更喜欢逻辑缜密,对高可用安全领域有经验的候选人 校招更多对基础知识和逻辑思维方面的考察,以培养潜力考察为主 初中级工程师则需要多关注知识的广度,基础知识的应用 高级资深工程师需要深入理解基本原理,以综合能力考察为主 没有get到面试官的考察意图。如:问到是否使用某框架,实际是是问该框架的使用场景,有什么特点,和同类可框架对比一系列的问题。 不知道如何提升晋级? 学习首先有个框架 1.3 课程特色 全盘汇总:Java知识体现精细梳理 特近实战:面试官亲自教你拿Offer 潜规则:揭秘技术面试加分&潜规则 权威性:拉勾40W技术岗位大数据支持 课时1:技术人职业发展路径 1.1 工程师发展路径 技术序列 :技术攻坚、架构知识、专业知识 工程师 高级工程师 资深工程师 技术专家