Java
文章平均质量分 55
Gee_Zer
这个作者很懒,什么都没留下…
展开
-
优先队列-Java实现
class Hoop { int tree[]; int size; public Hoop(int capacity) { this.tree = new int[capacity + 1]; this.size = 1; } public void add(int val){ if (size == tree.length + 1) { ...原创 2021-04-27 17:34:20 · 203 阅读 · 0 评论 -
Google Guava Maps的使用
在某些场景下,想要比较两个Map的不同,如果自己手动写的话,实现起来代码烦杂,此时可以使用Guava提供的Maps类的difference方法,实现快速的比较不同,结果保存在不同的map中,主要方法如下:import com.google.common.collect.MapDifference;import com.google.common.collect.Maps;import java.util.HashMap;import java.util.Map;public class Gua原创 2021-04-07 17:04:56 · 710 阅读 · 2 评论 -
Java面经(一)
主要问题如下:1、二分查找的时间复杂度2、一个学生成绩表,字段(学生姓名,课程名称,分数),求学生总成绩3、数据库索引,为什么要用索引,怎么用,是不是越多越好,怎么建立索引4、Java多线程,为什么会线程不安全,怎么解决线程不安全问题(案例:有一个共享变量,解决读写线程安全,给出java解决方法)5、static修饰的变量是线程安全的吗?6、线程安全的集合了解哪些?7、平常怎么学习,看过什么书?8、Redis缓存击穿,缓存穿透?9、对未来有什么规划?...原创 2020-12-28 19:28:58 · 118 阅读 · 0 评论 -
二叉树的先中后序,非递归实现
先序遍历非递归实现//先将树的右节点加入,再将树的左节点加入即可,因为出栈顺序是相反的List<Integer> list = new ArrayList<>(); Stack<TreeNode> s = new Stack<TreeNode>(); public List<Integer> preorderTraversal(TreeNode root) { if (root == null) { return list;原创 2020-10-07 15:38:35 · 191 阅读 · 3 评论 -
SpringBoot常用配置备份
Shiro依赖<!--shiro框架--><!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-core --><dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.4.0&l原创 2020-09-26 14:31:27 · 235 阅读 · 0 评论 -
LRU缓存设计O(1)复杂度
题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来一个整数x,表示g原创 2020-09-22 11:24:56 · 368 阅读 · 0 评论 -
Java中不会加载子类的几种情况
1.调用父类的static成员或方法父类package classloaddemo;public class User { static { System.out.println("User 被加载!"); } public static int a = 1; public static final int b = 1; public static void say() { System.out.println("Hello!"); }}子类package class原创 2020-09-19 07:29:36 · 456 阅读 · 0 评论 -
桶排序,选择排序,冒泡排序,插入排序的Java实现
package sort;//定义接口,控制小到大排序,或者大到小排序public interface Compare { boolean compareTo(int a, int b);}package sort;//排序工具类public class ArraySortUtil { /** * 冒泡排序 * * @param a 排序的目标数组 * @param c 比较函数,决定数组的排序规则 * @return 返回排序好的数组 */ public s原创 2020-09-14 11:27:28 · 98 阅读 · 0 评论 -
力扣647. 回文子串(DP)
题目链接给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:“abc”输出:3解释:三个回文子串: “a”, “b”, “c”示例 2:输入:“aaa”输出:6解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindromic-substr原创 2020-08-19 10:51:11 · 281 阅读 · 0 评论 -
基于双向链表实现的栈
看了LinkedList的源码,明白了LinkedList底层使用的是双向链表,一直想找个机会实现一下双向链表,今天写到力扣的每日一题20.有效的括号,正好此题需要使用到栈,所以借此机会来自己实现一下基于双向链表实现的栈,实现栈之前要了解以下知识1.什么是双向链表双向链表是指一个节点有一个数据域,两个指针域,一个指针域指向上一个节点,一个指针域指向下一个节点,现在将指向上一个节点的指针域命名为pre,将指向下一个节点的指针域命名为next,节点命名为node,一个合格的双向链表如下图所示中间的nod原创 2020-08-15 00:59:07 · 3959 阅读 · 0 评论 -
LinkedList源码了解
LinkedList源码/* * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */package java.util;import原创 2020-08-03 15:47:58 · 154 阅读 · 0 评论 -
ArrayList的简单了解
有些东西还没做学习,学习完后补充/* * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */package java.util;im原创 2020-07-30 15:10:45 · 224 阅读 · 0 评论 -
clone的深拷贝与浅拷贝
想要了解浅拷贝和深拷贝之前,要了解的是值传递和引用传递。值传递:传递的是变量的值,对该值进行修改不会影响原来变量的值引用传递:传递的是变量的在堆中的引用,修改其值,会影响实际变量这里只是简单的介绍,想要详细了解的话,建议查看其他博客知道了值传递和引用传递就可以来了解浅拷贝和深拷贝了浅拷贝:基本类型拷贝的是值,引用类型拷贝的是引用深拷贝:基本类型拷贝的是值,引用类型拷贝的也是值用具体的例子来展示浅拷贝和深拷贝,重写clone方法需要实现Cloneable标识接口,标识该类是可以拷贝的,不然拷贝时原创 2020-07-30 15:07:35 · 182 阅读 · 0 评论 -
设计模式之代理模式
一、代理模式的概念当一个类无法直接使用另外一个类时,使用一个代理类来达到使用的目的。这句话是什么意思呢,举一个生活中的例子,现在的人都喜欢去北上广深打工,打工难免要租房子,而租房子,是很难直接去找到房东去租的,一般都需要通过中介来达到中间沟通的作用,这也是为什么中介可以在中间赚差价的原因。我们把类无法直接使用的类称为目标类,在这个例子中,房东就代表目标类,而中介就是代理类,租客必须通过中介才能联系到房东,这就是代理模式的思想二、代理模式的作用1.功能增强:在你原有的功能之上,增加额外的功能。新增原创 2020-07-29 21:42:06 · 158 阅读 · 0 评论 -
SimpleDateFormat的使用方法
使用Date直接输出日期时,是使用系统默认的格式输出,所以需要使用SimpleDateFormat来格式化日期。那么SimpleDateFormat类怎么使用呢,我们需要先了解此类的格式化符号y:代表年份M:代表月份d:代表月份中的那一天,也就是日H:代表小时m:代表分钟s:代表秒S:代表毫秒所以使用时,需要使用这些字符来格式化日期例如:你想显示日期格式为 2020-05-23 22:00:00 000使用格式就应该为yyyy-MM-dd HH:mm:ss SSS下面使用代码展示Si原创 2020-06-29 11:54:24 · 4874 阅读 · 0 评论 -
Integer的parseInt源码分析
public static int parseInt(String s, int radix) throws NumberFormatException { /* * WARNING: This method may be invoked early during VM initialization * before IntegerCache is initialized. Care must be taken t.原创 2020-06-28 09:45:33 · 393 阅读 · 0 评论 -
int Integer String 相互转换
三种类型的相互转换是非常重要的知识点接下来直接展示代码:package cn.geezer.usually;public class IntToIntegerToString { public static void main(String[] args) { //int -> String int i = 10; String str = i + "";//直接使用字符串拼接的技巧,将int转换为String str =原创 2020-06-28 09:44:35 · 444 阅读 · 1 评论 -
String字符串直接创建与new的方式比较
要想了解这两种方式的区别,首先就得知道jvm底层有哪些区域,和String的创建原理先借一张别人的图片:可以看到,jvm主要分栈区,堆区,方法区。我们只要先了解一下方法区方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。String在创建对象时,会将字符串变成一个常量,存储到方法区。所以,当使用直接方法创建String对象是String str = “string”;虚拟机会直接将常量的地址交给变量str而使用new的方法创建时,我们知原创 2020-06-22 09:35:34 · 725 阅读 · 0 评论 -
内部类之匿名内部类
匿名内部类写在方法形参中, 没有名字,直接new 抽象的类名{实现它的抽象方法}感觉这是我用的比较多的内部类,有时候不想再写一个类实现接口,或者抽象类时,可以在方法中直接new。代码如下:package cn.geezer.innerclass;//定义接口public interface IStudentDao { String queryNameByID(Integer id);}package cn.geezer.innerclass;public class Inne原创 2020-06-18 08:31:24 · 130 阅读 · 0 评论 -
内部类之局部内部类
局部内部类不能用访问权限关键字修饰存在于方法中类中不能有静态声明局部内部类在访问局部变量的时候,只能访问常量作用域只在方法中可以访问外部类的所有成员和方法package cn.geezer.innerclass;public class PartInnerClass { int sum = 18; final static String name = "root"; public int getSum() { return sum; }原创 2020-06-18 08:27:54 · 370 阅读 · 0 评论 -
内部类之成员内部类
成员内部类可看作成员变量可以用访问权限关键字修饰不能声明静态方法成员内部类可以访问外部类所有数据(静态和非静态)实例化时需要先实例化外部类然后再引用.new 内部类();package cn.geezer.innerclass;public class MemberInnerClass { private int age = 1; private static boolean sex = false; private int getAge(){ ret原创 2020-06-18 08:00:00 · 140 阅读 · 0 评论 -
内部类之静态内部类
静态内部类可看作静态成员可以用访问权限关键字修饰可以访问外部类的静态成员和方法不可以访问外部类的实例成员和方法静态内部类可以声明静态变量,实例变量,可以声明静态方法,实例方法//静态内部类package cn.geezer.innerclass;public class StaticInnerClass { private static int age = 21;//类成员 private String name = "name";//实例成员 private st原创 2020-06-17 21:36:25 · 239 阅读 · 0 评论 -
java之方法重载
方法重载只与方法参数的类型和个数有关,4种组合都构成重载,与修饰符与返回值无关。继承来的方法重写时,修饰符只能升级不能降级。主要有以下五点:1.发生在同一个类中2.方法名相同3.参数列表不同(类型,个数,顺序)4.和返回值类型无关5.和方法修饰符无关!](https://img-blog.csdnimg.cn/20200617205142630.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_原创 2020-06-17 20:52:07 · 178 阅读 · 0 评论 -
Java八大基本类型及其相互运算
boolean:字符型,值为true和falsechar:字符型,存储一个字符数据byte:字节型short:短整型int:整型long:长整型float:单精度浮点型,精度为6位double:双精度浮点型,精度为15位关于数据赋值当给long赋值时,如果数据超过int长度,需要在数据后面加上L,代表此数据为long型,否则将报错当给float赋值时,需要加上f,因为默认为double型byte,short,char赋值时,如果数值在对应的数据范围内,是可以直接赋值的,但是,不能声原创 2020-06-17 20:44:56 · 246 阅读 · 0 评论 -
使用java实现记事本(超详细解释)
实验课老师要求写的,学习了网上n多大佬的博客后,自己写了一个简单的记事本程序效果图:实现代码:package test;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;public class Notepad extends JFrame implements Ac...原创 2019-05-30 20:05:53 · 10511 阅读 · 7 评论