读《设计摸式》-1

优化ValKey 8.1客户端内存:基于读共享内存的设计与实践 共享读缓存区,减少内存占用,提升吞吐,降低延迟 阅读详情

   本人今天开始学习设计模式,以前并无下博客的习惯,但好的习惯应该养成,设计模式是一本经典而优秀的书籍,是每个程序员应该掌握的技能,所以接下来所写的文章将是记录自己学习的历程,更加希望能与别人一起分享自己的学习经验,欢迎大家一起讨论。

   引言中看到了有经验的设计者和新手的巨大的区别就是在于两者之间对于设计的理解和熟悉程度,像我们这些新手往往对于软件开发一开始的过程都有种无从入手的感觉,我也厌倦了这种感觉,从今天开始,我应该要努力的成为一个设计者,而不仅仅是一个手敲代码的工作人员,我们也是在从事一项艺术工作,而不是像大家所说的"农民工"。

   设计模式这本书的目的就是为了将面向对象软件的设计经验作为设计模式记录下来。

   那什么是设计模式呢?

   一般来说,设计模式有4个基本要素:1.模式名称(pattern name); 2.问题(problem); 3.解决方案(solution); 4.效果(consequences).设计模式确定了所包含的类和实例,他们的角色,协作方式以及职责分配。

    书中的第一个重要模式------SmallTalk MVC的设计模式。

    大家都知道MVC的含义是Model, View, Controller.这里复习一下这3个词的意义。 Model是应用对象,View为屏幕上的显示,Controller为定义用户界面对用户的输入方式的响应方式。下面可看下书中的示例:

 

 

    下面是一个模型和3个视图(省略Controller), 模型中包含了不同的数据,而视图则是以不同的3种方式来显示这些数据,当模型中的数据发生了改变时,便会通知它的视图,视图与模型通信以访问这些数据。所以可以看到箭头都是双向的。

     MVC的另一个特征是视图可以嵌套。简单的说我们可以编写一些像CompositeView(复合视图)类去嵌套在View层使用。例如可以写一个符合自己要求的具有分页功能的类,去嵌套相应的视图,从而获得其效果。MVC允许你在不改变视图外观的情况下改变视图对用户输入的响应方式。MVC存在许多的类层次结构以作为辅助,相应的来说,我们随时可以编写不同的类层次结构去辅助我们的模型又或者是视图和控制器,而不会违反了MVC原有的概念。因为他们不会直接影响到MVC的内容。View使用Controller的子类的实例去实现一个特定的响应策略。所以对于想更换不同的相应策略只需用不同的Controller实例去替换即可。当然MVC还使用了很多其他的模式,会随着阅读的越多,而理解到更多的。

     设计摸式创建型(Creational), 结构型(Structural),行为型(behavioral). 书中很清楚的描写了各种设计模式之间的关系,但本人不打算在这里说,先留着,等到本人对不同的设计模式有了初步的了解后,再回过来看他们的关系,相信会有一个恍然大悟的感觉。

     那么设计模式是怎样解决设计问题的呢?

     1. 寻找适合的对象

      这个过程包括了类中的对象,以及方法或操作。客户的请求是使对象操作的唯一的方法,操作又是改变对象内部数据的唯一方法。但这里我们必须考虑到对象的内部是已经封装的,不能被直接的访问,内部的表示对于外部是不可见的。我们要了解到一些因素:封装,粒度,依赖关系,灵活性,性能,演化,复用等等,这些因素通常是相互冲突的。我们可写出问题描述,从而挑出名词和动词去创建相应的类和操作,也可以找到系统的协作和职责的关系,或者对现实世界建模等等。设计中的抽象对于产生灵活的设计是至关重要的。

    (未完成,会继续更新)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【DDR3 控制器设计】(4)DDR3 的读操作设计 直接对 DDR3 进行读写时序控制是比较困难的,接口复杂且多,但是通过调取 DDR3 控制器 MIG IP 核,间接的对 DDR3 进行控制就会方便很多,控制器给用户端预留了接口,通过查看 MIG IP 核用户手册,对 IP 核进行读控制。 阅读详情

相关推荐

英语学习点读笔全面设计手册

点读笔是一种将光学识别技术和数字音频技术相结合的教育工具。其核心功能是实现纸质印刷物与数字声音的同步转换。当点读笔的探头接近印有特定图案或二维码的书籍时,能够准确识别所指位置的图案,并通过预设的数据库匹配对应的音频文件进行播放。识别技术的关键在于图像采集与处理,以及模式匹配算法。图像采集部分通常由高灵敏度的摄像头完成,其分辨率和采样率对识别准确性有直接影响。摄像头捕获图像后,需要经过一系列的图像预处理,比如去噪、二值化、边缘检测等,以提高后续处理的准确性。

weixin_33622085的博客 1470

CPU隐式读指令

