自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

360linker

IT圈技术、产品、运营、市场、职场等信息交流分享

  • 博客(662)
  • 收藏
  • 关注

转载 RocketMQ消息顺序和消息重复的处理

消息顺序消息顺序是只可以按照消息发送的顺序进行消费。一个订单产生3条消息,订单创建、付款、订单完成。消费时只有按照顺序消费才有意义,不可能先消费付款消息再消费订单创建消息,这样就乱了。另外,多笔订单又可以并行消费。如何保证呢?一个订单产生的消息只能发送给同一个MQ服务器中的同一个分区,并且按顺序发送,这样才能在理论上保证消费者消费时是按照顺序消费的,因为一个分区就是一个逻辑队列。生产者虽然按顺序发送,但是第一条消息到达MQ的耗时比第二条多,那么第二条则会被先消费,这样就又导致消费时不是顺序的。那么如

2021-01-29 10:28:40 1041

转载 浅谈常见的七种加密算法及实现

前言数字签名、信息加密是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的签名加密算法来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。正文1. 数字签名数字签名,简单来说就是通过提供可鉴别的数字信息验证自身身份的一种方式。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。分别由发送者持有能够代表自己...

2021-01-26 13:42:41 1089

转载 跳表的实现原理

我们知道二叉搜索算法能够高效的查询数据,但是需要一块连续的内存,而且增删改效率很低。跳表,是基于链表实现的一种类似“二分”的算法。它可以快速的实现增,删,改,查操作。我们先来看一下单向链表如何实现查找当我们要在该单链表中查找某个数据的时候需要的时间复杂度为O(n).怎么提高查询效率呢?如果我们给该单链表加一级索引,将会改善查询效率。如图所示,当我们每隔一个节点就提取出来一个元素到上一层,把这一层称作索引,其中的down指针指向原始链表。当我们查找元素16的时候,单链表需要..

2021-01-26 10:37:46 1258 1

转载 Kafka为什么吞吐量大、速度快?

Kafka是大数据领域无处不在的消息中间件,目前广泛使用在企业内部的实时数据管道,并帮助企业构建自己的流计算应用程序。 Kafka虽然是基于磁盘做的数据存储,但却具有高性能、高吞吐、低延时的特点,其吞吐量动辄几万、几十上百万。 但是很多使用过Kafka的人,经常会被问到这样一个问题,Kafka为什么速度快,吞吐量大;大部分被问的人都是一下子就懵了,或者是只知道一些简单的点,本文就简单的介绍一下Kafka为什么吞吐量大,速度快。 ...

2020-12-12 22:11:43 482

转载 natapp搭建外网服务器

natapp搭建外网服务器首先在natapp官网注册一个账号:https://natapp.cn/注册好后登陆网站,点击左侧菜单中的购买隧道:点击免费隧道后进入隧道配置页面,我这里已经配置好了直接展示如下:点击保存后点击我的隧道后可以看到自己刚才配置的隧道信息:在https://natapp.cn/#download根据您的本机下载对应的客户端,比如我的本机是win7 64位,则下载Windows 64位的客户端:下载之后,解压至任意目录,得到natapp..

2020-12-09 16:34:14 692

转载 HTTP服务和RPC服务,如何选择

一、七层网络结构模型:我们先来了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它可以分为以下几层: (从上到下)第一层:应用层。定义了用于在网络中进行通信和传输数据的接口; 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等; 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断; 第四层:传输层。管理着网络中的端到端的数据传输; 第五层:网络层。定义网络设备间如何传输数据; 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;

2020-11-18 14:53:43 433

转载 用了HTTPS就安全了吗?HTTPS 会被抓包吗

随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问可能就答不上了: 为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗? 本文将层层深入,从原理上把 HTTPS 的安全性讲透。HTTPS 的实现原理大家可能都听说过 HTT...

2020-11-16 14:18:39 905

转载 So easy!同时登陆两个或多个Mac版微信和QQ

