自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 资源 (5)
  • 问答 (3)
  • 收藏
  • 关注

原创 遇见ZooKeeper:初识

0. 什么是ZooKeeperZooKeeper 是一个开源的分布式,它的设计目标是将那些复杂且容易出错的分布式协同服务封装起来,抽象出一个高效可靠的原语集,并以一系列简单的接口提供个用户使用。ZooKeeper 有几大特征:易用ZooKeeper 的理解和使用成本都很低,它提供的是一种层级式的命名空间,这一点和标准的文件系统类似。可靠ZooKeeper 服务可以支持集群模式,并且能够轻松扩展,客户端可以连接到任意一个服务器,都能够获得服务。有序ZooKeeper 的节点是可以保证有序的。每

2021-02-22 23:29:57 228

原创 哲少荐书:鞋狗

很久没来荐书了,主要原因是最近读到的值得推荐的书比较少(其实是偷懒了,读书少了)。还好春节假期来临,也趁着难得的假期时间读完了一本书——《鞋狗》。这是一本读完就想要推荐给大家的书(没错,我就是刚刚读完就来推荐了)。提到《鞋狗》相信还有些朋友不太熟悉,但是提到耐克,相信大家一定都知道。即使没有买过耐克的东西,也一定在商场看到过耐克的线下门店。而《鞋狗》这本书就是耐克的创始人菲尔·奈特的亲笔自传。这本书讲述了耐克“从0到1”的过程,书中讲述了菲尔·奈特在面对合作伙伴背叛,开户行翻脸,权利的压迫等问题时是如

2021-02-18 23:04:59 236

原创 Elasticsearch从入门到放弃:浅谈算分

今天来聊一个 Elasticsearch 的另一个关键概念——相关性算分。在查询 API 的结果中,我们经常会看到 _score 这个字段,它就是用来表示相关性算分的字段,而相关性就是描述一个文档和查询语句的匹配程度。打分的本质其实就是排序,Elasticsearch 会把最符合用户需求的文档排在最前面。在 Elasticsearch 5.0 之前,相关性算分算法采用的是 TF-IDF 算法,而在5.0之后采用的是 BM 25 算法。听到这也许你会比较疑惑,想知道这两个算法到底是怎么样的。别急,下面我们

2021-01-27 00:18:44 269

翻译 【译】代码中如何写出更有意义的命名

作为一名开发人员,在编码过程中,你总会花很多时间来思考如何正确命名。因为名称无处不在,你需要考虑文件名、类名、方法名和变量名。虽然我们需要花费很多时间,但是为了更好的命名还是值得的。本文我将向你介绍几个能够帮助你编写优质命名的简单规则。命名这件事本身也是一门艺术。使用显示意图的名称名称直接显示意图这件事说起来容易做起来难。你是否经常遇到一些难以判断其用途的名称?一个好的经验法则是:如果一个名称需要注释,那么它本身就是不能说明意图的。这个代码片段就演示了一个不能显示意图的变量命名。<?php

2020-08-06 20:15:12 291

原创 Elasticsearch从入门到放弃:瞎说Mapping

前面我们聊了 Elasticsearch 的索引、搜索和分词器,今天再来聊另一个基础内容—— Mapping。Mapping 在 Elasticsearch 中的地位相当于关系型数据库中的 schema,它可以用来定义索引中字段的名字、定义字段的数据类型,还可以用来做一些字段的配置。从 Elasticsearch 7.0开始,Mapping 中不在乎需要定义 type 信息了,具体原因可以看官方的解释。字段的数据类型我们刚刚提到 Mapping 中可以定义字段的数据类型,这可能是 Mapping 最常

2020-08-04 22:56:37 2443

翻译 【译】求你不要再写没用的提交信息了

开始尝试优化你的 Git 提交信息吧我们都看到过的你在一个项目中使用 Git 作为版本控制。当你做完了一次修改之后,你想要尽快更新你的分支。所以你打开了终端,输入了下面这些命令,完成了一次远端分支的更新。git add .git commit -m "added new feature"git push然后你做了一些自测,发现了一个新鲜的 bug。问题不大,你很轻松的就解决掉了这个 bug,现在你需要把新的代码再次提交到远程分支,于是你很熟练的使用起 Git 命令。git add ..

