自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 网络总结(Netty)

Netty概述Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty 是一个基于 NIO 的网络编程框架,使用 Netty 可以帮助你快速、简单的开发出一个网络应用,相当于简化和流程化了 NIO 的开发过程。作为当前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,知名的 Elasticsearch 、Dubbo 框架内

2021-08-23 12:59:44 193

转载 网络总结(http https)

1,Http协议概念:http协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,用于从万维网(www)传输超文本到本地浏览器的传送协议,http协议是一个应用层协议,由请求和响应构成,是一个标准的c/s(客户端/服务器)模型。特点:简单快速:客户端向服务器发起请求时,只需要传请求方法和路径。请求方法包括get、post、put、delete、head,每种方法规定了客户端与服务器联系的类型。由于http协议简单,使得http服务器的程序规模小,因而通信速度很快

2021-08-21 11:25:13 569

转载 网络总结(四大IO模型)

四大IO模型阻塞和非阻塞的区别:阻塞与非阻塞都指的是用户空间程序的执行状态。阻塞IO指的是需要内核IO操作彻底完成后,才返回到用户空间执行用户的操作。阻塞是指用户空间(调用线程)一直在等待,而不能干别的事情;非阻塞是指用户空间(调用线程)拿到内核返回的状态值就返回自己的空间,就可以去完成别的任务。同步和异步的区别: 同步IO是一种用户空间与内核空间的IO发起方式。同步IO是指用户空间的线程是主动发起IO请求的一方,内核空间是被动接收方;异步IO是指系统内核是主动发起IO请求的一方,用户空间的线程是

2021-08-21 10:13:29 250

原创 NIO模型

NIO模型NIO:同步非阻塞NIO介绍选择器Seletor: NIO中提供了选择器(Selector 类似底层操作系统提供的IO复用器:select、poll、epoll),也叫做多路复用器,作用是检查一个或者多个NIO Channel(通道)的状态是否是可读、可写。。。可以实现单线程管理多个channel,也可以管理多个网络请求Channel通道: 用于IO操作的连接,在Java.nio.channels包下定义的,对原有IO的一种补充,不能直接访问数据需要和缓冲区Buffer进行交互,通道主要实

2021-08-08 11:43:13 310

原创 网络总结三(IP协议)

网络层:IP协议IP地址IP 地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。因此,在 TCP/IP 通信中所有主机或路由器必须设定自己的 IP 地址。不论一台主机与哪种数据链路连接,其 IP 地址的形式都保持不变。IP报头格式版本号:占4位,指IP协议的版本,有IPv4和IPv6两种,对于IPv4协议该字段就是4首部长度: 占4位,指IP协议的报头长度,范围在20-60字节区分服务: 占8位,只有在使用区分服务时该字段才有作用,一般情况下不使用该字段长度: 占16位,指I

2021-08-08 11:42:59 498

原创 网络总结二(TCP UDP )

传输层:TCP和UDPTCP协议TCP(Transmission Control Protocol ,传输控制协议)是面向连接的传输层协议。TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。TCP协议采用字节流传输数据。TCP协议特点面向连接,通信之前必须建立连接每一条TCP连接只能是点对点的(一对一)提供可靠交付的服务,通过TCP连接传输的数据,无差错,不丢失,不重复提供全双工通信面

2021-08-08 11:42:45 527

原创 网络总结一(网络模型)

网络基础OSI参考模型OSI(Open System Interconnection)开放互联网参考模型最早提出的解决网络通信的标准协议。OSI网络分层: 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层物理层处于OSI最底层,主要是传输原始的比特流(bits),交换机,光纤等,主要是为数据端设备提供传送数据的通道及传输数据数据链路层数据链路层是实现计算机网络相邻节点之间的可靠传输,把原始的,有差错的传输线路上添加数据链路层协议以后,构成逻辑上可靠的数据链路主要是链路管理,差错控

2021-08-08 11:42:29 115

原创 SpringMVC

