自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux下MySQL无法正常启动:提示ERROR 2002 (HY000): Can’t connect to local MySQL server through socket 解决办法

确保有文件mysql.sock,使用命令find / -name mysql.sock。正常情况会返回文件对应的路径:/var/lib/mysql/mysql.sock执行vi /etc/my.cnf ,在文件最后添加client对应的部分内容(下面的加粗的部分)[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlsymbolic-links=0[mysqld_safe]log-error=/v.

2021-03-21 21:36:44 965 1

原创 Linux基础知识

1. Unix Linux GNU/Linux MacOSUnix是最早的多用户、多任务操作系统 。后面崛起的 Linux 在很多方面都参考了 Unix。目前这款操作系统已经逐渐逐渐退出操作系统的舞台。Linux 是一套免费使用、开源的类 Unix 操作系统。 Linux 存在着许多不同的发行版本,但它们都使用了 Linux 内核 。在 GNU/Linux 系统中,Linux 实际就是 Linux 内核,而该系统的其余部分主要是由 GNU 工程编写和提供的程序组成。单独的 Linux 内核并不能成为一

2020-10-28 12:02:24 264 1

原创 Java 面试代码

回文数(leetcode9)判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。(不能将整数转为字符串)解题思路: 取出后半段数字进行翻转。由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。具体做法如下:每次进行取余操作 ( %10),取出最低的数字:y = x % 10;将最低的数字加到取出数的末尾:revertNum = revertNum *

2020-10-19 11:22:39 900 1

原创 Integer与int

Integer 类和 int 的区别Integer 是 int 的包装类,默认值为null,int 是八大基本数据类型之一(byte,char,short,int,long,float,double,boolean),默认值为0;Integer 表示的是对象,用一个引用指向这个对象,而int是基本数据类型,直接存储数值。关于Integer的比较问题:Integer与new Integer()不相等,因为内存地址不一样,使用 == 比较都为false。两个都是非new出来的Integer,使用

2020-10-15 11:51:46 278

原创 Java项目问题

项目概述:利用SpringBoot+MySQL/ Redis+ thymeleaf/Vue.js+ Restful架构完成购物商城的基本功能:商品的分类查询和属性设置+订单状态流转;CRUD后台各种功能(Mybatis/JPA规范)、事务的使用;使用Redis对数据进行缓存处理、缓存和数据库的一致性问题、缓存雪崩和缓存穿透问题解决⽅案;Restful架构实现前后端分离。开发流程:表结构的设计用户相关:用户表、评价表;产品相关:分类表、属性表、产品表;订单相关:订单表、订单单项表。

2020-10-05 22:08:45 601 1

原创 操作系统

1. 什么是操作系统操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基⽯;操作系统本质上是运⾏在计算机上的软件程序 ;操作系统为⽤户提供⼀个与系统交互的操作界⾯ ;操作系统分内核与外壳(可以把外壳理解成围绕着内核的应⽤程序,⽽内核就是能操作硬件的程序,内核负责管理系统的进程、内存、设备驱动程序、⽂件和⽹络系统等等,决定着系统的性能和稳定性,是连接应⽤程序和硬件的桥梁)。2. 系统调⽤根据进程访问资源的特点,可以把进程在系统上的运⾏

2020-09-28 11:17:18 552

原创 计算机⽹络

本文从JavaGuide面试突击版整理得到,侵删。1. OSI与TCP/IP各层的结构与功能,都有哪些协议?计算机网络体系结构:(a)OSI七层协议;(b)TCP/IP四层协议;(c)五层协议(中和 OSI 和 TCP/IP 的优点)。应⽤层应⽤层(application-layer)的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。应⽤层协议定义的是应⽤进程间的通信和交互的规则。对于不同的⽹络应⽤需要不同的应⽤层协议。在互联⽹中应⽤层协议很多,如域名系统DNS,⽀持万维⽹应⽤的 HTTP协议

2020-09-28 00:29:17 525

原创 Java基础知识

本文从JavaGuide面试突击版整理得到,侵删。1. ⾯向对象和⾯向过程的区别⾯向过程 :⾯向过程性能⽐⾯向对象⾼。 因为类调⽤时需要实例化,开销⽐较⼤,⽐较消耗资源,所以当性能是最重要的考量因素的时候,⽐如单⽚机、嵌⼊式开发、Linux/Unix 等⼀般采⽤⾯向过程开发。但是,⾯向过程没有⾯向对象易维护、易复⽤、易扩展。⾯向对象 :⾯向对象易维护、易复⽤、易扩展。 因为⾯向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,⾯向对象性能⽐⾯向过程低。

2020-09-24 21:52:07 651

原创 Spring、SpringMVC、SpringBoot

1. 什么是 Spring 框架?Spring 是⼀种轻量级开发框架,旨在提⾼开发⼈员的开发效率以及系统的可维护性,它是很多模块的集合,使⽤这些模块可以很⽅便地协助我们进⾏开发。这些模块是:核⼼容器、数据访问/集成,、Web、AOP(⾯向切⾯编程)、⼯具、消息和测试模块。名词解释:IOC 反转控制 是Spring的基础,Inversion Of Control简单说就是创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象DI 依赖注入 Dependency Inject

2020-08-19 22:43:23 405

原创 Redis基础知识

本文是来自JavaGuide面试突击版Redis部分的整理,只涉及Redis作为缓存时的相应知识点,因为其他的分布式内容我项目里面没有涉及-_-||。1. redis 简介简单来说 redis 就是⼀个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度⾮常快,因此 redis 被⼴泛应⽤于缓存⽅向。redis 提供了多种数据类型来⽀持不同的业务场景。问:为什么要⽤ redis/为什么要⽤缓存?主要从“⾼性能”和“⾼并发”这两点来看待这个问题。⾼性能:假如⽤户第⼀次访

2020-08-15 23:22:35 514

原创 MySQL基础知识总结

1. 什么是MySQL?MySQL 是⼀种关系型数据库,在Java企业级开发中⾮常常⽤,因为 MySQL 是开源免费的,并且⽅便扩展。阿⾥巴巴数据库系统也⼤量⽤到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何⼈都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进⾏修改。MySQL的默认端⼝号是3306...

2020-08-14 18:40:14 886

原创 JVM基础知识

1. 介绍下 Java 内存区域(运⾏时数据区)Java 虚拟机在执⾏ Java 程序的过程中会把它管理的内存划分成若⼲个不同的数据区域。(JDK. 1.8 和之前的版本略有不同,下⾯会介绍到。)JDK 1.8之前:JDK 1.8 :...

2020-08-11 21:53:27 575

原创 单例模式 代码+线程安全性解析

单例模式是什么?单例模式又叫做 Singleton模式,指的是一个类,在一个JVM里,只有一个实例存在,并提供一个访问它的全局访问点。为什么需要单例模式?有的类的实例对象创建和销毁对资源来说消耗不大(例如String),而有的类型比较庞大和复杂,如果频繁的创建和销毁对象并且这些对象是可以复用的,那将造成一些不必要的性能浪费。例:比如要写一个访问数据库的demo,创建数据库链接的对象就是一个耗资源的操作,并且数据库链接完全是可以复用的。那么就可以将这个对象设计为单例,这样只需要创建一次并重复使用。实

2020-08-06 01:06:24 429

原创 多线程(无代码,纯干货)

1、什么是线程和进程?进程:在操作系统中能够独立运行,并且作为资源分配的基本单位。它表示运行中的程序。系统运行一个程序就是一个进程从创建、运行到消亡的过程。线程:线程是进程划分成的更⼩的运⾏单位,⼀个进程在其执⾏的过程中可以产⽣多个线程。多个线程共享进程的堆和⽅法区资源,但是每个线程有⾃⼰的程序计数器、虚拟机栈 和 本地⽅法栈。系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,因此也被称为轻量级进程。不同点:线程和进程最⼤的不同在于基本上各进程是独⽴的,⽽各线程则不⼀定,因

2020-08-04 21:24:05 834

原创 Java集合

这里主要对集合框架内部数据结构和Java面试问题进行总结,集合常见方法的调用请看我其他整理的汇总文章。1. ListArraylist: Object数组Vector: Object数组LinkedList: 双向链表(JDK1.6之前为循环链表,JDK1.7取消了循环)问:ArrayList和LinkedList的区别?相同点:ArrayList和LinkedList都是非线程安全的,都是实现了List接口的容器类,用于存储一系列的对象引用。他们都可以对元素的增删改查进行操作。区别:Ar

2020-08-04 18:24:26 232

原创 乐观锁与悲观锁(无代码,纯干货)

文章内容参考https://gitee.com/mrxt/JavaGuide/blob/master/docs/essential-content-for-interview/面试必备之乐观锁与悲观锁.mdhttps://www.jianshu.com/p/6e4005acb4e3对上面文章的要点进行提取,方便进行面试记忆,侵删。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,即共享资源每次只给一个线程

2020-08-02 20:59:43 177

原创 红黑树的产生原因和基本原理

https://juejin.im/post/6844903519632228365#comment

2020-08-02 00:44:47 568

原创 B树,B+树,B*树

我们都知道二叉查找树的查找的时间复杂度是O(log N),其查找效率已经足够高了,那为什么还有B树和B+树的出现呢?难道它两的时间复杂度比二叉查找树还小吗?  答案当然不是,B树和B+树的出现是因为另外一个问题,那就是磁盘IO;众所周知,IO操作的效率很低,那么,当在大量数据存储中,查询时我们不能一下子将所有数据加载到内存中,只能逐一加载磁盘页,每个磁盘页对应树的节点。造成大量磁盘IO操作(最坏情况下为树的高度)。平衡二叉树由于树深度过大而造成磁盘IO读写过于频繁,进而导致效率低下。  所以,我们为了减

2020-08-02 00:11:55 243

原创 Java面试:Arraylist 与 LinkedList 区别?

ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用。他们都可以对元素的增删改查进行操作。ArrayList和LinkedList的大致区别如下:ArrayList是基于动态数组的数据结构,LinkedList是基于链表结构。对于随机访问的get方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。...

2020-08-01 13:42:53 93

原创 Java面试 “==“、“equals“与hashCode

1. == 与 equals== :它的作⽤是判断两个对象的地址是不是相等。equals() : 它的作⽤是判断两个对象是否相等。⼀般有两种使⽤情况:情况 1:类没有覆盖 equals() ⽅法。则通过 equals() ⽐较该类的两个对象时,等价于通过 == ⽐较这两个对象。情况 2:类覆盖了 equals() ⽅法。⼀般,我们都覆盖 equals() ⽅法来⽐较两个对象的内容是否相等;若它们的内容相等,则返回 true。2. hashCode 与 equals⾯试官可能会问你:“你重写过 h

2020-07-31 19:59:50 189

原创 三次握手,四次挥手 面试知识点

1. 三次握手刚开始客户端处于 Closed 的状态,服务端处于 Listen (监听)状态。进行三次握手:第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。第三次握手:客

2020-07-31 16:44:54 206

原创 剑指Offer 面试题9

//面试题09. 用两个栈实现队列//用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,//分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )package array;import java.util.Stack;/** * Your CQueue object will be instantiated and called as such: * CQueue ob

2020-07-31 11:09:02 92

原创 Java汇总(三):String篇 String、StringBuffer、StringBuilder

一、可变性String 类中使⽤ final 关键字修饰字符数组来保存字符串(在 Java 9 之后,String 类的实现改⽤ byte 数组存储字符串),所以 String 对象是不可变的。⽽StringBuilder 与 StringBuffer 都继承⾃ AbstractStringBuilder 类,在该类中也是使⽤字符数组保存字符串,但是没有⽤ final 关键字修饰,所以这两种对象都是可变的。二、线程安全性String 中的对象是不可变的,也就可以理解为常量,线程安全。StringB

2020-07-30 19:26:53 155 1

原创 Java汇总--容器篇(二)Set:HashSet, LinkedHashSet, TreeSet

这里复习set的用法:Set中的元素,不能重复,第二次插入同样的数据,是插不进去的,容器中只会保留一个;1.常见的Set有三类:HashSet:无序;HashSet<Integer> s or Set<Integer> s = new HashSet<>();LinkedHashSet:按照插入顺序;TreeSet:从小到大排序;2.常用方法(以HashSet为例):add(num);//返回值为boolean,表示set中是否能成功增加元素num;co

2020-06-27 23:56:00 114

原创 Java汇总--容器篇(一)List:ArrayList,LinkedList,Queue,Stack常见方法

ArrayList是顺序结构,所以定位很快,但插入,删除数据慢。LinkedList 是链表结构,定位慢,但插入,删除数据快。ArrayList实现了List接口,常见方法有:add();contains();get();indexOf():定位对象所处的位置;remove();size();toArray();toString();//转换为字符串LinkedList也实现了List接口外,可以实现上述ArrayList中的常用方法,此外:1.LinkedList还实现了双向链表结构

2020-06-24 23:41:06 288

原创 Java中的compareTo()方法使用

1.compareTo()方法可用于按字典顺序比较两个字符串:str1.compareTo(str2);返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。如果参数字符串等于此字符串,则返回值 0;如果此字符串小于字符串参数,则返回一个小于 0 的值;如果此字符串大于字符串参数,则返回一个大于 0

2020-05-31 19:28:08 2268

原创 剑指Offer第35题复杂链表的复制 Java实现剑指Offer两种思路,HashMap方法和无需辅助空间方法

面试题35. 复杂链表的复制请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。解题思路:这个复制过程可以分成两步:第一步是复制原始链表上的每个节点,并用next指针相连; 第二步是设置每个节点的random指针。第一步的实现较为简单,第二步,对于一个n...

2020-05-07 20:04:15 162

原创 Java中形参改变对实参的影响结果(基本数据类型,数组,容器,对象)及测试代码

1.当使用基本数据类型作为参数传递时,形参变量的改变不会影响到实参的数值;即如果形参是基本类型或者String,则实参不会变(传的是值)public class Test { public static void main(String[] args) { String test= "test"; update(test); System.out.println(test)...

2020-05-06 22:09:53 1564

原创 Java中LinkedList与ArrayList的相同点和区别

一、总体概括ArrayList是顺序结构,所以定位很快,但插入,删除数据慢。LinkedList 是链表结构,定位慢,但插入,删除数据快。二、相同点:与ArrayList一样,LinkedList也实现了List接口,可以实现ArrayList中的常用方法:add()方法:add 有两种用法:第一种是直接add对象,把对象加在最后面。第二种是在指定位置加对象。contains()...

2020-05-05 17:04:31 722

原创 剑指offer 面试题25. 合并两个排序的链表 Java三种双百实现代码

面试题25. 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000双百解法一:迭代法 修改原有链表的指向 推荐!!!!设l1为 1->3->...

2020-04-22 00:05:55 206

原创 Java中栈Stack(或ArrayList中)存储对象的指向和值改变问题

Java 如果在栈Stack中存储一个对象型数据,比如ListNode,若现将一个ListNode对象存入Stack中,之后若其指向或值有所改变,是否会对Stack造成影响?下面是测试代码:首先是 ListNode的定义:/** * Definition for singly-linked list. * public class ListNode { * int val; ...

2020-04-17 13:20:57 575

原创 剑指offer 面试题18. 删除链表的节点 Java实现 Leecode解法 和剑指offer O(1)复杂度解法(改进版) 原理及代码实现

一、先来看Leecode上的题目要求面试题18. 删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 ->...

2020-04-13 16:14:40 181

原创 剑指offer 面试题17. 打印从1到最大的n位数 考虑大数问题时的Java实现

面试题17. 打印从1到最大的n位数输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印 n 为正整数1.前两种方法是解决n取值较小的情况Java代码如下://不调用pow函数 public ...

2020-04-11 22:07:07 141

原创 java 操作符移位运算之 左移 右移 无符号右移 的区别:原理和代码演示(正负数)

1.左移<<不区分正负数左移运算符 m <<n表示把 m 左移 n 位。在左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0。public class Test { public static void main(String[] args) { int i =6; //6的二进制是110 Syste...

2020-04-09 22:12:14 520

原创 MySQL大小写敏感问题:原理及测试

1.MySQL大小写敏感的控制mysql是通过lower_case_table_names参数来控制大小写敏感的,该参数在[mysqld]结点下。具体的含义见官网截图。由上图可知:Unix下默认为0,也就是大小写敏感的;Windows下默认为1,不敏感;macOS默认为2,存储区分大小写,但是在查询时会转换为小写。二、测试(win10系统下)1.在SQL编辑器中USE how2j...

2020-04-03 19:42:45 371

原创 动态规划(一):什么是动态规划(Dynamic Programming)?动态规划的意义是什么?

内容来源:【1】作者:阮行止链接:https://www.zhihu.com/question/23995189/answer/613096905来源:知乎【2】作者:王勐链接:https://www.zhihu.com/question/23995189/answer/35429905来源:知乎文章只作为后续理解的记录,侵删。一. 从一个生活问题谈起  先来看看生活中经常遇到的...

2020-04-02 11:50:27 311

原创 排序算法之归并排序 原理及java实现

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。一、原理可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现。1.首先考虑“治”部分:如何将将二个有序数列合...

2020-04-01 20:38:35 220

原创 经典排序算法之快排:原理及java实现

快排 java实现在网上查了一些快排相关的代码,但是找的几个都有bug(o(╥﹏╥)o),甚至百度百科里面的代码也有bug,弄了一晚上,终于把代码弄好,原理也基本清楚了,下面从原理和代码两部分进行说明,同时也会提出一些网上现有的一些代码的bug,算法小白,如有错误,还请指正。一、快排原理(总结至百度百科)(后面会说一下一些文章讲解快排时出现的原理错误,搞了一个小时才明白,-_-||)正确原...

2020-03-31 00:03:33 1163

原创 剑指offer面试题05. 替换空格 (不推荐在for循环里面直接用+的方式进行String的拼接)

面试题05. 替换空格(不推荐在for循环里面直接用+的方式进行String的拼接)请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.” 输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000一、个人解法(粗暴字符串拼接) public String replaceSpace(St...

2020-03-29 11:25:13 186

原创 Java中Iterator用法

迭代器(Iterator)是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。Java中的Iterator功能比较简单,并且只能单向移动:(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。(2) ...

2020-03-09 00:03:23 703

空空如也

空空如也

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

TA关注的人

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