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使用操作系统内核抬得代码,由操作系统内核来管理线程的调度和管理。

相关推荐
潜洋4 分钟前
Spring Boot教程之七: Spring Boot –注释
java·spring boot·后端·注释
小丁爱养花11 分钟前
网络原理(一):应用层自定义协议的信息组织格式 & 初始 HTTP
java·服务器·网络·网络协议·http
mljy.23 分钟前
C++《二叉搜索树》
c++·学习
程序猿进阶25 分钟前
Otter 安装流程
java·数据库·后端·mysql·数据同步·db·otter
暗夜绿30 分钟前
【GoF23种设计模式】01_建造者模式
java·设计模式·建造者模式
I_Am_Me_31 分钟前
【JavaEE进阶】SpringBoot 快速上⼿
java·spring boot·java-ee
200不是二百33 分钟前
短信发送业务
java·开发语言·junit
drebander37 分钟前
建造者模式Builder——优雅的使用姿势
java·算法·建造者模式
HuaLuLemon38 分钟前
03-微服务搭建
java·微服务·gulimall
Tech Synapse1 小时前
Java中使用FFmpeg拉取RTSP流
java·开发语言·ffmpeg