自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fanfan999的博客

菜鸟那就多花时间准备!大家一起加油哈哈哈!

  • 博客(152)
  • 收藏
  • 关注

原创 解决vagrant下载box过慢问题

vagrant默认是在https://app.vagrantup.com/boxes/search这个仓库里面下载,但是实在是太慢了,用vpn都下不下来解决办法:我们可以去清华的源或者中科大的源去下载你想要的box清华源地址:https://mirror.tuna.tsinghua.edu.cn/中科大源地址:http://mirrors.ustc.edu.cn/举例:我现在我需要下载...

2019-12-05 14:29:40 2968 1

原创 Docker安装mysql时设置密码

运行mysql镜像Docker run -d --restart=unless-stopped -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:latest-d: 表示该进程在后台运行,就不会在窗口输出日志文件了,如果要看日志文件,在之后输入docker logs mysql的容器ID(通过docker ps查看)–restart=ubless...

2019-12-04 02:10:37 1677

原创 查看当前操作系统是ubuntu还是centos还是其他的

查看当前操作系统是ubuntu还是centos1、执行: lsb_release -a2、命令: cat /etc/redhat-release3、命令: cat /etc/issue总结:其实是看有没有某个文件:radhat或centos存在: /etc/redhat-release 这个文件【 命令 cat /etc/redhat-release 】ubuntu存在 : /e...

2019-12-04 02:04:01 1222

原创 修改docker镜像源为阿里源

1. 进入阿里容器镜像服务页面tips: 这个是免费的,放心好了,如果第一次用的话会需要你登录注册一下子阿里云容器镜像加速器申请地址2. 你们要是懒的话,就用我的吧不过我还是建议自己去整一个,万一你不是ubuntu的系统呢是吧哈哈哈哈...

2019-12-02 22:48:40 3816 2

原创 ubuntu更换软件源

#进入源地址cd /etc/apt#备份源文件sudo cp sources.list sources.list.bak#编辑sudo vim /etc/apt/sources.list阿里源deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiversedeb http://mir...

2019-12-01 01:49:32 122

原创 DevOps related concepts

What’s DevOpsDevOps, like agile, has evolved to encompass many different disciplines, but most people will agree on a few things: DevOps is a software development practice or a software development l...

2019-11-05 11:27:38 392

原创 Ubuntu18.4官方安装Nginx教程

其实很简单,但是网上的各式各样,最后还是决定按照官方文档的来,靠谱!安装依赖库更新apt-getsudo apt-get update安装gccsudo apt-get install gcc或安装gcc g++的依赖库sudo apt-get install build-essentialsudo apt-get install libtool安装zlibsudo apt-g...

2019-10-25 15:23:13 995 1

原创 sudo cd报错找不到命令cd

问题描述我想要cd到/etc/docker,但是它给我一个权限不够的错误,然后,我想到使用sudo cd /etc/docker时,它告诉我sudo: cd:找不到命令。于是,郁闷的我就去上网找了下原因。问题分析cd不是一个应用程序而是Linux内建的命令,而sudo仅仅只对应用程序起作用。sudo foo只意味着以root权限运行foo程序所以,sudo cd /etc/docker...

2019-10-22 14:38:51 1438

原创 ubuntu学习

Linux文件目录结构linux是一个多用户操作系统,而windows是一个单用户操作系统单用户操作系统同时只能一个用户操作系统,但是多用户操作系统允许多用户同时操作系统Linux系统中没有C盘,D盘这样的盘符的概念,只有一个根目录/,所有文件都在它下面而多用户就体现在home目录下的文件夹,home目录下面一个文件夹就是一个用户用户登陆进来之后,都是在home目录下的某个文件夹下面,比...

2019-10-22 11:32:33 248

原创 curl,apt-get,wget,yum的区别

sudo 全称是switch user and do something一般来说著名的linux系统基本上分两大类:RedHat系列:Redhat、Centos、Fedora等Debian系列:Debian、Ubuntu等RedHat 系列:常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”包管理工具 yum支持tar包Debian系列常见的安装包格式 de...

2019-10-22 11:31:16 2911

原创 c#入门及.net基础知识

.net,c#,.net framework的关系.net是一个平台.net framework 提供平台开发的东西的运行环境c#是.net平台的一种比较重要的编程语言解决方案,项目,类之间的关系解决方案包括项目项目包括类解决方案就好比是一个公司项目就好比是一个部门类就好比是一些员工解决方案资源管理器在试图里面可以找到一个简单的控制台应用的组成部分using Syste...