SpringMVC介绍SpringMVC原理运行步骤:用户发起用户请求到达前端控制器前端控制器请求处理器映射器查询Handler处理器映射器返回给前端控制器,返沪处理器执行链(HanderExecutionChain)(包含多个处理拦截器和一个Handler实例)前端控制器请求处理器适配器执行handler处理器适配器根据适配器规则找到特定的处理器,(后端controller层URL所绑定的方法),由处理器来执行Handler处理器执行结束返回后给处理器一个Mode

2021-08-04 13:17:49 162

原创 Spring框架

SPring介绍IOC介绍(控制反转)对象的创建交给外部容器来完成,这个就是控制反转,容器存在的必要性就是管理对象,spring中使用控制反转来实现对象在不同程序中使用。容器的好处: 提供容器,来管理所有的对象,所有对象的创建,销毁也好都交给容器,谁适用对象,在容器中获取该对象的使用权,哪一个对象需要,就将使用的对象注入到该对象中,对于使用方而言,只需要使用即可,对象的生命周期的管理交给IOC容器进行管理。IOC容器负责实例化所有的组件,需要进行以来的对象都交给容器管理,IOC最简单的方式就是通过XM

2021-08-04 11:47:19 142

原创 mybatis框架

MyBatis介绍Mybatis是一款优秀的持久层框架特征:支持自定义SQL(非自定义SQL:hebineate),储存过程以及高级映射Mybatis解决JDBC代码以及设置参数和获取结果集的工作Mybatis通过XML或注解来配置和映射原始类型,接口和Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录JDBCJDBC编程引入jar:通过maven:mysql-connector-javaJDBC编程步骤:1、加载MYSQL

2021-08-04 11:46:55 237

原创 Redis总结一(基础命令)

RedisRedis介绍前言单机Mysql缺点:数据量太大,一个机器太难承担数据量的索引太大,一个机器的内存放不下访问量(读写)太大,一个服务器承受不住解决办法:缓存+读写分离网站上的访问80%以上都是在读、每次都去查询数据库,效率很低,引入缓存机制,第一次去MySQL中读取数据,将数据返回给用户的同时,将数据在缓存中存储下来,第二次访问,就可以直接在缓存中读取分库分表+集群分库分表+水平拆分NOSQLNOSQL(NOT Only SQL) 泛指非关系型数据库一,NoSQL特

2021-07-31 13:49:25 247

原创 Redis总结二(持久化 )

Redis持久化Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,那么一旦服务器进程退出,服务器的数据库状态也就会消失,所以Redis提供了持久化的功能持久化流程客户端向服务端发送写操作(数据在客户端的内存中)数据库服务端收到写请求的数据(数据在服务端的内存中)服务端调用write这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区)操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)以上的过程是在理想条

2021-07-31 13:49:08 180

原创 Redis总结三(事务 Jedis)

Redis事务Redis中事务可以一次执行多个命令,是一组命令的集合,一个事务中的命令都会被序列化,在事务的执行过程中,会按照顺序串行化执行队列中的命令。Redis是一次性,顺序性,排他性的执行一个队列中的一系列命令 Redis不保证原子性Redis中,单条命令的执行是原子性,但事务是不保证原子性,而且没有回滚的换概念, 事务中任意的命令执行失败,其他的命令是可以执行的Redis中的事务是没有隔离级别的事务命令事物的执行过程分为三个步骤:开始事务:multi ———&gt

2021-07-31 13:48:44 247

原创 Redis总结四(主从复制 击穿等)

Redis缓存穿透、击穿和雪崩缓存穿透-查不到概念:用户需要查询一个数据,发现Redis中没有,也就是缓存没有命中,于是就向持久层数据库发起查询,发现也没有这个数据,于是本次查询失败当用户很多的情况,缓存没有命中,又回去请求数据库,这就会给数据库造成很大的压力,这个就是缓存穿透解决方案-1 布隆过滤器布隆过滤器是一种算法,是用户检测一个元素是否在一个集合中,存在一定的误差可以将所有可能查询的参数以hash形式来进行存储,在控制层进行校验,不符合的则丢弃,从而避免对数据库的查询压力解决方案

2021-07-31 13:48:22 186

原创 Mysql总结四

