<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mming520的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mming520</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mming520]]></copyright><item><title><![CDATA[mysql如何在无法启动的情况下进行数据恢复]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/137338487</link><guid>https://blog.youkuaiyun.com/mming520/article/details/137338487</guid><author>mming520</author><pubDate>Wed, 03 Apr 2024 11:37:58 +0800</pubDate><description><![CDATA[原本开发的好好的，突然发现mysql连接不上，去服务器一看宕机了，想着重启一下，结果找不到bin目录，重启service也不行，当时忘记把mysql添加service了，网上找了一圈没找到解决方法。我心想，这不就完事了吗，ibd文件中需要的数据都有了，直接拿出来不就能进行恢复了，但是又错了，ibd是二进制文件，无法直接打开查看，网上找了一圈也没有对应的解决方法。突然想到一个歪路子，把旧mysql的data目录下的文件直接移到新mysql下，结果显然是失败的，mysql根本启动不了，按照网上的教程也都不行。]]></description><category></category></item><item><title><![CDATA[简述redis为什么快]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/135573848</link><guid>https://blog.youkuaiyun.com/mming520/article/details/135573848</guid><author>mming520</author><pubDate>Sat, 13 Jan 2024 18:48:16 +0800</pubDate><description><![CDATA[数据结构针对内存使用效率做了设计优化，如简单动态字符串（SDS）、压缩列表（ziplist）和整数集合（intset）Redis 就给我们提供了两个优秀的设计思想：一个是。，以避免使用统一大小的元数据，造成内存空间的浪费。Reactor网络模型处理请求。，避免内存碎片开销；]]></description><category></category></item><item><title><![CDATA[简单聊聊Kafka的Consumer]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/135528040</link><guid>https://blog.youkuaiyun.com/mming520/article/details/135528040</guid><author>mming520</author><pubDate>Thu, 11 Jan 2024 14:16:52 +0800</pubDate><description><![CDATA[针对这个问题，Consumer 在每次调用 Poll() 消费数据的时候，顺带一个 timeout 参数，当返回空数据的时候，会在 Long Polling 中进行阻塞，等待 timeout 再去消费，直到数据到达。**如果是选择 Push 模式最大缺点就是 Broker 不清楚 Consumer 的消费速度，且推送速率是 Broker 进行控制的， 这样很容易造成消息堆积，如果 Consumer 中执行的任务操作是比较耗时的，那么 Consumer 就会处理的很慢， 严重情况可能会导致系统 Crash。]]></description><category></category></item><item><title><![CDATA[浅谈Kafka-Broker的Replication与Controller]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/135088900</link><guid>https://blog.youkuaiyun.com/mming520/article/details/135088900</guid><author>mming520</author><pubDate>Tue, 19 Dec 2023 16:55:34 +0800</pubDate><description><![CDATA[Kafka是有主题概念的，而每个主题又进一步划分成若干个分区。副本的概念实际上是在。]]></description><category></category></item><item><title><![CDATA[kafka-消息丢失处理方案]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/134607768</link><guid>https://blog.youkuaiyun.com/mming520/article/details/134607768</guid><author>mming520</author><pubDate>Fri, 24 Nov 2023 22:06:24 +0800</pubDate><description><![CDATA[1）首先当 Producer 向 Broker 发送数据后，会进行 commit，如果 commit 成功，由于 Replica 副本机制的存在，则意味着消息不会丢失，但是 Producer 发送数据给 Broker 后，遇到网络问题而造成通信中断，那么 Producer 就无法准确判断该消息是否已经被提交（commit），这就可能造成 at least once 语义。既然 Consumer 拉取后消息最终是要提交 Offset， 那么这里就可能会丢数据的**!]]></description><category></category></item><item><title><![CDATA[计算机网络-网络层 学习笔记]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/133578647</link><guid>https://blog.youkuaiyun.com/mming520/article/details/133578647</guid><author>mming520</author><pubDate>Thu, 05 Oct 2023 12:20:00 +0800</pubDate><description><![CDATA[网络地址转换 NAT: NAT，即网络地址转换（Network Address Translation），是一种在计算机网络中常见的技术，用于将内部网络的私有IP地址映射到外部网络的公共IP地址上，以实现多个内部设备共享一个或一组公共IP地址的功能。总之，DHCP是一种用于自动化网络设备配置的重要协议，它简化了IP地址和其他网络参数的分配和管理，提高了网络的可维护性和可扩展性。CIDR表示法是一种灵活的方式来表示IP地址块的范围，特别是在路由表中，它有助于减少路由表的大小和提高路由效率。]]></description><category></category></item><item><title><![CDATA[设计模式-行为型 学习笔记]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/133551800</link><guid>https://blog.youkuaiyun.com/mming520/article/details/133551800</guid><author>mming520</author><pubDate>Wed, 04 Oct 2023 14:28:53 +0800</pubDate><description><![CDATA[责任链模式（Chain of Responsibility Pattern）是一种行为设计模式，它允许你构建一系列对象，每个对象都可以处理请求，并将请求传递给下一个对象。这些对象被组织成链，因此请求沿着链传递，直到有一个对象处理它为止。责任链模式的主要思想是将请求的发送者和接收者解耦，从而提高系统的灵活性和可维护性。责任链模式在日常开发中常用于日志记录、权限验证、异常处理、过滤器等领域，其中请求可以沿着链依次传递并处理。]]></description><category></category></item><item><title><![CDATA[设计模式-结构型 学习笔记]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/133524568</link><guid>https://blog.youkuaiyun.com/mming520/article/details/133524568</guid><author>mming520</author><pubDate>Tue, 03 Oct 2023 18:14:05 +0800</pubDate><description><![CDATA[适配器模式（Adapter Pattern）是一种结构性设计模式，用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容接口的类能够一起工作，促使不同接口之间的协同合作。]]></description><category></category></item><item><title><![CDATA[设计模式-创建型 学习笔记]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/133494662</link><guid>https://blog.youkuaiyun.com/mming520/article/details/133494662</guid><author>mming520</author><pubDate>Mon, 02 Oct 2023 15:37:02 +0800</pubDate><description><![CDATA[一个商店发放几种不同的物品，如优惠卷，消费卡，实物商品等，每种物品都有自己内部实现的业务逻辑，在实际开发中通过判断type从而判断具体的实例类型会增加代码复杂度，难以维护和重构。可以对三种物品抽象出一个统一发放物品的接口，再有一个根据判断type返回相应的实现的工厂类。避免了创建者与具体的产品逻辑耦合，满足单一职责，每一个业务逻辑实现都在自己所属的类中完成，满足开闭原则，无需更改使用调用方就可以在程序中引入新的类型。]]></description><category></category></item><item><title><![CDATA[计算机网络 -传输层学习笔记]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/133170626</link><guid>https://blog.youkuaiyun.com/mming520/article/details/133170626</guid><author>mming520</author><pubDate>Fri, 22 Sep 2023 14:43:37 +0800</pubDate><description><![CDATA[面向连接的可靠的字节流传输层协议三次握手 四次挥手同步双方初始序列号避免资源浪费SYNSYNFINFINACKFINTCP状态TCP（传输控制协议）在通信过程中有多种状态，这些状态描述了TCP连接的不同阶段和条件。这些状态描述了TCP连接的生命周期和不同阶段。连接的状态转换遵循一定的协议规则，以确保数据可靠传输和连接的正确终止。tcp重传机制ACKSACKtcp滑动窗口tcp流量控制tcp拥塞控制算法TCP半连接/全连接队列。]]></description><category></category></item><item><title><![CDATA[JUC学习部分随笔]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/132902189</link><guid>https://blog.youkuaiyun.com/mming520/article/details/132902189</guid><author>mming520</author><pubDate>Fri, 15 Sep 2023 14:56:07 +0800</pubDate><description><![CDATA[并发工具与实现AQS/CAS。]]></description><category></category></item><item><title><![CDATA[Spring Security OAuth2 授权码模式]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/132709405</link><guid>https://blog.youkuaiyun.com/mming520/article/details/132709405</guid><author>mming520</author><pubDate>Wed, 06 Sep 2023 10:16:17 +0800</pubDate><description><![CDATA[通过以上流程，授权码模式实现了安全地将访问令牌交给客户端应用程序，同时提供了用户的授权和认证过程，保护了用户的凭据和数据安全。]]></description><category></category></item><item><title><![CDATA[Spring Security OAuth2 密码模式]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/132663736</link><guid>https://blog.youkuaiyun.com/mming520/article/details/132663736</guid><author>mming520</author><pubDate>Mon, 04 Sep 2023 10:25:13 +0800</pubDate><description><![CDATA[大致的流程是：客户端去认证中心申请访问凭证token，然后认证中心对于客户端请求来的帐号密码进行验证，如果验证通过，则颁发token，返回给客户端，客户端拿着 token 去各个微服务请求数据接口，一般这个 token 是放到 header 中的。当微服务接到请求后，先要拿着 token 去认证服务端检查 token 的合法性，如果合法，再根据用户所属的角色及具有的权限动态的返回数据]]></description><category></category></item><item><title><![CDATA[如何手写动态代理实现数据库事务]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/132636769</link><guid>https://blog.youkuaiyun.com/mming520/article/details/132636769</guid><author>mming520</author><pubDate>Sat, 02 Sep 2023 12:37:31 +0800</pubDate><description><![CDATA[有了动态代理的技术，那么就可以在不修改方法源码的情况下，增强被代理对象的方法的功能，在方法执行前后做任何你想做的事情。动态代理类似于ioc，但具体的说动态代理编程方式符合AOP面向切面编程，动态代理就是，在程序运行期，创建目标对象的代理对象，并对目标对象中的方法进行功能性增强的一种技术。在生成代理对象的过程中，目标对象不变，代理对象中的方法是目标对象方法的增强方法。最后要有一个静态的获取代理对象的方法，利于在其他类中传入要代理的类class就可以获得代理对象实例，并执行调用。]]></description><category></category></item><item><title><![CDATA[如何手写一个简易的数据库连接池]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/132599847</link><guid>https://blog.youkuaiyun.com/mming520/article/details/132599847</guid><author>mming520</author><pubDate>Thu, 31 Aug 2023 11:40:58 +0800</pubDate><description><![CDATA[当应用程序需要连接数据库时，它会先向连接池请求连接，连接池会检查连接是否可用，如果有可用的连接，则返回给应用程序使用；如果没有可用连接，则连接池会创建新的连接，直到连接池中连接数量达到上限。当应用程序不再需要连接时，它会将连接返回给连接池，连接池将连接标记为可用状态，以便下一次请求时可以直接使用。同时，连接池还会对连接进行管理，包括连接的创建、销毁、监控和维护等，以保证连接池的可靠性和稳定性。]]></description><category></category></item><item><title><![CDATA[纯原生手写一个集转发，异常处理，参数转换，校验和鉴权为一体的简单请求转发器]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/132549495</link><guid>https://blog.youkuaiyun.com/mming520/article/details/132549495</guid><author>mming520</author><pubDate>Mon, 28 Aug 2023 22:22:02 +0800</pubDate><description><![CDATA[原先前端请求后端都是通过多个不同的servlet进行拦截操作，而随着业务的复杂，导致servlet数量过多，而且每个servlet都要继承HttpServlet进行重复性较高的工作，所以我们需要将HttpServlet抽离出来，让每个servlet变成普通的controller，专注与service交互不用过多关注req和resp，因此dispatchservlet就诞生了。]]></description><category></category></item><item><title><![CDATA[关于手写ioc容器实现依赖注入的过程和心得]]></title><link>https://blog.youkuaiyun.com/mming520/article/details/132521479</link><guid>https://blog.youkuaiyun.com/mming520/article/details/132521479</guid><author>mming520</author><pubDate>Sun, 27 Aug 2023 11:09:47 +0800</pubDate><description><![CDATA[再举一个具体的例子，如果注入的是某个接口的具体的一个实现类，现在因为业务需求需要扩展功能，以至于有多个实现类实现了该接口，此时要将其他实现类注入原先的上层代码，就会报错，这一点在单一实现类问题不大，而一旦业务复杂出现多个实现类或扩展功能，注入实现类的弊端就暴露无遗了，因此要遵循面向接口编程的原则，将实现类实例注入接口，接口作为实现类的依赖，根据里氏替换原则，注入的实现类实例可以完全代替接口的作用，从而达到易扩展可维护，低耦合的编程要求。随便提一下控制反转是一种思想，而依赖注入是实现的手段，两者并不等价。]]></description><category></category></item></channel></rss>