保存成功
保存失败,请重试
提交成功

Web 应用性能调优与架构入门

2003 ~ 2008 年,这五年老兵哥我在通信行业做实习生和开发岗,主要用 C / C++ / MFC 开发嵌入式 / 服务器 / 桌面等应用程序,期间做过大量代码重构优化,但很少涉及性能调优,要么我负责的局部无需考虑并发访问和海量数据,要么网管平台仅供客户内部人员使用,不存在并发访问和海量数据。2008 年底,老兵哥我跳槽到了移动互联网做技术经理,随后五年主要用 Java / C++ 开发 Web / 服务器等互联网应用。 当时,架构师这个岗位在业界还是很罕见的,不懂预估并发用户、业务数据等规模,自然就预见不到后续并发访问和海量数据会带来巨大的性能挑战。我们赶着工期把功能需求实现、业务流程跑通,然后就上线了,但移动互联网爆发的那些年业务增长非常快,系统上线不久就遇到性能问题了,其现象就是原来耗时很短的操作现在动不动就超时,或者界面刷不出来数据等等,巨大的压力跟着客户投诉一起摆到了我面前。 性能调优任务不像普通开发任务,它需要背负业务、时间和难度等多种压力。罗马不是一天建成的,导致性能问题的原因错综复杂,当时老兵哥我也不知道从何处下手,找不到解决问题的切入点。好性能不是调优出来的,更多是设计出来的。只有经历过性能调优,才能体会这句话的真谛。性能调优,其实就是对承载业务的现网系统做重构优化,就像是边开车边换轮胎,它所需要的技能跟代码重构完全不在一个层级上。 现在老兵哥我知道,性能是系统性问题,性能调优离不开架构视角。不识庐山真面目,只缘身在此山中。当你陷在具体的、局部的问题当中,你是无法找到解决问题的思路的。你必须从实现细节跳脱出来,从更加宏观全局的视角来梳理业务流程,就像另一篇 Chat[《图解 Spring Cloud:HTTP 请求的处理流程与机制》](https://gitbook.cn/m/mazi/activity/5d82f91c92b6fc25da79965a)的剖析过程类似,然后以业务流程为线索分析每个环节存在的性能瓶颈原因,这样你就不再困惑了。 当每个环节潜在问题梳理出来之后,根据资源、时间等外部限制,按照帕累托二八原则,你可以决定优先解决哪些问题,从而有条不紊地化解性能压力了。随着在性能调优上的经验不断丰富,你就越来越有信心掌控更大规模的系统了。更值得高兴的是,当你费老牛劲把这些自己挖的巨坑填上后,你就记得下次不要再给自己挖坑了,也就懂得怎样设计一个高性能的互联网系统了,这不就是从开发跃迁至架构的契机吗? 性能调优,是从开发岗跃迁至架构岗的拦路虎。升级思维的过程是痛苦的,尤其是在背负压力下的被动升级,跳出原先的舒适区,进入更大的舒适区,这样才能站上新平面。记得当时老兵哥我还有不少负面情绪,回顾过往才懂得要感谢当时的领导给我这份压力,逼迫我高强度学习并突破了旧的思维,机会和挑战是并存的。现在老兵哥我把这些调优经验和架构视角梳理出来供转型升级的你参考,希望帮你少走些弯路: * 性能优化的 X Y Z 三维度视角 * 从 X 维度优化业务的交互设计,包括业务规则、交互设计等 * 从 Y 维度优化系统的处理流程,包括 Web 容器、Spring、ORM、数据库等 * 从 Z 维度优化系统的技术堆栈,包括操作系统 OS、Java 虚拟机 JVM 等 * 数据访问层性能调优案例详解,包括 SQL、 Hibernate、JProfiler 等 * 性能优化当中蕴藏的架构思维 适合读者:计划转型升级的开发、测试、运维等
https://images.gitbook.cn/7ed1bdd0-7773-11e9-befb-31bb655545e5?imageslim?imageView2/2/h/220IT老兵哥 · 架构专家/培训讲师
1 订阅

性能测试中的服务器监控

服务器监控是性能测试中必不可少的一环,对于测试工程师而言,只有在了解 监控的相关操作原理和方法,才能更好的进行性能测试,能有效的提升在测试行业的专业技能 本场 Chat 首先会带领大家了解学习服务器监控的多种途径和方式的功能,帮助大家对监控做到知其然,并知其所以然。 本场 Chat 您将学到如下内容: 1. 服务器的监控目的和意义 2. 服务器监控的重要性 3. 服务器监控的过程及监控内容 4. 如何进行服务器监控 - Top 监控详解 - iostat 监控详解 - iotop 监控讲解 - 如何使用 Nmon 进行监控及监控详解 - 如何使用 Spotilght 进行监控及监控详解
https://images.gitbook.cn/469735c0-a90b-11e9-9fc9-a9e87bbfaf6d?imageslim?imageView2/2/h/220我的女王别低头 · 测试工程师
9 订阅

管理好一个部门,你也行!

作为研发技术骨干、技术 Leader、产品经理、项目经理、架构师等角色的您,可能突然有一天,公司将一个部门交到您的手上,兴奋之余是否有些忐忑?如何管理这样一个部门?如何凝聚部门的力量,让部门业务及产出更上一个台阶,让部门在公司得到更多的肯定,让团队更有成就感。 作为团队主管的您,是否感觉到,自从担任了部门主管后,您更加的忙碌,时间更加碎片化,曾经的您技术出色,绩效优秀,然而带一个团队同样取得佳绩并非易事,怎样梳理部门定位,厘清部门规划,管理一个部门有哪些工具及套路? 本场 Chat,作者通过自己多年部门管理实践及实例,帮您建立部门管理的基本框架及套路: 1. 转变角色:从独立贡献者转向团队管理者; 2. 管什么:抓业务、领技术、带队伍、做决策; 3. 如何管:部门业务定位、核心价值是什么?近一年、未来一年的业务重点时什么? 4. 管得好:技术管理者需掌握好几个平衡(人&事、技术&管理、执行&管理&领导、项目&非项目、能改变&不能改变)、一个聚焦(产出); 5. 实用工具:平衡计分卡、建立人与人的连接、授权及后备培养、坦诚、能力意愿矩阵、多种沟通形式等。
https://images.gitbook.cn/4a9f8870-8057-11e9-93b7-c1dbf6e85772?imageslim?imageView2/2/h/220曹园 · 研发经理
17 订阅

中文词向量:Word2vec 从熟悉到入门

Word2vec 也叫 Word Embeddings,中文名“词向量”,作用就是将自然语言中的字词转为计算机可以理解的稠密向量(Dense Vector)。在 Word2vec 出现之前,自然语言处理经常把字词转为离散的单独的符号,这种编码方式称为 One-Hot Encoder。 在自然语言处理领域也就是在 Bert 跟 Xlnet 模型出现以前(2019 年是 NLP 领域突飞猛进的一年,Bert 模型采用根据上线文语义动态训练字向量的方式,具有更多的泛化性),几乎所有的训练深度学习模型都采用训练词向量的方式,Word2vec 使用最多。虽然 Bert 模型力压传统深度模型,但是由于 Bert 模型的参数多、体量大等原因,并不能被广泛使用。 在本次 Chat 中,您将学习到: 1. Word2vec 模型架构解析 2. Jieba 分词原理详解 3. Skip-gram 原理详解 4. Demo1:使用 Skip-gram 训练词向量 5. CBOW 原理详解 6. Demo2:使用 CBOW 训练词向量 7. 词向量的两种保存方式 适合人群:对 AI 领域有着浓厚的兴趣,致力于从事中文自然语言处理的学员。
https://images.gitbook.cn/0ead4540-0dbc-11e9-b30a-ebedb297af02?imageslim?imageView2/2/h/220戎码一生 · NLP算法工程师
9 订阅

由浅入深,彻底搞定正则表达式

正则表达式在实际开发中,运用广泛,比如我们会经常对输入做校验:手机号、邮箱、IP 地址等等,以及在爬虫中解析网页信息等等。 然而面对正则表达式,我们往往感到头大不已。毕竟写正则一时爽,读起来如天书。 本场 Chat 将带领大家彻底搞懂正则表达式,从简单的例子入手,一步步加深,最终彻底了解正则表达式的使用。然后结合具体实例进行分析,加深理解。 在本场 Chat 中,您将学到如下内容: 1. 由浅入深,无痛苦学习正则表达式的基本用法 2. 结合具体实例分析正则表达式 3. 具体示例演示代码中如何使用正则表达式(包括 Java、Python、JS) 4. 如何通过正则表达式提取网页中的信息
https://images.gitbook.cn/27f05710-b387-11e9-89f4-5ff5de72dccb?imageslim?imageView2/2/h/220ZYLAB · 开发工程师
12 订阅

Android 的触摸事件传递机制,把它彻底搞懂

Android 的触摸事件传递机制说复杂也复杂,说简单它也简单,正所谓难者不会,会者不难。现在网上也存在着一些技术博客来讲解 Android 的触摸事件传递,但是总是感觉差点意思,读完以后往往还是云里雾里,当真正自己去使用的时候就又都忘光了。原因很明显,是没有彻底搞懂触摸事件传递到底是怎么工作的。 本篇文章主要是将源码的解读和具体实践相结合,期望以最直接了当的方式告诉读者,View 的触摸事件传递到底是怎么完成的,以便在今后的开发工作中,读者不用再重复地去学习这个知识点的内容。 看完本篇你将收获的知识: - 这篇文章很纯粹,就是单纯将 Android 的触摸事件传递剖开解析,所以学完后你将会对这个知识点有较深入的理解。
https://images.gitbook.cn/9fcae460-ee71-11e9-a766-4bbeccc8d26c?imageslim?imageView2/2/h/220iCoder · 高级研发工程师
8 订阅

程序员必须懂的架构入门课

程序员,真有必要了解架构吗?在解答这个疑惑之前,我们先来看一则故事: 旅行者路过某个工地,建筑工人们都在忙碌。出于好奇,旅行者问第一个人在干什么,那人头也没抬地回答道:我在搬砖。旅行者问第二个人在干什么,这个匆匆抬起头认真地说:我在砌墙。旅行者问第三个人在干什么,那个人脸上充满了光彩,很自豪地说:我在建造圣索菲亚大教堂,将福音传播给更多人! 有的人只关注眼下的“点”,有的人看到了延伸的“线”,还有人畅想出未来的“面”。就像在丛林中穿越,当你迷路找不到方向时,最好的办法就是登上山顶或者爬上树冠,让自己有更宽广的视野,从而找到通往目的地的最佳路径。既要脚踏实地、低头赶路,也要抬头望天、畅想未来,正确的方向比速度更重要! 接下来,我们再来看看架构跟你的“点、线、面”关系: 点:跟垒土坯房不同,建造摩天大楼离不开各式各样的设计图纸,我们构建复杂的应用系统也离不开架构设计。相信你所在的团队也配了架构角色,或由资深开发兼任,或由专职架构负责。不管你从事哪方面工作,包括产品、开发、测试、运维或项目等,你都要跟架构师打交道,例如:产品可研、概要设计、技术选型、详细设计、测试规划、部署规划、问题解决、招聘面试等等。如果对架构缺乏了解,那你就不清楚你跟架构师之间的协作界面,不知道架构师能给你提供哪些支持或帮助,不知道如何跟架构师高效地协作。如果只关心自己眼前的一亩三分地,那你很容易就滞留在“搬砖”层级。 线:中年危机,35 岁定律,这些命题对于你来说都是客观存在的。随着 IT 技术的不断更新换代,普通程序员在市场上竞争力跟年龄成反比,除非你能提前构建出转型升级所需的新技能树。如果沿着技术通道发展,可选的晋升方向有两个:技术专家,扎根于某个垂直的技术领域,往纵深发展;架构专家,构建出更加全面的技术体系,往广博发展。虽然进化方向不同,但殊途同归,最终你战胜危机、突破自我,晋升到更高的职位,获得了更好的薪酬。如果你的性格特质更适合往架构方向发展,那你有必要提前了解架构师的主要职责和必备技能。十年磨一剑,五年小成,十年大成,转型升级所需的专业技能不是一朝一夕就能练就的。如果你现在就主动筹备 35 岁这场战役,那你很容易从“搬砖”跃迁至“砌墙”。 面:学而优则仕,即使修炼成了技术大神,但个人能量总归是有限的,管理岗是所有通道的终极进化方向,只有带领更多人,你才能做更大的事。在互联网行业,“科技是第一生产力”体现的最为淋漓尽致,不管往产品还是管理发展,拥有深厚技术背景都是你的优势。架构师,从某种角度看,就是全面了解各种技术或中间件的优劣,然后让它们在你所设计的方案中扬长避短、优势互补,发挥出最佳的合作效用。这跟产品维度的业务架构、管理维度的组织架构有异曲同工之妙,等你从技术架构中学习到知人善任、调兵遣将、排兵布阵等道理,那你就可以站上更高的平“面”了,从“砌墙”跃迁至建造宫殿。 25 岁入行搬砖,30 岁前担任技术经理,兼职架构,35 岁前转型架构专家,一路走来,老兵哥我积累了大量开发转型架构、架构\培训\咨询等实战经验。近些年我开始整理输出,曾面向初中级程序员开设过多门面授架构课程,累计参训学员超千人,颇受好评。现在借助网络分享平台,老兵哥我把初中级程序员关注度最高的这些问题梳理出来,结合个人实战经历分享给需要的你,欢迎订阅: * 架构到底是什么?它都有什么作用? * 架构的演进过程,不同架构的特点? * 架构风格、模式、框架的相互关系? * 架构设计的输入、输出和工作流程? * 不同岗位应该关注架构的哪些方面? * 是否有标准来评价架构设计的优劣? * 架构师核心职责和必备能力有哪些? * 哪些特质适合往架构专家方向发展? * 架构专家需要搭建怎样的知识体系? * 如何从资深开发成功转型架构专家? * 架构师之后有哪些可选的发展方向? 适合读者:初中级开发、测试、运维或产品等
https://images.gitbook.cn/7ed1bdd0-7773-11e9-befb-31bb655545e5?imageslim?imageView2/2/h/220IT老兵哥 · 架构专家/培训讲师
37 订阅

Apache Beam 大数据处理一站式分析

随着大数据 2.0 时代悄然到来,大数据从简单的批处理扩展到了实时处理、流处理、交互式查询和机器学习应用。近年来涌现出诸多大数据应用组件,如 HBase、Hive、Kafka、Spark、Flink 等。开发者经常要用到不同的技术、框架、API、开发语言和 SDK 来应对复杂应用的开发,这大大增加了选择合适工具和框架的难度,开发者想要将所有的大数据组件熟练运用几乎是一项不可能完成的任务。 面对这种情况,Google 在 2016 年 2 月宣布将大数据流水线产品(Google DataFlow)贡献给 Apache 基金会孵化,2017 年 1 月 Apache 对外宣布开源 Apache Beam, 提供了一套统一的 API 来处理两种数据处理模式(批和流),让我们只需要将注意力专注于数据处理的算法上,而不用再花时间去维护两种数据处理模式上的差异。 在本场 Chat 中,会讲到如下内容: 1. 介绍 2. 编程模型 3. PCollection 4. Pipeline 5. Transform 6. Pipeline I/O 7. 自定义 IO 8. 到处运行 9. 单元测试 10. 离线计算 11. 实时计算 12. 引擎源码分析 13. 调优 14. 总结 适合人群: 对数据处理感兴趣的技术人员
https://images.gitbook.cn/25ea9080-5a90-11e8-bc71-a1900e44dde0?imageView2/1/w/200/h/200李孟 · 大数据工程师
15 订阅

深入浅出卷积神经网络

在泛函分析中,卷积(Convolution)是通过两个函数 f 和 g 生成第三个函数的一种数学算子,表征函数 f 与 g 经过翻转和平移的重叠部分的面积,其物理意义是一个函数在另一个函数上的加权叠加(离散的情况)或者积分(连续的情况)。这个加权叠加(积分)很不简单,它描述了一个动态过程,表达了系统不断衰减同时又不断受到激励的综合结果。 本 Chat 就带着大家学习卷积网络的核心原理及核心概念,认识卷积网络并使用 Pytorch 实现一个简单的卷积神经网络。包含以下内容: - 卷积过程及其物理意义 - 卷积过程在神经网络中的应用 - stride 和 padding - 膨胀卷积神经网络 - Pooling 池化 - 小试牛刀:基于 Pytorch 实现一个简单的卷积神经网络 - 设计卷积神经网络 - 定义并实现卷积网络 - 训练模型及模型性能评估 - 理解 CNN 在学什么 - 加载数据 - 定义模型 - 训练模型 - CNN 中间结果可视化 - Vgg16 迁移学习 - 神经网络权重可视化
https://images.gitbook.cn/8839b860-3299-11e9-b7a1-652d8b9269a1?imageslim?imageView2/2/h/220奔跑的小米 · 架构师
卷积网络 · 17 订阅

你知道这些深度学习核心概念吗?

基础决定上层建筑,本 Chat 围绕常见的激活函数、不同的优化算法、不同损失函数优缺点及适用场景等基础内容,带大家逐步深入了解和学习深度学习。基础决定高度,而不是高度决定基础。 本 Chat 的主要目的是带大家读懂深度学习概念,穿过常见的认知误区,更好的拥抱深度学习,本 Chat 包含以下内容: - 什么是激活函数以及常见的激活函数有哪些? - Sigmoid - Tanh - Relu 及其变形 - MaxOut - 损失函数的定义和常见的损失函数及使用场景? - L1 范数损失 - MSE 均方误差损失 - BCE 二分类交叉熵损失 - CrossEntropyLoss 和 NLLLoss 损失 - KL 散度损失 - 余弦相似度损失 - 多分类多标签损失 - 优化器的变迁及算法思想 - BGD - SGD - MBGD - Momentum - NAG - Adagrad - Adadelta - Adam
https://images.gitbook.cn/8839b860-3299-11e9-b7a1-652d8b9269a1?imageslim?imageView2/2/h/220奔跑的小米 · 架构师
深度学习 · 11 订阅

送卫衣:GitChat 1024 留言有奖活动来啦!

#### 主题 <p style="color:#FF0000">Chat 内容下方留言,<strong>1024 程序员节你想对自己说什么?</strong> 留言收获点赞最多的八位同学有奖哦。</p> #### 参与方式 **下拉本页,点击「免费订阅」,再点击「查看文章」,文章页下拉评论框留言即可。** #### 活动规则 我们将从留言中抽取 8 位同学,满足以下条件的同学将会获得 GitChat 独家定制周边礼物。 - 点赞最高的前 3 位同学获得价值 259 元的 GitChat 定制卫衣 - 点赞最高的前 4 位到 8 位同学获得价值 59 元的 GitChat 定制鼠标垫 <img style="width:300px" src="https://images.gitbook.cn/14aeb930-f3a1-11e9-8d4c-db1b52269b3e" alt="GitChat 定制卫衣鼠标垫"> 中奖公布时间 2019 年 10 月 26 日上午 10 点 24 分
https://images.gitbook.cn/574b0840-c253-11e9-9271-07e402cbd35b?imageslim?imageView2/2/h/220GitChat 内容组 · 首席内容官
程序员 · 知识付费 · 274 订阅

大白话 5 分钟带你走进人工智能:神经网络之 Tensorflow 的前世今生和 DAG 原理图解

神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。而 Tensorflow 是深度学习的重要语言,DAG 原理图有助于更好的理解 Tensorflow 的设计思想。 我们的愿景是打造全网 AI 最通俗博客,赠人玫瑰,手有余香,在人工智能前行的路上一起前行。以通俗简介的方式,让每一位热爱着深入其中。 在本 Chat 中,你将收获如下内容: 1. Tensorflow 框架简介 2. 安装 Tensorflow 3. 核心概念 4. 代码实例和详细解释 5. 拓扑图之有向无环图 DAG 6. 其他深度学习框架详细描述 - Caffe 框架 - Theano 框架 - Keras 框架
https://images.gitbook.cn/20bf2320-f402-11e9-8751-932b0cfe014b?imageslim?imageView2/2/h/220L先生AI课堂 · 高级算法工程师
人工智能 · 神经网络 · 10 订阅

前后端联调 Mock 方案

前后端联调过程中,通常我们只需要联调变更过的接口,但是往往因为开发环境维护力度不够,依赖的一些接口常常没有部署或开发完成,这时会严重影响联调效率。在本场 Chat 中,分享了本人在日常工作中使用到的一种 Mock 方案:首先为不可访问的接口创建 Mock 服务,然后通过 Nginx 将前端请求转发到 Mock 服务上,提高了联调效率。 * 前后端联调案例介绍 * 创建 Mock 服务 * 安装 Nginx 及开启 https 服务 * 修改 Nginx 配置将请求转发至 Mock 服务
https://images.gitbook.cn/9da9af20-c92f-11e9-aa85-efd57dc1796c?imageslim?imageView2/2/h/220七星海棠 · 工程师
43 订阅

大白话 5 分钟带你走进人工智能:神经网络之反向传播详细案例及解释

神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。而 反向传播是神经网络的核心原理,了解 反向传播的具体细节,会对以后在深度学习里面的探索起到触类旁通的重要作用。 我们的愿景是打造全网 AI 最通俗博客,赠人玫瑰,手有余香,在人工智能前行的路上一起前行。以通俗简介的方式,让每一位热爱着深入其中。 在本 Chat 中,你将收获如下内容: 1. 反向传播前述 2. 第一个案例解说反向传播 3. 通用案例形式 4. 逻辑回归案例 5. 总结 适合人群: 对神经网络有兴趣,想探索深度学习领域的技术人员。
https://images.gitbook.cn/20bf2320-f402-11e9-8751-932b0cfe014b?imageslim?imageView2/2/h/220L先生AI课堂 · 高级算法工程师
人工智能 · 神经网络 · 4 订阅

基于 Python 的 DNF 图形辅助工具

地下城勇士已经走过十几个年头,但如今仍然火爆,市面上的 DNF 辅助五花八门,近期结合自己专业,完成了基于 Python 的 DNF 图形辅助工具,本教程将会从纯技术角度,使用 Python 一步步带大家完成 DNF 中英雄冢副本的图形辅助工具,经测试该副本过图时间为 3-5 分钟。本话题的开发方式不局限于开发语言,也可以用 C++、Java 等语言实现。 在本场 Chat 中,会讲到如下内容: 1. DNF 中 NPK 图形插件的制作和使用 2. 模拟鼠标点击的几种方法 3. 如何快速的截取指定 exe 的图片 4. Python下的图形图色检测方法 5. Python下行为逻辑代码编写(打怪、捡物品、找门) 适合人群: 所有开发人员、游戏爱好者
https://images.gitbook.cn/a06ce4d0-df8b-11e9-a4f6-61e41c5ed441?imageslim?imageView2/2/h/220lewis · 工程师
22 订阅

Mac 下 MongoDB 的安装、配置和使用

MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便。 本文主要介绍了 Mac 下如何安装、配置和使用 MongoDB。
https://images.gitbook.cn/078a91c0-f2f2-11e9-af25-a388aab04ef4?imageslim?imageView2/2/h/220🇱 🇦 🇾 🇯 🇴 🇾 · 工程师
MongoDB · 8 订阅

微服务 API 文档自动生成实战(基于 Swagger 可生成 PDF/MD/Asciidoc/HTML 等)

现在互联网最流行的技术架构就是微服务架构了,在微服务架构体系中,很多业务被拆分成不同的服务,每个人负责一个或多个服务开发,然后使用前后端分离技术,这时候前后端开发之间的沟通成本就比较大了, 加上对外输出 API 能力,也需要接口文档输出。本课程教您自己开发一个 API 文档生成工具。 在本场 Chat 中,会讲到如下内容: - Spring Boot 集成 Swagger - Swagger 常用注解介绍 - 通过 swagger2markup maven 插件生成 Asciidoc 文档 - 通过 asciidoctorj maven 插件生成 HTML/PDF 文档 - 通过代码方式生成 Asciidoc/MD - 通过代码方式 生成 PDF/HTML - PDF 格式中文乱码/缺失问题解决 - API 文档自定义中文配置 - 开发一个整合生成文档的 API 工具服务
https://images.gitbook.cn/8c5b1210-3d65-11e8-b68f-8509507bdda5?imageslim?imageView2/2/h/220菠萝炒辣条 · 架构师
33 订阅

自定义 View(绘制浅析)

View 作为直接参与用户交互的组件,在我们的日常工作中占有重要地位,无论是响应用户事件抑或向用户传递数据信息都需要借助于 View ,在 Android 系统中为我们预设了诸多 View 以供我们实现期望的 UI 效果,诸如 TextView , ImageView 等,但是随着智能设备的发展,Android 原生预设的控件越来越难以满足我们缤纷多彩的 UI 设计稿了,那么此时我们就需要学习如何自己实现 UI 指定的界面效果,也就是本场 Chat 的主题-----自定义 View 。 在本场 Chat 中,我们将通过实践案例学习到: 1. View 简介及生命周期 2. 自定义 View 的一般步骤 2. 能根据 UI 效果图选择自定义 View 实现方式 3. Canvas、Path、Paint 等自定义 View 类的使用 4. LinearGradient 等渲染 Shader 5. 文本绘制基础, PorterDuffXfermode 使用等 适宜人群:初中级 Android 开发工程师及有 Android 开发经验的全栈工程师
https://images.gitbook.cn/7555a150-ba22-11e7-84ca-93481356774f?imageslim?imageView2/2/h/220落 · Android开发工程师
25 订阅

CI/CD 流程以及原理说明

自动化部署 CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)。 本 Chat 将从流程以及原理入手到实战演练,技术栈/关键词: - Gitlab-CI - Docker - Maven - Google Jib - Nexus 适宜人群 - 微服务架构工程师 - Java 开发人员
https://images.gitbook.cn/8856d2d0-ce14-11e9-bdf7-7924fedc9f4e?imageslim?imageView2/2/h/220低调小熊猫 · 工程师
GitLab CI · 88 订阅

万字 Spring Cloud Gateway2.0,面向未来的技术,了解一下?

本文将从知识拓扑讲起,谈一下 API 网关的功能,以及 Spring Cloud Gateway 的使用方法。文章很长,可以先过一下目录。 1. 知识拓扑 (使用和原理) 2. 网关的作用 3. Predicate,路由匹配 4. Filter,过滤器编写 5. 自定义过滤器 6. 常见问题 为什么很多人觉得 Spring Cloud Gateway 难用?因为它的背后用的是 `webflux`,涉及到响应式编程,而不是传统的过程式编程。 **我们把背后的技术梳理一下,不难发现,这个晦涩的根源,就来自于Project Reactor**,与 Spring 项目并驾齐驱的,”面向未来”的响应式编程框架。 结果最后的代码,都长的和 Lambda 一样。其背后的思想,是观察者模式和非阻塞杂交的产物。
https://images.gitbook.cn/c140a0f0-b9b8-11e9-9b97-a36955e6600a?imageslim?imageView2/2/h/220小姐姐味道 · 架构师
Spring · 23 订阅
-- 我们是有底线的 --
微信扫描登录