大家好,我是晴天,本周我们一起来学习单例模式。本文将介绍单例模式的基本属性,两种构造单例的方法(饿汉模式和懒汉模式)以及golang自带的sync.Once()方法。 什么是单例模式 GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。 单例模式属于创建型设计模式,单例模式能够保证一个类全局只有唯一一个实例对象。 为什么需要单例模式 在以下几种场景下,建议使用单例模式: 某些全局资源进行共享时,需要使用唯一的对象进行访问 某些实例化很费时的操作,只进行一次实例化 某些入参特别复杂的模块或者函数,只用一个实例化对象操作 单例模式的分类 ...

大家好,我是晴天。在接下来的一个多月里,我将跟大家一起学习设计模式的一些基础知识和基本应用。不要问我为什么突然想起来写一个设计模式系列的文章,问就是:爱过。。。 问题引出 作为程序猿的我们,隔三岔五的就会因为看老板不顺眼或者觉得自己英雄无用武之地而选择换一个赏识自己的老板或者能充分展示自我才华的宝地。而当我们进入一家新公司的时候,经常会因为一些历史的原因,而发现新公司的代码像一坨一样,要么结构很混乱、要么阅读起来很困难,扩展起来也非常麻烦,重用性更是免谈,总之让人难以下咽。我们想改,但是又不敢改,无从下手,只能在上面添加新的。这就是祖传代码带来的巨大难题,如果在初期没有一个很好的代码结...

大家好,我是晴天,本周将同大家一起学习设计模式系列的第二篇文章——工厂模式,我们将依次学习简单工厂模式,工厂方法模式和抽象工厂模式。拿好纸和笔,我们现在开始啦 前言 我们在进行软件开发的时候,虽然不使用任何设计模式也不耽误搬砖,但是,这样会导致代码可重用性、可扩展性、可读性、可维护性都大打折扣。所以强烈建议使用合适的设计模式进行软件开发。设计模式可以划分成三大类:创建型、结构型和行为型。本文将先从最基础的创建型模型——工厂模型介绍,工厂模式具体可以划分成简单工厂模式、工厂方法模式和抽象工厂模式,我们依次来学习一下。 为什么需要工厂模式 我们首先先来看一下下面未使用任何工厂模式的代码,看...

什么是消息队列代理 消息队列代理:加速数据流转,提升系统性能 在当今信息化时代,数据的高效传输和处理成为了企业发展中不可忽视的重要环节。消息队列代理(MessageQueueBroker)应运而生,作为一种在分布式系统中处理消息的关键组件,它能够加速数据流转,提升系统的性能和可靠性。 消息队列代理的工作原理 消息队列代理是基于发布-订阅(Publish-Subscribe)模型工作的。它由三个主要组件构成:发布者(Publisher)、代理服务器(Broker)和订阅者(Subscriber)。工作流程如下: 发布者将消息发送给代理服务器。 代理服务器接收消息,并根据事先设定的规则进行处理和...

  Ohl6n170bzPf   2023年11月02日   48   0   0 消息队列解耦代理服务器

Golang中的值传递和引用传递 概述 在Go编程语言中,我们经常会遇到两种参数传递方式:值传递和引用传递。这两种传递方式在处理函数和方法参数时有着不同的行为和影响。本文将深入探讨Golang中的值传递和引用传递,并解释它们在编程中的应用和区别。 1.介绍 在Golang编程中,参数传递的方式对于函数和方法的行为和效果至关重要。在理解值传递和引用传递之前,我们需要了解变量在内存中的存储方式。 2.值传递 2.1值传递的概念 值传递是指在函数或方法调用时,将实际参数的值复制一份传递给被调用函数或方法的形式参数。这意味着在被调用函数或方法中对形式参数进行修改不会影响原始参数的值。 2.2值传递的示...

  Ohl6n170bzPf   2023年11月02日   42   0   0 值传递调用函数引用传递

什么是网关:理解如何连接网络 当我们使用互联网时,我们经常会听到网络中存在许多不同的设备和技术。其中一个重要的概念就是网关。本文将深入介绍什么是网关,为什么它们很重要以及如何正确使用它们。 什么是网关? 网关是一种网络设备,通常用于连接两个不同的网络。网关的作用是将数据从一个网络传输到另一个网络,同时将数据转换为目标网络可理解的格式。 网关的类型 硬件网关 硬件网关通常是一台独立的设备,它们通常用于连接两个不同的网络,例如连接局域网和互联网。硬件网关可以具有许多不同的端口和接口,以连接不同类型的网络和设备。 软件网关 软件网关是一种应用程序,它通常在计算机或服务器上运行。它们可以用于连接不同类...

  Ohl6n170bzPf   2023年11月02日   40   0   0 数据数据格式敏感数据

