自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 死锁避免

死锁预防 防止死锁的发生只需破坏死锁产生的四个必要条件之一即可。 1) 破坏互斥条件 如果允许系统资源都能共享使用,则系统不会进入死锁状态。但有些资源根本不能同时访问,如打印机等临界资源只能互斥使用。所以,破坏互斥条件而预防死锁的方法不太可行,而且在有的场合应该保护这种互斥性。 2) 破坏不剥夺条件 当一个已保持了某些不可剥夺资源的进程,请求新的资源而得不到满足时,它必须释放已经保持的所有资源,待以后需要时再重新申请。这意味着,一个进程已占有的资源会被暂时释放,或者说是被剥夺了,或从而破坏了不可剥夺条件。

2020-08-12 16:08:41 322

原创 Threadlocal底层原理

介绍 ​ThreadLocal大家应该不陌生,经常在一些同步优化中会使用到它。很多地方叫线程本地变量,ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。也就是对于同一个ThreadLocal,每个线程通过get、set、remove接口操作只会影响自身线程的数据,不会干扰其他线程中的数据。 ThreadLocal是怎么实现的呢? ThreadLocal又有哪些误区呢? 源码分析 从ThreadLocal的set方法说起,set是用来设置想要在线程本地的数据,可

2020-07-09 14:34:59 1724

原创 树与图的遍历--图的拓扑排序

1.题目 给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。 若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称A是该图的一个拓扑序列。 输入格式 第一行包含两个整数n和m 接下来m行,每行包含两个整数x和y,表示存在一条从点x到点y的有向边(x, y)。 输出格式 共一行,如果存在拓扑序列,则输出拓扑序列。 否则输出-1。 数据范围 1≤n,m≤1051≤n,m≤105 输

2020-07-08 10:59:16 278

原创 树与图的遍历-图中点的层次

1.题目 给定一个n个点m条边的有向图,图中可能存在重边和自环。 所有边的长度都是1,点的编号为1~n。 请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。 输入格式 第一行包含两个整数n和m。 接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为1的边。 输出格式 输出一个整数,表示1号点到n号点的最短距离。 数据范围 1≤n,m≤1051≤n,m≤105 输入样例: 4 5 1 2 2 3 3 4 1 3 1 4 输出样例: 1 2.分析 所有边的长度都是1,所以可以

2020-07-08 10:56:30 297

原创 树与图的存储--树的重心

给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 输入格式 第一行包含整数n,表示树的结点数。 接下来n-1行,每行包含两个整数a和b,表示点a和点b之间存在一条边。 输出格式 输出一个整数m,表示重心的所有的子树中最大的子树的结点数目。 数据范围 1≤n≤1051≤n≤105 输入样例 9 1 2 1 7 1

2020-07-08 10:18:18 90

原创 java反射

一、反射 1.1 框架 半成品软件。可以在框架的基础上进行软件开发,简化编码。学习框架并不需要了解反射,但是要是想自己写一个框架,那么就要对反射机制有很深入的了解。 1.2 反射 反射机制:将类的各个组成部分封装为其他对象,这就是反射机制。 反射的好处: 1.可以在程序运行过程中,操作这些对象。 2.可以解耦,提高程序的可扩展性。 Java代码在计算机中经历的三个阶段 (1)Source源代码阶段:.java被编译成.class字节码文件。 (2)Class类对象阶段:*.class字节码文件被类加载器加载

2020-07-06 10:39:39 78

原创 Threadlocal可能会产生内存泄露的问题及原理

刚遇到一个关于threadlocal的内存泄漏问题,刚好总结一下 比较常用的这里先不提,直接提比较重要的部分 为什么会产生内存泄露? public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) map.set(this, value); else

2020-07-02 15:28:35 410

原创 设计模式总结

