自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在deepin系统下安装git

使用快捷键Ctrl+Alt+T打开终端或者鼠标右键桌面 在终端中打开在终端输入 sudo apt-get update 然后输入你的密码输入密码后输入 sudo apt-get install git等待安装完成后在终端输入 git终端打印出git基本指令就说明安装完成了,就可以使用了。...

2021-01-21 23:27:40 1594

转载 MyEclipse6.5+SVN配置与使用

安装方法一、直接拷贝解压文件至MyEclipse安装目录下下载SVN插件site1.6.16.zip http://download.csdn.net/detail/u011631266/6399693解压插件包将features、plugins目录下的文件拷至MyEclipse安装目录下eclipse下的对应目录下面,重启Myeclipse安装方法二、直接从MyEclipse集成工具里下载打开Myeclipse,在菜单栏中选择Help→SoftwareUpdates→Find

2020-05-26 09:03:47 481

原创 TCP中回传了SYN信号为什么还要传ACK?

TCP是可靠连接,双方都要确保发送的信息是可靠的、准确无误的。回传了SYN只是证明服务器收到的确实是客户端发送的信号,但是服务器到客户端之间的通道还需要ACK信号来保证信息的准确无误。...

2020-03-21 10:01:19 1994

原创 TCP三次握手中为什么要传回SYN?

SYN是在建立连接时用到的同步信号。接收方再第二次握手的时候回传SYN是证明双方之间通信的通道没有问题,我收到的信息确实是你(客户端)发送的信号。...

2020-03-21 09:54:22 2566 1

原创 SpringShiro认证源码详解

Authentication 认证认证(Authentication):身份验证的过程,也就是证明一个用户的真实身份。为了证明用户身份,需要提供系统理解和相信的身份信息和证据。需要通过向 Shiro 提供用户的身份(principals)和证明(credentials )来判定是否和系统所要求的匹配。Principals(身份)是Subject的“标识属性”,可以是任何与Subject...

2020-01-09 15:47:18 209

原创 SpringShiro权限控制介绍

What is Apache Shiro?Apache Shiro是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。Apache Shiro的首要目标是易于使用和理解。安全通常很复杂,甚至让人感到很痛苦,但是Shiro却不是这样子的。一个好的安全框架应该屏蔽复杂性,向外暴露简单、直观的API,来简化开发人员实现应用程序安全所花费的时间和精力。那S...

2020-01-09 14:46:03 130

原创 悲观锁和乐观锁

悲观锁悲观锁总是假设最坏的情况,每次去拿数据的时候认为别人都会修改数据,所以每次拿数据的时候都会上锁。关系型数据库经常会用到,比如表锁和行锁。代表就是synchronized和Reentrantlock,经常用于多写场景。乐观锁乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会更改数据,所以不会上锁。但是在更新的时候会判断一下在此期间别人有没有更改数据。乐观锁常用于多写场景冲突发...

2020-01-08 23:03:46 104

原创 设计模式----单例模式

饿汉模式public class Persident{ private static Persident p = new Persident(); private Persident(){ system.out.println("产生一位总统"); } public static Persident getInstance(){ return p; }}在main函数中...

2020-01-08 22:37:12 105

原创 java三大特性----封装、继承、多态个人理解

封装把对象的属性和方法结合成一个独立的整体,隐藏实现细节,并且提供对外访问的接口。封装的优点:1、隐藏实现细节。2、安全性。比如set,get方法中设置校验,调用者就不能随意赋值。3、增加代码的复用性。4、模块化,有利于代码调试。继承从已知的一个类中派生出一个新类,叫做子类。子类实现了父类所有非私有化的属性和方法,并根据实际需求扩展出新的行为。继承的优点:1、继承是传递的,易于...

2020-01-08 22:18:07 204

原创 锁的实现原理以及锁的升级过程