2020-07-22 23:35:28 230

原创 Elasticsearch源码解析:环境搭建

在之前学习Redis的过程中,我就是一边通过文档/视频学习,一边阅读源码。我发现两种方法可以相辅相成,互相补充。阅读文档可以帮助我们快速了解某个功能,阅读源码有助于我们更深入的理解这一功能的实现及思想。因此,在学习 Elasticsearch 的时候我也准备采用这样的模式。所以,从今天开始,我会定期更新学习 Elasticsearch 源码的收获。在开始学习之前,需要先把环境准备好。所以今天就先分享一下准备环境的过程。软件环境Intellij Idea:2020.1版本JDK 12Gradle 5

2020-07-20 22:12:26 636

原创 Elasticsearch从入门到放弃:再聊搜索

在前文中我们曾经聊过搜索文档的方法,Elasticsearch 一般适用于读多写少的场景,因此我们需要更多的关注读操作。Elasticsearch 提供的 Search API 可以分为 URI Search 和 Request Body Search 两大类。从名称上可以直观的看出,URI Search 是使用URI的参数传递参数给 Elasticsearch,Request Body Search 则是将参数放到 Body 中进行传递,下面我们具体来看一下。URI Search首先我们来看 URI

2020-07-13 23:56:45 497

原创 Elasticsearch从入门到放弃:分词器初印象

Elasticsearch 系列回来了,先给因为这个系列关注我的同学说声抱歉,拖了这么久才回来,这个系列虽然叫「Elasticsearch 从入门到放弃」,但只有三篇就放弃还是有点过分的,所以还是回来继续更新。之前我们聊过了 Elasticsearch 的索引和文档,不太熟悉的话可以先翻阅一下前文。今天再一起聊一下 Elasticsearch 的分词器。关于分词如果你是讲 Elasticsearch 作为搜索引擎,那么你应该需要对分词进行了解,Elasticsearch 的分词是将全文本转换为一系列单

2020-06-29 22:24:49 1082

原创 Rust入坑指南:万物初始

有没有同学记得我们一起挖了多少个坑?嗯…其实我自己也不记得了,今天我们再来挖一个特殊的坑,这个坑可以说是挖到根源了——元编程。

2020-04-09 22:12:39 2045

原创 Rust入坑指南:居安思危

任何事情都是相对的,就像Rust给我们的印象一直是安全、快速,但实际上,完全的安全是不可能实现的。因此,Rust中也是会有不安全的代码的。严格来讲,Rust语言可以分为Safe Rust和Unsafe Rust。Unsafe Rust是Safe Rust的超集。在Unsafe Rust中并不会禁用任何的安全检查,Unsafe Rust出现的原因是为了让开发者可以做一些更加底层的操作。这些事情本身...

2020-04-02 22:50:09 844 1

原创 走近源码:Redis如何清除过期key

“叮……”,美好的周六就这么被一阵钉钉消息吵醒了。业务组的同学告诉我说很多用户的帐号今天被强制下线。我们的帐号系统正常的逻辑是用户登录一次后,token的有效期可以维持一天的时间。现在的问题是用户大概每10分钟左右就需要重新登录一次。这种情况一般有两种原因:1、token生成时出问题。2、验证token时出现问题。通过检查日志,我发现是验证token时,Redis中已经没有对应的token了。...

2020-04-01 22:51:18 1261

原创 Rust入坑指南:齐头并进(下)

前文中我们聊了Rust如何管理线程以及如何利用Rust中的锁进行编程。今天我们继续学习并发编程,原子类型许多编程语言都会提供原子类型,Rust也不例外,在前文中我们聊了Rust中锁的使用,有了锁,就要小心死锁的问题,Rust虽然声称是安全并发,但是仍然无法帮助我们解决死锁的问题。原子类型就是编程语言为我们提供的无锁并发编程的最佳手段。熟悉Java的同学应该知道,Java的编译器并不能保证代码的...

