自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 JAVA多态

编译时多态编译期间决定目标方法通过overloading重载实现方法名相同,参数不同运行时多态运行期间决定目标方法同名同参通过overriding和继承实现JVM决定目标方法(主要通过方法表)运行时多态原理:https://www.cnblogs.com/kaleidoscope/p/9790766.html...

2021-12-04 17:55:53 118

原创 docker 运行出错 Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/007

docker 运行出错 Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/007在某次关机之后,开机后启动docker容器时报错误Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/007018df729636dd7c3d22ea683d13b6f5f0657b7c2

2021-11-29 17:50:00 5437 1

原创 BIO-NIO-AIO笔记

1. NIO-BIO-AIO1.1 介绍​ 在Java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或者在高并发下的通信场景下都需要用到网络通信相关的技术,对于一些经验丰富的程序员来说,Java早期的网络通信架构存在一些缺陷,其中最令人恼火的是基于性能低下的同步阻塞式的I/O通信(BIO),随着互联网开发下通信性能的高要求,Java在2002年开始支持了非阻塞式的I/O通信技术(NIO)。大多数读者在学习网络通信相关技术的时候,都只是接触到零碎的通信技术点,没有完

2021-11-28 18:11:36 430

原创 全面解析ThreadLocal

ThreadLocal全面解析1. ThreadLocal介绍1.1 官方介绍从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。我们可以得知 ThreadLocal 的作用是:提供线程内的局部变量,不同的线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一

2021-11-26 20:22:07 144

原创 共享模型之无锁

1. 问题提出有如下需求,保证 account.withdraw 取款方法的线程安全package cn.itcast;import java.util.ArrayList;import java.util.List;interface Account { // 获取余额 Integer getBalance(); // 取款 void withdraw(Integer amount); /** * 方法内会启动 1000 个线程,每个线程做 -10 元 的操作 * 如果初始余额为

2021-11-10 21:59:33 177

原创 共享模型之内存

目录1.1 JAVA内存模型1.2 可见性退不出的循环解决方法可见性 vs 原子性1.3 CPU缓存结构原理1.3.1 CPU 缓存结构1.3.2 CPU 缓存读1.3.3 CPU 缓存一致性1.3.4 内存屏障1.4 有序性1.4.1 指令级并行原理1. 名词2. 鱼罐头的故事3. 指令重排序优化4. 支持流水线的处理器5. SuperScalar 处理器1.4.2 诡异的结果1.4.3 volatile 原理1. 如何保证可见性2. 如何保证有序性3. double-checked locking 问题

2021-11-02 21:17:36 103

原创 共享模型之管程

1.1共享带来的问题java的体现两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗?static int counter = 0;public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> { for (int i = 0; i < 5000; i++) { counter++; } },

2021-10-30 17:31:47 237

原创 JUC笔记

1.1进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)线程一个进程之内可以分为一到多个线程。一个线程就

2021-10-25 23:11:58 109

原创 Linux笔记

网络连接三种模式1.桥接模式虚拟系统的ip和主机系统ip在同一个网段下,可以直接和外部系统通讯,但是容易造成ip冲突VMware 桥接模式  VMware桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络(例如图中所示的局域网和Internet,下同)。简而言之,这就好像在上图所示的局域网中添加了一台新的、独立的计算机一样。因此,虚拟机也会占用局域网中的一个IP地址,并且可以和其他终端进行相互访问。桥接模

2021-10-25 21:28:01 165

原创 Linux中的shell是什么

一、shell的含义首先shell的英文含义是“壳”;它是相对于内核来说的,因为它是建立在内核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核。Linux中的shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息;二、shell在linux中存在的形式由于Linux不同于Windows,Linux是内核与界面分离的,它可以脱离图形界面而单独运行,同样也可以在内核的基础上运行图形化的桌面。这样,在Linux系统中,就出

2021-10-25 21:15:27 1429

原创 mysql查询一个时间段的数据

1. TO_DAYS(date) 给定一个日期date,返回一个日期号码(自0年以来的天数)。2.SELECT NOW(),CURDATE(),CURTIME()NOW()CURDATE()CURTIME()2021-10-22 21:59:572021-10-2221:59:57CURDATE() 函数返回当前的日期。CURTIME()函数返回当前的时间。NOW() 函数返回当前的日期和时间。DATE_SUB(date,INTERVAL expr type),DA

2021-10-22 22:41:16 1054

原创 Hashtable中的rehash()方法

