- 博客(579)
- 资源 (11285)
- 收藏
- 关注
原创 Kafka/RocketMQ事务消息对比
一、Kafka事务消息Kafka的事务概念类似于数据库提供的事务,即经典的ACID,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。保证多条消息原子性地写入到目标分区,同时也能保证Consumer只能看到事务成功提交的消息。事务消息实现设置事务型Producer,需要满足两个要求:开启enable.idempo...
2021-07-15 01:43:04 794 3
原创 Nginx-代理服务
目录章节代理示意图Nginx代理服务配置语法及反向代理场景代理示意图image客户端发送请求至代理服务,代理服务请求真正的服务器,服务器返回结果给代理服务器,代理服务器将请求结果转发给客户端。Nginx代理服务image如图所示nginx代理服务可以实现HTTP、ICMP、POP、IMAP、HTTPS、RTMP 代理服务即普通http服务代理、邮件...
2021-07-15 01:39:20 592 1
原创 并发经验八年架构师:缓存在高并发场景下该如何问题
缓存一致性问题当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。image缓存并发问题缓存过期后将尝试从后端数据库获取数据,这是一个看似合理的流程。但是,在高并发场景下,有可能多个请求并发的去从数据库获...
2021-07-15 01:35:48 534
原创 Netty做什么?第一个Netty服务如何写?Netty的IO和Reactor模型?Netty组件是什么?ByteBuf是什么?(Netty一)...
一 概述1.1 初步了解NettyNetty是什么?Netty是一个高性能的、异步的、基于事件驱动的网络应用型框架。为什么使用netty?a Netty是基于Java的NIO实现的,对各种API进行统一封装。 b 基于事件模型,我们可以在对应事件编码自己业务。让开发者聚焦业务。 c 高度可定制线程模型,单线程,一个或者多个线程池。 d Netty只依赖JDK...
2021-07-14 01:52:00 290
原创 SpringCloud下的用户鉴权方案
Java下常用的安全框架主要有Spring Security和shiro,都可提供非常强大的功能,但学习成本较高。在微服务下鉴权多多少少都会对服务有一定的入侵性。 为了降低依赖,减少入侵,让鉴权功能相对应用服务透明,我们采用网关拦截资源请求的方式进行鉴权。一、整体架构整体结构用户鉴权模块位于API GateWay服务中,所有的API资源请求都需要从此通过。做身份认证,通过则缓存...
2021-07-14 01:48:00 426
原创 大公司为什么都有API网关?聊聊API网关的作用
在这篇文章中将我们一起来探讨当前的API网关的作用。一、API网关的用处API网关我的分析中会用到以下三种场景。Open API企业需要将自身数据、能力等作为开发平台向外开放,通常会以rest的方式向外提供,最好的例子就是淘宝开放平台、腾讯公司的QQ开发平台、微信开放平台。Open API开放平台必然涉及到客户应用的接入、API权限的管理、调用次数管理等,必然会有一个统一的入口进行管理,这正是AP...
2021-07-13 01:48:55 306
原创 操作系统是如何管理物理内存的?
物理内存管理本文是操作系统系列第三篇,介绍物理内存管理。操作系统对内存的管理是非常复杂的,和程序的执行、硬件、编译器等密切相关。本文从物理内存入手,介绍内存管理的重要概念,也为后续的虚拟内存管理内容做铺垫。image内存管理的需求1.抽象,即给每个程序逻辑地址空间2.保护,不同程序的地址空间互相隔离,无法越界访问3.共享,对于一些公共函数库,可以只在内存中存一份,其它程序引用这一...
2021-07-13 01:46:58 220
原创 MySQL 复制一致性问题探索
MySQL 数据库内建的复制功能是构建基于 MySQL 的大规模、高性能应用的基础。复制就是让一个 MySQL主库 (Master) 将数据通过日志的方式经网络传送到另一台或多台 MySQL 从库(Slave),然后在从库上重放该日志,以达到和主库数据同步的目的。MySQL 的复制模式分为异步复制、全同步复制及半同步复制三种。下面将针对不同复制模式下的数据一致性问题进行详细分析。异步复制(As...
2021-07-13 01:46:17 126
原创 程序员必备的10大高性能开发核心技术
程序员经常要面临的一个问题就是:如何提高程序性能?这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。- I/O优化:零拷贝技术- I/O优化:多路复用技术- 线程池技术- 无锁编程技术- 进程间通信技术- RPC && 序列化技术- 数据库索引技术- 缓存技术 &&...
2021-07-12 00:35:57 467
原创 线程池实时管理与监控工具的实现与思考
0. 前言Java线程池作为最常使用到的并发工具,大多数同学都有使用的经验,但你确定你是在正确的使用线程池吗?阿里Java代码规范要求我们不使用 Executors来快速创建线程池,但是抛弃Executors,使用其它方式创建线程池就一定不会出现问题吗?本文详细描述了一款Java线程池动态管理和实时监控插件的开发过程,希望大家对线程池有新的认识,主要内容如下:我们在使用线程池过程中碰到了什么...
2021-07-12 00:33:07 653 2
原创 《中台架构与实现 DDD和微服务》核心思想
绪论传统数字化转型需要解决的几个问题1.技术体系落后可扩展能力不强,高可用能力不强,面对突发高频访问的业务场景,不能实现自动弹性伸缩,发展到一定规模后,数据库性能和容量成为业务发展的瓶颈。2.单体架构问题将很多功能放到一个应用中,日积月累,这个应用编程一个庞大的怪物,随着人员的更替,时间一长很少人能完全搞懂这些代码的逻辑关系。一些人担心遗留代码,不敢修改之前的代码,宁愿复制一份代码出来重...
2021-07-12 00:29:56 225
原创 当代程序员必备技能(算法)之:递归详解
前言递归是一种非常重要的算法思想,无论你是前端开发,还是后端开发,都需要掌握它。在日常工作中,统计文件夹大小,解析xml文件等等,都需要用到递归算法。它太基础太重要了,这也是为什么面试的时候,面试官经常让我们手写递归算法。本文呢,将跟大家一起学习递归算法~什么是递归?递归的特点递归与栈的关系递归应用场景递归解题思路leetcode案例分析递归可能存在的问题以及解决方案什么是递...
2021-07-12 00:27:58 315
原创 12个适合后台管理系统开发的前端框架
1、D2admin开源地址:https://github.com/d2-projects/d2-admin文档地址:https://d2.pub/zh/doc/d2-admin/效果预览:https://d2.pub/d2-admin/preview/#/index开源协议:MITimage2、vue-element-admin开源地址:https://github.com...
2021-07-12 00:24:29 1088
原创 比较流行的优秀国外设计(三)
分享时下比较流行的优秀国外设计,每日开眼一下;数量不多只有四组,每日积累一点点,提高设计审美!#UI#小程序01.商业管理应用https://www.uplabs.com/posts/business-management-app-d282c55c-1187-4f20-b878-82ee100c995aimage02.食品配送应用程序UI套件深色食品应用程序https://ww...
2021-07-11 09:24:28 82
原创 比较流行的优秀国外设计(四)
分享时下比较流行的优秀国外设计,每日开眼一下;数量不多只有四组,每日积累一点点,提高设计审美!#UI#小程序01.学习自测https://www.uplabs.com/posts/learning-and-testimage02.iOS社交媒体配置文件概念https://www.uplabs.com/posts/social-media-profile-concept-for-...
2021-07-11 09:24:17 97
原创 比较流行的优秀国外设计(五)
分享时下比较流行的优秀国外设计,每日开眼一下;数量不多只有四组,每日积累一点点,提高设计审美!#小程序#UI01.RLing音乐应用程序用户界面套件https://www.uplabs.com/posts/rling-music-app-ui-kit-6image02.酒店预订应用程序用户界面工具包https://www.uplabs.com/posts/hotel-booki...
2021-07-11 09:24:06 55
原创 比较流行的优秀国外设计(六)
分享时下比较流行的优秀国外设计,每日开眼一下;数量四组,每日积累一点点,提高设计审美!#小程序#UI01.在线学习移动应用程序设计(深色版)https://www.uplabs.com/posts/online-learning-mobile-application-design-dark-versionimage02.Movigo-电影预订UI套件https://www.up...
2021-07-11 09:23:53 60
原创 比较流行的优秀国外设计(七)
分享时下比较流行的优秀国外设计,每日开眼一下;数量四组,每日积累一点点,提高设计审美!#小程序#UI01.资金管理应用程序 ui 套件https://www.uplabs.com/posts/money-management-app-ui-kitimage02.金融应用 UI 套件https://www.uplabs.com/posts/finance-app-ui-kit-b...
2021-07-11 09:23:41 83
原创 Flutter UI自动化测试技术方案选型与探索
Flutter页面无法直接使用Native测试工具定位元素,给自动化测试带来很多不便。虽然Google官方推出了Flutter driver 和 Integration test,但是在实际使用中存在以下问题:•不适用于混合栈APP,虽然appium中有相关的driver,但是无法切换环境。•元素定位能力相对薄弱。•依赖于VMService,需要构建Profile或Debug包。基于以上因素,...
2021-07-10 00:38:14 297
原创 《吃透微服务》—服务网关之Gateway
前段时间与小伙伴闲聊时说到他们公司的现状,近来与将来,公司将全面把单体服务向微服务架构过渡。这里面我们听到了关键词 --- 微服务。乍听之下,觉得也很合理。互联网在不断的发展,这里不只是行业的发展,更是系统架构的发展。现在市面上架构大致也经历了这几个阶段:image这是好事吗?是好事,毋庸置疑。因为不跟上时代的浪潮,总会被拍死在沙滩上。但完全是好事吗?那也不见得。我们先要明白微服务...
2021-07-10 00:37:23 374
原创 从 LiveData 迁移到 Kotlin 数据流
imageLiveData 的历史要追溯到 2017 年。彼时,观察者模式有效简化了开发,但诸如 RxJava 一类的库对新手而言有些太过复杂。为此,架构组件团队打造了 LiveData: 一个专用于 Android 的具备自主生命周期感知能力的可观察的数据存储器类。LiveData 被有意简化设计,这使得开发者很容易上手;而对于较为复杂的交互数据流场景,建议您使用 RxJava,这样...
2021-07-10 00:37:11 195
原创 分布式调度框架 elastic-job 实践详解(超详细)
虽然 Quartz 也可以通过集群方式来保证服务高可用,但是它也有一个的弊端,那就是服务节点数量的增加,并不能提升任务的执行效率,即不能实现水平扩展!之所以产生这样的结果,是因为 Quartz 在分布式集群环境下是通过数据库锁方式来实现有且只有一个有效的服务节点来运行服务,从而保证服务在集群环境下定时任务不会被重复调用!如果需要运行的定时任务很少的话,使用 Quartz 不会有太大的问题,但是...
2021-07-10 00:36:59 5747
原创 硬核讲解秒杀设计
1 秒杀场景秒杀场景登陆12306进行火车票抢座1599元购入飞天茅台周董演唱会的门票双十一秒杀活动秒杀场景关注点严格防止超卖:库存1000件卖了1020件,要杀个码农祭天了!防止超卖是秒杀系统设计最核心的部分。防止黑产:防止不怀好意的羊毛党薅羊毛。保证用户体验:高并发下,给用户提供友善的购物体验,尽可能支持比较高的QPS等等。接下来就让我们按照关注点,不断细化秒杀场景...
2021-07-09 01:20:40 149 1
原创 硬核操作系统讲解
1 冯诺伊曼体系1.1 冯诺伊曼体系简介现代计算机之父冯诺伊曼最先提出程序存储的思想,并成功将其运用在计算机的设计之中,该思想约定了用二进制进行计算和存储,还定义计算机基本结构为 5 个部分,分别是中央处理器(CPU)、内存、输入设备、输出设备、总线。image存储器:代码跟数据在RAM跟ROM中是线性存储, 数据存储的单位是一个二进制位。最小的存储单位是字节。总线:总线是用于...
2021-07-09 01:20:20 205 1
原创 Kafka原理篇:图解kakfa架构原理
下面是本文主要的内容:image从本文中你将学习到:Kafka 架构设计哲学和原理Kafka 中 zookeeper 的作用Kafka Controller 实现原理Kafka Network 原理开篇寄语尽可能做一些产品出来,有一个作品很重要,这是别人了解你的窗口。如果可能,给自己开一个公众号或者一个博客,记录自己每天的见闻思考。刚开始记会很凌乱没有逻辑,但坚持下去一定...
2021-07-09 01:20:08 96 1
原创 90%的程序员,都没用过多线程和锁,怎么成为架构师?
一、前言你只面向工作学习吗?如果说编程只是单纯的承接产品需求开发系统功能,那么基本可以把程序开发简单理解成按照需求PRD,定义属性、创建方法、调用展示,这三个步骤。尤其是在一些大公司中,会有易用的、完善的、标准的架构体系和运维服务,例如:RPC、MQ、Redis集群、分布式任务、配置中心、分库分表组件、网关等搭配出来的系统架构。也因此让程序员做到只关心业务功能开发!让程序员只关心业务开发,...
2021-07-09 01:19:50 206
原创 阿里架构师如是说:权限系统就该这么设计
前言权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。目前在公司负责权限这块, 所以对权限这块的设计比较熟悉, 公司采用微服务架构, 权限系统自然就独立出来了, 其他业务系统包括商品中心, 订单中心, 用户中心, 仓库系统, 小程序, 多个 APP 等十几个系统和终端。1...
2021-07-09 01:19:38 183 1
原创 10大排序算法梳理,附动图
算法与实现选择排序算法思想从数组中选择最小元素,将它与数组的第一个元素交换位置。再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。image动态过程代码实现// 选择排序public static void selectSort(int[] arr) { for (int i = 0; i < ...
2021-07-08 01:02:51 95
原创 上亿级别秒杀系统优化,用这个方案可行吗?
秒杀相信大家都不陌生,商家会发布一些价格低廉、数量很少的商品,吸引用户抢购,例如每年双十一活动就属于典型的秒杀活动。还有类似春节12306抢票、小米手机限量发售等都可以理解为“秒杀”。秒杀特点是持续时间短,抢购人数多,参与人数大大高于商品数量。抢购开始前后大量用户请求涌入,极易给服务造成巨大压力。如果系统设计不当,还容易造成超卖、数据丢失等问题。本文我们主要讨论在秒杀的高并发场景下,传统订单架...
2021-07-08 01:02:34 217
原创 我是如何失去团队掌控的?一个技术总监的反思
我是一个不合格的技术总监,在过去的快三个月里。我带着从40多个人的研发团队(包含需求、开发、测试)里抽调出20多个人去为公司开疆拓土。在这快三个月中,我们一起奋战奋斗拼搏。在过程中,我通宵时间超过半个月,干到凌晨4/5点的日子数不胜数,干到凌晨1/2点日子更是习以为常。整个团队绝大多数人近乎两个月没有周末,辛苦异常,是实实在在的高峰体验。但是三个月后,我带着失败和一身的惨痛教训回到公司。我在这次...
2021-07-08 01:02:18 116
原创 只需一个小故事就可以讲明白:微服务架构
前言要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。最初的需求几年前,小明和小皮一起创业做网上超市。小明负责程序开发,小皮负责其他事宜。当时互联网还不发达,网上超市还是蓝海。只要功能实现了就能随便赚钱。所以他们的需求很...
2021-07-08 01:02:07 391
原创 Android 组件化的开发优势
1.组件化的优势 Android APP组件化架构的目标:告别结构臃肿,让各个业务变得相对独立,业务组件在组件模式下可以独立开发,而在集成模式下又可以变为arr包集成到“app壳工程”中,组成一个完整功能的APP;从组件化工程模型中可以看到,业务组件之间是独立的,没有关联的,这些业务组件在集成模式下是一个个library,被app壳工程所依赖,组成一个具有完整业务功能的APP应用,但是在组件开发...
2021-07-08 01:01:56 979
原创 领导嫌弃可视化太丑?学会这10个高级炫酷图表,胜过一切技巧
最常要做的事情就是各种报告、总结、计划等,所谓一图胜千言,可视化图表如果能用得好,绝对可以做到事半功倍的效果,但是往往领导总是会嫌弃图表做的太丑。image其实普通的柱状图、饼图等已经可以满足大多数的数据场景,但是这些图表太过于普通和简单,很难做出高级感,网上充斥的Excel图表教程也很粗制滥造,最后的效果也差强人意。我之前主导团队做了很多张可视化大屏,想要实现这样的炫酷效果,一方...
2021-07-07 00:40:25 337 1
原创 把可视化放到年终报告里,到底有多赞?
“小张啊,年底了,要对过去一年的事情做个总结了,你个人做了什么,为企业做了什么,企业的数据上有哪些增长,我希望你能以新颖的形式汇报出来。”新颖的方式?我想了半天,只想到了可视化大屏这一种方式。一般来说,多多少少都有涉及过数据可视化的吧,谈不上熟悉也谈不上陌生,比如下面这种:image不少人认为,这需要开发,并且得要很久吧,这不是一个正确的认知。做可视化大屏,需要找屏幕,调分辨率...
2021-07-07 00:40:11 71
原创 学会这个神器和技巧,低代码开发高端可视化大屏
随着企业数字化建设的发展,领导对数据价值的利用意识越来越高,数据分析和展现需求日益增长。对于管理层来说,可视化大屏和驾驶舱项目尤其受欢迎,这两年我遇到的BI项目有半数会有开发管理驾驶舱、大屏的需求。一方面大屏项目能够全面的展示经营数据,将管理策略具象化,另一方面通过科技感的数据展现也能提升企业形象。最近刚参与一个金融行管理驾驶舱的开发,在项目中也探索了一些新的心得与经验分享给大家。im...
2021-07-07 00:39:57 560
原创 银行有没有必要建立数据中台?看看这些架构师和技术总监怎么说
中小银行有没有必要建立数据中台?image中小银行面临数字化转型的关键时期,面临技术不够成熟,基础设施基础架构不够重视,是否有必要有数据中台的存在。如果没有数据中台,感觉数据调度,数据治理,数据质量等无法全面把控好。这个问题,需要解决,我咨询了行业内的大数据架构师,应该能给你一点答案。1、@Derek20 股份制银行 大数据架构师:数据中台建设必要性的论证是每家机构必做的功课...
2021-07-07 00:39:43 155
原创 关于数据仓库的架构及3大类组件工具选型
关于数据仓库的概念、原理、建设方法论,网上已经有很多内容了,也有很多的经典书籍,本文更想聊聊企业数据仓库项目上的架构和组件工具问题。先来谈谈架构。企业数据仓库架构关于数据仓库,有一种简单粗暴的说法,就是“任何数据仓库都是通过数据集成工具连接一端的原始数据和另一端的分析界面的数据库”。数据仓库用来管理企业庞大的数据集,提供转换数据、移动数据并将其呈现给终端用户的存储机制。许多架构方法以这样或...
2021-07-07 00:39:31 360
原创 突破性能瓶颈!ElasticSearch百亿级数据检索优化案例
一、前言本文中的数据平台已迭代三个版本,从头开始遇到很多常见的难题,终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的。实现参考,少走些弯路,在此篇幅中偏重于ES的优化,目前生产已存储百亿数据,性能良好,关于HBase,Hadoop的设计优化估计有很多文章可以参考,不再赘述。二、需求说明项目背景:在一业务系统中,部分表每天的数据量过亿,已按天分表,但业务上受限于按天查询,并且DB中只...
2021-07-06 09:09:42 577
原创 MyBatis之架构设计与实现
1、ORM1.1 概述面向对象编程把所有实体看成对象(object),关系型数据库则是采用实体之间的关系(relation)连接数据,两者的设计哲学是不一样的。这就导致一种困境:当使用面向对象的编程语言来进行应用开发时,从项目一开始就采用的是面向对象的思想(分析、设计、编程等),但到了持久层数据库访问时,又必须重返关系数据库的数据模型。为了跨越面向对象程序设计语言和关系数据库之间的鸿沟,产生...
2021-07-06 09:09:29 148
原创 Netty之工作原理
1、架构设计Netty 采用了比较典型的三层网络架构进行设计,逻辑架构图如下所示:image第一层:Reactor 通信调度层,它由一系列辅助类完成,包括 Reactor 线程 NioEventLoop 以及其父类、NioSocketChannel/NioServerSocketChannel 以及其父类、ByteBuffer 以及由其衍生出来的各种 Buffer、Unsafe 以...
2021-07-06 09:09:19 533
B17_NumPy IO(save,load,savez,loadtxt,savetxt).pdf
2021-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人