哈喽~,大家好,我是千羽。
下面分享我认识的一位24届大佬华中科技大学985硕,字节二面。
问了常规基础和面试题,总体上不难。
使用MyISAM引擎建表需要指定engine为MyISAM。以下是使用MyISAM引擎建表的一般步骤:
CREATE TABLE my_table (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT(11),
PRIMARY KEY (id)
) ENGINE=MyISAM;
在上述示例中,创建了一个名为"my_table"的表,包含id、name和age字段。id字段为主键,engine为MyISAM。
SHOW CREATE TABLE my_table;
这将显示包含表的所有详细信息的查询结果,包括engine为MyISAM。
请注意,使用MyISAM引擎的表不支持事务和外键约束。此外,MyISAM表在系统发生崩溃时可能会导致数据损坏,因此需要定期备份数据。在使用MyISAM引擎时,建议对表进行优化以提高性能,例如使用OPTIMIZE TABLE语句。
在Linux下,可以使用top
命令来查找CPU占用率最高的进程。top
命令会实时显示系统中各个进程的资源占用状况,并按照CPU占用率的高低进行排序。
要使用top
命令,请按照以下步骤操作:
然后按回车键。
这会启动top
命令,并显示系统中各个进程的CPU占用率等信息。
在top
命令的界面中,你会看到各个进程按照CPU占用率的高低排列。默认情况下,top
命令会按照CPU占用率排序,占用CPU资源最多的进程会排在最前面。
你可以使用键盘上的方向键来浏览不同的进程列表,按下q
键退出top
命令。
如果你想在top
命令中查看其他资源的使用情况,可以使用以下命令:
M
键。S
键。D
键。在Java中实现带有TTL(Time To Live)的LRU(Least Recently Used)缓存,我们可以使用Java标准库中的LinkedHashMap
。LinkedHashMap
是一个带有链接和排序的散列映射,它同时具有LRU和时间戳特性。下面是一个简单的实现:
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
public class LRUCacheWithTTL<K, V> {
private final int capacity;
private final long ttl;
private final Map<K, ValueHolder<V>> cache;
public LRUCacheWithTTL(int capacity, long ttl) {
this.capacity = capacity;
this.ttl = ttl;
this.cache = new LinkedHashMap<>(capacity, 0.75f, true) {
protected boolean removeEldestEntry(Map.Entry<K, ValueHolder<V>> eldest) {
if (size() > capacity) {
expireOldestEntry();
return true;
} else {
return false;
}
}
};
}
public synchronized V get(K key) {
ValueHolder<V> valueHolder = cache.get(key);
if (valueHolder == null) {
return null;
} else {
valueHolder.touch();
return valueHolder.getValue();
}
}
public synchronized void put(K key, V value) {
if (cache.containsKey(key)) {
cache.get(key).setValue(value);
} else {
ValueHolder<V> valueHolder = new ValueHolder<>(value, System.currentTimeMillis());
cache.put(key, valueHolder);
expireOldestEntry();
}
}
private void expireOldestEntry() {
ValueHolder<V> eldest = null;
long now = System.currentTimeMillis();
for (ValueHolder<V> valueHolder : cache.values()) {
if (eldest == null || valueHolder.getTimestamp() < eldest.getTimestamp()) {
eldest = valueHolder;
}
}
if (eldest != null && now - eldest.getTimestamp() > ttl) {
cache.remove(eldest.getKey());
}
}
}
这里我们定义了一个内部类ValueHolder
来保存值和时间戳:
public class ValueHolder<V> {
private V value;
private long timestamp;
public ValueHolder(V value, long timestamp) {
this.value = value;
this.timestamp = timestamp;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
public long getTimestamp() {
return timestamp;
}
}