自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 golang的Goroutines和Channels

Goroutines定义:在Go语言中,每一个并发的执行单元叫作一个goroutine。可以简单地把goroutine类比作一个线程。在Go里实现goroutine非常简单,只需要在函数的调用前面加关键字go即可:go counter(naturals)当一个程序启动时,其主函数即在一个单独的goroutine中运行,我们叫它main goroutine。新的goroutine会用go语...

2020-01-12 14:30:59 259

原创 初步认识clickhouse

ClickHouse的功能列式数据库管理系统数据压缩数据存储在磁盘中多核心并行处理多服务器分布式处理即数据可以保存在不同的分区上,每一个分区都由一组用于容错的replica组成,查询可以并行地在所有分区上处理。支持SQL支持的查询包括GROUP BY,ORDER BY,IN,JOIN以及非相关子查询,不支持窗口函数和相关子查询向量引擎即数据不仅仅按列存储,同时还按向量处理实...

2020-01-08 13:31:31 266

原创 git的使用教程

命令说明git init : 初始化仓库git clone <链接地址>: 克隆项目git add ./git add : 将工作区的修改提交到了暂存区git commit: 将暂存区的修改提交到当前分支git pull origin <远程...

2020-01-04 16:40:23 160

原创 Golang接口----flag.Parse()

Golang接口----flag.Parse()Golang中的标准的接口类型flag.Value是我们常用的接口之一,它用来处理命令行参数。我们直接上代码吧。package mainimport ( "flag" "fmt" "time")// 定义命令行参数对应的变量,这四个变量都是指针类型var cliName = flag.String("name", "John", ...

2019-12-29 14:15:27 14086 2

原创 初识Golang的接口

初识Golang的接口接口的定义接口是一种抽象的类型,不会暴露它所代表对象的内部值的结构和这个对象支持的基础操作的集合,它们只会展示出它们自己的方法。 //接口的定义type Writer interface{ //方法 Write(p []byte) (n int,err error)}type People interface{ ReName() string }接口的...

2019-12-28 23:44:27 159

原创 Java并发类库提供的线程池

Executors目前提供了5种不同的线程池创建配置:newCachedThreadPool(),它是一种用来处理大量短时间工作任务的线程池,具有几个鲜明特点:它会试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;如果线程闲置的时间超过60秒,则被终止并移出缓存;长时间闲置时,这种线程池,不会消耗什么资源。其内部使用SynchronousQueue作为工作队列。newFix...

2019-07-27 14:37:47 125

原创 获取当前程序的线程数的两种方法