锁就是为了解决多个并行执行分支对同一资源进行同步访问的问题。synchronized和lock锁synchronized又称为内置锁、监视锁。synchronized是java中的关键字,可以理解为java中内置的功能,所以为内置锁。synchronized又通过monitorenter和monitorexit两个指令来控制获取锁和释放锁,monitor为监视的意思,所以synchroni...

2020-01-08 14:29:35 1382

原创 TCP和UDP的传输过程以及TCP如何保障传输的可靠性

TCP和UDP都是传输层的协议,传输层的主要任务就是建立应用程序端对端的连接,并且为数据传输提供可靠或不可靠的通信服务。TCP:提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。UDP:在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。TCP建立连接的过程?TCP三次握手:1、客户端向服务器发送连接请求,请求中包含连接请求的同步序...

2020-01-03 16:49:06 1046

原创 RPC和HTTP的理解以及不同之处

RPC协议:远程过程调用协议(Remote Procedure Call Protocol),是一种计算机通讯协议。如何理解远程过程调用?假设有两台服务器A和B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一个内存空间,所以不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。简要的步骤解决通讯问题。主要是客户端和服务器建立TCP连接,远程调用所有交...

2020-01-02 17:50:37 614

原创 关于AOP的一些简单理解

AOP的意思的面向切面编程,有的业务场景都需要应用重复的代码,比如登录,开启事务,结束事务,日记记录等等。这时候我们可以将这部分代码抽象成一个切面,然后进行注入。我们所说的重复代码就类似代码A和代码B。而AOP增强是对原有程序内部注入一些逻辑代码来增强原有程序功能。AOP增强分为五种类型:前置增强:在目标方法执行前面注入代码进行增强。后置增强:在目标方法执行后面注入代码进行增强。异...

2019-12-27 16:32:58 157

原创 在一个vue文件里使用另外的vue文件

这篇文章演示的是如何用Vue.js官方命令行快速搭建的项目中如何在App.vue中使用其他的vue文件(组件)。快速搭建的vue项目中目录结构有src下的components和App.vue。如下图:components是用来存放组件文件。App.vue是项目入口文件。我们在components中创建两个组件文件。若想使用这两个文件,首先需要在router > ind...

2019-12-24 10:57:34 9872

原创 面试问题记录 -- 关于一次HTTP请求的过程

在浏览器输入 www.baidu.com 按下回车究竟会发生什么呢?过程概述浏览器对 www.baidu.com 这个域名进行DNS域名解析,获得对应的IP地址。通过IP地址找到对应的服务器,发起TCP三次握手。基于TCP连接,发送HTTP请求。服务器响应请求,并且返回html代码。浏览器解析html的代码,并且请求静态资源(如:js、css、img等)。浏览器将渲染的页面呈现给用...

2019-09-26 11:34:22 599

原创 SQL语句distinct去重使用方法

很多时候数据库查出来的数据会出现重复的情况。不过这些情况用distinct就可以解决。表A:idname1a2b3c4b1a表B:provincecity河北省石家庄市河北省石家庄市1.对于单列的去重select distinct name from A执行之后的结果:nam...

2019-08-15 16:08:57 14456 1

原创 IDEA springboot框架将项目打成war包

打开项目找到右侧maven打开之后选择clean然后点击war:exploded再点击package成功之后,这个就是我们需要的war包

2019-08-14 15:56:38 957

原创 select选择框和js实现省份城市级联查询

文章目录实现效果如何实现代码单表的查询我们很轻易的就能够查出省份和城市,但是有很多情况需要进行级联选择查询,本文就是使用select和js实现!实现效果实现效果:选择省份,点击另一个select框显示对应城市。如何实现想要实现这样的效果我们需要给省份这个select添加一个onchange事件,通过js来控制城市的select展示的内容代码html代码: <select c...

2019-08-14 15:21:13 4223

原创 mybatis根据省份查询城市的多表查询

