自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

原创 计网相关知识点

2021-08-08 18:57:43 142

原创 多线程 - 如何进行锁优化

1、减少锁持有的时间  减少锁持有的时间指只在有线程安全的程序上加锁来尽量减少同步代码快对锁的持有时间。public synchronized void syncMethod(){ othercode1(); mutextMethod(); othercode2();} //优化后:public void syncMethod2(){ othercode1(); synchronized(this){ mutextMethod();

2021-08-06 15:11:10 473

原创 ReentrantLock和synchronized的比较

相同点1、两者都可以控制多线程对共享对象的访问。2、都是可重入锁。3、都可以保证可见性和互斥性。 不同点1、ReentrantLock显式的获得锁和释放锁;sychronized隐式的获得锁和释放锁。并且为了避免在出现异常时能够正常的释放锁,在使用ReentrantLock的时候需要在finally语句块中进行锁的释放。2、ReentrantLock可以定义公平锁。3、ReentrantLock可以响应中断,可轮回,为处理锁提供了更多的灵活性。4、ReentrantLock是API级别的,.

2021-08-06 09:18:08 348

转载 用户从地址栏输入url,按下enter键后,直到页面加载完成的这个过程都发生了什么?

点我查看相关资源

2021-08-03 15:56:28 119

原创 三次被破坏的java双亲委派机制

破坏双亲委派机制第一次因为双亲委派机制是在jdk1.2提出来的,但是类加载器的概念和抽象类java.lang.ClassLoader则是在java的第一个版本就已经经存在了,面对已经存在的用户自定义的类加载器的代码。为什么不直接对loadClass进行final修饰,禁止用户重写该方法呢?因为java是向下兼容的,java设计者在引入双亲委派机制的时候没有办法只好做出妥协,为了兼容这些已有的代码,无法再以技术手段避免loadClass()被子类覆盖的可能性,只能在JDK1.2之后的java.lang.

2021-07-31 23:40:45 182

原创 Java锁机制和锁优化 - 1

在java中,每个object,也就是每个对象都拥有一把锁,这把锁存放在对象头中,锁中记录了当前对象被那个线程所占有。对象的结构*对象头的结构这里可以参考一篇博客:https://blog.csdn.net/lkforce/article/details/81128115在Java中synchronized被Java编译之后产生的字节码指令monitorenter, monitorexit,依赖这两个指令能够使线程体同步。使用这两个指令对业务代码进行了包裹Monitor ——>.

2021-07-27 14:21:03 109

原创 transient关键字

参考网络资源:https://baijiahao.baidu.com/s?id=1636557218432721275&wfr=spider&for=pc1、初识transient其实这个关键字的作用很好理解,就是简单的一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。然后我们在Test中去验证一下:从上面可以看出,在序列化SerializeUser方法中,首先创建一个序列化user类,然后将其写入到G...

2021-07-26 15:34:27 101

原创 初识JVM虚拟机 --- 类加载

目录回顾父子类创建对象的时候的各部分代码的执行顺序JVM概述JVM1.8的结构图类的生命周期描述第一个阶段:加载第二个阶段:验证第三个阶段:准备第四个阶段:解析第五个阶段:初始化类加载的时机了解一下记住上面五个阶段和大致(大致就行)的作用类加载机制双亲委派机制双亲委派机制的优劣总结:该方面应该回答什么?回顾父子类创建对象的时候的各部分代码的执行顺序另参考另外一篇文章:Java的实例化顺序(程序执行顺序)JVM概述

2021-07-08 18:13:58 108

转载 Java的实例化顺序(程序执行顺序)

原文链接:https://blog.csdn.net/u011517841/article/details/82657047?utm_source=app&app_version=4.10.0&code=app_1562916241&uLinkId=usr1mkqgl919blen加载/执行顺序:牢记一点:静态和非静态分开处理使用到静态加载时,静态又分为: 静态变量, 静态代码块, 其中加载顺序是按照类中书写的先后顺序加载的非静态加载顺序: 按照非静态书写顺序加载/

2021-07-08 10:23:55 237

原创 计算机网络

目录OSI七层模型OSI没有落地的原因TCP/IP四层模型现代互联网的网络拓扑边缘部分:家庭边缘部分:企业核心部分简单描述稍微详细树形描述计算机网络的性能指标物理层概述物理层的作用数据链路层概述数据链路层的作用封装成帧过程透明传输举个例子差错检测最大传输单元MTUMTU路径MTU以太网协议详解MAC地址以太网协议局域网内数据发送的流程网络层概述IP协议详解虚拟互联网络IP协议IP.

2021-07-08 10:15:29 135

原创 高并发编程

