Browsed by
分类:Java语言

高性能短链设计

高性能短链设计

閱讀本文約花費: 17 (分鐘) 前言 今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。 本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获 短链有啥好处,用长链不香吗短链跳转的基本原理短链生成的几种方法高性能短链的架构设计 注:里面涉及到不少布隆过滤器,snowflake 等技术,由于不是本文重点,所以建议大家看完后再自己去深入了解,不然展开讲篇幅会很长 短链有啥好处,用长链不香吗 来看下以下极客时间发我的营销短信,点击下方蓝色的链接(短链) 浏览器的地址栏上最终会显示一条如下的长链。 那么为啥要用短链表示,直接用长链不行吗,用短链的话有如下好外 1、链接变短,在对内容长度有限制的平台发文,可编辑的文字就变多了 最典型的就是微博,限定了只能发 140 个字,如果一串长链直接怼上去,其他可编辑的内容就所剩无几了,用短链的话,链接长度大大减少,自然可编辑的文字多了不少。 再比如一般短信发文有长度限度,如果用长链,一条短信很可能要拆分成两三条发,本来一条一毛的短信费变成了两三毛,何苦呢。另外用短链在内容排版上也更美观。 2、我们经常需要将链接转…

Read More Read More

CTO的职责是什么

CTO的职责是什么

閱讀本文約花費: 5 (分鐘) 每个公司行业不同,业务不同,技术占比不同,不同公司对CTO的要求和职责也都会不一样。我们不能想象一家化工企业的CTO和移动App的CTO做的事情是一样的。所以我们先说说CTO有几种类型。 一图胜千言: 其中横轴是公司产品中技术占的比重,纵轴是指公司业务变化的快慢。 下面介绍下每种类型的CTO Visionary and Operations Manager 比如大家关注的互联网公司,技术占整个公司的比例是很大的。而且互联网创业是一个瞬息万变的事情,所以互联网创业公司的CTO应该落到了第一象限,即Visionary and OperationsManager。具体是什么意思呢?所谓Visionary就是制定技术战略,Operation就是战术和落地执行。 这类型的CTO通常是互联网和其他高科技公司,技术在这类公司业务中起着至关重要的作用。从Technology Visionary的角色看,CTO对如何利用技术实现商业战略有重大的决策权。同时,CTO也兼任Operation Manager的角色,即负责推动和整合技术的实施。在这种情况下,通常CTO是公司的联合创始人,或者是第一个被雇佣的员工。 例如大家熟悉的:亚马逊 CTO WernerVogels,是云计算领域的领军人物,以及亚马逊AWS业务的核心推动者。Werner Vogels在云计算领域的高瞻远…

Read More Read More

10分钟带你逆袭Kafka!

10分钟带你逆袭Kafka!

閱讀本文約花費: 56 (分鐘) Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点。较之传统的消息中间件(例如 ActiveMQ、RabbitMQ),Kafka 具有高吞吐量、内置分区、支持消息副本和高容错的特性,非常适合大规模消息处理应用程序。 从未如此简单:10分钟带你逆袭Kafka! Kafka 官网: http://kafka.apache.org/ Kafka 主要设计目标如下: 以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条消息的传输。支持 Kafka Server 间的消息分区,及分布式消费,同时保证每个 Partition 内的消息顺序传输。同时支持离线数据处理和实时数据处理。支持在线水平扩展。 Kafka 通常用于两大类应用程序: 建立实时流数据管道,以可靠地在系统或应用程序之间获取数据。构建实时流应用程序,以转换或响应数据流。 要了解 Kafka 如何执行这些操作,让我们从头开始深入研究 Kafka 的功能。首先几个概念: Kafka 在一个或多个可以跨越多个数据中心的服务器上作为集群运行。Kafka 集群将记…

Read More Read More

kafka平台架构

kafka平台架构

