Compare commits

..

2 Commits

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 KiB

@ -0,0 +1,3 @@
### 二叉树
>- 父=子/2
>- 2*i 2*i+1

@ -1,4 +1,20 @@
## 位运算、简单排序 ## 位运算、简单排序
### 位运算 ### 位运算
>- int左移变为2进制32位
### 逻辑运算
>- 按位与全1为1
>- 按位或有1得1
>- 异或 相同为0不同为1
### 负数取反+1
基本运算有一套底层逻辑
>>取相反数a=-b+1
### 不带符号右移>>>

@ -0,0 +1,16 @@
### 线段数
>- 区间数的操作,增加更新查询
>- 用树表示累加和,将数组拆分为二叉树,利用数组实现二叉树
>- ![img.png](img.png)
>- ![img_1.png](img_1.png)
>- 准备4倍N的临时数组因为最后一层为2N个数前面也为2N个数
### 懒更新
>- ![img_2.png](img_2.png)
>- 在树结构中,把规定下标的数增加
>- 找到包含所有片段的树节点
>- 创建懒更新信息数组,在需要增加的数组上填充数字
>- ![img_3.png](img_3.png)
>- 当新任务来的时候,把懒信息向下层发送,然后清空
>- 执行新任务
>- ![img_4.png](img_4.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

@ -1,8 +1,8 @@
# 字符串 # 字符串
## 输入与输出 ### 输入与输出
>-next不能输入空格 >-next不能输入空格
>-nextLine可以输入空格 >-nextLine可以输入空格
## 输入流 ### 输入流
>- // System.in 读取键盘上的数据 >- // System.in 读取键盘上的数据
>- // InputStreamReader 将字节流向字符流的转换 >- // InputStreamReader 将字节流向字符流的转换
>- InputStreamReader isr = new InputStreamReader(System.in); // 读取 >- InputStreamReader isr = new InputStreamReader(System.in); // 读取
@ -10,6 +10,15 @@
>- BufferedReader br = new BufferedReader(isr); // 缓冲 >- BufferedReader br = new BufferedReader(isr); // 缓冲
>- // 读取一个文本行 >- // 读取一个文本行
>- String s = br.readLine(); // 阻塞式当没有数据读取时就一直会阻塞而不是返回null >- String s = br.readLine(); // 阻塞式当没有数据读取时就一直会阻塞而不是返回null
>- ![img_1.png](img_1.png)
##连续输入 ### 连续输入
>- 利用Buffer连续readLine读取不同的行 >- 利用Buffer连续readLine读取不同的行
### Ascii对照表
关键参数 A65 a97 32
1 49
![img.png](img.png)
### 字符串替换
>-str.replaceAll(a,b)

@ -0,0 +1,40 @@
### collection集合类
![img_2.png](img_2.png)
### 利用set可以去重
>-添加内容add
>
> 遍历set使用迭代器iterator生成迭代器对象使用next方法
### set集合类
> - 遍历方法
>
>-Iterator<String> ite=list.iterator();
> while(ite.hasNext())
>
> 输出内容
> - iterator.next
### map集合类
### Integer
Integer.MAX_VALUE 2^31-1
### 对象创建过程
>- 分配空间
### String
>- String是final修饰新对象,线程安全
>- stringBUffer是线程安全的
>- StringBUilder 不是线程安全的
### GC算法的理解
>- 标记清除算法
>- 标记复制算法
>- 标记整理算法
### hashmap扩容
>- ![img_3.png](img_3.png)
>- 在扩容时会出现死循环
>-

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

@ -0,0 +1,38 @@
### AWS云计算
>- 计算能力,网络能力,安全能力
>- 共享资源,按需付费
>- 互联网基础服务
>- Amazon Web Services
![img.png](img.png)
>- iass paas saas
### 虚拟机
>- 规定的硬件资源中,虚拟服务器
>- 能模拟多服务器运行的事务
>- 安全性,隔离性不影响其他虚拟机
>- 支撑不同的功能
### 容器
>- docker把服务的运行环境以及相应的应用程序都封装在容器中了
>- 减少系统环境维护dev——op 开发测试一体化
>- kubernetes 容器管理系统
### openstack
>- 能够对虚拟进行系统管理,新增,删除,监控,提高效率
>- 做成Iaas 基础设施即服务,把服务器交给别人使用
### Doceker
>- 容器化平台,在各系统上运行
>- 运行、暂停、重启、退出
>- ![img_1.png](img_1.png)
### Mycat
>- 大数据库集群,高可靠性
>- 数据库中间件产品
>- ![img_2.png](img_2.png)
>- 能够解析、聚合、排序合并
>- 对sql进行解析、优化、路由
>- 高可用性,高读写性能分级存储
### MongoDB
>- 能够保存JSON文件
>- 推送Kafka

@ -0,0 +1,36 @@
### Input Output
>-行对于内存的操作读写
> ![img.png](img.png)
>- read() Input
>- write() output
### 一些面试基础题目
![img_1.png](img_1.png)
![img_2.png](img_2.png)
### BIO
>- blockIO阻塞式IO线程阻塞
>- serverSocket.accept();等待请求
>- ![img_5.png](img_5.png)
### nio
>-主要用块效率高, io主要用流效率低
>- 非阻塞面向缓冲,有选择器
>- 可以利用线程管理通道 select监听端口数据
### AIO 异步IO
>- 把事件交给操作系统
### Netty
>- 基于NIO的框架,多线程架构
### Reactor 监听请求=select+dispathch
>- 用来监听接收客户端请求
>- 连接客户端
>- acceptor获取连接
>- Handler 处理业务 可以在线程池多处理
>- 有多种模型单线程,多线程,多进程 multi-reactor

@ -0,0 +1,4 @@
### bean对象
>- 通过依赖注入,放入单例池子
### AOP

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

@ -0,0 +1,94 @@
### 网络基础
>-java是一门基于Internet的语言它提供很多网络的支持主要集中java.net包中;
>什么是网络
>
网络就是将分散在不同位置的网络终端设备通过网络介质连接到一起,实现资源共享和通讯;
>-iP地址
>
网络中某个设备的唯一标识通过IP可找到网络中的某个设备;
>-端口
>
通过端口可以找到设备中的一个网络程序;每个计算机中可以使用65535个;
>-协议
>
通讯规则Http
>TCP/IP
>
TCP/IP以其两个主要协议:传输控制协议(TCP)和网络互联协议(IP)而得名,实际上是一组协议,包括多个具
有不同功能且
互为关联的协议。
TCP/IP协议模型从更实用的角度出发形成了高效的四层体系结构即网络接口层、IP层、传输层和应用层。下图表示了TCP/IP的分层结构和与OSI参考模型的对应关系。
### TCP传输控制
1. 面向连接的协议
2. 有服务端客户端
3. 基于流的通信
4. 创建服务端的Socket并等待接收客户端的连接请求
5. 客户端发送连接请求;
6. 服务端接收到客户端的请求后创建一个与之匹配的Socket,此时两个Socket就可以相互通信了﹔l
### Socket 套接字,网络终端
>- 连接到远程主机绑定到端口
>- 接收从远程机器来的连接请求监听到达的数据
>- 发送数据
>- 接收数据关闭连接。
>- 代表网络套接字,是通信的网络终端设备,屏蔽了网络通信的细节;
>- Socket s=new Socket(InetAdderss.getLocalHost(),8888;
![img_3.png](img_3.png)
### ServerSocket 服务端
>- 代码服务端的socket ,有来接受客户端的请求;
>- //1.创建serversocketIP地址是本机的端口号是8888serversocket server=new serversocket(8888);
>- //2.接受客户端的请求,如果没有客户端发请求,则一直阻塞(等待)socket=server.accept(;
### UDP协议 用户数据包
>-用户数据报协议
> User Datagram protocal ;特点;
> 1.非连接,类似于邮局发邮件;2.没有明确的服务端和客户端;3.不安全,不可靠;
> 4.传递效率高;
### DatagramSocket
>-此类表示用来发送和接收数据报包的套接字UDP)。
>-DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口普通方法
>-send(DatagramPacket p):从此套接字发送数据报包。
>-receive(DatagramPacket p):从此套接字接收数据报包。
![img_4.png](img_4.png)
### TCP/IP
>- 报文+报头
>- 三次握手 ,客户开始,保证能够确立连接
>- 四次挥手结束
### Redis
>- 数据类型int raw embstr list hash set
>- 缓存雪崩通过随机设置Redis key失效时间解决大量缓存同时失效的问题
>- 数据穿透redis没有id直接访问数据库会在高并发情况挂掉利用校验进行过滤
>- 将redismysql搭建成高可用的集群防止单点
>- 10万/秒
### 消息队列 ActiveMQ RabbitMQ RocketMQ kafka中间件
>- 优点,解耦,异步处理,流量控制(秒杀),服务解耦
>- 解决上下游速度不一致的问题,起到缓冲的作用
### 自增Id用完了怎么办
>- 重新循环INdb覆盖原来的值

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

@ -0,0 +1,68 @@
### Object占字节
16字节 能被8整除
### 计算机组成
![img.png](img.png)
>- 进程:分配资源
>- 线程:基本运行
>- 缓存:暂存数据
>- 缓存行:把同一块的数据都存缓存
>- 缓存一致性,保证各核的缓存都共享,效率低
>- 线程有序性:
### 锁的本质
>- 线程之间的序列性
>- synchronized
### 乐观锁CAS自旋
>- 比较and交换
>- 底层原子性
>- 不会阻塞
### synchronized 锁升级
>- 重量级锁都交给操作系统
>- 偏向锁标记名字线程id。让原资源获得轻量级锁
>- 四种状态:无锁,偏向,轻量级、重量级
### ThreadLocal
### markword
>- 记录锁信息,记录回收次数
>- 记录偏向锁
### 线程的基本周期
![img_1.png](img_1.png)
### threadLocal
>- 获取线程map资源进行事务操作获取信息
### 并发特性
>- 原子性,有序性,可见性(volatile)cpu
### spring中的设计模式
>- 工厂模式: BeanFantory用来创建对象在工厂里面创建对象管理对象周期
>- 单例模式: Spring中的Bean 默认为单例
>- 装饰器模式: Beanwrapper 访问Bean的属性和方法
>- 策略模式: Bean的实例化策略
>- 代理模式: AOP的AOPProxy 代理字节码生成技术,静态代理,动态代理。
### 线程池
>- 重量级资源
>- 生产者消费者模式,解耦,异步,增加性能
>- 缺点:不能有大量数据交换
### 处理死锁
>- 锁资源互斥,死循环
>- 顺序加锁
>- 加锁超时时限
>- 死锁检测
### 定位内存泄露
>- OOM
### AQS线程等待队列
>- state 变量 volatile修饰表示同时允许多少给线程获取锁
>- 使用CAS方法获取state
### 多线程waitnotifynotifyALl线程等待

@ -0,0 +1,18 @@
### 饿汉单例
>- 先构建
>- 通过get方法取得
### 懒汉式
>- 先判断是否为空,不能多线程
### DCL双重判断 double check lock
>- 防止上锁时候被其他线程操作
### Redis
>- 高新能非关系数据库采用Redis实现分布式缓存
>- 提高数据操作效率
### zookeeper的理解
>-分布式管理,分布式中间件
> 协调分布式集群管理,保证一致性
> 分布式锁
> master选组管理节点信息主从选举
Loading…
Cancel
Save