2020-03-24 23:24:32 843

原创 Rust入坑指南:齐头并进(上)

我们知道,如今CPU的计算能力已经非常强大,其速度比内存要高出许多个数量级。为了充分利用CPU资源,多数编程语言都提供了并发编程的能力,Rust也不例外。聊到并发,就离不开多进程和多线程这两个概念。其中,进程是资源分配的最小单位,而线程是程序运行的最小单位。线程必须依托于进程,多个线程之间是共享进程的内存空间的。进程间的切换复杂,CPU利用率低等缺点让我们在做并发编程时更加倾向于使用多线程的方式...

2020-03-16 23:25:53 806 1

翻译 【译】推荐你使用Vim的三个半理由

在很久以前,软件行业就有一种争论:究竟要不要使用Vim。这种争论有点像音乐界关于模拟信号与数字信号的争论。在大多数工程师眼中,Vim是一种老旧的,已经过时了的文本编辑器。它缺乏很多优秀的功能,用起来也没有现代的IDE舒服。但实际上,Vim绝对不是一种老旧的文本编辑器。Vim就像是手动挡的汽车一样。你必须要学会如何去驾驭它,如何手动换挡。而一旦你习惯了以后,就会获得成倍的收获与乐趣。它可以带着...

2020-03-12 23:13:49 605

原创 Rust入坑指南:智能指针

在了解了Rust中的所有权、所有权借用、生命周期这些概念后,相信各位坑友对Rust已经有了比较深刻的认识了,今天又是一个连环坑,我们一起来把智能指针刨出来,一探究竟。

2020-03-10 22:42:03 1048

原创 Rust入坑指南:朝生暮死

今天想和大家一起把我们之前挖的坑再刨深一些。在Java中,一个对象能存活多久全靠JVM来决定,程序员并不需要去关心对象的生命周期,但是在Rust中就大不相同,一个对象从生到死我们都需要掌握的很清楚。

2020-03-03 22:07:32 533

翻译 【译】教你用16个小时从0构建一个Rust应用

我们在2019年的最后两天,参加了Prodigy Education举办的黑客马拉松,许多团队聚在一起努力将他们的想法变成现实。我们之中有的人只是单纯为了好玩,有的是想学一些新的知识,还有些人可能是想证明一些概念或想法。我在过去几周总是被动的获取Rust相关信息或使用Rust的代码,因此我认为hackathon是一次学习Rust的绝佳时机。hackathon的时间紧迫性使我更加快速的去学习,...

2020-02-24 22:58:38 1087

原创 Rust入坑指南:步步为营

俗话说:“测试写得好,奖金少不了。”

2020-02-21 22:54:42 1124

翻译 【译】感谢你的Code Review

作为一名初级工程师,当我看到一些问题时,通常会主动去解决它们,因此我总会进行一些大范围的代码修改。

2020-02-18 22:20:18 796

原创 吐血推荐珍藏的IDEA插件

之前给大家推荐了一些我自己常用的VS Code插件,很多同学表示很受用,并私信我说要再推荐一些IDEA插件。作为一名职业Java程序员/业余js开发者,我平时还是用IDEA比较多,所以也确实珍藏了一些IDEA插件。今天就一并分享给大家。在最开始,我还是想先介绍一下IDEA中如何安装插件,首先打开Preferences(菜单栏打开或者使用快捷键Command+,)在Windows版本中应该是Set...

2020-02-10 14:23:14 8843 16

原创 Rust入坑指南:海纳百川

今天来聊Rust中两个重要的概念:泛型和trait。很多编程语言都支持泛型,Rust也不例外,相信大家对泛型也都比较熟悉,它可以表示任意一种数据类型。trait同样不是Rust所特有的特性,它借鉴于Haskell中的Typeclass。简单来讲,Rust中的trait就是对类型行为的抽象,你可以把它理解为Java中的接口。

2020-01-15 02:46:28 1800

翻译 【译】教你用50种语言写Hello, World

