自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-JAVA学习之路(逐渐完善...)

Java学习基础1、掌握运算符、流程控制、表达式的使用。2、掌握String类的使用。3、掌握基本数据类型和自动装箱拆箱4、掌握异常处理机制、IO流、数组、集合的使用5、掌握计算机网络基本知识,了解Socket、TCP/IP协议族知识点6、了解JDK新特性进阶1、掌握代理、反射、泛型2、锁机制3、集合类的源码理解JVM1、JVM内存模型2、垃圾回收机制、垃圾回收算法3、类加载机制数据库MySql1、引擎2、索引3、锁机制、事务…...

2021-01-26 17:03:41 244

转载 java锁机制

悲观锁:线程会锁住同步资源乐观锁:线程不会锁住同步资源悲观锁适合写操作多的场景,先加锁可以保证写操作时数据正确。乐观锁适合读操作多的场景,不加锁的特点能够使其读操作的性能大幅提升。问题1:为什么乐观锁不锁定同步资源也能保证线程安全?CAS全称 Compare And Swap(比较与交换),是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。java.util.concurrent包中的原子类就是通过CAS来实现了乐观锁。CAS算法涉及到三个操作数:

2021-01-15 16:16:39 269

转载 Git 配置

本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以配置SSH key之后,上传代码到Github远程仓库时就不用输入密码了。一般是在C盘用户目录下有一个 something 和 something.pub 来命名的一对文件,这个 something 通常就是 id_dsa 或 id_rsa。有 .pub 后缀的文件就是公钥,另一个文件则是密钥。连接时必须提...

2019-12-29 10:16:56 220

原创 阿里云服务器安装Docker/MySQL/Redis

Docker安装一、安装命令:yum install docker二、设置开机自动启动:service docker start三、查看版本:docker version四、解决docker拉取镜像慢的问题1、输入脚本,更改仓库(仓库(Repository)是集中存放镜像文件的场所。)curl -sslhttps://get.daocloud...

2019-12-04 14:02:46 1209 1

原创 阿里云服务器新手搭建(jdk/tomcat)

一、控制台控制台可以对你的服务器进行管理,可以强制重启、关机、重置密码、等操作。1、进入控制台,地址:https://ecs.console.aliyun.com/点击实例:2、重置密码新买的服务器必须先重置密码才能使用,操作如下:3、重启服务器二、下载XShell 和 FileZilla(远程连接和文件传输)1、xshell新建连接点,注意主机ip是公...

2019-12-04 11:52:19 454

原创 sql server 2008安装教程

一、下载安装包 链接:https://pan.baidu.com/s/1omBFj1cms1T33G6u4156XQ 提取码:2ft9二、一路next即可,不想装在C盘,可修改存放路径详细安装步骤三、可能遇到的问题Restart computer failed解决方案:打开命令行- >输入regedit1、根据如下路径找到PendingFileRe...

2019-12-01 10:35:34 247

原创 使用Xshell连接Vbox中的Centos7

一、首先启动网卡的,CentOS 7 默认是不启动网卡的(ONBOOT=no)cd/etc/sysconfig/network-scripts/进入ifcfg-enp0s3 : viifcfg-enp0s3 ,修改ONBOOT=no 为yes ,保存重启网络服务:sudo service network restart二、xshell连接推荐这位博...

2019-11-04 10:09:15 216

原创 蚂蚁学堂(1):14--ActiveMQ

消息中间件概述1.1 消息中间件产生的背景在客户端与服务器进行通讯时.客户端调用后,必须等待服务对象完成处理返回结果才能继续执行。客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用户的请求不可达,客户会受到异常。1.2 什么是消息中间件面向消息的中间件(MessageOrlentedMiddlewareMOM)...

2019-10-31 09:44:37 128

原创 蚂蚁学堂(1):13-SpringBoot

一、Web开发1.1、静态资源访问在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。默认配置Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:举例:我们可以在src/main/resources/目录下创建static,在该位置放置一个图片文件。启动程序后,尝试访问http://localhost:8080/D...

2019-10-21 21:48:33 105

原创 蚂蚁学堂:12-深入理解Http协议

一、Http协议入门1.1什么是http协议 http协议: 对浏览器客户端 和 服务器端 之间数据传输的格式规范。1.2 http协议内容请求(浏览器- >服务器)GET /day09/hello HTTP/1.1 -请求行Host: localhost:8080 ...

2019-10-21 16:47:14 170

原创 蚂蚁学堂(1):10-Session与Cokile实现原理

一、 Cooke技术1.1 特点Cookie技术:会话数据保存在浏览器客户端。1.2 Cookie技术核心Cookie类:用于存储会话数据1)构造Cookie对象 Cookie(java.lang.String name, java.lang.String value)2)设置cookie void setPath(java.lang.Strin...

2019-10-21 15:51:47 244

原创 蚂蚁学堂(1):9-深入理解Servlet

一、Web项目结构|- WebRoot : web应用的根目录 |- 静态资源(html+css+js+image+vedio) |- WEB-INF : 固定写法。 |-classes: (可选)固定写法...

2019-10-19 20:25:09 122

原创 蚂蚁学堂(1):8-Web开发入门

一、Web开发入门1.1 引入 之前的程序: java桌面程序,控制台控制,socket gui界面。javase规范 现在和以后的程序:java web程序。浏览器控制。javaee规范1.2 软件的结构C/S (Client - Server 客户端-服务器端):典型应用:QQ软件 ,飞秋,红蜘蛛。特点:1)必须下载特定的客户端程序。...

