自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tyshawn的博客

你眼中的世界就是你自己的样子。

  • 博客(353)
  • 资源 (2)
  • 收藏
  • 关注

原创 删除mongo中重复的数据, 只保留一条

删除mongo集合中重复的数据, 只保留一条, sql命令如下:db.kdata_y1_0.aggregate([ {$group: { _id: {tickerId: '$tickerId',tradeTime: '$tradeTime'},count: {$sum: 1},dups: {$addToSet: '$_id'}}},{$match: {count: {$gt: 1}}}],{allowDiskUse: true}).forEach(function(doc){doc.du

2021-02-03 22:03:01 1204 1

原创 iTerm2通过rz和sz进行文件上传下载

一、在服务器安装lrzsz​ yum -y install lrzsz二、在Mac 安装lrzsz1、安装brewruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2、安装lrzszbrew install lrzsz三、下载Z-Modem脚本文件1、下载地址(整个项目下载下来)https://github.com/aurora/iterm2-zmo

2020-06-16 17:32:25 1436

原创 Mac通过sshpass+ iTerm2来免密连接服务器

1、安装home-brew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"先输入上述命令, 然后再输入电脑密码、按任意键.2、安装wgetbrew install wget3、安装sshpash下载安装包wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass

2020-06-10 23:39:34 768

原创 如何停止一个正在运行的线程?

如何停止一个正在运行的线程? 这个一个面试常问的问题, 我们有两种办法, 分别是stop()和interrupt(), 但stop()太过于暴力, 无法保证线程业务的原子性, 且已过期, 不推荐使用.使用stop()来停止线程stop()方法让线程立即停止运行, 这种暴力停止可能会破坏线程业务的原子性, 如下所示:static class MyThread extends Thread {...

2020-04-16 14:50:36 1077

原创 MySQL分库分表必知必会

1. 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?一个高并发系统的瓶颈主要在数据库层, 为了缓解数据库的压力, 我们可以这样做:使用Redis缓存减少数据库的读并发.使用Kafka消息队列来进行写并发削峰.数据库SQL优化, 必须走索引.水平分表.读写分离.垂直分库.水平分库.2. 分库分表的类型垂直分表垂直分表一般在表设计时就应该做好. 根据业务将...

2020-03-28 14:19:27 624

原创 MySQL主从复制原理

MySQL主从复制和Redis主从复制有点像, 可以相互对照一下. Redis主从复制Binary Log日志格式STATEMENT记录每一条会修改数据的SQL语句. 相比ROW来说日志量少, 性能更高, 但在某些特殊情况下会丢失数据, 比如使用sleep()函数等.ROW如果是表结构变更, 仍然以STATEMENT格式记录SQL, 对于其他增删改SQL语句, 会将其分解为基于行更改的...

2020-03-28 14:09:52 548

原创 ZooKeeper必知必会

1. ZooKeeper有哪些使用场景?(1) 分布式锁在分布式系统中经常会遇到并发问题, 比如领取新人礼包, 限制每个人只能领取一次, 为了避免机器刷量的问题, 我们可以使用ZooKeeper实现的分布式锁.(2) Master选举比如kafka集群控制器选举.(3) 服务注册中心比如Dubbo服务注册中心, Dubbo将服务提供者的地址注册到ZooKeeper, 然后服务消费者从Z...

2020-03-26 11:09:51 412

原创 分布式事务方案

常见的分布式事务方案一共有五种, 下面我们来一起了解下.两阶段提交两阶段提交(2 Phase Commit简称2PC)是强一致性方案, 它有两个角色: 一个协调者(coordinator)和若干参与者(participant).Prepare阶段协调者向所有参与者发送prepare命令, 执行事务操作, 参与者执行成功后返回应答. (命令写入redo日志后才算执行成功)Commit阶...

2020-03-26 10:57:36 484

原创 分布式Session

分布式Session的实现原理Session的实现原理我们先来看下单机Session的实现原理.客户端第一次发送请求到服务端.服务端生成Session和Cookie, Cookie中存储了JSESSIONID, 服务端将Cookie返回给客户端.客户端再次发送请求到服务端时, 请求Cookie中会携带JSESSIONID.服务端根据Cookie中的JSESSIONID找到对应的Ses...

2020-03-24 11:15:23 313

原创 Redis和ZooKeeper的分布式锁实现

github地址: Redis和ZooKeeper对于分布式锁的实现Redis分布式锁客户端在读写redis之前必须先从redis获取锁, 只有获取到锁的客户端才能读写redis, 而其他没有获取到锁的客户端, 会以每秒一次的频率不断地去尝试获取锁.(1) 获取锁SET my_lock 随机值 PX 5000 NXPX是设置过期时间, 单位毫秒. NX是仅当key不存在时才设置值.(...

2020-03-21 17:12:47 378

原创 Dubbo必知必会

1. 为什么要进行系统拆分? 如何拆?(1) 为什么要进行系统拆分?所有的业务模块都在一个系统中, 导致系统太过于庞大, 迭代, 维护困难, 比如开发时很容易出现代码冲突, 一次小改动就需要大量的回归测试.大一统的系统会系统的可靠性降低, 一个小地方出现问题就会导致整个系统不可用.不利于技术升级, 如果某个业务系统想要技术升级, 就必须整个系统跟着一起技术升级.(2) 如何拆?使用...

2020-03-21 16:14:23 408

原创 手写一个简化版的Dubbo框架

在学习了Dubbo之后, 我发现自己好像了解了Dubbo的实现原理, 又好像不是很了解, 毕竟我只是背诵了下概念, 没有深入的去看源码. 这里我就来手写一个简化版的Dubbo框架, 通过动手实践来深入理解Dubbo的实现原理.Dubbo的实现原理RPC调用的过程我们先来看下RPC调用的过程.服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。服...

2020-03-21 15:43:14 1753 2

原创 HTTPS详解

HTTP介绍: HTTP详解HTTPS简介HTTPS出现的目的就是为了弥补HTTP的缺陷, HTTP有哪些缺陷呢?通信使用明文(不加密), 内容可能会被窃听不验证通信方的身份, 因此有可能遭遇伪装无法证明报文的完整性, 所以有可能已遭篡改HTTPS采用SSL协议(Secure Socket Layer)解决了HTTP的上述缺陷, SSL协议的安全机制如下:数据加密传输身份认证...

2020-03-19 22:25:57 743

原创 TCP三次握手与四次挥手详解

我们都知道TCP协议是面向连接的, 建立连接时需要三次握手, 断开连接时需要四次挥手, 那三次握手和四次挥手的具体流程是怎样的呢? 为什么建立连接时需要三次握手, 两次行不行? 为什么断开连接时需要四次挥手, 三次行不行? 下面我们就一起来了解下.TCP协议格式我们先来了解下TCP报文中一些重要的字段.源端口和目的端口客户端和服务端的端口号.序号序号是报文段发送的数据中第一个字节的...

2020-03-19 22:14:43 412

原创 Redis必知必会

1. 在项目中缓存是如何使用的?结合自己的公司的项目, 回答以下问题:项目哪里用了缓存?为什么要用?用了可能会带来什么问题?怎么解决这些问题?项目的缓存架构是怎么样的?如果面试官没有问这些问题, 我们也要主动和面试官聊聊.2. 为什么要在项目中用缓存?(1) 高性能如果不使用缓存, 每次请求都有较大的延迟, 比如600ms, 而如果每次请求都走缓存, 可能2ms就搞定了...

2020-03-04 16:19:30 428

原创 Redis事务和并发控制

什么是Redis事务?Redis事务不保证原子性, 即事务中的某个命令执行失败, 事务不会回滚, 且后续命令会继续执行. 这样一来, Redis事务的功能就和脚本差不多, 都是将命令打包, Redis事务能做的事, 脚本也能做, 而且脚本速度更快.(1) Redis事务相关的命令MULTI开启一个事务, 后续的命令都会添加到一个队列中, 等待EXEC命令.EXEC触发并执行事务中的所...

2020-03-04 16:15:28 1817

原创 HashMap原理

HashMap底层是通过哈希表实现的, jdk1.8为了提升HashMap的性能又引入了红黑树, 下面我们来了解HashMap的数据结构.哈希表哈希表是一种数组+链表的数据结构, 其中储存的元素节点的数据结构如下:static class Node<K,V> implements Map.Entry<K,V> { final int hash; fi...

2020-02-20 20:42:43 259

原创 Redis布隆过滤器

在redis中我们可以使用布隆过滤器(BloomFilter)来解决缓存穿透的问题, 具体流程就是, 在更新缓存时, 我们会将缓存数据的key添加到布隆过滤器中, 然后在查询缓存之前, 我们先判断key在布隆过滤器中是否存在, 存在才去查询缓存, 不存在则直接返回空.布隆过滤器(BloomFilter) 是一种插入和查询性能非常高的数据结构, 功能有点类似于HashMap, 但相对于HashMa...

2020-02-19 22:12:46 461 1

原创 鬼吹灯

Description胡八一和王胖子发现了一个墓穴决定去摸金,按照祖上传下的规矩,在摸金的时候要在墓穴口放上蜡烛,摸金的时候若是蜡烛全灭了就要把宝物放还墓主人,然而贪心的王胖子决定多放点蜡烛,墓主人的鬼魂宅在墓中上千年不运动表示肺活量不够,吹灭一根蜡烛需要x秒,设宝物有y件,胡八一每摸一个宝物需要z秒,贪心的王胖子需要你的帮助算一下需要放多少蜡烛才能在所有蜡烛熄灭前盗贼所有宝物?I

2020-02-07 14:38:30 950

原创 Elasticsearch必知必会

前置知识:Elasticsearch基本概念与核心原理Elasticsearch数据建模1. Elasticsearch的分布式架构原理是什么?Elasticsearch是分布式的, 在多台机器上启动ES进程实例, 组成一个ES集群. ES集群中的节点会选举出一个master节点来管理集群, 比如负责索引的创建与删除, 负责主分片与副本分片的身份切换等等. ES集群的master节点选举算...

2020-02-02 17:55:34 567 1

原创 Kafka必知必会

前置知识:Kafka消息队列理解Kafka发送消息和读取消息1. 为什么使用消息队列?解耦异步削峰面试时要结合自己项目中的业务场景回答, 而不是直接背诵概念, 如果面试官没有问到这些问题, 我们可以主动提出聊聊自己的理解.(1) 解耦现有系统A, B, C, 系统B和C需要系统A的数据, 然后我们就修改系统A的代码, 给系统B, C发送数据. 这时系统D也需要系统A的数据...

2020-02-01 20:44:24 752

原创 Elasticsearch数据建模

本文基于Elasticsearch7.x前置知识:Elasticsearch MappingElasticsearch 如何处理存在关联关系的数据?什么是数据建模(Data Modeling)?数据建模是创建数据模型的过程, 数据模型是对真实世界进行抽象描述的一种工具和方法, 实现对现实世界的映射.在实际开发中, 我们的数据都是存储在MySQL中, Elasticsearch数据建...

2020-01-21 17:22:52 370

原创 Elasticsearch使用Ingest Pipeline进行数据预处理

Elasticsearch可以使用自身的Ingest Pipeline功能进行数据预处理, 无须借助Logstash.Ingest Pipeline介绍Ingest Pipeline 就是在文档写入Data Node之前进行一系列的数据预处理, 进行数据预处理的就是processor, 一组处理器构成了Pipeline. 所有的预处理都在Ingest Node上执行, 默认情况下所有节点都是...

2020-01-15 21:54:07 3607

原创 Elasticsearch 如何处理存在关联关系的数据?

关系数据库的三大范式什么是范式? 范式就是数据建模的规则.第一范式: 确保每列保持原子性.数据库表中的所有字段都是不可分割的原子值.第二范式: 确保表中的每列都和主键相关.一张数据库表中只能保存一种数据, 不可以把多种数据保存在同一张数据库表中. 比如订单相关的信息会设计三张表: 订单表, 订单项表, 商品表.第三范式: 确保每列都和主键直接相关, 而不是间接相关.比如一个订单表里...

2020-01-14 23:09:30 2446

原创 Elasticsearch重建索引

本文基于Elasticsearch7.x在聊重建索引之前, 我们先了解下Elasticsearch基本概念与核心原理我们知道Elasticsearch的索引一旦创建是不可变更的, 如果我们要修改索引的Setting, Mapping, 这时就需要重建索引. Elasticsearch内置了两种重建索引的API:Update By Query在现有索引上重建索引.Reindex在其...

2020-01-14 23:02:43 1736

原创 Elasticsearch聚合分析Java Client

本文基于Elasticsearch7.x本文将上篇Elasticsearch聚合分析Rest API里的实例转化为Java ClientBucket AggregationBucket Aggregation是一系列满足特定条件的文档的集合, 类似于SQL语句里的分组功能.(1) main方法public static void main(String[] args) throws...

2020-01-10 10:04:02 1117

原创 Elasticsearch聚合分析Rest API

本文基于Elasticsearch7.x什么是聚合(Aggregation)Elasticsearch除了数据搜索之外, 提供的针对数据的统计分析功能.聚合的分类Bucket Aggregation一系列满足特定条件的文档的集合.Metric Aggregation一系列数学运算, 可以对文档字段进行统计分析.Pipeline Aggregation对其他聚合结果进行二次...

2020-01-07 22:36:08 766

原创 Elasticsearch控制相关度分数API

Elasticsearch可以控制相关度分数计算的, 让满足一些条件的分数更高.在学习本篇博客前先了解下Elasticsearch全文搜索之基础语法APIRest APIElasticsearch有三种控制相关度分数的方法:boostboostingfunction_score添加搜索实例数据POST /blogs/_bulk{"index": {}}{"post_dat...

2020-01-02 22:04:04 1901

原创 Elasticsearch分页API

本文基于Elasticsearch7.x版本.在学习本篇博客前先了解下Elasticsearch全文搜索之基础语法APIRest APIElasticsearch分页api有三种:from/sizesearch afterscrollsearch after 和 scroll用来解决深度分页时的性能问题.分布式系统中深度分页的问题Elasticsearch是分布式系统...

2020-01-02 17:45:32 2196 1

原创 ElasticSearch 复合搜索与过滤API

本文基于Elasticsearch7.x全文搜索在搜索时, 会对输入的搜索文本进行分词, 然后去倒排索引中进行匹配, 只要能匹配上任意一个关键词(词项), 就可以作为结果返回.在学习本篇博客前先了解下Elasticsearch全文搜索之基础语法APIRest API添加搜索实例数据POST /blogs/_bulk{"index": {}}{"post_date": "2020...

2020-01-02 15:42:55 1088

原创 ElasticSearch 全文搜索之基础语法API

全文实例基于Elasticsearch7.x这篇博客介绍ElasticSearch全文搜索的基础语法, 后续的复合搜索(bool)和过滤(filter)都是基于这些基础语法的.全文搜索在搜索时, 会对输入的搜索文本进行分词, 然后去倒排索引中进行匹配, 只要能匹配上任意一个关键词(词项), 就可以作为结果返回.Rest API添加全文搜索实例数据POST /blogs/_bulk...

2020-01-02 14:55:16 1496

原创 Elasticsearch基础增删改查与批量操作API

本文基于Elasticsearch7.x版本.基础增删改查新增文档(1) 语法a. 语法一PUT /index_name/_doc/id{ "字段名" : "字段值" ...}POST /index_name/_doc/id{ "字段名" : "字段值" ...}如果id不存在, 则创建新文档. 如果id存在, 则覆盖旧文档, 同时版本号增加.b. 语法二...

2019-12-25 18:54:19 654

原创 Elasticsearch基本概念与核心原理

本文基于Elasticsearch7.x版本.什么是ElasticsearchElasticsearch是一个分布式的搜索引擎和数据分析引擎, 提供了全文检索, 同义词处理, 相关度排名, 复杂数据分析, 海量数据的近实时处理等功能, Elasticsearch作为传统数据库的一个补充, 提供了很多数据库所不不能提供的功能.Elasticsearch的核心概念Elasticsearch...

2019-12-20 18:32:51 1267

原创 深入剖析零拷贝与顺序写

这篇文章我们来学习下经常出现在各种数据库与中间件设计中的零拷贝和顺序写.零拷贝零拷贝技术就是在文件传输时, 减少CPU执行的数据拷贝次数. 那如何减少数据的拷贝次数呢? 我们来学习下在不同Linux内核版本中文件传输的过程.kernel1.0版本文件传输代码:read(file, tmp_buf, len);write(socket, tmp_buf, len); 从应用...

2019-12-20 14:36:43 644

原创 Kafka发送消息和读取消息

生产者发送消息到Kafka我们先来看一个生产者-消费者最简单的实例.public class DemoProducer { public static void main(String[] args) { Properties props = new Properties(); props.put("bootstrap.servers", "192.168.124.20:...

2019-12-19 15:38:22 2758

原创 Elasticsearch搜索推荐

本文基于Elasticsearch7.x版本.什么是搜索推荐?当我们在Google上搜索信息时, Google会推荐一些相关联的搜索词, 即使我们拼写错了关键词, Google仍然会推荐出我们想要的内容, 这就是搜索推荐.Elasticsearch SuggestersElasticsearch Suggesters 包含四个功能, 下面分别介绍这四个功能及其Java Client...

2019-12-16 22:32:27 1256

原创 Elasticsearch Mapping

什么是Mapping?定义索引中字段的数据结构, 如字段名, 字段类型, 分词器等等. 类似于MySQL中的表结构.在Elasticsearch7.0之前一个index可以定义多个type, 在7.0之后就不再手动定义type, 所有index都只有一个默认的type: _doc.常见的字段类型核心类型(1) 字符串text 和 keyword需要进行全文搜索的字符串设置为t...

2019-12-02 10:32:41 501

原创 Centos7上安装sbt

sbt是一种项目管理及自动构建工具,类似于Apache Maven和Apache Ant.(1) 安装包下载地址http://www.scala-sbt.org/download.html(2) 下载安装包wget https://piccolo.link/sbt-1.3.4.tgz(3) 解压安装tar -zxvf sbt-1.3.4.tgz -C /usr/local/ap...

2019-11-28 10:48:46 2608 1

原创 IK Analyzer 热更新自定义词典

IK Analyzer的GitHub地址:https://github.com/medcl/elasticsearch-analysis-ikIK Analyzer 自己有一个热更新方案, 但不推荐使用, 我们可以修改下源码, 从mysql读取中读取自定义的词典.本文Elasticsearch安装的是5.2.0版本的, 所以对应的IK Analyzer也是安装的5.2.0版本.自定义...

2019-11-15 15:21:27 1267 2

原创 Elasticsearch倒排索引和分词器

倒排索引Elasticsearch是基于lucene实现的, 而lucene是基于倒排索引实现的, 所以我们有必要了解下什么是倒排索引.正排索引和倒排索引的区别(1) 正排索引文档ID到文档内容的关联.文档ID文档内容1Mastering Elasticsearch2Elasticsearch Server3Elasticsearch Essenti...

2019-11-13 23:05:46 471

MarkdownPad.2.4.2破解版

绿色免压缩版,解压后直接使用。第一次运行会跳出注册页面,随便填写直接注册成功。

2018-01-20

MyEclipse破解软件及教程

MyEclipse破解软件及教程、MyEclipse破解软件及教程、MyEclipse破解软件及教程

2018-01-15

空空如也

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

TA关注的人

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