02-Java基础-2

一.ajax中的跨域问题

慕课网视频讲解链接:https://www.imooc.com/learn/947arrow-up-right

1.跨域问题产生的原因: 
    (1):浏览器的限制
          跨域限制只有在浏览器环境中才有,是浏览器为了安全考虑对跨域请求做了限制 
    (2):跨域 
          请求域名和本站域名 必须是跨域才会触发浏览器的跨域问题 
    (3):XmlHttpResquest  
          请求的类型必须是XmlHttpResquest才会引发浏览器的跨域问题  

          比如说img、script标签中发起的请求就不是XmlHttpRequest类型的,所以可以跨域  

2.解决思路:根据跨域问题产生的原因解决思路可以从三方面入手 
    (1):浏览器禁止检查:可以命令行启动浏览器:chrome --disable-web-security  
    (2):跨域方面解决:
          调用方解决:  
                    调用方隐藏跨域,将需要跨域的请求配置代理进行转发(具体可参考以上博客链接);  
                    比如可以请求自己服务器,由服务器请求跨域资源,之后再返回给前端,因为服务端不存在跨域问题  
          被调用方解决:  
                    可以在http服务器(apache或者nginx等)或者web服务器(tomcat,weblogic等) 进行设置,
                    比如Spring中可以在Controller方法上添加@CrossOrigin注解;或者配置过滤器拦截器统一处理;  
                    或者SpringBoot中添加同源Cors(配置类中实例化org.springframework.web.filter.CorsFilter) 
                    主要原理就是在responseHeader中添加允许跨域的头信息(请求头:Access-Control-Allow-Origin), 
                    告诉浏览器该请求是允许跨域的,这也间接说明了另一个问题:跨域请求浏览器是可以正常请求,  
                    并且服务端正常响应的,但是浏览器接收到响应由安全机制判定该请求是跨域请求时,报出跨域请求问题          
    (3):XmlHttpResquest的解决办法: 
          只要改变请求的类型不为XmlHttpResquest即可,浏览器就不会报跨域错误;  
          其中典型的解决方案就是jsonp方式,其原理就是动态创建script标签,然后在script标签中进行跨域请求,script标签中是允许跨域请求的  
          然后将动态创建的script标签添加到html的header中,请求完毕再移除。   

具体详情可参考以上视频连接   

二.java中正则使用的注意事项

三.命令行执行可执行jar包时指定编码:-Dfile.encoding=utf-8

​ 1.在编译机器中运行都没问题,但是将代码导出成jar包在执行时,一些读写IO文件操作可能会报错 ​ com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。

四.Java获取环境变量:

​ Java提供了System类的静态方法getenv()getProperties()用于返回系统相关的变量与属性, ​ getenv方法返回的变量大多于系统相关,getProperties方法返回的变量大多与java程序有关。

五. Process java.lang.Runtime.exec(String command, String[] envp, File dir)

​ 该方法会生成一个新的进程去运行调用的程序,此方法返回一个java.lang.Process对象, ​ 该对象可以得到之前开启的进程的运行结果,还可以操作进程的输入输出流。

六.java代码加载顺序

​ 静态代码块:

​ 构造代码块:

​ 构造函数:

七.java8中的新特性 StreamAPI 提供了各种快捷操作数据和流的操作

​ 博客链接:https://blog.csdn.net/u010425776/article/details/52344425arrow-up-right

八.Collections.shuffle(List<?> list)

​ 打乱集合中元素的顺序,场景:洗牌场景

九.Java中处理大数字(超过16位有效位)的操作类

十.BigDecimal 类可以处理java中的数字精度问题,如果在做支付相关需求时可以用该类

十一.ResourceBundle与Properties

十二.Collections.unmodifiableMap()

十三.Collections中常用静态方法

十四.java文件操作之Path,Paths,Files

参考博客:

十五. jdk1.7新特性 try-with-resource

十六.

Last updated