自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 阿林和阿木辞职了。

文章目录前言1.阿林和阿木2.散伙饭3.面试前言  以前总以为来日方长是一个很遥远的东西,现在才知道来日方长,就是说以后的人生路还很长,但是一路同行的人和景不是一成不变的。1.阿林和阿木  阿林是我们的组长,组长在我刚来的时候就给了我一个下马威,在一次汇报时,阿林向领导指出了我在代码中犯下的低级错误,我当时很不理解,为什么这么点小事也要打报告?我明明在升级之前测试的时候就解决掉了呀?!为此,我在心里骂了他好几次。之后的工作虽然有条不紊的进行着,但是我还是觉得他是个傻逼。后来,我有了其他的任务,阿林对

2021-05-27 22:54:47 253 2

原创 什么是微服务、分布式?

文章目录前言1.什么是微服务?2.什么是分布式?3.Spring Cloud是个毛?4.Spring Cloud Alibaba是个毛?前言  盼望着,盼望着,春天来了。万物复苏,我也该从安逸的工作和生活中苏醒了。机会总是留给有准备的人,我也该成为一个时刻能抓住机会的“有准备的人”。从今天起,开始学习微服务,复习/补习基础知识吧!1.什么是微服务?  微服务是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用

2021-03-29 10:44:44 5435 1

原创 经久不衰的远古时代产物——WebService。

文章目录前言1.什么是WebService?2.WebService原理3.WebService怎么用?前言  最近在对接一个老项目,项目架构特别杀币,就不细说了。但是不得不说的是,接口对接用的WebService。我以为我逃过了上次的WebService测试,就不用解除它了,但是我没有预判到接口对接在这里等着我呢。我明白,那些夏天就像青春一样回不来,也不会再对谁满怀期待。1.什么是WebService?  简单来说,WebService是一个跨平台、跨语言的web程序。可使用开放的XML标准来描述

2021-01-06 21:37:39 350 1

原创 JDK8新特性。

文章目录前言1.接口的默认实现2.Lambda 表达式前言  之前面试好几次都问JDK8新特性了解不?答:会用,巴拉巴拉。后来一想,也是,现在都JDK15了,连JDK8新特性都做不到张口就来确实是有点辣鸡哈。1.接口的默认实现  Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字就行啦!  接口Demo:public interface TestInterface { public void test(); public default vo

2020-11-23 21:04:01 109 1

原创 Mybatis-Plus从入门到放弃。

1.主键策略  //@TableId(type = IdType.AUTO)//数据库自增 依赖数据库  //@TableId(type = IdType.INPUT)//用户输入ID(该类型可以通过自己注册填充插件进行填充)  //@TableId(type = IdType.NONE)// 表示该类型未设置主键类型 (如果没有主键策略)默认根据雪花算法生成  下面这三种类型,只有当插入对象id为空时 才会自动填充。  //@TableId(type = IdType.UUID)//全局唯一(U

2020-11-19 22:01:39 306 1

原创 一个渣程序员的自述。

文章目录2019辞职2019    2019年大概是大学毕业后最努力的一年,从另个角度看却又是最浑浑噩噩的一年,从去年灰溜溜的离开北京以后,来到现在的公司,公司算不上什么好公司,但是也大大小小对得起自己的人。公司虽然工资低了点,但逢年过节发个柴米油盐酱醋茶,让我们带回家,可见老板也是一个孝顺的人,对员工也寄予了厚望。在这一年里,我自暴自弃过,也奋发图强过。请假睡过觉,也上班摸过鱼;带薪拉过屎,也逃班撸过串;背地里骂过领导kou,也当面夸过同事sao。但是我明白,福利待遇差加上大小周,三五人群,终将分散。

2020-11-17 11:24:59 1486 9

原创 Zookeeper入门基础(未完)。

zk

2020-11-11 16:03:12 680 1

原创 Zookeeper 的安装和配置(未完)。

文章目录前言1.Windows 下安装2.Linux 下安装前言  。1.Windows 下安装  1)下载,点击 官网 下载即可。    打开官网,后看到如下页面。    然后点击要下载的版本,跳转到下载页面,点击要下载的版本即可下载到本地。  2)下载到本地后解压即可  3)配置及遇到的问题    首先,我们要配置zkServer.cmd,在末尾添加一个pause,否则会闪退。    然后去conf文件夹看到配置文件的名字是zoo_sample.cfg,所以需要配置zkEnv.cfg

2020-11-11 15:38:07 94

原创 Mybatis基础知识(未完)。

文章目录前言1.Mybatis是什么?前言  Mybatis也是面试必问的问题之一,我想没有哪个3年以下经验的码农没被问过#和$的区别…1.Mybatis是什么?

