计算机原理 CPU 执行过程(简述)CPU 的本质就是一个执行指令的工人。 上面的概述引发了几个问题,什么是指令?指令从哪里来?CPU 如何执行和加载这些指令? 指令,顾名思义指示和命令。这个命令和指示的对象是 CPU,CPU 可以明白它的意图,并执行。 现代 CPU 识别的指令都是由字节码组成,即一长串的 0 和 1。 还记得远古计算机是如何编写和执行指令的吗?没错,是一条条穿孔的纸带,带孔为 1,无孔为 2022-02-11 学习笔记
Stream 什么是 Stream 流流就相当于工厂的流水线工作,传送带上是一件件产品,而传送带周围是一些工人。有的负责把挑出次品,把它放到其他另一条流水线中重新加工,有的负责根据产品颜色进行收集,等等。如下图所示。 三个员工对传送带上的产品进行操作,老王负责收集把黄色产品挑出,老周负责把产品按先后排序,而老赵负责把残次品挑拣出来,拆开零件放到新的床送带中,继续加工。传送带的终点就是篮子,产品都流向篮子里面。 2022-01-03 博客专栏 #Java #Stream
2021-年终总结(技术向) 简单的聊一聊一年下来自己学到了哪些技术,做了那些改变。 学习技术与成果: Maven,啃了半本《Maven 实战》,经典永不过时。能够解决 Maven 冲突,并写了一个简单的 Maven 插件。 学习使用 Docker,熟悉 Docker 基本命令,会编写简单的 Dockerfile,以及发布自己的 Docker 镜像。 了解 Jenkis 自动化部署的流程,能够进行简单的构建。 学习 Liunx 2022-01-01 年终总结 #年终总结
布隆过滤器 问题场景:给定一组文章 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 博客专栏 #分布式 #部署