自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 分布式事务

分布式事务 分布式事务就是一个大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。 CAP定理 分布式系统不可能同时满足一致性(C:Consistency)...

2019-09-16 16:47:09 28 0

原创 小白快速学MySQL

/使用MySQL/ SHOW DATABASES; /返回可用数据库的列表/ USE sell;/使用sell这个数据库/ SHOW TABLES; /返回当前数据库中可用的列表/ SHOW COLUMNS FROM order_detail;/返回order_detail表中字段的信息/...

2019-08-25 08:37:34 44 0

原创 消息队列总览

1.为什么要用消息队列 解耦、异步、削峰 A系统调用B系统、C系统,传统的调用是直接调用,但是当B系统说我不需要你提供数据了,这时候A需要改代码,C系统说我不需要某个字段了,这时候A也要改代码,如果又多了一个D系统,A又要写代码。为了实现解耦,引入消息队列,A将产生的数据丢到消息队列中,哪...

2019-08-13 14:30:04 50 0

原创 Spring IOC、AOP以及Spring-Bean循环依赖解决

文章目录Spring IOC原理IOC原理:依赖注入(DI)的三种方式Spring-Bean循环依赖以及解决方式什么是循环依赖Spring怎么解决循环依赖原理Spring单例对象初始化过程三级缓存Spring为什么不使用两级缓存AOP使用AOP的目的AOP使用场景AOP原理Spring AOP实现...

2019-08-08 17:33:51 298 0

原创 进程与线程的区别及其通信方式

进程与线程的区别及其通信方式 进程与线程的区别 进程是资源分配的基本单位,是执行中程序的实例 线程是操作系统调度的基本单位,一个进程可以有多个线程。线程基本不拥有系统资源,但可以访问隶属进程的资源。 线程切换时只需保存和设置少量寄存器内容,开销很小。而进程切换时则开销很大,涉及到当前执...

2019-08-05 14:46:44 40 0

原创 Go语言基础

