设计模式学习之设计原则

设计模式学习之设计原则

## 设计原则 每一个行业,每一个人都有着自己的原则。面向对象也是一样,代码的复用性,扩展性,类的职责,高内聚,低耦合都是我们在开发过程中需要考虑的问题。优秀软件设计都会符合这些特征,在它们进行新的功能扩展时也会得心应手。 那么什么是优秀的软件设计? 如何对其进行评估? 你需要遵循哪些实践方式才能实现这样的方式? 如何让你的架构灵活、 稳定且易于理解?这些都是很好的问题。 但是, 我们实际开发中由于项目的不同, 这些问题的答案也不尽相同。 如果有几个通用的软件设计原则可能会对解决这些问题有很大的帮助。 ### 基于接口而非实现编程 "基于接口而非实现编程"的英文是"Pro...

2020-05-22 PM 21℃ 0条
浅谈设计模式

浅谈设计模式

## 什么是设计模式 在软件的世界,每个开发机构就想一个部落,而模式就是对部落的某种共同记忆的一种具体表现。 ————Grady Booch 在《J2EE核心模式》 模式是在特定环境下解决某一问题的方案 ————《设计模式》 在工作的过程中一个问题总是反复出现,我们必须一次一次的解决它们,比如 我们应当如何处理接收到的请求?如何将数据转换为对应的指令?如何获取数据?如何显示结果?随着时间的流逝和积累的经验,我们或将优雅或将笨拙的解决这些问题,这些其实就是设计模式。 设计模式记录并规范了这些问题的解决方案,使更多的开发人员能够获取这些来之不易的宝贵经验。模式在本质上是自下而...

2020-05-18 PM 39℃ 0条
为你的laravel验证器加上多验证场景

为你的laravel验证器加上多验证场景

**前言** 在我们使用laravel框架的验证器,有的时候需要对表单等进行数据验证,当然laravel也为我们提供了 `Illuminate\Http\Request` 对象提供的 `validate` 方法 以及`FormRequest`和`Validator`。 `FormRequest`通过新建文件将我们的验证部分单独分开,来避免控制器臃肿。如果验证失败,就会生成一个让用户返回到先前的位置的重定向响应。这些错误也会被闪存到 Session 中,以便这些错误都可以在页面中显示出来。如果传入的请求是 AJAX,会向用户返回具有 422 状态代码和验证错误信息的 JSON 数...

PHP,laravel 2020-04-06 PM 109℃ 0条
php排序算法合集

php排序算法合集

**1.冒泡排序** 冒泡排序(bubble sort)是一种交换排序,操作两个相邻的数据看大小是否满足大小关系要求,如不满足则交换他们的顺序 ,直到没有不满足的数据为止 代码如下: ```php function bubbleAscSort($arr){ $len = count($arr); for ($i=0; $i < $len; $i++) { $flag = false;//提前退出冒泡循环的标志 for ($j=0; $j $arr[$j+1]) {//交换位置 ...

PHP,算法 2020-03-18 PM 198℃ 0条
php解答leetcode第27题-移除元素

php解答leetcode第27题-移除元素

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums = [0,1,2,2,3...

2019-12-18 PM 240℃ 0条
php解答leetcode第26题-删除排序数组中的重复项

php解答leetcode第26题-删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且...

PHP,leetcode 2019-12-18 PM 286℃ 2条
php解答leetcode第704题-二分查找

php解答leetcode第704题-二分查找

题目:二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 示例 2: 输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1   提示: 1. 你可以假设 nums 中的所有元...

PHP,leetcode 2019-12-05 PM 236℃ 0条
Windows下搭建Laravel开发环境~homestead

Windows下搭建Laravel开发环境~homestead

**什么是homestead?** Laravel Homestead 是一个官方预封装的 Vagrant box,它为你提供了一个完美的开发环境,而无需在本地机器安装 PHP 、Web 服务器和其他服务器软件。不用担心会搞乱你的操作系统!Vagrant boxes 是一次性的。如果出现问题,你可以在几分钟内销毁并创建 Box! Homestead 可以运行在任何 Windows,Mac,或 Linux 系统,它包括了 Nginx web 服务器, PHP 7.2,PHP 7.1,PHP 7.0,PHP 5.6, MySQL,PostgreSQL,Redis,Memcached, ...

PHP,laravel 2019-11-22 PM 1006℃ 1条
php解答leetcode的第10题-盛最多水的容器

php解答leetcode的第10题-盛最多水的容器

**题目描述:** 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 ![](https://www.yangpanyao.com/usr/uploads/2019/11/4207606870.png) 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 ...

PHP,leetcode 2019-11-13 AM 360℃ 0条
php解答leetcode的第4题-寻找两个有序数组的中位数

php解答leetcode的第4题-寻找两个有序数组的中位数

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4] 则中位数是 (2 + 3)/2 = 2.5 PHP解答代码 ```php function findMedianSortedArrays($nums1,$num...

PHP,leetcode 2019-11-11 PM 297℃ 0条