当我们学习一门新的语言时,“Hello, World!“通常是我们所写的第一个程序。相信作为一名程序员的你,职业生涯中至少完成了一个“Hello, World!“程序。程序员一般也都会使用多门语言,甚至有多数人都会使用十几种语言。

2020-01-07 22:50:19 7118 30

原创 Rust入坑指南:亡羊补牢

如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大。它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃。所以今天我们就来聊一聊Rust中如何处理程序错误,也就是所谓的“亡羊补牢”。

2020-01-01 13:38:47 1539

翻译 antirez:Redis6真的来了

12月20号,Redis发布了Redis6-rc1版本,作者antirez也在自己的博客中宣布了这一消息,并对Redis6版本做了一些介绍,以下是译文。

2019-12-24 22:51:12 882

原创 代码检查又一利器:ArchUnit

Code Review总是让人又爱又恨,它可以帮助我们在提测之前发现很多代码中比较“丢人”的问题,但是,Code Review通常会比写代码更加耗费精力,因为你需要理解别人的代码,而为了这一目的,往往需要很多次的沟通。

2019-12-17 22:54:27 659 3

翻译 【译】浅谈SOLID原则

SOLID原则是一种编码的标准,为了避免不良设计,所有的软件开发人员都应该清楚这些原则。SOLID原则是由Robert C Martin推广并被广泛引用于面向对象编程中。正确使用这些规范将提升你的代码的可扩展性、逻辑性和可读性。

2019-12-05 23:02:35 614

原创 Rust入坑指南:鳞次栉比

很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑。没错,就是要介绍一些集合类型的数据类型。“鳞次栉比”这个标题是不是显得很有文化?

2019-12-02 23:04:03 990

翻译 【译】什么才是优秀的代码

究竟什么是优秀的代码?Robert Martin的一句话可以完美诠释。

2019-11-28 22:39:24 6650 10

原创 Elasticsearch从入门到放弃:文档CRUD要牢记

在Elasticsearch中,文档(document)是所有可搜索数据的最小单位。它被序列化成JSON存储在Elasticsearch中。每个文档都会有一个唯一ID,这个ID你可以自己指定或者交给Elasticsearch自动生成。

2019-11-25 23:20:11 964

翻译 【译】利用Lombok消除重复代码

当你在写Getter和Setter时,一定无数次的想过,为什么会有POJO这么烂的东西。你不是一个人!(不是骂人…)无数的开发人员花费了大量的时间来写这种样板代码,而他们本来可以利用这些时间做出更有价值的输出。

2019-11-23 15:48:42 623

原创 敲开通往架构师的门

最近学习了一些关于架构设计的知识想分享给大家。俗话说得好,不想当架构师的程序员不是好厨子。那么如何成为一名架构师呢?接下来就聊一聊我的一些想法。什么是架构师之前有同学问我,做了几年技术,应该转管理还是转架构师?对于这位同学,我给他的答案是,你要先踏踏实实做好现在的工作。因为就他提的问题来看,应该是刚入行不久或者是在校学生。专心做技术的,都想做架构师。但架构师并不是说技术做时间长了可以转的。随...

2019-11-14 21:32:00 3818 10

原创 吐血推荐珍藏的Visual Studio Code插件

作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。下面我们进入正题Material Theme...

2019-11-12 23:21:05 23110 5

翻译 【译】工程师如何打怪升级

初级、中级和高级工程师并不是通过你从事编码工作的年限来判断的。初级工程师有时可能比高级工程师工作时间还要长。能否成为更高等级的工程师完全取决于你对专业技能的掌握程度,这也不是说高级工程师必须在每一方面都是专家,但是可以肯定的是,高级工程师一定比初级和中级工程师更加专业。不仅仅是编程能力更加专业,高级工程师和初中级工程师相比还有其他区别。这区别到底是什么呢?知识很明显,高级工程师需要掌握更多的...

2019-11-07 00:31:56 717

原创 Rust入坑指南:有条不紊

