东风草堂blog

公众号:来风说


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

mysql 索引

发表于 2023-05-11 | 更新于: 2023-11-19 |
MySQL 体系结构 连接层最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层第二层架构主要完成大多数的核心服务功能,如 SQL 接口,并完成缓存的查询, SQL 的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。 引擎层存储引擎真正的负责了 MySQL 中数据的存储和提取,服务器通过 API 和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。 存储层主要是将数据存储在文件系统之上,并完成与存储引擎的交互。 show create table account,查看建表语句,engine指定存储引擎。show engins查询支持的引擎。 InnoDB介绍InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5之后, InnoDB 是默认的 MySQL 存储引擎。特点 DML 操作遵循 ACID 模型,支持事务; 行级锁,提高并发访问性能; 支持外键 FOREIGN KEY 约 ...
阅读全文 »

redis多级缓存

发表于 2023-05-08 | 更新于: 2023-11-19 |
传统的缓存策略一般是请求到达 Tomcat 后,先查询 Redis ,如果未命中则查询数据库,存在下面的问题: 请求要经过 Tomcat 处理, Tomcat 的性能成为整个系统的瓶颈 Redis 缓存失效时,会对数据库产生冲击 多级缓存方案用作缓存的 Nginx 是业务 Nginx ,需要部署为集群,再有专门的 Nginx 用来做反向代理(proxy_pass+upstream配置):缓存在日常开发中启动至关重要的作用,由于是存储在内存中,数据的读取速度是非常快的,能大量减少对数据库的访问,减少数据库的压力。我们把缓存分为两类: 分布式缓存,例如 Redis : 优点:存储容量更大、可靠性更好、可以在集群间共享.缺点:访问缓存有网络开销 场景:缓存数据量较大、可靠性要求较高、需要在集群间共享 进程本地缓存,例如 HashMap 、 GuavaCache : 优点:读取本地内存,没有网络开销,速度更快·缺点:存储容量有限、可靠性较低、无法共享 场景:性能要求较高,缓存数据量较小 Caffeine 提供了三种缓存驱逐策略: 基于容量:设置缓存的数量上限 1234// ...
阅读全文 »

redis集群

发表于 2023-05-08 | 更新于: 2023-11-19 |
单点redis问题 数据丢失,实现redis持久化 并发能力,主从集群,读写分离 故障恢复,哨兵机制,健康监测,自动恢复 存储能力,分片集群,插槽机制实现动态扩容 redis持久化rdb,redis数据备份文件,实现持久化。save命令开启,主进程阻塞完成。bgsave后台完成。停机时自动执行rdb。redis.conf可以配置,save 900 1表示900秒内,如果至少一个key被修改,则执行bgsave,如果是save “”,则表示禁用rdb。dbfilename和dir也可以配置文件名和目录,rdbcompression可以配置是否压缩,但会消耗cpu。 bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据,完成fork后读取内存数据写入rgb文件。fork采用copy-on-write技术,读操作访问共享内存,写操作拷贝数据执行写操作,所以极端情况所有数据都被修改了,可能内存会翻倍。 rdb缺点,执行间隔长,两次rdb之间写入数据有数据丢失的风险。fork子进程、压缩、写出rdb文件都比较耗时。 aof追加文件,redis处理的每一个写命令都会记录在ao ...
阅读全文 »

日常开发工具

发表于 2023-04-19 | 更新于: 2023-05-05 |
在 CentOS 系统上安装 Google Chrome 浏览器,可以按照以下步骤进行: 添加 Google Chrome 的 YUM 源在终端中输入以下命令: sudo tee /etc/yum.repos.d/google-chrome.repo <<-‘EOF’[google-chrome]name=google-chrome - $basearchbaseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearchenabled=1gpgcheck=1gpgkey=https://dl.google.com/linux/linux_signing_key.pubEOF安装 Google Chrome输入以下命令进行安装: sudo yum install google-chrome-stable启动 Google Chrome在终端中输入以下命令启动 Google Chrome 浏览器: google-chrome这样就可以在 CentOS 系统上安装和使用 Google Chrome 浏览器了。
阅读全文 »

go服务器与vue客户端的sse实现