现如今,微信和QQ已经不单单是简单的社交软件了,也成了工作必备软件,工作中用它传个文件,发个通知,不知道有多方便。但是很多人希望将工作圈和生活圈分开,有人想出拿两部手机的方法,倒是可以,不过来回倒腾略麻烦了点。这时候双微信的作用就来了,一个专注工作圈一个专注生活圈互不干扰,这有多好。双QQ也是一样,一部手机同时登录两个QQ号,大号聊天的同时开个小号聊工作也是挺好的。那么问题来了,如何同时登陆两个或多个Mac版微信和QQ呢?超简单,几步操作轻松登陆两个或多个Mac版微信和QQ!如何实现Mac.

2020-11-16 11:01:49 1487

转载 百亿级数据分表后怎么分页查询?

当业务规模达到一定规模之后,像淘宝日订单量在5000万单以上,美团3000万单以上。数据库面对海量的数据压力,分库分表就是必须进行的操作了。而分库分表之后一些常规的查询可能都会产生问题,最常见的就是比如分页查询的问题。一般我们把分表的字段称作shardingkey,比如订单表按照用户ID作为shardingkey,那么如果查询条件中不带用户ID查询怎么做分页?又比如更多的多维度的查询都没有shardingkey又怎么查询?唯一主键一般我们数据库的主键都是自增的,那么分表之后主键冲突的问题就是一个无法

2020-11-12 17:25:50 216

转载 Java并发包JUC核心原理解析

JUC分类线程管理 线程池相关类 Executor、Executors、ExecutorService 常用的线程池:FixedThreadPool、CachedThreadPool、ScheduledThreadPool、SingleThreadExecutor 能获取子线程的运行结果 Callable、Future、FutureTask 并发流程管理CountDwonLatch、CyclicBarrier、Semaphore、Condition实现线程安..

2020-11-12 16:39:56 611

转载 23张图,带你入门推荐系统

做广告业务1年多时间了,但是平时的工作主要和广告工程有关,核心的广告算法由 AI 部门支持,对我们而言可以说是「黑盒般」的存在,只需要对训练好的模型进行调用即可。近期,我打算系统性地学习下广告中的搜索和推荐算法,当然更多是从工程的视角去弄清楚:算法的基本原理、以及面对线上海量数据时算法是如何解决性能问题的?整个过程,我会将有价值的技术点输出成系列文章。这篇文章属于推荐系统的入门篇,本文暂不考虑线上环境的海量数据,目的是先了解清楚推荐系统的基本构成,我会通过图解推荐算法以及程序demo的形式展开,..

2020-11-12 11:29:40 491 1

转载 十大经典排序算法(动图演示)

0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 .

2020-11-12 10:39:34 175

转载 一个技术总监的忠告:精通那么多技术,你为何还是受不到重用?

老田升职了,年薪涨到了百万级别!这是大刘在加班搞技术攻坚的时候,听别的同事聊了那么一嘴。大刘心里不是滋味儿。老田和大刘其实在这家公司之前就是同事了,老田能到这家公司,说起来还是大刘推荐的。但是,在公司的这几年,老田越来越受领导赏识,到如今,晋升成功,赫然成了大刘的上司。大刘百思不得其解。大刘和老田本身在前家公司都是高级程序员,前后脚跳槽到了现在这家公司。大刘来的早,成了架构师。老田呢,技术本就不如大刘,被大刘拉来后,先是当了个高级工程师,只是为了避嫌,没跟大刘一个团队。后来,老田被那

2020-11-12 10:33:28 203

转载 SpringBoot下的策略模式,消灭了大量的ifelse

前言项目中有这样一个场景,在公园放置了用来拍摄人像的识别杆,根据用户在不同识别杆之间采集的图象来计算用户的运动距离。由于涉及到许多公园,每个公园的布局不同,识别杆之间距离不同,算法也不同。但代码中每个不同的公园的算法区别都采用ifelse来进行判断处理。这样的写法你能看得下去吗?肯定不能。所以,就用策略模式对此进行了重构。项目采用SpringBoot架构,于是对不同的策略模式写法又进行了一次升级。现在就以实战的角度带领大家来学习策略模式,以及如何将ifelse重构为基于SpringBoot的策略模式

