前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记(二)

笔记(二)

作者头像
Li_XiaoJin
发布2022-06-10 20:10:35
2510
发布2022-06-10 20:10:35
举报
文章被收录于专栏:Lixj's BlogLixj's Blog

以下的内容比较杂,后面抽时间整理一下进行分类

1.java中public,private,protected和default的区别

修饰符

同一个类

同一个包

不同包的子类

其他包

public

protected

×

default

×

×

private

×

×

×

priavte:本类可见

public:所有类可见

protected:本包和所有子类都可见(本包中的子类非子类均可访问,不同包中的子类可以访问,不是子类不能访问)

default:本包可见(即默认的形式)(本包中的子类非子类均可访问,不同包中的类及子类均不能访问)

2. 什么是内存泄漏?一般如何排查内存泄漏?

作者:McAce链接:https://www.zhihu.com/question/40560123/answer/512873873来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 内存泄露本意是申请的内存空间没有被正确释放,导致后续程序里这块内存被永远占用(不可达),而且指向这块内存空间的指针不再存在时,这块内存也就永远不可达了,内存空间就这么一点点被蚕食,借用别人的比喻就是:比如有10张纸,本来一人一张,画完自己擦了还回去,别人可以继续画,现在有个坏蛋要了纸不擦不还,然后还跑了找不到人了,如此就只剩下9张纸给别人用了,这样的人多起来后,最后大家一张纸都没有了。内存溢出是指存储的数据超出了指定空间的大小,这时数据就会越界,举例来说,常见的溢出,是指在栈空间里,分配了超过数组长度的数据,导致多出来的数据覆盖了栈空间其他位置的数据,这种情况发生时,可能会导致程序出现各种难排查的异常行为,或是被有心人利用,修改特定位置的变量数据达到溢出攻击的目的。而Java中的内存溢出,一般指【OOM:发生位置】这种Error,它更像是一种内存空间不足时发生的错误,并且也不会导致溢出攻击这种问题,举例来说,堆里能存10个数,分了11个数进去,堆就溢出了1个数,JVM会检测、避免、报告这种问题,所以虽然实际上JVM规避了内存溢出带来的问题,但在概念上来说,它确实是溢出才导致的,只是Java程序员在看到这个问题时,脑袋里的反应会是“内存不够了,咋回事,是不是又是哪个大对象没释放”之类,而不是像C程序员“我X被攻击了/程序咋写的搞溢出了”(这段是我臆想的)。同时对于Java来说,传统意义的溢出攻击也无法奏效,因为Java的数组会检查下标,对超出数组下标的赋值会报ArrayOutOfIndex错误。

内存泄漏的定位与分析:https://blog.csdn.net/lc0817/article/details/67014499

3. NIO是什么,适用于什么场景?

这个后面有时间要深入了解一下阻塞IO和非阻塞IO

4. http 3次握手,4次挥手

参考:https://www.cnblogs.com/jainszhang/p/10641728.html

5. nginx 的负载均衡策略

  • 轮询(默认方式)
  • 权重
  • ip_hash,根据ip的哈希结果进行转发,确保相同的ip访问同一台机器
  • lest_conn,选取最少连接的机器转发
  • 第三方(1),根据响应时间,时间最短的机器优先
  • 第三方(2),url_hash,根据url的哈希结果分发,某个url固定发到某台机器

6.接口和抽象类的区别

1、接口的方法默认是public,所有接口方法不能有实现 (java8开始可以有默认实现),抽象类可以有非抽象的方法;

2、接口除了static、final变量,不能有其他变量;抽象类可以有其他变量

3、一个类可以实现多个接口,只能实现一个抽象类,接口可以通过extends关键字扩展多个接口;

4、接口的默认修饰符是public,抽象类可以有public、protected、default等修饰符(抽象方法为了能被重写不能用private修饰符) 5、从设计层面,抽象类是对类的抽象,是一种模板设计;接口是对行为的抽象,是一种行为规范。

