java
zyzzzzzzzzz
佛系程序员
展开
-
数据结构那点事-并查集
数据结构那点事-并查集 这是一个非常有趣的数据结构,但是却可以帮助解决一些复杂的问题 有四个村子(村子交通并不发达,没有歧视的意思),A村和B村之间有路,C村和D村之间有路,如果问可否从能A村去C村,答案是不能,但是如果在B村和D村之间修条路,A村便可以到达C村(A->B->D->C),今天的主角并查集就是为了解决这种相聚遥远的两个集合是否存在亲戚关系的一种数据结构 判断两个陌生人是否是亲戚很简单,顺着父母网上找,如果最后能找到一个人头上,说明是远方亲戚+.+ public原创 2020-09-26 20:22:13 · 92 阅读 · 0 评论 -
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 · 571 阅读 · 0 评论 -
ReentrantLock浅析
如果一些知识,技术或者叫做技巧可以被每个人轻松掌握,那他就没什么价值了,当然不是要去探索一些无人掌握的知识,仅仅想告诉自己,学习并不是轻松的事,贵在坚持。 这篇开始使用可重入锁,和之前学过的知识一点都不冲突,了解一种更加优雅的加锁方式,了解公平锁于非公平锁,介绍一些常用的api,为之后的并发实战铺路。 ReentrantLock分析 在Java多线程中,可以使用synchronized关键字来实现线程之间的同步互斥,但在JDK1.5中新增加了ReentrantLock类也能达到同样的效果,并在拓..原创 2020-09-20 21:07:46 · 107 阅读 · 0 评论 -
二叉树的前中后序遍历
数据结构那点事—遍历二叉树 程序=数据结构+算法,研究新技术,中间件,框架的同时,最为基础的东西一定不能落下,灵活运用各种数据结构,根据业务需求可以定制出合适的数据结构,是一个必须掌握的技能 数据结构常见的运算有 1)创建运算.2)清楚运算.3)插入运算.4)删除运算.5)搜索运算.6)更新运算.7)访问运算.8)遍历运算 这里就从二叉树的三种遍历入手,手撕数据结构 所谓遍历,就是按照某种次序,系统地访问数据结构中的元素,是的每个元素恰好被访问一次 简易的树的代码示例 #mermaid-svg-cMkO原创 2020-09-20 20:56:50 · 190 阅读 · 0 评论 -
第一个dubbo程序
第一个dubbo程序 开始研究rpc框架,传统的服务调用都是一个接口对应几个实现类,在分布式系统中,如何将请求平均得分发给各个节点,这就需要远程调用的负载均衡了 江湖规矩,不写hello world不算入门 dubbo官网dubbo官网的中文文档十分友好,就从文档入手,学习这个框架 这是官方的架构图,在这个图里,有着三个比较重要的角色,消费者,生产者,和注册中心,生产者会把自己的服务注册到注册中心,消费者会从注册中心订阅服务,对服务进行消费,有一个监视器会统计调用和被调用的次数 准备原创 2020-09-13 20:25:51 · 78 阅读 · 0 评论 -
Java里的包装类型
Java里的包装类型 其实也就那么几个 基础数据类型&包装类型 和面向过程的编程不同,Java里,一切皆对象,但是就有那么一些例外,就是常见的int,char,boolean,float,double,byte,short,long,八大基础数据类型,基础类型,没他不行,但是和其他对象的操作又不一样,于是Java对基础数据类型进行了上层封装,也就是所谓的包装类型 基础数据类型 包装类型 int Integer char Character boolean Boole原创 2020-09-12 11:05:16 · 224 阅读 · 0 评论 -
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 · 77 阅读 · 0 评论 -
单例模式的探索
单例模式的探索 单例模式时java中一个相当重要的设计模式,对于一个类,只能存在一个实例。比如在缓存中,全局的缓存应该是单一并且一致的。这里给出常见的单例模式的实现,并做了改进,使之成为线程安全的单例 饿汉式 在使用对象的时候已经加载完毕,常见的就是直接使用new关键字 public class Resource { private static Object source = new Object(); private Resource() { } publ原创 2020-08-23 18:49:10 · 99 阅读 · 0 评论 -
Java类加载器及双亲委托机制
Java类加载器及双亲委托机制 Java程序是如何运行起来的,如何做到“一次编译,到处运行”的,Java虚拟机内部是怎么工作的,它的设计遵循着哪些原则,程序出现异常,除了代码层面,还有哪些地方需要排查…… 带着上面的问题,开始探索神秘的Java虚拟机 简单说来,类的加载就是将class文件中的二进制数据读取到内存之中,然后将该字节流所代表的静态存储结构转换为方法区中运行时的数据结构,并在堆内存中生成一个该类的java.lang.Class对象,作为访问方法区数据结构的入口,类加载后在内存中的分配情原创 2020-08-21 19:44:44 · 87 阅读 · 0 评论 -
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 · 97 阅读 · 0 评论