随着我们的坑越来越多,越来越大,我们必须要对各种坑进行管理了。Rust为我们提供了一套坑务管理系统,方便大家有条不紊的寻找、管理、填埋自己的各种坑。Rust提供给我们一些管理代码的特性:**Packages:**Cargo的一个特性,帮助你进行构建、测试和共享crates**Crates:**生成库或可执行文件的模块树Modules和**use:**用于控制代码组织、范围和隐私路径**...

2019-11-05 00:25:33 1055

翻译 【译】做好这几件事,代码质量可以提升一个档次

这篇文章又是关于代码质量的,有些同学可能觉得我比较啰嗦。不过我就是想用这种方式让大家重视起来。其实说来说去就那么几种方法,但是实际执行起来真是难于登天。低质量的代码真的是一种灾难。当你的代码变得越来越混乱,维护起来就会花费大量的时间。在最坏的情况下,代码将变得不可维护,并且项目会慢慢终止。为了避免这种情况,你需要注意你的代码质量。尝试在代码质量上花费一些时间,长久来看,这将对你有很大的好处。...

2019-10-30 21:53:19 638

原创 Rust入坑指南:千人千构

坑越来越深了,在坑里的同学让我看到你们的双手!前面我们聊过了Rust最基本的几种数据类型。不知道你还记不记得,如果不记得可以先复习一下。上一个坑挖好以后,有同学私信我说坑太深了,下来的时候差点崴了脚。我只能对他说抱歉,下次还有可能更深。不过这篇文章不会那么深了,本文我将带大家探索Structs和Enums这两个坑,没错,是双坑。是不是很惊喜?好了,言归正传。我们先来介绍Structs。Stru...

2019-10-28 21:41:46 1173

翻译 【译】如何成为一名优秀的初级工程师

很多人都在想着如何成为一名高级工程师,而我想要的是先成为优秀的初级工程师。明年将是我正式受雇佣写代码的第15年了。(译者:老外的写代码职业生涯真的挺长的)回首往昔,我第一天工作的日子仍然历历在目。那时的我每天都在格子间中写着SAP、算法、数据结构、SQL和C++,还涉及了更广泛的主题,包括知识管理和项目管理。我了解所有的这些知识,但我缺乏的是在需要的地方使用这些知识的信心。我花了很多年才获得...

2019-10-24 22:05:02 2322 7

原创 Elasticsearch从入门到放弃:索引基本使用方法

前文我们提到,Elasticsearch的数据都存储在索引中,也就是说,索引相当于是MySQL中的数据库。是最基础的概念。今天分享的也是关于索引的一些常用的操作。创建索引curl -X PUT "localhost:9200/jackey?pretty"ES创建索引使用PUT请求即可,上面是最简单的新建一个索引的方法,除此之外,你还可以指定:SettingsMappingsalia...

2019-10-22 22:30:43 1024

翻译 【译】送给你的代码审查问题手册

快来领取这份代码审查问题手册!代码审查列表,是代码审查的明确规则和指导手册,它可以使代码审查为你的团队带来更多好处,并且能够显著提升代码审查的速度。研究表明,使用代码审查列表的审阅者的表现要优于不使用的审阅者。所以不管你是新手开发者还是经验丰富的开发者,开始考虑使用代码审查列表吧。代码作者应该关注的列表作为代码的作者,你应该保证:代码编译成功并且通过静态检查(没有警告)代码通过所有...

2019-10-16 21:27:15 612

全是经典|分布式论文

非常经典的分布式论文,包括分布式基础知识、分布式一致性、分布式数据结构、分布式实战4部分。总量超过40篇!

2019-11-15

机器学习技能图谱.jpg

机器学习技能图谱!

2019-08-29

笨办法学Python

笨办法学Python 第三版 中文版 带目录;笨办法学Python 第三版 中文版 带目录

2017-09-30

opengl画五角星

用opengl画出随时间变大的五角星,还有100个颜色大小不同的

2015-04-24

列主元消去

列主元消去法的源代码,可应用于计算方法课程学习

2014-07-20

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

TA关注的人

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