Java
文章平均质量分 92
CN_Seagull
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java8新特性——Stream流看这一篇就行辣
作为Java8添加的一个新特性,Stream流提供了一种声明的方式来处理数据。 其基于函数式编程思想,将复杂的语句代码通过简洁的方法调用来表示,让程序员写出的代码更加的高效、简洁并具备可读性。原创 2022-03-24 15:37:15 · 1680 阅读 · 0 评论 -
剑指Offer之每日五道算法题(Java)——第三天
面试题08 问题描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 牛客网——二叉树的下一个节点测试用例 实现思路 先总结出所有可能发生的情况,再根据这些情况来写代码,中序遍历下一节点所有情况如下: 节点存在右子树: 节点的右孩子存在左子树: 则沿着右孩子的左指针一路遍历下去到叶子节点,就是我们要找...原创 2019-11-18 20:55:37 · 410 阅读 · 1 评论 -
剑指Offer之每日五道算法题(Java)——第二天
面试题22 问题描述 输入一个链表,输出该链表中倒数第k个结点。 牛客网——链表中倒数第k个节点测试用例 我的思路 设置一个指针来遍历链表,同时设置一个指针指向遍历指针的第前k个节点。 比如n指针(遍历指针)和p指针初始化指向链表头部。 n指针从链表头部向后遍历,同时设置一个计数器记录移动次数。 当计数器的值等于k时,让p指针同步开始移动(此时p指针指向的节点即为n指针的第前k个节点) 当n指...原创 2019-11-13 17:30:07 · 255 阅读 · 0 评论 -
剑指Offer之每日五道算法题(Java)——第一天
面试题24 问题描述 输入一个链表,反转链表后,输出新链表的表头。 反转链表——牛客网测试用例 我的思路 在保留头指针的情况下,用三个指针分别指向中间的节点与前后节点,像这样: 反转中间指针的指向后,整体后移一格,变成这样: (这个A节点是头结点,所以不用管A的指向,最后将A结点指为null即可。) 对上述操作进行循环,直到n.next指向null(也就是到了尾结点)为止,此时...原创 2019-11-09 11:49:13 · 432 阅读 · 0 评论 -
Java 设计模式通关之路——单例模式
单例模式是什么? 单例模式(Singleton)通常来讲,就是让一个类仅仅只有一个实例,并提供一个全局访问点。 如何控制让一个类只能有一个实例对象呢?全局变量?不行,虽然全局变量可以保证一个对象被访问,但是还是无法去阻止你实例化多个对象。 既然外部无法进行控制,那就交给类自己维护吧,而外部仅仅只是起一个“通知的作用”,由类自己负责保存它的唯一实例,并对外提供一个访问该实例的方法。 单例模式有三个特...原创 2019-11-08 14:14:15 · 249 阅读 · 0 评论 -
JDK1.8集合框架源码阅读(二)——Iterable接口
功能简介 Iterable接口作为Collection的根接口,负责实现所有集合类的for-each语句功能。 其内部维护了一个返回迭代器的方法,所有继承该类的集合类都可以实现自己的迭代器。 (详见 Java 设计模式通关之路——迭代器模式) Iterable类定义如下: package java.util; public interface Iterator<E> { boo...原创 2019-11-05 22:21:14 · 224 阅读 · 0 评论 -
Java 设计模式通关之路——迭代器模式
什么是迭代器模式? 我们知道,Java中对于集合的遍历提供了一种很简单的实现——Iterator类。 一般我们对集合遍历时,都会做如下程序: List<Integer> arrayList = new ArrayList<>(); arrayList.add(1); arrayList.add(2); arrayList.add(3); Iterator<Integ...原创 2019-11-04 20:44:01 · 201 阅读 · 0 评论 -
JDK1.8集合框架源码阅读(一)——总览
集合架构图 图片摘自 基于jdk8的集合源码学习(一):第一篇集合体系一览图 主要模块 从架构图上可以看到,主要分为两大类:以Collection为主的集合结构,和以Map为主的键值对结构。 而Collection又继承了Iterable类,其主要实现对for-each语句的支持。 Collection的实现有三种:List、Set和Queue。 List是一个有序的可重复集合,可在任意位置...原创 2019-11-03 14:48:32 · 373 阅读 · 0 评论 -
浅谈 Java 序列化(涉及部分源码分析)
序列化是什么? 用一句话来概括:序列化是用来保存对象状态的一种机制。 什么是对象的状态?比如现在有一个类: class A { int a; int b; A(int a, int b) { this.a = a; this.b = b; } } 然后我们去声明了一个类A的实例: A a = new A(1, 2); 现在这个对象中实例变量的值为1和2,这就是对象的状态。 对...原创 2019-11-02 17:04:37 · 484 阅读 · 0 评论 -
Java 虚拟机初探(三)—— 堆
tips:本篇文章基于Hotspot JVM与JDK 1.8所撰写。 内存区域 我们首先来根据一张图初步了解一下内存区域的划分: 因为我发现每一版块都有好多东西要说,故把各区域单拿出来一一说明。 下面介绍的是主管JVM存储的区域——堆 Java 堆 我们常说:栈管运行,堆管存储。 既然管存储,那么其必然是线程共享的。Java在运行时创建的所有类实例对象和数组都存储在堆中,堆也是垃圾收集器进行垃圾...原创 2019-10-24 09:14:56 · 395 阅读 · 0 评论 -
Java 代码块究竟是个啥?
前言 对于Java初学者来言,一些代码真是整的我们云山雾罩的…… 有这样的: public class Test { static { System.out.println("static yo~"); } } 这样的: public class Test { { System.out.println("oh yo~"); ...原创 2019-10-18 19:22:15 · 1766 阅读 · 0 评论 -
Java 虚拟机初探(二)—— 虚拟机栈
tips:本篇文章基于Hotspot JVM与JDK 1.8所撰写。 内存区域 我们首先来根据一张图初步了解一下内存区域的划分: 因为我发现每一版块都有好多东西要说,故把各区域单拿出来一一说明。 下面介绍的是主管JVM程序运行的区域——栈。 Java虚拟机栈(stack) 每一条Java虚拟机线程都有自己私有的Java虚拟机栈,这个栈与线程同时创建,也就是说,虚拟机栈的生命周期跟线程是一样的。 ...原创 2019-10-15 19:17:56 · 728 阅读 · 0 评论 -
Java学习笔记
JAVA: public class HelloWorld{ public static void main(String[] args){ System.out.println("HelloWorld!"); } } 基本: 类名和文件名一致。 一个文件中只能有一个public类。 JAVA严格区分大小写。 申请内存不用释放,java有垃圾...原创 2018-04-28 14:31:45 · 582 阅读 · 0 评论 -
数据库三大范式理解与Mybatis懒加载
前言 在写用户权限对应关系的时候突然想到一个问题: 一般我们设计用户权限表都是三个表,分别为用户表、权限表、用户权限关系表 (简单的用户权限对应,不考虑角色关系) 那么为什么必须要三个表而不能直接用用户表、用户权限关系表来实现呢?为什么非要权限表这个中间表呢? 要解决这个问题,首先要了解数据库设计里面的三大范式。 数据库三大范式 第一范式 第一范式(1NF)标明数据表中的每一列(字段)都应是不可再...原创 2019-04-26 21:15:22 · 1337 阅读 · 0 评论 -
Spring boot + Mybatis 从零开始搭建个人博客系统(一)——初言及目录
☁️ 前言 想了想真的是好久不写博客了,最近一直在搭建自己的个人博客,出现的一些问题一般都记在纸上,也没有真正的把问题系统的记录,直到现在个人博客系统基本搭建完毕,才有时间一点点整理自己遇到的问题,那么废话不多说,开始介绍项目。原创 2019-04-23 16:55:22 · 1095 阅读 · 4 评论 -
Spring boot + Mybatis 从零开始搭建个人博客系统(二)——项目起步
项目结构 用 Spring Initializr 快速搭建项目,JDK版本为1.8,Spring boot 版本为1.5.9(2.0会出现莫名其妙的兼容问题,后续会逐渐向2.0过渡) Maven 引包 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" ...原创 2019-04-23 19:41:23 · 1947 阅读 · 0 评论 -
Spring boot + Mybatis 从零开始搭建个人博客系统(四)——登录注册(后端)
这里是登录注册后端部分代码及思路,前端请访问: Spring boot + Mybatis 从零开始搭建个人博客系统(三)——登录注册(前端) 数据表建立 p.s. 很多人喜欢先建表再设计页面设计功能,但这一点很可能导致你后期为了功能而回来修改表,添加字段或删减字段,可能会给自己造成很大的麻烦,所以我建议这里先设计个人中心的页面,思考什么功能会用到用户表,我的用户表应该设计什么字段,这些字段应该含...原创 2019-04-28 18:12:01 · 1164 阅读 · 0 评论 -
Java 中你可能没有注意到的一些事(持续更新中...)
垃圾回收 垃圾回收器只释放经由new分配的内存。 如果JVM并未面临内存耗尽的情形,他是不会浪费时间去执行垃圾回收的。 初始化 即使变量定义于方法体之间,仍旧会在任何方法(包括构造器)之前初始化。 静态变量会比非静态变量提前初始化,并且只初始化一次。 (局部变量不会被初始化) 关于静态初始化 static标明的属性在类加载时就同时加载了,它会逐层寻找基类。 什么意思呢?举个例子:有一个bo...原创 2019-09-03 17:22:58 · 161 阅读 · 0 评论 -
从JVM层面对Java多态机制深入探寻
前言 我们都知道多态是Java中最重要的特性之一,原创 2019-09-22 16:34:54 · 394 阅读 · 0 评论 -
Java 虚拟机初探(一)—— 程序计数器
数据区域原创 2019-09-27 20:35:19 · 470 阅读 · 0 评论
分享