Java
文章平均质量分 82
我就算饿死也不做程序员
欢迎关注同名公众号:"我就算饿死也不做程序员"。
交个朋友,一起交流,一起学习,一起进步。
展开
-
布隆过滤器 (Bloom Filter):用于超大数据量时检索一个元素是否存在
相信大家在开发过程中,经常会遇到判断一个字符串(或其他类型的变量值)是否已经出现过的需求,这个时候一般使用HashMap可以解决,先将出现过的字符串存于HashMap对象的keySet中,下次只要判断HashMap对象的keySet是否含有该字符串,就能知道是否其已经出现过。但是,当我们HashMap存放的数据越多,查询速度就会越慢,而且占用内存也会越大。为什么查询速度会变慢呢?知道HashMap底层原理的就不难想到,key的hashcode分布不均匀,可能很多key的hashcode被分配到同一个位原创 2020-08-12 21:07:44 · 760 阅读 · 0 评论 -
Spring Boot项目技术入门级使用教程
前言由于本人并没有经常使用Spring Boot项目,没有去阅读源码,此篇博客仅仅是入门级别的使用教程,为了在想简单使用Spring Boot项目时可以用上。创建springboot项目在IDEA安装插件:Spring Assistant。然后按平时的操作新建项目New Project…项目创建之后会自动生成一个启动类,用于springboot项目的启动。接着,我们在resources目录下,新建一个application.yml文件,用于springboot相关配置或其他参数配置。这里原创 2020-07-21 21:02:38 · 219 阅读 · 0 评论 -
Lucene源码(一):分词器的底层原理
文章目录官方DemoQueryTermStandardAnalyzer源码分析QueryBuilder.createFieldQueryStandardTokenizerStandardTokenizerImpl官方Demo我们先看官方提供的demo代码,从使用demo运行一遍,看看分词之后的结果,然后再对源码进行研究。分词的核心代码其实就是这几句:Analyzer analyzer = n...原创 2020-04-07 21:23:26 · 858 阅读 · 0 评论 -
二叉树的不同形式:顺序存储二叉树 & 线索化二叉树
顺序存储二叉树从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看右面的示意图。顺序存储二叉树的特点:顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为 2 * n + 1第n个元素的右子节点为 2 * n + 2第n个元素的父节点为 (n-1) / 2n : 表示二叉树中的第几个元素(按0开始编号如图所示)线索化二叉...原创 2020-03-23 07:12:24 · 338 阅读 · 0 评论 -
Spark Streaming监听Socket解决自动断开连接
Spark Streaming与Socket我们在使用Spark Streaming的实时计算功能的时候,有时候会与Socket进行通信,即通过Spark Streaming监听Socket,实时获取从Socket发送的数据进行处理。但最近发现一个坑:Socket如果客户端与服务端之间有一段时间没有进行通信,即客户端与服务端之间相互没有进行数据传输,那么客户端与服务端的连接就会自动断开。参考...原创 2019-12-26 21:03:40 · 867 阅读 · 0 评论 -
JVM:垃圾回收算法和垃圾收集器
文章目录垃圾回收算法标记清除法复制算法标记-整理法分代收集垃圾收集器Serial收集器ParNew收集器Parallel收集器CMS收集器G1收集器常用参数配置垃圾回收算法标记清除法首先标记出需要回收的对象,在标记完成后统一回收掉所有被标记的对象。效率低回收后会产生大量内存碎片(不连续的内存空间);之后需要分配较大对象(如数组)时无法找到足够的连续内存而不得不提前触发另一次垃圾回收。...原创 2019-12-17 22:29:27 · 192 阅读 · 0 评论 -
JVM:java运行时数据区和内存结构
一、运行时数据区类加载器:JVM启动或类运行时将class文件加载到JVM中执行引擎:负责执行class文件中的字节码指令内存区:即运行时数据区本地接口:主要是调用C或C++实现的本地方法一)堆是Java虚拟机所管理的内存中最大的一块。由所有线程共享,在虚拟机启动时创建。堆区唯一目的就是存放对象实例。是垃圾收集器管理的主要区域,因此很多时候也被称为“GC堆”。二)方法区jd...原创 2019-12-17 21:36:48 · 362 阅读 · 0 评论 -
Redis SCAN:实现key的模糊匹配的科学方法
目录scan基本介绍shell使用scan最基本的scan带匹配模式和count的scanjava中使用hscanscan基本介绍在使用redis的时候,我们经常涉及到这样的需求:模糊搜索key,即找出满足特定匹配模式的所有key。但是,如果使用像keys和hkyes这样的方法的话,当key的数量特别多时,效率会很慢,而且对线上的redis查询影响较大,非常不推荐这样的做法。比较好的方法是s...原创 2019-12-16 20:51:48 · 8305 阅读 · 1 评论 -
最全面的Java读写文件
这篇博客将全面的讲述java如何读写文件(不仅限于文本文件),并且还提供最为规范的代码模式。字节流字节流的读写操作可以适用于任何文件,包括图片、音频等public static void byteRead() { // 1.、创建流 File file = new File("src/IO/a.txt"); // 2、选择流 InputStream in = ...原创 2019-11-26 22:20:41 · 128 阅读 · 0 评论 -
图的存储、深度优先遍历和广度优先遍历
图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:图的创建在考虑代码实现中,我们可以通过一个列表来存储所有的结点,数组来存储所有边。package com.hong.graph;import java.util.ArrayList;import java.util.Arrays;public class Graph {...原创 2019-11-01 07:55:07 · 1247 阅读 · 0 评论 -
赫夫曼树的原理、构建和java实现
何为赫夫曼树给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。基本概念路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根...原创 2019-10-23 23:03:25 · 198 阅读 · 0 评论 -
Spark通过Scan的API读取HBase表限定范围的数据
在这篇博客中Spark对HBase进行数据的读写操作,我通过代码说明如何通过Spark对HBase表的数据进行读取并转化为RDD。但是,这种方式只能是进行全表读取,那如果我们只想读取一部分的数据,应该如何实现呢?通过hbase shell中的scan方法的API,设置起始行和结束行,对限定范围的数据进行扫描转化为RDDimport java.text.SimpleDateFormat;i...原创 2019-10-22 20:58:59 · 2458 阅读 · 0 评论 -
平衡二叉树(AVL)的原理和java实现
目录什么是AVL左旋转右旋转双旋转java实现什么是AVL平衡二叉树(AVL:下面我们都统称AVL)也是一种二叉排序树,但是它的左子树和右子树的高度差不超过1,可以认为是二叉排序树优化之后的一种数据结构。(如果对二叉排序树不了解的,可以看我之前的博客二叉排序树的创建和节点删除)那么,为什么会产生AVL这种数据结构呢?如果,我们对{1,2,3,4,5,6}这样一个数组来创建二叉排序树,那...原创 2019-10-21 07:09:05 · 461 阅读 · 0 评论 -
二叉排序树的创建和节点删除
二叉排序树-BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。例如对于一批数据 (7, 3, 10, 12, 5, 1, 9) 对应的二叉排序树如下:二叉排序树的创建其实,二叉排序树创建比较简单,其实就是一个个节点加上,怎么将节点往树上加呢?与父子树进行进行比较,比父子树...原创 2019-10-17 21:14:07 · 1583 阅读 · 1 评论 -
数据结构:队列的java实现以及优化
队列队列是一种先进先出,后进后出的数据结构。如果用数组的基本数据结构实现的话,普通的队列只能入列的元素数量为数组的大小,不管是否已经出列。/** * 队列:先入先出,后入后出 * 最多只能入列maxSize个元素,不管是否已经出列 */public class Queue { private int maxSize; // 队列的最大容量 private int f...原创 2019-10-11 07:38:41 · 180 阅读 · 0 评论 -
spark sql和jdbc将数据写入mysql的对比
目录jdbcspark sql引用的库类效率对比连接mysql错误jdbcpublic static void jdbc() { // test为数据库名,spark为表名 final String url = "jdbc:mysql://localhost:3306/test"; final String username = "root"; final String pas...原创 2019-10-09 20:58:18 · 1241 阅读 · 0 评论 -
maven工程读取resources配置文件的正确姿势
我们maven项目结构如下:使用相对路径来读取resources目录下的资源文件InputStream in = new InputStream(new File(“src/main/resources/car.txt”));这样在本地运行的时候,是能正常读取到的,不会报错,但是如果打成jar包,运行的时候就会报路径错误。从jar包的结构可以看到,resources目录的资源文件位置变...原创 2019-08-29 22:18:34 · 1578 阅读 · 0 评论 -
Java调用在python中完成训练的tensorflow模型
众所周知,tensorflow是Google开源的一个深度学习框架。虽然它除了python语言兼容,还提供了c和Java的API,但目前大部分人还是选择在python环境进行深度学习模型的搭建和训练,不过很多时候,我们需要将完成训练之后较为有效的模型进行封装和部署,但是像许多公司最后的部署都是用Java语言实现的,所以,此时我们就需要掌握如何通过Java来调用tensorflow的模型。保存模型...原创 2019-08-20 21:23:41 · 3545 阅读 · 1 评论 -
maven打包--同时将仓库依赖和本地依赖的jar包也打进去
maven添加依赖首先,如何在maven项目中添加依赖包?这个相信对于大部分人来说是非常简单的,在pom.xml文件如下配置: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> ...原创 2019-08-01 23:27:02 · 27041 阅读 · 1 评论