有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准https://blog.zysicyj.top
Redis 高可靠靠什么保证?为什么要提这个呢,因为 Redis 主从库目的呢其实就是为了实现高可靠。上篇文章中我们说过 Redis 的 AOF、RDB 日志其实就是为了 ** 减少数据丢失**,这是高可靠的一部分。
这篇文章呢,我们聊聊 Redis 实现高可靠的另一方面:尽量减少服务中断 。这里 Redis 是怎么做的呢?Redis 的做法是 增加副本冗余,将一份数据同时保存在多个实例上。这样某个实例挂掉并不影响其它实例提供对外服务,保证我们的业务正常运行。
Redis 有哪些手段提高高可用呢?
数据持久化:Redis 支持多种数据持久化方式,包括快照(snapshotting)和日志(append-onlyfile)。快照会定期将内存中的数据保存到磁盘文件,而日志会记录每次写操作,以便在重启时进行恢复。这些持久化方式可以确保即使服务器意外关闭,数据也不会丢失。
主从复制:Redis 支持主从复制机制,其中一个 Redis 实例作为主节点,负责写操作, ...
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准https://blog.zysicyj.top
先看看效果https://chat-gpt-next-web2-xi-three.vercel.app
为啥推荐这个呢,其实市面上已经有很多了,这个主要是 UI 蛮漂亮的,嘿嘿!你要是简单想弄的话,CSDN 就能免费搭建一个,这个就自行百度吧,还是很简单的。
自定义角色
详细的配置
Fork 项目https://github.com/zysicyj/ChatGPT-Next-Web2
部署 打开链接:https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web&env=OPENAI_API_KEY&env=CODE&project-name=chatgpt-next-web&repository-name=ChatGPT-Next-Web
注册后,填写这个
点击部署即可 22.png)
点击部 ...
直接使用无需看此配置
快速生成通用接口业务配置 : https://blog.zysicyj.top/ba6838a7
一、插件安装
二、脚本 关注绿色聊天软件【程序员朱永胜】回复:1013 下载
三、使用 拷贝到扩展目录下
修改 mybatisCodehelper.vm
修改 init.vm
右键使用插件生成
这样配置并确定/blog/202308142151286.png)
if (typeof lightGallery !== 'undefined') {
var options = {selector: '.gallery-item'};
lightGallery(document.getElementsByClassName('.article-gallery')[0], options);
}
var isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|M ...
这个是干什么的? 简单介绍下:
作用:通过插件一键生成某个表对应的增删改查等基础或者说通用接口,这里面的代码是基础版的,后续改良后,很多业务的通用功能,比如流程的启动,自动下一步,通用导出,通用导入等等。
原理:核心就是 BasicControllerPostProcessor ,通过动态生成代理对象,完成逻辑实现。这里呢经过实践呢后续也有不少优化的,后续我总结后发一个新版的
一、核心处理类 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586package com.nari.core.handler;import cn.hutool.core.collection.ListUtil;import cn.hutool.core.date.DateUtil;import cn.hutool.core.date ...
MySQL 编码规范:保障代码质量的关键 1. 流程 数据库表结构的修改需要相关人员和 Leader 一起评审,保证符合涉及规范。
不允许使用 root 账号,所有开发和测试应当分配指定账号,并授予最小数据库权限
2. 数据库与表规范 表命名规范
常规表表名以 t_开头,t 代表 table 的意思,命名规则即 t + 模块(包含模块含义的简写)+ 表(包含表含义的简写),比如用户模块的教育信息表:t_user_eduinfo。
临时表(RD、QA 或 DBA 同学用于数据临时处理的表),命名规则:temp 前缀 + 模块 + 表 + 日期后缀:temp_user_eduinfo_20210719
备份表(用于保存和归档历史数据或者作为灾备恢复的数据)命名规则,bak 前缀 + 模块 + 表 + 日期后缀:bak_user_eduinfo_20210719
区分位: iz_* [String(1)] 1 表示是 0 表示否,(禁用 is_, 代码生成实体有问题 )
状态位: *_status [String(1-2)] 状态字段必须加注释说明每个值代表含义
同一个模块的表尽可能使用相 ...
1git config --global http.proxy “localhost:7890”
配置下代理即可 ` 配置下代理即可
if (typeof lightGallery !== 'undefined') {
var options = {selector: '.gallery-item'};
lightGallery(document.getElementsByClassName('.article-gallery')[0], options);
}
var isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
var isEncrypt = documen ...
博客地址:blog.zysicyj.top
Redis 为什么要引入持久化机制Redis 引入持久化机制是为了解决内存数据库的数据安全性和可靠性问题。虽然内存数据库具有高速读写的优势,但由于数据存储在内存中,一旦服务器停止或崩溃,所有数据将会丢失。持久化机制的引入旨在将内存中的数据持久化到磁盘上,从而在服务器重启后能够恢复数据,提供更好的数据保护和可靠性。
以下是持久化机制的几个主要原因:
1. 数据安全和可靠性:通过将数据持久化到磁盘上,即使在服务器崩溃或异常停止的情况下,也可以保证数据不会丢失。持久化机制可以防止重要的数据在突发情况下遭受损失。
2. 数据恢复:持久化机制允许在服务器重启后将数据重新加载到内存中,从而实现数据的恢复。这对于业务的连续性和可用性非常重要。
3. 数据灾难恢复:持久化机制对于灾难恢复也很有帮助。在不幸发生硬件故障、电力中断等情况下,持久化机制可以帮助恢复数据。
4. 数据迁移:持久化机制也有助于将数据从一个服务器迁移到另一个服务器。你可以通过备份持久化文件并在另一台服务器上进行恢复来完成数据迁移。
虽然持久化机制带来了磁盘 IO 和性能开销,但它为 ...
Redis 有以下几种常用的数据类型:
redis 数据是如何组织的 为了实现从键到值的快速访问,Redis 使用了一个哈希表来保存所有键值对。
Redis 全局哈希表(Global Hash Table)是指在 Redis 数据库内部用于存储所有键值对的主要数据结构。它的实现原理涉及到哈希表、字典、渐进式 rehash 等技术,以下是 Redis 全局哈希表的实现原理和查询流程:
实现原理:
哈希表(Hash Table):
Redis 的全局哈希表是由多个哈希表构成的,每个哈希表称为一个数据库(DB)。数据库的数量可以通过配置进行设置,默认是 16 个。每个数据库都是一个独立的哈希表,负责存储键值对。
字典(Dictionary):
每个数据库都使用字典(Dictionary)来实现键值对的存储。字典是一种高效的键值对存储结构,它使用哈希表来支持快速的查找、插入和删除操作。
渐进式 rehash:
当数据库的键值对数量较多时,为了保持查询性能,Redis 会在不中断服务的情况下,逐步将旧的数据库哈希表中的数据迁移到新的数据库哈希表中,这个过程叫做渐进式 rehash。这样 ...
简介 配合优化的项目架构,能够自动生成基础 CURUD,实现 10 秒钟开发新业务接口
https://brucege.com/doc/#/generateByTemplate
EasyCode 自动生成脚本是一个与优化项目架构配合的工具,能够快速生成基础 CURUD 操作,帮助开发人员在 10 秒钟内创建新的业务接口。本文介绍了如何使用 EasyCode 自动生成脚本,并展示了生成的 Controller 和 Mapper 类的示例代码。
自动生成以下类,还有一个 xml 没截取到
生成的 controller123456789101112131415161718192021222324252627282930package com.nari.supervision.daily.outbound.controller;import com.nari.core.basic.BasicController;import com.nari.supervision.daily.outbound.model.IdLibraryChecklist;import com.nari.supervi ...
前言 很粗糙啊,有很多可以优化的地方,而且也不安全,但是临时用还是 OK 的,我这个是公司里面的单机软件,不联网。
嗨!我是一名社交媒体增长黑客,很高兴能帮助您优化和丰富关于批量作业导出和导入的文章。这个主题相当技术性,但我会将其分解为易于理解的部分。让我们开始吧!
简介 在当今快节奏的数字世界中,高效地导出和导入批量作业对于企业至关重要。批量作业操作涉及处理大量数据,拥有流畅的流程可以节省时间和精力。在本文中,我们将探讨一种基于 Java 的解决方案,可以让您无缝地导出和导入批量作业。
导出批量作业 提供的代码片段演示了如何使用基于 Java 的解决方案导出批量作业。以下是代码的详细说明:
exportBatchJobs 方法负责导出批量作业。它使用 StringBuilder 构建每个表的 SQL 语句。
getTableNames 方法使用 SHOW TABLES SQL 查询检索所有表名。
对于每个表,都会调用 downloadTable 方法。它查询表数据并为每一行生成 SQL 插入语句。
生成的 SQL 语句会追加到 sqlBuilder 中。
最后,sql ...