閱讀本文約花費: 1 (分鐘) Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 Kafka基本架构介绍 kafka架构原理 [图文]消息队列 [图文]kafka-0.10 知识点总结 [图文]消息中间件Kafka资料 图文:Kafka架构设计与实施 kafka中文文档 kafka介绍与概念 – 图文 [图文]Kafka介绍 Kafka安装配置及使用说明 kafka架构与原理 Kafka的架构原理,你真的理解吗? 课程: Kafka原理与实践 课程:Kafka 原理剖析及实战演练 

windows常用命令行命令

windows常用命令行命令

閱讀本文約花費: 42 (分鐘) 打开”运行”对话框(Win+R),输入cmd,打开控制台命令窗口… 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后关闭cmd窗口;/k表示执行完命令后保留cmd窗口 # 控制台命令窗口中一些技巧 复制内容:右键弹出快捷菜单,选择“标记(K)”,然后选中所需复制的内容,然后右键即可 粘贴内容:右键弹出快捷菜单,选择“粘贴(P)” 在文件夹空白处按住Shift,然后右键弹出快捷菜单,可以看到“在此处打开命令行窗口” 使用上下方向键,翻看使用过的命令 tab补齐功能 命令参数的路径:要使用反斜杠’\’,不要使用正斜杠’/’   如:del d:\test2\file\my.txt 命令参数的路径:若存在空格,应使用双引号将路径引起来  如:del “d:\program files\file\my.txt” 文件及目录名中不能包含下列任何字符:\ / : * ? ” < > | rem  // 在批处理文件中添加注解,其后的命令不会被执行,但会回显 ::  // ::也可以起…

Read More Read More

如何保证Kafka不丢失消息

如何保证Kafka不丢失消息

閱讀本文約花費: 6 (分鐘) 生产者丢失消息的情况 生产者(Producer) 调用send方法发送消息之后,消息可能因为网络问题并没有发送过去。 所以,我们不能默认在调用send方法发送消息之后消息消息发送成功了。为了确定消息是发送成功,我们要判断消息发送的结果。但是要注意的是  Kafka 生产者(Producer) 使用  send 方法发送消息实际上是异步的操作,我们可以通过 get()方法获取调用结果,但是这样也让它变为了同步操作,示例代码如下: SendResult<String, Object> sendResult = kafkaTemplate.send(topic, o).get();if (sendResult.getRecordMetadata() != null) { logger.info(“生产者成功发送消息到” + sendResult.getProducerRecord().topic() + “-> ” + sendRe sult.getProducerRecord().value().toString());} 但是一般不推荐这么做!可以采用为其添加回调函数的形式,示例代码如下: ListenableFuture<SendResult<String, Object>> futu…

Read More Read More

全球搜索引擎Top10 可惜很多人只用过第4个

全球搜索引擎Top10 可惜很多人只用过第4个

閱讀本文約花費: 4 (分鐘) 在互联网发达的今天,每当我们遇到不懂的问题,首先问的就是百度,但是有时候度娘给出的并不是我们想要的答案或者更本搜不到答案,怎么办呢? 或许你可以尝试一下下面这些全球十大搜索引擎,如果你英语不错,用英语搜索会有意想不到的收获哦。 NO.1 Google(谷歌) 月独立访问者:18亿 www.google.com 全球第一搜索引擎,不解释! NO.2 Bing(必应)月独立访问者:5亿 www.bing.com Bing是微软旗下的搜索引擎,感觉它的搜索界面背景图超美,是谷歌最好的替代品,备胎中的战斗机。 NO.3 Yahoo!(雅虎)月独立访问者:4.9亿 www.search.yahoo.com 在搜索方面,雅虎表现中规中矩,网页搜索表现不错,但死链率较高而且缺少一些应有的高级搜索功能。 NO.4 Baidu(百度)月独立访问者:4.8亿 www.baidu.com 全球最大的中文搜索引擎,不解释! NO.5 Ask月独立访问者:3亿 www.ask.com Ask搜索引擎是国外比较出名的一款搜索引擎,其规模虽不大,但很有特色。Ask是DirectHit的母公司,于2001年收购Teoma搜索引擎,并全部采用Teoma搜索结果。 是支持自然提问的搜索引擎,其数据库里储存了超过1000万个问题的答案,只要用户用英文直接输入一个问题,它就会给出问题答案,…

