才不是今天没有学大知识才学这个。等我下周我发个大的。最近在读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使用操作系统内核抬得代码,由操作系统内核来管理线程的调度和管理。