滑动窗口看到一串数组,要求数量的时候,可能就会用到滑动窗口
定长只需要考虑进出即可
然后考虑窗口大小不足的时候,continue
模板:
123456789101112131415class Solution643{ public double findMaxAverage(int[] nums, int k){ int maxS = Integer.MIN_VALUE; int s= 0; for (int i =0;i<nums.length;i++){ s +=nums[i]; if (i<k-1){ continue; } maxS = Math.max(maxS,s); s -=nums[i-k+1]; } return (double) maxS/k; }}
头进 ...
简介Spring是一个支持快速开发Java EE应用程序的框架。它提供了一系列底层容器和基础设施,并可以和大量常用的开源框架无缝集成,可以说是开发Java EE应用程序的必备。
Spring Framework主要包括几个模块:
支持IoC和AOP的容器;
支持JDBC和ORM的数据访问模块;
支持声明式事务的模块;
支持基于Servlet的MVC开发;
支持基于Reactive的Web开发;
以及集成JMS、JavaMail、JMX、缓存等其他模块。
Ioc容器在学习Spring框架时,我们遇到的第一个也是最核心的概念就是容器。
什么是容器?容器是一种为某种特定组件的运行提供必要支持的一个软件环境。例如,Tomcat就是一个Servlet容器,它可以为Servlet的运行提供运行环境。类似Docker这样的软件也是一个容器,它提供了必要的Linux环境以便运行一个特定的Linux进程。
通常来说,使用容器运行组件,除了提供一个组件运行环境之外,容器还提供了许多底层服务。例如,Servlet容器底层实现了TCP连接,解析HTTP协议等非常复杂的服务,如果没有容器来提供这些服务,我们 ...
事务1.spring 事务失效的场景有哪些?spring事务的实现原理是基于AOP的动态代理和TransacationInterceptorh还有底层依赖
AOP:Spring 通过 ProxyFactoryBean 生成代理对象,默认对接口用 JDK 动态代理,对类用 CGLIB 代理;是采用cglib继承目标类的方式去创建代理类,非pulic的方法不能能继承。
拦截器:核心拦截器,在方法调用前后开启 / 提交 / 回滚事务,基于 ThreadLocal 存储事务状态;基于运行时异常来回滚的,所以把运行时异常给catch或者返回没指定的异常
底层依赖:通过 PlatformTransactionManager 接口适配不同事务管理器(如 JDBC、JPA)。
使用ThreadLocal存储事务的状态,(如连接、隔离级别)通过TransactionSynchronizationManager存在线程本地变量,保证线程安全。
所以基于这个情况,spring事务失效的场景有:
1.吃掉运行时异常没抛出:
2.未配置回滚规则,要配置rollbackFor=Exception.class指定类 ...
English
未读5.1No work is insignificant. All labor that uplifts humanity has dignity and importance and should be undertaken with painstaking excellence.
cheque 支票
cherish 珍爱
chimney 烟囱
choke 窒息
cholesterol 胆固醇
5.2The beautiful thing about learning is nobody can take it away from you.
Christian 基督徒
circuit 巡回
chilly 寒冷的
5.3Today’s mighty oak is just yesterday’s nut, that held its ground.
clap 鼓掌
clarity 清楚的
ceremonial 礼仪的
clause 子句
claw 爪子
clerical 牧师的
cliff 悬崖
cereal 谷物
5.4Young people have changed t ...
java
未读定长型定长型:
直接考虑头和尾就行。
只需要考虑移除(离开窗口)的字母 a 是不是元音,以及添加(进入窗口)的字母 i 是不是元音即可
然后考虑窗口大小不足的时候,continue
1456. 定长子串中元音的最大数目给你字符串 s 和整数 k 。
请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。
英文中的 元音字母 为(a, e, i, o, u)。
解决定长窗口的问题:
只需要考虑移除(离开窗口)的字母 a 是不是元音,以及添加(进入窗口)的字母 i 是不是元音即可
1234567891011121314151617181920212223class Solution1456{ public int maxVowels(String S,int k ){ char[] s = S.toCharArray(); int ans = 0; int vowel = 0; for (int i =0;i<s.length;i++){ if ( ...
总体架构架构思想:分层:
Controller → Service → Entity,这三层架构体系,
Controller 层 不直接操作数据库,而是通过 subjectService 去拿数据。
业务逻辑集中在 Service 层,Controller 只负责接收请求、调用服务、返回结果。
统一的返回结果:
不直接返回裸的 List 或 对象,而是包一层 RestResponse。
成功返回 RestResponse.ok(数据)。
统一格式,前端处理简单。
后期可以很方便统一加异常码、消息、分页信息。
合理的使用对象映射:
Subject 是实体类(Entity),对应数据库。
SubjectVM、SubjectEditRequestVM 是视图模型(VM),对应前端页面。
通过 modelMapper.map(d, SubjectVM.class) 进行转换,不暴露数据库结构。进行反序列化,更加安全
使用流式编程:
123456List<SubjectVM> subjectVMS = subjects.stream().map(d -> { S ...
redis数据类型基础Stringredis中的数据是以键值对的形式存储的,然后存储是以二进制安全的形式进行存储
默认是不支持中文的,但连接的时候可以加上参数—raw,就是以原始的形式进行存储。这样就可以看到中文了
set:set key value 设置一个键值对
get:get key,返回的是值
12345127.0.0.1:6379> set name 你好OK127.0.0.1:6379> get name"\xe4\xbd\xa0\xe5\xa5\xbd"127.0.0.1:6379>
123127.0.0.1:6379> get name你好127.0.0.1:6379>
del:del key,用来删除一个键
exists:exists key 用来看一个键是否存在
123127.0.0.1:6379> exists name1127.0.0.1:6379>
返回1表明存在
keys:key * 用来查看所有的键,支持通配符
123127.0.0.1:6379> keys *name127.0.0.1: ...
java
未读二分查找二分查找的原理就是取一个中间值,然后那中间值和目标值进行比较。
如果比目标值大的话,说明目标值在左边,中间值mid就变为右边right
相对应的,小于目标值的话,说明目标值在右边,中间值mid就变为left
二分查找的总结:
必须数组/序列是有序的,二分前必须先进行排序。
要确定搜索区间常见形式:[lo, hi]、[lo, hi)、(lo, hi]、(lo, hi)
确定开区间闭区间
开区间:
123456789101112private int lowerBound(int[] nums,int right,int target){ int left=-1; while (left+1<right){ int mid = (left+right)>>>1; if (nums[mid]>=target){ right=mid; }else { le ...
数据结构1.将关键字9, 17, 25, 33, 21, 77, 64, 53, 42, 31依次插入到初始为空的小根堆H中,得到的H是
小根堆是一个完全二叉树,每个节点都要小于等与他的左右节点
根节点是最小的值
最终:
[9, 17, 25, 33, 21, 77, 64, 53, 42, 31]
二叉树的形式:
123456789 9 / \ 17 25 / \ / \ 33 21 77 64/ \ /53,42,31
2.在一个二维数组A中,假设每个数组元素的长度为3个存储单元,行下标i为0~9,列下标j为0~7,从首地址200开始连续按列优先存放,在这种情况下,元素A[9][2}的起始地址为( )
一列一列地存,每列里是从上到下。
所以每个元素的起始地址相对于前一个元素的起始地址增加3个存储单元
起始地址 = 首地址 + (j 行数 + i) 元素长度
所以最后是287
3.考虑以下递归函数:
1234567int calculateI(int i) { if (i <= 1) { ...
English
未读每日一话+单词遗忘表4.1The liar’s punishment is, not in the least that he is not believed, but that he cannot believe anyone else.
abosorption 吸收
accelerate 加速
accumulation 积累
acquisition 获得
每日一话+单词遗忘表4.2There are dark shadows on the earth, but its lights are stronger in the contrast.
admminttance 允许进入
每日一话+单词遗忘表4.3Healing is a matter of time, but it is sometimes also a matter of opportunity.
adverb 副词
advisor 顾问
advocate 主张
aerial 空气
affair 事情
affluent 丰富的
每日一话+单词遗忘表4.4Death is not the opposite of ...
java
未读4.1解决智力问题
给你一个下标从 0 开始的二维整数数组 questions ,其中 questions[i] = [pointsi, brainpoweri] 。
这个数组表示一场考试里的一系列题目,你需要 按顺序 (也就是从问题 0 开始依次解决),针对每个问题选择 解决 或者 跳过 操作。解决问题 i 将让你 获得 pointsi 的分数,但是你将 无法 解决接下来的 brainpoweri 个问题(即只能跳过接下来的 brainpoweri 个问题)。如果你跳过问题 i ,你可以对下一个问题决定使用哪种操作。
比方说,给你
1questions = [[3, 2], [4, 3], [4, 4], [2, 5]]
如果问题 0 被解决了, 那么你可以获得 3 分,但你不能解决问题 1 和 2 。
如果你跳过问题 0 ,且解决问题 1 ,你将获得 4 分但是不能解决问题 2 和 3 。
请你返回这场考试里你能获得的 最高 分数。
1234567891011121314151617class Solution101{ public long mostP ...
原理概念1.什么是mysqlMySQL 是一个开源的关系型数据库,现在隶属于 Oracle 公司。是我们国内使用频率最高的一种数据库,我在本地安装的是最新的 8.3 版本。
怎么删除建立一张表?
使用DROP TABLE 来删除表
CREATE TABLE来创建表
创建表的时候可以使用PRIMARY KEY来创建主键
123456CREATE TABLE users ( id INT AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(100), PRIMARY KEY (id));
写一个升序/降序的sql语句
123SELECT id, name, salaryFROM employeesORDER BY salary DESC;
123SELECT id, name, salaryFROM employeesORDER BY salary DESC, name ASC;
排序的第一依据是salary 降序,第二一依据是name 升序
MYsql出现性能差的原因是什么?
可能是sql查询的时候使 ...