Mysql优化Mysql可以优化的方面:存储引擎、数据类型、范式、索引分库分表、主从复制、读写分离、负载均衡(nginx)…支付流程:接口 ——》将服务进行扩容,扩容成10台服务负载均衡:将所有请求均衡的分配给不同的服务器,让每台服务器的请求保持均衡存储引擎myiasm: 并发量特别大-》innodb数据类型:选取原则:内存占用量比较小的,选取定长类型 varchar(5)范式:根据合适的情况建立依赖关系索引:选取合适的索引 分析:explain主键索引、单值索引、排序 多条件查询

2021-07-28 13:33:04 99

原创 Mysql总结三

MYSQL事务特点事务定义:一个事务是由一条或者多条数据库操作的SQL语句组成的一个不可分割的单元,只有当事务的所有操作都正常执行完了,整个事务才会被提交给数据库,期间如果有部分事务处理失败,那么事务就要回退到最初的状态,因此,事务要么全部执行成功,要么全部失败。事物的特征(ACID)事务的原子性(Atomic)事务是最小单元,不可再分,要么全部执行成功,要么全部失败回滚。事务的一致性(Consistency)一致性是指事务必须使数据库从一个一致的状态变到另外一个一致的状态,也就是执行事务之前

2021-07-28 13:32:35 160

原创 Mysql总结二

MySQL存储引擎介绍存储引擎介绍MySQL中的存储引擎常用的INNODB和MyISAM,其次是memoryMySQL默认支持的是INNODBINNODBINNODB存储引擎提供了具有提交,回滚等事务功能,支持自动增长列,外键等功能采用聚集性索引,索引和数据存储在同一文件下,索引INNODB的表的磁盘上存储两个文件,扩展名.frm(存储表的定义)和.ibd(索引和数据)MyISAMMyISAM存储引擎不支持事务,也不支持外键,索引采用的是非聚集性索引,优势在访问速度比较快对事务没有要

2021-07-28 13:32:14 89

原创 Mysql总结一

MySQL索引介绍索引索引是什么?索引是一种数据结构,索引是创建在表上,是对数据库表中的一列或者多列的值进行排序的一种结果好处:提高查询效率,避免全表查询。索引分类普通索引:没有任何的限制条件,可以给表中的任何字段创建索引唯一性索引:使用UNIQE修饰的值是不能重复的,主键索引就隶属于唯一性索引主键索引:使用primary key修饰的字段会自动的添加主键索引,单列索引,多列索引全文索引: 使用FullText修饰的字段可以设置为全文索引,只支持varchar/text等类型的字段创

2021-07-28 13:31:48 103

原创 JVM总结四

