自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 docker总结

一、安装docker官方文档地址:Install Docker Engine on CentOS | Docker Documentation步骤:1.卸载旧版本yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \

2022-04-11 23:57:14 959

原创 spring事务

spring

2022-04-06 09:29:58 2204

原创 synchronized关键字

一、synchronized的基本用法当synchronized修饰的是实例方法时,线程获取的锁是该对象的锁。当synchronized修饰的是静态方法时,线程获取的锁是该对象对应的Class对象的锁。 当一个对象拥有多个由synchronized修饰的是实例方法时,那么只有一个线程能够获取该对象的锁,其他的线程就会等待,注意我们实例化出来的对象一定是同一个对象。 案例: public class MyThreadTest2 { public static void main(Str.

2021-11-21 20:06:38 650

原创 集合

一、集合集合的特点就是不存放重复的元素,如果集合底层用链表实现,那么集合的添加、删除、查找时间复杂度都是O(n),这里可能会有疑问,链表的添加时间复杂度不是O(1)吗?是的,但是注意集合的特点就是不存放重复的元素,所以集合在添加的时候会去遍历一遍链表,看看有没有相同的元素,所以集合使用链表实现时,时间复杂度是O(n)。集合使用红黑树时,那么它的时间复杂度是O(logn)。但是使用红黑树实现,那么元素必须具备可比较性,这个就是限制。如何解决这个问题呢?就是后面的经典数据结构哈希表,HashMap!链表

2021-05-28 22:45:11 104

原创 红黑树(下)

一、红黑树的删除红黑树的删除主要分为两大类:删除RED节点和删除BLACK节点两种情况,无论是B树的删除或者是二叉搜索树的删除,其实它们的做法都是一样的,先找到删除节点的前驱或者后继节点,然后再删除叶子节点就可以了。所以红黑树的删除我们考虑的是删除叶子节点的情况。1.删除RED节点,直接删除即可,不用做任何调整,因为删除后还是一颗红黑树。2.删除BLACK节点,分为3种情况:拥有2个RED子节点的BLACK节点,例如25。 不可能被直接删除,因为会找它的前驱或后继子节点替代删除,因此不用

2021-05-27 22:50:30 112

原创 红黑树(上)

一、前言在学习红黑树之前需要学习B树,它们之间有着密切的关系,因为红黑树可以和4阶B树完美匹配。我的理解是4阶B树里最多含4个分叉。我们会发现B树有一些特点:1.比较矮2.平衡3.拥有二叉搜索树的一些性质4.一个节点能存储多个元素一个m阶的B树具有以下性质:根节点:1<= x<= m-1非根节点:[m/2] - 1 <= x <= m-1所以4阶B树的根节点个数 1<=x <= 3 , 非根节点的个数:1<= x <..

2021-05-25 23:48:20 141

原创 AVL树

一、什么是AVL树?首先解释一下为什么会出现AVL树,上一篇我们学习了二叉搜索树,现在我们来分析一下二叉搜索树的时间复杂度。我们会发现在某些情况下,二叉搜索树的时间复杂度会由O(logn)会退化为O(n),所以AVL树就出现了,就是说AVL树是二叉搜索树的一种改进。AVL树里多了一个平衡因子的概念。其实很好理解,平衡因子就是对树平衡程度的一种度量。平衡因子:该节点的左子树的高度减去右子树的高度的差值就叫做该节点的平衡因子。AVL树的平衡因子只可能是-1、0、1,AVL树的添加、删除时间复杂度都是

2021-05-22 21:00:08 1670

原创 二叉搜索树(BST)

一、前言关于二叉树还有个故事,Max Howell曾经面试因做不出翻转二叉树,面试被Google拒了。前几天也跟字节面试官交流了一下,太多的东西发现掌握的不够深刻,数据结构还是要坚持学下去,不多说开始coding。二、完全二叉树问题:关于完全二叉树有这样一个问题,如果一颗完全二叉树有786个节点,求叶子节点的个数?推导过程:假设叶子节点的个数为n1,我们知道叶子节点的度为0。假设度为1的节点个数为n2,度为2的节点个数为n3,该二叉树的边树为T。我们就能得到:除了根节点外,每个节

2021-05-19 22:49:25 195

原创 Hive中的开窗函数

1.rank()、row_number()、dense_rank()的区别。首先创建一张表:create table test_rank(idstring,recodeint) row format delimited fields terminated by ',' stored as textfile;插入数据:insert into test_rank(id,recode) values('1',11);insert into test_rank(id,recode) valu..

2021-05-14 00:55:33 125

原创 Hive总结

hive 内部表和外部表的区别?听说这是一道送分题,首先说答案。1.建表的时候,外部表创建的时候使用的关键字是external。2.删表的时候,内部表都删了,外部表只删了元数据,hdfs上的数据保留。想想为什么是这样呢,我的理解是外部表比内部表重要,内部表往往是我们自己测试建立的临时表,实际的业务表都是外部表。下面我们通过实验加深印象:首先我们创建外部表tb1和内部表tb2然后删除他们看看效果...

2021-05-13 00:01:40 285

原创 Hive总结

1.UDF、UDAF、UDTF函数。由于hive中的系统函数有时无法满足我们的实际业务需求,所以hive提供接口,我们只需实现就能写出我们自己定义的函数来解决业务需求。假如有这样的一个需求:想要传递一个json串和index ,就能返回相应的字段。比如:select myjson(json,1),myjson(json,2),myjson(json,3),myjson(json,4) from 表名;得到数据:2081,5,977536266,106 ...

2021-05-12 21:37:10 79

原创 队列的实现

一、队列我们会发现队列和栈很相似,栈是先进后出,队列是先进先出。既然栈可以用双向链表实现,那么队列也应该可以。队列的操作主要有入队和出队,入队就是向队尾添加元素,出队就是向队头删除元素。队列的实现:package 队列;import 链表.LinkedList;public class Queue<E> { private LinkedList<E> list = new LinkedList(); /** * 元素的数量

2021-04-19 00:14:43 271

原创 栈的实现

一、栈既然栈是一种特殊的线性表,那么毫无疑问是可以使用我们之前的ArrayList和LinkedList实现,因为它们都是线性表。我们说栈特殊就是因为你只能对栈顶的元素进行操作,所以使用数组和双向链表它们的效率是差不多的,时间复杂度都是O(1),如果是单向链表效率就会很低,因为它需要从第一个元素开始找到最后一个元素。二、接口的设计int size(); //元素的数量boolean isEmpty(); //是否为空void push(E e); .

2021-04-07 22:15:25 157

原创 LinkedList的实现

一、链表数组有一个明显的缺点,就是会有空间的浪费。那么我们能否用多少就申请多少空间呢,链表就能够实现,但是链表的内存地址不一定是连续的。二、链表的设计链表的接口和arrayList是完全一样的,但是实现方式完全不一样,LinkedList有三个成员变量:size(链表的大小)、first(头指针)、Node(包含element用于存放数据,next指向下一个node) private int size; //链表元素的个数 private Node<E> first

2021-04-04 00:08:43 482 1

原创 ArrayLst实现

一、动态数组我们知道数组的长度是固定的,当我们的数组空间不够的时候,我们需要对数组进行扩容。假设原来的数组长度是5,那么新的数组长度可以是10或者15或者更大,这个取决于自己的设计。二、实现动态数组进行增删改查package array;public class ArrayList <E>{ /** * 数组的大小 */ priv...

2021-03-21 20:54:53 122

原创 手写springCloud微服务架构的电商项目(第四天)

需求:我们分布式项目框架雏形已经搭建完毕,接下来就是进行相关功能的开发,今天要完成的功能时微信公众号验证码注册功能,就是用户在微信公众号发布消息,我们公众号需要给用户回复用户注册使用的验证码。原理:在这个过程中,有3个重要的角色:微信客户端,微信服务器,我们的服务器。大致的过程就是:微信客户端会将请求发给微信服务器,然后微信服务器会将请求转发给我们第三方服务器,然后我们将回复内容返回给微信...

2020-01-26 16:17:25 595

原创 手写springCloud微服务架构的电商项目(第三天)

一、前言今天的任务是搭建项目的分布式配置中心,将所有项目的配置文件统一管理起来。同时实现配置文件的实时刷新,这也是最重要的原因,意思就是说我们修改了项目的配置文件,不需要再重新启动,只需要将配置文件发布到分布式配置中就ok了。现在市面有很多分布式框架,原理都是大同小异,springCloud自己也有分布式配置中心框架springCloud config,配置文件统一使用git存储,Config...

2019-09-26 01:04:44 497

原创 基于springCloud微服务架构的电商项目(第二天)

一、子项目集成swagger对于微服务架构项目而言,每个子项目需要先集成swagger,集成步骤如下:1.添加pom依赖。<dependency> <groupId>com.spring4all</groupId> <artifactId>swagger-spring-boot-starter</artifactId>...

2019-09-15 16:47:58 1534

原创 手写springCloud微服务架构的电商项目(第一天)

一、前言 好久没有更新博客了,最近工作有点忙,其实我自己也是在纠结,是先做项目还是先学完框架和一些基础的知识(多线程、设计模式、jvm、集合...),我想了一下还是先写个项目再回头补上那些知识,查漏补缺。做项目其实就像盖房子,房子的架构和材料的质量最终决定了房子的好坏,它们都同样重要,所以既要设计好项目的架构,也需要对基础知识有很好的掌握。好了,不多bb,先看看这个项目最终要做...

2019-09-09 22:25:48 1511

原创 redis-cluster方式实现Redis分布式集群搭建

一、前言为什么需要redis-cluster方式来搭建redis的集群呢?上次我们谈到了redis的主从复制和读写分离,虽然也能实现redis集群效果,但是它有一个致命的缺点,就是数据冗余。因为主服务器来处理用户的写请求,而主服务器需要将数据同步到从服务器中,这不是浪费内存吗?那redis-cluster方式就能解决这个问题。二、画出redis-cluster框架图redis会...

2019-08-23 19:13:45 143

原创 springBoot+atomikos实现分布式事务

一、前言先把今天学习的内容记录一下,这是个插播,后面继续redis,嘿嘿。今天来聊聊springBoot的基础知识。二、springBoot+atomikos实现分布式事务我们先来看看应用场景,假设我们项目需要访问多个数据库,那事务怎么管理呢。那atomikos做的事情其实就是把所有数据源的事务统一管理起来。下面我们来看看怎么实现。首先引入依赖。<dependency&...

2019-08-22 19:39:46 835 1

原创 实现Redis主从复制、读写分离、哨兵模式

一、为什么写博客?记录下自己对一件事情的看法,不随波逐流。假如我年少有为不自卑,你是不是就不会就只是留在我的记忆里。I skate to where the puck is going to be,not where it has been.二、首先画出整个框架图。首先回答一个问题,为什么要做读写分离?读写分离是用来解决数据库的读性能瓶颈的。 ...

2019-08-19 00:02:46 1335

原创 基于ehcache+redis实现分布式缓存架构(上篇+下篇)

一、使用缓存的目的和好处使用缓存可以减轻数据库的访问压力,提高数据的响应速度。二、ehcache与springBoot2.0整合,并使用ehcache实现缓存。1.在pom.xml中添加ehcache的依赖。<!--开启 cache 缓存 --> <dependency> <groupId>org.springframework.bo...

2019-08-17 02:51:59 576

原创 深度学习的开山篇--在Linux系统中安装scikit-neuralnetwork

前言: 深度学习作为人工智能中的一个重要分支,scikit-neuralnetwork是目前深度学习最常用的软件包,所用语言python。学习过编程的人都知道,搭建环境是我们进行开发的第一步,好了不跟你多废话,下面我们直接进入主题。安装步骤:第一步 : 打开Linux系统,我自己是在windows下装的VMware,里面装了一个CentOS虚拟机,个人感觉CentOS比Ubuntu好用,Ubunt...

2018-06-03 21:57:28 650

空空如也

空空如也

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

TA关注的人

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