1、使用线程管理器MXBeanThreadMXBean threadMXBean= ManagementFactory.getThreadMXBean(); long [] id=threadMXBean.getAllThreadIds(); for(long i:id){ System.out.println(threadMXBean.g...

2019-07-27 14:04:21 4051

原创 分析ReentrantLock(jdk1.8)

ReentrantLock,通常翻译为再入锁,实现Lock接口。再入锁通过代码直接调用lock()方法获取,代码书写也更加灵活。与此同时,ReentrantLock提供了很多实用的方法,能够实现公平性,或者利用定义条件等。但是,编码中也需要注意,必须要明确调用unlock()方法释放,不然就会一直持有该锁。public class ReentrantLock implements Lock, j...

2019-07-27 13:51:32 266

原创 C#与Java的语法区别(二)

switch

2019-07-20 16:40:19 204

原创 C# 与 Java的语法区别(一)

头文件c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。变量变量类型:变量命名方式:--------C#变量名的第一个字母必须是字母、下划线(_)或@其后的字符可以是字母、下划线或数字--------Java变量名以字母、下划线或者美元符($)开头后面跟字母、下划线、美元符、数字,变量名...

2019-07-20 14:38:42 833

原创 建BSP 树分割图形

//从“列表”中构建一个BSP树。当调用现有树时,新多边形被过滤到树的底部,// 并在那里成为新的节点 public void Build(List<CSG_Polygon> list)//建BSP树 { if (list.Count < 1)//判断是否有图形 return; if (this.plane == null || !this.plan...

2019-07-13 23:07:15 330

转载 SpringBoot的properties和yml两种配置方式, 配置注入参数, 以及配置文件读取失效的问题

原文:https://blog.csdn.net/zzzgd_666/article/details/80316174SpringBoot支持两种配置方式,一种是properties文件,一种是yml首先在pom文件中添加依赖:<dependency> <groupId>org.springframework.boot</groupId> ...

2019-07-06 19:59:14 837

原创 HashMap源码分析(jdk1.8)

我们都知道hashMap是数组(Node[] table)和链表结合组成的复合结构,那么hashMap是怎样存储数据,又是怎样减少hash碰撞,链表节点的结构是怎样的,怎样扩容,接下来,我带大家分析一遍源码。先从hashMap的结构说起,我们看看下面的图从图中我们可以很轻易的看出,hashMap的有两种结构,一种是数组+链表,另一种是数组+红黑树。为什么会有这两种结构,他们之间有什么关系?这...

2019-06-29 19:49:30 91

原创 认识哈希函数

首先,先来介绍一下哈希函数的概念。哈希函数的输入域可以是非常大的范围,比如,一个字符串,但是它的输出域是固定的范围。并具有以下性质:典型的哈希函数都有无限的输入值域。当给哈希函数传入相同的输入值时,返回值一样。当给哈希函数传入不同的输入值时,返回值可能一样,也可能不一样,这是当然的,因为输出域是固定的范围,所以会有不同的输入值对应在输出域的一个元素上,这就涉及到了哈希碰撞的问题。最重要的...

2019-06-20 12:35:54 2482

原创 只用2GB内存在20亿个整数中找到出现次数最多的数

题目:有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数要求:内存限制为2GB解决办法:通常做法是使用哈希表对出现的每一个数做词频统计,哈希表的key是某个整数,value记录整数出现的次数。本题的数据量是20亿,有可能一个数出现20亿次,则为了避免溢出,哈希表的key是32位(4B),value也是 32位(4B),那么一条哈希表的记录就需要占用8B。当哈希表记录数...

2019-06-20 11:21:19 525

转载 怎么计算一棵完全二叉树的节点个数

题目:已知一棵完全二叉树,求其节点的个数要求:时间复杂度低于O(N),N为这棵树的节点个数完全二叉树的概念就不多叙述了。讲讲思路:题目的要求是时间复杂度低于O(N),所以遍历的方式就不用考虑了,根据完全二叉树的特点可以知道,从头节点head开始一直往左走可以可以到达完全二叉树的最底层,而就是可以计算出二叉树的高度H了,(默认给定的一定是完全二叉树,,,)1)当头结点的右子节点作为头节点来计...

2019-06-14 16:17:06 826

原创 判断一棵树是否是平衡二叉树、二叉搜索树、完全二叉树

平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。public class IsBalance { public A isB(Node head){ if(head==null){ ...

2019-06-14 16:06:23 515

原创 在二叉树中找一个节点的后继节点

后继节点一共有两种情况:一种情况是当前节点有右子树,那么当前节点的后继节点一定在它的右子树上,即为右子树的最左边;另一种情况是当前节点(node)没有右子树,先看当前节点的父节点(parent)的左孩子是否是当前节点,若是则父节点是后继节点,若不是就向上寻找,另node=parent,parent=node.parent直到node是parent的左孩子。public class GetNe...

2019-06-14 15:47:20 288

原创 二叉树的先序、中序、后序遍历的递归及非递归版

1.前序遍历前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。若二叉树为空则结束返回,否则:(1)访问根结点;(2)前序遍历左子树;(3)前序遍历右子树 ;需要注意的是:遍历左右子树时仍然采用前序遍历方法。可以看出前序遍历后,遍历结果为:6312549782.中序遍历中序遍历首先遍历左子树,然后访问根结点,...

2019-06-14 15:36:46 627

原创 判断两个单链表的相交问题

判断两个单链表相交之前,我们应先判断单链表是否有环,然后就分成了有环链表的相交和无环链表的相交。第一步:判断单链表是否有环,有就返回第一个入环节点。我们首先要有个清晰的认知就是,如果一个单链表有环,那么遍历链表就永远在环里转下去。对此我们有两种方法判断第一种:利用hashset的特性,hashset的查询时间复杂度为O(1)。public Node isHuan(Node head){//判...

2019-06-08 21:34:26 132

原创 生成窗口最大值数组

题目:有一个整数型数组arr和一个大小为w的窗口从数组的最左滑到最右边,窗口每次向右边滑一个位置(时间复杂度O(n)),如果数组长度为n,窗口大小为w,则一共生产n-w+1个窗口的最大值。import org.junit.Test;import java.util.LinkedList;public class getMaxWindow { @Test public vo...

2019-06-01 20:21:20 174

原创 仅用递归函数和栈操作逆序一个栈

题目:一个栈依次压入1、2、3、4、5,那么栈顶到栈底分别为5、4、3、2、1。将这个栈逆序之后从栈顶到栈底分别为1、2、3、4、5。import org.junit.Test;import java.util.Stack;public class Reverse { @Test public void test(){ Stack<Integer&...

2019-06-01 19:05:54 110

原创 在行列都排好序的矩阵中找数

题目:给一个行列都排好序的矩阵,找到key的所在位置public static void main(String[] args) { int [][]arr={ {1,3,5,6}, {2,4,7,8}, {5,6,9,10}, {9,11,12,13}...

2019-05-25 21:19:04 100

原创 旋转矩阵

题目:给定一个矩阵,把这个矩阵调整成顺时针旋转90度例如:1 2 3 45 6 7 89 10 11 1213 14 15 16打印结果:13 9 5 114 10 6 215 11 7 316 12 8 4主要思想是:分圈处理 public void Test(){ int [][]arr={{1,2,3,10},{4,5,...

2019-05-25 21:10:39 629

原创 堆结构求中位数

/** * 堆结构实时求中位数 */public class Test02ByMedian { @Test public void test(){ int [] arr={9,75,6,4,3}; System.out.println(go(arr)); } public int go(int []arr){ ...

2019-05-19 12:43:47 432

原创 随机快排

/** * 随机快排 * @param arr * @param L * @param R */ public void sort2(int []arr,int L,int R){ if(L<R){ swap(arr,(int)(L+((R-L+1)*Math.random())),R);//...

2019-05-19 12:41:36 171

原创 逆序数对问题

逆序数就是左边序列比右边序列大的数对,现在要列出其中的逆序数对public class Test01byReversePair { A []a=new A[10]; int count=0; public static void main(String[] args) { Test01byReversePair t=new Test01byReverseP...

2019-05-07 20:43:07 530

原创 小和问题

用归并排序思想解决小和问题在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数,没有;3左边比3小的数,1;4左边比4小的数,1、3;2左边比2小的数,1;5左边比5小的数,1、3、4、2;所以小和为1+1+3+1+1+3+4+2=16public class Test { public ...

2019-05-07 20:31:52 171

原创 Java使用opencv实现人脸识别(一)标记瞳孔 、截取人脸

第一步先在官网上下载opencv,官方下载opencv安装文件: http://www.opencv.org.cn第二步配置opencv,具体过程链接: https://blog.csdn.net/qq_32407233/article/details/84550448第三步可以写代码了,我用的是opencv-2431,比较老的版本import org.opencv.core.*;i...

2019-05-06 21:59:30 3022 4

转载 多线程练习(三)三个线程交互打印

曾经有面试官问过这样一个问题,如何让两个线程交替打印奇数和偶数?如何让多个线程交替执行?回答这个问题之前需要先了解java多线程的运行机制,线程间通信机制,线程同步问题。这个问题我知道的实现方案有两种,一种是基于synchronized和wait/notify,另外一种是基于Lock和Condition.1.基于synchronized和wait/notifypublic class Ch...

2019-05-03 11:23:11 1162

原创 多线程练习(二) 三个线程轮流输出ABC

public class AroundABC extends Thread { private String msg; private AroundABC next; public AroundABC(String msg) { this.msg = msg; } @Override public void run() { ...

2019-05-03 11:12:35 863

原创 多线程练习(一) 三个线程按顺序执行

多线程练习(一) 三个线程按顺序执行方法一:利用join()方法,join()方法可以让父线程等待子线程结束之后才能继续运行。具体join()的解释在链接: link.import java.util.concurrent.ThreadPoolExecutor;public class ABC{ public static void main(String[] args) {...

2019-05-03 10:37:45 520

原创 线程池的execute()和submit()区别

线程池的execute()和submit()区别* -----------本篇文章是博主第一篇文章,若有错的地方请指出最近我正在学线程池,一定有很多人像我一样有疑惑,线程池的execute()和submit()都是向线程池提交一个任务,他们有什么区别??下面我们先看一下submit()的源码:public Fut...

2019-04-28 11:16:37 637

空空如也

空空如也

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

TA关注的人

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