设计模式: 管理变化,提高复用 重构技法: 静态—>动态,早绑定—>晚绑定,继承—>组合,紧耦合—>松耦合,编译时依赖—>运行时依赖 关注抽象类和接口,良好的设计是演化过来的 利用好多态 变化;关注稳定点和变化点 组件协作模式 1. 模版方法(必用) 2. 策略模式 3. 观察者模式(必用) 单一职责模式 4.装饰者模式 绝大多数设计模式 就是编译时候复用,变化 需求的变化用多态放到运行时! 5.桥模式 其实就是那个pojo 包装类,把一些类包装到另一个类里面! 对象创建模式

2020-06-30 20:32:45 99

原创 剑指offer 第18题

剑指offer面试题18(java版):删除链表的节点 题目一描述 在O(1)时间内删除链表节点. 思路 1.常规思路: 删除一个节点, 让待删节点的前一个节点指向待删节点的下一个节点 2.寻找待删节点的前一个节点的时间复杂度是O(n),不满足O(1)的要求 3.另一种思路: 将待删节点的value改成待删节点的下一个节点的value, 然后将待删节点指向下一个节点的下一个节点. 4.上面这种思路...

2019-12-18 15:42:28 111

原创 同步I/O和异步I/O

同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步: 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知...

2019-05-22 19:07:24 519

原创 Mybatis框架

Mybatis框架介绍及使用 1、什么是Mybatis 1 、mybatis就是一个封装来jdbc的持久层框架,它和hibernate都属于ORM框架,但是具体的说,hibernate是一个完全的orm框架,而mybatis是一个不完全的orm框架; 2 、Mybatis让程序员只关注sql本身,而不需要去关注如连接的创建、stateme...

2019-05-14 15:38:58 129

转载 Mysql分库分表原理

上一篇文章介绍了MySQL的查询优化考题,本文将介绍MySQL的高可扩展和高可用。首先看一道真题简述MySQL分表操作和分区操作的工作原理,分别说说分区和分表的使用场景和各自优缺点。考点分析分区表的原理分库分表的原理延伸:MySQL的复制原理及负载均衡分区表的工作原理对用户而言,分区表是一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这对用户来说是透明...

2019-05-14 15:32:30 385

转载 Mysql分库分表

单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。  单库多表  随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期...

2019-05-14 15:29:50 109

原创 问答类项目实践总结

项目视频之前已经看过一遍,对项目的基本流程有了初步的认识,现在需要回顾总结知识点,加深理解,准备最近这段时间再手敲一遍,提高熟练度。 4月22日 每次创建好一个新的项目以后,点击IDEA上的VCS找到enable version control 然后与相应的版本控制软件进行绑定,由于此电脑上没有git工具,先下载,熟悉一下流程。(以后每次写一份代码,都上传到自己的github上去) 关于Git:...

2019-04-22 13:33:30 160

转载 JAVA知识点

  一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java;   Java的三种技术架构: JAVAEE:Java Platform&...

2018-11-20 10:31:07 148

原创 Git学习

很早之前就想学习Git的使用,虽然入门学习现阶段好像使用的不多,但是迟早也要学习的嘛!感觉是个很强大的工具 趁着周末的上午,学习了解下呗 第一次写博客,写的杂一点乱一点,见谅 1.cd 是git里面常用的指令,意思就是change directory,改变目录,进入到当面的目录。选择合适的地方建立自己的git库,打开git bash以后在命令行里输入$ cd e:, 下一步就是创建一个目录存放自...

2018-11-04 13:12:35 210

转载 排序算法总结

排序算法在面试过程中是经常会考的,这是很基础的,面试官觉得你应该很熟悉这些东西,如果你半个小时内写不出来,那基本就给跪了,因为这真的是狠基础狠基础的东西,所以我们得对一些基本的排序算法烂熟于胸,对这些排序思想,效率了如指掌,才能让面试官觉得你还行。基本的排序算法有:直接插入排序,冒泡排序,简单选择排序,shell排序,归并排序,快速排序,堆...

2018-10-30 15:57:34 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除