计算机网络
基础篇TCP/IP网络模型应⽤层是⼯作在操作系统中的⽤户态,传输层及以下则⼯作在内核态.
TCP 相⽐ UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等
UDP 也可以实现可靠传输,把 TCP 的特性在应⽤层上实现就可以
hexo博客
问题git客户端密码位置要用token登录才可以生成自己的token
在个人设置页面,找到Setting
选择开发者设置Developer setting
选择个人访问令牌Personal access tokens,然后选中生成令牌Generate new token
设置token的有效期,访问权限等
设置token的有效期,访问权限等
在git客户端输入 git config –system –unset credential.helper即可重新输入密码
滑动窗口
框架123456789101112int left = 0;int right = 0;while(right < s.size()){ //扩大窗口 window.add(s[right]); right++; while(windos need shrink){ window.remove(s[left]); left++;}}
ssm学习
spring学习遇到的问题
mysql导的包的版本要和用的版本一致
没有resource文件夹要在File菜单下创建
JSP EL表达式无效在jsp页面设置
1<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
新建文件夹可能是因为maven项目的原因,要clean一下
5.遇到解决不了的问题先clean再重启
6.Mysql5和8驱动不一样
7.pagehelper插件4.0.0以后的版本支持自动识别使用的数据库,可以不用配置数据库方言
8.在mybatis中添加插件时,interceptor属性指定的类与版本不匹配
124:interceptor="com.github.pagehelper.PageHelper"5:interceptor="com.github.pagehelper.PageInterceptor"
9.mybatic ...
算法思想
有时HashMap,HashSet能帮助我们处理一些无序数组的问题
排序后考虑下重复问题
二分搜索普通123456789101112131415public int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length; while(left < right){ int mid = left + (right -left)/2; if(nums[mid] == target){ return mid; }else if(nums[mid] < target){ left = mid + 1; }else{ right = mid; } } re ...
BFS算法
BFS算法基本框架123456789101112131415161718192021222324int BFS(Node start, Node target){ Queue<Node> q; Set<Node> visited; q.offer(start); visited.add(start); int step = 0; while(!q.isEmpty()){ int sz = q.size(); for(int i = 0;i < sz;i++){ Node cur = q.poll(); if(cur == target){ return step; } for(Node x : cur.adj()){ if(!visited.containsKey(x)){ ...
二叉树
算法框架灵魂三问:
函数是干什么的
函数的变量是什么
得到递归的结果应该做什么
可以对左子树和右子树得到的结果进行处理,根据问题选择遍历的位置
原始1234567void traverse(TreeNode root){ //前序遍历 traverse(root.left); //中序遍历 traverse(root.right); //后序遍历}
BST框架1234567891011void BST(TreeNode root,int target){ if(root.val == target){ //做什么 } if(root.val < target){ BST(root.left,target); } if(root.val > target){ BST(root.right,target); }}
完全二叉树节点个数普通二叉树+满二叉树
层级遍历123456789101112131415 ...
回溯算法
框架返回值要搞清楚,当索引变为负值返回,当达到目标时也要记得返回.
12345678910result = []def backrack(路径,选择列表): if 满足结束条件: result.add(路径) return #少的话可以直接穷举 for 选择 in 选择列表 做选择 backtrace(路径,选择列表) 撤销选择
和动态规划的关系把上边的这部分展开一下
123456def backrack(游标,一路选择后的结果):...for 选择 in 选择列表 做选择 backtrace(游标,一路选择后的结果) 撤销选择
1234def backtrack(int i,int trace): backtrace(i + 1,trace + nums[i]); backtrace(i + 1,trace - nums[i]); ...
当nums[i] = 0时有重复子问题,发现一个必然有很多个因此可以使用备忘录优化
jvm笔记
类中赋初值时间
static修饰:
准备阶段赋默认值,初始化阶段赋初值
final static/final修饰:
准备阶段赋值
编译阶段值已经确定,并且字面量和常量都会在class常量池出现,创建实例时在队中创建,如果可以将字面量存入缓存.eg:Integer缓存池.
实例变量:
创建实例时创建.
JVM类加载器启动类加载器:
java、javax、sun等开头的类
扩展类加载器:
JDK的安装目录的jjre/lib子目录下的ext的子目录的类库
应用程序类加载器:
它负责加载环境变量classpath或系统属性java.class.path指定路径下的类库
栈帧的返回值invoke2()调用invoke1()
invoke1()的返回值压入invoke2()的操作数栈
关于符号引用和直接引用
在类加载链接中的解析中,将符号引用转化为直接引用(运行时常量池中的地址)
动态连接:用来解决多态问题虚拟机栈中的栈帧指向运行时常量池的方法引用
动态连接每个栈帧都包含一个执行运行时常量池中该栈帧所属方法的引用,持有这个引用是为了支持方法调用 ...
springdataRedis
初识springdataRedis
创建springdata项目
引入依赖
123456789101112131415<!--redis依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--common-pool--><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency><!--Jackson依赖--><dependency> <groupId>com.fasterxml.jackson.core ...