- 博客(48)
- 资源 (2)
- 收藏
- 关注
原创 遍历所有元素与遍历1/16的元素耗时比较
原视频:https://www.bilibili.com/video/BV1Rg41157KUpublic class CalcTest { public static void main(String[] args) { int[] arr = new int[64 * 1024 * 1024]; // 遍历所有元素 long start1 = System.currentTimeMillis(); for (int i = 0
2021-09-15 14:24:56
255
原创 Shrio + CAS 学习笔记——权限
数据库中相关的表sys_organization:组织表基本字段:主键id、组织名称name、排序sort、状态state(0禁用、1启用)其他字段:创建时间createTime、部门层级level、父id parentId、父级名称parentName、备注remark、更新时间updateTimesys_user:用户表基本字段:主键id、用户名username、状态state(0禁用、1启用、2锁定)其他字段:创建时间createTime、名称nickName、组织主键orgId、组织名称
2021-09-11 14:58:20
608
原创 关于Postman与Shrio权限认证
关于Postman与Shrio权限认证问题:用 Postman 发送请求被拒绝 401 Unauthorized解决方法:
2021-09-08 14:41:59
321
原创 Redis 学习笔记
Redis 入门安装 Redis通过指定的配置文件 redis.conf 启动 redis 服务使用 redis-cli 连接 6379 端口测试 get、set、keys * 命令关闭 redis性能测试redis-benchmark(官方自带的性能测试工具)# 测试:100 个并发连接 100000 请求redis-benchmark -h localhost -p 6379 -c 100 -n 100000Redis 基础知识Redis 默认
2021-05-28 13:50:07
259
原创 Spring Boot 学习笔记
原理初探pom.xml:核心依赖:spring-boot-dependencies 在父工程中我们在写或者引入一些 Spring Boot 依赖的时候,不需要指定的版本,就因为有这些版本仓库启动器:是 Spring Boot 的启动场景比如 spring-boot-starter-web,它就会帮我们导入 web 环境所有的依赖Spring Boot 会将所有功能的场景,都变成一个个启动器我们要使用什么功能,只需要找到对应的启动器就可以了(starter)主程序://
2021-05-13 20:16:17
206
3
原创 Spring 关于 Bean 的生命周期
Bean 的生命周期Class(UserService) -----> 实例化 -----> 对象 ------> 属性填充 -----> 初始化 -----> AOP -----> 代理对象 -----> bean<?xml version="1.0" encoding="UTF8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=
2021-05-06 20:53:17
183
2
原创 Spring 学习笔记
Spring<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version></dependency><dependency> <groupId>org.springfr
2021-05-04 19:00:34
167
1
原创 Mybatis 学习笔记
Mybatis什么是 MybatisMybatis 是一款优秀的持久层框架它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。持久化数据持久化持久化就是将程序的数据在持久状态和瞬时状态转化的过程内存:断电即失数据库(JDBC)、
2021-04-26 20:20:44
212
原创 计算机网络 学习笔记
IPIP 地址 InetAddress唯一定位一台网络上计算机127.0.0.1:本机 localhostIP 地址分类:IPV4 / IPV6(128位 8个无符号整数)公网(互联网) / 私网(局域网)package com.jarvis.lesson01;import java.net.InetAddress;import java.net.UnknownHostException;public class TestInetAddress { public
2021-04-20 14:14:43
134
原创 Leetcode 1235. 规划兼职工作
1235. 规划兼职工作思路参照b站详解 正月点灯笼up的class Solution { public int jobScheduling(int[] startTime, int[] endTime, int[] profit) { // startTime endTime profit previous int[][] combine = new int[startTime.length][4]; for(int i = 0; i <
2021-04-20 09:59:33
259
原创 Map中 putIfAbsent、compute、computeIfAbsent、computeIfPresent 学习笔记
putIfAbsent、compute、computeIfAbsent、computeIfPresent 学习笔记putIfAbsentpublic class Main { public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put("KeyOne", "ValueOne"); map.put
2021-04-17 12:58:55
527
原创 错题整理
错题整理 1. 导出类调用基类的构造器必须用到的关键字(): A.this B.final C.super D.static 答案选C: 基类就是父类,导出类就是子类,子类调用父类构造方法用super()关键字,且放在子类构造函数的第一行 2. 在main()方法中给出的字节数组,如果将其显示到控制台上,需要(): A.标准输出流System.out.printIn() B.建立字节输出流 C.建立字符输出流 D.标准输入流System.in.read() 答案选A: out是java
2021-04-11 15:04:49
283
原创 MySQL 学习笔记
MySQL学习笔记操作数据库-- 创建数据库CREATE DATABASE IF NOT EXISTS school;-- 删除数据库DROP DATABASE IF EXISTS school;-- 使用数据库(如果表名是特殊字段,需要加``)USE school;-- 查看数据库SHOW DATABASES;数据库的列类型数值: 1. tinyint 十分小的数据 1个字节 2. smallint 较小的数据 2个字节 3. mediumint 中等大小
2021-04-09 18:18:00
214
原创 Leetcode 365. 水壶问题(裴蜀定理)
365. 水壶问题(裴蜀定理)// 裴蜀定理// ax+by=zax+by=z 有解当且仅当 zz 是 x, yx,y 的最大公约数的倍数。// 因此我们只需要找到 x, yx,y 的最大公约数并判断 zz 是否是它的倍数即可。class Solution { public boolean canMeasureWater(int x, int y, int z) { if (x + y < z) { return false;
2021-04-08 11:25:44
166
原创 GoF23 代理模式学习笔记
GoF23 代理模式学习笔记静态代理package proxy;public interface Rent { void rent();}package proxy;public class Host implements Rent{ @Override public void rent() { System.out.println("rent"); }}package proxy;public class Proxy { private Host host
2021-04-07 18:08:47
144
1
原创 GoF23 桥接模式学习笔记
GoF23 桥接模式学习笔记桥接模式的好处: 1. 桥接模式偶尔类似于多继承方案,但多继承方案违背了类的单一职责原则(例如创建 联想笔记本 类),复用性比较差,类的个数也非常多,桥接模式是比多继承方案更好的解决方法,极大地减少了子类的数量,从而降低管理和维护的成本 2. 桥接模式提高了系统的可扩展性,在两个变化的维度(Brand、Computer)中任意扩展一个维度,不需要修改原有系统,符合开闭原则,就像一座桥,可以把两个变化的维度拼接起来桥接模式的劣势: 1. 桥接模式的引入会增加系统的理解
2021-04-07 14:59:44
169
1
原创 GoF23 适配器模式学习笔记
GoF23 适配器模式学习笔记将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于不兼容而不能一起工作的类可以一起工作对象适配器优点: 1. 一个对象适配器可以把多个不同的适配者适配到同一个目标 2. 可以适配一个适配者的子类,由于适配器和适配者是关联关系,根据“里氏代换原则”,适配者的子类也可以通过该适配器进行适配类适配器缺点: 1. 对于Java等不支持多重类继承的语言,一次最多只能适配一个适配者类,不能同时适配多个适配者 2. 在Java等语言中,类适配器模式中的目标抽
2021-04-06 11:57:38
148
原创 GoF23 原型模式学习笔记
GoF23 原型模式学习笔记 1. 实现Cloneable接口 2. 重写clone方法应用场景: 1. Spring Bean 的创建:单例模式、原型模式 2. 与工厂模式一起使用,代替 new 浅拷贝代码中表现为cloneVideo的publishTime只是指向了原video的publishTimepackage prototype.shallow;import java.util.Date;public class Video implements Cloneable
2021-04-05 18:58:41
153
2
原创 GoF23 建造者模式学习笔记
GoF23 建造者模式学习笔记 1. 建造者模式也属于创建型模式 2. 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 3. 主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象优点: 1. 产品的建造和表示分离,实现了解耦;使用建造者模式可以使客户端不必知道内部组成细节 2. 将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰 3. 具体的建造者类之间相互独立(下面例子中表现为可以存在多种Worker),这有利于系统的扩 展
2021-04-05 12:50:05
186
1
原创 GoF23 工厂模式学习笔记
GOF23 工厂模式学习笔记工厂模式核心本质: 1. 实例化对象不使用new,用工厂方法代替 2. 将选择实现类,创建对象统一管理和控制,从而将调用者和实现类解耦三种模式: 1. 简单工厂模式:用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改原有代码) 2. 工厂方法模式:用来生产同一等级结构中的固定产品(支持增加任意产品) 3. 抽象工厂模式:围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂 根据设计原则选择:工厂方法模式 根据实际业务选择:简单工厂模式
2021-04-04 15:28:56
171
1
原创 4种数组复制方法效率比较
4种数组复制方法效率比较package ind;import java.util.Arrays;public class Test { public static void main(String[] args) { int[] arr = new int[100000000]; int index = 0; for (int i = 0; i < arr.length; i++) { arr[index++] = i; } System.out.println
2021-04-03 19:27:37
569
原创 GoF23 单例模式学习笔记
GOF23 单例模式学习笔记单例模式:构造既私有饿汉式package single;// 饿汉式单例:天生线程安全// 问题是可能会消耗不必要的内存public class Hungry { private Hungry() { } private final static Hungry HUNGRY = new Hungry(); public Hungry getInstance() { return HUNGRY; }}懒汉式package singl
2021-04-03 16:41:23
139
原创 Leetcode 74. 搜索二维矩阵
74. 搜索二维矩阵// 转成一维数组然后二分查找class Solution{ public boolean searchMatrix(int[][] matrix, int target) { int[] oneDimension = new int[matrix.length * matrix[0].length]; int index = 0; for(int i = 0; i < matrix.length; i++){
2021-03-30 08:43:41
117
原创 Leetcode 355. 设计推特
355. 设计推特class Twitter { // <用户ID, 该用户关注的人> private HashMap<Integer, Set<Integer>> followUsers; // <用户ID, <推文ID, 推文发布时间>> private HashMap<Integer, HashMap<Integer, Integer>> tweets; // 用于记录推文发布的
2021-03-30 08:40:36
155
原创 Leetcode 307.区域和检索 - 数组可修改(线段树)
307.区域和检索 - 数组可修改(线段树)b站视频详解线段树class NumArray { private int[] tree; private int[] nums; private int n; private void buildTree(int node, int start, int end){ if(start == end){ tree[node] = nums[start]; re
2021-03-28 10:31:52
120
原创 Leetcode 组合、组合总和、组合总和Ⅱ、组合总和Ⅲ(回溯算法)
组合、组合总和、组合总和Ⅱ、组合总和Ⅲ、组合总和Ⅳ组合class Solution { public List<List<Integer>> combine(int n, int k) { List<List<Integer>> res = new ArrayList<>(); addToList(res, new ArrayList<>(), n, k, 1); retur
2021-03-26 16:12:05
121
原创 Leetcode 比较版本号
比较版本号// 首先想到的就是 String.split()// 要注意转义,"." 在正则表达式中指任何字符class Solution { public int compareVersion(String version1, String version2) { String[] version1Arr = version1.split("\\."); String[] version2Arr = version2.split("\\.");
2021-03-25 11:42:48
204
原创 Leetcode 只出现一次的数字Ⅱ
只出现一次的数字Ⅱ// 借鉴本题的热评,太妙了这算法// num 出现第一次// 0 ^ num = num// num & 1 = num// a = num// 0 ^ num = num// num & ~num = 0// b = 0// num 出现第二次// num ^ num = 0// 0 & ~0 = 0// a = 0// 0 ^ num = num// num & ~0 = num// b = num// num 出现
2021-03-23 17:24:26
104
原创 Leetcode 三角形最小路径和
三角形最小路径和// 动态规划class Solution { public int minimumTotal(List<List<Integer>> triangle) { // 原三角形: // 2 // 3 4 // 6 5 7 // 4 1 8 3 // 2 // 5 6 // 9 10 13 //
2021-03-23 12:04:25
125
原创 Leetcode 不同的二叉搜索树(卡塔兰数)
不同的二叉搜索树(卡塔兰数)// 动态规划// 1 2 3 4 5 6 7// 假设选取 4 为根节点,存在不同搜索二叉树的个数为:(1 2 3)能构成不同搜索二叉树的个数 * (5 6 7)能构成不同搜索二叉树的个数// 卡塔兰数递推式↓// h(n) = h(0) * h(n-1) + h(1) * h(n-2) + ... + h(n-1) * h(0) (n≥2)class Solution { public int numTrees(int n) { int[
2021-03-22 18:04:55
147
原创 Leetcode 简化路径(String.join()与栈)
简化路径(String.join()与栈)class Solution { public String simplifyPath(String path) { // 一开始用Deque<>实现栈,结果在String.join()时错误,双向队列作为String.join()的第二个参数时,输出顺序与栈作为其第二个参数时相反。 // 测试用例:"/home//foo/" // 输出:"/foo/home" // 预期
2021-03-21 13:11:52
206
原创 Leetcode 合并区间
合并区间class Solution { public int[][] merge(int[][] intervals) { if(intervals.length == 1) return intervals; // lambda表达式 Arrays.sort(intervals, (o1, o2) -> { return o1[0] == o2[0] ? o1[1] - o2[1] : o1[0] - o2[0];
2021-03-20 19:52:04
106
原创 Leetcode Z 字形变换(String.join()方法拼接字符串)
Z 字形变换(String.join()方法拼接字符串)class Solution { public String convert(String s, int numRows) { if(numRows == 1) return s; List<StringBuffer> rows = new ArrayList<>(); for(int i = 0; i < Math.min(numRows, s.length(
2021-03-20 16:52:40
147
原创 Leetcode 逆波兰表达式求值
逆波兰表达式求值// java官方文档推荐用双端队列Deque实现栈,而非Stack,Deque较之Stack强大很多,Stack只能先进后出// switch判断String时会用equals方法,而非==class Solution{ public int evalRPN(String[] tokens) { Deque<Integer> stack = new LinkedList<>(); for(int i = 0; i &l
2021-03-20 09:52:25
115
原创 关于Comparator是函数式接口
关于Comparator是函数式接口public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj); default Comparator<T> reversed() { return Collections.reverseOrder(this); } default Comparator<T> thenCo
2021-03-19 18:21:05
717
原创 Leetcode 三数之和、四数之和
Leetcode 三数之和、四数之和三数之和// 暴力会超时,这里采用排序 + 双指针class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList<>(); Arrays.sort(nums); for(int i = 0; i <
2021-03-19 13:14:11
156
原创 Leetcode 反转链表Ⅱ
反转链表Ⅱ// 栈class Solution{ public ListNode reverseBetween(ListNode head, int left, int right) { if(left == right || head == null) return head; ListNode initialHead = head; ListNode start = head; ListNode end = null;
2021-03-18 14:47:35
98
原创 Leetcode 卡车上的最大单元数(Arrays.sort()重写比较器)
卡车上的最大单元数(Arrays.sort()重写比较器)class Solution { public int maximumUnits(int[][] boxTypes, int truckSize) { int res = 0; Arrays.sort(boxTypes, new Comparator<int[]>(){ @Override public int compare(int[] o1,
2021-03-16 17:50:01
172
原创 Leetcode 按照频率将数组升序排序(HashMap排序)
按照频率将数组升序排序(HashMap排序)// 用lambda表达式应该更简洁些class Solution { public int[] frequencySort(int[] nums) { int[] res = new int[nums.length]; int index = 0; Map<Integer, Integer> map = new HashMap<>(); for(int i =
2021-03-15 17:35:59
146
C#简单截图拼接软件
2021-01-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人