学习笔记

如何对 React 函数式组件进行优化

文章首发个人博客 前言 目的 本文只介绍函数式组件特有的性能优化方式,类组件和函数式组件都有的不介绍,比如 key 的使用。另外本文不详细的介绍 API 的使用,后面也许会写,其实想用好 hooks 还是蛮难的。 面向读者 有过 React 函数式组件的实践,并且对 hooks 有过实践,对 useState、useCallback、useMemo API 至少看过文档,如果你有过对类组件的性能优化经历,那么这篇文章会让你有种熟悉的感觉。 React 性能优化思路 我觉得React 性能优化的理念的主要方向就是这两个: ...

一文带你深入了解 Redis 的持久化方式及其原理

Redis 提供了两种持久化方式,一种是基于快照形式的 RDB,另一种是基于日志形式的 AOF,每种方式都有自己的优缺点,本文将介绍 Redis 这两种持久化方式,希望阅读本文后你对 Redis 的这两种方式有更加全面、清晰的认识。 RDB 快照方式持久化 先从 RDB 快照方式聊起,RDB 是 Redis 默认开启的持久化方式,并不需要我们单独开启,先来看看跟 RDB 相关的配置信息: ################################ SNAPSHOTTING ################################ ...

Netty学习篇⑤--编、解码源码分析

前言 学习Netty也有一段时间了,Netty作为一个高性能的异步框架,很多RPC框架也运用到了Netty中的知识,在rpc框架中丰富的数据协议及编解码可以让使用者更加青睐; Netty支持丰富的编解码框架,其本身内部提供的编解码也可以应对各种业务场景; 今天主要就是学习下Netty中提供的编、解码类,之前只是简单的使用了下Netty提供的解码类,今天更加深入的研究下Netty中编、解码的源码及部分使用。 编、解码的概念 编码(Encoder) 编码就是将我们发送的数据编码成字节数组方便在网络中进行传输,类似Java中的序列化,将对象序列化成字节传输 ...

Thrift总结(四)Thrift实现双向通信

前面介绍过 Thrift 安装和使用,介绍了Thrift服务的发布和客户端调用,可以查看我之前的文章:https://www.cnblogs.com/zhangweizhong/category/1006119.html 但是,之前介绍的都是单向的客户端发送消息,服务端接收消息。而客户端却得不到服务器的响应。 那如果我们要实现双向通信(即:客户端发送请求,服务端处理返回,服务端发送消息,客户端处理返回)的功能,该怎么实现呢? 其实在不涉及语言平台的制约,WebService或是webapi 就可以实现这种客户端发起请求,服务端的处理的单向流程。 ...

一文看懂 K8s 日志系统设计和实践

作者 | 元乙 阿里云存储服务技术专家 导读:上一篇文章《6 个 K8s 日志系统建设中的典型问题,你遇到过几个?》中我们介绍了为什么需要一个日志系统、为什么云原生下的日志系统如此重要以及云原生背景下日志系统的建设难点,相信 DevOps、SRE、运维等同学看了之后深有体会。本篇文章单刀直入,会直接跟大家分享一下如何在云原生的场景下搭建一个灵活、功能强大、可靠、可扩容的日志系统。 需求驱动架构设计 技术架构,是将产品需求转变为技术实现的过程。对于所有的架构师而言,能够将产品需求分析透彻是非常基本也是非常重要的一点。很多系统刚建成没多久就要被推翻,最根本的原因还是没有解决好产品真正的需求。 ...

打造最可靠的自动驾驶基础架构

文章作者:莫璐怡 Pony.ai 编辑整理:Hoh Xil 内容来源:Pony.ai & DataFun AI Talk 出品社区:DataFun 注:欢迎转载,转载请在留言区留言。 导读:本次分享的主题为打造最可靠的自动驾驶基础架构。主要内容包括如何做 Pony.ai 自动驾驶系统的基础架构,涉及到的技术困难,以及我们是如何克服的。 file 首先先了解下传统互联网公司的基础架构: 数据基础设施,会包括大规模的数据库、分布式的文件系统; 计算平台,可能会需要大量的服务器、大数据平台、容器的管理机制; ...

netty源码解析(4.0)-29 Future模式的实现

Future模式是一个重要的异步并发模式,在JDK有实现。但JDK实现的Future模式功能比较简单,使用起来比较复杂。Netty在JDK Future基础上,加强了Future的能力,具体体现在: 更加简单的结果返回方式。在JDK中,需要用户自己实现Future对象的执行及返回结果。而在Netty中可以使用Promise简单地调用方法返回结果。 更加灵活的结果处理方式。JDK中只提供了主动得到结果的get方法,要么阻塞,要么轮询。Netty除了支持主动get方法外,还可以使用Listener被动监听结果。 ...

Mybatis精讲(二)---生命周期

目录 回顾 SqlSessionFactoryBuilder SqlSessionFactory openSessionFromDataSource Executor SqlSession Mapper 总结 # 加入战队 微信公众号 回顾 上一章节我们通过xml和代码的方式实现了Mybatis环境的配置。代码方式只是简单介绍下。我们也知道我们大部分情况使用的是xml方式的配置。在实际开发中我们那样开发显然是不合理的。 上章节提到的组件显示不可能每次执行sql都要重新创建的。这样性能上肯定是过不去的。今天我们就来简单聊聊SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper这些组件的生命周期吧。 ...

django学习与实践

 Django简介​ Django是一个由Python写成的开放源代码的Web应用框架,它最初是被用来开发管理劳伦斯出版集团旗下的一些以新闻内容为主的网站,即CMS(内容管理系统)软件。 并于2005年7月在 BSD 许可证下发布。这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt 来命名的。由于 Django 的是在一个快节奏的新闻编辑室环境下开发的,它的目的是使常见的 Web 开发任务,快速和容易。...
青岛软件培训

可能你正在寻找一家靠谱的IT培训机构,学习一些专业的软件开发技术,找一份得体的工作。恰巧我们就是一家踏踏实实做教育的IT人才培养机构,我们咨询电话是 0532-85025005,如果你确实对IT感兴趣,我们不妨交流一下。

申请免费试听课程