自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Git基本命令

基本操作git init:初始化仓库git init将当前目录初始化为一个git 仓库git status:查看仓库状态git status查看当前仓库的状态git add:将文件添加到暂存区git add README.md将README.md文件添加到暂存区git add .将当前目录的所有文件添加到暂存区git commit:将暂存区的文件提交到本地仓库git commit -m 'first commit'将暂存区的文件提交到本地仓库,-m指定提交描述信息git

2021-11-25 16:54:08 6614

原创 Redis集群模式

思维导图高清思维导图主从复制模式基本结构实现原理全量复制阶段:如果启动一个slave,则它会向master发送一个sync命令,请求同步连接。master收到sync命令后,会启动一个后台进程,执行rdb操作,同时记录这之后产生的所有修改命令,保存在缓冲区中。rdb完成后,master向slave发送rdb文件,slave收到rdb文件后,丢弃所有旧数据,将rdb载入到内存中。master将rdb发送完成后,会将缓冲区中的所有命令发送到slave,slave收到后执行这些命令。执行完

2021-08-21 14:13:28 193

原创 二叉树的遍历(前序、中序、后序、层序)递归+迭代

前序、中序和后序遍历分别使用递归和迭代的方式实现了一遍。递归转迭代的主要思路是通过栈来模拟递归调用过程,代码如下:import java.util.*;/** * @author RuL */public class Traverse { /** * 先序遍历(根-左-右)-递归方式 * * @param root 根节点 * @param result 遍历结果 */ public void preOrder(TreeNo

2021-08-16 15:38:20 185

原创 电商系统库存相关问题解决方案

1、什么时候扣库存?可以在下单的时候扣库存,也可以在支付成功之后再扣库存。对于下单时扣库存,主要会存在被恶意下单的可能,有可能会被人把商品全部下单但是不支付。虽然可以通过设置订单的超时时间,等到了时间后如果还没有支付就把该订单失效恢复库存来解决。但是在超时时间这一段时间内,真正有需要租赁的客户还是下不了单,必须等超时之后才能下单,导致用户体验不好,同时对于商家来说也会丢失潜在的交易。也可以限制同一用户或同一IP下单的商品数量,但还是会存在问题,具体限制多大?假设限制为1,但可能有人确实需要租两件,而因为

2021-05-19 19:12:08 1139

原创 堆排序Java语言实现

堆排序Java语言实现核心思想:利用大顶堆(如果是从大到小排序则是利用小顶堆)这种结构,将堆顶元素与最后一个元素交换,这样就保证了最后一个元素是最大值。剩余的元素重复该过程,这样就能得到一个有序序列。public class HeapSort { public static void main(String[] args) { int[] array = new int[]{3,5,1,7,2,8,4,3,1,5,9,3,5}; heapSort(array); for (int

2021-05-08 16:32:26 98

原创 Java中线程安全的容器

1、Collections包装的同步容器在Collections类中,通过以下方法可以将一个非线程安全的容器包装为一个线程安全的容器://线程安全的List,其类型为SynchronizedList或SynchronizedRandomAccessListList<Object> list = Collections.synchronizedList(new ArrayList<>());//线程安全的Set,其类型为SynchronizedSetSet<Objec

2020-12-08 21:14:01 541

原创 树的遍历

题目描述给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2AC代码#include<iostream&

2020-10-14 22:22:05 140

原创 PTA 彩虹瓶

题目描述彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N)。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将小球从工厂里搬到装填场地。如果搬来的这箱小球正好是可以装填的颜色,就直接拆箱装填;如果不是,就把箱子先码放在一个临时货架上,码放的方法就是一箱一箱堆上去。当一种颜色装填完以后,先看看货架顶端的一箱是不是下一个要装填的颜色,如果是就取下来装填,否则去

2020-10-07 19:45:23 995

原创 汉诺塔 THE TOWER OF HANOI

THE TOWER OF HANOI问题描述汉诺塔(也称河内塔)是有法国数学家爱德华·卢卡斯于1883年发明的一道智力题。它源于印度的一个古老传说:大梵天创造世界的时候做了三根钻石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令一组牧师把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。据说牧师们夜以继日地工作,当他们完成任务时,那座塔就将坍塌,世界也将毁灭。汉诺塔问题是这样规定的:如下图,一个由8个圆盘组成的塔,

2020-07-14 14:57:08 3534

原创 学好Java设计模式--工厂模式

一篇文章读懂工厂模式工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。如果创建某个对象的过程很复杂,并且在很多地方都需要用到,那么使用工厂模式就能减少很多重复代码。并且将对象的创建和使用分开,在一定程度上起到了解耦的作用。工厂模式的分类简单工厂(Simple Factory)模式,又称静态工厂方法模式

2020-07-12 14:24:51 257 1

原创 学好Java设计模式--策略模式

从实现一个简单的排序器学习策略模式策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。当对象有某个行为,但是在不同的场景中该行为有不同的实现算法,这时便可以使用策略模式这一设计模式。1、问题引入假设我们有一个排序器,使用简单的插入排序实现对int类型的数组进行排序,代码如下所示:package com.rul.designpattern.strategy;import java.util.Arrays;/** * 简单插入排序排序器 *

2020-07-08 16:45:00 212

原创 学好Java设计模式--单例模式

单例模式的七种写法及简单分析单例模式是最简单的设计模式之一,属于创建型模式,它提供了一种创建对象的方式,确保只有单个对象被创建。这个设计模式主要目的是想在整个系统中只能出现类的一个实例,即一个类只有一个对象。单例模式主要是为了解决创建对象时较耗资源耗时间的问题。1、饿汉式写法这种写法主要的问题是静态变量在类加载进内存时就会初始化,即使没有使用,并且不能防止用户通过反序列化的方式实例化对象。package com.rul.designpattern.singleton;/** * 饿汉式 *

2020-07-07 21:39:34 169

原创 Java Object Layout

Java Object Layout – Java对象的内存布局在 Java 程序中,我们拥有多种新建对象的方式。除了最为常见的 new 语句之外,我们还可以通过反射机制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法来新建对象。其中,Object.clone 方法和反序列化通过直接复制已有的数据,来初始化新建对象的实例字段。Unsafe.allocateInstance 方法则没有初始化实例字段,而 new 语句和反射机制,则是通过调用构造器来初始化

2020-06-08 18:04:02 1468

转载 Dapper,大规模分布式系统的跟踪系统

文章目录Dapper,大规模分布式系统的跟踪系统概述1. 介绍1.1 文献的总结2. Dapper的分布式跟踪2.1 跟踪树和span2.2 植入点2.3 Annotation2.4 采样率2.5 跟踪的收集2.5.1 带外数据跟踪收集2.6 安全和隐私考虑3. Dapper部署状况3.1 Dapper运行库3.2 生产环境下的涵盖面3.3 跟踪Annotation的使用4. 处理跟踪损耗4.1 生成跟踪的损耗4.2 跟踪收集的消耗4.3 在生产环境下对负载的影响4.4 可变采样4.5 应对积极采样(Cop

2020-05-16 11:55:41 811

原创 Docker安装及简单使用

Docker安装及简单使用本文基于CentOS 7安装及使用Docker1、安装1.1 目前(2020/05/07)CentOS安装Docker系统版本要求CentOS 6.5(64bit)或更高版本,系统内核版本为 2.6.32-431 或者更高版本。CentOS 7(64bit),系统内核版本为 3.10 以上。#查看系统内核版本uname -r1.2 卸载...

2020-05-07 21:22:20 193

原创 HashMap源码详细注释

HashMap核心源码解读本文为CoderRuL原创,如需转载请附上本文链接!博主主页:https://blog.csdn.net/qq_43472474属性public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializabl...

2020-04-17 23:13:09 438

原创 数据库系统原理选择题

数据库系统原理选择题1、要保证数据库的逻辑数据独立性,需要修改的是||A||。A: 模式与外模式之间的映射B: 模式与内模式之间的映射C: 模式D: 三级模式2、数据库系统的数据独立性体现在||B||。A: 不会因为数据的变化而影响到应用程序B: 不会因为数据存储结构与数据逻辑结构的变化而影响应用程序C: 不会因为存储策略的变化而影响存储结构D: 不会因为某些存储结构的变化而影...

2020-04-11 22:00:40 6336 6

原创 Java多线程知识点

Java多线程知识点1.多线程基础什么是线程和进程? 线程与进程的关系,区别及优缺点?说说并发与并行的区别?为什么要使用多线程呢?使用多线程可能带来什么问题?(内存泄漏、死锁、线程不安全等等)创建线程有哪几种方式?(a.继承 Thread 类;b.实现 Runnable 接口;c. 使用 Executor 框架;d.使用 FutureTask)说说线程的生命周期和状态?什么是上下...

2020-04-08 16:00:47 182

原创 一千行MySQL

一千行MySQL基本操作数据库操作表的操作数据操作字符集编码数据类型(列类型)列属性(列约束)建表规范SELECTUNION子查询连接查询(join)TRUNCATE备份与还原视图事务(transaction)锁表触发器SQL编程存储过程用户和权限管理表维护杂项基本操作/* Windows服务 */-- 启动MySQL net s...

2020-04-02 21:53:50 251

原创 Spring JDBC 框架

Spring JDBC 框架文章目录Spring JDBC 框架JDBC 框架概述JdbcTemplate 类配置数据源数据访问对象(DAO)执行 SQL 语句执行 DDL 语句Spring JDBC 框架例子Spring JDBC 示例Spring 中 SQL 的存储过程JDBC 框架概述在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等。但 ...

2020-03-29 20:36:21 167

原创 Java源码解析之LinkedHashMap

Java源码解读之LinkedHashMapHashMap 是用于映射(键值对)处理的数据类型,不保证元素的顺序按照插入顺序来排列,为了解决这一问题,Java 在 JDK1.4 以后提供了 LinkedHashMap 来实现有序的 HashMapLinkedHashMap 是 HashMap 的子类,它保留了元素的插入顺序,在内部维护着一个按照元素插入顺序或者元素访问顺序来排列的链表,默认是按...

2020-03-27 21:38:02 156

原创 Spring 框架的 AOP

Spring 框架的 AOP文章目录Spring 框架的 AOPSpring 框架的 AOPAOP 术语通知的类型实现自定义方面Spring 中基于 AOP 的 XML架构声明一个 aspect声明一个切入点声明建议基于 AOP 的 XML 架构的示例Spring 中基于 AOP 的 @AspectJ声明一个 aspect声明一个切入点声明建议基于 AOP 的 @AspectJ 示例Spri...

2020-03-23 21:12:38 128

原创 Spring Beans 自动装配

Spring Beans 自动装配文章目录Spring Beans 自动装配Beans 自动装配自动装配模式自动装配的局限性Spring 自动装配 ‘byName’Spring 自动装配 ‘byType’Spring 由构造函数自动装配Beans 自动装配你已经学会如何使用<bean>元素来声明 bean 和通过使用 XML 配置文件中的<constructor-arg&...

2020-03-22 20:03:42 103

原创 Spring 依赖注入

Spring 依赖注入文章目录Spring 依赖注入依赖注入Spring 基于构造函数的依赖注入示例:构造函数参数解析:Spring 基于设值函数的依赖注入示例:使用 p-namespace 实现 XML 配置:Spring 注入内部 Beans例子Spring 注入集合例子注入 Bean 引用注入 null 和空字符串的值Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之...

2020-03-21 21:08:48 127

原创 初识计算机网络||物理层

计算机网络学习笔记 | 物理层1、物理层的基本概念物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。现有的计算机网络中的硬件设备和传输媒体的种类非常繁多,而通信手段也有许多不同方式。物理层的作用正是要尽可能地屏蔽掉这些传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,这样就可使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络...

2020-03-19 12:43:02 1512

原创 Java集合源码解析之LinkedList

Java集合源码解析之LinkedListLinkedList 同时实现了 List 接口和 Deque 接口,所以既可以将 LinkedList 当做一个有序容器,也可以将之看作一个队列(Queue),同时又可以看作一个栈(Stack)。虽然 LinkedList 和 ArrayList 一样都实现了 List 接口,但其底层是通过双向链表来实现的,所以插入和删除元素的效率都要比 ArrayL...

2020-03-17 11:12:40 99

原创 Lambda表达式

一、简介Lambda表达式(也称为闭包)是JDK8新增的功能,底层通过 invokedynamic 指令来生成匿名类来实现。Lambda表达式本质上是一个匿名方法,但这个方法不是独立执行的,而是用于实现由函数式接口定义的另一个方法。因此,Lambda表达式会导致生成一个匿名类函数式接口是仅包含一个抽象方法的接口。一般来说,这个方法指明了接口的目标用途。因此,函数式接口通常表示单个动作。例如,标...

2020-03-16 19:27:57 135

原创 并查集与种类并查集例题

并查集与种类并查集例题普通并查集How Many TablesToday is Ignatius’ birthday. He invites a lot of friends. Now it’s dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not ...

2020-03-07 17:39:47 271 1

原创 Java异常处理

Java异常处理异常是运行时在代码序列中引起的非正常状态。在不支持异常处理的计算机语言中,必须手动检查和处理错误,Java语言则采用面向对象的方式管理运行时错误一、概念Java异常是用来描述在一段代码中发生的异常情况的对象。当出现引起异常的情况时,就会创建用来表示异常的对象,并在引起异常的方法中抛出异常对象。方法可以选择自己处理异常或者传递异常交由其他方法来处理Java异常处理通过五个关键...

2020-03-06 13:46:58 212

原创 Java锁的分类

Java锁的分类本文参考Java1234《Java核心知识点整理》乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。 java中的乐观锁基本都是...

2020-03-03 14:33:31 118

原创 Java核心技术36讲阅读笔记(2)

Java核心技术36讲阅读笔记(2)本文参考极客时间杨晓峰-Java核心技术36讲本文为博主阅读《Java核心技术36讲》整理的笔记,如需转载,请附上本文链接1、Java提供了哪些IO方式,NIO如何实现多路复用?Java IO方式有很多种,基于不同的IO抽象模型和交互方式,可以进行简单区分。首先,传统的java.io包,它基于流模型实现,提供了我们最熟知的一些IO功能,比如Fil...

2020-02-27 20:33:08 293

原创 初识计算机网络||概述

计算机网络学习笔记(1)——概述本文参考谢希仁《计算机网络(第6版)》,电子工业出版社。本文为博主学习计算机网络课程整理的笔记,如需转载,请附上本文链接;1、计算机网络的定义及相关概念计算机网络的精确定义并未统一。较好的定义:计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型...

2020-02-26 16:06:32 3682

原创 Java核心技术36讲阅读笔记(1)

Java核心技术36讲阅读笔记(1)本文参考极客时间杨晓峰-Java核心技术36讲本文为博主阅读《Java核心技术36讲》整理的笔记,如需转载,请附上本文链接1.对“Write once,run anywhere!"的理解“一次编写,到处运行”说的是Java语言跨平台的特性,Java的跨平台特性与Java虚拟机的存在密不可分,可在不同的环境中运行。比如说Windows平台和Linux平...

2020-02-24 21:07:11 537

原创 软件工程课程笔记(1):软件工程概述

软件工程课程笔记(1):软件工程概述1、软件危机1.1 什么是软件危机​ 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的。实际上,几乎所有软件都不同程度地存在这些问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。鉴于软件危机的长期性和症状不明显的特征,近年来...

2020-02-24 16:50:04 926

原创 Java泛型知识点整理

Java泛型知识点整理Java泛型泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,我们就可以使用Java 泛型。泛型方法<E>泛型方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器...

2020-02-21 16:55:18 224

原创 Git 命令速查

Git 命令速查本文参考极客时间苏玲老师的《玩转Git三剑客》添加配置git config [--local | --global | --system] user.name 'Your name'git config [--local | --global | --system] user.email 'Your email'查看配置git config --list [--l...

2020-02-18 22:01:13 211

原创 Java 内存区域详解

Java 内存区域详解主要针对 HotSpot 虚拟机。常见面试题基本问题介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题String 类和常量池8 种基本类型的包装类和常量池一 概述对于 Java 程序员来说,在虚拟机自动内存管理机制下,...

2020-02-17 21:57:15 188

原创 Java多线程基础

Java多线程基础1、Java线程实现/创建方式1.1 继承Thread类Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。class MyThread extends Thread { public ...

2020-02-05 14:46:40 122

转载 微服务(Microservices)—Martin Flower

微服务(Microservices)—Martin Flower原文:Martin Flower 于 2014 年 3 月 25 日写的《Microservices》。译文:秦疆のJava世界微服务“微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务。目前,这种架构方式还没有准确的...

2020-02-02 16:35:03 1959

原创 JAVA异常分类及处理

JAVA异常分类及处理概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KuyRC6YR-1579768931465)(C...

2020-01-23 16:43:37 142

空空如也

空空如也

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

TA关注的人

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