java8新特性之lambda表达式_格子衫007-编程思维

1.1 Java8的概述 Java8于2014年3月发布,该版本是 Java 语言的一个重要版本,自Java5以来最具革命性的版本,该版本包含语言、编译器、库、工具和JVM等方面的多个新特性。 1.2 函数式接口 函数式接口主要指只包含一个抽象方法的接口,如:java.lang.Runnable等。 @FunctionalInterface public interface Runnab

设计模式之单例设计模式_格子衫007-编程思维

1.1 基本概念 在某些特殊场合中,⼀个类对外提供且只提供⼀个对象时,这样的类叫做单例类,⽽设计单例类的流程和思想叫做单例设计模式。 1.2 实现流程 私有化构造方法,使用private关键字修饰。 声明本类类型的引用指向本类类型的对象,并使用private static关键字共同修饰。 提供公有的get方法负责将对象返回出去,并使用public static关键字共同修饰。 1.3

linux 安装openjdk_springcore-编程思维

1.下载地址:https://adoptium.net/zh-CN/temurin/releases/?version=8  选择Linux平台 命令行界面的找到下载地址使用wget或者curl进行下载【下载地址可能需要使用加速】 wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u352-b08/

单向循环链表-约瑟夫问题_wiselee/-编程思维

单向环形列表 应用场景:约瑟夫环问题 思路: 创建第一个节点,让first指向该节点,并形成环状 后面当我们每创建一个新的节点,就把该节点,加入到已有的环形链表中即可 遍历环形链表 先让一个辅助变量,指向frist节点 然后通过一个while循环遍历该环形链表即可 curBoy.next == first结束 代码实现 添加和遍历单向环形链表 package com.wisele

栈实现计算器的操作_wiselee/-编程思维

栈实现计算器的操作 使用一个栈完成计算一个表达式的结果 使用两个栈:数栈(存放数) 符号栈(存放运算符) 思路 通过一个index值,来遍历我们的表达式 如果我们发现一个数字,就直接加入到树栈中 如果发现扫描到的是一个符号,就分如下情况来解决, 如果发现当前的符号栈就直接入栈 如果符号栈有操作符,就进行比较,如果当前的操作符的优先级小于或者等于栈中的操作符,则需要从数栈中pop出两个数,

数据结构与算法-稀疏数组_wiselee/-编程思维

稀疏数组 当一个数组中大部分元素为0,或者为同一个数值时,可以使用稀疏数组来保存该数组 稀疏数组的处理方法是: ​ 1.记录数组一共有几行几列,有多少不同的值 ​ 2.把具有不同值的元素行列以及值记录在一个小规模的数组中,从而缩小程序的规模 应用实例 棋盘的一个案例 一般稀疏数组的列是固定的三个,分别是row col val 三列分别代表着原来的二维数组所在的行 列 以及对应

队列和循环队列_wiselee/-编程思维

队列 队列首先是一个有序列表,即可以用数组或是链表来实现 遵循先入先出的原则,即:先存入队列的数据,要先取出,后存入的要后取出 示意图: 数组模拟队列 队列本身就是有序列表,若使用数组的结构来存储队列的数据,则使用maxsize表示该队列的最大容量 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量front和rear分别记录队列的前后端,front随着队列的输出而改变,r

java锁的逻辑(结合对象头和objectmonitor)_大兴神-编程思维

我们都知道在Java编程中多线程的同步使用synchronized关键字来标识,那么这个关键字在JVM底层到底是如何实现的呢。 我们先来思考一下如果我们自己实现的一个锁该怎么做呢: 首先肯定要有个标记记录对象是否已经上锁,执行同步代码之前判断这个标志,如果对象已经上锁线程就阻塞等待锁的释放。 其次要有一个结构体来维护这些等待中的线程,锁释放后来遍历这些线程让他们去抢锁。 第一点Java使用对

开启string去重xx:+usestringdeduplication的利与弊_kelelipeng-编程思维

开启String去重XX:+UseStringDeduplication的利与弊   原文在这里: 开启String去重XX:+UseStringDeduplication的利与弊首先来看下由JDK开发组研究得出的一组有趣的统计数据: 1.java应用内存里面的字符串占比大概是25%。 2.java应用内存里面的字符串有13.5%是重复的。 3.字符串的平均长度是45。 由于

窗口滑动算法_wiselee/-编程思维

窗口滑动算法 简介 滑动窗口算法思想是非常重要的一种思想,可以用来解决数组,字符串的子元素问题。它可以将嵌套循环的问题,转换为单层循环问题,降低时间复杂度,提高效率。 滑动窗口的思想非常简单,它将子数组(子字符串)理解成一个滑动的窗口,然后将这个窗口在数组上滑动,在窗口滑动的过程中,左边会出一个元素,右边会进一个元素,然后只需要计算当前窗口内的元素值即可。 可用滑动窗口思想解决的问题,一般有如下

java集合_wiselee/-编程思维

Java集合分类 数据结构 一:集合框架的概述 1.集合、数组都是对多个数据进行存储的结构 简称java容器 说明:此时的存储,主要还是内存层面的存储,不涉及持久化存储(数据库、硬盘等等) 2.数组在存储多个数据方面的特点: 》一旦初始化以后,长度就确定了 》指明数组的数据类型 例如:string[] int [] 一旦定义好其数组的类型、其元素的类型也就指定了 2.2数组在存储多个数据方面

java序列化_wiselee/-编程思维

java序列化和反序列化 如果我们需要持久化Java对象比如将Java对象保存在文件中,或者在网络传输Java对象,这些场景都需要用到序列化。 序列化: 将数据结构或对象转换成二进制字节流的过程 反序列化:将在序列化过程中所生成的二进制字节流的过程转换成数据结构或者对象的过程 实际开发中有哪些用到序列化和反序列化的场景? 1 在进行网络开发时,进行数据的交换前,需要先将这个entry类实现可序列

hashmap基本使用方法_wiselee/-编程思维

HashMap Map集合基于 键(key)/值(value)映射。每个键最多只能映射一个值。键可以是任何引用数据类型的值,不可重复;值可以是任何引用数据类型的值,可以重复;键值对存放无序。 HashMap常用方法 put/get 方法 1.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中。 2.get(Object key) 返回指定键所映射的值,

letcode-学习-数组去重_wiselee/-编程思维

数组去重 问题描述: 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。 将最终结果插入 nums 的前 k 个

springboot starter缘起_大兴神-编程思维

SpringBoot通过SpringBoot Starter零配置自动加载第三方模块,只需要引入模块的jar包不需要任何配置就可以启用模块,遵循约定大于配置的思想。 那么如何编写一个SpringBoot Starter呢?我们需要考虑如下几个问题: 如何让SpringBoot发现我们编写的模块? 如何让模块读取SpringBoot的配置文件? 如果用户没有在配置文件中配置必要的配置项,如何默认