常识

  1. IDEA新建项目时候的groupId :公司域名反过来,如com.alibaba

  2. JSON(JavaScript Object Notation)是一种基于JavaScript语法子集的开放标准数据交换格式。

  3. lazy loading懒加载也被叫作“延迟加载”,它的核心思想是把对象的实例化延迟到真正调用该对象的时候,这样做的好处是可以减轻大量对象在实例化时对资源的消耗,而不是在程序初始化的时候就预先将对象实例化。

  4. 在git分支工作前,先pull最新代码

  5. “hello”和new String(“hello)的区别:当Java程序直接使用了字符串直接量(形如”hello“,包括可以在编译时就计算出来的的字符串值)时,JVM将会使用常量池来管理这些字符串;当使用new String(“hello”)来创建时,JVM会先使用常量池来管理"hello"直接量,再调用String类的构造器来创建一个新的String对象,新创建的的String对象会存放到堆内存中去,也就是说new String(“hello”)产生了两个字符串对象。

    • 常量池是专门用来管理在编译时被确定并保存在已编译的的.class文件中的一些数据。它包括了关于类,方法,接口中的常量,还包括字符串常量。JVM常量池保证相同的字符串直接量只有一个,不会产生多个副本。
    • String对象所引用的字符串直接量可以在编译期就确定下来。使用new String()创建的字符串对象是运行时创建出来的,它被保存在运行时内存区(即堆内存中)
  6. 字符串的不变性:

    String是不可变类,一但一个字符串创建它是不能被改变的,对字符串进行任何更改操作都会产生新的String对象,我们应该注意所有的关于String类的方法不是改变一个字符串本身,而是重新返回一个新的字符串。如果我们需要一个频繁的改变一个字符串对象,我们可以使用StringBuffer或者StringBuilder,否则将会浪费大量时间进行垃圾回收,因为每次创建一个新的字符串。StringBuilder与StringBuffer是可变类,它们的字符串对象可以更改,对可变字符串的操作不会生成新的对象,即对同一个字符串对象操作。

  7. instanceof :严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:

    boolean result = obj instanceof Class;
    

    其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。

  8. 哈希表能解决什么问题呢 :

    一般哈希表都是用来快速判断一个元素是否出现集合里

  9. 控制台打印一个数组:

    int[] app = {1,2,3,4,5};
    System.out.println(app);//打印出  [I@7cc355be
    System.out.println(app.toString());//打印出  [I@7cc355be
    System.out.println(Arrays.toString(app));//打印出  [1, 2, 3, 4, 5]
    
  10. 不能相信调用端。重要的参数都要先做验证,即使是非空值也需要做验证,不符合条件的就要直接返回或抛异常,不能参与业务 SQL 的查询,否则频繁的访问也会对服务造成负担。

  11. SQL 语句要先做性能查询。对于数据量大的表,建好索引后,所有的 SQL 查询语句要用 explain 检测性能,并且根据结果来进一步优化索引。

  12. HTTP协议是客户端和服务器交互的一种通迅的格式。

  13. 在Sun公司发布的Java Servlet规范中,对Web应用程序做出了如下的定义:“一个Web应用程序是由一组Servlet、HTML页面、类,以及其他的资源组成的运行在 Web服务器上的完整的应用程序。它可以在多个供应商提供的实现了Servlet规范的Web容器中运行

  14. 框架很多,但套路基本类似,帮你隐藏很多关于 HTTP 协议细节内容,专注功能开发

  15. 鉴权(authentication)是指验证用户是否拥有访问系统的权利。坑1

  16. Web开发过程中,经常会遇到『路由』的概念。那么,到底什么是路由?简单来说,路由就是URL到函数的映射

    • router和route的区别:

      route就是一条路由,它将一个URL路径和一个函数进行映射,例如:

      /users        ->  getAllUsers()
      /users/count  ->  getUsersCount()
      

      这就是两条路由,当访问 /users 的时候,会执行 getAllUsers() 函数;当访问 /users/count 的时候,会执行 getUsersCount() 函数。

      而 router 可以理解为一个容器,或者说一种机制,它管理了一组 route。简单来说,route 只是进行了URL和函数的映射,而在当接收到一个URL之后,去路由映射表中查找相应的函数,这个过程是由 router 来处理的。

    • 服务器端路由:

      对于服务器来说,当接收到客户端发来的HTTP请求,会根据请求的URL,来找到相应的映射函数,然后执行该函数,并将函数的返回值发送给客户端。对于最简单的静态资源服务器,可以认为,所有URL的映射函数就是一个文件读取操作。对于动态资源,映射函数可能是一个数据库读取操作,也可能是进行一些数据的处理,等等。在 router 匹配 route 的过程中,不仅会根据URL来匹配,还会根据请求的方法来看是否匹配。

    • 客户端路由:

      对于客户端(通常为浏览器)来说,路由的映射函数通常是进行一些DOM的显示和隐藏操作。这样,当访问不同的路径的时候,会显示不同的页面组件。客户端路由最常见的有以下两种实现方案:

      • 基于Hash
      • 基于History API
  17. DOM是一种文档对象模型,同时也是用于html编程的接口,通过dom来操作页面中的元素。当html页面被实现加载的时候,浏览器会创建一个dom,给文档提供了一种新的逻辑结构,并且可以改变内容和结构。【坑2】

    dom获取元素的方法

    1. 在html中,我们都知道网页是有很多标签组织起来的,但是这些标签的id是唯一的,我们只要通过id号就能找到对应的标签,然后进行操作。

    2. 我们也可以通过名称获取元素,查找返回带有名称对象的集合。是用元素的name属性进行查询,但是由于name元素可能不是唯一值,所以返回是一个数组,并不是一个元素。

    3. 通过指定元素节点的属性来获取。

  18. jar 和 war 包的区别:

    • jar包和war包都可以看成压缩文件,都可以用解压软件打开,jar包和war包都是为了项目的部署和发布,通常在打包部署的时候,会在里面加上部署的相关信息。这个打包实际上就是把代码和依赖的东西压缩在一起,变成后缀名为.jar和.war的文件,就是我们说的jar包和war包。但是这个压缩包可以被编译器直接使用,把war包放在tomcat目录的webapp下,tomcat服务器在启动的时候可以直接使用这个war包。通常tomcat的做法是解压,编译里面的代码,所以当文件很多的时候,tomcat的启动会很慢
    • jar包和war包的区别:jar包是java打的包,war包可以理解为javaweb打的包,这样会比较好记。jar包中只是用java来写的项目打包来的,里面只有编译后的class和一些部署文件。而war包里面的东西就全了,包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。
    • springboot项目支持创建可执行Jar(可执行的jar包就是可以用java -jar xx.jar 执行的jar包)。如果需要打jar包直接进入idea之后使用maven然后进行 package 直接进行jar包创建
  19. 抓包:抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。主要作用:通过对网络上传输的数据进行抓取,可以对其进行分析,对于软件的Debug很大的帮助。当然也可以通过抓取用户发送的涉及用户名和密码的数据包来获取用户的密码
    F12 是众多抓包工具中最简单、最轻量级的,因为它是浏览器内置的开发者工具来提供捕获浏览器的数据报文的功能。它主要针对的是 HTTP 协议和 HTTPS 协议, 可以确认我们的网络数据包的一个状态, 通过分析请求和响应报文里面的内容, 分析出来请求数据和响应数据是否正确, 定位问题是前端问题还是后端问题。而且 F12 作为浏览器的一部分,是数据收发的一端,抓取到的 HTTPs 报文是可以得到明文数据的;不过因为只能抓当前浏览器的收发报文,层次只能是在应用层 Http(s)协议,不能抓取其他的数据报文。

  20. 在项目中经常遇到各种依赖库:
    一方库:本工程范围内,各个模块和包之间的相互依赖。
    二方库:引入的同一个公司内部的其他工程。
    三方库:公司以外的其他依赖,比如apache,google等

  21. URL后面加不加“/”有区别吗?
    有/会认为是目录,没/会认为是文件。
    加了/浏览器会指向一个目录,目录的话会读取默认文件index等等。没有/会先尝试读取文件,如果没有文件再找与该文件同名的目录,最后才读目录下的默认文件。
    网址没有加上/会给服务器增加一个查找是否有同名文件的过程

posted @ 2022-05-07 01:07  大于昨天  阅读(36)  评论(0编辑  收藏  举报