- 博客(105)
- 收藏
- 关注
原创 基于Java的JSON数组铺平解析工具
效果:解析前:解析后import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.google.common.collect.Lists;import org.apache.commons.collections4.CollectionUtils;import org.apache.commons.lang3.
2022-03-01 18:04:06
824
原创 优先队列-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
188
原创 Mysql on duplicate key update 解决插入重复数据时更新值的问题以及其存在的问题
当有需求,在插入新记录时,如果不存在就插入一条新记录,而存在时就更新原记录上的某些数据,这是可以使用on duplicate key update 语法。一、使用:demo如下:首先创建表testdrop table if exists test;create table test( id int primary key auto_increment, value1 varchar(45) not null default '', value2 varchar(45) not n
2021-04-20 11:35:10
2722
2
原创 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
685
2
原创 Mapper Example学习
Mapper Example学习**起因:**在公司实习时发现,公司所使用的Mybatis逆向工程生成的代码和Mapper.xml文件与自己常用的逆向工程生成器生成的不一样公司Mybatis逆向工程生产以下产物:名称描述作用XxxMapper.xmlMybatis配置文件配置SQL语句XxxMapper.classMapper接口对应每个SQL语句XxxMapping.class实体类对应数据库表中的每个字段,一个实体类代表一行数据XxxMappin
2021-03-11 14:47:41
218
1
原创 Java面经(一)
主要问题如下:1、二分查找的时间复杂度2、一个学生成绩表,字段(学生姓名,课程名称,分数),求学生总成绩3、数据库索引,为什么要用索引,怎么用,是不是越多越好,怎么建立索引4、Java多线程,为什么会线程不安全,怎么解决线程不安全问题(案例:有一个共享变量,解决读写线程安全,给出java解决方法)5、static修饰的变量是线程安全的吗?6、线程安全的集合了解哪些?7、平常怎么学习,看过什么书?8、Redis缓存击穿,缓存穿透?9、对未来有什么规划?...
2020-12-28 19:28:58
114
原创 二叉树的先中后序,非递归实现
先序遍历非递归实现//先将树的右节点加入,再将树的左节点加入即可,因为出栈顺序是相反的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
174
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
230
原创 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
353
原创 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
438
原创 桶排序,选择排序,冒泡排序,插入排序的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
94
原创 力扣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
261
原创 基于双向链表实现的栈
看了LinkedList的源码,明白了LinkedList底层使用的是双向链表,一直想找个机会实现一下双向链表,今天写到力扣的每日一题20.有效的括号,正好此题需要使用到栈,所以借此机会来自己实现一下基于双向链表实现的栈,实现栈之前要了解以下知识1.什么是双向链表双向链表是指一个节点有一个数据域,两个指针域,一个指针域指向上一个节点,一个指针域指向下一个节点,现在将指向上一个节点的指针域命名为pre,将指向下一个节点的指针域命名为next,节点命名为node,一个合格的双向链表如下图所示中间的nod
2020-08-15 00:59:07
3790
原创 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
152
原创 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
222
原创 clone的深拷贝与浅拷贝
想要了解浅拷贝和深拷贝之前,要了解的是值传递和引用传递。值传递:传递的是变量的值,对该值进行修改不会影响原来变量的值引用传递:传递的是变量的在堆中的引用,修改其值,会影响实际变量这里只是简单的介绍,想要详细了解的话,建议查看其他博客知道了值传递和引用传递就可以来了解浅拷贝和深拷贝了浅拷贝:基本类型拷贝的是值,引用类型拷贝的是引用深拷贝:基本类型拷贝的是值,引用类型拷贝的也是值用具体的例子来展示浅拷贝和深拷贝,重写clone方法需要实现Cloneable标识接口,标识该类是可以拷贝的,不然拷贝时
2020-07-30 15:07:35
172
原创 设计模式之代理模式
一、代理模式的概念当一个类无法直接使用另外一个类时,使用一个代理类来达到使用的目的。这句话是什么意思呢,举一个生活中的例子,现在的人都喜欢去北上广深打工,打工难免要租房子,而租房子,是很难直接去找到房东去租的,一般都需要通过中介来达到中间沟通的作用,这也是为什么中介可以在中间赚差价的原因。我们把类无法直接使用的类称为目标类,在这个例子中,房东就代表目标类,而中介就是代理类,租客必须通过中介才能联系到房东,这就是代理模式的思想二、代理模式的作用1.功能增强:在你原有的功能之上,增加额外的功能。新增
2020-07-29 21:42:06
154
原创 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
4868
原创 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
387
原创 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
412
1
原创 String字符串直接创建与new的方式比较
要想了解这两种方式的区别,首先就得知道jvm底层有哪些区域,和String的创建原理先借一张别人的图片:可以看到,jvm主要分栈区,堆区,方法区。我们只要先了解一下方法区方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。String在创建对象时,会将字符串变成一个常量,存储到方法区。所以,当使用直接方法创建String对象是String str = “string”;虚拟机会直接将常量的地址交给变量str而使用new的方法创建时,我们知
2020-06-22 09:35:34
710
原创 内部类之匿名内部类
匿名内部类写在方法形参中, 没有名字,直接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
127
原创 内部类之局部内部类
局部内部类不能用访问权限关键字修饰存在于方法中类中不能有静态声明局部内部类在访问局部变量的时候,只能访问常量作用域只在方法中可以访问外部类的所有成员和方法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
353
原创 内部类之成员内部类
成员内部类可看作成员变量可以用访问权限关键字修饰不能声明静态方法成员内部类可以访问外部类所有数据(静态和非静态)实例化时需要先实例化外部类然后再引用.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
137
原创 内部类之静态内部类
静态内部类可看作静态成员可以用访问权限关键字修饰可以访问外部类的静态成员和方法不可以访问外部类的实例成员和方法静态内部类可以声明静态变量,实例变量,可以声明静态方法,实例方法//静态内部类package cn.geezer.innerclass;public class StaticInnerClass { private static int age = 21;//类成员 private String name = "name";//实例成员 private st
2020-06-17 21:36:25
236
原创 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
172
原创 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
240
原创 P3370 【模板】字符串哈希
题目描述如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字、大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串。友情提醒:如果真的想好好练习哈希的话,请自觉,否则请右转PJ试炼场:)输入输出格式输入格式:第一行包含一个整数N,为字符串的个数。接下来N行每行包含一个字符串,为所提供的字符串。输出格式:输出包含一行,包含一个整数,为不同的字符串个数。输入输...
2019-12-23 08:40:02
251
原创 MYSQL34道练习题
PS:代码在最下面1、取得每个部门最高薪水的人员名称2、哪些人的薪水在部门的平均薪水之上3、取得部门中(所有人的)平均的薪水等级,如下:4、不准用组函数(Max),取得最高薪水5、取得平均薪水最高的部门的部门编号6、取得平均薪水最高的部门的部门名称7、求平均薪水的等级最低的部门的部门名称8、取得比普通员工(员工代码没有在mgr字段上出现的)的最高薪水还要高的领导人姓名9、取得薪水...
2019-12-21 17:42:59
948
2
原创 基于java实现的OPT算法
1966年,Belady提出最佳页面替换算法(OPTimal replacement,OPT)。是操作系统存储管理中的一种全局页面替换策略 。当要调入一页而必须淘汰旧页时,应该淘汰以后不再访问的页,或距最长时间后要访问的页面。它所产生的缺页数最少,然而,却需要预测程序的页面引用串,这是无法预知的,不可能对程序的运行过程做出精确的断言,不过此理论算法可用作衡量各种具体算法的标准。例子:OPT ...
2019-12-08 20:55:03
2193
1
原创 CF620 E. New Year Tree(DFS序+状态压缩+线段树)
题目链接:CF620E题意: 给你一颗n个节点的树,每个节点被染上了颜色,然后就是m次查询。 查询的方式有两种 1,将以z为根的子树的结点全部更新为颜色X 2,问以z为根的子树的结点的不同颜色数量。默认根为1Input第一行输入n,m(4*10^5) 第二行 输入每个节点的颜色(n个) 颜色X<=60 接下来n-1行就是两个点相连 最后m行查询 其中 1 z X 代表操作1, 2 x ...
2019-07-27 16:46:42
226
原创 poj3468 A Simple Problem with Integers(线段树区间更新+区间求和 数组模板)
Language:A Simple Problem with IntegersTime Limit: 5000MS Memory Limit: 131072KTotal Submissions: 162897 Accepted: 50267Case Time Limit: 2000MSDescriptionYou have N integers, A1, A2, … , AN. Y...
2019-07-26 10:21:03
156
原创 HDU - 3887 Counting Offspring(dfs序+主席树)
Problem DescriptionYou are given a tree, it’s root is p, and the node is numbered from 1 to n. Now define f(i) as the number of nodes whose number is less than i in all the succeeding nodes of node i...
2019-07-25 17:03:22
134
原创 CF208 E.Blood Cousins(树上启发式合并)
题目链接:CF208EPolycarpus got hold of a family relationship tree. The tree describes family relationships of n people, numbered 1 through n. Each person in the tree has no more than one parent.Let’s cal...
2019-07-24 20:08:18
467
原创 CodeForces - 208E Blood Cousins(树上启发式合并)
Polycarpus got hold of a family tree. The found tree describes the family relations of n people, numbered from 1 to n. Every person in this tree has at most one direct ancestor. Also, each person in t...
2019-07-24 10:36:55
290
原创 D. Tree Requests (树上启发式合并)
题目链接:CF570DRoman planted a tree consisting of n vertices. Each vertex contains a lowercase English letter. Vertex 1 is the root of the tree, each of the n - 1 remaining vertices has a parent in the t...
2019-07-24 09:16:44
637
原创 CF600E Tree Requests(树上启发式合并模板题)
题目链接:CF600EYou are given a rooted tree with root in vertex 1. Each vertex is coloured in some colour.Let’s call colour c dominating in the subtree of vertex v if there are no other colours that appe...
2019-07-23 20:26:26
414
原创 922 D. Robot Vacuum Cleaner
题目链接:922DD. Robot Vacuum Cleanertime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPushok the dog has been chasing Imp for a few hours already....
2019-07-22 10:54:56
335
原创 abc134 D - Preparing Boxes
题目链接:ABC 134D题意:给你一个序列a,让你构造一个序列b,序列里面只有数字0和1,满足以下条件:对于位置i,将所有是i的倍数的下标里的值相加,取余2必须等于ai。思路:直接从后往前模拟一遍就可以了,因为后面的数会影响前面的数,所以必须先确定后面的数。那么怎么确定i位置的值是什么呢,只有将它的倍数的值全部加起来(除了一倍),如果取余和ai相等那么bi就是0,否则的话改为1。代码:...
2019-07-21 16:04:59
469
原创 abc134 E
题目链接:abc134 E题意:给你n个数,现在要将它们染色,两个数字有一样的颜色必需满足以下条件,当i<j,Ai<Aj。意思就是如果它们颜色要相同就必须要是一个上升子序列。思路:直接模拟就可以了。假定一个集合,一个数加入集合,只有两种情况,如果集合中有比它小的数字,那么它们可以有一个颜色,将这个数替换比他小的那个数(保证子序列它们是递增的),第二种情况就是,没有比他小的了,那么...
2019-07-21 15:27:16
369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人