软件设计模式系列之二十——备忘录模式

备忘录模式是一种行为型设计模式,它允许我们在不暴露对象内部细节的情况下捕获和恢复对象的内部状态。这个模式非常有用,因为它可以帮助我们实现撤销、恢复和历史记录等功能。在本文中,我们将深入探讨备忘录模式的各个方面,包括定义、示例、结构、实现步骤、代码实现、典型应用场景、优缺点、类似模式以及小结。

【开源】最近写了一个简单的网址导航网站

前言 随着团队的成长,要管理的项目或使用的内部系统越来越多,很多内部系统都没有域名,使用IP+端口,很难记。 为了解决这个痛点,我抽空写了个导航网站~ 目前用下来效果还不错,可以基本完美的解决这个问题。 项目名称是 SiteDirectory ,代码在 Github 开源了: https://git

KU FPGA FLASH boot失败debug

原因 新板子回来后,测试flash 烧录正常,但是无法BOOT,此时SPI设置为X4模式,使用内部时钟,速度90M。烧录过程不报错,校验也正常。 FLASH理论支持最大速度108M,90M应该还好。另外板卡预留了EMCCLK外部时钟模式,速率100M 也不可行。 此时约束如下: set_proper

Dotnet算法与数据结构:Hashset, List对比

哈希集A 是存储唯一元素的集合。它通过在内部使用哈希表来实现这一点,该哈希表为基本操作(如添加、删除和包含)提供恒定时间平均复杂度 (O(1))。此外,不允许重复元素,使其成为唯一性至关重要的场景的理想选择。另一方面,表示按顺序存储元素的动态数组。它允许重复元素并提供对元素的索引访问,使其适用于需要

线程安全使用 HashMap 的四种技巧

这篇文章,我们聊聊线程安全使用 HashMap 的四种技巧。 1方法内部:每个线程使用单独的 HashMap 如下图,tomcat 接收到到请求后,依次调用控制器 Controller、服务层 Service 、数据库访问层的相关方法。 每次访问服务层方法 serviceMethod 时,都会在方法

记录freeswitch的一个2833问题

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 运营商内部新老系统混用,互联互通的问题较多,其中以DTMF码的问题最多,花样也多。 环境 CentOS 7.9 freeswitch 1.10.7 问题描述 问题现象 正常的fs业务服务器,呼叫正常,部分呼叫报错DTMF收码失败。

pandas:时间序列数据的周期转换

时间序列数据是数据分析中经常遇到的类型,为了更多的挖掘出数据内部的信息,我们常常依据原始数据中的时间周期,将其转换成不同跨度的周期,然后再看数据是否会在新的周期上产生新的特性。 下面以模拟的K线数据为例,演示如何使用pandas来进行周期转换。 1. 创建测试数据 首先创建测试数据,下面创建一天的K

[转帖]innodb表最大列数限制

https://blog.csdn.net/sun_ashe/article/details/52433812 innodb 最大列数限制为1023,其中包含3个内部隐藏列,分别为:DB_ROW_ID(如果没有主键的情况), DB_TRX_ID事务id列,DB_ROLL_PTR回滚指针列。 但是分配

[转帖]服务器常见错误代码500、501、502、503、504、505

https://www.cnblogs.com/jiangjunli/p/7639578.html 一:500错误 1、500 Internal Server Error 内部服务错误:顾名思义500错误一般是服务器遇到意外情况,而无法完成请求。 2、500出错的可能性: a、编程语言语法错误,we

[转帖]OpenResty编译安装

https://www.cnblogs.com/lizexiong/p/15012869.html OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 We

[转帖]Traefik中诡异的502和504问题

https://zhuanlan.zhihu.com/p/156138704 我们都知道在 Kubernetes 集群中通常会使用 Ingress 方案来统一代理集群内部的流量,而常用的 Ingress 方案为 traefik 和 nginx,和传统的 Nginx 作为企业内部的反向代理以及负载设备

[转帖]JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled

目录 一、Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能。我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据。 1.Native memory tracking is not enabled 打开NMT 二、查看原生内

[转帖]将 Cloudflare 连接到互联网的代理——Pingora 的构建方式

https://zhuanlan.zhihu.com/p/575228941 简介 今天,我们很高兴有机会在此介绍 Pingora,这是我们使用 Rust 在内部构建的新 HTTP 代理,它每天处理超过 1 万亿个请求,提高了我们的性能,并为 Cloudflare 客户带来了许多新功能,同时只需要我

[转帖]Oracle数据库开启NUMA支持

NUMA简介 NUMA(Non Uniform Memory Access Architecture,非统一内存访问)把一台计算机分成多个节点(node),每个节点内部拥有多个CPU,节点内部使用共有的内存控制器,节点之间是通过互联模块进行连接和信息交互。因此节点的所有内存对于本节点所有的CPU都是

FinClip 小程序的自有账户体系是怎么做的?

随着公司规模越来越大,员工需要使用的产品矩阵也会越来越丰富,不仅包括内部的 IT 系统,OA 系统,业务系统,还会有很多和外部产品集成的登录流程,更别提各种业务系统或者子系统中的账户体系了。如果使用简单粗暴的方法,让员工在每一个系统中单独注册一个独立的账户,不仅员工的用户体验简单粗暴,也会陡然提升员工密码管理的相关成本。

如何取消Blazor Server烦人的重新连接?

# 如何取消Blazor Server烦人的重新连接? 相信很多Blazor的用户在开发内部系统上基本上都选择速度更快,加载更快的`Blazor Server`模式。 但是`Blazor Server`由于是`SignalR`实现,所以在访问的时候会建立`WebSocket`通道,用于`js`交互和

vivo 自研鲁班分布式 ID 服务实践

本文介绍了什么是分布式id,分布式id的业务场景以及9种分布式id的实现方式,同时基于vivo内部IT的业务场景,介绍了自研鲁班分布式Id服务的实践。

ClickHouse数据表迁移实战之-remote方式

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。我们内部很多的报表、数据看板都基于它进行开发。今天为大家带来remote方式的ClickHouse数据表迁移的完整过程介绍,如有错误,还请各位大佬指正。

深入理解Python虚拟机:super超级魔法的背后原理

super 是 Python 面向对象编程当中非常重要的一部分内容,在本篇文章当中详细介绍了 super 内部的工作原理和 CPython 内部部分源代码分析了 super 的具体实现。

WebKit Inside: CSS 样式表解码字符集

CSS 样式表引入有3种方式: 外部样式表、内部样式表、行内样式,不同的引入方式,解码样式表的字符集原理不一样。 外部样式表 外部样式表由 link 标签引入,当 WebKit 解析到 link 标签时就会构造 CachedCSSStyleSheet 对象。这个对象持有 CachedResource