2019-10-13 14:07:48 466

原创 Docker基础小案例

Dockerfile是什么Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本构建三步骤编写Dockerfile文件docker builddocker runDockerfile构建过程解析Dockerfile内容基础常识每条指令都必须为大写字母且后面要跟随至少一个参数,例如FROM scratch(这里的scratch就类似于java...

2019-10-12 00:15:58 365

原创 docker数据卷

Docker容器数据卷这个就好比我们取拷贝资料的U盘,主要是为了让数据持久化和共享用的是什么Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据成为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了为了能保存数据在docker中,我们使用卷说白了,有点像我们Redis中的rdb和aof文件能干嘛简单来说,就是为了持久化和数据共享卷就是目录或...

2019-10-07 17:51:48 107

原创 docker镜像

我们运行的时候容器实例,也就是鲸鱼背上的集装箱,每个集装箱都相当于一个精简版的linux系统Docker镜像是什么镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的那些软件,它包含运行某个软件所需的所有内容,包括代码,运行库,环境变量,配置文件等.概念1: UnionFS(联合文件系统)-Docker镜像的基础这是一种分层,轻量级并且高性能的文件系统,它支持对文...

2019-10-04 17:25:27 419

原创 docker常见命令

回顾一下dockerdocker的图标: 大海里有鲸鱼,鲸鱼背上有集装箱大海: 就是我们的宿主机,我这里是windows10鲸鱼: 就是我们的docker集装箱: 就是我们的容器实例,它来自于我们的镜像模板Docker常见命令帮助命令docker version: 查看docker版本信息docker info: 查看docker容器信息docker --help: 查看do...

2019-10-02 21:56:54 183

原创 Docker基本概念

docker是什么?有一种情况: 就是我们在本地跑是正常的,但是我们部署之后就出现跑不起来了,这一般都是因为环境和配置的原因为了解决这个问题,将软件直接带环境安装,也就是说,开发直接将在它的电脑上能正常运行的所有东西直接放到容器中,运维直接操作这个整套东西,就不会出现上面的问题了.Docker理念Dcoker是基于Co语言实现的云开源项目,其主要目标是"Build, Ship an...

2019-10-01 23:41:45 164

原创 jdk1.8 LinkedList

JDK1.8 LinkedList源码构造方法空参就是创建一个空的链表,可以将一个集合作为参数传进来,此时会新建一个空链表,然后把集合中的元素都拷贝过来add()方法第二句new Node()就表示创建一个新节点,节点元素为e,前继节点为l,后继节点为nulladd()方法的返回值为布尔类型,只会返回true;添加的过程就是调用linkLast方法的过程,其中它会先将最后一个...

2019-08-30 15:12:52 350

原创 JDK1.8ArrayList源码

JDK1.8ArrayList源码数组是存储在内存中的一块逻辑上连续的内存,只有相同类型的数据才能放到数组中构造方法无参构造方法: 直接给elementData这个Object数组指向一个空数组.带参构造方法: 如果参数大于0,就根据参数创建数组,参数为0则创建空数组,否则报错带参构造方法: 将集合通过toArray()方法转换为数组传给当前的空的elementData数组,然...

2019-08-30 11:56:06 230

原创 HashMap原理

emmm,这个是我自己写出来自己偶尔看的,大家可能看起来乱七八糟,所以就不建议大家看了JDK1.7的HashMap1.7的时候hashmap底层就是通过数组+链表如何确定key所在的位置呢?首先得到key的hash值,然后再对hash值与数组长度-1进行&运算来确定位置有可能出现多个元素都放在同一个位置,此时就用链表连接,思想就是讲元素添加在头结点,然后将整个链表向下移,让...

2019-08-29 16:53:06 128

原创 spring_2

Spring Bean的作用域singleton: Spring的默认作用域,容器里拥有唯一的Bean实例,适合无状态的Bean.prototype: 针对每个getBean请求, 容器都会创建一个Bean对象,适合有状态的Bean.request: 会为每个Http请求创建一个Bean实例,该作用域只针对web容器有效.session: 会为每个session创建一个Bean实例,该作...

2019-08-08 16:06:24 108

原创 spring_1

这篇博客写得稀烂,大家谨慎观看你了解Spring IOC吗?IOC(Inversion Of Control): 控制反转它是Sprig Core最核心的部分,是Spring家族的基本.IOC是指由spring来负责控制对象的生命周期和对象间的关系.IOC不能算是一种技术,应该当做一种思想.要了解IOC,我们需要先了解一下依赖注入(Dependency Injection)DI(...

2019-08-07 17:20:31 110

原创 java基础_3

J.U.C知识点梳理java.util.concurrent包: 提供了并发编程的解决方案, J.U.C包里有两大核心:CAS(compare and swap)是java.util.concurrent.atomic包的基础.AQS(AbstractQueuedSynchronizer)是java.util.concurrent.locks包以及一些常用类比如ReentrantLock等...

2019-08-06 23:08:26 138

原创 java基础_2

集合之List和Set集合之MapHashMaphashmap是非线程安全的,所以效率比较高.Java8之前,hashmap底层是通过数组+链表实现的,如图所示:hashmap没有赋值之前,数组长度默认为16,在该数组中每个位置存储的都是链表的头结点.通过hash(key.hashCode()) % len这个函数来获得要添加的元素在数组中的存放位置.这样子就会有一个问题,有...

2019-08-06 15:28:55 102

原创 java基础_1

java异常java的异常处理机制主要回答了三个问题:What: 即异常类型,回答了什么异常类型会被抛出.Where: 即异常堆栈跟踪,回答了在哪儿抛出的异常.Why: 即异常信息,回答了为什么会抛出该异常.java的异常体系由图可知:Throwable是java异常体系的顶层父类,它有两个子类,分别是Error类和Exception类.而Exception类又包括了Runt...

2019-08-05 18:24:41 92

原创 多线程面试_13

java线程池在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理,如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,这样会大大降低系统的效率,所以,就出现了线程池来重复利用线程.利用位于J.U.C包下面Executors类创建不同的线程池满足不同场景的需求目前该类提供了五种不同的线程池创建方法以满足不同场景下的需求:对于第一...

2019-08-05 16:05:09 150

原创 多线程面试_12

title: 多线程面试_12date: 2019/8/5 13:19:51tags: 多线程面试_12cateories: 面试CAS(Compare and Swap)Java 平台中的锁包括内部锁( Intrinsic Lock )和显式锁 ( Explicit Lock )。内部锁是通过synchronized关键字实现的;显式锁是通过java.concurrent....

2019-08-05 14:02:18 130

原创 多线程面试_11

java内存模型JMMjava内存模型(Java Memory Model,简称JMM) 本身是一种抽象的概念,并不真实存在,它描述的是一组规范或规则,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素的访问方式).同时我们知道,jvm运行程序的实体是线程,而每个线程创建时jvm都会为其创建一个工作内存(包括堆栈寄存器,程序计数器,线程控制块)用于存储其私有的数据....

2019-08-04 20:50:06 163

原创 多线程面试_10

ReentrantLock这个东西,emm,我没怎么整明白,所以就没怎么写ReentrantLock(再入锁)java5之前,synchronized是仅有的同步手段,java5开始就提供了ReentrantLock,其语义与synchronized基本相同它位于java.util.concurrent.locks包下和CountDownLatch,Future,Semaphore一样,...

2019-08-04 16:42:23 92

原创 多线程面试_9

synchronized同步锁的四种状态无锁: 就是没有加入锁嘛,这个就很好理解了,也就是说此时的目标共享数据没有被任何一个线程占用.偏向锁轻量级锁重量级锁锁膨胀方向: 无锁–>偏向锁–>轻量级锁–>重量级锁偏向锁大多数情况下,锁不存在多线程竞争,总是由同一线程多次获得,因此,为了减少同一线程获取锁的代价而引入了偏向锁.核心思想:如果一个线程获得了锁,那么...

2019-08-04 15:31:27 125

原创 多线程面试_8

synchronized的底层实现原理实现synchronoized的基础java对象头Monitorhotspot环境下对象在内存中的布局主要分为三块区域:对象头实例数据对齐填充对象头synchronized使用的锁对象都是存储在对象头里的.对象头的结构由图可知:Class Metadata Address是对象指向其的类元数据的指针,JVM通过这个指针来...

2019-08-04 15:03:27 106

原创 多线程面试_7

线程状态及状态之间的转换如图:线程安全问题主要诱因:存在共享数据(也叫临界资源).存在多条线程共同操作这些共享数据.解决办法:同一时刻有且仅有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作.此时便有了互斥锁.互斥锁该锁能达到互斥访问的目的,即当一个共享数据被当前正在操作的线程加上互斥锁之后,在同一时刻,其他线程只能处于等待的状态,直到当前...

2019-08-03 20:08:24 83

原创 多线程面试_6

Object的notify和notifyAll方法我们除了给线程设置等待时间让系统自动唤醒线程外,我们还可以通过notify或者notifyAll手动唤醒线程.案例演示:public class WaitSleepTest { public static void main(String[] args) { final Object lock = new Object...

2019-08-03 15:45:05 87

原创 多线程面试_5

sleep和wait的区别sleep()是Thread类的方法,而wait是Object类中定义的方法.sleep()方法在任何地方都可以使用,而wait方法只能在synchronized(用于加锁)方法或者synchronized块中使用.Thread.sleep()只会让出cpu,不会导致锁行为的改变(可以理解为不会让资源),即如果当前线程是拥有锁的,那么该线程对象调用sleep()方...

2019-08-03 14:20:41 84

原创 多线程面试_4

线程的状态从Thread的源码里我们可以看到线程的状态一共有如下六种:新建(New): 线程创建后尚未启动的线程的状态,即new了一个线程对象但是还没有调用start()方法时处于的状态.运行Runnable: 即线程对象调用了start()方法后的线程所处的状态,包含Running和Ready两个子状态,即处在此状态的线程,有可能正在执行,也有可能正在等待CPU为它分配执行时间,处于R...

2019-08-03 13:44:12 83

原创 多线程面试_3

如何给run()方法传参我们都知道,跟线程相关的业务逻辑都是要放在run()方法里去执行的,而run()方法是没有参数也没有返回值的,那么应该如何给run()方法传参呢?构造函数传参: 这就是我上一篇博客里利用Runnable接口实现多线程的例子.成员变量传参: 这个就比如我在run()方法里使用了一个全局变量,我们通过给全局变量赋值然后在run方法中使用该值,就起到了传参的效果,就是我上...

2019-08-02 18:55:13 86

原创 多线程面试_2

Thread中start和run方法的区别调用start()方法会创建一个新的子线程并启动.run()方法只是Thread的一个普通方法的调用,还是在主线程内执行.例子:通过start()方法启动线程时通过查看start()方法的源码我们知道,它是通过一个native方法start0() 实现的,而start0()源码中的确创建了一个新的线程.通过run()方法启动线程时Th...

2019-08-02 15:55:33 150

原创 多线程面试_1

进程和线程的区别进程:指的是 一个用户程序在同一数据集合上的一次执行过程,它是资源分配的基本单位,可以理解为它就是运行中的一个程序.线程:线程是进程上的一个实体,也是真正的执行体,它是系统调度的基本单位.进程和线程的由来:进程和线程的区别:正如上面所说:进程是资源分配的最小单位,线程是CPU调度的最小单位.所有与进程相关的资源,都被记录在PCB(Process Control B...

2019-08-02 14:07:13 108

原创 JVM面试_9

Object中的finalize()方法的作用是否与C++的析构函数作用相同它与C++的析构函数不同,析构函数调用时机是确定的,即对象离开作用域后就会被delete掉,而finalize()方法调用时机是不确定的.当垃圾回收器要宣告一个对象死亡时,要经过至少两次标记过程,如果对象在经过可达性算法分析后发现其没有与GC Roots相连的引用链,它就会第一次被标记,并且判断是否执行finaliz...

2019-08-01 20:24:57 92

原创 JVM面试_8

老年代常见的垃圾收集器Serial Old收集器通过命令UseSerialOldGC可以使老年代使用该收集器回收垃圾,它使用的是标记-整理算法.单线程收集,进行垃圾收集时,必须暂停所有的工作线程.简单高效,Client模式下默认的老年代收集器Parallel Old收集器通过命令UseParallelOldGC可以使老年代使用该收集器回收垃圾,它使用的是标记-整理算法.多线...

2019-08-01 19:12:39 98

原创 JVM面试_7

Stop-the-World这个单词就是说,JVM由于要执行GC而停止了应用程序的执行,即除了GC的线程执行外,所有线程都处于等待状态,并且这种情况在任何一种GC算法中都会发生.多数GC优化就是通过减少Stop-the-World发生的时间来提高程序性能.Safepoint安全点形象的说: jvm垃圾回收就好比是宝洁阿姨在打扫卫生,如果一边打扫,一边有人扔垃圾可咋整?为了不让这种情况发生...

2019-08-01 18:18:48 82

空空如也

空空如也

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

TA关注的人

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