2020-11-10 09:48:46 111

原创 SpringMVC八股文。

文章目录前言1.SpringMVC是什么?前言  SpringMVC也是面试必问的问题之一,包括但不限于SpringMVC执行流程等。1.SpringMVC是什么?

2020-11-09 21:01:48 1580

原创 Spring从入门到放弃(未完)。

文章目录前言1.Spring是什么?前言  作为一个Java程序猿,好像Spring是一个基础,但是说道Spring又有很多的东西,比如面试必问IOC和AOP,但是随着时代发展,各企业为了筛选出更加优秀的程序猿,普遍问的比较深了呢,比如Spring相关的原理等。唉,面试造火箭,入职拧螺丝,终将成为无奈之举。1.Spring是什么?                        ...

2020-11-09 16:13:53 192

原创 ThreadLocal(未完)

ThreadLocal

2020-11-09 13:18:21 609

原创 Nginx从入门到放弃。

文章目录前言1.什么是Nginx?2.Nginx可以用来干啥?3.Nginx4.Nginx配置文件前言  前两天公司进行项目架构培训,其中有一段讲到了Nginx,由于讲的比较少,故将掌握的知识点整理于此。如有bug,敬请指正。1.什么是Nginx?  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。2.Nginx可以用来干啥?  1)静态HTTP服务器    Nginx是一个HTT

2020-11-08 20:43:54 173

原创 ConcurrentHashMap(未完)

JDK1.8 ConcurrentHashMap:数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树。除此以外,采用CAS和synchronized来保证并发安全。synchronized只锁定当前链表或红黑二叉树的首节点,这样只要hash不冲突,就不会产生并发,效率又提升N倍。Put:判断Node[]数组是否初始化,没有则进行初始化操作2.通过hash定位Node[]数组的索引坐标,是否有Node节点,如果没有则使用CAS进行添加(链表的头结点),添加失败则进入下次循环。3.检查

2020-11-08 20:08:32 83

原创 JVM基础知识。

JVM内存结构:堆、方法区、栈、本地方法栈、程序计数器双亲委派机制:安全类加载器:APP->EXT->BOOTSTRAP1、类加载器收到类加载的请求2、将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器BOOTSTAP3、启动类加载器检查是否能加载当前类,能加载则结束,使用当前的加载器,否则,抛出异常,通知子加载器进行加载4、重复3Native:Native方法会进入本地方法栈,然后调用JNI接口(本地方法接口);JNI:扩展Java的使用,融合不同的编程

2020-11-07 20:44:43 89

原创 synchronized(未完)

SynchronizedSynchronized最大的特征就是在同一时刻只有一个线程能够获得对象的监视器(monitor),从而进入到同步代码块或者同步方法之中,即表现为互斥性(排它性)。执行过程中会进行锁升级lock CompxchgSynchronized和Lock(ReentrantLock)的区别:1.Synchronized 是Java内置关键字,Lock 是一个类;2.Synchronized 无法判断获取锁的状态,Lock 可以判断是否获取到了锁;3.Synchronized 会自

2020-11-07 15:59:10 92

原创 常用原子类和多线程辅助类(未完)。

AtomicInteger主要方法包括incrementAndGet() 自增并返回自增后的结果getAndIncrement() 自增并返回自增前的结果decrementAndGet() 自减并返回自减后的结果getAndDecrement() 自减并返回自减前的结果getAndSet(int newValue) 设置为新值并返回旧值getAndAdd(int value) 和参数相加并返回旧值addAndGet(int value) 和参数相加并返回新值底层均是调用 c

2020-11-06 21:33:51 74

原创 线程池八股文。

