- 博客(12)
- 收藏
- 关注
原创 数据结构那点事-并查集
数据结构那点事-并查集这是一个非常有趣的数据结构,但是却可以帮助解决一些复杂的问题 有四个村子(村子交通并不发达,没有歧视的意思),A村和B村之间有路,C村和D村之间有路,如果问可否从能A村去C村,答案是不能,但是如果在B村和D村之间修条路,A村便可以到达C村(A->B->D->C),今天的主角并查集就是为了解决这种相聚遥远的两个集合是否存在亲戚关系的一种数据结构 判断两个陌生人是否是亲戚很简单,顺着父母网上找,如果最后能找到一个人头上,说明是远方亲戚+.+public
2020-09-26 20:22:13
118
原创 KMP模式串匹配算法
KMP模式串匹配算法总有那么一些算法,令人感到惊叹,惊叹于算法的高效,惊叹于算法的解题思路KMP算法是一个非常高效的模式串匹配算法,它把模式串匹配算法的时间复杂度降为了O(m+n),m是主串长度,n是模式串长度,之前对这个算法十分抗拒,因为很多文章讲得晦涩难懂,阅读了几篇相关文章后,自己尝试着写了一遍算法后,才明白其中的道理暴力解法 对于一个字符串S"abcdeft",我们想知道它是否包含字符串P"def",首先应该想到的是准备三个指针p,q和m,p指针和q指针指向S串的开头,m指针指向P串
2020-09-26 19:55:42
584
原创 ReentrantLock浅析
如果一些知识,技术或者叫做技巧可以被每个人轻松掌握,那他就没什么价值了,当然不是要去探索一些无人掌握的知识,仅仅想告诉自己,学习并不是轻松的事,贵在坚持。这篇开始使用可重入锁,和之前学过的知识一点都不冲突,了解一种更加优雅的加锁方式,了解公平锁于非公平锁,介绍一些常用的api,为之后的并发实战铺路。ReentrantLock分析 在Java多线程中,可以使用synchronized关键字来实现线程之间的同步互斥,但在JDK1.5中新增加了ReentrantLock类也能达到同样的效果,并在拓..
2020-09-20 21:07:46
133
原创 二叉树的前中后序遍历
数据结构那点事—遍历二叉树程序=数据结构+算法,研究新技术,中间件,框架的同时,最为基础的东西一定不能落下,灵活运用各种数据结构,根据业务需求可以定制出合适的数据结构,是一个必须掌握的技能数据结构常见的运算有 1)创建运算.2)清楚运算.3)插入运算.4)删除运算.5)搜索运算.6)更新运算.7)访问运算.8)遍历运算这里就从二叉树的三种遍历入手,手撕数据结构所谓遍历,就是按照某种次序,系统地访问数据结构中的元素,是的每个元素恰好被访问一次简易的树的代码示例#mermaid-svg-cMkO
2020-09-20 20:56:50
197
原创 第一个dubbo程序
第一个dubbo程序开始研究rpc框架,传统的服务调用都是一个接口对应几个实现类,在分布式系统中,如何将请求平均得分发给各个节点,这就需要远程调用的负载均衡了江湖规矩,不写hello world不算入门 dubbo官网dubbo官网的中文文档十分友好,就从文档入手,学习这个框架 这是官方的架构图,在这个图里,有着三个比较重要的角色,消费者,生产者,和注册中心,生产者会把自己的服务注册到注册中心,消费者会从注册中心订阅服务,对服务进行消费,有一个监视器会统计调用和被调用的次数 准备
2020-09-13 20:25:51
102
原创 Java里的包装类型
Java里的包装类型其实也就那么几个基础数据类型&包装类型 和面向过程的编程不同,Java里,一切皆对象,但是就有那么一些例外,就是常见的int,char,boolean,float,double,byte,short,long,八大基础数据类型,基础类型,没他不行,但是和其他对象的操作又不一样,于是Java对基础数据类型进行了上层封装,也就是所谓的包装类型基础数据类型包装类型intIntegercharCharacterbooleanBoole
2020-09-12 11:05:16
258
原创 Maven Scope范围
Maven Scope范围 Maven的生命周期存在编译、测试、运行这些过程,那么显然有些依赖只能用于测试,比如Junit;有些依赖编译时用不到,只有运行时才能用到,比如mysql的驱动包在编译期就用不到(编译器用的是JDBC接口),而是在你运行时用到的;还有些依赖,编译期要用到,而运行期不需要提供,因为有些容器已经提供了,比如servlet-api在tomcat中已经提供了,我们只需要的是编译期提供而已,maven的scope大致有以下几个:compile:默认的scope,运行期有效,需要打入
2020-08-30 20:16:39
232
原创 Java流的操作
Java流的操作作为一名增删改查咸鱼程序员,日常工作中少不了对集合进行操作,Java8为集合提供了流式编程,以内部迭代的方式取代了使用for循环进行外部迭代,熟练掌握流式编程,函数编程,可以有效缩减代码量,提升可读性,使代码更加优雅filter 对于一个集合,要过滤掉特定的元素import java.util.Arrays;import java.util.List;import static java.util.stream.Collectors.toList;public cl
2020-08-30 20:15:28
82
原创 单例模式的探索
单例模式的探索单例模式时java中一个相当重要的设计模式,对于一个类,只能存在一个实例。比如在缓存中,全局的缓存应该是单一并且一致的。这里给出常见的单例模式的实现,并做了改进,使之成为线程安全的单例饿汉式 在使用对象的时候已经加载完毕,常见的就是直接使用new关键字public class Resource { private static Object source = new Object(); private Resource() { } publ
2020-08-23 18:49:10
102
原创 Java类加载器及双亲委托机制
Java类加载器及双亲委托机制Java程序是如何运行起来的,如何做到“一次编译,到处运行”的,Java虚拟机内部是怎么工作的,它的设计遵循着哪些原则,程序出现异常,除了代码层面,还有哪些地方需要排查……带着上面的问题,开始探索神秘的Java虚拟机 简单说来,类的加载就是将class文件中的二进制数据读取到内存之中,然后将该字节流所代表的静态存储结构转换为方法区中运行时的数据结构,并在堆内存中生成一个该类的java.lang.Class对象,作为访问方法区数据结构的入口,类加载后在内存中的分配情
2020-08-21 19:44:44
92
原创 Java多线程就是这么简单-API
Java多线程就是这么简单----API写在前面:多线程编程是java必须要掌握的技能之一,没有系统地学习多线程,只凭一些零零散散的知识,无法应用于日常的开发中,决定从头开始系统地学习一下线程相关知识,从api开始,翻过这座大山java.lang.Thread#currentThread Returns a reference to the currently executing thread object. 返回当前正在执行的线程对象,直接上代码:public class Curre
2020-08-03 10:48:35
103
原创 【程序员养成日记】springboot快速入门
Springboot快速入门为什么要用springboot环境准备正片环节为什么要用springbootspringboot省去了一些繁琐的配置步骤,可以让你快速开发应用,内嵌了tomcat,使用起来非常方便环境准备·jdk1.8·idea ultimate版正片环节创建一个项目左边选择Spring Initializr,sdk选择jdk1.8,设置完成下一步用mav...
2019-11-19 20:30:26
477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人