文章目录准备工作代码代码解读准备工作想做省份城市的级联查询,需要有省份表、城市表两张表。省份表中有省份id、省份名称。城市表中有城市id、城市名称、省份关联id。有了这两张表,我们就可以开工了!代码<selec id="selectCity"> SELECT t_city.city FROM t_city LEFT JOIN t_province ON t_p...

2019-08-14 14:51:42 725

原创 volatile的底层实现原理

引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是 轻量级的synchronized ,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分...

2019-06-20 14:11:26 323

原创 mybatis中between...and...语句的写法和详解

在mysql中,有很多时候都需要以时间条件进行时间范围查询,between…and…多数用于这种情况。下面时间范围查询的写法:<select id="timeSelect" resultMap="BaseResultMap"> SELECT COUNT(*) FROM 表名 <where> ActionTime between...

2019-06-14 14:42:09 48086 2

原创 虚拟机栈和本地方法栈溢出

由于HotSpot虚拟机中并不区分虚拟机栈和本地方法栈,因此,虽然设置本地方法栈大小的参数(-Xoss)存在,但是无效,栈容量只能由-Xss参数设定。关于虚拟机栈和本地方法栈溢,在java虚拟机规范中描述了两种异常:如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常如果虚拟机在扩展栈时无法申请到足够内存空间,则抛出OutOfMemoryError...

2019-06-09 15:42:00 752 1

原创 java本地内存直接溢出

DirectMemory容量可通过 -XX:MaxDirectMemorySize指定,如果不指定,则默认与java堆最大值一样,虽然使用DirectByteBuffer分配内存也会抛出内存溢出异常,但它抛出异常时并没有真正向操作系统申请分配内存,而是通过计算得知内存无法分配,于是手动抛出异常,真正申请分配内存的方法是unsafe.allocateMemory()下面是测试代码:public ...

2019-06-09 10:54:29 487

原创 Java堆溢出

