摘要:
基础命令 https://yeasy.gitbook.io/docker_practice/data_management/volume // 容器命令 1. docker command --help 查看对应命令的用法 2. docker ps -a 查看所有docker进程(无论是否在运行) 阅读全文
摘要:
从ReentrantLock到AQS的分析 ReentrantLock的主要方法: 1、lock():获取锁,没获取到会阻塞(Sync定义的抽象方法) 2、unLock():释放锁(ReentrantLock定义的方法) 3、tryLock():内部调用nonfairTryAcquire(1)以非公 阅读全文
摘要:
java.exe至少有三个线程:一个main()主线程,一个GC线程(守护线程),一个异常处理线程 一、创建多线程的三种方式 1、通过继承Thread类(Thread实现了Runnable接口),重写run()方法; 2、通过实现Runnable接口的run()方法; 3、通过实现Callable接 阅读全文
摘要:
单向链表: 双向链表: 单向链表的一些理解: 通过定义一个节点类Node来表示链表结点,每个结点是这个类的一个对象 这个类包括一个Node类型的属性next用来保存下一个节点的地址,包括一个属性data用来保存这个节点的数据 如果这个链表是无环的,则最后一个节点的next为null 下面是单向链表的 阅读全文
摘要:
问题:如何找到一串数据中最大的M个数或者最小的M个数? 答:可以构造一个包含M个数的堆或者直接将这串数据构造成一个堆 大根堆:父节点大于等于两个子节点,可以使用数组构造堆, 1、从下标为1的位置开始存储;第k个位置的父节点:k/2,子节点位置: 2k 和 2k+1 2、从下标为0的位置开始存储,第k 阅读全文
摘要:
leetcode 总结 1.冒泡排序 # 冒泡排序;对相邻的进行比较,把大的往后放,第一轮循环下来可以找到最大的,时间复杂度为O(n^2) def bubble_sort(arr): for i in range(len(arr)): for j in range(len(arr)-1-i): if 阅读全文
摘要:
顺序查找的时间复杂度最糟为O(n),而二分查找的时间复杂度为O(log n)1、非递归 def binary_search(arr, item): low = 0 high = len(arr)-1 while low<=high: # 当左指针大于右指针的时候,则说明没找到,结束循环 mid = 阅读全文
摘要:
满二叉树:除叶子节点外,每个节点都有两个子节点 完全二叉树:叶子节点都在最底下两层,并且最后一层的叶子节点都靠左排列,除了最后一层,其它层的每个节点的子节点个数都要为2 完全二叉树有一个好处就是可以直接用数组存储,不需要额外的空间来存储左右叶子结点的引用; 平衡二叉树:左右子树的高度差小于等于1 二 阅读全文
摘要:
leetcode题源:实现strStr() KMP算法的讲解 给定一个text字符串,和一个pattern字符串,找出pattern字符串在text字符串中开始的位置,如果不能匹配到,则返回-1; 在使用普通的双指针进行匹配时,如果匹配失败,则text指针要回到匹配开始位置的下一位置再进行下一轮匹配 阅读全文
摘要:
1、Alias采样 leetcode 528:按权重随机选择 学习来源: 1、时间复杂度O(1)的离散采样算法——Alias method 2、Alias采样算法 程序实现 import numpy as np def alias_setup(probs): K = len(probs) q = n 阅读全文