java
文章平均质量分 88
zkFun
热爱学习,持续产出。
展开
-
6️⃣▶线程、同步
文章目录1 线程1.1 多线程原理1.2 Thread类1.3 创建线程方式二1.4 Thread和Runnable的区别1.5 匿名内部类方式实现线程的创建2 线程安全2.1 线程安全2.2 线程同步2.3 同步代码块2.4 同步方法2.5 Lock锁3 线程状态3.1 线程状态概述3.2 Timed Waiting(计时等待)3.3 BLOCKED(锁阻塞)3.4 Waiting(无限等待)3.5 补充知识点1 线程1.1 多线程原理分析执行流程自定义线程类:public class MyTh原创 2021-01-01 11:27:31 · 414 阅读 · 0 评论 -
9️⃣▶字节流、字符流
文章目录1 IO概述1.1 什么是IO1.2 IO的分类1.3 IO的流向说明图解1.4 顶级父类们2 字节流2.1 一切皆为字节2.2 字节输出流【OutputStream】2.3 FileOutputStream类构造方法写出字节数据数据追加续写写出换行2.4 字节输入流【InputStream】2.5 FileInputStream类构造方法读取字节数据2.6 字节流练习:图片复制复制原理图解案例实现3 字符流3.1 字符输入流【Reader】3.2 FileReader类3.3 字符输出流【Writ原创 2021-01-11 21:43:13 · 773 阅读 · 0 评论 -
2️⃣▶Collection集合、迭代器与泛型
文章目录1 Collection集合1.1 集合与数组1.2 集合分类1.3 通用方法2 Iterator迭代器2.1 Iterator接口2.2 迭代器的实现原理2.3 增强for3 泛型1 Collection集合集合是java中提供的一种容器,可以用来存储多个数据1.1 集合与数组数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。1.2 集合分类集原创 2020-12-26 22:01:25 · 122 阅读 · 0 评论 -
3️⃣▶数据结构、List和Set、Collections
文章目录1数据结构1.1 数据结构存在的意义1.2 常见数据结构1.2.1 栈1.2.2 队列1.2.3 数组1.2.4 链表1.2.5 红黑树2 List集合2.1 接口介绍2.2 接口中常用方法2.3 List的子类2.3.1 ArrayList集合2.3.2LinkedList集合3 Set接口3.1 HashSet集合3.1.1介绍3.1.2 hashSet集合存储数据的结构(哈希表)3.1.3 HashSet存储自定义类型元素3.2 LinkedHashSet扩展——...可变参数4 collec原创 2020-12-28 12:43:52 · 632 阅读 · 0 评论 -
1️⃣0️⃣▶缓冲流、转换流、序列化流
文章目录1 缓冲流1.1 概述1.2 字节缓冲流构造方法效率测试1.3 字符缓冲流构造方法特有方法1.4 练习:文本排序案例分析案例实现2 转换流2.1 字符编码和字符集字符编码字符集2.2 编码引出的问题2.3 InputStreamReader类构造方法指定编码读取2.4 OutputStreamWriter类构造方法指定编码写出2.5 练习:转换文件编码案例分析案例实现3 序列化3.1 概述3.2 ObjectOutputStream类构造方法序列化操作3.3 ObjectInputStream类构造原创 2021-01-16 18:14:42 · 820 阅读 · 0 评论 -
4️⃣▶Map
文章目录1 Map集合1.1 概述1.2 接口的常用子类1.3 接口的方法1.4 Map集合遍历(键找值)1.5 Entry键值对对象1.6 Map集合遍历(键值对方式)1.7 HashMap存储自定义类型1.8 LinkedHashMap1.9 Map集合练习2 知识点补充2.1 JDK9 对集合添加的优化2.2 Debug追踪3 斗地主案例3.1 规则3.2 分析3.3 实现1 Map集合1.1 概述Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方原创 2020-12-30 11:04:21 · 153 阅读 · 0 评论 -
5️⃣▶异常、线程
文章目录1 异常1.1 异常概念1.2 异常体系1.3 异常分类1.4 异常产生过程2 异常处理2.1 抛出异常throw2.2 Objects非空判断2.3 声明异常throws2.4 捕获异常try…catch2.5 finally 代码块2.6 异常注意事项3 自定义异常3.1 概述3.2 自定义异常的练习4 多线程4.1 并发与并行4.2 线程与进程4.2 线程与进程1 异常1.1 异常概念异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对原创 2020-12-31 09:26:52 · 479 阅读 · 0 评论 -
8️⃣▶File类、递归
文章目录1 File类1.1 概述1.2 构造方法1.3 常用方法获取功能的方法绝对路径和相对路径判断功能的方法创建删除功能的方法1.4 目录的遍历2 递归2.1 概述2.2 递归累加求和2.3 递归求阶乘2.4 递归打印多级目录3 综合案例3.1 文件搜索3.2 文件过滤器优化3.3 Lambda优化1 File类1.1 概述java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。1.2 构造方法public File(String pathnam原创 2021-01-07 10:08:42 · 418 阅读 · 0 评论 -
1️⃣▶常用API
文章目录1 Object类1.1 基本概述1.2 方法2/111.2.1 public String toString()1.2.2 public boolean equals(Object obj)2 日期类1——Date类2.1 基本概述2.2 构造方法2.3 常用方法3 日期类2——DateFormat类3.1 基本概述3.2 构造方法3.3 常用方法3.3.1 public String format(Date date)3.3.2 public Date parse(String source)4原创 2020-12-26 13:01:39 · 143 阅读 · 0 评论 -
1️⃣1️⃣▶网络编程
文章目录1 网络编程入门1.1软件结构1.2 网络通信协议1.3 协议分类1.4 网络编程三要素1.4.1 协议1.4.2 IP地址IP地址分类常用命令1.4.3 端口号2 TCP通信程序2.1 概述两端通信时步骤:在Java中,提供了两个类用于实现TCP通信程序:2.2 Socket类构造方法成员方法2.3 ServerSocket类构造方法成员方法2.4 简单的TCP网络程序TCP通信分析图解客户端向服务器发送数据服务端实现:客户端实现:服务器向客户端回写数据3 综合案例3.1 文件上传案例文件上传分析原创 2021-01-18 20:24:30 · 623 阅读 · 0 评论 -
1️⃣2️⃣▶函数式接口
文章目录1 函数式接口1.1 概念1.2 格式1.3 @FunctionalInterface注解1.4 自定义函数式接口2 函数式编程2.1 Lambda的延迟执行1 函数式接口1.1 概念函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。备注:“语法糖”是指使用更加方便原创 2021-01-21 22:45:09 · 576 阅读 · 0 评论 -
1️⃣3️⃣▶Stream流、方法引用
文章目录1 Stream流1.1 引言传统集合的多步遍历代码循环遍历的弊端Stream的更优写法1.2 流式思想概述1.3 获取流根据Collection获取流根据数组获取流1.4 常用方法逐一处理:forEach复习Consumer接口基本使用:过滤:filter复习Predicate接口基本使用映射:map复习Function接口基本使用统计个数:count取用前几个:limit跳过前几个:skip组合:concat1.5 练习:集合元素处理(传统方式)题目解答1.6 练习:集合元素处理(Stream方原创 2021-01-27 14:25:58 · 805 阅读 · 0 评论 -
7️⃣▶线程池、Lambda表达式
文章目录1 等待唤醒机制1.1 线程间通信1.2 等待唤醒机制1.3 生产者与消费者问题2 线程池2.1 线程池思想概述2.2 线程池概念2.3 线程池的使用3 Lambda表达式3.1 函数式编程思想概述3.2 冗余的Runnable代码3.2.1 传统写法3.2.2 分析3.3 编程思想转换3.4 体验Lambda的更优写法3.5 回顾匿名内部类3.5.1 使用实现类3.5.2 使用匿名内部类3.5.3 匿名内部类的好处与弊端3.5.4 语义分析3.6 Lambda标准格式3.7 练习:使用Lambda原创 2021-01-02 13:47:07 · 785 阅读 · 0 评论 -
分布式之RabbitMQ
RabbitMQ入门到熟练掌握,java,springBoot继承。原创 2022-04-30 17:24:52 · 1766 阅读 · 0 评论 -
分布式之SpringSession
文章目录1、概述1.1 Web中的Session和Cookie回顾1.2 Session会话管理及带来的问题1.3 Session会话共享方案2、SpringSession2.1 使用方法概述3、应用场景3.1 同域名下相同项目(集群环境)实现Session共享3.2 同域名下不同项目实现Session共享3.3 单点登录不支持4 Spring Session的执行流程(源码分析)1、概述1.1 Web中的Session和Cookie回顾Session机制由于HTTP协议是无状态的协议,一次浏览器和原创 2022-04-08 16:40:22 · 767 阅读 · 0 评论 -
分布式之Nginx
Nginx (engine x) 是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器,负载均衡。Nginx 特点是占有内存少,并发处理能力强,以高性能、低系统资源消耗而闻名。原创 2021-10-27 16:54:47 · 473 阅读 · 0 评论 -
携程2021.4.1笔试(1.sql语句中特定字段查找,2.回溯暴搜、动规)
文章目录题目一题目二题目一题目:从sql语句中找到真实的表名称,可能会起别名,但是要的是表的全称分析:找from、 left join、right join等单词后面的真实表名称,可以用正则表达式查找关键词或者用kmp有限状态机查找关键词题目二题目携程商旅最近上线了一批优惠权益套餐,作为公司的一名采购, 为了降低公司差旅出行成本, 你决定购买员工使用频率较高的各项权益, 因此需要决定购买哪些套餐,不仅需要覆盖要求的具体权益项, 同时确保成本最低.携程商旅提供n种不同的权益: 酒店原创 2021-04-01 21:26:21 · 361 阅读 · 2 评论 -
❗⭕⭕算法——单调栈
文章目录1 简介2 例题2.1 下一个更大元素2.2 再过多少天升温2.3 环形数组的下一个更大元素2.4 柱状图中最大的矩形1 简介详情单调栈:每次新元素入栈后,栈内的元素都保持有序(单调递增或单调递减)使用场景:找第一个大于他的元素,第一个小于他的元素。左右边界都可以。2 例题2.1 下一个更大元素题目leetcode496给你一个数组,返回一个等长的数组,对应索引存储着下一个更大元素,如果没有更大的元素,就存 -1。分析找第一个大于自己的数,首先找肯定是往后找,所以原创 2021-03-29 11:01:48 · 367 阅读 · 0 评论 -
⛔⛔⛔数据结构——图
文章目录1 图的定义2 图的遍历3 例题3.1 有向无环图的所有路径1 图的定义详情图是树的一种图一般用邻接表和邻接矩阵邻接表,好处是占用的空间少,邻接表无法快速判断两个节点是否相邻邻接矩阵需要更多的存储空间,判断结点是否相邻效率高。有向图,如图所示两种表示方法有权有向图:对有向图进行加权:邻接表,我们不仅仅存储某个节点x的所有邻居节点,还存储x到每个邻居的权重。邻接矩阵,matrix[x][y]不再是布尔值,而是一个 int 值,0 表示没有连接,其他值表示权重。原创 2021-03-26 17:11:02 · 227 阅读 · 0 评论 -
❗⭕⭕算法——回溯(暴力穷举所有情况)
文章目录1 模板2 例题2.1 全排列问题2.2 组合问题2.3 N皇后问题2.4 括号生成2.5 不重复的所有子集2.6 数独问题1 模板回溯详解请输出所有组合/情况写backtrack函数时,需要维护走过的「路径」和当前可以做的「选择列表」,当触发「结束条件」时,将「路径」记入结果集可以使用Linkedlist removeLast来实现撤销操作。result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(原创 2021-03-19 16:57:35 · 461 阅读 · 0 评论 -
携程提前批笔试2021
文章目录前言一、两名字的缘分值二、AC自动机前言回忆版,仅供学习。2021.3.18一、两名字的缘分值题目 :缘分值定义:两个名字(字符串)通过删除字符,使得留下的子串一直,所删除的ASCII之和最小值为两个名字的缘分值。输入描述:输入两行名字,上下两行对应位置名字进行缘分值计算。2<=每个名字的长度<=10,2<=每个名字的<=20输出描述:输出总缘分值。样例输入Zhang SanZhan Ai样例输出563说明:第一组名字,删除‘g’使其相等原创 2021-03-18 21:10:12 · 628 阅读 · 4 评论 -
❗⭕⭕拆解LRU算法
文章目录一、从底层开始搭建1. 双向链表节点类2. 双链表类3. LRU类二 、使用LinkedHashMap一、从底层开始搭建1. 双向链表节点类class Node { public int key, val; public Node next, prev; public Node(int k, int v) { this.key = k; this.val = v; }}2. 双链表类class DoubleList {原创 2021-03-16 16:45:49 · 201 阅读 · 0 评论 -
⏰⏰⏰⏰⏰⏰设计模式
文章目录1 六项设计原则2 设计模式主要考点1、单例模式2、六项设计原则3、Spring(或者其他简历中写了的框架)中有哪些设计模式4、项目中使用了哪些设计模式5、解释某个设计模式(工厂、代理、适配…)6、JDK(常用的某个JDK类使用了什么设计模式)中有哪些设计模式1 六项设计原则1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好原创 2021-03-15 21:31:47 · 484 阅读 · 0 评论 -
⏰⏰Java宝典(更新中)
文章目录1 常用类Object类Date类DateFormat类Calendar类System类StringBuilder类String、StringBuilder、StringBuffer的区别⭐⭐⭐包装类2 Collection集合、迭代与泛型集合框架⭐⭐⭐**实现**工具类collectionsComparable和Comparator俩接口的区别JDK9 对集合添加的优化数据结构迭代器Map的遍历泛型3 异常4 线程⭐并发与并行进程与线程线程调度:创建线程Thread和Runnable的区别线程同步原创 2021-02-25 18:35:12 · 1999 阅读 · 2 评论 -
✅SpringBoot注解笔记
文章目录@SpringBootApplication@Controller 、@ResponseBody@Value@ConfigurationProperties、@Component、@Autowired@SpringBootApplicationSpring Boot 项目的核心注解,主要作用是开启Spring 自动配置,如果在 Application 类上去掉该注解,那么不会启动 SpringBoot程序。@Controller 、@ResponseBody依然是之前的Spring MVC,原创 2021-02-24 12:44:27 · 655 阅读 · 3 评论 -
❗⭕⭕算法——并查集
文章目录1 并查集简介2 并查集模板3 例题1 并查集简介主要就是集合问题,两个节点在不在一个集合,也可以将两个节点添加到一个集合中。检查无向树形图中存在的环2 并查集模板int n = 1005; // 节点数量3 到 1000int father[1005];// 并查集初始化void init() { for (int i = 0; i < n; ++i) { father[i] = i; }}// 并查集里寻根的过程int find(in原创 2021-01-13 11:54:36 · 147 阅读 · 0 评论 -
算法——搜索(最短路径BFS与DFS)
BFS与DFS原创 2020-12-26 21:02:12 · 1606 阅读 · 0 评论 -
⛔⛔⛔数据结构——树树树树树树树树树树树树树树树树
文章目录1递归1.1 核心代码,树的高度深度104⭐⭐⭐变形1:110判断平衡树<--深度变形2:543树的路径和<--某点的左右子树的深度和226自上而下翻转树左右子树617合并两个树,自上而下构建新结点递归合并112 判断路径和==某个数?:从上往下,减去结点值递归往下找437统计路径和==某个数?(不一定以 root 开头):遍历所有结点的时候都认为是从根结点开始,然后把路径数加到一起1116873375.2 核心代码,同树判断变形1:572子树判断572变形2:101 树的对称1015.原创 2020-12-24 18:06:11 · 939 阅读 · 1 评论 -
JAVA常用做题笔记
1.ArraysArray.sort(Object[] array) 对数组按照升序排序Arrays.fill(Object[] array,Object object) 可以为数组元素填充相同的值Arrays.toString(Object[] array) 返回数组的字符串形式2.声明2.1 数组2.2 HashMap Map<String> hashMap = new HashMap<String>();注释:Map是HashMap的父类,父类的引用指向子原创 2020-12-13 15:50:40 · 492 阅读 · 0 评论 -
Redis常用命令和数据结构命令方便查找
文章目录0 手册地址1 基本知识1.1 redis-benchmark(测试redis的性能)1.2 ping(查看状态pong正常)1.3 info [section](查看redis服务器的统计信息)1.4 默认16个库1.5 select db(切库)1.6 dbsize(当前数据库中key的数目)1.7 keys *(当前数据库中有哪些key)1.8 flushdb(清空当前库)1.9 flushall(清空所有数据库)1.10 config get *(获得redis的所有配置值)2 数据结构2.原创 2020-10-13 11:21:01 · 1051 阅读 · 0 评论 -
Redis的安装到Linux虚拟机
文章目录第一步:下载redis第二步:使用Xftp工具上传redis-5.0.2.tar.gz到linux 系统。第三步:解压redis-5.0.2.tar.gz到/opt目录第四步:编译redis,进入解压目录,并且执行make命令:第五步:安装gcc。第六步:再次回到redis解压目录执行make命令进行编译第七步:进行清理工作第八步:再次执行make指令进行编译:第九步:执行make install安装redis:第十步:启动Redis① 前台启动 redis-server②后台启动 redis-se原创 2020-10-13 10:38:42 · 852 阅读 · 1 评论 -
分布式-dubbo的zookeeper方式例子,非直连
文章目录1.接口工程(java工程!!)1.1实体类,**记得序列化!**1.2 接口方法1.3web.xml1.4 pom2.服务提供者2.1 接口实现类2.2 dubbo配置文件,spring配置文件2.3 web.xml2.4 pom文件3.服务消费者3.1 消费者控制器3.2 配置文件3.3 web.xml3.4 pom文件3.5 显示页面dubbo直连->接口工程->接口工程+zookeeper1.接口工程(java工程!!)1.1实体类,记得序列化!public class原创 2020-10-12 10:25:29 · 271 阅读 · 0 评论 -
❗⭕⭕算法——查找(顺序,二分,裴波那契,题解)
1 介绍2 顺序(线性)查找2.1 思想遍历,发现相同值返回2.2 代码public static int seqSearch(int[] arr, int value) { for (int i = 0; i < arr.length; i++) { if(arr[i] == value) { return i; } } return -1; }3 二分查找3.1 思想待查找的数组有序或者部分有序要求时间复杂度低于O(n),或者直接要求时间复杂原创 2020-09-28 21:04:53 · 210 阅读 · 0 评论 -
❗⭕⭕算法——排序(直接插入,希尔,简单选择,堆排序,冒泡,快排,归并,基数)
文章目录1 介绍1.1 八大排序分类1.2 时间复杂度1.3 空间复杂度2 插入排序-直接插入3 插入排序-希尔排序4 选择排序-简单选择排序5 选择排序-堆排序6 交换排序-冒泡排序7 交换排序-快速排序8 归并排序9 基数排序1 介绍1.1 八大排序分类1.2 时间复杂度图片来自于网络1.3 空间复杂度一个算法运行时,临时占用存储空间大小的度量,与解决问题的规模n有关,n较大时,会占用较多存储单元,例如快速排序和归并排序。主要讨论时间复杂度,更看重执行速度,缓存产品(r原创 2020-09-18 20:56:29 · 1027 阅读 · 0 评论 -
JAVA数据结构笔记leetcode3(图)
文章目录1 概念2 表示3 BFS4 DFS多对多关系,就用到了图1 概念2 表示3 BFS4 DFS原创 2020-09-14 16:24:24 · 248 阅读 · 0 评论 -
后端——SpringMVC中的拦截器与过滤器
文章目录1 拦截器1.1 preHandle(request,response, Object handler):1.2 postHandle(request,response, Object handler,modelAndView):1.3 afterCompletion(request,response, Object handler, Exception ex):1.4 多个拦截器的顺序2 过滤器1 拦截器自定义拦截器,需要实现 HandlerInterceptor 接口。而该接口中含有三个方法原创 2020-08-23 14:30:07 · 700 阅读 · 0 评论 -
后端——Servlet中文乱码问题
web.xml注册声明过滤器,解决post请求乱码的问题 <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--设置项目中使用的字符编码-->原创 2020-08-18 16:48:12 · 192 阅读 · 0 评论 -
后端——servlet的setAttribute()、getAttribute
一、ServletContext域中1.1 ServletContext即 Servlet 上下文,是个接口,是 Web 应用中所有 Servlet 在 Web 容器中的运行时环境。这个运行时环境随着 Web 应用的启动而创建,随着 Web 应用的关闭而销毁。也就是说,**一个 Web 应用,就一个 Servlet 运行时环境,即一个 Servlet 上下文,即一个ServletContext 对象。**这个 Servlet 运行环境中都包含哪些具体的“环境”呢?即 ServletContext 对原创 2020-08-17 14:34:35 · 7693 阅读 · 0 评论 -
后端——idea常用配置文件模板(mybatis)
1.mybatis(Spring框架中)1.1 mapper文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <setting原创 2020-08-13 09:47:18 · 265 阅读 · 0 评论 -
后端——Spring注入笔记
一. xml文件1.1.set 设值注入,自动调set方法,类中不能有同名构造函数,引用类型用ref <bean id="mystudent" class="com.zknode.ba01.Student"> <!--设值注入,自动调set方法,类中不能有同名构造函数--> <property name="name" value="张三"></property> <property name="a原创 2020-08-08 20:56:31 · 303 阅读 · 0 评论