InnoDB中的行级锁是怎么实现的?
InnoDB行锁是通过给索引上的索引项加锁来实现的,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁
介绍一下Java中的IO流
Java中的IO流主要有4个基类:InputStream、OutputStream、Reader、Writer。其中,InputStream代表字节输入流,OutputStream代表字节输出流,Reader代表字符输入流,Writer代表字符输出流。其他的IO流都是从这4个基类派生而来的,并且子类的名字往往以基类的名字结尾。之后Java提供了新的IO模型(NIO),这种IO模型是基于IO多路复用实现的。
讲讲Java的跨平台原理
在说这个之前,我们先了解一下:
平台:指的是操作系统(Windows,Linux,Mac)。
跨平台:是指Java语言编写的程序,一次编译后,可以在多个系统平台上运行。
实现跨平台:
JVM充当了Java程序与底层操作系统的中间层,提供了跨平台的能力,使得Java程序可以在不同的操作系统上运行。不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机,也就是说只要该系统可以安装相应的Java虚拟机(JVM),该系统就可以运行Java程序。
JVM在执行Java字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
算法
21.
小欧逛商店
小欧准备去商店买东西,商店中有nn个物品从左向右摆成一排,第ii个物品的体积为aiai,价值为bibi。小欧有一个容量为xx的背包,她每次看到能装进背包里的物品都会装进去,如果装不进去就跳过这个物品。
小欧想知道,她总共能买多少价值的物品?
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
一个整数,代表总价值之和。
示例1
输入例子:
3 5 4 3 2 5 1 3
输出例子:
6
例子说明:
先买第一个物品,价值为 3。
遇到第二个物品时,此时剩余容量为 1,无法购买。
然后买第三个物品,价值为 3。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取物品数量和背包容量int n = scanner.nextInt();long x = scanner.nextInt();long totalValue = 0; // 总价值long remainingCapacity = x; // 剩余容量// 逐个读取物品的体积和价值for (int i = 0; i < n; i++) {long volume = scanner.nextInt();long value = scanner.nextInt();// 如果物品可以放入背包if (volume <= remainingCapacity) {totalValue += value; // 更新总价值remainingCapacity -= volume; // 更新剩余容量}}// 输出总价值System.out.println(totalValue);scanner.close();}
}
22.
小欧的字符串构造
小欧有一个字符串
s
s ,她想构造一个长度为
k
k 的字符串
t
t ,使得
s
+
t
s+t 或
t
+
s
t+s 拼成的字符串是回文串。如果可以构造,则输出
t
t ,若无法构造,请输出 -1。
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
输入描述:
第一行输入一个长度不超过 10^5 的字符串 s。第二行输入一个整数 k(1 \leq k \leq 10^5) 。
输出描述:
输出一个字符串表示答案。若无法构造,则输出 -1。
示例1
输入例子:
abc
3
输出例子:
cba
例子说明:
可以把字符串拼成abccba或cbaabc,这两个字符串都是回文串。
共有30个案例,过了20个
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();int k = sc.nextInt();StringBuilder reversed = new StringBuilder(s).reverse();if(k==s.length()){System.out.println(reversed.toString());}else{String s1=s.substring(0,k);String ss1=s+s1;String ss10=new StringBuilder(ss1).reverse().toString();String ss2=s1+s;String ss20=new StringBuilder(ss2).reverse().toString();String s2=reversed.substring(0,k);String ss3=s+s2;String ss30=new StringBuilder(ss3).reverse().toString();String ss4=s2+s;String ss40=new StringBuilder(ss4).reverse().toString();if(ss1.equals(ss10)){System.out.println(s1);}else if(ss2.equals(ss20)){System.out.println(s1);}else if(ss3.equals(ss30)){System.out.println(s2);}else if(ss4.equals(ss40)){System.out.println(s2);}else{System.out.println(-1);}}}
}
58. 最后一个单词的长度
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大
子字符串
。示例 1:输入:s = "Hello World"
输出:5
解释:最后一个单词是“World”,长度为 5。
示例 2:输入:s = " fly me to the moon "
输出:4
解释:最后一个单词是“moon”,长度为 4。
示例 3:输入:s = "luffy is still joyboy"
输出:6
解释:最后一个单词是长度为 6 的“joyboy”。提示:1 <= s.length <= 104
s 仅有英文字母和空格 ' ' 组成
s 中至少存在一个单词
class Solution {public int lengthOfLastWord(String s) {String[] a = s.split(" ");return a[a.length-1].length();}
}
近日总结:好好学习,天天向上