Skip to content

Commit

Permalink
abandon some files no-use
Browse files Browse the repository at this point in the history
  • Loading branch information
sunyd1006 committed Apr 13, 2021
1 parent 0ee60bf commit 5c6c228
Show file tree
Hide file tree
Showing 145 changed files with 95 additions and 123 deletions.
5 changes: 2 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
*/target/*
/其他/*
/other/*
.doc
.zip
.DS_Store
.zip
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
55 changes: 28 additions & 27 deletions JVM笔记.md → JVM-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
- [JVM内存模型-详细版](https://www.processon.com/view/5ea567b163768974669293f3)
- [jvm内存模型](https://www.processon.com/view/5c31d6e2e4b0fa03ce8d3017):画的超级好

![image-20201221231226076](JVM笔记.assets/image-20201221231226076.png)
![image-20201221231226076](JVM-notes.assets/image-20201221231226076.png)

- 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?
- 什么是OOM,什么是栈溢出StackOverFlowError?怎么分析?
Expand All @@ -24,7 +24,7 @@
- java程序泡在jvm上面,jre-jvm, 在操作系统之上,最底下是硬件系统。
- linux上跑jar,但不开发,可以直接安装jre就可以了,不必安装JDK

![image-20201217135857782](JVM笔记.assets/image-20201217135857782.png)
![image-20201217135857782](JVM-notes.assets/image-20201217135857782.png)

## 2 JVM的体系结构

Expand All @@ -42,13 +42,13 @@
- 定义: 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构
- 作用:加载类文件,引用在栈中,具体实例在堆中

![image-20201217142545861](JVM笔记.assets/image-20201217142545861.png)
![image-20201217142545861](JVM-notes.assets/image-20201217142545861.png)





![image-20201217142729280](JVM笔记.assets/image-20201217142729280.png)
![image-20201217142729280](JVM-notes.assets/image-20201217142729280.png)



Expand All @@ -66,7 +66,7 @@

`java`编写,用户自定义的类加载器,可加载指定路径的`class`文件

![img](JVM笔记.assets/eaf81a4c510fd9f950e68758c03f2f2e2834a422.jpeg)
![img](JVM-notes.assets/eaf81a4c510fd9f950e68758c03f2f2e2834a422.jpeg)



Expand All @@ -87,13 +87,13 @@

- 当某个类加载器需要加载某个`.class`文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。

<img src="JVM笔记.assets/7634245-7b7882e1f4ea5d7d.png" alt="img" style="zoom: 67%;" />
<img src="JVM-notes.assets/7634245-7b7882e1f4ea5d7d.png" alt="img" style="zoom: 67%;" />



>note: 程序员故意写java.lang.String,经过双亲委派机制,确保安全加载,都这报错。
![image-20201217150543823](JVM笔记.assets/image-20201217150543823.png)
![image-20201217150543823](JVM-notes.assets/image-20201217150543823.png)



Expand Down Expand Up @@ -129,7 +129,7 @@ public class Student {
采用双亲委派的一个好处是比如加载位于 rt.jar 包中的类 java.lang.Object,不管是哪个加载器加载这个类,最终都是委托给顶层的启动类
加载器进行加载,这样就保证了使用不同的类加载器最终得到的都是同样一个 Object 对象

![在这里插入图片描述](JVM笔记.assets/20201213224546527.png)
![在这里插入图片描述](JVM-notes.assets/20201213224546527.png)
双亲委派的好处:把自己编写的类放入java.lang包,自己定义的,不是jar包里面的。这样会报错,因为加载自己编写的类会被委托到BootStrap,这个加载器会把jar包里面的String类加载进内存,所以加载不到自己的类。可以把自己的类写进去bin/ext包


Expand All @@ -149,20 +149,20 @@ ava

沙箱主要限制系统资源访问,那系统资源包括什么? CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。 所有的Java程序运行都可以指定沙箱,可以定制安全策略。

在Java中将执行程序分成本地代码和远程代码两种,本地代码默认视为可信任的,而远程代码则被看作是不受信的。对于授信的本地代码,可以访问一切本地资源。而对于非授信的远程代码在早期的Java实现中,安全依赖于沙箱Sandbox)机制。如下图所示JDK1.0安全模型 ![在这里插入图片描述](JVM笔记.assets/20201213230825785.png)
在Java中将执行程序分成本地代码和远程代码两种,本地代码默认视为可信任的,而远程代码则被看作是不受信的。对于授信的本地代码,可以访问一切本地资源。而对于非授信的远程代码在早期的Java实现中,安全依赖于沙箱Sandbox)机制。如下图所示JDK1.0安全模型 ![在这里插入图片描述](JVM-notes.assets/20201213230825785.png)

图 JDK1.0安全模型

但如此严格的安全机制也给程序的功能扩展带来障碍,比如当用户希望远程代码访问本地系统的文件时候,就无法实现。因此在后续的Java1.1版本中,针对安全机制做了改进,增加了安全策略,允许用户指定代码对本地资源的访问权限。![如下图所示JDK1.1安全模型 在这里插入图片描述](JVM笔记.assets/20201213230841367.png)
但如此严格的安全机制也给程序的功能扩展带来障碍,比如当用户希望远程代码访问本地系统的文件时候,就无法实现。因此在后续的Java1.1版本中,针对安全机制做了改进,增加了安全策略,允许用户指定代码对本地资源的访问权限。![如下图所示JDK1.1安全模型 在这里插入图片描述](JVM-notes.assets/20201213230841367.png)

图 JDK1.1安全模型

在Java1.2版本中,再次改进了安全机制,增加了代码签名。不论本地代码或是远程代码,都会按照用户的安全策略设定,由类加载器加载到虚拟机中权限不同的运行空间,来实现差异化的代码执行权限控制![。如下图所示 在这里插入图片描述](JVM笔记.assets/20201213230909996.png)
在Java1.2版本中,再次改进了安全机制,增加了代码签名。不论本地代码或是远程代码,都会按照用户的安全策略设定,由类加载器加载到虚拟机中权限不同的运行空间,来实现差异化的代码执行权限控制![。如下图所示 在这里插入图片描述](JVM-notes.assets/20201213230909996.png)

图 JDK1.2安全模型

当前最新的安全机制实现,则引入了域(Domain)的概念。虚拟机会把所有代码加载到不同的系统域和应用域,系统域部分专门负责与关键资源进行交互,而各个应用域部分则通过系统域的部分代理来对各种需要的资源进行访问。虚拟机中不同的受保护域(Protected Domain),对应不一样的权限(Permission)。存在于不同域中的类文件就具有了当前域的全部权限
![图 JDK1.6安全模型](JVM笔记.assets/20201213230952622.png)
![图 JDK1.6安全模型](JVM-notes.assets/20201213230952622.png)

组成沙箱的基本组件

Expand Down Expand Up @@ -196,9 +196,9 @@ ava


理解:
![在这里插入图片描述](JVM笔记.assets/2020121323143094.png)
![在这里插入图片描述](JVM-notes.assets/2020121323143094.png)
如图,线程级别的就是java处理不了的。点进start()方法,里面会调用一个抽象方法。假如自己编写一个不是抽象类,在里面编写一个抽象方法会报错,假如假如native关键字不会报错,但运行不了。
![在这里插入图片描述](JVM笔记.assets/20201213231527252.png)
![在这里插入图片描述](JVM-notes.assets/20201213231527252.png)

? native:凡是带了native关键字的,说明java的作用范围达不到了,回去调用底层c语言的库! ? 会进入本地方法栈 ? 调用本地方法本地接口 JNI (Java Native Interface) ? JNI作用:开拓Java的使用,融合不同的编程语言为Java所用!最初: C、C++ ? Java诞生的时候C、C++横行,想要立足,必须要有调用C、C++的程序 ? 它在内存区域中专门开辟了一块标记区域: Native Method Stack,登记native方法 ? 在最终执行的时候,加载本地方法库中的方法通过JNI ? 例如:Java程序驱动打印机,管理系统,掌握即可,在企业级应用比较少 ? private native void start0(); ? //调用其他接口:Socket. . WebService~. .http~

Expand All @@ -210,7 +210,7 @@ Native Interface



![image-20201217155525957](JVM笔记.assets/image-20201217155525957.png)
![image-20201217155525957](JVM-notes.assets/image-20201217155525957.png)

## 7 PC程序计数器

Expand Down Expand Up @@ -240,15 +240,15 @@ Native Interface
- 栈里面存放的东西:8大基本类型,实例方法,对象引用(Ox8888)
- 栈帧:父帧子帧,每一个在执行的方法都会产生栈帧

<img src="JVM笔记.assets/image-20201218085344144.png" alt="image-20201218085344144" style="zoom:67%;" />
<img src="JVM-notes.assets/image-20201218085344144.png" alt="image-20201218085344144" style="zoom:67%;" />



- 栈满报错:StackOverflowError

==画出1个对象实例化的过程,栈,堆,方法区的实力关系==

![image-20201218090219044](JVM笔记.assets/image-20201218090219044.png)
![image-20201218090219044](JVM-notes.assets/image-20201218090219044.png)



Expand Down Expand Up @@ -301,15 +301,15 @@ Native Interface



![image-20201218093012237](JVM笔记.assets/image-20201218093012237.png)
![image-20201218093012237](JVM-notes.assets/image-20201218093012237.png)





### 堆的结构(1.8以后包含方法区)

![image-20201218100143315](JVM笔记.assets/image-20201218100143315.png)
![image-20201218100143315](JVM-notes.assets/image-20201218100143315.png)

元空间:==逻辑上存在,物理上不存在==

Expand Down Expand Up @@ -352,7 +352,7 @@ public class Main {
}
```
![image-20201218101213825](JVM笔记.assets/image-20201218101213825.png)
![image-20201218101213825](JVM-notes.assets/image-20201218101213825.png)
Expand Down Expand Up @@ -478,7 +478,7 @@ public class OomForJprofiler {
![image-20201218160352490](JVM笔记.assets/image-20201218160352490.png)
![image-20201218160352490](JVM-notes.assets/image-20201218160352490.png)
Expand All @@ -487,7 +487,7 @@ Profiler
1. 去看大文件,看看那个大文件经常出错
2. 看线程,看看那个线程使用到了这个对象。
![image-20201218162026160](JVM笔记.assets/image-20201218162026160.png)
![image-20201218162026160](JVM-notes.assets/image-20201218162026160.png)
## 13 GC
Expand All @@ -510,27 +510,27 @@ Profiler
- 该算法将内存平均分成两部分,然后每次只使用其中的一部分,当这部分内存满的时候,将内存中所有存活的对象复制到另一个内存中,然后将之前的内存清空,只使用这部分内存,循环下去
- 幸存区01, from...to..., 0和1互相不断交换,进行gc进行复制算法
<img src="JVM笔记.assets/image-20201218165100496.png" alt="image-20201218165100496" style="zoom: 67%;" />
<img src="JVM-notes.assets/image-20201218165100496.png" alt="image-20201218165100496" style="zoom: 67%;" />
- 若一直没有死进入到养老区
- 优点:实现简单,不产生内存碎片
- 缺点:浪费一半的内存空间
<img src="JVM笔记.assets/image-20201218164654811.png" alt="image-20201218164654811" style="zoom:80%;" />
<img src="JVM-notes.assets/image-20201218164654811.png" alt="image-20201218164654811" style="zoom:80%;" />
- 2 标记清除算法 -----扫描对象,对活着的对象进行标记, 对没有标记的对象进行清除
- 优点:不需要额外空间,优于复制算法
- 两次扫描,浪费时间,会存在内存碎片
- ==标记压缩算法== ----- 再优化,压缩:防止碎片的产生, 方法: 向一端移动活的对象,多了一个移动成本
![image-20201218165651004](JVM笔记.assets/image-20201218165651004.png)
![image-20201218165651004](JVM-notes.assets/image-20201218165651004.png)
- 3 标记清除压缩算法 ----- 先标记清除几次再进行压缩,等碎片多了之后
- 4 引用计数算法 ------ 每个对象一个计数器,一般不用,因为计数器有消耗,用过多次的不删,0次的就删除了 ---引用出现+1,引用删除-1
<img src="JVM笔记.assets/image-20201218163131434.png" alt="image-20201218163131434" style="zoom: 50%;" />
<img src="JVM-notes.assets/image-20201218163131434.png" alt="image-20201218163131434" style="zoom: 50%;" />
- 总结:
- 内存效率:复制算法 > 标记清除 >标记压缩(时间复杂度)
Expand All @@ -544,7 +544,7 @@ Profiler
### GC面试题目:
![image-20201218163155910](JVM笔记.assets/image-20201218163155910.png)
![image-20201218163155910](JVM-notes.assets/image-20201218163155910.png)
Expand Down Expand Up @@ -659,6 +659,7 @@ JMM
- 本机内存直接溢出 -- NIO有关(New input/Output),引入了一种基于通道与缓存区的I/O方式,可是native函数库直接分配堆外内存, 然后通过一个存储在java堆中的对象作为这块内存的应用进行操作。这样能在一些场景中显著提高性能,因为避免了再Java堆和Native堆中来回复制数据
1. 百度
2. 思维导图
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
10 changes: 3 additions & 7 deletions 算法模板.md → algorithm-demo.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ public class Main{
System.out.printf("%.2f", sum);
System.out.println("");
}
// 注意这里,hasNext()阻塞特性,会让程序无法执行这里的代码
}
}
Expand Down Expand Up @@ -82,16 +81,13 @@ public class Main{
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
String[] line = sc.nextLine().split(" ");
// 如果是无效输入,在这里 break;
int sum = 0;
for(String one: line){
sum += Integer.parseInt(one);
}
System.out.println(sum);
}
// 注意谨慎谨慎把代码写在这里
}
}
Expand Down Expand Up @@ -339,7 +335,7 @@ public int sunla_bfs(TreeNode root){



![image-20201230224611147](算法模板.assets/image-20201230224611147.png)
![image-20201230224611147](algorithm-demo.assets/image-20201230224611147.png)

[752.打开转盘锁(中等)](https://leetcode-cn.com/problems/open-the-lock)

Expand Down Expand Up @@ -754,7 +750,7 @@ public int[] sung_main_selected_and_labuladong_main(TreeNode root){

解决思想:注意归类3中情况。

<img src="算法模板.assets/image-20210317093716725.png" alt="image-20210317093716725" style="zoom:33%;" />
<img src="algorithm-demo.assets/image-20210317093716725.png" alt="image-20210317093716725" style="zoom:33%;" />

```java
public int la_remove(int[][] intervals){
Expand Down Expand Up @@ -1222,7 +1218,7 @@ public void mergeSort(int[] arr,int low,int high){

## [十大排序](https://www.cnblogs.com/onepixel/p/7674659.html)

![image-20210317124751933](算法模板.assets/image-20210317124751933.png)
![image-20210317124751933](algorithm-demo.assets/image-20210317124751933.png)



Expand Down
53 changes: 48 additions & 5 deletions 腾讯面试题.md → all_company_talking.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,46 @@


# 各类暑期、秋招分享记录



## 微软

![image-20210110150933286](all_company_talking.assets/image-20210110150933286.png)







# 阿里内推注意:

内推:要笔试,要素质测评,



**Q:内部推荐有什么优势?**
A: 1、 内推可以和阿里师兄或师姐充分沟通了解部门和岗位详细情况,选择自己心仪的部门和岗位。
2、内推不通过的同学还有机会进行网申。



题目:hot100,top100,



实习:合理的进度安排(一接受任务,就要开始了解)
暑期实习的时间:6.15(简历)







#

# 阿里大数据

问题:
Expand Down Expand Up @@ -190,24 +233,24 @@ hashmap
\2. 实习经历

描述了在[滴滴]()的实习经历


\3. 大数据方面,[职业规划]()

\4. 对数据仓库有什么了解?

讲了写与传统关系型数据库的区别


以及其他的一些我所知道的


\5. 你认为什么样的数据仓库是比较好的数据仓库?

\6. 能讲讲hdfs么

主要讲了下hdfs写文件的过程


\7. mapreduce 能讲讲么?具体的过程又是怎么样的?

Expand All @@ -226,7 +269,7 @@ hashmap
2⃣️ 每个用户 最多连续阅读的天数




感觉问题基本在射程范围内

Expand Down
Binary file added book_file/git-cheat-sheet.pdf
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added book_file/程序员面试金典(第5版).pdf
Binary file not shown.
Binary file added book_file/高性能mysql第三版.pdf
Binary file not shown.
File renamed without changes.
Binary file removed readme.assets/(null)
Binary file not shown.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file removed readme.assets/640-8023621.
Binary file not shown.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file added readme.assets/image-20210413193430029.png
File renamed without changes
File renamed without changes
File renamed without changes
Loading

0 comments on commit 5c6c228

Please sign in to comment.