【暴风解析源码】【倒计时正数源码】【酒楼溯源码燕窝定制】小菜源码_菜谱小程序源代码

2024-11-18 23:38:49 来源:launcher2 源码分析 分类:休闲

1.从VVeboTableViewDemo到YYAsyncLayer(一)
2.21张图解析Tomcat运行原理与架构全貌💥通宵爆肝

小菜源码_菜谱小程序源代码

从VVeboTableViewDemo到YYAsyncLayer(一)

        知道 VVeboTableViewDemo 其实很久了,一直想研究一下,最近终于有时间了,将 VVeboTableViewDemo 用Swift做了一遍( VVeboTableViewDemo.swift ),小菜小程序源花了两个周对iOS优化的一系列文章通读了至少一遍,发现它们对优化的点总结的很散,而且大多不适合我这样的小菜。

列如这样的问题:

        首先看一下VVeboTableViewDemo的结构(由于我已经把它翻译成了Swift,我下面是用Swift版分析的,和原版的逻辑是一致的。)

        其中 DataPrenstenter 是我从 VVeboTableView 中抽离出来的,他其实就是读取数据的,你不用关心。

        以上这张图是 VVeboLabel 中所有的内容,高亮的那个方法是 VVeboLabel 的核心所在。

        这里属于Core Text技术,主要是对文本的特殊处理,采用了逐行绘制

        其余方法主要是对文本高亮和清除内容处理,不是重点,可以不关心。

        在 VVeboTableViewCell 中,高亮的方法为核心部分。其实同 VVeboLabel 的思想是一模一样的,就是将内容异步绘制在一张图上,然后显示出来,到达减少混合,以减小GPU压力。就不贴出源码,下面会放出Demo。

        这是一个设计很巧妙的类,在开始研究这个类的思路之前,我建议你看看这篇 文章 。当然如果你对 UIScrollView 足够熟悉,并且熟悉这个方法 func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) ,那么对 VVeboTableView 的思路可以一目了然了。

        该方法从 iOS 5 引入,在 didEndDragging 前被调用,当 willEndDragging 方法中 velocity 为 CGPoin.zero (结束拖动时两个方向都没有速度)时, didEndDragging 中的 decelerate 为 false,即没有减速过程, willBeginDecelerating 和 didEndDecelerating 也就不会被调用。反之,当 velocity 不为 CGPoin.zero 时,scroll view 会以 velocity 为初速度,减速直到 targetContentOffset 。值得注意的是,这里的 targetContentOffset 是个指针,没错,你可以改变减速运动的目的地,这在一些效果的实现时十分有用。

        以上文字 来源

        微信读书的那种横滑居中效果,除了重写 UICollectionViewFlowLayout ,

        也通过控制targetContentOffset就可以实现

        图中高亮方法为核心部分

        cell绘制判断逻辑

        以上 VVeboTableViewDemo 源码已经全部解析完成了,那么你在惊叹作者巧妙思路的同时,肯定也很想知道这种技术的来源,和改进过程。(以下为个人猜想)

        通过本文,我觉得应该了解Core Text、Core Graphics、Hit-Test View、异步绘制这几项内容,你可以通过以下推荐的文章来掌握前三种技术,异步绘制在下一节YYAsyncLayer源码分析中,我相信你不知不觉就掌握了这项技术。

        最初来源

        这种技术的出现是为了减轻GPU的压力,因为图层的混合是GPU做的,而在这是CPU几乎是没事可做的,所以吧GPU的混合移到CPU的 func draw(_ rect: CGRect) 去完成需求。

        此技术的demo fastscrolling

        技术淘汰原因

        由于retina屏幕的出现,原来单位面积的像素增加,而CPU做的事情也变得多了起来,导致效率反而不及subViews方法。

        AsyncDisplayKit YYKit 等新技术出现

        我觉得VVeboTableViewDemo 的出现应该也是遵循以上过程的

        Core Text:

        Swift之CoreText排版神器

        官方文档

        Core Graphics:

        iOS绘图教程

        Swift之你应该懂点Core Graphics

        官方Demo

        官方Demo Swift版本

        Building Concurrent User Interfaces on iOS

        响应链

        iOS事件响应链中Hit-Test View的应用

        iOS 事件处理 | Hit-Testing

        异步绘制

        /ios-concurrency/

