Drone与GitLab实现Laravel项目自动构建、自动部署 Laravel 项目目录结构123456789101112131415161718192021222324252627282930├── .drone.yml├── .editorconfig├── .env.example├── .git├── .gitattributes├── .gitignore├── .gitlab-ci.yml├── .idea├── README.md├── app 2024-06-03 Docker #Docker #Drone CICD
Laravel依赖注入原理和控制反转原理 依赖注入原理Laravel 依赖注入是一种设计模式,旨在减少代码重复和提高可维护性。它允许开发人员通过将对象的实例化过程分离出来,使得代码更加灵活,并且可以通过配置文件或其他方式动态地改变对象的行为。Laravel 的依赖注入是通过服务容器实现的。服务容器是一个管理类依赖关系和执行依赖注入的工具。当我们需要一个类的实例时,服务容器会自动解析该类的构造函数,找到并解决所需的依赖项,然后返回创建好的实 2023-04-06 PHP #PHP #Laravel
docker-compose进阶使用 一、概述 docker-compose 项目是docker官方的开源项目, 负责实现对docker容器集群的快速编排,来轻松高效的管理容器,定义运行多个容器。 docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner) docker-compose运行目录下的所有文件(docker-compose.yml文件、ex 2023-03-28 Docker #Docker #Linux #docker-compose
高并发系统设计的15个方向 一道场景设计题目:如何设计一个高并发系统。 如何理解高并发系统所谓设计高并发系统,就是设计一个系统,保证它整体可用的同时,能够处理很高的并发用户请求,能够承受很大的流量冲击。我们要设计高并发的系统,那就需要处理好一些常见的系统瓶颈问题,如内存不足、磁盘空间不足,连接数不够,网络宽带不够等等,以应对突发的流量洪峰。 1. 分而治之,横向扩展如果你只部署一个应用,只部署一台服务器,那抗住的流量请求是非 2023-03-26 系统架构 #系统架构 #高并发
Docker和K8S架构和实践 1. Kubernetes的由来Kubernetes的名字来自希腊,意思是“舵手”或“领航员”。简称K8S,是用8代替名字中间的8个字符“ubernete”而成的缩写。所以,我们说K8S也就是说Kubernetes。在行业内,我们更习惯说K8S,而不是Kubernetes。Google公司在10多年前开始采用的容器化基础架构——borg。随着Docker的大规模应用,Google采用Go语言对Bo 2023-03-26 K8s #Docker #K8s
一文掌握MySQL日志 在MySQL 中我们经常会接触到三个核心日志,它们分别是:binlog 、redo log、undo log。很多人对于它们可能并不陌生,但是具体区分起来各自的功能用途以及实现原理,那可能认知就会比较模糊了,今天就跟大家一起,来清晰明了的介绍一下这些日志的核心思想和功能原理。 1. binlog1.1 binlog 设计目标binlog 记录了对MySQL数据库执行更改的所有的写操作,包括所有对数 2023-03-26 MySQL #MySQL #MySQL日志
Golang 的 defer 关键字使用注意事项 Golang 提供了 defer 关键字,用于函数退出前执行收尾工作,基本的使用方法就不再赘述了。总结了一些可能踩坑的地方。 defer 执行顺序123456789101112131415161718192021package mainimport "fmt"func TestFunc() { defer func() { fmt.Println("A") }() 2022-08-23 Go入门基础 > 其他 #Go入门基础
计数排序 计数排序计数排序(Counting sort) 是一种稳定的线性时间排序算法.计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C 来将A中的元素排到正确的位置。 算法原理计数排序的算法原理: 找出待排序的数 2022-05-26 Go数据结构与算法 > 常见算法 #数据结构与算法 #常见算法
堆排序 堆排序堆排序(Heapsort) 是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法: 大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列. 小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列 2022-05-14 Go数据结构与算法 > 常见算法 #数据结构与算法 #常见算法
桶排序 桶排序桶排序(Bucket sort),工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。 桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点: 在额外空间充足的情况下,尽量增大桶的数量. 使用的映射函数能够将输入 2022-05-10 Go数据结构与算法 > 常见算法 #数据结构与算法 #常见算法
快速排序 实现原理归并排序算法虽好,但是不是原地排序算法,需要消耗额外的内存空间,今天我们要介绍的是常规排序里综合排名最高的排序算法:快速排序,江湖人称「快排」。通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。快速排序算法其实很简单,采用分治策略。步骤如下: 选取一个基准元素(pivot) 比pivot小的放 2022-05-06 Go数据结构与算法 > 常见算法 #数据结构与算法 #常见算法
希尔排序 希尔排序(Shell Sort),又称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率; 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位; 希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入 2022-05-02 Go数据结构与算法 > 常见算法 #数据结构与算法 #常见算法