跨域问题是什么?怎么解决? 跨域问题是许多网站开发人员和SEO专家常常遇到的问题。它指的是在Web应用程序中,如果一个网页的JavaScript脚本试图访问来自不同域的资源,那么就会出现跨域问题。由于浏览器的同源策略,通常情况下,JavaScript只能在与其来源相同的域中执行,因此无法直接访问来自不同域的资源,例如不同的服务器或不同的子域。因此,当我们在编写Web应用程序时,经常需要解决跨域问题。 下面我们将介绍一些解决跨域问题的方法。 一、使用JSONP JSONP是一种解决跨域问题的常用方法。它通过动态创建<script>元素,以异步地加载JavaScript文件,从而访问其...

  Ohl6n170bzPf   2023年11月02日   37   0   0 Web解决方案跨域问题

大家好,我是晴天,最近一周在工作中总是遇到一些小问题,所以我就想把这些小问题给记录下来。分享给大家一些小的知识点,与大家共同学习、共同进步。今天带来的知识点是跨域 跨域是什么? 跨域是指在Web应用程序中,一个网页的JavaScript脚本试图访问来自不同域的资源时,就会出现跨域问题。由于浏览器的同源策略,JavaScript只能在与其来源相同的域中执行,因此无法直接访问来自不同域的资源,例如不同的服务器或不同的子域。因此,当我们在编写Web应用程序时,经常需要解决跨域问题。 跨域的原因 跨域问题的出现是因为Web的安全策略。同源策略是Web安全策略的一种,它指的是:不同源的客户端脚本在没...

  Ohl6n170bzPf   2023年11月02日   44   0   0 Web解决方案跨域问题

什么是事务 事务是指在数据库中执行的一组操作单元,这组操作要么全部成功,要么全部失败,不会出现部分成功的情况。 事务通常包含了一系列的数据库操作,例如插入、更新或删除数据等。在执行事务期间,数据库会将所有的操作视为一个整体,保证这个整体操作的一致性和完整性。如果事务中的任何一个操作失败,整个事务就会回滚到最初状态,以保证数据的一致性。 事务具有四个关键属性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),通常被称为ACID属性。 原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部回滚...

  Ohl6n170bzPf   2023年11月02日   51   0   0 分布式系统协调者分布式事务