1、Java应用程序的main函数是一个线程,是被JVM启动的时候调用,线程的名字叫main2、实现一个线程,必须创建Thread实例,override run方法,并且调用start方法。3、在JVM启动之后,实际上有多个线程,但是至少有一个非守护线程,就是main。4、当你调用一个线程的start方法的时候,此时至少有两个线程,一个是调用你的线程,还有一个是执行run方法的线程。5、线程的生命周期分为new,runnable, running,block,termate。...

2021-06-24 23:13:40 82

原创 乐观锁与悲观锁

乐观锁:顾名思义十分乐观,它总是认为不会出现问题,无论干什么都不去上锁!如果出现了问题,再次更新值测试。悲观锁:顾名思义十分悲观,它总是认为总是出现问题,无论干什么都会上锁!再去操作!乐观锁的实现方式:取出记录是,带上当前的 version 更新时,带上这个 version 执行更新的时候,set version = newVsersion where version = oldVersion 如果version不对,就更新失败乐观锁:1、先查询,忽的版本号 version = 1.

2021-06-22 22:16:18 62

原创 MySQl的事务相关

事务的四个特性:ACID:原子性,一致性,持续性,隔离性原子性:事务必须是原子工作单位,事务里面的操作要么都做,要么都不做一致性:在shi

2021-06-10 20:55:37 79

原创 初识 -- 动态规划

动态规划简称DP【Dynamic Programming】,是求解最优化问题的一种常用策略。通常的使用套路(一步一步优化)①暴力递归(自顶向下,出现了重叠子问题)②记忆化搜索(自顶向下)③递推(自底上向)【来自维基百科的解释】:Dynamic Programming is a method for solving a complex problem by breaking it down into a collection of simpler subproblems , solvi

2021-05-17 17:09:37 371

原创 Top K问题

Top k 问题解决 topK 问题的步骤: 1、建立一个小顶堆 2、将前k个数先添加进小顶堆里面 3、从k+1个数开始,和堆顶元素进行比较,如果大于堆顶元素,则进行replace 4、最后堆里面剩下的元素就是最大的k个数找出最小的k个数的思路和TopK的思路一样: 使用大顶堆,当k+1开始的元素小于堆顶元素的时候,进行replace,最终堆即为所求// 1、建立一个小顶堆 BinaryHeap<Integer> heap = new Binar...

2021-04-21 11:21:17 85

原创 AVL树 vs 红黑树

AVL树平衡标椎比较严格:每个左右子树的高度差不超过1最大高度是:(100W个节点,AVL树最大树高28)搜索,添加,删除都是O(logn)复杂度,其中添加仅需O(1)次旋转调整、删除最多需要O(logn)次旋转调整红黑树平衡标准比较宽松:没有一条路径会大于其他路径的2倍最大高度是(100W个节点,红黑树的最大树高为40)搜索,添加,删除都是O(logn)复杂度,其中添加、删除都仅需要O(1)次旋转调整搜索的次数远远大于插入和删除,选择AVL树;搜索、插入、删除次数几乎.

2021-04-14 11:02:58 251

原创 AVL树总结

添加可能会导致所有祖先结点都失衡只要让高度最低的失衡结点恢复平衡,整棵树就恢复平衡了(仅需要 O(1) 次调整)删除只可能导致父节点失衡让父节点恢复平衡后,可能会导致更高层次的祖先结点失衡(最多需要O(logn)次调整)平均时间复杂度搜索:O(logn)添加:O(logn),仅需要O(1)次的旋转操作删除:O(logn),最多需要O(logn)次的旋转操作...

2021-04-11 11:08:56 97

原创 重构二叉树