线程池:三大方法,7大参数,四大拒绝策略三大方法:Executors.newSingleThreadExecutor();–创建一个线程的线程池Executors.newFixedThreadPool(int n);–创建指定线程的线程池Executors.newCachedThreadPool();–创建可缓存的线程池七大参数:ThreadPoolExecutor(int corePoolSize, //核心线程池大小int maximumPoolSize, //最大核心线程池大小l

2020-11-06 21:05:39 546

原创 多线程之sleep、wait...

Interrupted、join、wait/notify、sleep、yieldinterrupted中断可以理解为线程的一个标志位,它表示了一个运行中的线程是否被其他线程进行了中断操作。中断好比其他线程对该线程打了一个招呼。其他线程可以调用该线程的interrupt()方法对其进行中断操作,同时该线程可以调用isInterrupted()来感知其他线程对其自身的中断操作,从而做出响应。另外,同样可以调用Thread的静态方法interrupted()对当前线程进行中断操作,该方法会清除中断标志位。需要

2020-11-06 15:56:35 228

原创 对并发编程的浅显理解。

文章目录前言1.多核CPU缓存架构:2.什么是指令重排序?  2.1重排序的分类:3多线程的特性前言  如今遍地多线程高并发,多线程高并发不止是软件层面的支持,还少不了硬件层面的进步。本文是个人对多线程相关基础的愚见,仅供参考。1.多核CPU缓存架构:  由于CPU处理速度远大于主内存,为了解决速度差异,增加了多级缓存,L1/L2/L3;MESI(CPU缓存一致性协议),保证了每个缓存中使用的共享变量的副本是一致的。2.什么是指令重排序?  在执行程序时,为了提高性能,程序指令的执行顺序有可能和

2020-11-03 23:15:39 101

原创 JAVA基础-[多线程]面试必问之volatile。

1.volatile是什么  volatile是一个关键字,不仅仅JAVA中有。此文主要针对JAVA进行解释。2.请谈谈你对volatile的理解            

2020-11-03 21:41:23 126

原创 volatile前置知识点——内存模型、内存屏障。

                      

2020-11-03 21:25:04 170

原创 多线程基础之AQS(未完)。

1.概念    AQS(AbstractQueuedSynchronizer):AQS是一个抽象类,提供了很多公用的方法供子类调用,                        

2020-11-02 21:18:44 66

原创 各种锁的浅显理解。

1.乐观锁和悲观锁2.公平锁和非公平锁3.可重入锁和不可重入锁4.共享锁和独享锁(排它锁)5.无锁、偏向锁、轻量级锁和重量级锁

2020-11-02 16:36:58 113 1

原创 Redis的数据类型及常用指令。

5种基本类型 string list hash set zsetset key value 存储 key valueget key 获取key的valueexists key 判断是否存在keykey * 列出所有的keyflushall /flushdb 清空expire key time 设置过期时间(秒)ttl key 查看key剩余过期时间(秒)type key 查看key的类型-----String-----append key value 在key的value值

2020-10-22 21:07:40 67

原创 Redis常见面试题。

1.缓存穿透: 当一个查询请求过来,缓存没有命中,也就是说Redis内存数据库没有,于是查询MySQL等数据,结果也没有,于是本次查询失败。当多用户发同一请求时,会给数据库造成很大的压力。  解决方案:  1)缓存空对象: 即使查询结果为空也缓存起来并设置过期时间,也可以保护数据库。    导致的新问题:a)如果空值被缓存起来,越来越多的空值占用内存空间;    b)即使设置了过期时间,假如未过期时,数据库有了该结果,就会导致数据不一致的问题。  2)布隆过滤器: 在控制层先进行校验,不符合则弃掉

2020-10-21 22:02:46 90

原创 Redis的主从复制。

aaa

2020-10-21 21:53:29 57

原创 Redis及其持久化。

1.What is Redis  Redis是目前一种主流的NOSQL数据库,常用来做缓存数据库,和Memcache差不多,数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,而Redis会周期性的把数据写入磁盘或者把修改操作以追加的方式写入记录文件,从而实现数据的持久化。  除了作为缓存以外,Redis还可以实现发布与订阅、分布式锁等。  题外话:Redis没有复杂的事务,一直以为NOSQL是没有SQL的意思,后来才发现是Not Only SQL。2

2020-10-21 21:22:15 136

原创 Redis的安装(单机)。

1.Windows环境下安装  下载:    链接: https://pan.baidu.com/s/1vY1DgNkba11uwOzDhyZHhA    提取码:ftx6  安装: 在windows下,只需要将下载的Redis安装包解压即可。包含如下图文件。  运行: 运行服务端,可以发现其默认端口是6379。结果如下图:  运行客户端,输入ping 回车,返回PONG,则连接成功。2.Linux环境下安装  下载:    链接:https://pan.baidu.com/s/18

2020-10-19 21:35:08 111

原创 MySQL主从复制(实操+理论)。

1.什么是主从复制?  MySQL的主从复制,就是建立一个或多个和主数据库完全一样的数据库环境,这些数据库被称为从数据库,主数据库一般用来实时的业务数据写操作(插入、更新、删除),从数据库常用的读取为主。2.主从复制的优点  1)从数据库可以作为备用数据库进行操作。当主数据库出现故障之后,从数据库可以替代主数据库继续工作,不影响公司的业务。  2)方便架构的扩展。随着业务量越来越大,I/O访问频率过高,单机已无法满足,此时主从数据库架构,可以降低单个服务器磁盘I/O访问的频率,提高单个机器的I/O性

2020-10-19 13:55:28 185 1

原创 MySQL知识点小结