特性显式读隐式读定义指令的操作数中明确编码了要读取的源。指令执行过程中,CPU自动进行的、未在操作数中编码的读取。例子(读取BX指向的内存)ADD CX, DX(读取DX寄存器)PUSH AX(读取SP寄存器)CALL func(读取SP和PC)取指阶段 (读取PC寄存器)可见性对程序员可见,是指令逻辑的一部分。对程序员通常不可见(除非在底层优化或时序分析时),是CPU实现的细节。依赖依赖于指令中指定的寄存器或内存地址。依赖于CPU的固定硬件逻辑和特定架构寄存器(如PC, SP)。

captain 1309

银河麒麟系统安装redis【亲测可行】

架构:Linux 5.10.0-9-generic x86_64 GNU/Linux。redis版本:redis-6.2.3.tar.gz。然后在执行make install,结束;OS:银河麒麟V10(SP1)未激活。cpu:I5-10代;

lx_nhs的博客 3335

不可摸数(数组真因子和)

不可摸数 描述 有一种很神奇的数。s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何 数m的s(m)都不等于n,则称n为不可摸数. 输入 包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2<=n<=1000)是整数。 输出 如果n是不可摸数,输出yes,否则输出no 输入样例 1 3 2 5 8 输出样例 1 yes yes no 一开始没有看懂不可摸数是什么 百度了一下: 令s(n)为正整数n的所有正真因子之和。例如s(1

qq_45891676的博客 1394

Windows 10下用VS2022编译AFSIM 2.9.0的完整避坑指南

本文提供了在Windows 10系统下,使用Visual Studio 2022编译AFSIM 2.9.0仿真框架的详细指南。文章系统梳理了从环境准备、CMake配置、编译链接到安装打包的全流程,并重点针对编译过程中常见的文件编码、命名空间冲突等高频错误提供了具体解决方案,旨在帮助开发者高效避坑,顺利完成AFSIM在Windows平台上的构建。

weixin_28839549的博客 549

SAR动目标检测三剑客:DPCA/ATI/STAP技术选型指南(含2023最新实验数据对比)

本文深入对比了SAR动目标检测三大主流技术DPCA、ATI与STAP的核心原理与性能差异。基于2023年最新实验数据,分析了它们在最小可检测速度、测速精度、计算复杂度及对通道失配敏感度等方面的优劣,并结合海洋监视与城市交通监控等典型场景,提供了具体的技术选型指南与工程落地考量。

m5n6o7的博客 293

不可摸数

Problem Description s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何数m,s(m)都不等于n,则称n为不可摸数. Input 包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2<=n<=1000)是整数。 Output 如果n是不可摸数,输出yes,否则输出no...

Liusuzhi19610221的博客 182

Tessent_StdcellLib

第二种为 Tessent Cell lib,既可用于功能仿真,也可以用于测试逻辑插入。lib包含了用于仿真的功能信息,也包含DFT cell属性。如何使用tessent工具将stdcell verilog 仿真模型转换为tessent自己的lib。运行后工具会生成一个atpg的lib文件,打开文件,找到一个带SI的DFF,只有功能描述。tessnt lib分为两种,第一种为ATBG lib,可以用于仿真;打开生成的lib文件,多了dft_cell_selection。第二部:编写attributes文件。

qq_40411444的博客 2135

【FPGA】单端口RAM的设计(异步读、同步写)

上篇博文讲到了:单端口同步读写RAM的设计,那里对RAM的读写采用的是同步的方式,也就是和时钟同步,读写都依赖于时钟。 这篇博文,我们的写依然是同步的,但是读是异步的,所谓的异步就是指不依赖于时钟,这点我们在后面的代码设计中可以清晰的看出。 截取出来: // Memory Read Block // Read Operation : When we = 0, oe = 1, cs = 1...

Reborn Lee 5181

使用安卓的IMU数据进行 行人航位推算(PDR)推算步长 附python 代码

加速度计数据、陀螺仪数据、重力传感器数据、姿态仰角数据。数据分析与定位轨迹生成主要使用Python离线完成。示意图。

三维点云技术探索 1914

使用openclaw出现blocked URL fetch (url-fetch) reason=Blocked: resolves to private/internal/special 解决方案

本文主要介绍了使用openclaw出现blocked URL fetch (url-fetch) target=https://news.google.com/search reason=Blocked: resolves to private/internal/special-use IP address 解决方案,希望能对使用xx的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

Paxos 读路径:读请求也要知道自己读的是哪一代

Paxos/Raft 类系统里,读请求也要有一致性设计。区分 stale、lease、read index,保守处理时钟,观测 apply wait 和 read index 延迟。读不是免费动作。读到了哪一代,系统必须说得清。

2301_81410839的博客 1839

100天精通Python(数据分析篇)——第53天:初识pandas模块_基础介绍

一、初始pandas 1. 什么是pandas? 2. 为什么要学习pandas? 3. pandas的优势 4. 下载安装pandas 二、Pandas的数据类型 1. Series 2. DataFrame

努力让自己发光,对的人才能迎着光而来 17万+

ACM--打表--HDOJ 1999--不可摸数

HDOJ题目地址:传送门 不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11307    Accepted Submission(s): 2951 Problem Description s(n)是正