1、已知前序和中序,恢复二叉树的结构。思路:根据前序和中序的规律,可以求出递归求解的时候,下一次递归的入口。public static TreeNode buildTree(int[] preorder, int[] inorder){ int preLen = preorder.length; int inLen = inorder.length; if (preLen != inLen){ throw new RuntimeExceptio

2021-04-10 10:40:06 129

原创 有关快慢指针或者双指针的算法

1、可以判断单向链表中是或否含有环。【快慢指针】思路:慢指针slow指向头结点,快指针fast指向头结点的next结点,当fast != null && fast.next != null的时候,slow每次移动一步,fast每次移动两步,如果fast == slow,即快慢指针相遇,说明链表中含有环。 public boolean hasCycle(ListNode head) { //使用快慢指针的思想解决问题(追击问题) if (hea

2021-03-31 11:01:55 156 2

原创 双向链表VS动态数组

动态数组:开辟、销毁内存空间的次数相对较少,但可能造成内存空间的浪费(可以通过缩容解决)双向链表:开辟、销毁内存空间的次数相对较多,但不会造成内存空间的浪费。如果频繁在尾部进行添加、删除的操作,动态数组、双向链表均可选择。如果频繁在头部进行添加、删除操作,建议使用双向链表。如果有频繁的(在任意位置)进行添加、删除操作,建议使用双向链表。如果频繁进行查询操作(随机访问操作),建议使用动态数组。虽然有双向链表,但是单向链表也不是无用,在哈希表有用。...

2021-03-29 15:55:42 209

原创 牛客题霸 重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。输入[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]返回值{1,2,5,3,4,6,7}思路先顺数组的第一个值一定是二叉树的根节点,根节点在中序数组中将中序数组分为两个部分,左边的部分数组left为该节点的左子树上的节点,右边

2021-03-11 12:23:00 175 3

原创 数组的排序 七大排序

七大排序交换排序冒泡排序 快速排序插入排序直接插入排序 希尔排序选择排序直接选择排序 堆排序归并排序1、冒泡排序每次比较相邻的两个元素,将较大的元素后移,每当将数组的数比较一次,最大的数都会出现在数组的最后,再对除去最后面数的前面的数进行重复操作,操作arr.length-1次即可代码如下:private static void bubbleSort(int[] arr){ for (int i = arr.length - 1; i > 0;

2021-03-10 11:18:52 1121 1

原创 单向链表的倒置

首先要判断当链表的长度为0或者1的时候,直接返回当前节点即可,否则需要两个辅助“指针”pre、next,分别指向头结点的前结点和后结点,不然next属性改变的时候就会丢失原先列表的结点地址。首先让pre = null, next = null;循环当head != null 的时候,让next = head.next,head.next = pre,pre = head,head = next。最终当head=null的时候,循环结束,此时的pre指向原先的尾结点,即链表倒置后的头结点,函数

2021-03-08 10:34:16 383 1

原创 【剑指offer的笔试题】栈:栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)我的思路1:首先将弹出序列在输入序列的index找到,创建一个ArrayList将其保存,然后对这些index进行判断;因为栈的特点是先进后出,所以相邻两个index后者比前者小的时候且相差的数大于1

2021-03-07 20:13:22 115 3

原创 request取路径的各种方法

getScheme():获取的是使用的协议(http 或https) getServerName():获取的是域名(xxx.com) request.getServerPort():获取的是端口号 getContextPath():获取项目的根路径String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPat

2021-01-22 15:03:47 121

转载 学习笔记(42):高性能MySQL实战课-分组函数的使用(按销量分组)

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-12 20:11:15 254

转载 学习笔记(41):高性能MySQL实战课-偏移函数的使用(计算同比/环比)

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-12 19:41:38 857

转载 学习笔记(40):高性能MySQL实战课-分布函数的使用(计算分布/占比)

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-12 17:07:57 344

转载 学习笔记(39):高性能MySQL实战课-排序函数的使用(计算排名)

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-12 16:35:21 86

转载 学习笔记(38):高性能MySQL实战课-一个例子弄懂什么是窗口函数

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-12 16:16:34 183

转载 学习笔记(38):高性能MySQL实战课-自增锁及其作用

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-12 15:25:06 122 1

转载 学习笔记(37):高性能MySQL实战课-自增锁及其作用

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-09 21:58:30 145

转载 学习笔记(36):高性能MySQL实战课-霸道的排他锁

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-09 21:08:50 102

转载 学习笔记(35):高性能MySQL实战课-友好的共享锁

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-09 20:53:21 71

转载 学习笔记(34):高性能MySQL实战课-MyISAM与InnoDB锁机制

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-08 19:56:45 90

转载 学习笔记(33):高性能MySQL实战课-事务的4种隔离级别

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-08 16:59:24 84

转载 学习笔记(32):高性能MySQL实战课-事务并发带来的问题

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-08 15:52:12 79

转载 学习笔记(31):高性能MySQL实战课-全文索引之ngram全文解析器

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-07 19:37:50 297

转载 学习笔记(30):高性能MySQL实战课-一节课讲透全文索引

新课限时福利 限时福利1:原价 129 元,今日特价仅需 69 元!(7月前课程更新完毕)! 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高...

2020-07-07 17:25:51 87

转载 学习笔记(30):MySQL数据库从入门到实战应用-预处理(绑定变量)

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使...

2020-07-06 21:39:41 758

python火车票查询软件及源码

python实现的tkinter窗口版的火车票查询软件,可支持15天内的火车票查询,但必须在有网的环境中运行,压缩文件中的api.py和ticket.py必须在统一路径下才可以

2018-04-15

空空如也

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

TA关注的人

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