JVM参数配置Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之,JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上java虚拟机的参数中,有3种表示方法标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用(但是,这些参数往往是非常有用

2021-07-27 10:08:12 756

原创 JVM总结三

Java命令作为一个合格的开发人员,不仅要能写好代码,还有一项很重要的技能就是排查问题。这里提到的排查问题不仅仅是在coding的过程中debug等,还包括的就是线上问题的排查。由于在生产环境中,一般没办法debug,所以我们需要借助一些常用命令来查看运行时的具体情况,这些运行时信息包括但不限于运行日志、异常堆栈、堆使用情况、GC情况、JVM参数情况、线程情况等。那么我们来介绍常用的Java命令,这些命令都是被存放在JDK安装目录的bin目录中,下面来介绍一下相关命令以及具体使用方式jps:显示所有

2021-07-27 10:07:54 240

原创 JVM总结二

JVM垃圾回收机制GC原理GC (Garbage Collection:即垃圾回收)的基本原理:将堆内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征进行分析后,按照新生代、老年代的方式来对对象进行收集,以尽可能的缩短GC对应用造成的暂停对新生代的对象的收集称为minor GC对老年代的对象的收集称为Full GC程序中主动调用System.gc()强制执行的GC为Full GCWeakHashMap:Java 的4种

2021-07-27 10:07:36 202

原创 JVM总结一

JVM基础知识Java的跨平台性注意:我们提到Java的跨平台性,就会想到JVM,但是能跨平台的是 Java 程序,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,即运行我们编写的 Java 程序。而这个过

2021-07-27 10:07:15 119

原创 线程池总结三

ThreadPoolExecutor线程池终止终止线程池主要有两个方法:shutdown() 和 shutdownNow()。shutdown()后线程池将变成shutdown状态,此时不接收新任务,但会处理完正在运行的 和 在阻塞队列中等待处理的任务。shutdownNow()后线程池将变成stop状态,此时不接收新任务,不再处理在阻塞队列中等待的任务,还会尝试中断正在处理中的工作线程shutdown():温柔的终止线程池/** * 开始一个有序的关闭,在关闭中,之前提交的任务会

2021-07-22 15:12:15 138

原创 线程池总结二

ThreadPoolExecutor任务提交execute()是 java.util.concurrent.Executor接口中唯一的方法,JDK注释中的描述是“在未来的某一时刻执行命令command”,即向线程池中提交任务,在未来某个时刻执行,提交的任务必须实现Runnable接口,该提交方式不能获取返回值。下面是对execute()方法内部原理的分析,分析前先简单介绍线程池有哪些状态,在一系列执行过程中涉及线程池状态相关的判断。以下分析基于JDK 1.7线程池的执行流程如果线程池中的线程数

2021-07-22 15:11:54 157

原创 线程池总结一

为什么要线程池java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 多线程的情况下确实可以最大限度发挥多核处理器的计算能力。但是如果随意使用线程,对系统的性能反而有不利影响。 在简单应用里面看起来没有问题,如果创建了一个线程,并且在run()方法结束后自动回收该线程。但是如果在真实系统里面

2021-07-22 15:11:27 124

原创 Java基础总结二

抽象类和接口的区别抽象类:含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。接口:接口(interface)可以说成是抽象类的一种特例,

2021-07-20 12:48:47 113

原创 Javase基础总结一

面向对象的三/四大特征封装体现形式:方法、属性的私有化、内部类属性的私有化:将属性用private修饰,然后提供对外的访问(getXXX)和设置(setXXX)的方法,在方法中进行限定,使属性值更加符合的场景要求优势:提高代码的复用性,保证数据的合法性继承发现一些类中的属性和方法是相同的,所以把这些相同的属性和方法提取到一个新的类中,然后利用extends关键字让原来的类和新的类产生联系,这种联系称之为继承。子类通过继承可以使用父类中的一部分方法和属性。**注意:**子类在继承父类的时候继承

2021-07-18 11:01:20 83

原创 常用的Linux命令

日常使用命令开关机命令 1、shutdown –h now:立刻进行关机 2、shutdown –r now:现在重新启动计算机 3、reboot:现在重新启动计算机 4、su -:切换用户;passwd:修改用户密码 5、logout:用户注销常用快捷命令1、tab = 补全 2、ctrl + l -:清屏,类似clear命令 3、ctrl + r -:查找历史命令(hist

2021-07-12 16:02:46 250

原创 常用的设计模式

设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。设计模式的七大原则单一职责原则:类的职责要单一,不能将太多的职责放在一个类中开闭原则:软件实体对外扩展是开放的,但是对内修改是关闭的

2021-07-05 14:04:37 163

原创 初识多线程

1.1进程和多线程概述1.1.1 进程:操作系统结构的基础,一次程序的执行,是系统进行资源分配和调度的独立单位。进程是受操作系统管理的基本运行单元。1.1.2 程序:程序是指令序列,这些指令可以让cpu完成指定任务。1.1.3 线程:进程中独立运行的子任务 且线程的执行顺序具有随机性。1.1.4 多线程的特点:同一时间可以执行多个任务,使用多线程也就是在使用异步。1.1.5 什么场景下使用多线程?阻塞 2) 依赖:业务分为两个执行过程A和B 当A业务发生阻塞情况时,B业务的执行不依赖A业

2021-04-29 08:32:00 53

原创 JAVA内存区域与内存溢出异常

JAVA运行时将内存分为5个区域:方法区 堆 虚拟机栈 本地方法栈 程序计数器 其中方法区和堆属于执行引擎 其他属于本地库接口1.1 程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。而字节码解释器是程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等基础功能都需要十分依赖这个计数器来完成。为了线程切换后能恢复到正确的位置,每条线程都需要一个独立的程序计数器。这个内存区域是Java虚拟机规范中没有规定任何内存溢出情况的区域。1.2 Java虚拟机栈和程序

2021-04-27 15:55:48 60

原创 JAVA并发机制的底层实现原理

大致实现过程2.1 volatile应用2.1.1 volatile是轻量级锁的synchronized保证了共享变量的可见性(可见性就是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值)2.1.2 volatile定义和实现原理a 定义:为了确保共享变量能被准确和一致性的更新,线程应该确保通过排他锁单独的获得这个变量b CPU术语的定义: 1)内存屏障(memory barriers) 处理指令 用于实现内存操作的顺序限制 2)缓冲行(cache line)缓存中可以分配的最小储存单

2021-04-22 16:17:41 68

原创 并发编程的挑战

并发编程的目的:让程序运行的更快1.1 上下文切换: CPU通过给每个线程分配CPU时间片实现这个机制,而时间片就是CPU分配给各个线程的时间 , CPU通过时间片分配算法来循环执行任务,上下文切换也会影响多线程的执行速度1.1.1 并发执行的速度比串行慢的原因: 线程的创建和上下文的切换有开销1.1.2 如何减少上下文切换: a 无锁并发编程:多线程竞争锁时会引起并发编程,会引起上下文切换 用一些办法避免使用锁 b CAS算法: c 使用最少线程:避免创建不需要的线程 d 使用协程 :

2021-04-22 15:13:57 46

原创 linux文件操作命令

一 文件查看命令cat 查看文件内容合并文件 语法: cat a.txt b.txt > c.txtmore当一个文件的内容超过一个屏幕能显示的行数,使用 more 可以分屏显示文件内容。使用方式: more filenameless文本内容查看器,查看文件内容,但是文件内容不会显示到界面上head显示文件前 n 行的内容tail显示文件后 n 行的内容二 文件编辑命令vim三种模式及转换的不同操作命令模式切换到插入模式:a //进入到当前光标后开始编辑A //

2021-02-21 19:02:54 507

原创 linux系统介绍及其java环境安装

一linux计算机组成与进程1 计算机组成五大部件(1) 运算器 :也叫算数逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻辑运 算,移位,比较等。(2) 控制器 :它是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算 机按照预先规定的目标和步骤有条不紊地进行操作及处理。(3) 存储器 :存储程序和各种数据。(4) 输入设备 :把人所熟悉的信息如,图片,声音,文字,转换为计算机能够识别的信息存 储起来。(5) 输出设备 : 把计算机机能识别的信息转换为人能识别的信息,进行

2021-02-21 19:02:37 66

原创 HashMap

一 HashMap使用

2021-02-21 19:02:21 158

原创 线程基础总结

一 线程和和进程的概念

2021-02-21 19:01:59 38

原创 synchronized volatile 关键字

一 synchronized关键字

2021-02-21 19:01:38 66

原创 linux学习总结

*Linux介绍:特点: 开源、免费、自由使用;多用户、多线程、多任务、多CPU。组成:Linux = 内核 + shell + 文件系统 + 应用程序应用:服务器、手机操作系统…分支:Redhat、debain…安装:VMware、centOS基本环境配置一 Linux 安装;安装时候易出现的问题:1 Vm-ware虚拟机版本的匹配问题2 之前电脑安装过虚拟机 但是没有把插件删除完全就会出现安装不上的问问题。3 vm—tools安装时候下载慢的问题,注意更换合适的镜像源。二 lin

2021-02-21 19:00:32 233

原创 初识Java和java数组总结

Java基础及数组部分总结:一 ,Java开发环境:JDK Java开发工具包。开发Java程序使用。JRE Java运行时环境。运行Java程序使用。JVM Java虚拟机。是JRE的核心组件。Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。JRE(Java Runtime Environment

2020-12-06 19:34:21 384 4

空空如也

空空如也

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

TA关注的人

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