东风草堂blog

公众号:来风说


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

mysql缓存方案

发表于 2020-07-21 | 更新于: 2023-02-28 |
缓存方案主要用于缓存用户定义的热点数据,用户可以通过缓存来获取数据,从而降低数据库的压力。内存访问速度远大于磁盘访问速度,mysql缓存的数据跟业务无关,缓存的是最近操作的数据。mysql作为项目的主要数据库,缓存数据库只是辅助功能。 缓存一致性 mysql有,redis无,正常 mysql无,redis有,不正常 都有,数据不一致,不正常 都有,数据一致,正常 都没有,正常 读写策略 读策略:先读缓存,缓存存在直接返回,缓存不存在,去访问Mysql获取,若存在,再写缓存 写策略: 安全:先删除缓存中数据,再写mysql,再同步到redis.这样mysql的压力会大 效率:先写缓存,设置过期时间(防止mysql写失败),再写mysql,最后将mysql中的数据同步到redis中 同步方案 触发器 + UDF(user defined function,c++扩展代码),每次表变更都需要与redis重新建立连接 go-mysql-transfer、canal(java,考虑分布式))伪装成mysql的从数据库,bin log->i/o thread->relay lo ...
阅读全文 »

leetcode-二叉树题型

发表于 2020-07-05 | 更新于: 2023-10-15 |
找完全二叉树最底层最右边的结点给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最右边 节点的值。假设二叉树中至少有一个节点。 完全二叉树的特点,即除了最后一层外,每一层都是满的,并且最后一层上的节点都集中在该层最左边的若干位置上。所以,如果我们按照层次遍历这个完全二叉树,最后遍历到的节点即为底层最右节点。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include <iostream>#include <queue>using namespace std;struct TreeNode { int val; TreeNode *left, *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};// 求完全二叉树的底层最右节点TreeNode* findBottomRightNode(TreeNode ...
阅读全文 »

网络篇

发表于 2020-07-05 | 更新于: 2024-11-10 |
网络通信模型TCP/IP与OSI最大的不同在于:OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络协议。 为什么连接的时候是三次握手,关闭的时候却是四次挥手?三次握手第一次握手:第一次握手是客户端发送同步报文到服务端,这个时候客户端是知道自己具备发送数据的能力的,但是不知道服务端是否有接收和发送数据的能力; 第二次握手:当服务端接收到同步报文后,回复确认同步报文,此时服务端是知道客户端具有发送报文的能力,并且知道自己具有接收和发送数据的能力,但是并不知道客户端是否有接收数据的能力; 第三次握手:当客户端收到服务端的确认报文后,知道服务端具备接收和发送数据的能力,但是此时服务端并不知道自己具有接收的能力,所以还需要发送一个确认报文,告知服务端自己是具有接收能力的。 当整个三次握手结束过后,客户端和服务端都知道自己和对方具备发送和接收数据的能力,随后整个连接建立就完成了,可以进行后续数据的传输了。 三次握手是为了建立可靠的数据传输通道,四次挥手则是为了保证等数据完全的被接收完再关闭连接。既然提到需要保证数据完整的传输完,那就需要保证双方都达到关闭连接的条件才能断开。 四次挥 ...
阅读全文 »

无锁技术

发表于 2020-07-04 | 更新于: 2023-03-18 |
自旋锁自旋锁是最基本的一种无锁技术,采用基于 CAS(Compare-and-Swap)的操作,尝试获取锁,失败时采用轮询的方式等待资源,避免线程被阻塞,不需要系统调用,从而减少上下文切换和性能损耗。原子操作使用 CPU 提供的原子性指令,属于硬件层面的,实现数据的原子性访问和修改,避免使用锁导致的线程阻塞和竞争,同时也避免了死锁的发生。加锁区执行速度快的情况下可以使用该锁。atomic提供的常见方法: store:原子写操作。 load:原子读操作。 compare_exchange_strong:传入[期望原值]和[设定值],当前值与期望值相等时,修改当前值为设定值,返回true;当前值与期望值不等时,将期望值修改为当前值,返回false。 compare_exchange_weak:同上,但允许偶然出乎意料的返回(比如在字段值和期待值一样的时候却返回了false),比strong性能更好些,但需要循环来保证逻辑的正确性。 exchange:交换2个数值,并保证整个过程是原子的。 C++11标准中提供了 std::atomic 模板类,用于实现原子操作,可用于实现 CAS 操作 ...
阅读全文 »

常用设计模式

