2024/3/31学习总结

才不是今天没有学大知识才学这个。等我下周我发个大的。最近在读mysql的innodb底层,到时候给大家总结大的用自己的话,应该是缓慢更新吧

一、上午

1.1 icpc西部赛

酣畅淋漓的环节。主办方没有活硬整,就a,c,d,h可以做。a,h还题目意思都不对。什么玩意

H题解

复制代码
#include <bits/stdc++.h>
#define OST std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
using namespace std;
typedef long long ll;
typedef  pair<int,int> PII;
const int INF = 0x3f3f3f3f;


string YES="YES",NO="NO",Yes="Yes",No="No",yes="yes",no="no";

void slove(){
	int n;
	cin>>n;
	vector<string> vec;
	string s;
	for(int i=0;i<n;i++){
		cin>>s;
		vec.push_back(s);
	}
	ll fs[4]={0};
	for(int i=0;i<4;i++) cin>>fs[i];
	ll blood=0;
	cin>>blood;
	ll combo=0;
	ll ans=0;
	for(auto s:vec){
		if(s=="miss"){
			blood-=2;
			combo=0;
		} 
		else if(s=="bad") {
			ans+=fs[3];
			blood-=1;
			combo=0;
		}
		else if(s=="good") {
			ans+=fs[2];
			combo=0;
		}
		else if(s=="great"){
			ans+=fs[1];
			ans+=combo;
			combo++;
		}
		else if(s=="perfect"){
			ans+=fs[0];
			ans+=combo;
			combo++;
		}
		if(blood<=0){
			cout<<"Poor Severus"<<endl;
			return;
		}
	}
	cout<<ans<<endl;
}

int main(){
	OST;
	int nn=1;
	while(cin>>nn){
		int j=1;
		while(j<=nn){
			cout<<"Case $"<<j<<":"<<endl;
			slove();
			//			if(j<nn) cout<<endl;
			j++;
		}
	}
}

c找不到题解了。

反正一个铜牌,没有含金量的比赛

二、下午

嘎嘎大睡。八股文

2.1 LinkedHashMap你可以介绍下嘛

LinkedHashMap继承了Hashmap的方法和函数。但是他重新了afterNodeRemoval,AfterNodeInsertion,afterNodeAccess方法。是他和hashmap不一样可以顺序插入和按序访问。

2.2 LinkedHashMap是如何按需插入迭代元素的

LinkedHashMap默认情况下就是按顺迭代的。accessOrder参数指定了按需访问。当access为true的时候,即get获取特定的值之后会将这个值放入链表的尾部。

2.3 LinkedHashMap是如果实现LRU?

LinkedHashMap内部维护的一个双向链表。当accessOrder为true并且removeEldenEntry重写的时候,当链表的长度大于容量放回true的时候,则会将头节点进行下移动,这样子就实现了lru.

2.4 LInkedHashMap和Map的区别

LinkedHasMap底层是双向链表,支持插入顺序和按序访问的。但是hashmap里面的参数则是不一定的。由于LinkedHashMap要维护双向链表所以会导致他的插入效率比较低。但是他提供了更多的功能,并且遍历迭代的时间比hashmap快。

2.5 什么是进程和线程

进程是程序的一次运行过程,是操作系统运行程序的基本单位,所以进程是动态的。当操作系统运行程序即是一个进程创建、运行到销毁的过程。

线程:线程是比进程更小的单位。一个进程可以同时拥有多个进程,同一个进程中的线程共享堆和方法区。线程的上下文切换开销与进程少,也叫轻量化的进程

2.6 java线程和操作系统的线程有啥区别?

jdk1.2之前使用的是绿色线程,即是java自己模拟的多线程,是不依赖操作系统的。则无法使用操作系统的io异步。只可以在内核线程中运行无法利用多核态的特点。

jdk1.2使用操作系统内核抬得代码,由操作系统内核来管理线程的调度和管理。

相关推荐
HanhahnaH9 分钟前
Spring集合注入Bean
java·spring
未定义.22115 分钟前
电子削铅笔刀顺序图详解:从UML设计到PlantUML实现
java·软件工程·uml
丰锋ff23 分钟前
考研英一学习笔记
笔记·学习·考研
摘星编程25 分钟前
并发设计模式实战系列(3):工作队列
设计模式·并发编程
雾月5532 分钟前
LeetCode 1292 元素和小于等于阈值的正方形的最大边长
java·数据结构·算法·leetcode·职场和发展
hnlucky38 分钟前
redis 数据类型新手练习系列——Hash类型
数据库·redis·学习·哈希算法
Invinciblenuonuo1 小时前
FreeRTOS学习笔记【10】-----任务上下文切换
笔记·学习
好奇龙猫1 小时前
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(11): てあります。
学习
24k小善1 小时前
Flink TaskManager详解
java·大数据·flink·云计算
想不明白的过度思考者2 小时前
Java从入门到“放弃”(精通)之旅——JavaSE终篇(异常)
java·开发语言