Java开发学习笔记
Java开发学习笔记
笨鸟贤妃
入门程序猿,边学习边记录
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
树的节点数与度数的关系
若对于树来说,度为m的节点数为N(m)。二叉树中,有***N(0)=N(2)+1***对于所有的数,有***节点总数=总度数+1***原创 2021-11-12 20:42:44 · 7946 阅读 · 0 评论 -
二叉排序树查找成功和不成功的平均查找长度
查找不成功的平均查找长度:(2x2+3x3+4x2)/7=3。原创 2021-11-11 19:26:58 · 8669 阅读 · 0 评论 -
leetcode 92. 反转链表 II(反转链表的一部分)
//给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链//表节点,返回 反转后的链表 。// //// 示例 1: //// //输入:head = [1,2,3,4,5], left = 2, right = 4//输出:[1,4,3,2,5]// //// 示例 2: //// //输入:head = [5], left = 1, right = 1//输出:[5原创 2021-11-06 10:54:02 · 183 阅读 · 0 评论 -
MySQL中InnoDB索引数据结构(B+树)详解
MySQL中InnoDB索引数据结构(B+树)详解参考文章:CodingLabs - MySQL索引背后的数据结构及算法原理MySQL中常用存储引擎有哪些?它们相互之间有什么区别? - 知乎 (zhihu.com)一、MySQL中的数据存储引擎存储引擎介绍1、存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。2、MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技原创 2021-09-10 23:50:00 · 5710 阅读 · 0 评论 -
巧用Java中的LinkedList,用作栈和队列
源码分析java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.AbstractSequentialList<E> java.util.LinkedList<E>public class LinkedList<E> extends AbstractSequentialList<E>原创 2021-09-06 10:42:54 · 513 阅读 · 0 评论 -
JUC Lock Condition实现精确通知唤醒
package juc;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class PC { public static void main(String[] args) { Resource resource = new Resource();原创 2021-09-02 15:22:36 · 241 阅读 · 0 评论 -
Java双重检测锁的单例模式最全详解
单例模式是什么?在整个运行时域,一个类只有一个实例对象为什么?有的类比较庞大和复杂,如果频繁的创建销毁对象,并且这些对象完全是可以复用的,那么就会造成一些不必要的性能浪费单例模式需要考虑的三点是否是懒加载。饿汉式,对象是在编译器构建,运行时调用的,保证了线程安全,但是造成了性能浪费是否是线程安全的是否可以被反射破坏双重检测锁的单例模式public class Singleton { //构造器私有化 private Singleton() { } /原创 2021-08-27 13:22:02 · 1421 阅读 · 0 评论 -
解决gerrit merge conflict
现象多人在同一个分支上,以某个版本为base分别开发并提交代码到gerrit,其中一人先合并到仓库,则其他人的版本均出现"Merge Conflict"错误,无法完成合并。原因在一个branch内,提交到远程仓库的版本只能是顺序的、单线的,不允许在分支上又出现分支。多人基于同一个版本协作开发,相当于形成了不同的分支,一人合并到仓库后,他的最新版本就成了仓库上整个分支的最新版本,其他人的版本如果不以他的版本为parent就无法合并。解决办法从出现conflict的版本开始,将后面的版本都从ger原创 2021-08-26 09:51:13 · 6507 阅读 · 0 评论 -
MySQL与Java中的日期类型对应关系与使用教程
介绍MySQLJavaDATEjava.sql.DateTIMEjava.sql.TimeYEARjava.sql.DateDATETIMEjava.sql.TimestampTIMESTAMPjava.sql.TimestampDateA date. The supported range is ‘1000-01-01’ to ‘9999-12-31’. MySQL displays DATE values in ‘YYYY-MM-DD’原创 2021-08-24 11:37:58 · 6833 阅读 · 0 评论 -
Long类型数据,后端序列化为Json传给前端,产生的精度丢失的问题
目录问题描述问题产生的原因解决问题1.把Long类型改为String类型,但是如果Long类型很多的话,改起来很麻烦2.给字段加注解,序列化为String,同上,有点麻烦3.本文中使用的是Spring boot、FastJson,通过重写WebMvcConfigurer中的configureMessageConverters方法来重新配置转换器问题描述表中的Id字段是mybitis-plus雪花算法生成的19位Id,后端返回给前端的结果封装中,有这个Id字段,具体返回为return JSON.pars原创 2021-08-20 17:54:46 · 3941 阅读 · 2 评论 -
SpringBoot自定义线程池ThreadPoolTaskExecutor
配置自定义线程池import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;原创 2021-08-19 15:27:27 · 994 阅读 · 3 评论 -
ThreadLocal
import com.yyf.blogapi.po.SysUser;public class UserThreadLocal { private UserThreadLocal() { } private static final ThreadLocal<SysUser> LOCAL = new ThreadLocal<>(); public static void put(SysUser sysUser) { LOCAL.se原创 2021-08-18 17:42:16 · 164 阅读 · 0 评论 -
切面打印日志时,JSON.toJSONString(joinPoint.getArgs())报错,It is illegal to call this method if the current re
先看报错2021-08-05 10:42:41.171 INFO 14060 --- [nio-8090-exec-1] com.yyf.yebserver.common.WebLogAspect : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g原创 2021-08-05 10:50:04 · 3127 阅读 · 1 评论 -
springboot实现验证码登录
spring boot实现验证码登录原创 2021-08-04 16:15:19 · 1906 阅读 · 0 评论 -
Swagger2-SwaggerBootstrapUI 入门教程
1.导入依赖<!-- swagger2 依赖 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version></dependency><!-- Swagger第三方ui依赖 --><原创 2021-08-04 11:25:11 · 449 阅读 · 0 评论 -
JWT入门教程
JSON Web Token强烈推荐ruanyifeng老师的文章《JSON Web Token 入门教程》<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.0</version> </depe原创 2021-07-30 18:02:18 · 278 阅读 · 0 评论 -
SpringBoot整合Redis入门教程(使用Jedis)
SpringBoot整合Redis入门教程一、引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency>原创 2021-07-02 14:17:45 · 297 阅读 · 0 评论 -
Git 基本操作、常用指令
Git 基本操作、常用指令Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。本章将对有关创建与提交你的项目快照的命令作介绍。Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull,后面我们会详细介绍。说明:workspace:工作区staging area:暂存区/缓存区local repository:版本库或本地仓库remote repository:远程仓库一个简单原创 2021-06-29 10:39:08 · 252 阅读 · 0 评论 -
MyBatis 一级二级缓存入门教程
MyBatis 缓存1. 前言频繁地查询必然会给数据库带来巨大的压力,为此 MyBatis 提供了丰富的缓存功能。缓存可以有效的提升查询效率、缓解数据库压力,提高应用的稳健性。MyBatis 的缓存有两层,默认情况下会开启一级缓存,并提供了开启二级缓存的配置。本小节我们将一起学习 MyBatis 的缓存,充分地了解和使用它。2. 一级缓存MyBatis 一级缓存是默认开启的,缓存的有效范围是一个会话内。一个会话内的 select 查询语句的结果会被缓存起来,当在该会话内调用 update、dele原创 2021-06-28 18:04:26 · 195 阅读 · 1 评论 -
Springboot整合Mybatis进行MySQL数据库的增删改查
Springboot整合Mybatis进行MySQL数据库的增删改查一、数据库建表DROP TABLE IF EXISTS `teacher`;CREATE TABLE `teacher` ( `id` int NOT NULL AUTO_INCREMENT, `name` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'yourname', `age` int DEFAULT '0', `addr原创 2021-06-28 17:09:54 · 560 阅读 · 0 评论 -
Java的synchronized锁的到底是什么?
synchronized被大大小小的程序员广泛使用,有的程序员偷懒,在要求保证线程安全时,不加思索的就在方法前加入了synchronized关键字(例如我刚才那道校招级大题)。偷懒归偷懒,CodeReview总是要进行的,面对同事的“指责”,要求优化这个方法,将synchronized使用同步代码块的方式提高效率。synchronized要按照同步代码块来保证线程安全,这可就加在方法“复杂”多了。有:synchronized(this){}这么写的,也有synchronized(Count.class)原创 2021-05-22 16:37:48 · 840 阅读 · 0 评论 -
Java 实现排列组合
import java.util.ArrayList;public class Pailiezuhe { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); int[] shu = new int[]{1, 2, 3, 4}; //可重复选,4选3的全排列 kechongfuxuanpail原创 2021-05-08 12:13:54 · 516 阅读 · 0 评论 -
数组中和为m的子数组
分数组中的元素,可以重复取和不能重复取两种情况,只需修改回溯的指针值(可重复取为i,不可重复取为i+1)计算之前要先对数组进行排序Arrays.sort(candidates);public static void backtrack(int[] candidates, int target, int sum, int begin,List<Integer> path, List<List<Integer>> res) { if (sum ==原创 2021-04-28 18:53:04 · 320 阅读 · 0 评论 -
Java 8 stream流 实现字符串的全排列
import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;public class Pailiezuhe { public static void main(String[] args) { List<String> list = Arrays.asList("abcd".split(""));原创 2021-04-28 15:19:23 · 1107 阅读 · 0 评论 -
LeetCode 17 电话号码的字母组合
LeetCode 17 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]class So原创 2021-04-27 18:25:33 · 144 阅读 · 0 评论 -
判断两个Ip地址是否同属一个子网-Java
import java.util.*;public class PanDuanIpTongZiWang { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String yanMa = sc.next(); String ip1 = sc.next();原创 2021-04-13 19:59:13 · 532 阅读 · 0 评论 -
Java对象的clone
Java对象的clone 在程序开发中,有时可能好会遇到下列情况:已经存在一个对象A,现在需要一个与对象A完全相同的B对象,并对B对象的值进行修改,但是A对象的原有的属性值不能改变。这时,如果使用Java提供的对象赋值语句B=A,当修改B对象值后,A对象的值也会被修改,实际上是引用传递。那么应该如何实现创建一个和对象A完全相同的对象B,而且修改对象B时,对象A的属性值不被改变呢?浅clone所谓浅克隆就是说被克隆的对象的各个属性都是基本类型,而不是引用类型(接口、类、数组),若基本类型和引用类型都原创 2021-04-02 14:25:41 · 334 阅读 · 0 评论 -
Java进制转换-10进制和2进制、16进制等之间的互相转换
public class Main6301 { public static void main(String[] args) { //任意进制转换为10进制 //Integer.valueOf("str",x) 可以将任意x进制的字符串str,转换成10进制数 System.out.println(Integer.valueOf("ABCD", 16)); System.out.println(Integer.valueOf("1111原创 2021-03-30 16:34:31 · 242 阅读 · 0 评论 -
Java实现JS eval() 函数 (表达式求值)
定义和用法eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。语法eval(string)该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。示例import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptE原创 2021-03-30 10:45:38 · 1977 阅读 · 3 评论 -
Java-TreeMap通过value的大小进行排序
package java20210327;import java.util.*;public class Main4601 { public static void main(String[] args) { Map<Character, Integer> map = new TreeMap<>(); map.put('c', 111); map.put('d', 555); map.put('b', 6原创 2021-03-28 18:04:46 · 482 阅读 · 0 评论 -
LeetCode-复原IP地址
import java.util.ArrayList;import java.util.List;/** * IP复原 * 93. 复原 IP 地址 * 给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。 * <p> * 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 * <p> * 例如:"0.1.2.201"原创 2021-03-27 09:47:01 · 263 阅读 · 0 评论 -
Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer原创 2021-03-17 21:21:34 · 136 阅读 · 0 评论 -
判断子网掩码是否合法-Java
import java.util.*;/** * 判断子网掩码是否合法 */public class Main1801 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); System.out.println(isTrue(s)); } public static b原创 2021-03-10 20:27:12 · 1469 阅读 · 0 评论 -
01背包问题-Java
/** * 01背包问题 * 第一行输入两个整数m,n,背包重量为m,物品数量为n * 然后输入n行,分别输入物品的重量w、一个空格和物品价值v * <p> * 要求输出背包能装的最大价值 * <p> * 示例 * <p> * 输入: * 10 4 * 2 1 * 3 3 * 4 5 * 7 9 * <p> * 输出: * 12 */import java.util.Scanner;public class Main原创 2021-03-09 20:00:03 · 320 阅读 · 0 评论 -
Java-自定义注解的案例
自定义一个Check注解,实现对一个类中方法运行时bug的检查及捕获Calculatorpublic class Calculator { @Check public void add() { System.out.println("1+0=" + (1 + 0)); } @Check public void sub() { System.out.println("1-0=" + (1 - 0)); } @原创 2021-03-02 19:21:41 · 188 阅读 · 0 评论 -
Java反射机制案例-通过修改配置文件可以创建任意对象,并使用其方法。
配置文件className=day01.reflect.CarmethodName=carMethod代码import java.io.IOException;import java.io.InputStream;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Properties;public class PersonOrCa.原创 2021-01-20 17:55:28 · 302 阅读 · 0 评论 -
Java-File类利用递归实现文件搜索功能
import java.io.File;import java.io.FileFilter;/** * * 在"D:\\new"目录下搜索以".java"(或".JAVA")结尾的文件 * * */public class FileSearch { public static void main(String[] args) { File file = new File("D:\\new"); //两个方法都可以实现,二选一 sea原创 2020-12-16 20:15:35 · 348 阅读 · 0 评论 -
Java线程池-创建一个可重用固定线程数的线程池(newFixedThreadPool)
线程池:JDK1.5之后提供的java.util.concurrent.Executors线程池的工厂类,用来生成线程池Executors类中的静态方法:static ExecutorService newFixedThreadPool(int nThreads)创建一个可重用固定线程数的线程池参数:int nThreads:创建线程池中包含的线程数量返回值:ExecutorService接口,返回的是ExecutorService接口的实现类对象,我们可以使ExecutorServi原创 2020-12-15 19:04:33 · 1091 阅读 · 0 评论 -
Java创建多线程的第二种方式:实现Runnable接口,相比较于继承Thread有什么优点?
创建多线程程序的第二种方式:实现Runnable接口java.lang.RunnableRunnable 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。java.lang.Thread类的构造方法Thread(Runnable target) 分配新的 Thread 对象。Thread(Runnable target, String name) 分配新的 Thread 对象。实现步骤: 1.创建一个Runnable接口的实现类原创 2020-12-15 11:01:09 · 628 阅读 · 0 评论 -
JAVA-斗地主洗牌、发牌、看牌
import java.util.*;public class DouDiZhu2 { public static void main(String[] args) { //创建花色和牌号集合 List<String> colors = new ArrayList<>(); List<String> numbers = new ArrayList<>(); Collections.a原创 2020-12-14 16:45:31 · 221 阅读 · 0 评论
分享