java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。限制Java堆大小为20MB,不可扩展,通过参数-XX:+HeapDumpOnOutOfMemoryError可以让虚拟机再出现内存溢出异常时Dump出当前内存堆转储快照/***VM Args:-Xms20m -...

2019-06-07 23:58:35 131

原创 JVMHotspot OutOfMemory异常信息整理

在java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都又发生OutOfMemory(简称:OOM)异常的可能。1.java堆内存溢出java.lang.OutOfMemoryError:Java heap spaceJava堆内存的OOM异常实际应用中常见的内存溢出异常情况。当出现Java堆内存溢出时,异常堆栈信息“Java.lang.OutOfMemoryErr...

2019-06-07 22:31:10 192

原创 JAVA中String,StringBuilder,StringBuffer三者的区别原理

三者源码上的区别:在java 8 ,也就是jdk1.8中我们可以看到关于String的部分源码public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character stora...

2019-06-05 17:33:37 103

原创 java快速排序算法最易懂的解释!

快速排序的基本实现思想:选取数组的第一个元素作为基准值key。从数组最后一个元素high开始依次向前与key进行比较分区,将不小于key的数全放到它的右边,不大于key的数全放到它的左边。比较交换之后以key下一个元素为基准再对左右区间重复第二步,直到各区间只有一个数算法的具体实现:根据基本思想描述,在上图已经标出了key和最后一个元素highkey开始与最后一个元素比较,也...

2019-06-04 22:57:31 564 1

原创 java按值传递和按引用传递最易懂的解释!

按值传递一些小白在写java程序时 会遇到这样的问题:public static void method( int as){ as = 100; }public static void main(String[] args){ int as = 50; method(as); System.out.println(as); }以上代码输出结果还...

2019-06-04 12:47:01 205

原创 java中变化的数据为什么不可以压缩

上一篇文章说基本类型数组可以进行压缩存储,因为基本类型数组是有固定的存储空间的变化的数据我们用引用类型数组来举例引用类型的数组进行存储时,我们通过对象改变数组的里值,但是他的空间长度不会固定不变,这点引用类型数组和基本类型数组是有差别的。所以引用类型的数组不能够压缩存储,它的空间长度是可以发生变化的。如果几个存储空间会发生变化的数组进行压缩存储的话,会造成内存溢出的情况,这并不是我们想...

2019-06-03 10:37:28 147

原创 JAVA中匿名对象的性能优势分析

以匿名数组为例在java中,提供了一种创建数组对象并同时赋予初始值的简化书写形式。int[] arr = {2,3,4,5,11,13};在使用这种语句时,不需要调用new。也可以初始化一个匿名数组:new int[] {13,24,56,75}这种表示方法将创建一个新数组并利用括号中提供的值进行初始化,数组的大小就是初始值的个数。匿名数组这种语法形式可以在不创建新变量的前提下...

2019-06-03 10:27:30 557

原创 java数值类型的乘除位运算优化原理

2019-06-03 10:14:50 498 2

原创 数组存储压缩原理

2019-06-02 22:46:41 892

原创 python的输入输出以及list和tuple使用

python的输入输出python的输出用print()在括号中输入字符串,就可以输出我们指定的文字。print('你是真的秀')如下是我们的运行成果:用print()

2019-05-27 20:44:01 3413

原创 每天一个linux命令(3):pwd命令

Linux中用 pwd 命令来查看”当前工作目录“的完整路径。 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。命令格式:pwd [选项]命令功能:查看”当前工作目录“的完整路径常用参数:一般情况下不带任何参数如果目录是链接时:格式:pwd -P 显示出实际路径,而非使用连接(li...

2019-05-19 11:23:22 126

原创 每天一个linux命令(2):cd命令

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。命令格式:cd [目录名]命令功能:切换当前目录至指定文件夹常用命令示范:1....

2019-05-18 09:35:13 201

原创 虚拟机启动出现“内部错误”解决方法

我今天在使用虚拟机时出现了一些问题,特此记录一下。针对于虚拟机安装成功了,镜像也存在,注册码都输入完毕的情况下。开启此虚拟机时出现了如下错误:遇到这个错误我们首先要检查我们服务是否启动了VMware的一系列服务。可以看到我这里虽然显示自动启动,但是VM一系列服务没有启动,我们需要手动将他们启动当显示正在运行时,在返回我们的页面,发现虚拟机就可以正常使用了...

2019-05-18 09:15:23 9214 5

原创 每天一个linux命令(1):ls命令

ls命令就是list的缩写,ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。命令格式:ls [选项] [目录名]命令功能:列出目标目录中所有的子目录和文件。...

2019-05-15 17:37:46 358

原创 javascript的基本数据类型,创建函数、调用函数三种方式,定义对象三种方法,创建类以及继承的标准写法

javascript的基本数据类型javascript是弱类型脚本语言,声明变量时无须指定变量的数据类型。javascript总共有5种基本数据类型。分别是:1.数值类型: 包含整数或浮点数。2. 布尔类型:只有true和false两个值。3. 字符串类型:字符串变量必须用引号括起来,引号可以是单引号也可以是双引号。4. undefined类型:专门用来确定一个可以创建但是没有初值的变...

2019-04-17 20:49:10 321

原创 静态块、构造块、构造函数调用构造对象的先后顺序

初始化块在进行静态块、构造块调用构造对象之前,我们需要先知道初始化块。在一个类的声明中,可以包含多个代码块,只要构造类的对象,这些块就会被执行。例如:class Employee{ private static int nextId; private int id; private String name; private double salary; { id = nex...

2019-04-13 22:50:22 383

原创 java方法参数

为了更好理解方法参数这个词,我们要先明白什么使方法。方法:我们先可以看一下方法的定义: 访问修饰符] [static] [是否有返回值类型] 方法名(参数列表){ [方法执行体] [return返回值] }举一个通俗易懂的例子,Person类就表示一个对象 或者是一类对象 这里就是指“人”人都有眼睛、嘴巴 这些就是人的属性人能够做什么?...

2019-04-11 21:56:31 389 1

空空如也

空空如也

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

TA关注的人

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