自定义博客皮肤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)
  • 资源 (2)
  • 收藏
  • 关注

原创 Git常用命令

1 初始化Git仓库Git说白了就是一个版本仓库,每个版本都关联本地磁盘中具体的文件,那么如何将文件关联到仓库中呢。(1)首先先进入本地磁盘文件目录(2)先使用git 仓库状态命令查看仓库情况发现当前目录还不是git仓库(3)执行git仓库初始化命令Git init (4)查看仓库状态仓库中状态正常,没有任何文件2仓库文件管理初体验(1)执行touch命令创建一个java文件(2)查看新增文件的状态Git statu...

2022-05-18 23:25:00 980

原创 Git安装和配置

Linux安装如果您使用 Fedora(或任何密切相关的基于 RPM 的发行版,例如 RHEL 或 CentOS),您可以使用dnf:sudo dnf install git -all如果您使用的是基于 Debian 的发行版,例如 Ubuntu,请尝试apt:sudo apt install git-allMacOS安装在 Mac 上安装 Git 有多种方法。最简单的可能是安装 Xcode 命令行工具。在 Mavericks (10.9) 或更高版本上,您只需第一次尝试g

2022-05-11 23:41:09 207

原创 什么是Git

1 是快照不是差异Git 与任何其他 VCS(包括 Subversion 和朋友)之间的主要区别在于 Git 对其数据的思考方式。从概念上讲,大多数其他系统将信息存储为基于文件的更改列表。这些其他系统(CVS、Subversion、Perforce、Bazaar 等)将它们存储的信息视为一组文件以及随时间对每个文件所做的更改(这通常被描述为基于 delta 的版本控制)。将数据存储为每个文件的基本版本的更改Git 不会以这种方式思考或存储其数据。相反,Git 认为它的数据更像是一个微型文件系.

2022-04-27 22:38:16 255

原创 大话GIT之版本管理简介

1 版本管理是什么相信大家在玩游戏的时候,都有这样的体验,比如游戏有5个关卡,大杠同学第一天就过了3关,非常开心,但是第二天要上班,就会保存游戏进度,等到下次的时候再继续,然后第二次又过了1关到了第4关,马上就要通关了,这个时候大杠在官网发现第3关还有隐藏彩蛋没有体验到,于是保存了第4关,把游戏进度设置为第3关,重新打怪升级,毕竟花钱买的游戏,一定要榨干每一个体验,但是玩着玩着,发现第3关的新玩法玩不下去了,大杠同学很烦,不想在第3关继续浪费时间,但是又有些遗憾,希望通关后再重新来试一下,于是又保存了第

2022-04-23 11:16:22 240

原创 Redis脑裂问题

背景假设现在有三台机器,分别安装了redis服务,结构如图故障发生:如果此时master服务器所在区域网络通信出现异常,导致和两台slave机器无法正常通信,但是和客户端的连接是正常的。那么sentinel就会从两台slave机器中选举其中一个作为新的master来处理客户端请求。如图这个时候,已经存在两台master服务器,client发送的数据会持续保存在旧的master服...

2019-11-02 09:20:03 4667 3

原创 设计模式-装饰者模式

什么是装饰者模式装饰模式是在不使用继承和不改变原类文件的情况下,动态的扩展一个对象的功能。组成结构1.Component(抽象组件又叫被装饰对象的基类)2.ConcreteComponent(具体组件又叫具体被装饰对象)3.Decorator(装饰者抽象类)4.ConcreteDecorator(具体装饰者)假设一个场景在学校门口有一个卖煎饼的早餐车,主要是...

2019-10-31 23:03:23 117

原创 设计模式-简单工厂模式

简单工厂模式的优缺点优点简单工厂模式的核心是工厂类,其中包含了必要的判断逻辑,由此决定应该去创建哪个对象,客户端不用管理创建的具体逻辑,如果逻辑非常复杂,对于客户端来说更加方便简捷。缺点创建所有产品的逻辑都放在工厂类中,工厂需要知道每一种产品的创建过程,逻辑过于集中,添加新的产品生产逻辑时,势必会违反开闭原则,需要修改工厂类。简单工厂模式代码package com....

2019-10-29 20:36:36 112

原创 设计模式-模板模式

