设计模式

设计模式精要
部署运行你感兴趣的模型镜像

 

1. Factory Method:
 意图: 定义个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类.
 适用性: 
  当一个类不知道它所必须创建的对象的类的时候。
  当一个类希望由它的子类来指定它所创建的对象的时候。
  当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
2. Abstrace Factory:
 意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
3. Builder:
 意图: 将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示.
4. Prototype:
 意图: 用原型实例指定创建对象的种类,表示通过拷贝这些原型创建新的对象。
5. Singleton:
 意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点.

 

6. Adapter:
 意图: 将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。
7. Bridge:
 意图: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。
8. Composite:
 意图: 将对象组合成树形结构以表示"部分-整体"的层次结构。Composite 使得用户对单个对象和组合对象的使用具有一致性。
9. Decorator:
 意图: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活.
10.Facade:
 意图: 为子系统中的一组接口提供一个一致的界面,Facade 模式定义了一个高层接口,这个接口时的这一子系统更加容易使用。
11.Flyweight:
 意图: 运用共享技术有效地支持大量细粒度的对象。
12.Proxy:
 意图: 为其他对象提供一种代理以控制对这个对象的访问。
13.Chain of responsibility:
 意图: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,
  并沿着这条链传递该请求,直到有一个对象处理它为止。
14.Command:
 意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作.


15.Interpreter:
 意图: 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言的句子.
16.Iterator:
 意图: 提供一种方法顺序访问一个聚合对象中各个元素,而不需要暴露该对象内部表示。
17.Mediator:
 意图: 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.
18.Memento:
 意图: 在不破坏封装性的前提下,铺货一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态.
19.Observer:
 意图: 定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
20.State:
 意图: 允许一个对象在其内部状态改变是改变他的行为。对象看起来似乎修改了它的类。
21.Strategy:
 意图: 定义一系列的算法,把它们一个个封装起来,并且使他们可互相转换。本模式使得算法可独立于使用它的客户而变化.
22.Template Method:
 意图: 定义一个操作中的算法骨架,而降一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
23.Visitor:
 意图: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.

 

  

 

1. GoF 的 23 种设计模式: 面向接口编程.
2. 工厂模式: 
3. Facade 模式:
      Facade 会话 Bean 优点: 
  (1). 提供性能,节省客户端直接调用实体 Bean 的网络开销.  
  (2). 解耦分层,利于扩展变化.
4. DTO 模式或称 VO 模式:
  (1). 指将数据封装成普通的 JavaBeans, 在 J2EE 多个层次之间传输.
       (2). DTO 类似信使,是同步系统的 Message.
       (3). 该 JavaBeans 可以是一个数据模型 Model
5. 数据建模:
      Model, Domain Object 以及 DTO 关系:
      (1). 分析提炼 Model 是系统设计之起端.
      (2). 系统设计之初,三者基本统一.
      (3). 系统复杂化后,DTO 可能是多个 Model 组合实现.
  ActionForm (Jsp) ------ Model DTO  ------- Entity Bean(持久层)
6. MVC 模式:
7. Struts 框架:
 Frameword 与 Pattern 的关系:
 (1). 设计模式比框架更抽象.
 (2). 设计模式是比框架更小的体系元素。
 (3). 框架比设计模式更加特例化.
8. 代理模式:
 (1). 代理模式是容器级别或框架级别的模式.
 (2). 代理模式可以强迫客户端对一个对象的方法调用间接通过代理类进行。
 (3). 代理模式有以下几种: 访问代理 (Access Proxy),虚拟代理和远程代理等。
     

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