2020-11-11 09:58:52 316

转载 如何干掉java中的if...else...

前言if…else是高级编程语言的必备功能。但如果现实中项目代码中的if…else过多,可能会影响代码的可读性、可维护性,且违反了编程规范中的单一职责原则和开闭原则。问题1:if…else过多问题表现if…else 过多的代码可以抽象为下面这段代码。其中只列出5个逻辑分支,但实际工作中,能见到一个方法包含10个、20个甚至更多的逻辑分支的情况。另外,if…else 过多通常会伴随着另两个问题:逻辑表达式复杂和 if…else 嵌套过深。对于后两个问题,本文将在下面两节介绍。本节先来讨论 if

2020-11-11 09:57:39 361

转载 详解Condition的await和signal等待/通知机制

1.Condition简介任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等待/通知机制,同样的, 在java Lock体系下依然会有同样的方法实现等待/通知机制。从整体上来看Object的wait和notify/notify是与对象监视器配合完成线程间的等待/通知机制,而Condit

2020-11-11 09:42:52 272

转载 Java中多个线程交替循环执行

有些时候面试官经常会问,两个线程怎么交替执行呀,如果是三个线程,又怎么交替执行呀,这种问题一般人还真不一定能回答上来。多线程这块如果理解的不好,学起来是很吃力的,更别说面试了。下面我们就来剖析一下怎么实现多个线程顺序输出。两个线程循环交替打印//首先我们来看一种比较简单的方式public class ThreadCq { public static void main(String[] args) { Stack<Integer> stack = new Stac

2020-11-11 09:24:45 419

转载 Redis持久化AOF和RDB对比

RDB持久化 AOF持久化 全量备份,一次保存整个数据库 增量备份,一次保存一个修改数据库的命令 保存的间隔较长 保存的间隔默认一秒 数据还原速度快 数据还原速度一般 save会阻塞,但bgsave或者自动不会阻塞 无论是平时还是AOF重写,都不会阻塞 更适合数据备份,默认开启 ...

2020-11-11 09:21:34 275

转载 布隆过滤器(Bloom Filter)的原理和实现

什么情况下需要布隆过滤器?先来看几个比较常见的例子字处理软件中,需要检查一个英语单词是否拼写正确 在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上 在网络爬虫里,一个网址是否被访问过 yahoo, gmail等邮箱垃圾邮件过滤功能这几个例子有一个共同的特点:如何判断一个元素是否存在一个集合中?常规思路数组 链表 树、平衡二叉树、Trie Map (红黑树) 哈希表虽然上面描述的这几种数据结构配合常见的排序、二分搜索可以快速高效的处理绝大部分判断元素是否存在集合中的需求。但.

2020-11-11 09:20:27 152

转载 Spring Boot系列之自定义starter

pring Boot有很多starter的依赖包,想要了解starter的原理,我们可以通过自定义starter来更好的理解。工具/原料 idea jdk8 spring boot2 方法/步骤 1 创建spring boot项目,命名为mymsgstarter-spring-boot-starter。项目结构见图。其中MsgProperties、MsgAutoConfiguration、MsgService分别为配置属性类、配置类、和服务类。 2 配置

2020-11-11 09:17:15 166

转载 知道为什么RedisCluster有16384个槽么?

引言现在redis集群架构,redis cluster用的会比较多。如下图所示对于客户端请求的key,根据公式HASH_SLOT=CRC16(key) mod 16384,计算出映射到哪个分片上,然后Redis会去相应的节点进行操作!那大家思考过,为什么有16384个槽么?ps:CRC16算法产生的hash值有16bit,该算法可以产生2^16-=65536个值。换句话说,值是分布在0~65535之间。那作者在做mod运算的时候,为什么不mod65536,而选择mod16384.

