- 博客(63)
- 资源 (2)
- 收藏
- 关注
原创 树的节点数与度数的关系
若对于树来说,度为m的节点数为N(m)。二叉树中,有***N(0)=N(2)+1***对于所有的数,有***节点总数=总度数+1***
2021-11-12 20:42:44
7245
原创 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
112
原创 MySQL中InnoDB索引数据结构(B+树)详解
MySQL中InnoDB索引数据结构(B+树)详解参考文章:CodingLabs - MySQL索引背后的数据结构及算法原理MySQL中常用存储引擎有哪些?它们相互之间有什么区别? - 知乎 (zhihu.com)一、MySQL中的数据存储引擎存储引擎介绍1、存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。2、MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技
2021-09-10 23:50:00
4692
原创 巧用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
421
原创 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
149
原创 Java双重检测锁的单例模式最全详解
单例模式是什么?在整个运行时域,一个类只有一个实例对象为什么?有的类比较庞大和复杂,如果频繁的创建销毁对象,并且这些对象完全是可以复用的,那么就会造成一些不必要的性能浪费单例模式需要考虑的三点是否是懒加载。饿汉式,对象是在编译器构建,运行时调用的,保证了线程安全,但是造成了性能浪费是否是线程安全的是否可以被反射破坏双重检测锁的单例模式public class Singleton { //构造器私有化 private Singleton() { } /
2021-08-27 13:22:02
1263
原创 解决gerrit merge conflict
现象多人在同一个分支上,以某个版本为base分别开发并提交代码到gerrit,其中一人先合并到仓库,则其他人的版本均出现"Merge Conflict"错误,无法完成合并。原因在一个branch内,提交到远程仓库的版本只能是顺序的、单线的,不允许在分支上又出现分支。多人基于同一个版本协作开发,相当于形成了不同的分支,一人合并到仓库后,他的最新版本就成了仓库上整个分支的最新版本,其他人的版本如果不以他的版本为parent就无法合并。解决办法从出现conflict的版本开始,将后面的版本都从ger
2021-08-26 09:51:13
5137
原创 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
6389
原创 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
3516
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
859
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
112
原创 切面打印日志时,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
2793
1
原创 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
364
原创 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
208
原创 Redis 五种数据结构及常用命令详解
Redis 数据结构详解Redis 数据类型分为:字符串类型、散列类型、列表类型、集合类型、有序集合类型。Redis 这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作。原子操作:最小的操作单位,不能继续拆分。即最小的执行单位,不会被其他命令插入。高并发下不存在竞态条件。KEY 的命名:一个良好的建议是 article:1:title 来存储 ID 为 1 的文章的标题。一、前言1、获取key的列表:KEYS pattern 通配符有 ?*[] 和转义 \。2
2021-07-13 10:17:26
227
原创 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
203
原创 MyBatis-Generator 代码生成器的入门教程
SpringBoot整合MyBatis以及MyBatis-Generator一、导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/
2021-06-30 17:12:43
143
原创 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
165
原创 MyBatis 一级二级缓存入门教程
MyBatis 缓存1. 前言频繁地查询必然会给数据库带来巨大的压力,为此 MyBatis 提供了丰富的缓存功能。缓存可以有效的提升查询效率、缓解数据库压力,提高应用的稳健性。MyBatis 的缓存有两层,默认情况下会开启一级缓存,并提供了开启二级缓存的配置。本小节我们将一起学习 MyBatis 的缓存,充分地了解和使用它。2. 一级缓存MyBatis 一级缓存是默认开启的,缓存的有效范围是一个会话内。一个会话内的 select 查询语句的结果会被缓存起来,当在该会话内调用 update、dele
2021-06-28 18:04:26
137
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
473
原创 Java的synchronized锁的到底是什么?
synchronized被大大小小的程序员广泛使用,有的程序员偷懒,在要求保证线程安全时,不加思索的就在方法前加入了synchronized关键字(例如我刚才那道校招级大题)。偷懒归偷懒,CodeReview总是要进行的,面对同事的“指责”,要求优化这个方法,将synchronized使用同步代码块的方式提高效率。synchronized要按照同步代码块来保证线程安全,这可就加在方法“复杂”多了。有:synchronized(this){}这么写的,也有synchronized(Count.class)
2021-05-22 16:37:48
694
原创 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
429
原创 数组中和为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
225
原创 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
1008
原创 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
89
原创 判断两个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
458
原创 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
212
原创 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
169
原创 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
1747
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
406
原创 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
168
原创 Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer
2021-03-17 21:21:34
84
原创 判断子网掩码是否合法-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
1321
原创 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
243
2022最新牛客网校招面试最全题库(java、前端、c++、测试、算法)(附带解析和答案)
2023-05-09
黑马程序员-Java语言进阶-源码、教程笔记.zip
2020-12-16
软考-中级-软件设计师2009-2019真题(22套,题目-答案-解析).zip
2020-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人