目录 一、简介 二、并发编程的3个基本概念 三、锁的互斥和可见性 四、Java的内存模型JMM以及共享变量的可见性 五、volatile变量的特性 六、volatile不适用的场景 七、volatile原理 八、单例模式的双重锁为什么要加volatile 一、简介 volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volati…

2021年4月1日 0条评论 18点热度 阅读全文

“您好,我是XX快递,您有一个包裹等待签收”,快递员总是会给我们带来惊喜。 敬业的快递小哥将包裹安全送达到你的手中,然后启程去送下一份包裹,每一天都走遍无数的大街小巷。 忘忧今天与大家聊的话题,就是快递员走过的路。 什么是图 在数据结构中,树是一种一对多(节点与节点)的非线性数据结构,节点间有明确的层级关系,而图则是一种多对多(顶点与顶点)的非线性数据结构,顶点之间不存在父子关系。 有向图和无向图 图按照顶点之间的连通性,可分为有向图和无向图。 无向图:指的是顶点之间的连接没有方向,如快递小哥的路线图中,快递小哥既…

2021年4月1日 0条评论 21点热度 阅读全文

遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网站放出来,让我们一起爽! 刷题,是这个世界上最有意思的事儿! 当然刷题不能乱爽,你要知道刷题要干嘛,是找工作面试、研究生复试机…

2021年4月1日 0条评论 8点热度 阅读全文

动态规划三:三角形最小路径和 题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。 方法一:递归穷举 public static int minimumTotal(List<List<Integer&…

2021年4月1日 0条评论 12点热度 阅读全文

一些python的常用技巧,学会了非常方便实现一些基本功能 强推 9.全排列 12.异或 15.互换矩阵行列 内容导航: 1. 哈希表 定义: 2. map函数 3. ord和chr 4. 范围限制的32字节的字符串数字一行代码输出 5. 二维矩阵的转置(运用zip的一行代码) 6. 二维矩阵的快速初始化 7. 二维矩阵的快速list化 8. 双向队列的默认实现 9. 快速全排列罗列 10. 找到字典中值最大的键 11. 统计list中数出现的数量 12. 异或的一些骚操作 13. 关于递归的理解(知乎转载) 14…

2021年4月1日 0条评论 14点热度 阅读全文

有些链接可能没更新,都收录在 Github # Title C++ Java Python Difficulty CSDN 1 Two Sum C++ Java Python Easy CSDN 2 Add Two Numbers C++ Java Medium CSDN 3 Longest Substring Without Repeating Characters C++ Medium CSDN 4 Median of Two Sorted Arrays C++ Hard CSDN 5 Longest Pali…

2021年4月1日 0条评论 11点热度 阅读全文

从头到尾彻底理解KMP   作者:July 时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。后收录于新书《编程之法:面试和算法心得》第4.4节中。   1. 引言     本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修改本文。     然近期因开了个算法班,班上专…

2021年4月1日 0条评论 10点热度 阅读全文

二维数组中的查找 替换空格 从尾到头打印链表 重建二叉树 用两个栈实现一个队列 旋转数组的最小数字 斐波那契数列 跳台阶 变态跳台阶 矩形覆盖 二进制中1的个数 数值的整数次方 调整数组顺序使奇数位于偶数前面 链表中倒数第k个节点 反转链表 合并两个有序的链表 树的子结构 二叉树的镜像 顺时针打印矩阵 包含min函数的栈 栈的压入弹出序列 二叉树层序遍历 二叉树的后序遍历序列 二叉树中和为某一值得路径 复杂链表的复制 二叉树与双向链表 字符串的排列 数组中出现次数超过一半的数字 最小的K个数 连续子数组的最大和 从…

2021年4月1日 0条评论 11点热度 阅读全文

最近做了LeetCode的数据库部分,并发布到我的博客中,现把数据库部分的十九道题目汇总在这儿,方便大家查看,后续【LeetCode】数据库部分有更新,我也会抽时间更新更多的题目及答案。其中有些题目的讲解比较简单,可能对有基础的人来说看起来比较轻松,希望大家能够给我提意见,我会一一更改。对于看不太明白的同学,或者没有想通的同学,也可以找我询问,我在空余时间会仔细讲解,谢谢! 下面是【LeetCode】数据库部分的汇总连接: 【LeetCode】175.组合两个表 【LeetCode】176.第二高的薪水 【Leet…

2021年4月1日 0条评论 20点热度 阅读全文

学习原因: 爬虫是一门有趣的技术,它可以让我们感受到程序的魅力,给我们带来视觉冲击感和成就感,可以极大地提高我们对编程的学习兴趣。 —————— 愿你我,都能: 遵循君子协议 合理使用技术 提高学习兴趣 一. 君子协议 为什么每次被抓的都有你~ 我们应该自觉遵守君子协议(爬虫协议的俗称),掌握爬虫的技术。 在对应网址之后增加 /robots.txt, 即可查看爬虫协议,知道哪些页面是不可爬取的,爬虫协议具体内容可自行百度了解。 例如: https://www.baidu.com/robots.txt 二. 用户代理…

2021年4月1日 0条评论 12点热度 阅读全文