发表于 2020-06-15 | 更新于: 2024-05-18 |
使用设计模式的前提:具体需求既有稳定点,又有变化点。期望修改少量的变化点,就可以适应需求的变化。比如整齐的房间与好动的猫,设计模式就是要把猫关在笼子里。 策略模式定义一系列算法,把它们一个一个封装起来,并且使它们可以互相替换,该模式使算法可独立于使用它们的客户程序而变化。这里的稳定点是:客户程序与算法的调用关系。变化点是新增算法或者算法内容发生改变或者需要动态的切换算法。例子:商场不同的促销活动。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475#include <iostream>// 上下文类,包含了促销活动的信息class Context {public: double totalPrice; // 其他上下文信息...};// 抽象基类,具体的活动需要实现这个基类class ProStrategy ...
阅读全文 »

leetcode-双指针相关题型

发表于 2020-04-16 | 更新于: 2024-05-18 | 分类于 leetcode |
双指针相关题型
阅读全文 »

leetcode: 几个数之和系列

发表于 2020-04-14 | 更新于: 2023-03-04 | 分类于 leetcode |
几个数之和系列
阅读全文 »

公众号留言功能开通方法(2020版)

发表于 2020-04-05 | 更新于: 2022-04-14 | 分类于 订阅号留言板
目前还有不少朋友对留言功能开通不是很了解,已经很久没有更新文章了,还是决定将一些大家都存在的疑惑问题再集中整理一下,写成一篇文章,希望能对大家有帮助。 网上已经有各种资料已经说的很清楚了,18年3月后就关闭了留言功能,政策原因,理解一下。 下面介绍两种开通留言功能的方法。 公众号迁移如果你是个人类型订阅号,建议直接看第二种开通留言的小程序留言方法或本方法的最后一点,如果你是企业类型订阅号,有条件的还是建议进行迁移,一步到位,只是迁移的过程麻烦一点。下面分几个方向对迁移进行说明。 主要目的 通过迁移,将原账号A的留言功能迁至目标账号B,实现B账号开通留言功能,B账户就是你目前的订阅号。所以不是将你的订阅号迁移到别人那里去,不要弄混淆了。 单独买个人留言订阅号无安全保障,因为主体还是别人的,等你号养大了,别人可以申诉把号拿回去,这也是不建议大家直接购买别人的个人留言号拿来运营的原因,只有将号迁移到你自己主体的号上才是最安全的。 为什么要迁移 因为公众号不支持直接变更主体。 所以公众平台推出帐号迁移功能,通过此功能可将A账号的粉丝、文章素材(可选)、微信号(可选)、违规记录迁移至B帐号。 ...
阅读全文 »

公众号留言功能怎么开通?(2020)

发表于 2020-04-05 | 更新于: 2022-04-14 | 分类于 订阅号留言板
网上已经有各种资料已经说的很清楚了,18年3月后就关闭了留言功能,政策原因,理解一下。 企业类型公众号的可以考虑通过公众号迁移来开通留言功能,简单来说就是将别人订阅号的留言功能迁移到你的企业类型订阅号上,这样你的号就有留言功能了,迁移的目标账户必须是组织类型的账户如企业类型订阅号。迁移的具体流程为:) 那么到底什么是公众号迁移? 因为公众号不支持直接变更主体,所以公众平台推出帐号迁移功能,通过此功能可将A帐号的粉丝、违规记录、文章素材(可选)、微信号(可选)迁移至B帐号。 温馨提示:例如帐号A迁移至B,那迁移完成,A帐号被回收,B帐号获得A帐号的粉丝等信息继续使用,但主体还是B。 帐号迁移仅对粉丝、违规记录、文章素材及微信号做迁移,若A帐号已开通原创保护功能、留言管理功能,则功能也会迁移(原帐号文章的原创标识、精选留言会迁移),其他的内容及功能无法迁移(包括微信支付、流量主、模板消息等)。粉丝迁移完成后,旧帐号将会回收,无法恢复,因此在帐号迁移之前请确保旧帐号的功能可以直接停用或已经转存。 还不明白何为公众号迁移的可以直接看看腾讯官方的文档介绍:https://kf.qq.com/fa ...
阅读全文 »

libevent回调函数分析——evhttp_connection_cb容易出现的bug

发表于 2020-03-27 | 更新于: 2023-02-18 | 分类于 libevent |

在这个函数中,会调用getsockopt函数,获取socket套接字是否有连接的异常,但是这个getsockopt函数有个连续调用的问题,如果你第二次调用这个函数,之前fd上的错误就被清除了,导致本来这个socket套接字是有问题的,但是检测不出来了,目前这个evhttp_connection_cb的bug就在这里,如果后端服务器根本就没有开启的情况下,该函数中的getsockopt也检测不到异常了,导致其误以为连接上了,流程会一直往下走,会继续去读取后端服务器的body,却发现读不到数据,导致连接503错误,原本应该是getsockopt检测到连接异常后,就响应500的错误的。

阅读全文 »

1…111213…18
nephen

nephen

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