RDB持久化 数据库状态是服务器中非空数据库以及数据库中键值对的统称。 RDB持久化可以将redis在内存中的数据库状态保存到磁盘里面,避免数据丢失。 RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。RDB持久化功能生成的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态。 ![image-20210420101202234](/Users/wangzongyu/Library/ApplicationSupport/typora-user-images/image-20210420101...

  Ohl6n170bzPf   2023年11月02日   47   0   0 服务器数据库键值对

前言 用户空间 用户空间指的是操作系统中分配给用户程序运行的独立内存空间。在用户空间中,用户程序可以进行自己的运算、调用操作系统提供的服务、使用设备等操作,而不会直接影响到操作系统或其他用户程序的运行。相对于用户空间,内核空间是操作系统核心部分运行的内存空间,包含了操作系统的各种服务和驱动程序。为了保证操作系统的安全和稳定,用户程序通常只能在用户空间中运行,并且需要通过系统调用等方式与内核空间进行交互。 内核空间 内核空间是操作系统中的一块特殊的内存空间,用于运行操作系统核心部分和驱动程序等重要的系统服务。与用户空间不同,内核空间拥有更高的权限和更广泛的操作权限,可以直接访问系统硬件资源和其他...

  Ohl6n170bzPf   2023年11月02日   32   0   0 内核空间用户程序数据

什么是mmap mmap是一种系统调用,用于在进程地址空间和文件之间建立一个映射关系。通过mmap,进程可以将一个文件或其他对象的内容映射到它的地址空间中,从而实现对该文件或对象的访问。mmap可以提高文件读写的效率,并且可以在多个进程之间共享内存。在Linux系统中,mmap的实现是通过操作内核页表来完成的。 mmap是怎样提高读写效率的 mmap可以提高文件读写效率的原因主要有两个: 避免了内核态和用户态之间的数据拷贝:在传统的文件读写中,文件数据需要从内核态的页缓存复制到用户态的缓冲区,或者反之。这个过程中需要频繁地进行上下文切换和数据拷贝,会消耗大量的CPU时间。而mmap将文...

  Ohl6n170bzPf   2023年11月02日   27   0   0 #include数据系统调用

什么是用户空间 用户空间指的是操作系统中分配给用户程序运行的独立内存空间。在用户空间中,用户程序可以进行自己的运算、调用操作系统提供的服务、使用设备等操作,而不会直接影响到操作系统或其他用户程序的运行。相对于用户空间,内核空间是操作系统核心部分运行的内存空间,包含了操作系统的各种服务和驱动程序。为了保证操作系统的安全和稳定,用户程序通常只能在用户空间中运行,并且需要通过系统调用等方式与内核空间进行交互。 什么是内核空间 内核空间是操作系统中的一块特殊的内存空间,用于运行操作系统核心部分和驱动程序等重要的系统服务。与用户空间不同,内核空间拥有更高的权限和更广泛的操作权限,可以直接访问系统硬件资...

  Ohl6n170bzPf   2023年11月02日   28   0   0 内核空间用户程序用户空间

大家好,我是晴天,最近一周在工作中总是遇到一些小问题,所以我就想把这些小问题给记录下来。分享给大家一些小的知识点,与大家共同学习、共同进步。今天带来的知识点是websocket websocket是什么 WebSocket是一种计算机通信协议,它提供了在单个TCP连接上进行全双工通信的能力。它允许客户端和服务器之间进行实时数据交换,可以用于实现在线游戏、聊天室、股票市场等需要实时通信的应用程序。WebSocket协议是HTML5规范的一部分,支持大部分现代浏览器。 如何使用golang建立长连接 使用Golang建立长连接可以使用标准库中的net和websocket包。 以下是一个基本的示例...

  Ohl6n170bzPf   2023年11月02日   52   0   0 客户端服务器长连接

OSS对象存储服务是什么 OSS对象存储服务是阿里云提供的一种云存储服务,可以用于存储各种类型的非结构化数据,如图片、音视频、文本等。它基于RESTfulAPI架构,提供了高可用、高扩展性、高安全性的数据存储服务。OSS可以帮助用户解决海量数据的存储和访问问题,提供了多种存储类型和存储方案,支持多种数据访问方式,例如Web直传、API接口调用、命令行工具等。OSS还提供了数据备份、数据加密、数据迁移等功能,能够满足不同场景下的数据存储需求。 OSS的基本使用方法 使用OSS的基本方法包括以下步骤: 创建OSSBucket 上传文件到Bucket 下载文件 删除文件 以下是使用gola...

  Ohl6n170bzPf   2023年11月02日   70   0   0 接口调用API上传

什么是网关? 网关是一种连接两个网络或不同协议的设备,它负责将数据从一个网络传输到另一个网络。它是一个连接互联网和局域网之间的接口,同时它还可以转换数据格式、协议和速率。网关通常是网络边缘的设备,它通过将数据包从一个网络转换为另一个网络来使网络间通信成为可能。 网关的工作原理 网关的工作原理是通过协议转换和数据格式转换,将不同网络之间的数据进行转发。网关在接收到一个数据包时,会查看目标地址,并判断该数据包需要转发到哪一个网络。然后,网关将数据包进行协议转换,将数据包的协议从源网络的协议转换为目标网络的协议。最后,网关将数据包转发到目标网络。 网关的类型 根据不同的分类标准,网关可以分为多种类型...

  Ohl6n170bzPf   2023年11月02日   43   0   0 数据数据格式协议转换

创建golang协程池 Golang协程池(goroutinepool)是一种并发编程的技术,它可以在预先创建一定数量的协程(goroutine)后,通过将任务分配给这些协程来提高程序的并发性能和效率。下面是一个简单的Golang协程池实现示例: packagemain import( "fmt" "sync" ) typeJobfunc() typePoolstruct{ jobschanJob wgsync.WaitGroup } funcNewPool(numWorkersint)Pool{ p:=Pool{ jobs:make(chanJob), } p.wg.Add(nu...

  Ohl6n170bzPf   2023年11月02日   39   0   0 并发编程i++任务分配

websocket如何在多机上保持连接 要在多个计算机上保持WebSocket连接,您需要确保WebSocket服务器可以在这些计算机之间访问并且可以接受来自这些计算机的连接请求。 一种方法是将WebSocket服务器放置在可公开访问的位置,并使用唯一的IP地址和端口号将其公开。这样,所有计算机都可以连接到该服务器并与其保持连接。 另一种方法是在每个计算机上启动一个WebSocket客户端,并将其连接到服务器。这将使每个计算机都保持自己的连接,但是这样可能会导致服务器负载增加,因为它需要同时处理多个连接。 如何把消息通过websocket发送给部署在不同机器上的设备 要将WebSocket消...

  Ohl6n170bzPf   2023年11月02日   30   0   0 客户端均衡器服务器

一、基本概念 微服务最主要的功能是根据业务拆分成一个一个的子服务,实现功能的去耦合,每一个微服务提供单个业务功能的服务,各司其职,从技术角度看就是一种灵活独立的单元,能够自行单独启动和关闭,一般每个服务都拥有自己的数据库模块。 在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高。到后面引入了SOA服务化,但是,由于SOA早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,比如J2EE。这导致很多企业的遗留系统很难对接,切换时间太长,成本太高,新系统稳定性的收敛也需要一些时间。最终SOA变得很笨重,在一些中小企业的场景中并不适合。 1...

  Ohl6n170bzPf   2023年11月02日   30   0   0 微服务API服务器

recover是什么 golang的recover是一个内置函数,用于在发生panic时恢复程序的控制流。当程序发生panic时,程序会停止执行当前的函数,并向上层函数传递panic,直到被recover函数捕获。recover函数必须在defer语句中调用,否则无法捕获panic。如果没有发生panic或者没有被recover函数捕获,程序会终止执行。 recover怎么用 recover函数的主要用途是在程序发生panic时,恢复程序的控制流,避免程序崩溃。recover函数必须在defer语句中调用,否则无法捕获panic。下面是recover函数的用法: funcrecover()in...

  Ohl6n170bzPf   2023年11月02日   28   0   0 控制流匿名函数恢复程序
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~