发表于 2023-03-31 | 更新于: 2023-04-02 |
go server1data: something happend!\n\n 第二个 \n 表示这个 event 结束,可以发给客户端了。第一个 \n 主要是为了有时要传输多行数据时,例如传个 json:123data: {\ndata: "foo": "bar"\ndata: }\n\n 上面都属于 message 这个类型,如果想发送别的类型可以通过 event 字段自定义:12event: close\ndata: play enough\n\n 注意仍然需要带上 data 字段。 123456789101112131415161718192021222324252627282930313233343536package mainimport ( "fmt" "log" "net/http" "time")func handleSSE(w http.ResponseWriter, r *http.Request) { appId := r.URL.Query()["appId"] page := r.URL.Q ...
阅读全文 »

docker部署问题

发表于 2023-03-30 | 更新于: 2023-04-02 |
网络模式docker的默认网络模式的bridge,有个问题,docker内部无法直接与另外的docker内的端口进行通信,改为host模式即可。如果不改网络模式的话,要么不走http,改为走uds通信就可以。123services: nginx: network_mode: "host" 镜像推送1234docker build . -t REPOSITORY:TAGdocker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)docker logindocker push nephen2023/chatgpt-next-web
阅读全文 »

thrift源码分析

发表于 2023-03-29 | 更新于: 2023-04-06 |
+——————————————-+| Server || (single-threaded, event-driven etc) |+——————————————-+| Processor || (compiler generated) |+——————————————-+| Protocol || (JSON, compact etc) |+——————————————-+| Transport || (raw TCP, HTTP etc) |+——————————————-+ TransportTransport传输层为从网络读取/向网络写入提供了一个简单的抽象。这使 Thrift ...
阅读全文 »

midjourney

发表于 2023-03-29 | 更新于: 2023-04-02 |
https://docs.midjourney.com/docs/invite-the-bot,可以将机器人拉入到自己的群中,这样消息不会被淹没。 api下载mj生成的图片:https://medium.com/@neonforge/how-to-create-a-discord-bot-to-download-midjourney-images-automatically-python-step-by-step-guide-3e76d3282871api自动发送mj消息:https://medium.com/@neonforge/how-to-automate-midjourney-image-generation-with-python-and-gui-automation-ac9ca5f747ae discord生成应用:https://discord.com/developers/applicationsdiscord开发手册:https://discord.com/developers/docs/interactions/application-commands
阅读全文 »

网站seo优化

发表于 2023-03-29 | 更新于: 2023-04-02 |
网页重定向网页迟迟没有被google收录,进入https://search.google.com/发现: 在 Nuxt.js 中,您可以通过设置 generate.subFolders 选项来控制生成的文件是否应该包含子目录。默认情况下,该选项的值为 true,这意味着生成的文件将被放置在相应的路由目录中。 如果您不想要生成的文件包含子目录,并直接生成 HTML 文件,您可以将 generate.subFolders 设置为 false。您可以在 nuxt.config.js 文件中添加以下配置:12345export default { generate: { subFolders: false }} 然后运行 nuxt generate 命令重新生成静态文件,重新部署网站。 修改nginx配置,try_files $uri $uri.html $uri/ /index.html;,重启nginx。 使用https://httpstatus.io/检测状态为200,不再包含301即可。
阅读全文 »

ThreadManager实现

发表于 2023-03-28 | 更新于: 2023-04-06 |
服务器TNonblockingServerrpc请求生成task放入到任务队列中,这个任务是Runnable的,但没有依附于某个thread,等于是封装了个run函数,供线程池工作线程调用时运行的。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465void addTask(stdcxx::shared_ptr<Runnable> task) { threadManager_->add(task, 0LL, taskExpireTime_);}stdcxx::shared_ptr<Runnable> task = stdcxx::shared_ptr<Runnable>( new Task(processor_, inputProtocol_, outputProtocol_, this));server_-> ...
阅读全文 »
123…17
nephen

nephen

167 日志
16 分类
64 标签
GitHub E-Mail
友情链接
  • 新建留言板
  • 订阅号留言板(旧)
  • 订阅号留言板(新)
  • 山楂岛秘密花园
  • 代发短信
© 2016 — 2023 nephen
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
粤ICP备2022125614号-1
本站访客数 人次 本站总访问量 次