- 博客(52)
- 问答 (2)
- 收藏
- 关注
原创 手搓跳表——SkipList
public class SkipList { /** * 节点晋升索引的概率 */ private static final double PROMOTE_RATE = 0.5; /** * 描述跳表中头节点,哨兵 */ private Node head; /** * 描述跳表中尾节点,哨兵 */ private Node tail; /** * 当前索引层的高度 *.
2020-08-25 19:59:42 269
原创 Find-Union
Quick-Findpublic class UnionFind { private int[] element; public UnionFind(int capcity){ element = new int[capcity]; for (int i = 0;i<capcity;i++){ element[i] = i; } } public int find(int p){
2020-08-21 16:50:59 253
原创 AQS源码——通过BlockingQueue来看条件队列
阻塞队列这次主要是通过ArrayBlockingQueue来观察AQS的操作过程,我们先看看ArrayBlockingQueue是怎么实现的:成员变量 /** The queued items,用于存储元素的数组*/ final Object[] items; /** items index for next take, poll, peek or remove,队列的头指针,用于出队 */ int takeIndex; /** items index
2020-08-21 09:09:50 313 1
原创 手搓定长阻塞队列
/** * 致敬李二狗先生! * @param <T> */class MyBlockingQueue<T> { private Object[] values; private int head = 0; private int tail = 0; private int size = 0; private Lock lock; private Condition notFull; private Condition
2020-08-13 18:18:04 209
原创 Docker搭建RabbitMQ双节点集群
服务器服务器A的IP 192.168.8.1 服务器B的IP 192.168.8.2 创建持久化文件夹#在192.168.8.1上执行命令mkdir -p /home/rabbitmq/cluster/rabbitmq01#在192.168.8.2上执行命令mkdir -p /home/rabbitmq/cluster/rabbitmq02启动RabbitMQ#在192.168.8.1上执行docker run -d --hostname rabbitmq01
2020-08-05 15:31:07 803
原创 自定义类加器——加载指定目录下的jar包
import sun.net.www.ParseUtil;import java.io.File;import java.io.IOException;import java.net.URL;import java.net.URLClassLoader;import java.util.Arrays;import java.util.stream.Collectors;public class RbcClassLoader extends URLClassLoader { pr.
2020-08-03 13:24:13 1572
原创 剑指Offer——快速排序
public class QuickSort { private int partition(int[] nums, int left, int right) { //获取随机基准数 int random = rangeRandom(left, right); //小于基准数的边界 int small = left-1; //将基准数放到最后一位 swap(nums,random,right); .
2020-07-02 18:19:06 2832
原创 AQS源码——通过Semaphore来看共享锁
前言我们可以先翻到最后看一下大致的步骤,有了宏观上的把控之后,在阅读源嘛会更好一些!还有就是这篇文章中哪里有问题一定要指正,防止误人子弟,谢谢大家啦!用例//同时只允许两个线程获取资源Semaphore semaphore = new Semaphore(2);String[] name = {"A","B","C","D"};for (int i = 0; i < 4; i++){ Thread thread = new Thread(() -> {
2020-05-26 23:30:13 257 1
原创 数据结构——简易版BitSet
public class MyBitSet { /** * int类型长度是32bit 32 == 1<<5 */ public static final int ADDRESS_BITS_PER_WORD = 5; /** * BitSet的长度 */ private int size; /** ...
2020-05-06 11:57:26 194
原创 算法——快速排序
public class QuickSort { /** * 双指针排序: * 1、找基准数:先默认第0位(可优化:随机选三个用中间值) * 2、右指针要大于左指针 * 3、右指针左移找到比基准值小的 * 4、左指针右移找到比基准值大的 * 5、交换左右指针所指位置的值 * 6、两指针重合后交换指向位置的值和基准数的值...
2020-04-24 15:38:38 135
原创 数据结构——二叉堆
public class HeapSort { /** * 上浮调整小顶队 * * @param arr */ public void upAdjust(int[] arr) { //获取做后一个叶子结点A的位置 int targetSon = arr.length - 1; //获取该叶子...
2020-04-24 13:36:54 121
原创 数据结构——二叉搜索树之节点删除
/** * 二叉搜索树的删除一般分为三种情况; * 1. 要删除的节点本身是叶子结点 -> 直接删除 * 2. 要删除的节点本身只有一个孩子节点 -> 用孩子节点替换他 * 3. 要删除的节点本身有两个孩子节点 -> 找到该节点A 的后继节点(比该节点大的最小节点,也就是右子树的最左叶子结点)B 然后用B替换A 最后再右子树中删除B(又可以...
2020-04-21 12:54:22 923
原创 Mysql之orderby、Join
Order By单路排序将符合条件的行的所有查询列取出来放到sortBuffer中,进行排序后直接返回。双路排序将符合条件的行的排序列与主键取出来放到sortBuffer中,按照目标列排序后通过主键回表查询。抉择如果查询字段的总长度大于max_length_for_sort_data则是哟哦那个双路排序,否则是哟哦那个单路排序。Join循环嵌套从驱动表中取出一条...
2020-04-07 22:36:35 793
原创 算法题——只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。要求:算法应该具有线性时间复杂度:O(n) 不使用额外空间:O(1)class Solution { public int singleNumber(int[] nums) { int result= 0; for(int i = 0;i<...
2020-03-19 10:51:02 1460 2
原创 Java调用Canda环境下的Python脚本所遇到环境问题的解决方法
代码如下:Process exec = Runtime.getRuntime().exec("python3 " + pythonScriptPath);byte[] bytes = new byte[1024];InputStream errorStream = exec.getErrorStream();while (errorStream.read(bytes, 0, byte...
2020-03-04 15:27:09 1746 2
原创 简易版线程池——模仿ThreadPoolExecutor
简易版线程池一切尽在代码中。。。线程池类/** * @Author Mr.wei * @Date 2020/2/18 15:00 * @Description:没有核心线程与非核心线程概念、删减了状态(RUNNING、SHUTDOWN、STOP、TIDYING、TERMINATED)、没添加结束方法...... */public class CThreadPoolExecu...
2020-02-19 14:58:52 235
原创 Docker入门篇——简介
简介介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker用Go语言编写,并利用Linux内核的多个功能来实现其功能。我们可以把他看成没有内核只有文件系统的Linux。组成下图是从官网截...
2019-12-23 20:10:53 224
原创 Zookeeper操作篇——Curator
直接上代码大家跟着敲一遍就明白了!先添加Maven:<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.11.1&l...
2019-12-10 20:03:24 400
原创 Spring中访问Restful接口
目录Spring中调用Restful接口RestTemplate简介使用AsyncRestTemplate简介使用注意Spring中调用Restful接口RestTemplate简介RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回...
2019-11-27 17:55:46 1178
原创 Druid连接池的使用及加密
Maven<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version></dependency>获取密钥在你jar包所在目录...
2019-11-25 18:18:09 603
原创 Java的类加载与实例化
目录Java类加载和实例化的过程JVM模型类加载过程加载链接初始化类实例化过程隐式三步 调用顺序类加载器启动类加载器扩展类加载器系统类加载器双亲委派模式原理优势Java类加载和实例化的过程JVM模型从百度百科中盗出来一张JVM模型图:类加载过程类从被加载到JVM内存中开始,到卸载出内...
2019-11-25 14:52:30 896
原创 Spark进阶篇——共享变量
目录共享变量广播变量概述原理实现总结累加器概述实现总结共享变量广播变量概述使用广播变量,每个executor的内存中,只驻留一份变量副本,而不是对每个task都传输一次变量,省去了很多的网络传输,对性能的提升有很大的帮助,而且通过高效的广播算法来减少传输代价。使用广播变量的场景很多,Spark一种常见的优化方式就是小表广播,使用map j...
2019-11-22 17:24:59 1165
原创 SpringBoot中使用基于注解的AOP
依赖在pom中添加一下依赖:<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.1</version></dependency>...
2019-11-19 19:28:44 1001
原创 Zookeeper——基础篇
目录Zookeeper模型数据模型Znode基本操作APIWatch一致性服务结构ZABZXID崩溃恢复写入数据参数详解最低配置高级配置Zookeeper模型数据模型它很像数据结构当中的树,也很像文件系统的目录。树是由节点所组成,ZooKeeper 的数据存储也同样是基于节点,这种节点叫做Znode...
2019-11-15 11:41:11 371
原创 HttpRest和Rpc关系图解
HttpRest的流程:Rpc的流程:其中网络服务,可以直接是传输层的TCP也可以是应用层的HTTP。区别:HTTPRest无需客户端stub代码和服务端stub代码,调用也不再是类似本地方法调用的方式了。...
2019-11-08 11:07:01 582
原创 Cassandra权限设置
1. 修改Cassandra配置文件 cassandra.yaml,并重启authenticator: PasswordAuthenticatorauthorizer: CassandraAuthorizer2. 使用默认账号登录./cqlsh -u 'cassandra' -p 'cassandra' 192.168.8.113. 修改system_auth,避免单点故障...
2019-11-05 16:26:29 920
原创 Spark入门篇——RDD的缓存/持久化
目录RDD的缓存/持久化缓存的意义RDD的缓存方式cache注意事项Checkpoint原理流程缓存和checkpoint的比较例子RDD的缓存/持久化Spark速度非常快的原因之一,就是在不同操作中可以在内存中持久化或缓存数据集。当持久化某个RDD之后,每一个节点都将把计算的分片结果保存在内存中,并且对此RDD或衍生出的RDD进行的其他动作重用。这使得...
2019-11-04 14:38:40 1095
原创 Spark入门篇——自定义排序
自定义排序封装到类或者样例类把数据封装到类或者case class中,然后继承Ordered[类型],然后就可以进行排序了,类中指定了排序的规则。如果是class,则需要实现序列化特质——Serializable(否则会报错),如果是case class,可以不实现该序列化特质。这种处理方式,返回值类型是类的实例化对象。def main(args: Array[String]): U...
2019-10-29 17:10:32 202
原创 解决fastjson对象转json字符串时json属性首字母小写的问题
只需要在类中get方法上加一个注释。@JSONField(name = "DATA_TYPE")public String getDATA_TYPE() { return DATA_TYPE;}public void setDATA_TYPE(String DATA_TYPE) { this.DATA_TYPE = DATA_TYPE;}@JSONField(n...
2019-10-29 09:03:08 719
原创 Spark入门篇——RDD的血缘
目录RDD的血缘概述划分依赖的背景划分以来的依据窄依赖宽依赖join的依赖宽依赖窄依赖依赖与Stage的划分Stage的类别依赖与容错转换算子中间发生失败DAG的生成总结RDD的血缘概述RDD可以从本地集合并行化、从外部文件系统、其他RDD转化得到,能从其他RDD通过Transformation创建新的RDD的原因是R...
2019-10-21 15:04:25 1620
原创 Spark入门篇——RDD与算子
目录RDD与算子简介创建RDD集合并行化外部文件系统创建父类RDD转换成新的子RDDRDD的属性RDD的分区RDD编程RDD算子TransformationActionRDD与算子简介RDD(Redilient Distrobuted Dataset) 是Spark的计算模型,叫做弹性的分布式数据集,是Spark中最基本的数据抽象,它代表...
2019-10-16 18:54:01 485
原创 Cassandra入门篇——安装部署
Cassandra安装部署下载cassandra软件浏览器登录:http://www.apache.org/dyn/closer.lua/cassandra/3.11.4/apache-cassandra-3.11.4-bin.tar.gz下载相应版本的安装包:http://mirror.bit.edu.cn/apache/cassandra/3.11.4/apache-cassa...
2019-10-15 10:14:41 2029
原创 Spark入门篇——安装及结构说明
目录Spark简介特点集群搭建环境说明软件说明安装启停常用术语ApplicationDriverExecutorCluster ManagerWorkerTaskJobStageDAGSchedulerTaskSchedulerWordCountSpark简介Apache Spark是一种快速、通用、可扩展...
2019-10-14 20:30:36 290
原创 shell脚本之sed
sed简介例子在最下方,大家可以直接拉下去看。什么是sedStream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。sed的用法命令sed [option] ‘[action]’文件名...
2019-10-09 11:30:46 268
原创 关于ssh远程执行命令报错:command not found
先上一张错误图:使用SSH远程调用命令出现command not found。解决方案如下——》由于我的java的环境变量是配置在~/.bash_profile中的,所以:#添加source ~/.bash_profile;ssh cassandra20 "source ~/.bash_profile;java -version" 结果入下:...
2019-09-18 17:48:57 4774 1
原创 Maven打包时如何将配置文件和依赖的Jar包打到包外
<build> <resources> <!--指定src/main/resources资源要过滤--> <resource> <directory>src/main/resources</directory> ...
2019-09-06 16:32:00 4736
原创 ElasticSearch入门
最近学习所得,欢迎大家指正!目录ES简介ES安装IK分词器安装ES名词解释普通操作IndexTypeDocumentJavaAPI获取Client创建Index和TypeDocument批量插入批量删除批量查询ES简介ElasticSearch是使用Java语言基于Lucene开发的一款软件,通过Lucene实现所有的索引和搜...
2019-09-03 09:28:55 384
原创 Cassandra单节点和集群启停脚本
单节点启停脚本:#!/bin/shCASSANDRA_DIR="/home/xxxxx/cassandra"case "$1" in start) echo "starting `hostname`******" nohup "$CASSANDRA_DIR/bin/cassandra" >> ...
2019-08-22 15:46:25 851 1
原创 Cassandra部分参数调优
优化一:commitlog文件由于客户端写数据时需要阻塞写commitlog(默认64GB),所以可以把commitlog放在SSD或者较为空闲的盘中。执行一次刷操作成功后,commitlog文件将被删除。commitlog_directory优化二:data文件最好把data文件和commitlog放在两个不同的硬盘中,确保data不会和commitlog争抢IO时间。可配...
2019-08-22 15:37:01 2814
原创 使用链表实现LIFO栈
/** * @Author Mr.wei * @Date 2019/7/31 8:58 * @Description:使用链表实现下压栈,在这样的实现中永远都只操作表头 */public class Stack<T> implements Iterable<T> { /** * 指向链表第一个节点 */ private Nod...
2019-07-31 09:50:43 323
空空如也
hive表和hbase表整合时,hive表可以是分区表么?
2018-11-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人