C:\Users\kiki>ssh root@192.168.10.122 The authenticity of host '192.168.10.122 (192.168.10.122)' can't be established. ED25519 key fingerprint is SHA256:3aSXSmZgEArfV83eQbHRW5adsYXZ/H/JtHC7GuVJqBI. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.10.122' (ED25519) to the list of known hosts. root@192.168.10.122's password: Permission denied, please try again. root@192.168.10.122's password: Welcome to Linaro 14.04 (GNU/Linux 4.14.0-gb6e379910a11-dirty armv7l) * Documentation: https://wiki.analog.com/ https://ez.analog.com/ Last login: Thu Jan 1 00:00:13 1970 root@analog:~# ls openwifi root@analog:~# cd openwifi/ root@analog:~/openwifi# ./wgd.sh usage: Script for load (or download+load) different driver and FPGA img without rebooting no argument: Load .ko driver files and FPGA img (if system_top.bit.bin exist) in current dir with test_mode=0. 1st argument: If it is a NUMBER, it will be assigned to test_mode. Then load everything from current dir. 1st argument: If it is a string called "remote", it will download driver/FPGA and load everything. - 2nd argument (if exist) is the target directory name for downloading and reloading - 3rd argument (if exist) is the value for test_mode 1st argument: neither NUMBER nor "remote" nor a .tar.gz file, it is regarded as a directory and load everything from it. - 2nd argument (if exist) is the value for test_mode 1st argument: a .tar.gz file, it will be unpacked then load from that unpacked directory - 2nd argument (if exist) is the value for test_mode TARGET_DIR ./ DOWNLOAD_FLAG 0 test_mode 0 tx_offset_tuning_enable 0 $TARGET_DIR is found! network-manager stop/waiting rmmod: ERROR: Module sdr is not currently loaded rmmod: ERROR: Module ad9361_drv is not currently loaded + insmod .//ad9361_drv.ko ad9361_drv is loaded! .//system_top.bit.bin not found. Skip reloading FPGA. xlnx,zynq-7000 fjdo349ujtrueugjh
03-26
<think>嗯,用户这次聚焦在SSH访问的"Permission denied, please try again"报错上。从引用内容看,这个问题涉及多个层面的可能性,需要系统性地排查。用户应该是在管理Linux服务器时遇到了访问阻断,情绪可能比较焦虑——毕竟连不上服务器会直接影响工作。 先拆解引用中的有效信息:引用[2]直接关联SSH配置,提到PermitRootLogin和PubkeyAuthentication两个关键参数,还补充了HostKeyAlgorithms这个容易被忽略的算法兼容项;引用[3]则指出账号过期时间这种边缘case。有趣的是引用[1]和[4]虽然都提到Permission denied,但实际是公钥认证和Git权限问题,与当前问题相关性较弱。 用户明确要求解决交互式登录场景的报错(注意报错信息中带"please try again"),这和公钥认证失败报错文本不同。这说明更可能是密码认证或基础配置问题。需要重点检查:1)sshd_config里的密码认证开关 2)PAM模块限制 3)用户账号状态 4)selinux/firewall干扰。 考虑到用户可能是运维人员,在回复里加入具体命令示例会更实用。比如用chage命令检查账号过期时间,用semanage调整selinux策略这些具体操作。不过要注意提醒sudo权限需求,避免用户直接复制命令引发权限错误。 测试环节特别重要,用户可能没有意识到修改配置后需要重启sshd服务。这里要用$$语法强调重启命令的格式,因为CentOS7和Ubuntu22.04的命令不同(systemctl restart sshd vs service ssh restart)。对了,还要提醒测试时保留现有会话,防止配置错误导致完全断开连接。 最后想到个隐藏风险点:如果用户通过跳板机连接,实际报错来源可能是中转服务器。这个在回复里用括号补充说明比较合适,避免用户走弯路。 </think>针对SSH访问失败报错"Permission denied, please try again."的问题,结合引用内容及系统排查逻辑,解决方案如下: ### 一、核心配置检查(优先处理) 1. **启用密码登录** 修改`/etc/ssh/sshd_config`: ```bash sudo vim /etc/ssh/sshd_config ``` 确保以下参数为: ```nginx PasswordAuthentication yes # 允许密码登录 PermitRootLogin yes # 允许root登录(按需开启) PubkeyAuthentication yes # 开启公钥认证[^2] ``` **重启服务**生效: ```bash sudo systemctl restart sshd ``` 2. **密钥算法兼容性**(针对OpenSSH升级问题) 在相同文件末尾添加: ```nginx HostKeyAlgorithms +ssh-rsa # 兼容旧算法[^2] ``` --- ### 二、账户状态排查 1. **检查账户过期时间** ```bash sudo chage -l [用户名] # 查看账户有效期 ``` 若账户过期: ```bash sudo chage -E "2024-12-31" [用户名] # 延长有效期至指定日期[^3] ``` 2. **密码策略验证** ```bash sudo passwd [用户名] # 重置密码(触发密码状态更新) ``` --- ### 三、权限与SELinux 1. **关键目录权限** ```bash sudo chmod 700 ~/.ssh # 用户密钥目录 sudo chmod 600 ~/.ssh/authorized_keys # 公钥文件 ``` 2. **关闭SELinux临时测试** ```bash sudo setenforce 0 # 临时禁用 ``` > 若登录成功,需永久关闭需修改`/etc/selinux/config`中的`SELINUX=disabled` --- ### 四、连接测试与诊断 - **带调试信息连接**: ```bash ssh -vvv user@host # 显示详细错误流 ``` - **检查服务状态**: ```bash sudo systemctl status sshd # 确认服务运行 sudo journalctl -u sshd -n 50 # 查看最近50条日志 ``` ### 五、其他可能原因 - **防火墙拦截**: ```bash sudo ufw allow ssh # Ubuntu sudo firewall-cmd --add-service=ssh --permanent # CentOS ``` - **PAM模块限制**:检查`/etc/pam.d/sshd`是否有限制规则 - **用户Shell配置**:确保`/etc/passwd`中用户shell有效(如`/bin/bash`) > **关键提示**:修改配置后必须重启SSH服务方能生效: > $$ \text{执行命令: } \texttt{sudo systemctl restart sshd} $$
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值