protected void rehash() { int oldCapacity = table.length; Entry<?,?>[] oldMap = table; // overflow-conscious code int newCapacity = (oldCapacity << 1) + 1;//扩容策略:原容量扩大两倍+1 if (newCapacity - MAX_ARRAY_SIZ

2021-07-16 13:06:59 273

原创 Hashtable中的get(key)方法,为什么进行hash & 0x7FFFFFFF

public synchronized V get(Object key) { Entry<?,?> tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; // 为啥要把hash值和0x7FFFFFFF做一次按位与操作呢, // 主要是为了保证得到的index的第一位为0,也就是为了得到一个正数。

2021-07-16 12:25:04 598

原创 HashMap中的迭代器

abstract class HashIterator { Node<K,V> next; // next entry to return Node<K,V> current; // current entry int expectedModCount; // for fast-fail 记录修改次数,多线程引起两次修改次数不同将抛出异常 int index; // cur

2021-07-16 11:15:27 536

原创 JDK1.8源码 resize()解析

final HashMap.Node<K,V>[] resize() { HashMap.Node<K,V>[] oldTab = table; int oldCap = (oldTab == null) ? 0 : oldTab.length; int oldThr = threshold; //threshold在table未初始化时存储的是构造方法中tableSizeFor(initialCapacity)的值,如果未带参数ini

2021-07-14 13:21:32 180

原创 Jdk1.8-HashMap put() 方法tab[i = (n - 1) & hash] 解惑

读过HashMap源码的同学对下面这段应该都不陌生,之前博主也读过,但是只是浅尝即止,这次有时间看了一下,发现put方法有一段不是很清楚,就是if ((p = tab[i = (n - 1) & hash]) == null) tab[i] = newNode(hash, key, value, null);这段代码,其中获取了当前table数组的最大下标与hash(key)进行按位与操作,上网也查了一下,没有找到相关的,稍后自己回忆了一下按位与操作,其实很容易懂:就是最简单的如果没有Hash冲

2021-07-13 17:17:35 332

原创 HashMap中的tableSizeFor(int cap)

static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; return (n < 0) ? 1 : (n

2021-07-13 16:57:12 303

原创 IntelliJ IDEA 各种搜索功能

1、Ctrl+N按名字搜索类相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件,就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配,而且如果能匹配的自己写的类,优先匹配自己写的类,甚至不是自己写的类也能搜索。2、Ctrl+Shift+N按文件名搜索文件同搜索类类似,只不过可以匹配所有类型的文件了。3、Ctrl+H查看类的继承关系,例如HashMap的父类是AbstractMap,子类则有一大堆。4、Ctrl+Alt+B查看子类方法实现

2021-05-25 14:16:47 2341

原创 varchar 和 varchar2的区别

varchar是标准sql里的,varchar2是oracle所提供的独有的数据类型,前者对于汉字占两个字节,对于数字和英文字符占一个字节,占的内存小,后者一般情况下把所有字符都占两个字节处理。

2021-05-13 19:10:03 302

原创 SpringMvc中/和/*的区别

当我们配置springMvc时,在url-pattern中有时会配置/有时是/*,那么这两者又有什么区别呢?我们来看一下:/:代表拦截除后缀名以外的路径,即它只拦截路径,不拦截带后缀的url,若请求为/user/login.jsp,jsp不会进入DispatcherServlet类,即不会被过滤。/*:代表拦截所有路径和后缀,会匹配所有的url,若请求为/user/login.jsp,会出现jsp进入DispatcherServlet类,导致找不到对应的controller,所以报404错误。当然尽管

2021-03-27 15:55:00 648

转载 MySQL数据类型

MySQL中的数据类型大体分为三大类,数值类型,时间日期类型以及字符串类型。下面将对这三种类型进行详细的介绍。一、数值类型MySQL 支持所有标准SQL 中的数值类型,其中包括严格数值类型(INTEGER、SMALLINT、DECIMAL 和NUMERIC),以及近似数值数据类型(FLOAT、REAL 和DOUBLE PRECISION),并在标准SQL的基础上扩展增加了 TINYINT、MEDIUMINT 和BIGINT 这3 种长度不同的整型和存放位数据的BIT类型。在日常建表定义当中,整型中最常用

2021-03-27 15:52:28 346

原创 mysql区分大小写

当我们配置springMvc时,在url-pattern中有时会配置/有时是/*,那么这两者又有什么区别呢?我们来看一下:/:代表拦截除后缀名以外的路径,即它只拦截路径,不拦截带后缀的url,若请求为/user/login.jsp,jsp不会进入DispatcherServlet类,即不会被过滤。/*:代表拦截所有路径和后缀,会匹配所有的url,若请求为/user/login.jsp,会出现jsp进入DispatcherServlet类,导致找不到对应的controller,所以报404错误。.

2021-03-27 13:09:49 54

原创 HTML中导航栏title前面小图标的实现

做一个比较正规的网站,需要在标题栏前面加上相应的小图标,效果大致如下:只需要在html文件中的<head></head>标签中加上:<link rel="shortcut icon" sizes="48x48" href="https://rs-cn.puma.com/casaba_plus_assets/2020.10.30-1/static/favicon.541e032ab6f58b5f63ee4432e4c241ab.ico">注意:图片的后缀名要是 .

2020-11-11 13:22:43 1970

原创 CSS3中的transition属性详解

一、语法transition: property duration timing-function delaytransition属性是个复合属性,她包括以下几个子属性:transition-property :规定设置过渡效果的css属性名称transition-duration :规定完成过渡效果需要多少秒或毫秒transition-timing-function :指定过渡函数,规定速度效果的速度曲线transition-delay :指定开始出现的延迟时间默认值分别为:all 0 ea

2020-11-06 11:09:16 2288

转载 CSS3 :nth-child(n)用法

CSS3 :nth-child(n)用法:nth-child(n) ---->选中某个元素,该元素必须是某个父元素下的第n个子元素;p:nth-child(n) ---->选中p元素,且该p元素必须是某个父元素下的第n个子元素注意:n是从1开始的如下代码,p:nth-child(1),只会选中第二个div中第一个子元素p;不会选中第一个div中的第一个p,因为第一个div中第一p元素不是第一个子元素<style> p:nth-child(1){

2020-11-05 11:58:34 7115 1

原创 python中assert关键字的作用

assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃。什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。一般来说我们可以用Ta再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。`x,y,z...

2020-04-29 16:45:22 218

空空如也

空空如也

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

TA关注的人

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