2019-10-19 16:55:21 184

原创 蚂蚁学堂(1)7-Java网络编程之socket

一、什么是网络模型 网络编程的本质是两个设备之间的数据交换,现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。 在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Client),等待其他程序连接的程序被称作服务器(Server)。客户端程序可以在需要的时候启动,而服务器为了能够...

2019-10-19 16:12:05 171

原创 蚂蚁学堂(1):6--注解

一、自定义注解1.1 什么是注解?Jdk1.5新增新技术,注解。很多框架为了简化代码,都会提供有些注解。可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。注解分类:1)、内置注解:也叫元注解,例如:@Override元注解的作用就是负责注解其他注解。Java5.0定义了4个标准...

2019-10-19 15:34:21 112

原创 蚂蚁学堂(1): 5-数据交换格式和java反射机制

一、什么是数据交换格式客户端与服务器常用数据交换格式xml、json、html二、数据交换格式用场景移动端(安卓、IOS)通讯方式采用http协议+JSON格式 走restful风格。很多互联网项目都采用Http协议+JSON。因为xml比较重,一般在WebService服务采用http+xml格式,银行项目使用比较多。三、什么是JSONJSON(JavaScrip...

2019-10-19 15:14:49 141

原创 蚂蚁学堂(1)4-Java并发编程

一、线程三大特性多线程有三大特性,原子性、可见性、有序性1.1 什么是原子性即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。。原子性其实就是保证数据一致、线程安全一部分,2.3 什么是可见性当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。2.3什么是有序性程序执行的顺序按照代码的先后顺序执...

2019-10-18 19:47:59 126

原创 蚂蚁学堂(1):3-多线程之间通讯

目标一、多线程之间如何通讯 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。二、wait()、notify、notifyAll()方法1、wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。如果对...

2019-10-18 15:04:16 86

原创 蚂蚁学堂(1):2-多线程之间实现同步

目标1、理解线程安全?1.1 为什么有线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。1.2 线程安全解决办法:(1)问:如何解决多线程之间线程安全问题?答:使用多线程之间同步或使用锁(lock)。(2)问:为什么使用线程同步或使用锁能解决线程安全问题呢...

2019-10-18 13:55:37 110

原创 蚂蚁学堂(1): 1-多线程

目标1、线程与进程 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等...

2019-10-18 10:56:49 102

原创 SpringBoot的启动

一、开发SpringBoot项目通常是这样:引入依赖 添加注解 书写配置文件springboot两个核心思想起步依赖和自动配置。就像官网说的:使用Spring Boot可以轻松地创建独立的,基于生产级别的基于Spring的应用程序,您可以“运行”它们。二、我们新建一个SpringBoot项目,从上面我们知道大概是是三个地方:pom.xml和xxxApplication启动...

2019-10-18 10:17:09 643

转载 何时使用抽象类?何时使用接口?

一、抽象类在java中抽象的关键字为abstract,抽象类被创造出来就是为了继承,简单明了地告诉用户跟编译器自己大概是长什么样子的。例如抽象类申明的语法:abstract class Abc { abstract void fun();}抽象类有以下几个特性:1、抽象方法必须为public、protected(若为private,则不能给子类继承,子类无法实现该方法...

2019-10-17 11:07:00 125

转载 MySQL存储引擎MyISAM和InnoDB底层索引结构

一、存储引擎作用于什么对象存储引擎是作用在表上的,而不是数据库。二、MyISAM和InnoDB对索引和数据的存储在磁盘上是如何体现的创建的两张表信息,role表使用的存储引擎是MyISAM,而user使用的是InnoDB:再来看下两张表在磁盘中的索引文件和数据文件:1. role表有三个文件,对应如下:role.frm:表结构文件role.MYD:数据文件(MyISAM D...

2019-10-16 08:00:50 220

原创 为什么HashMap的key允许空值,而HashTable却不允许

1、从源码分析 HashMap在put的时候会调用hash()方法来计算key的hashcode值,可以从hash算法中看出当key==null时返回的值为0。因此key为null时,hash算法返回值为0,不会调用key的hashcode方法。 上面可以看出当HashTable存入的value为null时,抛出NullPointerException异常。如果...

2019-10-13 22:01:58 3253

原创 数据链路层

一、数据链路层1、数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。2、数据链路具备功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位; 如何控制帧在物理信道上的传输,包括如何处理传输差错...

2019-10-13 10:51:27 665

原创 物理层

一、物理层的概述  1、物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据的比特流。通俗的讲就是传输的数据是通过何种方式,以什么形态传输的。  2、主要任务:确定与传输媒体的接口的一些特性,即机械特性、电气特性、功能特性、过程特性          机械特性:接口形状、大小、引线数量等,通俗讲也就是网线的水晶头的设计等一些规定      电气特性:规定电压范围(-5V~+...

2019-10-13 10:28:09 1033

转载 BeanFactory简单介绍

一、BeanFactory  BeanFactory,以Factory结尾,表示它是一个工厂类(接口),它负责生产和管理bean的一个工厂。在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。 BeanFactory只是个接口,并不是IOC容器的具体实现,但是Spring容器给出了很多种实现,...

2019-10-13 10:15:05 11042 1

原创 BeanFactory和FactoryBean的区别

一、BeanFacotry:XMLBeanFactory和ApplicationContext BeanFacotry是Spring中比较原始的Factory。如XMLBeanFactory就是一种的典型原始BeanFactory。原始的BeanFactory无法支持Spring的许多插件,如AOP功能、Web应用等。所以出现了ApplicationContext接口,它由Bea...

2019-10-13 09:32:34 123

转载 MySQL优化原理

MySQL查询过程我们总是希望MySQL能够获得更高的查询性能,最好的办法是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,就会发现:很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。当向MySQL发送一个请求的时候,MySQL到底做了些什么呢?客户端/服务端通信协议 MySQL客户端/服务端通信协议是“半双工”的:在...

2019-10-11 09:21:12 103

转载 并发编程的艺术(1)二刷:Java 如何实现线程间通信

正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点: thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, FutureTas...

2019-10-08 16:44:34 70

原创 经典排序算法(5)——归并详解

要点归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法思想归并排序其实要做两件事: “分解”——将序列每次折半划分。 “合并”——将划分后的序列段两两合并后...

2019-10-07 17:16:13 223 1

转载 经典排序算法(4)——快速排序详解

算法思想它的基本思想是:1、通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。2、然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。上图中,演示了快速排序的处理过程: 初始状态为一组无序的数组:2、4、5、1、3。 经过以上操作步骤后,完成了第一次的排序,得到新的数组:...

2019-10-07 16:16:05 145

原创 经典排序算法(3)——选择排序详解

选择排序(selection sort) 首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法叫做选择排序,因为它在不断地选择剩余元素之中的最小值。即一下两步: 1、找最小元素 2...

2019-10-07 15:43:18 119

转载 经典排序算法(2)——插入排序算法/希尔排序详解

插入排序直接插入排序是一种最简单的插入排序。插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,直到全部插入完成。这个过程类似摸牌: 先拿一张 5 在手里, 再摸到一张 4,比 5 小,插到 5 前面, 摸到一张 6,嗯,比 5 大,插到 5 后面, 摸到一张 8,比 6 大,插到 6 后面, .... ...

2019-10-07 10:59:31 278

原创 经典排序算法(1)——冒泡排序算法详解

冒泡排序是一种交换排序。什么是交换排序呢?交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。一、算法基本思想(1)基本思想冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算...

2019-10-07 10:27:49 1228

原创 http请求方法(GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT)

HTTP的1.0版本中只有三种请求方法: GET, POST 和 HEAD方法。到了1.1版本时,新增加了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。一、原理区别https://blog.csdn.net/potato512/article/details/76696582GET请求指定的页面信息,并返回实体主体。 GET...

2019-10-04 08:57:07 1206

转载 Spring启动

在web项目中使用spring的时候,我们会在web.xml中加入如下配置:<listener> <listener-class> org.springframework.web.context.ContextLoaderListener</listener-class></listener> Listener也叫监...

2019-10-02 17:27:04 97

原创 Servlet 如何工作?Servlet 中的 Listener、Filter

当用户从浏览器向服务器发起一个请求,通常会包含如下信息:http://hostname: port /contextpath/servletpath,hostname 和 port 是用来与服务器建立 TCP 连接,而后面的 URL 才是用来选择服务器中那个子容器服务用户的请求。那服务器是如何根据这个 URL 来达到正确的 Servlet 容器中的呢? Tomcat7....

2019-10-02 16:03:04 121

原创 MyBatis的通俗理解:SqlSession.getMapper()源码分析

一、什么是 MyBatis? 直接看官方文档:https://mybatis.org/mybatis-3/zh/index.html。 从上面我们了解到: 1、MyBatis 是一款优秀的持久层框架 2、MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 3、MyBatis 避免了几乎所有的 JD...

2019-10-01 22:00:30 22356 16

原创 MYSQL从0到1(八):优化

这两天看了享学课题的公开课,挺好的,总结一下针对面试题:当服务器运行慢了,你对MYSQL采取什么优化措施?1、硬件方面:服务器硬件:机械硬盘效率相比固态硬盘约10倍差距,尽量采取固态硬盘。2、软件方面: MySQL服务器优化,Linux(稳定),Windows相对不稳定,运行时可能产生垃圾,所有尽量安装在Linux上。3、程序员的对SQL语句的优化:(1)首先,我们要定位究竟...

2019-09-30 11:00:33 136

空空如也

空空如也

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

TA关注的人

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