冒泡排序-编程思维
冒泡排序 图解 代码实现 package com.wiselee.sort; import java.util.Arrays; /** * @PROJECT_NAME: DataStruct * @DESCRIPTION: * @USER: 28416 * @DATE: 2022/12/11 13:47 * 冒泡排序 */ public class BubbleSort {
morethink program
1.1 Java8的概述 Java8于2014年3月发布,该版本是 Java 语言的一个重要版本,自Java5以来最具革命性的版本,该版本包含语言、编译器、库、工具和JVM等方面的多个新特性。 1.2 函数式接口 函数式接口主要指只包含一个抽象方法的接口,如:java.lang.Runnable等。 @FunctionalInterface public interface Runnab
1.1 基本概念 在某些特殊场合中,⼀个类对外提供且只提供⼀个对象时,这样的类叫做单例类,⽽设计单例类的流程和思想叫做单例设计模式。 1.2 实现流程 私有化构造方法,使用private关键字修饰。 声明本类类型的引用指向本类类型的对象,并使用private static关键字共同修饰。 提供公有的get方法负责将对象返回出去,并使用public static关键字共同修饰。 1.3
1.下载地址:https://adoptium.net/zh-CN/temurin/releases/?version=8 选择Linux平台 命令行界面的找到下载地址使用wget或者curl进行下载【下载地址可能需要使用加速】 wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u352-b08/
单链表的面试题 1.求单链表中的有效节点的个数 /** * * @param heroNode 链表的头结点 * @return 返回的就是有效节点的个数 */ public static int getLength(HeroNode heroNode){ if (heroNode.next == null){
我们都知道在Java编程中多线程的同步使用synchronized关键字来标识,那么这个关键字在JVM底层到底是如何实现的呢。 我们先来思考一下如果我们自己实现的一个锁该怎么做呢: 首先肯定要有个标记记录对象是否已经上锁,执行同步代码之前判断这个标志,如果对象已经上锁线程就阻塞等待锁的释放。 其次要有一个结构体来维护这些等待中的线程,锁释放后来遍历这些线程让他们去抢锁。 第一点Java使用对
开启String去重XX:+UseStringDeduplication的利与弊 原文在这里: 开启String去重XX:+UseStringDeduplication的利与弊首先来看下由JDK开发组研究得出的一组有趣的统计数据: 1.java应用内存里面的字符串占比大概是25%。 2.java应用内存里面的字符串有13.5%是重复的。 3.字符串的平均长度是45。 由于
1. 开启String去重XX:+UseStringDeduplication的利与弊 https://www.cnblogs.com/kelelipeng/p/16891707.html 2. jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结 https://www.cnblogs.com/kelelipeng/p/14666728.html 3.JVM方法区(元空间)大小设
窗口滑动算法 简介 滑动窗口算法思想是非常重要的一种思想,可以用来解决数组,字符串的子元素问题。它可以将嵌套循环的问题,转换为单层循环问题,降低时间复杂度,提高效率。 滑动窗口的思想非常简单,它将子数组(子字符串)理解成一个滑动的窗口,然后将这个窗口在数组上滑动,在窗口滑动的过程中,左边会出一个元素,右边会进一个元素,然后只需要计算当前窗口内的元素值即可。 可用滑动窗口思想解决的问题,一般有如下
Java集合分类 数据结构 一:集合框架的概述 1.集合、数组都是对多个数据进行存储的结构 简称java容器 说明:此时的存储,主要还是内存层面的存储,不涉及持久化存储(数据库、硬盘等等) 2.数组在存储多个数据方面的特点: 》一旦初始化以后,长度就确定了 》指明数组的数据类型 例如:string[] int [] 一旦定义好其数组的类型、其元素的类型也就指定了 2.2数组在存储多个数据方面
java序列化和反序列化 如果我们需要持久化Java对象比如将Java对象保存在文件中,或者在网络传输Java对象,这些场景都需要用到序列化。 序列化: 将数据结构或对象转换成二进制字节流的过程 反序列化:将在序列化过程中所生成的二进制字节流的过程转换成数据结构或者对象的过程 实际开发中有哪些用到序列化和反序列化的场景? 1 在进行网络开发时,进行数据的交换前,需要先将这个entry类实现可序列
HashMap Map集合基于 键(key)/值(value)映射。每个键最多只能映射一个值。键可以是任何引用数据类型的值,不可重复;值可以是任何引用数据类型的值,可以重复;键值对存放无序。 HashMap常用方法 put/get 方法 1.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中。 2.get(Object key) 返回指定键所映射的值,
数组去重 问题描述: 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。 将最终结果插入 nums 的前 k 个
1、Java_JVM参数-XX:MaxDirectMemorySize 与 两种 ByteBuffer: heap,direct ByteBuffer(参考:https://www.cnblogs.com/laoqing/p/10380536.html) ByteBuffer有两种: heap ByteBuffer -> -XX:Xmx 1.1、一种是heap B
SpringBoot通过SpringBoot Starter零配置自动加载第三方模块,只需要引入模块的jar包不需要任何配置就可以启用模块,遵循约定大于配置的思想。 那么如何编写一个SpringBoot Starter呢?我们需要考虑如下几个问题: 如何让SpringBoot发现我们编写的模块? 如何让模块读取SpringBoot的配置文件? 如果用户没有在配置文件中配置必要的配置项,如何默认