jdk8开始,接口也可以定义静态方法和默认方法,可以直接用接口名称调用,实现类和实现是不可以调用的。jdk9接口可以允许定义为私有方法

7. hashCode() 和 equals();为什么重写equals()必须重写hashCode()?

1、如果两个对象相等,则hashCode一定是相等的;

2、如果两个对象相等,调用equals返回的一定是true;

3、如果两个对象有相同的hashCode值,不一定是相等的;

4、重写hashCode()必须同时重写equals()方法;

5、hashCode()的默认行为是对堆上的对象产生独特值,如果没有重写hashCode(),则两个对象无论如何都不会相等,即使两个对象指向同样的数据;

https://www.cnblogs.com/skywang12345/p/3324958.html为什么java中只有值传递https://juejin.im/post/6844904045426016263

8.关于final关键字

主要用来修饰变量、方法、类。

1、当用来修饰变量时,如果是基本数据类型的变量,一旦初始化后就不能进行更改;如果是引用类型的变量,初始化后就不能再指向另一个对象;

2、当用来修饰方法时,

(1)表示将该方法锁定,以防任何继承类对它进行修改;

(2)效率原因;类中的所有private方法都隐式的指向final

3、当用来修饰类时,表示这个类无法被继承。final类中的所有方法都会被隐式的指定为final方法。

9.final,static,this,super 关键字总结

参考:https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/java/basic/final,static,this,super.md

10.TCP、UDP协议的区别

(1)UDP在传送数据前不需要建立连接,远程主机在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,在某种情况下是一直最有效的工作方式。一般用于即时通讯。

(2)TCP提供面向连接的服务,在传送数据前必须建立连接,数据结束后释放连接。

类型|是否面向连接|传输可靠性|传输形式|传输效率|所需资源|应用场景|首部字节 :-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-: TCP|面向连接|可靠|字节流|慢|多|要求数据通信可靠|20-60个字节 UDP|无连接|不可靠|数据报文|快|少|要求通信速度快|8个字节

11.面向对象的五大基本原则

  • 单一职责原则(SPR)
  • 开放封闭原则(OCP)
  • 里氏替换原则(LSP)
  • 依赖倒置原则(DIP)
  • 接口隔离原则(ISP)

12.Servlet的生命周期

  1. 加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet
  2. 创建:通过调用Servlet的构造函数来创建一个Servlet实例
  3. 初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用。
  4. 处理客户请求:Servlet创建后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求。接着调用Servlet的 Service()方法来响应客户端请求(Service方法根据请求的method属性来调用doGet()和doPost())
  5. 卸载:容器在卸载Servlet之前需要调用destroy()方法,让Servlet释放其占用的资源

1、加载:容器通过类加载器使用Servlet类对应的文件夹来加载Servlet

2、创建:通过调用Servlet的构造函数来创建一个Servlet实例

3、初始化:通过调用init()方法来完成初始化工作

4、处理请求:Servlet创建后就可以处理请求,当有新的客户端请求时,web容器会创建一个新的线程来处理该请求。通过调用Servlet的Service()方法来响应客户端请求。Service()根据请求的method属性来调用doGet()和doPost()

5、卸载:容器在卸载Servlet之前会调用destroy()方法,让Servlet释放其占用的资源

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/笔记二

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.java中public,private,protected和default的区别
  • 2. 什么是内存泄漏?一般如何排查内存泄漏?
  • 3. NIO是什么,适用于什么场景?
  • 4. http 3次握手,4次挥手
  • 5. nginx 的负载均衡策略
  • 6.接口和抽象类的区别
  • 7. hashCode() 和 equals();为什么重写equals()必须重写hashCode()?
  • 8.关于final关键字
  • 9.final,static,this,super 关键字总结
  • 10.TCP、UDP协议的区别
  • 11.面向对象的五大基本原则
  • 12.Servlet的生命周期
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档