张图解析Tomcat运行原理与架构全貌💥通宵爆肝

       早年间,小菜同学在Tomcat上通过继承HttpServlet进行CRUD操作,源码后来引入Spring MVC框架的菜谱DispatcherServlet,使操作更加便捷。代码现今,小菜小程序源随着Spring Boot框架的源码暴风解析源码内嵌,小菜能够更专注地进行CRUD操作,菜谱而无需过多关注服务器和框架的代码细节。保持专一原则,小菜小程序源小菜对服务器和框架始终保持谨慎态度。源码

       某日,菜谱小菜的代码倒计时正数源码程序突然无法运行,面对困境,小菜小程序源小菜并未选择“逃跑”,源码而是菜谱决定深入研究中间件的运行原理,通过层层解析,逐步揭开了Tomcat等中间件的核心设计。

       架构解析

       Tomcat作为Java实现的Web服务器,是Java Web开发中流行的选择之一。本文作为解析Tomcat系列的第一篇,将带你深入探索Tomcat的运行流程,揭示其高效设计的核心组件。

       处理网络请求是酒楼溯源码燕窝定制Web服务器的基础,Tomcat也不例外,从网络通信到业务处理,每个步骤都精心设计,以实现高效运行。

       连接器

       处理网络通信的连接器是Tomcat的重要组成部分,它负责获取Socket、解析协议以及封装请求/响应等关键任务。具体实现包括EndPoint、Processor和ProtocolHandler。

       EndPoint

       EndPoint负责点对点的通信,通过Socket处理网络通信。传奇忘忧版本源码尽管在Tomcat 9中并未直接提供接口,而是通过抽象类实现,实际上提供了两种具体实现:用于不同IO模型的EndPoint。

       Processor

       Processor组件负责解析协议,将网络流解析为Tomcat封装的请求和响应对象。通过不同的实现类,如AbstractProcessor、UpgradeProcessorBase,Tomcat能够支持HTTP、AJP等协议。

       ProtocolHandler

       ProtocolHandler将动态变化的免费茶楼网站建站源码EndPoint和Processor组合起来,负责网络通信的Socket获取和流解析。虽然在设计上采用继承的方式,但实际应用中,只有四个组合实现。

       Adapter

       Adapter组件作为适配器,将Processor解析得到的请求/响应转化为Servlet中定义的格式,便于后续容器的处理。虽然实现相对固定,但其作用至关重要。

       线程池

       多路复用IO模型下,线程池用于管理监听任务和后续处理任务,确保高效执行。尽管EndPoint涉及线程池,但Tomcat实现的线程池并非JUC下的标准实现。

       多连接器

       尽管Tomcat支持多个不同连接器的并行处理,但实际应用中通常使用默认配置,如HTTP、NIO和端口。增加连接器时,端口和协议将自动匹配处理。

       容器

       容器层设计为多级父子结构,包括Engine、Host、Context和Wrapper,实现灵活扩展和高效管理。每个层次的容器通过标准实现和扩展实现,提供稳定的运行环境。

       Mapper

       Mapper组件负责请求路由,解析HTTP请求并将其映射到相应的容器层。在多级容器中,Mapper组件通过map方法解析请求,简化了路由逻辑。

       PipeLine-Valve

       为了实现灵活扩展,Tomcat使用PipeLine和Valve组件构建职责链模式,每层容器从First开始,到Basic结束,实现高效且可扩展的请求处理流程。

       其他组件

       除了核心组件,Tomcat还提供类加载器、session管理器等辅助组件,用于维护Web服务器的正常运行。每个组件都精心设计,确保系统的稳定性和高效性。

       在Tomcat的设计中,从连接器到容器,再到其他辅助组件,都体现了面向对象设计原则和现代软件架构的最佳实践,如职责链模式、观察者模式等,使得系统在复杂环境中保持高效稳定。

       本文仅概要介绍了Tomcat的核心架构和主要组件,未来将深入源码分析,全面解析Tomcat的运行原理。关注专栏,持续了解更多精彩内容。

本文地址:http://8o.net.cn/news/11d151698472.html 欢迎转发