- 博客(12)
- 收藏
- 关注
原创 JAVA垃圾回收机制
JAVA相比C++简化了一些,取消了指针,新增了垃圾回收机制。垃圾回收主要是针对堆和方法。垃圾回收前首先要判断垃圾,判断某个对象是否是垃圾的算法包括引用计数法和可达性分析法。清除算法包括标记-清理法;标记-压缩法;复制法;分代收集法。分代收集就是将堆分为新生代和老年代。新生代中对象寿命较短,采用复制法;老年代采用标记法。...
2020-07-29 20:54:40
116
原创 悲观锁,乐观锁,共享锁,排他锁,自旋锁
悲观锁比较悲观,认为并发大概率导致冲突,所以要加锁防止并发。乐观锁比较乐观,认为并发小概率导致冲突,所以仅在提交更新时监测冲突。悲观锁包括共享锁(读锁)和排它锁(写锁)。共享锁就是多个事务可以同时读某一资源,而排他锁意味着一个事务获得写权限时,其他事务只能等待。而自旋锁是排它锁的一种实现。当线程获取锁而锁被其他线程占用的时候,线程不会发生状态转换,保持active的状态。自旋锁的优点是执行速度快,缺点是使用不当会导致CPU占用率高。此外,自旋锁还可以关注公平性和可重入性的问题。...
2020-07-29 20:06:20
505
原创 TCP拥塞控制机制
当延迟出现时,为防止通讯双方不断重传,在网络中注入过多数据,所以建立了拥塞控制机制。而拥塞控制包括四个算法:慢启动,拥塞避免,快重传,快恢复。先来介绍一些背景:1.TCP有一个计时器,可以判断超时。2.快速重传指接收方收到失序报文段后立刻发出重传确认。而快速重传算法规定发送方一旦收到3个重复确认就立即重传,不用等到计时器超时。以上是背景。建立连接后首先进入慢启动算法,以1为拥塞窗口,每次传输成功将窗口大小翻倍,直到窗口大小达到阈值。达到阈值后开始拥塞避免算法,控制窗口的递增速度从翻倍的指数级减小
2020-07-29 19:56:33
310
原创 多人GitHub或Gitee开发需要的git代码基础
按顺序整理一下多人合作开发一个项目时,作为开发者需要经常使用的git代码和需要的操作1.git clone 项目地址我们参与一个项目时,经常是在已有的代码上做修改。这时,clone可以从仓库中获取代码2.git checkout 分支名称很多项目中会将最新版本和稳定版本分开,而作为开发人员,我们需要拿到的经常是最新版本,所以需要用checkout命令切换到需要的分支。在此过程中我们可以用git branch -a查看分支、用git checkout -r创建分支。3.fork将参与开发的仓库“
2020-06-10 21:19:44
181
原创 python刷LeetCode 559. N叉树的最大深度
class Solution: def maxDepth(self, root: 'Node') -> int: while root: stack = [[1,root]] max=1 while stack: node = stack.pop() if node[1].children: for ch
2020-05-25 16:49:12
202
原创 python刷LeetCode 938. 二叉搜索树的范围和 看看北京某公司Python后端岗的真实面试题
之前面试北京某公司Python后端时,这道题作为笔试题之一出现了。今天正好刷到,就和大家分享一下。首先,这道题并不是很难,BFS或者DFS就可以实现。借用一个队列或者栈,设置循环结束的条件为判断队列或栈是否为空。当然,如果你还想搞其他花里胡哨的也可以。需要注意的是树是二叉搜索树,所以搜索树的特性可以优化时间复杂度。父节点的值介于左孩子节点和右孩子节点之间,所以我们每次取出一个节点时,对于其孩子节点是否加入下一次遍历可以做出判断:如果父节点值大于最小值,那其左孩子节点可能也大于最小值;对于最大值亦然。反之
2020-05-25 12:03:37
324
原创 python刷LeetCode 4. 寻找两个正序数组的中位数 暴力挑战hard
python刷LeetCode 4. 寻找两个正序数组的中位数 暴力挑战hard题目要求时间复杂度log n,但我一开始只想到二分排序,所以就nlogn提交试一下,居然通过了,不过排名垫底就是了。。。。。。然后分享一下代码:def sort(li,first,last): if first>=last: return low,high=first,last pivot=li[first] while low<high: whi
2020-05-24 19:00:54
184
原创 Python的self
分享一下对Python的self的理解。水平不高,可能有错。。。1 self是什么self是Python类方法的第一个变量,是约定俗成的,一般写self,也可以写one,your name等。2 什么时候要写self
2020-05-13 08:56:40
128
原创 小白需要知道的git命令
小白需要知道的Git命令git remote addgit remote -vgit add file_name/git commit -m “备注”git pullgit push origin master
2020-05-09 01:10:15
132
原创 Python刷题LeetCode,山脉数组
1095.山脉数组# """# This is MountainArray's API interface.# You should not implement it, or speculate about its implementation# """#class MountainArray:# def get(self, index: int) -> int:# ...
2020-05-03 17:09:59
150
原创 递归调用的出口问题(return None问题)
递归调用的出口问题(return None问题)最近刷LeetCode山脉数组(这道题的解法我们下一篇讨论)一题时,遇到了这个问题。如下的写法会导致返回值为None,从print的mid来看,mid是被正确的找到的。def search(alist, first, last, item): mid = (first + last) // 2 print(mid) if ali...
2020-05-02 18:45:12
1057
1
原创 java和Python语言刷LeetCode日记 欢迎讨论
java和Python刷LeetCode日记33. 搜索旋转排序数组Pythonjava33. 搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间...
2020-04-28 09:43:15
236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人