自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode-第十六个星期

求和路径LeetCode面试题 04.12,给定一个数,求一个二叉树按照顺序迭代相加后,等于该数的个数。思路分析:记录每一层的数据,然后从当前层开始向上叠加,等于的话总次数就加1,然后继续从当前层向下迭代,每一次回溯后当前层的值改变,这样就可以遍历完整个链路,得到结果。public int pathSum(TreeNode root, int sum) { //获得最大的层数 int deep = depth(root); int[] path =

2020-06-19 22:38:21 234

原创 LeetCode-第十五个星期

寻找重复的子树LeetCode652题,当二叉树中出现两个结构相同的节点时,将其加入结果中。思路分析:递归一个节点的子树,并且以一定的规则来得到一个key,需要保证这个规则使得这个key是唯一的,除非出现结构相同的节点,将key存入Map中,当出现的次数等于2时,将该节点插入结果集中。List<TreeNode> result; Map<Integer,...

2020-05-04 21:06:47 241

原创 LeetCode-第十四个星期

变为棋盘LeetCode782题,给定两种交换方式,判断一个二维数组是否能变换为指定的格式。一个 N x N的 board 仅由 0 和 1 组成 。每次移动,你能任意交换两列或是两行的位置。输出将这个矩阵变为 “棋盘” 所需的最小移动次数。“棋盘” 是指任意一格的上下左右四个方向的值均与本身不同的矩阵。如果不存在可行的变换,输出 -1。示例:输入: board = [[0,1,1,...

2020-04-12 18:58:44 229

原创 LeetCode-第十三个星期

DI 序列的有效排列LeetCode903题,根据给出的字符串排列数字,输出共有多少种排列方法。思路分析:

2020-04-06 23:18:26 300

原创 LeetCode-第十二个星期

黑板异或游戏LeetCode810题,黑板上有若干个数字,两位同学轮流擦掉一个数字轮到谁的时候,黑板上所有的数已经是0了,就是谁先获胜。思路分析:1.该题需要仔细的分析题意,当前情况分为两种。2.当前黑板上数异或以后就已经是0了,这时候小红一上来就赢了。3.当前黑板上的数异或不为0,这时候因为每个人擦的都是最优解,肯定不会让对方获胜,那么就要分为两种情况。4.当黑板上的数是奇数,那么...

2020-03-29 12:31:30 166

原创 LeetCode-第十一个星期

将有序数组转换为二叉搜索树LeetCode108题,给定一个增序的数组将其转化为二叉搜索树。思路分析:1.该题给出的数组是增序,我们只需将其转化为平衡的二叉搜索树即可。2.每次决定根元素都是数组中的中点,左右子树分别是中点前后的子数组。3.之后确定左右子树的根节点,也是循环步骤二。public static TreeNode sortedArrayToBST(int[] nums) ...

2020-03-17 20:39:24 130

原创 MySQL实战45讲记录

目录数据库里面,长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。建立连接的过程通常是比较复杂的,所以推荐使用长连接。但是全部使用长连接后,会发现,有些时候MySQL占用内存涨得特别快,这是因为MySQL在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以如果长连接积累下...

2020-03-15 16:53:10 370

原创 LeetCode-第十个星期

二叉树的右视图LeetCode199题,输出一个二叉树每一层中最右边的那个节点。思路分析:最开始肯定是从根节点的右子树开始遍历,需要考虑的问题是,当前层的右节点为空,这时候需要返回上一层接着遍历上一层的左子数,并且还需注意一层中只能输出一个节点。 static List<Integer> res = new ArrayList<>(); public s...

2020-03-09 13:44:39 165

原创 LeetCode-第九个星期

连续数组LeetCode525题,一个数组中找出连续的数量相等的0和1的子数组,得到子数组的最大长度。思路分析:1.该题并不是循环一次数组后,然后更新0和1相等的位置即可,有可能会发生了舍弃前面几个数可以使得0 1数量相等,所以无法保证0 1数量相等的地方。2.可以把0看做-1,然后循环数组不断叠加,将所加的值作为下标,如果同一个下标出现两次,说明这段距离的0 1数量肯定相等。3.如果...

2020-03-02 17:32:17 190

原创 设计模式随记

目录一.设计原则1.单一职责2.开放封闭原则3.依赖倒转原则4.里氏代换原则5.接口隔离原则6.迪米特法则二.设计模式1.简单工厂模式2.策略模式一.设计原则1.单一职责就一个类而言,应该仅有一个引起它变化的原因。一个类的功能要单一,最好只承担一个职责。如果能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变...

2020-02-28 22:27:26 376

原创 LeetCode-第八个星期

戳印序列LeetCode936题,通过一个印章将一串文字印盖成最终所需的字符串。你想要用小写字母组成一个目标字符串 target。 开始的时候,序列由 target.length 个 '?' 记号组成。而你有一个小写字母印章 stamp。在每个回合,你可以将印章放在序列上,并将序列中的每个字母替换为印章上的相应字母。你最多可以进行 10 * target.length 个回合。举...

2020-02-24 22:30:42 165

原创 LeetCode-第七个星期

我的日程安排表 IILeetCode731题,如果出现了第三次区间重叠,则返回false,其余的返回true,该题需要注意细粒度和范围扩大的问题。实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。MyCalendar 有一个 book(int start, int end)方法。它意味着在 start 到 end 时间内...

2020-02-19 21:11:36 236 1

原创 LeetCode-第六个星期

H2O生成LeetCode1117题,分别有两个线程,一个线程产生H,一个线程产生O,保证每轮输出都能产生一个水分子,顺序不做限制。现在有两种线程,氢 oxygen 和氧 hydrogen,你的目标是组织这两种线程来产生水分子。存在一个屏障(barrier)使得每个线程必须等候直到一个完整水分子能够被产生出来。氢和氧线程会被分别给予 releaseHydrogen 和 releaseO...

2020-02-12 21:53:31 150

原创 LeetCode-第五个星期

大礼包LeetCode638题,购买指定数量的商品,可以单独购买,也可以购买套餐,问最优惠的购买方式需要花费多少钱。在LeetCode商店中, 有许多在售的物品。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。现给定每个物品的价格,每个大礼包包含物品的清单,以及待购物品清单。请输出确切完成待购清单的最低花费。每个大礼包的由一个数组中的一组数据描述,最后一个数字代表大礼...

2020-02-03 16:07:39 184

原创 LeetCode-第四个星期

加油站LeetCode134题给定i个加油站,从A加油站行驶到B加油站会花费指定油量,但也会补充指定油量,问从那个加油站开始行驶可以走完全程。在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一...

2020-01-30 23:54:53 427

原创 LeetCode-第三个星期

除法求值LeetCode339题,已知一些等式,根据这些等式换算出各个字母的联系,并求出题目给出的等式值。思路分析:问题的方程式中会出现未知的方程式解,比如没有出现过的字母,这类方程式的解通常是不存在的,另外一些方程式会存在两个字母没有明显的交叉点,但是可以通过已知方程式的解,进行代换得到答案。这时我们可以把代换的过程,看作是从A点如何到B点的一个无向图求路径的问题,比如a/b=2.0,可以...

2020-01-23 00:02:07 147

原创 LeetCode-第二个星期

丑数LeetCode264题,寻找符合规定个数的数并返回。思路分析:可以发现丑数属于2、3、5这三个数的倍数,并且不是丑数的数即便乘以2、3、5得到的数也不是丑数,所以丑数一定是丑数乘以2、3、5得到的,那么寻找第N个丑数,只需要转化为寻找第N个丑数是2、3、5之中的那个数,乘以几得到的数返回即可。 if (n <= 6) return n; //存储丑...

2020-01-13 17:12:58 170

原创 LeetCode-第一个星期

前言最近一直在重温算法,该看的都看了一遍,今天开始准备刷题了每天一道,并不会把所有的题目都记录下来,会挑一些有趣的题目放在上面,欢迎一起讨论。二叉树的所有路径LeetCode第257题,难度简单,该题需要输出二叉树从根节点到叶子节点的所有路径。该题使用的是迭代的方式进行解答的,执行用时1ms,使用String进行根节点的一个叠加,这里还有一种想法:String在不断的叠加时,会耗费大量空...

2019-12-29 22:42:19 238

原创 HashMap详解

前言基于的版本为JDK1.8的,不过红黑树的方法详解,不会在这里去说,之后会有数据结构,来对此解释,HashMap的源码,涉及了大量的二进制的操作,不了解的,可以看下我发的二进制的解释。构造器:HashMap有四个构造器,这里介绍了三个常用的构造器。public ExHashMap() { //加载因子,默认为0.75,用于确定临界值的 this.loadF...

2019-08-04 16:29:51 146

原创 手写LinkedList集合

前言上一篇介绍了ArrayList的一个源码,这遍我们来介绍在List下的另一个常用的类,LinkedList,和ArrayList总是用来比较,实现方式和ArrayList还有很多不同的。构造器:首先,我们应该知道两类集合的底层实现是不同的,ArrayList的底层结构是数组,所以需要在初始化的时候,去申请一块连续的内存空间,空间不够了还要去选择扩容,而LinkedList的底层结构是链表...

2019-07-28 15:06:49 174

原创 手写ArrayList集合

前言最近仔细的研究了下集合框架的源码,并完全手写下来,这里将每一步的进展记录下来,欢迎指点。构造器:ArrayList的构造器,分别为无参构造器、传入初始大小的有参构造器、传入一个集合类型的有参构造器,这里只介绍前面两种常用的构造器。无参构造器:ArrayList的底层实际就是使用数组来实现的,我们创建一个数组,用于之后对ArrayList的操作。//ArrayList底层就是用Obj...

2019-07-27 15:33:59 188

原创 二进制基础

前言阅读源码时,会出现很多关于二进制基础和位运算的东西,再次进行一个巩固和记录。如果想详细了解的,可以去看这个链接下的视频,讲的非常棒。https://www.imooc.com/video/36491.二进制的概念1.1 二进制与十进制的区别 十进制 二进制 基本数字 10个:0~9 2个:0,1 进位规则 十进一 二进一 位权...

2019-06-29 13:52:33 2829

原创 大型Java架构演变之路

前言关于网站架构的一些演变之路,没有那个项目是凭空而造的,都是无数次的失败,无数次的尝试,才会有产生一个含金量很高的项目,以淘宝架构为例,下图还有一些我们看不见的功能的存在,但在初期肯定都是从小网站演变过来的。文章资料参考geely大神所讲的视频写出的,请指正批评。1.初始网站一台服务器已经足够了,文件、数据库还有我们的应用都在一个服务器上,俗称ALL IN ONE,随着我们用户越来越多,...

2019-06-24 21:46:30 1015

原创 重构_改善既有代码的设计_第二版(Java代码示例)

前言最近在读《重构_改善既有代码的设计(第2版)》这本书,一本非常经典,并且非常容易读懂的书,强力推荐刚入职场或未入职场的同学去读,书中的代码示例是用JavaScript来编写的,该文只是将书中的代码示例翻译成Java版本,并不会复制书中过多的内容,其中一些做法并不完全相同,加了自己的风格或者是说一些浅显的理解,非常欢迎各位批评和指正。第一个示例示例需求:设想有一个戏剧演出团,演员们经常要...

2019-06-21 12:32:23 5852

原创 手写代码生成器

前言最近工作的时候研究了一下线上生成器的代码,自己仿造着写了一个1.新建一个数据库,添加两张表2.建立对应的列,创建合适的约束,写好注释3.开始搭建工程,我使用的是SpringBoot快速搭建,引入依赖<dependencies> <dependency> <groupId>org.springframew...

2019-06-15 12:30:43 909

原创 Java8新特性

目录前言主要内容Java8新特性简介1.Lambda表达式1.1 从匿名类到Lambda的转换1.2 Lambda表达式语法2.函数式接口2.1 自定义函数式接口2.2 作为参数传递Lambda表达式2.3 Java内置四大核心函数式接口2.4 代码示例3.方法引用与构造器引用3.1 方法引用3.2 构造器引用3.3 数组引用3.4 代码示例4.强大的Stream API4.1 什么是Stream...

2019-06-02 00:48:47 387

原创 Idea中构建Gitee上的分布式项目

前言最近拉取Gitee上的一个分布项目,并构建在Idea上遇见了一些问题,记录一下。。。1.打开Idea,点击"Check out from Version Control"2.URL中输入Gitee或Github上的项目路径,Directory上选择项目保存的路径,点击Clone4.选择"Create project from existing source",一直点击next,直...

2019-05-19 15:17:08 465

原创 单点登录解决方案-CAS

1.开源单点登录系统CAS入门1.1 什么是单点登录单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。...

2019-04-22 12:01:17 237

原创 消息中间件解决方案JMS

1. JMS入门1.1消息中间件1.1.1什么是消息中间件消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)常见的消息中间件产品:(1)ActiveMQActiveMQ 是Apac...

2019-04-22 10:00:53 153

原创 网页静态化解决方案-Freemarker

1.网页静态化技术Freemarker1.1为什么要使用网页静态化技术网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道。对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信息,这样的情况同样也适用于使用网页静态化来解决。网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数...

2019-04-19 11:57:56 176

原创 分布式文件服务器FastDFS

1.什么是FastDFSFastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker s...

2019-04-19 11:39:31 174

原创 Spring Security框架入门

1.Spring Security框架入门1.1 Spring Security简介Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection ...

2019-04-19 11:29:08 137

原创 前端框架AngularJS

1.前端框架AngularJS入门1.1 AngularJS简介AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、依赖注入等等。1.2 AngularJS四大特征1.2.1 MVC 模式An...

2019-04-19 11:09:21 311

原创 容器部署解决方案Docker

1.Docker简介1.1虚拟化1.1.1什么是虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和...

2019-04-18 09:46:12 204

原创 SpringDataRedis与Redis Cluster 搭建

2.Redis Cluster2.1 Redis-Cluster简介2.1.1 什么是Redis-Cluster为何要搭建Redis集群。Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系统的Hbase或者是MogoDB。Redis更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以...

2019-04-17 10:18:08 2466 1

原创 SpringDataSolr和SolrCloud搭建

1.SolrCloud1.1 SolrCloud简介1.1.1什么是SolrCloudSolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 来满足这些需求。SolrCloud...

2019-04-17 10:04:45 617

原创 Zookeeper集群搭建

1.集群概述1.1什么是集群1.1.1集群概念集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要...

2019-04-17 08:46:39 185

原创 Nginx的基本使用

1.Nginx的安装与启动1.1什么是NginxNginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。Nginx 应用场景:1、http 服务器。Nginx 是一个 ht...

2019-04-16 11:18:56 244

原创 MyCat基本使用

1.开源数据库中间件-MyCat如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝...

2019-04-16 10:37:11 252

原创 基于SSM框架大型分布式电商系统开发(19-20)

前言秒杀解决方案+品优购系统业务完善第19章 秒杀解决方案1.秒杀业务分析1.1需求分析所谓“秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动。由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。秒杀商品通常有两种限制:库存限制、时间限制。需求:(1)商家提交秒杀商品申请,录入秒杀商...

2019-04-10 13:10:44 459

电商项目建库语句

电商项目的建库语句,各个测试数据和表结构已经搭建好,适用于电商项目

2019-03-02

空空如也

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

TA关注的人

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