平时总结
//1、查看字母a在字符串出现的次数 //方法一:使用indexof计算出第一次匹配的位置count++,然后将往后匹配,直到匹配不到 @Test public void searchByIndexOf(){ String str="abcjavadefjavadddjavc"; String newStr="a"; int count=0; int i=0; while(str.indexOf(newStr,i)>=0){ count++; i=str.indexOf(newStr,i)+newStr.length(); } System.out.println(newStr+"匹配到"+count+"次"); } //方法二:使用replaceAll方法将要匹配的字串转成"",将替换前的长度减去替换后的长度 @Test public void searchByReplaceAll(){ String str="abcjavadefjavadddjavc"; String newStr="a"; int count=0; int i=0; int len1=str.length(); String str1=str.replace(newStr,""); int len2=str1.length(); System.out.println(newStr+"匹配到"+(len1-len2)+"次"); } //2、字符串比较方法 @Test public void compare(){ String str1 = new String("abc"); String str2 = new String("ABC"); int a = str1.compareTo(str2);//a>0 int b = str1.compareToIgnoreCase(str2);//b=0 System.out.println("a:"+a+","+"b:"+b); boolean c = str1.equals(str2);//c=false boolean d = str1.equalsIgnoreCase(str2);//d=true }
3、非对称加密
非对称加密是我自己手握私钥,别人给我的信息是通过我的公钥加密,到我手里用我的私钥解密;
我发给别人也是用他的公钥加密,他用他自己的私钥解开
4、java8新特性
-
Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
-
方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
-
默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
-
新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
-
Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
-
Date Time API − 加强对日期与时间的处理。
-
Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
-
Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。
- https://www.runoob.com/java/java8-new-features.html
5、xss和csrf的区别
xss:跨站脚本攻击
csrf:(Cross-site request forgery):跨站请求伪造。
xss:用户过分信任网站,放任来自浏览器地址栏代表的那个网站代码在自己本地任意执行。如果没有浏览器的安全机制限制,xss代码可以在用户浏览器为所欲为;
csrf:网站过分信任用户,放任来自所谓通过访问控制机制的代表合法用户的请求执行网站的某个特定功能。
6、常见7种排序算法
https://www.runoob.com/w3cnote/sort-algorithm-summary.html
冒泡排序
选择排序
插入排序
希尔排序
快速排序
归并排序
堆排序
基数排序