布隆过滤器 问题场景:给定一组文章 id 列表,如何判断文章 a 的 id 在给定的列表中? 我们很容易使用列表、数组、哈希表等将文章 id 先保存起来,判断重复时,直接遍历数组、列表、根据哈希值判断等。 上面的解决方式,最好的无疑是哈希表。哈希表检索时间复杂度为 O(1),但是这只限于没有发生哈希冲突的情况下,而且数据量一旦比较大,存储占用也会大大增加,会导致检索性能大大下降。 对于数据量较大的场景,如 2021-12-30 博客专栏 #布隆过滤器
GitHub 提交作业 使用一个工具的时候,应该先要问自己他是什么,他有什么作用?所以先根据这两个来初步了解下 Git 和 GitHub。 GitHubGitHub 简单来说就是一个代码仓库,里面存放着世界各地程序员写的代码,我们也可以在 GitHub 上注册自己的账号,拥有自己的代码仓库。我们可以往自己的仓库提交代码,也可以去看一些大牛的仓库,学习他们的编码技巧,倘若发现一些小 Bug,我们也可以帮助别人解决,贡献一份 2021-12-24 博客专栏 #Git #GitHub
《Effective Java》- Object 通用方法 在日常 coding 中,我们会经常使用或者覆盖 Object 对象中的方法,如:equals、toString、hashcode 等。除此之外,还有 clone、finalize 方法。限于作者实力,很少用到这两个方法,即使看过原书也是一知半解,因此不敢用来「忽悠」别人。因此,这篇文章只对 equals、toString、hashCode、compareTo(该方法并非 Object 的方法)进 2021-12-16 博客专栏 #Java #Effective Java
Docker 基础 软件的依赖,开发环境不确定性,导致部署软件项目是一件令人头疼的事。 虚拟机解决了这个问题,但是太吃内存,很耗资源。 Docker 使用了一个轻量的虚拟机。 优点 保证开发、测试、交付、部署的环境完全一致 保证资源的隔离 启动临时的、用完即丢弃的环境,例如测试 迅速(秒级)扩容 Docker 基本概念docker 可以类比装系统,换系统操作。有了这个前置知识,对于 docker 的一系列知识会更 2021-12-08 博客专栏 #Docker
Maven 代码插件 代码规范检查工具 CheckStyle功能checkstyle 插件能帮助我们规范代码行为,尽可能地检查代码的坏味道。 配置checkStyle 插件配置很简单,主要是分两步:引入插件,编写代码规则 xml。 引入插件的配置如下: 12345678910111213141516171819<plugin> <groupId>org.apache.maven 2021-11-01 学习笔记 #Maven
Java 8 函数式编程 函数式编程优点:减少工作量,减少 Bug,提高效率 减少工作量:做同样一件事,普通的方法实现,可能需要几十行代码,而函数式编程只需要几行代码 减少 Bug:代码写的越少,Bug 自然也变的越少 提高效率:别人还在吭哧坑次的写几十上百行代码时,你已经写完,顺便刷了个知乎 函数式编程深入浅出你可能对我的话不信,那咱们就来看看实际的例子 假如给定一个用户列表信息,现在要你分别获取id 为偶数的用户、姓周 2021-09-20 博客专栏 #Java
一个简单的分布式部署流程 使用 3 种不同的方式,将项目部署成 3 个实例,每个实例监听不同的端口,由 Nginx 负责将请求转发到对应的实例中,完成请求流程。 Docker 启动 MySQL,Redis首先使用 Docker 启动一个全局的 Redis,MySQL,Nginx,让项目连接上对应的数据库。 获取并启动 MySQL 获取最新的 MySQL 镜像 1docker pull mysql 启动 MySQL 1do 2021-09-01 博客专栏 #分布式 #部署
Java 包管理 java 程序的本质就是在拼接命令行,如何拼接的细节,都由 ide 帮我们实现了。假如我们在程序中添加一个包,我们只需要 java -cp 后面补上包的位置,以及这个包依赖的其他包的位置。 当程序中引用的包越来越多时,带来传递性依赖也会越来越多,要在 Java -cp 后面一个个补上包的位置,并且保证不遗漏传递性依赖的包,并且还要保证包不能同名。这将是一比巨大的工作量,费时费力,还容易出错。 这个 2021-08-26 博客专栏 #Java #Maven
命令行的入门与详解 什么是命令行操作系统都有内核的概念,内核是直接与硬件打交道的。我们通过包裹内核的一层壳( shell )来与内核打交道。 广义的命令行包括一切通过字符终端控制计算机的⽅式 Windows - cmd/PowerShell/Git bash UNIX/Linux系列:sh/zsh/Terminal, etc. 为什么需要命令行 因为基本所有公司 2021-08-26 博客专栏 #命令行
Maven 依赖与插件解析机制 劝退提醒:不了解 maven 坐标机制,没有使用过 maven 插件,不了解 maven 插件命令的,可以关闭文章了。 我们经常在项目中引入包,使用 <dependency> 标签,然后填写包的坐标信息, Maven 就可以帮我们引入该 jar 包。当本地存在该 jar 包时,就从本地引入该 jar 包,否则就从远程仓库引入。 这背后的解析机制是什么呢? 依赖解析机制依赖解析的背后机制 2021-08-26 博客专栏 #Maven