1.引擎  innodb 和 MyISAM区别:    1)innodb支持事务,MyISAM不支持事务;    2)innodb支持外键,MyISAM不支持外键;    3)innodb支持行锁和表锁,MyISAM仅支持表锁;    4)InnoDB不保存表的具体行数,MyISAM用一个变量保存了整个表的行数;    5)Innodb存储文件有frm(表定义文件)、ibd(数据文件),而Myisam是frm(表定义文件)、MYD(数据文件)、MYI(索引文件);    6)InnoDB是聚簇

2020-10-19 10:21:46 354 1

原创 多线程基础之CAS。

1.概念    CAS(Compare and Swap):CAS又称“自旋锁”、“无锁”,是一种乐观锁策略,解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。    AtomicInteger等原子类就是基于CAS实现的。2.缺点    1)ABA问题:如果另一个线程修改V值假设原来是A,先修改成B,再修改回成A。当前线程的CAS

2020-10-09 23:15:35 252

原创 HashMap扩容机制源码撕起来(二)。

    HashMap是我们日常工作中接触较多的集合之一,HashMap是线程不安全的,多线程环境下,建议使用ConcurrentHashMap。    面试必问问题HashMap底层原理,以下内容是个人对JDK8下HashMap的扩容机制的见解,如有错误,敬请指正。    红黑树过于复杂,本文将略过红黑树部分。奔着红黑树来的,可以移步了,对不起 。...

2020-10-09 19:55:48 73

原创 多线程基础之创建方式。

    面试造火箭,入职拧螺丝。用不用的到,面试基本都会问多线程相关知识。    此文,用以介绍线程的创建方式。我相信有不少初学者和我刚学的时候一样,很懵逼,为啥不调用run方法,而要调用start呢?答:run方法只是Thread的一个普通方法,你直接调用的话,仅仅是调用一个方法,不会开辟一个线程;start方法底层是调用了native的start0,也就是说调用了本地方法去开辟一个线程,其实是native方法回调run方法的。public synchronized void start() {

2020-09-26 20:56:54 120

原创 HashMap源码撕起来(一)。

    HashMap是我们日常工作中接触较多的集合之一,HashMap是线程不安全的,多线程环境下,建议使用ConcurrentHashMap。    面试必问问题HashMap底层原理,以下内容是个人对JDK8下HashMap的见解,如有错误,敬请指正。废话不多说,我们先来看看HashMap吧    HashMap的底层是数组+链表+红黑树。    1.构造方法://首先加载因子*数组长度=数组允许存储的最大长度,我们只对核心构造器进行研究//参数:初始化长度,加载因子public Has

2020-09-25 21:02:14 152

原创 Vector源码基本理解。

    盼望着,盼望着,面试就要来了,先撸个代码压压惊。    Vector这东西,我没用过,只在背面试题的时候见过,说是线程安全之类的,但是又不建议使用,真™绕。那么我们来看看Vector    Vector的底层也是Object[],这点和ArrayList有一点像呢!    1.构造方法:无参构造方法: //调用有参的构造方法,创建一个长度为10的Object[] public Vector() { this(10);调用一个有参构造器}public Vector(in

2020-09-24 22:05:20 108

原创 LinkedList源码基本理解。

    分别总是在九月,回忆是四年的愁。    LinkedList这东西,我没用过,不过今天想看看源码,能不能发现有意思的东西呢?那么我们来看看LinkedList    LinkedList的底层是双向循环链表,这东西我也没咋接触过,大体就是下图这个样子的吧!    1.构造方法:无参构造方法: //返回一个寂寞public LinkedList() {}带参构造方法://传入一个int类型参数,public LinkedList(Collection<? extends E

2020-09-24 21:10:59 104

原创 ArrayList源码基本理解。

1.JVM 1.8 内存区域划分    程序计数器(Program Counter Register),每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向像一条指令的地址,也即将要执行的指令代码),在执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不计。    本地方法栈(Native Method Stack),它的具体做法是在NMS中登记native方法,在执行引擎(Excution Engine)执行的时候加载本地库(Native Libr

2020-09-24 20:04:42 150 1

原创 程序员常用的Linux命令(不断更新)。

1. 文件操作类①获取当前目录路径pwd②查看当前目录文件ll ls③创建多级目录mkdir -p④删除空文件夹rmdir⑤创建空文件夹touch⑥递归复制cp -r /home/aaa/ /root/bbb/ 将aaa整个复制;前面加一个“\” 强制覆盖,例如: \cp -r /home/aaa/ /root/bbb/⑦复制/移动mv⑧分页查看cat -n xxx | more 分页带行号查看 ;more 或者 less xxx 分页查看⑨查找find 范围 -name 文件名 根据名字

2020-08-05 21:32:24 231

空空如也

空空如也

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

TA关注的人

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