package main import ( "fmt" ) func main(){ /*变量申明赋值*/ //第一种赋值方式 var name string name="panda" //第二种赋值方式 var name2 = "...

2019-07-30 17:46:54 19 0

转载 大数相乘

大数乘法[JAVA实现]-经典笔试题 package com.company; import java.util.Scanner; /** * 大数相乘 * @author Ant * */ public class BigNumMutil { /** * 大数相乘...

2019-05-08 15:36:54 47 0

原创 使用rand6实现rand10

给定rand6()函数实现 private static int rand6(){ return (int)(Math.random()*6)+1; } rand6()可以得到1,2,3,4,5,6 rand6()-1可以得到0,1,2,3,4,5 (rand6()-1)*6可以...

2019-04-24 17:24:14 506 0

原创 面试中如何回答JVM垃圾回收机制

JVM中的垃圾回收了解吗 首先是如何标记存活对象,主要有两个算法,分别是引用计数法和可达性分析算法。 引用计数法:给一个对象添加一个引用计数器,当一个地方引用它时,计算器+1,不引用的时候-1,当引用计数器为0时说明该对象可回收。但是一旦出现互相引用的情况,就会出现无法回收的现象。所以JVM采...

2019-04-17 09:36:48 710 0

原创 面试中如何回答Java中的锁机制

Java中锁机制 Java中多线程加锁机制主要有两种,一种是JDK实现的lock,另外一种是JVM底层实现的Synchronized关键字。 Synchronized是JVM底层实现的,JVM原生支持synchronized,而reentrantlock是JDK实现的,并不是所有jdk版本都支持r...

2019-04-12 17:08:36 269 1

原创 web项目面试问题

项目如何保证安全性 1.弱口令漏洞 解决方案:最好使用至少6位的数字、字母及特殊字符组合作为密码。数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密,或者多种加密方式叠加组合。 2.未使用用户名及密码登录后台可直接输入后台URL登...

2019-04-09 19:49:56 345 0

原创 Spring高频面试题

Spring Boot的优势和Spring的区别 Spring Boot优势: 快速开发,提高了生产力,适合构建微服务系统 避免编写大量的样板代码、注释和xml配置 springBoot集成了很多成熟的组件,如mybatis、redis和mongdb等 Spring Boot劣势: 集成度...

2019-04-09 14:33:02 160 0

原创 MySQL面试问题

索引是什么?有什么作用以及缺点 定义:索引是存储引擎用于快速查找数据的一种数据结构。 MySQL数据库基本的索引类型:普通索引、唯一索引、主键索引和全文索引。 普通索引:允许被索引的数据列包含重复的列 唯一索引:不允许被索引的数据包含重复的列 主键索引:在一张表中只能定义一个主键索引,主键索引用于...

2019-03-25 16:04:58 11186 4

原创 HashMap相关面试问题

HashMap原理 hashMap内部包含了一个Entry类型的数组table transient Entry[] table; table数组中每个索引位置(可以将每个索引位置看成是一个桶bucket)存储着一条链表或者一棵红黑树。hashMap通过哈希算法计算出key对应的索引位置,不同的ke...

2019-03-07 09:58:23 264 0

原创 SpringBoot+MyBatis项目架构

2019-03-04 12:19:44 896 0

原创 Redis面试相关

缓存中间件-Memcache和Redis的区别 Memcache:代码层次类似Hash 支持简单数据类型 不支持数据持久化存储 不支持主从(主从服务器复制) 不支持分片 Redis: 数据类型丰富 支持数据磁盘持久化存储 支持主从 支持分片 Redis数据类型...

2019-03-03 11:16:15 109 0

原创 面试中如何回答分布式锁的实现

实现分布式锁的方法主要有四种: 数据库唯一索引 Redis的SETNX指令 Redis实现的RedLock算法 ZooKeeper的临时有序节点 第一种是通过数据库唯一索引,通过往数据库中插入唯一索引表示获取到锁,删除该唯一索引表示释放该锁。唯一索引可以保证当前数据库中该索引是唯一的。那么就可...

2019-03-03 10:06:59 333 0

原创 Java并发编程常见面试题夺命追问

1. 守护线程(Daemon)与用户线程(User)的区别 守护线程时程序运行时在后台提供服务的线程,当所有非守护线程结束后,也即程序终止时,所有守护线程都将一起被杀死。 main()是用户线程,JVM的垃圾回收线程就是一个守护线程 通过Thread类中的setDaemon(boolean ...

2019-02-24 20:54:25 128 0

原创 Java 并发编程(四)JVM中锁的优化

偏向锁、轻量级锁、重量级锁三者各自的应用场景 偏向锁:只有一个线程进入临界区 轻量级锁:多个线程交替进入临界区 重量级锁:多个线程同时进入临界区 偏向锁、轻量级锁都是JVM引入的锁优化手段,目的是降低线程同步的开销。比如以下的同步代码块: synchronized (lockOb...

2019-02-22 16:06:55 139 1

原创 图论算法(三)最短路径

最短路径

2019-02-18 11:06:32 427 0

原创 图论算法(二)最小生成树

图论算法之最小生成树 最小生成树 定义 原理 Prim算法延时实现 Prim算法jishi实现 Kruskalsuanfa

2019-02-17 11:33:44 210 0

原创 图论算法(一)深度优先搜索与广度优先搜索

图论算法之深度优先搜索与广度优先搜索 图论基础知识 图是由一组顶点和一组能够将两个顶点相连的边组成的(可以无边,但是至少包含一个顶点): 一组顶点: 通常用V(vertex)表示顶点集合 一组边: 通常用E(edge)表示边集合 图可以分为有向图和无向图: 无向...

2019-01-19 19:47:11 540 0

原创 散列表原理及实现

散列表原理及实现 散列表原理 散列表:使用算术操作将键转化为数组的索引来访问数组中的键值对, 使用散列表,可以实现常数级别的查找和插入. 使用散列的查找算法主要要解决的两个问题: 散列函数的设计(即如何用散列函数将被查找的键转化为数组的一个索引). 处理碰撞冲突的过程(即处理两个或多个键...

2019-01-12 15:53:23 113 0

原创 浅析树结构(三)红黑树

浅析树结构之红黑树 首先先来了解一下红黑树的五个性质 每个结点非红即黑。 根结点是黑的。 每个叶结点(这里叶节点指的是NULL结点)都是黑的。 如果一个结点是红的,那么它的两个儿子都是黑的。 对于任意结点而言,其到树末端即NULL节点的每条路径都包含相同数目的黑结点。 等等等...

2019-01-10 17:16:29 141 0

原创 浅析树结构(二)AVL平衡二叉树(AVL树原理及代码实现)

平衡二叉树 平衡二叉树定义 平衡二叉树有两种形式: 是一棵空树 是一个左右两个子树的高度差的绝对值不超过1,并且左右子树都是平衡二叉树的树 平衡二叉树的常用实现方法有AVL树,红黑树,替罪羊树,Treap,伸展树等. 在这里我们先谈AVL树,红黑树会在之后的文章...

2019-01-08 21:37:23 198 0

原创 浅析树结构(一)二叉查找树(BST树代码实现)

二叉查找树 二叉查找树定义 定义:一颗二叉查找树(BST)是一棵二叉树,其中每个结点都含有一个Comparable的键(以及相关联的值)且每个结点的键都大于其左子树中的任意结点的键而小于右子树的任意结点的键. 二叉查找树中搜索,插入,删除的复杂度等于树高,即O(log(n)) 二...

2019-01-08 15:46:06 114 0

原创 三张图详解从输入URL网址到网页呈现中间发生了什么

2018-12-24 16:38:31 332 0

原创 小白学TCP/IP(八)路由选择篇

路由选择 路由器的结构 路由器从功能上可以划分为:路由选择和分组转发。 分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 路由器分组转发流程 从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。 若 N 就是与此路由器直接相连的某个网络...

2018-12-24 14:08:05 365 1

原创 小白学TCP/IP(三)数据链路层篇

数据链路层 数据链路层位于物理层与网络层之间,其设计的初衷就是顺利为网络层提供数据服务,不考虑可靠性,可靠性的部分由传输层的TCP协议实现. 数据链路层在网络传递中的地位 假设在通信的过程中需要通过路由器的话,那么数据的具体流动过程就像下面图中箭头的示意: 其中路由器负责路...

2018-12-23 15:46:56 67 0

原创 小白学TCP/IP(六)TCP与UDP篇

TCP与UDP篇 TCP提供可靠的通信传输,而UDP则常被用于广播和细节控制交给应用的通信传输 传输层 传输层的作用: 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看...

2018-12-22 16:48:54 77 0

原创 小白学TCP/IP(五)IP协议相关技术

IP协议相关技术 IP旨在让最终目标主机收到数据包,但是这一过程仅仅依靠IP是无法实现的,必须要有实现解析主机名称和MAC地址的功能,以及数据包在发送过程中异常情况处理的功能,此外还会涉及IP必不可少的其他功能. DNS(Domain Name System) DNS系统与IP协...

2018-12-20 15:43:38 63 0

原创 小白学TCP/IP(四)IP协议篇

TCP/IP知识点 网络层与数据链路层之间的关系 网络层负责端到端之间(消息发送端与消息接收段)的通信,但至于中间消息是怎样被转发的,得通过数据链路层实现,也就是说数据链路层负责每个数据链路从源MAC地址到目标MAC地址之间的数据传输,而网络层则是规定了数据最开始的发送端和最终的接收端. 把...

2018-12-19 14:23:47 207 0

原创 SprintBoot整合MyBatis简易教程

MyBatis简易教程 MyBatis导入及配置 使用Maven管理 <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-...

2018-12-11 09:50:10 231 0

原创 日志框架使用

日志框架 日志框架的能力 定制输出目标(输出到哪里) 定制输出格式(输出的信息的呈现格式) 携带上下文信息(包括时间戳,类路径,线程等) 运行时选择性输出 灵活配置(不需要写代码实现) 优异的性能 常见的日志框架 SpringBoot采用的是以下的日志框架结合 日志门面 日志实现 ...

2018-11-29 20:58:21 54 0

原创 Java 并发编程(五)原子操作类

Java 并发编程之原子操作类 Java从JDK1.5开始提供了Java.u体力.concurrent.atomic包,这个包中的原子操作类提供了一种用法简单,性能高效,线程安全地更新一个变量的方式. 接下来以AtomicInteger类为例进行分析. Atomic包中的类基本都是使用Uns...

2018-11-28 15:19:05 71 0

原创 Java 并发编程(一)Volatile原理剖析及使用

Java 并发编程之Volatile原理剖析及使用 在开始介绍Volatile之前,回顾一下在并发中极其重要的三个概念:原子性,可见行和有序性 原子性: 是指一个操作不可以被中断.比如赋值操作a=1和返回操作return a,这样的操作在JVM中只需要一步就可以完成,因此具有原子性,而想自...

2018-11-28 12:28:50 69 0

原创 Java 并发编程(三)Synchronized底层优化(偏向锁与轻量级锁)

Synchronized低效的原因 在Java SE 1.6发布前,使用Synchronized关键字实现同步功能是比较低效的,很多人称其为重量级锁.究其原理,是因为Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的,而监视器锁本质又是依赖于底层的操作系统的Mut...

2018-11-27 21:12:27 85 0

原创 Java 并发编程(二)Synchronized原理剖析及使用

Java 并发编程之Synchronized原理剖析及使用 在开始介绍Synchronize之前,先了解一下在并发中极其重要的三个概念:原子性,可见行和有序性 原子性: 是指一个操作不可以被中断.比如赋值操作a=1和返回操作return a,这样的操作在JVM中只需要一步就可以完成,因此具...

2018-11-27 17:43:27 120 0

原创 LRU缓存(java实现)

import java.util.HashMap; import java.util.Iterator; public class LRU<K,V> implements Iterable { private Node head; private ...

2018-10-23 09:54:21 164 0

原创 经典排序算法原理、代码实现和稳定性分析

选择排序:首先找到数组中最小的那个元素,将它与数组的第一个位置交换位置,然后找出剩下的元素中最小的元素,将它与数组中的第二个元素交换位置,如此往复,直到整个数组排序。...

2018-05-17 10:33:37 113 0

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