Read More Read More

后端架构师技术图谱

后端架构师技术图谱

閱讀本文約花費: 5 (分鐘) 数据结构 二叉树完全二叉树平衡二叉树二叉查找树(BST)红黑树B-,B+,B*树LSM 树队列集合链表、数组字典、关联数组栈树BitSet 常用算法 KPM 算法选择排序冒泡排序插入排序快速排序归并排序希尔排序堆排序计数排序桶排序基数排序二分查找Java 中的排序工具排序、查找算法布隆过滤器字符串比较深度优先、广度优先贪心算法回溯算法剪枝算法动态规划朴素贝叶斯推荐算法最小生成树算法最短路径算法 并发 Java中的锁和同步类公平锁 & 非公平锁悲观锁 & 乐观锁 & CASABA 问题CopyOnWrite容器RingBuffer可重入锁 & 不可重入锁互斥锁 & 共享锁死锁事务 ACID 特性事务的隔离级别多线程线程安全一致性、事务锁 操作系统 计算机原理进程线程协程Linux 设计模式 康威定律设计模式的六大原则23种常见设计模式应用场景单例模式责任链模式MVCIOCAOPUML微服务思想 运维 & 统计 & 技术支持 OpenStackDockerKVMXenOpenVZTDD 理论单元测试压力测试全链路压测A/B TestAnsiblepuppetchefJenkins环境分离常规监控APM统计分析持续集成(CI/CD)自动化运维测试虚拟化容器技术云技术DevOps文档管理 中间件 日志搜…

Read More Read More

Java中如何锁文件

Java中如何锁文件

閱讀本文約花費: 8 (分鐘) Java中如何锁文件 1. 概览 当读写文件时,需要确保有适当的文件锁定机制,来保证基于并发I/O应用程序的数据完整性。 「本教程中, 我们将介绍使用 Java NIO 库实现这一点的各种方法。」 2. 文件锁简介 「一般来说,有两种锁」: 独占锁——也称为写锁共享锁——也称为读锁 简单地说,在写操作完成时,独占锁防止所有其他操作(包括读操作)。 相反,共享锁允许多个进程同时读取。读锁的目的是防止另一个进程获取写锁。通常,处于一致状态的文件确实应该被任何进程读取。 在下一节中,我们将看到Java如何处理这些类型的锁。 3. Java中的文件锁 Java NIO库支持在操作系统级别锁定文件。FileChannel 中的lock() 和*tryLock()*方法就是为了这个而存在。 我们可以通过 FileInputStream, FileOutputStream,RandomAccessFile 来获取FileChannel,三者均可通过 getChannel() 方法返回 FileChannel对象. 或者, 我们可以直接通过静态方法 open 来创建 FileChannel  : try (FileChannel chan…

Read More Read More

@FeignClient注解的深度交流

@FeignClient注解的深度交流

閱讀本文約花費: 8 (分鐘) 那天晚上和@FeignClient注解的深度交流 Feign 基本介绍 首先来个基本的普及,怕有些同学还没接触过 Spring Cloud。Feign 是 Netflix 开源的一个 REST 客户端,通过定义接口,使用注解的方式描述接口的信息,就可以发起接口调用。 GitHub 地址: https://github.com/OpenFeign/feign[1] 下面是 GitHub 主页上给的一个最基本的使用示列,示列中采用 Feign 调用 GitHub 的接口。 interface GitHub { @RequestLine(“GET /repos/{owner}/{repo}/contributors”) List contributors(@Param(“owner”) String owner, @Param(“repo”) String repo); @RequestLine(“POST /repos/{owner}/{repo}/issues”) void createIssue(Issue issue, @Param(“owner”) String owner, @Param(“repo”) String repo); } public static class Contributor { String login; int con…

Read More Read More