随笔分类 -  java

摘要:在上一篇文章(https://www.cnblogs.com/jilodream/p/16666435.html)中,我们已经知道可以通过快慢指针,最终判断一个单向链表是否成环。一般在判断存在环之后,还有一个经典的问题:查找环的起点节点是哪里呢力扣 142. 环形链表 II (https://lee 阅读全文
posted @ 2022-09-08 18:48 王若伊_恩赐解脱 阅读(439) 评论(0) 推荐(0)
摘要:双指针是算法中非常重要的一个解决问题的思路。双指针顾名思义,就是有两个指针。根据双指针的方向及速度,我们一般将双指针分为以下几种场景1、快慢双指针2、左右双指针所谓快慢双指针是指,两个指针,一个快指针,一个慢指针,按照相同的方向,从链表(或数组)的一侧移动到另外一侧的场景。 如下图: 而左右双指针, 阅读全文
posted @ 2022-09-07 16:54 王若伊_恩赐解脱 阅读(804) 评论(0) 推荐(2)
摘要:Json格式在后台服务中的重要性就不多说了,直入正题。首先引入pom文件,这里使用的是1.2.83版本 1 <dependency> 2 <groupId>com.alibaba</groupId> 3 <artifactId>fastjson</artifactId> 4 <version>1.2 阅读全文
posted @ 2022-08-19 00:53 王若伊_恩赐解脱 阅读(2870) 评论(0) 推荐(2)
摘要:在过往的后台开发中,我们往往使用java自带的线程或线程池,来进行异步的调用。这对于效果来说没什么,甚至可以让开发人员对底层的状况更清晰,但是对于代码的易读性和可维护性却非常的差。开发人员在实际使用过程中,应该更多的将精力放置在业务代码的书写过程中,而不是系统代码的维护中。你需要懂,但是不需要你直接 阅读全文
posted @ 2022-08-16 20:00 王若伊_恩赐解脱 阅读(2201) 评论(0) 推荐(5)
摘要:类加载过程本质上就是类加载器根据类的全限定名称去找到对应的class字节码文件内容,然后将字节码文件的内容加载到虚拟机方法区中的过程。所以我们大体上可以把类加载的过程分为三部分:1、加载,就是获取到class文件的内容2、链接,就是把相应的文件内容添加到虚拟机中,转变为虚拟机中的class对象,使虚 阅读全文
posted @ 2021-08-13 01:44 王若伊_恩赐解脱 阅读(1370) 评论(0) 推荐(1)
摘要:Lambda来源于希腊字母入,发音为 /'læmdə/对高数有所了解的人都知道λ用于声明一个数学逻辑系统,表示根据XX的输入参数,会返回某个Y结果。这正是编程语言中函数(方法)的意思。因此Lambda表达式在编程语言中说白了就是指的一个方法表达式。为什么要搞出这么一个东西来呢?这是由于我们的编程语言 阅读全文
posted @ 2019-04-03 01:00 王若伊_恩赐解脱 阅读(3551) 评论(0) 推荐(0)
摘要:什么是动态代理呢?就是在java的运行过程中,动态的生成的代理类。(为了更熟悉的了解动态代理,你必须先熟悉代理模式,可点击设计模式之代理模式 阅读)我们知道java属于解释型语言,是在运行过程中,寻找字节码文件从而实现类加载的。但是字节码文件并不需要一定是硬盘中的class文件,也可以是来自网络、数 阅读全文
posted @ 2019-03-30 00:06 王若伊_恩赐解脱 阅读(1448) 评论(0) 推荐(2)
摘要:代理模式英文名叫Proxy Pattern 看下Proxy的含义 [ˈprɑ:ksi] n.代表权;代理人,代替物;委托书; 主要表达的就是代表、代替、委托的意思。 我对这个模式的理解是这样的: 一个服务或者是一个功能,一个对象。由于某种自身或者外界的原因,不能直接暴露出来,而是需要另外一个对象做一 阅读全文
posted @ 2019-03-27 22:40 王若伊_恩赐解脱 阅读(866) 评论(0) 推荐(1)
摘要:先来看看这个关键字是什么意思:volatile [ˈvɒlətaɪl] adj. 易变的,不稳定的; 从翻译上来看,volatile表示这个关键字是极易发生改变的。volatile是java语言中,最轻量级的并发同步机制。这个关键字有如下两个作用:1、任何对volatile变量的修改,java中的其 阅读全文
posted @ 2018-08-09 22:59 王若伊_恩赐解脱 阅读(1376) 评论(2) 推荐(6)
摘要:finalize()方法是Object类中定义的protect方法。每一个类都可以重写该方法,给出自己的实现。当类在被回收期间,这个方法就可能会被调用到。 为什么说可能?这是由于finalize()的调用时机甚至是否会被调用到都存在着太多的不确定性。基于这个原因,几乎所有的技术书籍及文章都不推荐开发 阅读全文
posted @ 2018-06-27 22:15 王若伊_恩赐解脱 阅读(1783) 评论(1) 推荐(1)
摘要:在上一篇文章中,介绍了在GC机制中,GC是以什么标准判定对象可以被标记的,以及最有效最常用的可达性分析法。今天介绍另外一种非常常用的标记算法,它的应用面也相当广泛。这就是:引用计数法 Reference Counting 这个算法的本质,其实就是上篇文章中判断一个对象要被回收的另外一种思路,即如果没 阅读全文
posted @ 2018-06-13 23:45 王若伊_恩赐解脱 阅读(1201) 评论(0) 推荐(0)
摘要:在上一篇文章中,我介绍了关于GC机制中,GC在确认垃圾对象后,是如何回收这些垃圾对象的几种算法。现在介绍下GC机制一般是如何定位(或者叫做标记)出这些垃圾对象的。我们先来问下自己,如何判介绍了断一个对象可以被回收。答案很简单也很直白。这个对象再也不会被调用到了 ,那么就可以被回收了。那么怎么判断一个 阅读全文
posted @ 2018-05-30 00:02 王若伊_恩赐解脱 阅读(993) 评论(3) 推荐(5)
摘要:说到Java,一定绕不开GC,尽管不是Java首创的,但Java一定是使用GC的代表。GC就是垃圾回收,更直接点说就是内存回收。是对内存进行整理,从而使内存的使用尽可能大的被复用。 一直想好好写一篇关于GC的文章,可是却发现要写的东西太大了,不是一篇博客能简单的介绍完的。所以打算拆分成若干篇博客,一 阅读全文
posted @ 2018-05-15 00:14 王若伊_恩赐解脱 阅读(1632) 评论(0) 推荐(7)
摘要:享元模式是一种常用的设计模式。尤其是在拥有大数据量的传统后台服务中尤为突出。我们往往在不知不觉中就使用了这个设计模式。先来看看享元模式的定义:Flyweight Pattern Flyweight译为: n. 次最轻量级的拳击选手。 拳击比赛的重量级、轻量级是通过选手的体重来分界的。享元模式就是通过 阅读全文
posted @ 2018-05-06 03:20 王若伊_恩赐解脱 阅读(757) 评论(0) 推荐(0)
摘要:HashTable的故事 很早之前,在讲HashMap的时候,我们就说过hash是散列,把...弄碎的意思。hashtable中的hash也是这个意思,而table呢,是指数据表格,也就是说hashtable的本意是指,一份被数据被打散,分散在各处的数据表格。 HashTable,作为jdk中,极早 阅读全文
posted @ 2017-07-20 00:22 王若伊_恩赐解脱 阅读(2496) 评论(1) 推荐(4)
摘要:在Java语言中,引用是指,某一个数据,代表的是另外一块内存的的起始地址,那么我们就称这个数据为引用。 在JVM中,GC回收的大致准则,是认定如果不能从根节点,根据引用的不断传递,最终指向到一块内存区域,我们就将这块内存区域回收掉。但是这样的回收原则未免太过粗暴。有些时候,内存的使用并不紧张,我们并 阅读全文
posted @ 2016-12-15 01:19 王若伊_恩赐解脱 阅读(2014) 评论(0) 推荐(7)
摘要:Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域的用途各不相同,同时也依据着各自的执行规则,独立的创建和销毁数据。 虚拟机内存的划分,如图所示: 线程之间互相独立的区域有: 虚拟机栈 、本地方法栈、程序计数器 线程可以共享数据的区域: 方法区 、堆 每个 阅读全文
posted @ 2016-12-08 23:31 王若伊_恩赐解脱 阅读(3362) 评论(0) 推荐(9)
摘要:Hash,我们在说HashMap的时候,已经知道Hash是散列,Map是映射了。 那么Set又是什么呢 ? 先来看看Set的翻译是什么 n. [数] 集合;一套;布景;[机] 装置 这里Set所取的含义是集合。而且是数学概念上的集合。数学概念上的集合有什么特点呢?那就是Set中所有的元素不能重复。所 阅读全文
posted @ 2016-11-30 23:41 王若伊_恩赐解脱 阅读(1208) 评论(0) 推荐(1)
摘要:在jdk的源码中,存在这样的一些接口,他们不包含任何的(抽象)方法,但是却广泛的存在。 这种接口我们称之为Mark Interface,也就是标记接口。 这些接口呢,我们不用来实现任何的方法,他们的作用就是当某个类实现这个接口的时候,我们就认为这个类拥有了这个接口标记的某种功能了。 下面通过三个例子 阅读全文
posted @ 2016-10-22 00:26 王若伊_恩赐解脱 阅读(3610) 评论(5) 推荐(2)
摘要:背景 快速排序,是在上世纪60年代,由美国人东尼·霍尔提出的一种排序方法。这种排序方式,在当时已经是非常快的一种排序了。因此在命名上,才将之称为“快速排序”。这个算法是二十世纪的七大算法之一,平均情况下时间复杂度为Ο(nlogn),而且在O(nlogn)的情况下,实际的运算速度都要快于其他同时间复杂 阅读全文
posted @ 2016-10-13 00:12 王若伊_恩赐解脱 阅读(9929) 评论(3) 推荐(7)