背景现在餐厅有两个服务员,一个人负责煮茶,一个人负责煮咖啡,步骤如下煮茶:1.把水烧开2.倒入茶叶3.加水煮咖啡:1.把水烧开2.倒入咖啡3.加水不用设计模式的实现package com.example.designMode.template;public class Origin { public static class TeaP...

2019-10-29 13:40:24 130

原创 设计模式-中介者模式

背景现在有三个模块,A,B,C,这三个模块之间存在互相调用使用设计模式之前package com.design.mode.meditor;public class Origin { public static class ModuleA { public void executeModule() { System.out.prin...

2019-10-27 23:12:57 199

原创 设计模式-观察者模式

背景在军训的时候,当教官发起命令立正的时候,所有的学员必须执行教官的命令。在这个场景中,教官是一个被所有学员观察的对象,一旦教官的指令发出,学员就必须做出相应的反应。代码package com.design.mode.observer;import java.util.ArrayList;import java.util.List;public class Observer...

2019-10-27 21:11:20 98

原创 设计模式-策略模式

背景根据不同的折扣政策,计算商品的价格使用策略模式之前package com.design.mode.strategy;public class Origin { public static void main(String[] args) { int discountRate = 8; discount(discountRate); ...

2019-10-27 20:34:32 162

原创 零拷贝

1.为什么使用零拷贝我们假设一个场景,将本地文件上传到网络上,伪代码如下:read(file, tmp_buf, len);write(socket, tmp_buf, len);注意,别看代码操作就读和写两个,实际在操作系统中涉及到4次以上的数据复制以及上下文切换,如图注意:该图分成上下两部分,上面是上下文切换,下面是对应的数据在内存中的操作过程是这样的:步骤一:...

2019-07-30 22:25:50 421

原创 链表实现栈结构及应用场景描述

1.栈的特点仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。如果用链表实现栈,怎么利用链表去做呢,我们可以把链表头看成栈顶,链尾堪称栈底,添加元素的时候,元素添加到链表头,删除的时候,删除链表头即可。2.代码实现2.1先构建一个链表实现,方便自定义链表的操作代码如下,具体实现可参考上篇文章public class StackBaseLink&l...

2019-07-08 23:37:28 947

原创 java实现单向链表和优化

1.链表的时间复杂度分析查询元素时间复杂度链表是不支持随机访问的,在链表中只有从头节点开始一个一个往下找,找到查询的元素为止,比如链表的长度为n,最好的情况是头节点就是需要找的元素,那么就是一个时间单元1*unit_time,,最坏的情况是最后一个节点是需要找的元素,那么就是n*unit_time,那么平均时间复杂度就是n/2*unit_time;根据大O推导出,时间复杂度为O(n);...

2019-07-08 16:13:55 409

原创 先从算法时间复杂度分析开始

1.为什么要进行复杂度分析在编写和使用数据结构和算法的时候,怎么去比较它们之间的优劣,需要一个评判标准,目前主要的分析维度是两方面,时间和空间,什么意思呢,时间复杂度分析就是这个算法在一定的运算量级下的消耗时间,时间越少越优,空间复杂度分析可以看作是占用内存空间的大小,空间越小越优。2.时间复杂度分析大O复杂度表示法如下代码public int sum(int n) { ...

2019-07-08 10:18:16 232 1

原创 怎么学习数据结构和算法

1.先叨叨几句说实话,之前代码的时候很少考虑数据结构,一方面是因为写的主要是业务代码,另外一方面是因为很多编程语言都已经封装好了基本的数据结构,拿来即用,最多也就了解基本的一个数组和链表的特点以及效率问题,因为最近重新找工作,也趁着这段时间好好的了解了数据结构这一块,有了深入的了解后,感觉还确实不一样,因为只有了解后,才知道到每种数据结构特点及应用场景,甚至针对特殊场景进行结构优化,当然,一般...

2019-07-07 22:32:27 874 1

原创 java实现二分搜索树

二分搜索树的特点1.二分搜索树的每一个节点的值大于其左子树的所有节点的值,并且小于其右子树的所有节点的值2.每一颗子树也是二分搜索树3.因为它的存储是有序的,存储的元素必须具有可比较性树结构的遍历方法前序遍历:先遍历根结点,再遍历左子树,最后遍历右子树。中序遍历:先遍历左子树,再遍历根结点,最后遍历右子树,遍历结果从小到大有序排列后序遍历:先遍历左子树,再遍历右子...

2019-06-27 21:28:23 120

原创 使用LinkList实现LRU

LRU特点1.固定容量,超过容量删除最近最少使用的数据2.新增加的元素,如果存在需要刷新它的生命周期链表实现关键点1.给链表设置一个固定长度,如果超过固定长度,删除链表末尾的元素2.新添加元素,将元素放在链表头3.判断元素是否已存在,如果存在,需要先删除,然后再添加到表头代码实现public class LruTest<E> { private...

2019-06-26 20:52:59 1134

原创 自定义单向链表

背景我们知道在java里面有许多数组结构,比如队列,栈等等,但是这些数据结构都是由数组、链表或者树等基本数据结构构造的。所以这里自己定义了一个扩容数组,可以用来扩展成队列或者是栈。public class UniLink<E> { //链表头结点 private Node head; //链表元素个数 private int size;...

2019-06-26 19:59:53 187

原创 自定义扩容数组

背景我们知道在java里面有许多数组结构,比如队列,栈等等,但是这些数据结构都是由数组、链表或者树等基本数据结构构造的。所以这里自己定义了一个扩容数组,可以用来扩展成队列或者是栈。代码public class UniArr<E> { private E[] arr; private int size; private final int DEFAU...

2019-06-26 19:58:11 525

原创 Perl正则表达式入门

1.简述正则表达式( Regular Expression, regexp )是一种描述字符串特征的语法规则 ,用于验证各种字符串是否匹配( Match)这个特征,进而实现高级的文本查找、替换、截取内容等操作 。 例如,要在大量的文本中找 出符合某个特征的字符串,就将这个特征按照正则 表达式的语法写出来,形成一个用于计算机程序识别的模式( Pattern),然后计算机程序就会根据这个模式到文本...

2019-06-20 15:30:29 491

原创 java中的静态分派和动态分派

1.理解前提在理解静态分派和动态分派之前我们需要先理解静态类型和动态类型。静态类型,是在编译期间可知的,什么意思呢,就是在使用javac命令编译java文件时确定的指令集。动态类型,则是编译期间不可知,只有在运行期间才能确定的。2.静态分派为了更好的说明静态分派,参考如下重载方法的代码public class Person { public void sayHe...

2019-06-20 10:53:16 506

原创 Nginx安装详解

1.下载Nginx安装包下载链接地址2.拷贝/解压安装包因为是tar包,需要执行命令tar -zxvf nginx安装包3.安装需要编译的插件Gcc:yum install gcc c++ (用于编译c、c++代码)Pcre:yum install -y pcre pcre-devel (用c语言编写的正则表达式函数库))Zlib:yum in...

2019-06-19 14:48:46 98

原创 Nginx进阶(一)

1.主要应用场景通过本地文件系统提供静态资源服务,也就是常说的静态资源分离 利用其强大性能,缓存,负载均衡为服务端提供反向代理服务 提供API服务2.优点高并发,高性能 可扩展性好 高可靠性 热部署 BSD许可证3.Nginx的组成Nginx二进制可执行文件(由各模块原码编译出的一个文件) Nginx.conf配置文件(控制Nginx的行为) access.log(...

2019-06-19 08:54:15 238

原创 JVM垃圾收集器的特点和比较

1.垃圾收集器分布图2.各垃圾收集器的特点和作用3.相关名词解释3.1 Stop The World在垃圾回收器进行回收之前,JVM会对内存中的对象进行一次可达性分析,也就是哪些是可回收的,哪些是不可回收的,但是在这个判断的过程中,要求JVM中的对象是不可变得,也就是要求一个快照,所以在这个时候就会暂停所有的工作线程,也就是所说的Stop The World。3.2 ...

2019-06-18 10:32:49 226

原创 Spring源码之一(定位、加载、注册)

1.阅读前言Spring框架的核心是IOC和AOP,而IOC流程可以分为两个主线,第一条主线是启动容器时候针对配置文件进行加载解析,第二条主线是从容器中获取实例对象的时候,容器进行的初始化。这篇文章主要针对第一条主线进行详细分析。2.容器核心接口2.1 BeanFactory2.1.1 主要方法及属性2.1.2 作用BeanFactory中主要定义了容器的基本功能方法...

2019-06-16 20:43:47 502

原创 CopyOnWriteArrayList的特性

特性1.依赖于底层数组复制,对于修改操作是线程安全的//添加元素public boolean add(E e) { //低效操作(1) 加锁,使用ReentrantLoc是一个消耗性能的方式 final ReentrantLock lock = this.lock; lock.lock(); try { ...

2019-03-30 23:57:03 180

原创 数据库死锁导致rpc服务超时分析

发生背景服务A和服务B同时对一个表中的同一条记录进行了更新操作流程如图代码示例//服务A@Transactionalpublic void serviceAmth{ System.out.println("服务A事务方法开启"); //此处更新db_test数据库中table_test表中id=1的记录 update db_test.table_test set n...

2018-12-02 23:15:21 371

原创 java中对象拷贝的几种方式

方式一实现Cloneable接口,重写clone()方法示例对象@Datapublic class User implements Cloneable,Serializable { private static final long serialVersionUID = 1L; private String name; private int age; ...

2018-12-01 23:50:08 1492

原创 java.util.ConcurrentModificationException 故障分析

错误示例代码@Test public void testInteger() { ArrayList list = new ArrayList(12); list.add(111); list.add(222); list.add(333); //获取迭代器 Iterator iterato...

2018-12-01 20:26:43 130

原创 Eclipse中离线安装Activity插件,亲测可用

1.下载插件包和相关jar链接:https://pan.baidu.com/s/1TuY74XskEcfXmKyk7O7S0w 提取码:z30v  2.将文件中的4个jar包放入eclipse安装目录下的plugins目录下3.打开eclipse,选择help4.填写Name,和选择离线文件  ...

2018-11-25 13:27:25 1333

原创 Base64的使用和场景

概念Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于 2的6次方=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuen...

2018-08-05 13:42:38 2453

原创 二进制原码和补码的转换

1.概念理解(注意正数的反码和补码就是原码,负数的补码是反码加1)正数:原码=反码=补码正数举例(数字3):11(原码)=11(反码)=11(补码)负数:原码取反=反码;反码+1=补码负数举例(数字-3):111(原码)-&gt;100(反码)-&gt;101(补码)(注意第一个1为符号位,0为正,1为负)2.原码和补码转换以-3为例:原码-&gt;补码:111(原码)=100(反码)=101(补...

2018-06-05 06:08:20 19392

原创 GitHub入门(八)-Pull Request流程

1.概念图2.流程    2.1FORK    访问仓库页面,点击 Fork 按钮创建自己的仓库         2.2CLONE    把这个仓库 clone 到当前的开发环境中    2.3BRANCH    在 GitHub 上发送 Pull Request 时,一般都是发送特性分支。这样一来, Pull Request 就拥有了更明确的特性(主题)。让对方了解自己修改代码的意图,有助于提高...

2018-05-21 06:09:07 1432

原创 GitHub(七)-本地和远程仓库的操作

1.推送至远程仓库    1.1添加远程仓库 (origin作为远程仓库的别名)        $ git remote add origin [email protected]:github-book/git-tutorial.git     1.2推送至远程仓库         1.2.1推送至 master 分支         $ git push -u origin master       ...

2018-05-20 20:21:03 353

原创 GitHub(六)-更改提交的操作

1回溯历史版本 执行命令(根据环境的哈希值切换版本):$ git reset --hard fd0cbf0d4a25f747230694d95cac1be72d33441d (哈希值,是环境的唯一标识)查找环境哈希值:git reflog 2.消除冲突    2.1冲突场景    当执行合并的时候可能出现冲突    $ git merge --no-ff fix-B    Auto-merging...

2018-05-20 10:37:21 1442

原创 GitHub入门(五)-分支的操作

分支的操作1显示分支一览表 $ git branch 2.创建、切换分支     2.1git checkout -b  分支名    2.1切换到 master 分支$ git checkout -b master2.特性分支特性分支顾名思义,是集中实现单一特性(主题),除此之外不进行任何作业的分支。在日常开发中,往往会创建数个特性分支,同时在此之外再保留一个随时可以发布软件的稳定分支。稳定分支...

2018-05-20 09:27:16 1770

原创 GitHub入门(四)

基本命令操作1.初始化仓库进入指定目录$ cd E:\githome初始化:$ git init初始化成功提示:Initialized empty Git repository in /Users/hirocaster/github/github-book/git-tutorial/.git/ 2.查看仓库状态查看命令:$ git status提示处于master分支下:# On branch m...

2018-05-20 09:06:27 290

原创 GitHub入门(三)

1.创建仓库1.1实际创建一个公开的仓库。点击右上角工具栏里的 New repository图标,创建新的仓库。 1.2选项说明*****Description Description 栏中可以设置仓库的说明。这一栏不是必需项,可以留空。 *****Public、Private 在这一栏可以选择 Public 还是 Private。这里我们选择 Public,创建公开仓库,仓库内的所有内容都会被公...

2018-05-20 08:30:16 383

原创 GitHub入门(二)-本地连接GitHub

1.使用GitHub前的准备1.1创建GitHub账号创建账号1.2设置SSH Key1.2.1生成密钥和公钥$ ssh-keygen -t rsa -C "[email protected]"Generating public/private rsa key pair.Enter file in which to save the key(/Users/your_user_direct...

2018-05-19 21:48:29 2092

springboot最新参考手册(pdf)

最新版官网springboot参考手册,日期:2017-12-27下载

2017-12-27

spring+springmvc+mybatis框架

整合了spring+springmvc+mybatis+log4j+c3p0,百分百成功运行

2017-10-05

空空如也

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

TA关注的人

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