设计模式

编码规范(c#)

戏子无情 提交于 2021-02-01 09:33:42
万丈高楼平地起,好的编码风格能让别人撸起来更带劲,反之则想吐槽这是哪个傻X写的,这都是些什么乱七八糟的玩意? 然后看后面的注释发现是自己以前写的,那场面一度很尴尬。。。。 规约不是规则 ,不是一定要这样,就好比你去一个团队,人家都是用英文,然后你是中文,你这样还怎么展开工作交流?只怕过不了多久就让你滚蛋了。 下面是我工作上的一些简单总结,仅供参考,有啥错误欢迎指正。 一、编程规约 (一)命名风格 1.代码中命名严禁使用拼音与英文混合方式,更不允许直接使用中文(公司规定的,没办法) 说明:正确的英文拼写和语法可以让阅读者理解,避免歧义,即使纯拼音命名也要避免采用。 有人就要说了,以前看到一个新闻说人家妹子用中文声明变量,然后还是个高级设计师,类似于 public string 我不管 = “你不知道程序媛有多稀缺吗?混蛋” ; 2.类名、类属性、方法名、命名空间使用UpperCamelCase大写驼峰风格,英文单词首字母大写 3参数名、成员变量、局部变量、局部变量都统一用lowerCamelCase小驼峰风格(第一个词首字母小写,后面每个词首字母大写) localCache/userList 4常量命名全部大写,单词间用下划线隔开 5抽象类命名用Abstract或base开头;异常类用Exception结尾;测试类以测试的类名开始,以Test结尾 6杜绝完全不规范的缩写

201771010126 王燕《面向对象程序设计(java)》第八周学习总结

二次信任 提交于 2021-02-01 05:50:57
实验六 接口的定义与使用 实验时间 201 8 - 10 - 18 1 、实验目的与要求 (1) 掌握接口 定义方法 JAVA中通过interface关键字定义接口; 接口中只能定义public static final(也可以在定义时不写,系统是默认的)修饰的变量以及抽象方法 接口中定义的变量必须有初始值 (2) 掌握 实现接口类的定义要求; 接口体中包含常量定义和方法定义,接口中只进行方法的声明,不提供方法的实现;且接口中的任何方法都自动是 public,字段也总是public static final的。 (3) 掌握实现了接口类的使用要求; 接口不能构造接口对象,但可以声明接口变量以指向一个实现了该接口的类的对象。 可以用 instanceof来检查对象是否实现了某个接口。 通常接口的名字以 able或ible结尾; 可以使用 extends来继承接口的常量和抽象方法,扩展形成新的接口; 接口中的所有常量必须是 public static final,方法必须是public abstract,这是系统默认的,不管你在定义接口时,写不写修饰符都是一样的。 在类声明时用 implements关键字声明使用一个或多个接口 一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体。 一个类可以实现多个接口,接口间应该用逗号分隔开。 若实现接口的类不是抽象类

设计模式学习(二):实现可动态注册的简单工厂模式(C语言)

痞子三分冷 提交于 2021-01-31 21:27:03
一、前言 上周学习了抽象工厂模式,该模式包含了简单工厂模式和工厂方法的某些特性,三者之间的区别详见: 上周博客 ,本周深入了解一下简单工厂模式,并对其进行优化,实现一个可动态注册的简单工厂,本次练习参考了AWTK源码中 widget_factory 的实现,感兴趣的可以查阅源码,GitHub仓库: https://github.com/zlgopen/awtk 。 AWTK是 ZLG 开发的开源 GUI 引擎,官网地址: https://www.zlg.cn/index/pub/awtk.html 。 二、简单工厂模式 简单工厂模式(Factory Pattern)是属于创建型模式,在该模式中,用户通过使用一个共同的接口来创建的具体对象。 简单理解 :工厂是对具体产品(对象)的抽象,工厂提供统一接口创建不同的产品。本质上就是定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 目的 :给用户提供一个创建一系列相关对象的接口,但用户是不需要指定它们的具体类,其主要是解决接口选择的问题。 优点 : 一个调用者想创建一个对象,只要知道其名称就可以了。 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 屏蔽产品的具体实现,调用者只关心产品的接口。 缺点 :每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加

阿里P6+Java研发工程师,到底牛在哪儿?P8大佬儿说出实情,真相了!

对着背影说爱祢 提交于 2021-01-31 11:17:45
很多从事Java开发岗位的人,都期望努力成为一名优秀的架构师。薪资高,薪资范围高达30K——90K,社会认同感也极高。在国内,架构师 = 三分之二的工程能力 + 三分之一的规划能力。这就意味着一名Java开发工程师,成长为架构师需要具备以下能力: 要拥有坚实Java基础,深入理解操作系统、网络、数据库等基础原理,熟练掌握常用数据结构与算法,懂得常用设计模式。 其次,对高并发、分布式、微服务等领域要有深入研究。熟悉MySQL、NoSQL、Redis等数据中心建设方案,可以进行产品的独立部署,高可用架构和性能优化,熟悉开源社区解决方案。 重要的是,要具备一定的业务思维,深入到业务,从特定的业务场景出发,设计出高度可扩展性的系统架构...... 别小看这三条要求,阿里、腾讯、滴滴等很多互联网大厂在招聘中对于架构师的要求,来来回回也绕不过这些。因此,打好Java基础,提升技术能力真的尤为重要,坚实的基础和优秀的项目经历能让技术道路越走越宽。 今天就给大家推荐一门 【奈学教育】 携众多一线互联网大厂优秀架构师联合打造的课程 《Java资深开发工程师》 ,这门课程对标阿里P6+级别的资深研发工程师, 由前阿里巴巴架构师、前阿吉豆(AJIDOU)IT副总裁肖秋平主讲 ,旨在帮助在Java开发工程师岗位上遇到瓶颈的技术人员,为后期晋升架构师打下坚实的基础。 课程注重实战演练并深挖技术点的底层原理

Spring5源码分析(二) IOC 容器的初始化(五)

强颜欢笑 提交于 2021-01-31 04:22:57
  此篇文章为Spring5源码分析——IOC容器的初始化的最后一篇,这一篇主要是对IOC容器的初始化进行总结。 一,IOC 容器的初始化总结 通过上面的几篇文章我们完成了对FileSystemXmlApplicationContext IOC容器创建的分析,接下来总结一下IOC容器初始化的基本步骤。 1. 初始化的入口在容器实现中的 refresh()调用来完成。 2. 对 bean 定义载入 IOC 容器使用的方法是loadBeanDefinition,其中的大致过程如下:通过ResourceLoader来完成资源文件位置的定位,DefaultResourceLoader是默认的实现,同时上下文本身就给出了 ResourceLoader 的实现,可以从类路径,文件系统,URL 等方式来定为资源位置。如果是 XmlBeanFactory 作为 IOC 容器,那么需要为它指定 bean 定义的资源,也就是说bean定义文件时通过抽象成Resource来被IOC容器处理的,容器通过BeanDefinitionReader来完成定义信息的解析和Bean 信息的注册 , 往往使用的是XmlBeanDefinitionReader来解析bean的xml定义文件-实际的处理过程是委托给BeanDefinitionParserDelegate来完成的,从而得到 bean 的定义信息

2021最新 SpringMVC面试题精选(附刷题小程序)

一笑奈何 提交于 2021-01-30 19:13:04
推荐使用小程序阅读 为了能让您更加方便的阅读 本文所有的面试题目均已整理至小程序《 面试手册 》 可以通过微信扫描(或长按)下图的二维码享受更好的阅读体验! [toc] 1. Spring MVC基础 1.1 什么是Spring MVC? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。 1.2 Spring MVC的优点有那些? 可以支持各种视图技术,而不仅仅局限于JSP; 与Spring框架集成(如IoC容器、AOP等); 清晰的角色分配: 前端控制器(dispatcherServlet) ; 请求到处理器映射(handlerMapping); 处理器适配器(HandlerAdapter); 视图解析器(ViewResolver)。 支持各种请求资源的映射策略。 1.3 Spring MVC的主要组件? DispatcherServlet: 中央控制器,把请求给转发到具体的控制类 Controller: 具体处理请求的控制器 HandlerMapping: 映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView: 服务层返回的数据和视图层的封装类

1. spring5源码 -- IOC容器设计理念和核心注解的作用

我只是一个虾纸丫 提交于 2021-01-30 13:52:37
可以学习到什么? 0. spring整体脉络 1. 描述BeanFactory 2. BeanFactory和ApplicationContext的区别 3. 简述SpringIoC的加载过程 4. 简述Bean的生命周期 5. Spring中有哪些扩展接口及调用机制 一. spring源码整体脉络介绍及源码编译 1.1. 什么是IOC ioc是控制反转, 这是一种设计理念, 用来解决的是层和层之间, 类和类之间的耦合问题. 比如,现在有A, B两个类, 在A类中引用了B类. 那么如果有一天, B类要被替换掉, 我们会怎么办呢?如果B类被引用了100次, 我们要替换100次? 现在呢, A是直接调用B, 如果我们间接的调用B, 将B包装起来, 如果以后将B换成C, 只需要在包装类里面替换就可以了. 我们不需要修改A类. 这就是控制反转. Spring使用了ioc, Spring.ioc(A, B) 将A和B的引用都存在ioc中, spring会帮我们维护好, 完全不用担心. 当我们在A中要使用B的时候, 使用B对应的接口, 然后使用@Autowired注解 A { @Autowired private IB b; } 什么时候把B换掉了, 不痛不痒的, 只需要把新的类放到IoC中就可以了. 1.2. Spring源码的整体脉络梳理 Spring IoC是一个容器, 在Spring

Java并发编程:阻塞队列

試著忘記壹切 提交于 2021-01-30 10:15:12
点击上方“ Java知音 ”,选择“置顶公众号” 技术文章第一时间送达! 作者:海子 http://www.cnblogs.com/dolphin0520/p/3932906.html 知音专栏 Javaweb练手项目源码下载 常用设计模式完整系列篇 100套IT类简历模板下载 Java常见面试题汇总篇 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒(不需要我们编写代码去唤醒)。这样提供了极大的方便性。 本文先讲述一下java.util

3 个 React 状态管理的规则

你。 提交于 2021-01-30 07:47:59
3 个 React 状态管理的规则 疯狂的技术宅 前端先锋 翻译:疯狂的技术宅 作者:Dmitri Pavlutin 来源:dmitripavlutin 正文共:2630 字 预计阅读时间:8 分钟 React 组件内部的状态是在渲染过程之间保持不变的封装数据。useState() 是 React hook,负责管理功能组件内部的状态。 我喜欢 useState() ,它确实使状态处理变得非常容易。但是我经常遇到类似的问题: 我应该将组件的状态划分为小状态,还是保持复合状态? 如果状态管理变得复杂,我应该从组件中提取它吗?该怎么做? 如果 useState() 的用法是如此简单,那么什么时候需要 useReducer()? 本文介绍了 3 条简单的规则,可以回答上述问题,并帮助你设计组件的状态。 No.1 一个关注点 有效状态管理的第一个规则是: 使状态变量负责一个问题。 使状态变量负责一个问题使其符合单一责任原则。 让我们来看一个复合状态的示例,即一种包含多个状态值的状态。 1const [state, setState] = useState({ 2 on: true, 3 count: 0 4}); 5 6state.on // => true 7state.count // => 0 状态由一个普通的 JavaScript 对象组成,该对象具有 on 和 count 属性。

Linux基础-17day-Linux文档编辑vim

丶灬走出姿态 提交于 2021-01-30 00:52:58
Linu x 文档编辑 vim 一 . vim 简介 vi编辑器,全称是visual interface,可以执行输出、删除、查找、替换等众多的文本操作。Vim(vi iMprove)是vi的升级版,最常见的区别是能用多种颜色显示显示系统文件的一些特殊信息。 Vim安装:yum -y install vim 1. vim工作模式 Vim存在多种工作模式,常用工作模式有:命令模式(编辑模式)、输入模式(插入模式)、末行模式。命令模式就是实现光标移动以及大量的快捷键操作,输入模式就是实现文本的基本编辑功能,末行模式就是通过输入特定指令实现特定功能,如保存、退出等。 使用方式: vim file例如: vim 1.sh #打开1.sh文件进行编辑 vim + 1.sh #打开1.sh文件,光标在最后一行 1.1 vim常用快捷键 1.1.1.插入按键 实现由命令模式进入输入模式,并进行文本编辑。 按键 功能 a 由命令模式进入插入模式,在当前光标位置后插入内容 A 由命令模式进入插入模式,在当前光标所在行行尾插入内容 i 由命令模式进入插入模式,在当前光标位置前插入内容 I 由命令模式进入插入模式,在当前光标所在行行首插入内容 o 由命令模式进入插入模式, 在光标所在行下 边 添加一行 插入内容 O 由命令模式进入插入模式, 在光标所在行 上边 添加一行 插入内容 1.1.2.光标移动