自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 java并发,JVM相关知识点(详细,脑图形式)

知识点脑图地址: https://github.com/mantou22/java

2019-08-26 12:41:56 35 0

原创 linux知识之实操篇 实用指令

指定运行级别 运行级别说明: 0:关机 1:单用户【找回丢失密码】 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件 /etc/inittab 的 id:5:i...

2019-10-28 16:15:31 42 0

原创 linux知识之实操篇 网络配置(ip和网关,以虚拟机为例)

Linux 网络配置原理图(含虚拟机) 目前我们的网络配置采用的是 NAT。 我们在windows上面装了一个虚拟机,然后在虚拟机上面安装了centos7系统, 他们之间是如何实现通讯的呢?流程图如下: 1.windows和虚拟机是通过,虚拟网卡进行通讯的 2.windows和我们外界是...

2019-10-26 15:54:22 48 0

原创 linux知识之实操篇 组管理和权限管理

1.Linux 组基本介绍 在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。 所有者 所在组 其它组 改变用户所在的组 1.1文件/目录 所有者 一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。 ...

2019-10-25 16:33:18 68 0

原创 java并发之集合类不安全问题深入分析

一、List public static void listNotSafe(){ List<String> list = new ArrayList<>(); //new ArrayList<>(); 低层是new的数组 ...

2019-09-19 15:16:39 41 0

原创 synchronized原理 深入分析

本博客主要是对Java并发中synchronized关键字进行较为深入的分析,这些知识点结合博主对synchronized的个人理解以及相关的书籍的讲解(在结尾参考资料),如有误处,欢迎留言。 1.synchronized的三种应用方式 Java中每一个对象都可以作为锁,这是synchr...

2019-09-17 21:19:22 96 0

原创 java并发、自旋CAS、原子类 atomicInteger(深入理解)

目录 1.什么是CAS? ---比较并交换(compare and swap) 1.1 AtomicInteger是什么? 1.2 AtomicInteger 小Demo 2.CAS的底层原理 2.1 一句话解释:Unsafe类和自旋锁 2.2Unsafe类 2.3自旋锁 3.CA...

2019-09-09 17:33:24 152 0

原创 volatile 深入理解(JMM内存模型)

目录 1.什么是volatile? 2.JMM内存模型 2.1JMM是什么 2.2JMM中封装的原子操作 3.volatile如何保证可见性 3.1什么是可见性?---- 一个线程对共享变量的修改,能够及时的被其他线程看到 3.2为什么会存在可见性? -----...

2019-09-09 16:55:32 85 0

原创 排序算法总结(冒泡、选择、插入、希尔、快速、归并、基数、堆排序)

1.冒泡排序 * 基本思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值 * 若发现逆序则交换,使值较大的元素逐渐从前向后移,就像水底的气泡一样逐渐向上冒 * 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,那说明序列有序, * 因此...

2019-09-02 22:43:35 34 0

原创 java 强引用、 软引用、 弱引用、 虚引用分别是什么?

1.整体架构: 2.强引用 当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收。 java最常见的普通对象引用, Object object = new Object();//这样定义默认就是强引用 3.软引用 内存足够的前提下,不...

2019-08-28 15:55:35 45 0

原创 JVM 垃圾回收中的垃圾回收算法以及垃圾回收器总结

首先,我们都知道,基本上所有对象以及一部分数组都存放在我们的堆里面,如果堆内存用完,就会产生OOM(OutOfMemory),java给我们自动集成了垃圾回收器(System.gc),今天就来总结一下,JVM当中的4中垃圾回收算法,以及7中垃圾回收器。 ps: 垃圾回收算法和垃圾回收器的关系,垃圾...

2019-08-28 12:31:59 185 0

原创 TOMCAT原理详解及请求过程

Tomcat:   Tomcat是一个JSP/Servlet容器。 其作为Servlet容器,有三种工作模式: 1、独立的Servlet容器、 2、进程内的Servlet容器 3、进程外的Servlet容器。 Tomcat目录:   |---...

2019-08-26 11:31:29 193 0

原创 一次完整的HTTP请求过程(深入分析)

前一段时间,面试问到了这个问题,感觉自己回答的不是很好, 当时我的回答是 1.域名解析(这个说了一下域名解析的过程) ,解析出对应IP地址 2.解析成功之后,发起TCP三次握手建立连接 3.建立连接后发起HTTPS请求 4.服务器响应https请求,浏览器得到html代码 5.浏览器解析html...

2019-08-22 11:09:58 940 0

原创 ConcurrentHashMap工作原理分析(深入理解)

本文主要是总结ConcurrentHashMap的一些知识点,以及自己的一些理解。如有理解不当请大家指出。谢谢!! 1.为什么会有ConcurrentHashMap 1.首先,读过HashMap源码我们应该清楚,HashMap在扩容(resize)的时候(有的地方时说再put操作,其实是...

2019-08-21 22:35:35 52 0

原创 (详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium)

需求:最近有一个需求,需要将163邮箱收件箱里面的所有邮件的内容全部copy下来,整理到一个word里面,不多也就28页的邮件(不要问我为什么有这需求,不告诉你),自己手动去ctrl+ cv 的话,估计要搞吐。然后就想能不能用python的爬虫来实现,虽然过程比较苦(后期改bug改的要吐了)。但是...

2019-06-27 17:05:42 2113 4

原创 11. 盛最多水的容器---LeetCode----(24)

给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且n的值至少为 2。 图中垂直线代表输入数...

2019-06-05 16:22:35 57 0

原创 小结

之前4月份说,恢复leetcode刷题,但是后面遇到改文章的事情,然后又把这件事情耽搁了,经历了3个月文章最终版本搞定,再投阶段,现在必须恢复leetcode刷题。工作日每日一刷。 ...

2019-06-05 16:13:18 49 0

原创 恢复

没想到,停更一周的leetcode刷题,居然因为改文章的事,停了3周,3周一下就过去了。现在基本文章大头搞定。所以恢复每日一刷 leetcode

2019-04-08 19:05:11 28 0

原创 小插曲-----本周停更

本周由于写文章,集中精力,所以暂停一周leetcode刷题更新。

2019-03-18 21:31:02 50 0

原创 21.合并两个有序链表---LeetCode----(23)

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 首先,因为之前不是很懂python里链表这种表示方...

2019-03-18 21:15:00 40 0

原创 7. 整数反转---LeetCode----(23)

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数...

2019-03-16 16:39:55 35 0

原创 26.删除排序数组中的重复项---LeetCode----(22)

由于今天,写文章,没有太多时间写code,所以选了一道简单题来练练手。 题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1: ...

2019-03-15 00:06:41 37 0

原创 简化路径---LeetCode----(21)

以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝...

2019-03-13 15:04:11 179 0

原创 接雨水---LeetCode----(20)--对撞指针法和单调栈法

给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。感谢 Marcos贡献此图。 示例: 输入: [0...

2019-03-12 21:22:08 292 0

原创 接雨水---LeetCode----(20)--简单法

给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。感谢 Marcos贡献此图。 示例: 输入: [0...

2019-03-12 20:11:39 88 0

原创 接雨水---LeetCode----(20)--左右夹逼法

给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。感谢 Marcos贡献此图。 示例: 输入: [0...

2019-03-08 16:10:24 154 0

原创 移掉K位数字---LeetCode----(19)

给定一个以字符串表示的非负整数num,移除这个数中的k位数字,使得剩下的数字最小。 注意: num的长度小于 10002 且≥k。 num不会包含任何前导零。 示例 1 : 输入: num = "1432219", k = 3 输出: "1219"...

2019-03-07 11:30:08 192 0

原创 比较含退格的字符串---LeetCode----(18)

给定S和T两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。#代表退格字符。 示例 1: 输入:S = "ab#c", T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。 示例 2: ...

2019-03-06 16:43:00 33 0

原创 括号的分数---LeetCode----(17)

给定一个平衡括号字符串S,按下述规则计算该字符串的分数: ()得 1 分。 AB得A + B分,其中 A 和 B 是平衡括号字符串。 (A)得2 * A分,其中 A 是平衡括号字符串。 示例 1: 输入: "()" 输出: 1 示例 2: 输入: &quo...

2019-03-04 22:32:17 188 0

原创 leetcode-------栈相关的简单4题---------------(16)

首先,我们将栈相关的,难度为简单的4道题,一起做了,然后汇总成博客的形式。一起练一波,过完简单的题目之后,然后我们再去过中等的题目。 232.用栈实现队列 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek()...

2019-03-01 15:59:27 95 0

原创 用队列实现栈---LeetCode----(15)

使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是push to back,peek/pop from front,size,...

2019-02-28 22:37:17 34 0

原创 最小栈---LeetCode----(14)

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: MinStack minSta...

2019-02-27 16:51:53 32 0

原创 实现strStr()---LeetCode----(13)

实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1。 示例 1: 输入: haystack = "hello"...

2019-02-25 16:04:22 38 0

原创 有效的括号---LeetCode----(12)

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的...

2019-02-22 22:06:25 43 0

原创 电话号码的字母组合---LeetCode----(11)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af"...

2019-02-22 11:15:07 149 0

原创 Z 字形变换---LeetCode----(10)

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从...

2019-02-20 15:18:50 41 0

原创 无重复字符的最长子串----LeetCode----(9)

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb"...

2019-02-19 18:44:49 33 0

原创 两数相加----LeetCode----(8)

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -...

2019-02-14 22:17:59 42 0

原创 最接近的三数之和----LeetCode----(7)

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target ...

2019-01-31 21:26:01 41 0

原创 三数之和----LeetCode----(6)

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求...

2019-01-31 21:23:20 37 0

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