自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 收藏
  • 关注

原创 leetcode 318. 最大单词长度乘积(位运算判断字符串是否有公共字符)

318. 最大单词长度乘积难度中等346给你一个字符串数组words,找出并返回length(words[i]) * length(words[j])的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回0。示例1:输入:words = ["abcw","baz","foo","bar","xtfn","abcdef"]输出:16 解释:这两个单词为 "abcw", "xtfn"示例 2:输入:words = ["a","ab","abc","d...

2022-04-13 00:01:14 394

原创 6040. 花园的最大总美丽值

leetcode

2022-04-10 15:53:08 423

原创 二进制枚举

小数目的事务的所有情况枚举,n个数枚举所有在哪些区域上我们需要的情况,这一共有 种不同的情况。for(int i = 0; i < (1<<n); i++) //从0~2^n-1个状态 { for(int j = 0; j < n; j++) //遍历二进制的每一位 { if(i & (1 << j))//判断二进制第j位是否存在 {

2022-03-20 15:52:46 271

原创 二叉树的前中后序以及层次遍历整理

144. 二叉树的前序遍历1.递归class Solution {public: vector<int> vc; vector<int> preorderTraversal(TreeNode* root) { vc.clear(); if(root == nullptr) return vc; dfs(root); return vc; } void dfs(TreeNode.

2022-03-19 17:35:36 115

原创 手写spring框架篇五 AOP

AOP在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率编程中,对象与对象之间,方法与方法之间,模块与模块之间都是一个个切面。一.AOP相关概念As

2022-02-10 18:19:05 476

原创 手写spring框架篇四spring三级缓存解决循环依赖问题

spring三级缓存解决循环依赖问题一.什么是循环依赖循环依赖–>循环引用。—>即2个或以上bean 互相持有对方,最终形成闭环。 eg:A依赖B,B依赖C,C又依赖A。【注意:这里不是函数的循环调用【是个死循环,除非有终结条件】,是对象相互依赖关系。public class Main { public static void main(String[] args) throws Exception { System.out.println(new A());

2022-02-10 18:18:09 272

原创 手写spring框架篇三IOC控制反转

IOC控制反转在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。为什么说是控制:传统程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建以及外部资源获取(不只是对象包括比如文件等)。为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象:由容器帮我们查找及注入

2022-02-10 18:16:39 231

原创 手写spring框架篇二注解

注解Annotation(注解)就是Java提供了一种为程序元素关联任何信息或任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。注解是添加到程序元素如包、类型、构造方法、方法、成员变量、参数、本地变量的声明中的额外信息。这些信息被存储在Annotation的“name=value”结构对中。注解的成员提供了程序元素的关联信息(成员称为参数或注解属性)

2022-02-10 18:14:06 611

原创 手写spring框架篇一反射

反射在实现框架中的用途:获取用注解标记操作的类反射就是把java类中的各种成分映射成一个个的Java对象在运行期间,一个类只有一个与之对应的Class对象产生一.简介JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应

2022-02-10 18:12:24 268

原创 手写一个简单的spring框架

手写一个简单的spring框架一. 为什么?​ 为什么要手写一个spring框架呢,当你把spring代码down到本地你就会发现,spring的核心代码都已经有100w行之多了,他的功能和代码风格都是每个Java程序员所推崇和阅读的。但一个spring框架的核心概念,是可以被抽出来理解和学习的。而且还有什么比手写一个更容易理解一个框架的呢?​ 还有就是结合自己的个人经验,无论是当时面试美团,还是实习的时候面浪潮等济南的一些公司,面试官问到spring的细节的时候,总会有一些无力感,随后就是来自面试官

2022-02-10 18:09:24 617

原创 MIT6.830 Lab 6: Rollback and Recovery

6.830 Lab 6: Rollback and Recoverylab6要实现的是simpledb的日志系统,以支持回滚和崩溃恢复;steal/no-steal: 是否允许一个uncommitted的事务将修改更新到磁盘,如果是steal策略,那么此时磁盘上就可能包含uncommitted的数据,因此系统需要记录undo log,以防事务abort时进行回滚(roll-back)。如果是no steal策略,就表示磁盘上不会存在uncommitted数据,因此无需回滚操作,也就无需记录undo

2022-02-07 21:01:18 225

原创 MIT6.830 Lab 5: B+ Tree Index

6.830 Lab 5: B+ Tree Indexlab5主要是实现B+树索引,主要有查询、插入、删除等功能,查询主要根据B+树的特性去递归查找即可,插入要考虑节点的分裂(节点tuples满的时候),删除要考虑节点内元素的重新分配(当一个页面比较空,相邻页面比较满的时候),兄弟节点的合并(当相邻两个页面的元素都比较空的时候)B+树的页面节点类型主要有四种:1.根节点页面:一个B+树的根节点,在SimpleDB中实现为BTreeRootPtrPage.java;2.内部节点页面:除去根节点和叶子节

2022-02-07 21:00:25 516

原创 MIT6.830 lab4 SimpleDB Transactions

MIT6.830 lab4 SimpleDB Transactionslab4要做的是让SimpleDB支持事务,基于严格两阶段封锁协议去实现原子性和隔离性的,所以开始前也需要了解两阶段封锁协议是如何实现事务的。两阶段封锁协议首先是封锁协议:我们将要求在系统中的每一个事务遵从封锁协议,封锁协议的一组规则规定事务何时可以对数据项们进行加锁、解锁。对于两阶段封锁协议:两阶段封锁协议要求每个事务分两个节点提出加锁和解锁申请:增长阶段:事务可以获得锁,但不能释放锁;缩减阶段:事务可以释放锁,但不能获得

2022-02-07 20:58:33 252

原创 MIT6.830 Lab3 Query Optimization

MIT6.830 Lab3 Query Optimizationlab3实现的是基于代价的查询优化器优化图片链接simple-db-hw-2021/controlflow.png at master · MIT-DB-Class/simple-db-hw-2021 · GitHub简单总结一下查询优化器的构成:1.Parser.Java在初始化时会收集并构造所有表格的统计信息,并存到statsMap中。当有查询请求发送到Parser中时,会调用parseQuery方法去处理2.parseQue

2022-02-07 20:57:46 340

原创 MIT6.830 lab2 SimpleDB Operators

MIT6.830 lab2 SimpleDB OperatorsLab2的主要内容是为 SimpleDB 编写一组运算符来实现表修改‎ (e.g., insert and delete records), selections, joins, and aggregates.Exercise 1 Filter and JoinFilter: This operator only returns tuples that satisfy a Predicate that is specified a

2022-02-07 20:56:35 623

原创 MIT6.830 lab1 SimpleDb

MIT6.830 lab1 SimpleDb整个实验一共有6个lab,通过每一个lab的代码去实现一个简单的数据库,主要有:数据库的组织架构(字段、元组、模式、buffer pool等)、CRUD的实现、查询优化、事务与并发控制、崩溃与故障恢复。SimpleDB consists of:Classes that represent fields, tuples, and tuple schemas;Classes that apply predicates and conditions to t

2022-02-07 20:55:22 1192

原创 搞懂java反射

一.简介JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。二.作用在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判断任意一个类所具有的成员变量和方法; 在运行时调用任意一个对象的方法;三.反射依赖中的Class三种获取方式利用对象调用getClass()方法获取该对象的Class实例; 使用Cla

2022-01-03 15:35:23 70

原创 leetcode链表题整理

1.2. 两数相加给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.解答:链表入门题 用一个新链表存两链表每个节点之和,在模10即可class Solution...

2021-12-16 17:29:58 1006

原创 leetcode脑子题(leetcode题型整理篇)

持续更新leetcode中那种最优复杂度的那种脑子题,学习比较好的解决问题的方法。也算题型整理的一部分。

2021-11-23 19:37:13 258

原创 平方数的数学知识 leetcode 279. 完全平方数

一.题目给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例1:输入:n = 12输出:3解释:12 = 4 + 4 + 4二.题解1.根据 拉格朗日四平方和定理,可以得...

2021-10-30 22:34:38 130

原创 摩尔投票法(高阶打擂) leetcode229. 求众数 II

1.摩尔投票法简介(1)用途用于解决查找大小为n的整数数组,找出其中所有出现严格大于⌊ n/k ⌋次的元素。(2)算法开k-1个仓库,1.如果新来的数本来仓库中有,则仓库存量+1。2.如果新来的数仓库中没有并且有空的仓库(数的次数为0),则来的新数加入仓库。3.如果新来的数仓库中没有并且所有仓库都不为空则所有仓库中库存-1。(3)算法可行性即严格大于⌊ n/k ⌋次数是否一定会在仓库中,如果想把n/k的数移除仓库至少需要(⌊ n/k ⌋+1) * k2...

2021-10-24 22:53:49 68

原创 leetcode周赛248

1.瞎搞给你一个 从 0 开始的排列 nums(下标也从 0 开始)。请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans[i] = nums[nums[i]] 。返回构建好的数组 ans 。从 0 开始的排列 nums 是一个由 0 到nums.length - 1(0 和 nums.length - 1 也包含在内)的不同整数组成的数组。来源:力扣(LeetCode)链接:https://leetcode-c.

2021-07-06 22:27:44 225

原创 第三章 操作符

1.正文1.将一个对象赋值给另一个对象实际是将引用从一个地方复制到另一个地方,指向的是相同的对象。2.

2021-07-03 20:46:02 43

原创 第二章 一切都是对象

1.正文1.Java一切都被视作对象,并由引用来操纵对象。且引用可以独立存在。2.

2021-07-01 20:05:40 48

原创 对象导论 梦开始的地方

1.前言这个暑假想补一补自己的Java基础,于是就开个专题来记录下看Java编程思想这本书的感悟,不会完整照搬书上的内容,仅仅写的是自己有所理解的地方,有需求还是建议去读原书,共勉。2.正文1.我们将自然界分解为各种概念,并以语言形式固定下来,除非赞成这个协议否则我们没法交流。2.对象是唯一的,具有相同的特性和行为的对象归属为一类。3.面向对象程序设计实际是在创建新的数据类型,因为类描述了具有相同特性(数据元素)和行为(功能)的对象结合。-->优点:程序员通过定义类来适应问题,而不

2021-06-28 21:46:35 104

原创 SSM学生信息管理系统

闲着没事做,搞了个学生管理系统,会了ssm框架只有会sql就可以写项目。写项目比写算法简单多了,写算法你认真写你都不一定会,而项目就跟搬砖一样,刷着剧,摸着鱼搞了1天半。、这个博客不怎么用了需要代码的来着页面展示都是真实信息就不截了就这个效果......

2020-03-21 13:46:35 7154 33

原创 javaweb学生管理系统

实现功能,(1)系统用户由三类组成:教师、学生和管理员。(2)管理员负责的主要功能: ①用户管理(老师、学生增、删、改); ②课程管理(添加、删除和修改);(3)学生通过登录,可以查询课程的基本信息、实现选课、退课和成绩查询;(4)老师通过登录,可以查看选课学生的基本信息,可以输入成绩。博客引流来着下载源码点击下载...

2020-03-21 13:41:13 1702 3

原创 DP专题(继续搞)

A - Max Sum Plus Plus (滚动数组)要求m段区间的最大值,可以推出状态转移方程:dp[i][j] = max(dp[i][j-1], max{dp[i-1][k]} k = 1~j-1) + a[j]因为m不确定我们可以用滚动数组来表示 开一个max1数组不断更新前一段的数组的最大值。#include<bits/stdc++.h>#define...

2019-09-04 19:39:41 114

原创 计算几何模板

(1)点积求投影分析|BD| = BA * BC / |BC|BD = |BD| * BC / |BC| = BA * BC * BC / (|BC| * |BC|)D = B + BD#include<iostream>#include<cstdio>#include<math.h>using namespace std;str...

2019-08-26 16:30:44 108

原创 D - Shortest Cycle CodeForces - 1206D (floyed最小环)

题意:找到最小的可以形成回路的环,如果两者有边则&操作不为0;分析:我们可以想一下&操作不为1即2进制位有相同位ai < 18 所以有60位可以不相同因而超过120位则有3个数相同,而不超过三个数时我们便可以用最小环判定,沾板子。#include<bits/stdc++.h>using namespace std;#define ll long lo...

2019-08-21 14:56:25 195

原创 Symmetrical Painting(sort+思维)

Symmetrical Painting题意:给你矩阵的L和R矩阵为(i-1,L)和(i,R)组成给你一条线求在先两侧对称的面积。分析:我们可以想像一下,在矩阵的两侧而后所得最大面积为矩阵的中心和两侧,而超过一个矩阵的中心后他的面积就开始减少,在未到达中心前这个矩阵的面积是增加的,分别枚举由此我们可以得到结果。#include<iostream>#include<...

2019-08-16 20:01:41 387

原创 All men are brothers(并查集)

题意:初始所有人都不是朋友,然后经过m轮把他们其中两人变为朋友,问任意选4个人这4人均为不是朋友的种数。分析:需要我们做的是考虑合并后减少的。我们可以想一想合并后减少的就等于合并的两个的集合内的个数相乘*其余的任选两个。即本来没合并时可以符合条件的。#include<bits/stdc++.h>#define ll long longusing namespace s...

2019-08-16 16:42:34 425

原创 二次剩余定理 Quadratic equation板子加大佬博客

推荐一大佬博客然后本题(x+y) mod p = b(x*y) mod p = c(x-y)^2 -4xy = b^2 - 4c;二次剩余定理求解x-y参考大佬的代码赚个快读#include <iostream>using namespace std;#define LL long long#define ll long longLL w;str...

2019-08-16 15:18:06 215

原创 Knapsack Cryptosystem(折半搜索)

Knapsack Cryptosystem让你求用n个数中任意选择多个加和组成m,让你输出方案。分析:首先可以想到的是暴力搜索但是2^36次方显然是不可以的,因而我们可以采用折半搜索,分两组爆搜答案,从而大大减少时间复杂度。#include <bits/stdc++.h>using namespace std;#define ll long longconst in...

2019-08-16 11:31:26 364

原创 字典树整理加几个例题

首先粘贴一个入门博客https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html接下来沾上我的板子//找前缀#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 200...

2019-08-14 19:53:11 244

原创 F - Phone List HDU - 1671 (字典树查前缀)

题意:给你一串电话号看是否有号码为其他号码的前缀。分析:判断前缀我们只需要看前面字符串是否是已经出现字符串的前缀或者是后面的字符串的前缀。(1)已经出现字符串的前缀我们。用flag代表是否出现以该节点结尾的单词;(2)用sum代表以该节点结尾为前缀的单词数还有多少个,中间加判断条件即可。#include<iostream>#include<cstdio>...

2019-08-14 17:39:54 145

原创 N - String Problem HDU - 3374(最大最小表示法模板)

String Problem HDU - 3374 题意:给你一个字符串,让你求他的循环串的最大最小的位置,以及出现次数。分析:出现次数很好求了,你可想如果最大最小出现多次即存在循环串,才有可能有多个最大最小。然后就是最大最小表示法的模板存一下。#include <iostream>#include <cstdio>#include <stack&g...

2019-08-13 10:00:47 174

原创 K - Clairewd’s message HDU - 4300 (EXKMP)

K - Clairewd’s message HDU - 4300 题意:给你a-z的解密文即a-z加密对应的字母,然后给你一串数,前半部分是加密过的后半部分未加密过但可能不完整,让你求最小的完整的字符串。分析:我们可以将密文全部解析,这样前面部分就变成解密后的字符,接下来就变成了exkmp找到最长前缀匹配。#include <iostream>#include &lt...

2019-08-12 21:02:58 275

原创 J - Count the string HDU - 3336 (KMP)

J - Count the string HDU - 3336 题意:让我们求的是字符串的前缀的匹配数的和。分析:让我们想一想next数组存的是什么,前缀和后缀相同的长度。举例说明关键步骤也就是那个累加的情况。abab next数组值为0 0 1 2 即 ab 匹配 而我们要求的是所有前缀的匹配个数,接下来用到的是一个dp数组来加上前面的数目,next[i] = 0是匹配数为 1...

2019-08-12 18:55:05 177

原创 二分图最大权匹配(搭个板子,粘俩题)

先讲二分图最大权匹配做了什么:先说一说人尽皆知csl匈牙利最大匹配做的事是二分图两边点的最大匹配,但如果边权有值咋整呢,这就用到了二分图最大权匹配,让你可以匹配过后获得最大的权值。沾板子(kuangbin好菜牛逼)int g[maxn][maxn], linker[maxn], lx[maxn], ly[maxn];int slack[maxn], nx, ny, t, n, m;...

2019-08-09 19:58:19 349

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除