戎码人生 5054

GStreamer中h264parse元素

h264parse是 GStreamer 中处理 H.264 视频流的关键元素,主要负责解析和准备 H.264 流以便后续处理。

深之JohnChen的专栏 1026

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

杭电1999--不可摸数

 不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11399    Accepted Submission(s): 2971 Problem Description s(n)是正整数n的真因子之和,

※夏日星空※ 463

计算机控制技术及应用

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

不可摸数-HDOJ1999

Problem Description s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何 数m,s(m)都不等于n,则称n为不可摸数.   Input 包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2   Output 如果n是不可摸数,输出yes,否则输出no 这

坤的专栏 1134

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

快照读和当前读

普通的 select 语句。执行方式是生成 readview,直接利用 MVCC 机制来读取,并不会对记录进行加锁。 它是基于多版本并发控制即 MVCC机制,既然是多版本,那么快照读读到的数据不一定是当前最新的数据,有可能是之前历史版本的数据。 如下的操作是快照读:不加锁的 select 操作(事务级别不是串行化,串行化的是当前读) 它读取的记录都是数据库中当前的最新版本,会对当前读取的数据进行加锁,防止其他事务修改数据,这种锁是一种悲观锁。 如下操作都是当前读: select lock in share

qianqian的博客 1万+

2读1写通用寄存器堆设计实现

2读1写通用寄存器堆设计实现 文章目录2读1写通用寄存器堆设计实现一、接口设计二、接口结构三、设计实现 一、接口设计 寄存器堆数量32个,采用二维数组实现,读和写有可能同时发生,其中0号寄存器为常0(无论写什么数据,寄存器值都为0) 二、接口结构 三、设计实现 < //------------------------- //File Name:datapath.v //Designer:Liang Genyuan //------------------------- module mem_bl

yueqiu693的博客 1994

驻极体式MIC电路设计

驻极体麦克风简介 一、基本概念        1. 驻极体(Electret):能长久保持电极化状态的电介质。这种电介质一般是高分子聚合物。例如:聚丙烯、聚四氟乙烯等。  &nbsp...

ASKLW的博客 1万+

APP原型设计之跳板式导航、列表式导航、选项卡式导航、陈列馆式导航及表盘式导航的应用-Axure9

跳板式导航 跳板式导航的要点在于利用布局凸显重要模块,跳板式一般搭配选项卡式,界面简单、清晰。 以携程app为例: 采用Axure RP 9.0制作,有需要可下载源文件,已上传资源。

zcl050505的博客 3097

HDU - 1999 不可摸数

s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何 数m,s(m)都不等于n,则称n为不可摸数. Input 包含多组数据,首先输入T,表示有T组数据.每组数据1行给出n(2<=n<=1000)是整数。 Output 如果n是不可摸数,输出yes,否则输出no Sample Input 3 2 5 8 Sample Output...

c___c18的博客 387

锁存器怎么使用c语言编程,51单片机C语言里有读引脚和读锁存器之分吗?这个P1 = P1 || 5; 请问这个读的是锁存器还是引脚?...

51单片机C语言里有读引脚和读锁存器之分吗?这个P1 = P1 || 5; 请问这个读的是锁存器还是引脚?答案:3信息版本:手机版解决时间 2019-01-01 23:25已解决2018-12-31 23:2351单片机C语言里有读引脚和读锁存器之分吗?这个P1 = P1 || 5; 请问这个读的是锁存器还是引脚?最佳答案2019-01-01 00:47“P1 = P1 || 5;”应该是P1...

weixin_32022143的博客 965

c++ 设计摸式之代理模式

作用:          UML结构图: 抽象基类: 1)Subject:定义了Proxy和RealSubject的公有接口,这样就可以在任何需要使用到RealSubject的地方都使用Proxy. 解析: Proxy其实是基于这样一种时常使用到的技术-某个对象直到它真正被使用到的时候才被初始化,在没有使用到的时候就暂时用Proxy作一个占位符.这个模式实现的要点

cocosNODE的专栏 433

求不可摸数java题解

import java.util.Scanner; public class dabiao{ public static void main(String[] args){ Scanner in=new Scanner(System.in); int n=in.nextInt(); int a[]=new int[500501]; //数大的质因子和不一定大,相反...

qq_44784918的博客 291

mysql的快照读和当前读

MySQL InnoDB引擎中的快照读和当前读是两种核心读操作模式。快照读通过MVCC机制读取历史版本,无锁且读写不阻塞,适用于普通查询;当前读则加锁读取最新数据,确保强一致性,适用于更新/删除等操作。二者的差异体现在数据版本、加锁行为、并发特性和适用场景上。快照读牺牲数据"最新性"换取高并发,当前读牺牲"并发性"保证数据准确性。隔离级别会影响这两种读模式的表现,开发者应根据业务需求选择合适的读方式。

万物皆可互联,一切均可编程 1294
下一篇: Adding Content to a Document
evilwave
博客等级 码龄19年 5粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值