2020-11-11 09:12:07 206

转载 四种线程池拒绝策略

一、前言线程池,相信很多人都有用过,没用过相信的也有学习过。但是,线程池的拒绝策略,相信知道的人会少许多。二、四种线程池拒绝策略当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛

2020-11-11 09:10:00 605

转载 二叉树算法题汇总

目录二叉树的遍历前序遍历中序遍历后序遍历层次遍历基础算法求二叉树中的节点个数求二叉树的深度(高度)求二叉树第k层的节点个数求二叉树中叶子节点的个数判断两棵二叉树是否相同的树判断二叉树是不是平衡二叉树求二叉树的镜像判断两个二叉树是否互相镜像判断是否为二分查找树BST本文的实例代码基于JAVA编写首先给出节点的数据结构 public class TreeNode { int val; TreeNode lef.

2020-11-10 11:19:30 215

转载 2020年Java程序员应该学习的10大技术

2020年Java程序员应该学习的10大技术对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西。以下是我列出的2020年Java开发者应该学习的技术:对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西。每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5、Spring Security 5和Spring Boot 2等,这些都给我...

2020-01-16 22:17:23 900

转载 Prometheus 介绍

我们知道zabbix在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。为解决监控容器的问题,引入了prometheus技术。prometheus号称是下一代监控。接下来的文章打算围绕prometheus做一个系列的介绍,顺便帮自己理清知识点。一、简介  prometheus是由谷歌研发的一款开源的监控软件,目前已经被云计算本地基金会托管,是继k8s托管的第二个项目。二、...

2020-01-16 16:57:06 541

转载 IDEA使用总结

如果你之前使用的是其他的ide,刚开始会感觉不是很习惯。但当你熟悉IDEA的基本使用后,你会发现它相比其他ide的优点。下面是我使用过程中,觉得IDEA中比较重要的设置,功能和技巧。1.IDEA启动速度优化安装IDEA后,可能会感觉启动速度比较慢。通过修改IDEA的配置文件能有效加快IDEA的启动速度。找到IDEA的安装目录,如:C:\Program Files\JetBrains...

2020-01-10 13:52:32 283

转载 有什么让你相见恨晚的 MacBook 神器?

本人表示win系统用了十几年,macbook用了不到一年,可能是由于工作原因,本人并不喜欢花里胡哨的工具,比如换个壁纸之类的,对于我来说,能够提高工作和办公效率才是对我最称得上相见恨晚的!所以下面我就安利几个能够大大减少机械操作、提高工作效率的mac神器!1、Alfred最最喜欢的macbook办公神器!绝对能让你抛弃鼠标!Alfred的功能实在是太多了,但是所有的功能就是一个特点...

2020-01-02 09:37:50 508

转载 用 Flink 取代 Spark Streaming,知乎实时数仓架构演进

“数据智能” (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务。从智能商业的角度来讲,数据的结果代表了用户的反馈,获取结果的及时性就显得尤为重要,快速的获取数据反馈能够帮助公司更快的做出决策,更好的进行产品迭代,实时数仓在这一过程中起到了不可替代的作用。本文主要讲述知乎的实时数仓实践以及架构的...

2019-12-27 14:58:59 472

转载 一文读懂 Spark 和 Spark Streaming

前言Apache Spark 是当今最流行的开源大数据处理框架。和人们耳熟能详的 MapReduce 一样,Spark 用于进行分布式、大规模的数据处理,但 Spark 作为 MapReduce 的接任者,提供了更高级的编程接口、更高的性能。除此之外,Spark 不仅能进行常规的批处理计算,还提供了流式计算支持。Apache Spark 诞生于大名鼎鼎的 AMPLab(这里还诞生过 Mes...

2019-12-27 14:49:47 1130

转载 50道Redis面试题史上最全,以后面试再也不怕问Redis了

1、什么是Redis?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结...

2019-10-29 22:15:19 289

转载 2019 年 13 大 GraphQL 工具和库

GraphQL 是 Facebook 内部从 2012 年开始开发的项目,于 2015 年公开发布。2018 年 11 月 7 日,GraphQL 的控制权被移交给由 Linux 基金会托管的 GraphQL 基金会。随后 GraphQL 日益普及,一个富有活力的生态系统也随之迅速成长。GraphQL 本质上是“API 的查询语言,以及使用你为数据定义的类型系统执行查询的服务端运行时”。它不依...

2019-09-25 15:53:55 931

原创 谈谈 GraphQL 的历史、组件和生态系统

多年来,RESTful web 服务一直在为简单查询结构提供基本支持。但是,这些服务没有提供对数据的细粒度控制,从而允许开发人员可以灵活运用而无需创建大量不必要的调用。GraphQL 最初由 Facebook 构建,它是用于 API 的查询语言,允许开发人员选择他们想要发出的请求类型,并在单个请求中接收所需的信息。本文中将解释 GraphQL 是什么、它是怎样开始的以及它如何成...

2019-09-23 15:29:43 289

原创 REDIS设计与实现之sentinel

redis主从复制可将主节点数据同步给从节点,一旦主节点宕机,从节点作为主节点的备份可以随时顶上来。这个过程如果人工介入,效果肯定没有自动的高可用机制好。sentinel 哨兵机制就是为了解决这个问题。是redis的高可用HA方案:有一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并...

2019-09-06 14:12:22 206

转载 GraphQL 入门介绍

写在前面 GraphQL是一种新的API标准,它提供了一种更高效、强大和灵活的数据提供方式。它是由Facebook开发和开源,目前由来自世界各地的大公司和个人维护。GraphQL本质上是一种基于api的查询语言,现在大多数应用程序都需要从服务器中获取数据,这些数据存储可能存储在数据库中,API的职责是提供与应用程序需求相匹配的存储数据的接口。有的人经常把GraphQL和数据库技术相...

2019-09-03 09:18:29 221

原创 Redis设计与实现之服务器

命令请求的执行流程一个命令请求从发送到获得回复的过程中, 客户端和服务器需要完成一系列操作。举个例子, 如果我们使用客户端执行以下命令:redis> SET KEY VALUEOK那么从客户端发送 SET KEY VALUE 命令到获得回复 OK 期间, 客户端和服务器共需要执行以下操作:客户端向服务器发送命令请求 SET KEY VALUE 。服务器接收并处理客户端发...

2019-08-16 13:40:20 261

转载 怎么进行数据库分库分表?

一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存...

2019-08-14 17:23:27 6981 1

转载 阿里巴巴如何管理代码分支?

在阿里内部,流行着许多有意思的工程实践。有些实践通过工具和流程嵌在集团的大环境里,外界不容易复制,有些实践则是流露在大家的日常习惯里,被默默的遵守。比如分支管理这件事,其实属于工具和习惯各占一半,并且颇有阿里特色的成分,适合作为一个例子。阿里有很多的研发团队,不同事业部使用的发布流程、分支策略并非整齐划一,但总体上看是比较规整的。其中有一种主流的发布模式以及对应的分支使用方式,称为“AoneFlo...

2019-08-14 17:12:16 298

原创 Serverless 是什么?

Serverless 是一个当今软件世界中比较新的话题。它并没有一个普遍公认的权威定义,每个人每个企业对它的解释可能都有不同,而 Serverless 正是在这种情况下不断发发展的。但是就算如此,有一些 Serverless 的特征还是被广泛认可的: 服务端的主机和进程完全由供应商管理 可以根据负载进行自动伸缩 按照精确的使用情况来计费,就像水和电一样。(效用计算) ...

2019-08-14 11:24:57 1979

转载 面试官:谈谈你对Mysql的MVCC的理解?

MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得别的事务...

2019-08-07 16:41:47 2985 3

转载 企鹅智库:2019-2020中国互联网趋势报告

...

2019-08-06 22:48:22 822

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除