计网
网络基础知识计算机网络,根据其规模,可以分为广域网(WAN)和局域网(LAN)
批处理:事先将用户程序和数据装入卡带或磁带,并由计算机按照一定的顺序读取,使用户所要执行的这些程序和数据能够一并处理的方式
分时系统:多个终端与同一个计算机连接,允许多个用户同时使用同一台计算机的系统
协议互联网中有代表性的协议有IP,TCP,HTTP,局域网中常用的有IPX/SPX
TCP/IP就是IP,TCP,HTTP等协议的统称(通信协议的统称)
协议其实就是计算机与计算机在网络上进行通信时,事先达成的一种“约定”,这种约定能过使不同CPU,不同操作系统的计算机之间,只要遵守相同的“约定”就能进行通信
三种交换方式电路交换从主机端直接建立一条专用的物理连接
建立连接
通话(一直占用通信资源)
释放连接
缺点:线路传输效率很低,因为计算机数据是突发式地出现在传输线路上。一旦某条线路被占,其他用户不能使用
分组交换将报文分成更小的等长的数据段,每一个数据段加上一些控制信息(如目的地址和原地址等)后组成首部,构成一个分组。分组又称为“包”,分组的首部也可称为“包头”
为 ...
动态规划
基础解题步骤
确定dp数组(dp table)以及下标的含义
确定递推公式
dp数组如何初始化
确定遍历顺序
举例推导dp数组
当遇到bug时,可以通过打印dp数组看看是不是和自己预先推导的一样
如果打印出来的dp数组和自己预先推导的一样,那么就是自己的递归公式、初始化或者遍历顺序出现问题
如果和自己预先模拟推导的不一样,那么就是代码实现细节有问题
题目509. 斐波那契数123456789101112class Solution { public int fib(int n) { if (n < 2) return n; int[] dp = new int[n + 1]; dp[0] = 0; dp[1] = 1; for (int i = 2; i <= n; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[n]; } ...
回溯算法
概述一般可以用回溯法解决以下问题
组合问题:N个数⾥⾯按⼀定规则找出k个数的集合
切割问题:⼀个字符串按⼀定规则有几种切割⽅式
子集问题:⼀个N个数的集合⾥有多少符合条件的子集
排列问题:N个数按⼀定规则全排列,有几种排列方式
棋盘问题:N皇后,解数独
回溯法的问题都可以抽象看为树形结构
for循环可以理解是横向遍历,递归看成纵向遍历,这样就把这棵树全遍历完了,一般来说,搜索叶子节点就是找的其中一个结果
123456789101112void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtracking(路径,选择列表); // 递归 回溯,撤销处理结果 }}
组合问题77.组合
12345678910111213141516171819202122232425c ...
字符串题目
字符串反转反转字符串
12345678910public void reverseString(char[] s) { int left = 0; int right = s.length - 1; while (left < right) { Character temp; temp = s[left]; s[left++] = s[right]; s[right--] = temp; }}
字符串中的第一个唯一字符
1234567891011121314// 暴力方法,超时public int firstUniqChar(String s) { HashMap<Character, Integer> map = new HashMap<>(); for (int i = 0; i < s.length(); ++i) { char ch = s.charAt(i); ...
SpringSecurity
权限管理权限管理实现了对用户访问系统的控制 ,按照 安全规则 或 安全策略 控制用户跨域访问,而且只能访问自己被授权的资源
包括两部分(先进行身份认证,认证通过后用户具有该资源的访问权限)
身份认证:就是判断⼀个⽤户是否为合法⽤户的处理过程
授权:即访问控制,控制谁能访问哪些资源
整体架构认证和授权是分开的,⽆论使⽤什么样的认证⽅式,都不会影响授权。这是两个独⽴的存在,这种独⽴带来的好处之⼀,就是可以⾮常⽅便地整合⼀些外部的解决⽅案
认证AuthenticationManager在SpringSecurity中认证是由AuthenticationManager接口进行负责的,接口定义为:
返回Authentication表示认证成功
返回AuthenticationException异常,表示认证失败
AuthenticationManager 主要实现类为 ProviderManager,在 ProviderManager 中管理了众多 AuthenticationProvider 实例。
在⼀次完整的认证流程中,Spring Security 允许存在多个 ...
二叉树题目
理论基础满二叉树如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树
深度为k,有2^k-1个节点
完全二叉树
在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。
若最底层为第 h 层,则该层包含 1~ 2^(h-1) 个节点
二叉搜索树二叉搜索树有数值,而且是一个有序树
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
它的左、右子树也分别为二叉排序树
平衡二叉搜索数又称AVL树,具有以下性质:
它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
二叉树的定义123456789101112public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int va ...
计组
计算机系统 = 硬件 + 软件
第一章计算机系统 = 硬件 + 软件
硬件:计算机的实体,如主机外设
软件:具有各种特殊功能的程序组成
软件可分为
系统软件:用来管理整个计算机系统(操作系统,数据库管理系统,标准程序库,网络软件,语言处理程序)
应用软件:按任务需要编制成的各种程序(微信等)
硬件的发展
摩尔定律:揭示了信息技术进步的速度集成电路上可容纳的品体管数目,约每8个月便会增加一倍,整体性能也将提升一倍
硬件的基本组成早期冯诺依曼机结构“存储程序”概念:将指令以二进制代码的形式事先输入计算机的主存储器(内存),任何按其在存储器的首地址执行程序的第一条指令,以后就按该程序规定的顺序执行其他的指令,直至结束
输入设备:将信息转换成机器能识别的形式
存储器:存放数据和程序
运算器:进行算术运算和逻辑运算
输出设备:将结果转换为人们熟悉的形式
控制器:指挥程序运行
特点
计算机由五大部件组成
指令和数据以同等地位存于存储器,可按地址寻访
指令和数据用二进制表示
指令由操作码和地址码组成
(操作码:指明这条指令要进行哪些操作
地址码:指明要操作的数据存 ...
Zookeeper
概述Zookeeper从设计模式角度来理解:是一个基于 观察者模式 设计的分布式服务管理框架,负责存储和管理数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知在Zookeeper注册的观察者做出相应的反应
特点
1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群
2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器
3)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的
4)更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行
5)数据更新原子性,一次数据更新要么成功,要么失败
6)实时性,在一定时间范围内,Client能读到最新数据
数据结构整体上可以看作是一棵树,每个节点称做一个 ZNode
每一个 ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一标识
应用场景统一命名服务在分布式环境下,经常需要对应用 / 服务 ...
Spring事务
概念Spring事务:事务是一组连续的SQL操作,一组SQL操作都完成后才能提交,如果任何一个环节出现了异常,就会回滚到最初的状态
事务传播方式:其实就是指多个事务存在的时候,Spring如何进行处理,比如一个有事务的方法被另外有事务的方法调用时,这个事务应该如何运行
Spring事务管理两种方式的事务管理
基于 XML 文件方式的声明式事务管理
通过 Annotation 注解方式的事务管理
事务管理接口介绍PlatformTransactionManagerPlatformTransactionManager 接口是 Spring 提供的事务管理器接口,用于管理事务。
Spring将事务的配置详细信息封装到 TransactionDefinition 对象中,然后通过事务管理器的 getTransaction() 方法获得事务的状态(TransactionStatus),并对事务进行下一步的操作
1、获取事务的状态信息
12TransactionStatus getTransaction(@Nullable TransactionDefinition definition ...
Spring专题
Spring使用spring的优势是什么?1、Spring通过DI(依赖注入),AOP和消除样板式代码(通过切面和模板)来简化开发
2、低侵入式设计
不强制类要实现Spring的任何接口或类,没有任何地方表明它是一个Spring组件。 意味着这个类在Spring应用和非Spring应用中都可以发挥同样的作用
3、Spring的IOC容器降低了业务对象替换的复杂性,提高了组件之间的解耦
4、Spring的AOP支持允许将一些通用任务如安全,事务,日志等进行集中式的管理,进行更好地复用
5、Spring的ORM和DAO提供了与第三方持久层框架的良好整合(mp之类),并简化了底层的数据库访问
DAO层一般是进行数据存取操作的,集中到一起,主要是为了方便维护,逻辑比较清晰
ORM其实是一种处理问题的方式,它目的其实是让程序员能够运用面向对象的思想来操作数据对象,比如将数据库表映射成java的实体类对象,封装一些基本的数据操作
6、Spring高度开放,并不强制应用完全依赖于Spring,可以自由选用框架的一部分
Spring的事务传播机制是什么?详见Spring事务 | Z.y ...