自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (3)
  • 收藏
  • 关注

原创 关于elasticsearch与kibana、IK分词器

搜索引擎

2023-09-08 01:10:49 585

原创 nginx概述

nginx概述

2023-08-28 22:45:50 353

原创 Spring Cache框架(缓存)

缓存框架

2023-08-27 21:07:19 858

原创 多个不同对象,按某个字段排序

在项目中遇到三个不同的对象list集合,现按照时间顺序将其排序: HashMap<String,Object> param = new HashMap<>(); //现有集合as、bs、cs:list集合对象 List<对象A> as ; as.stream().forEach(A-> { param.put(A.getId(),A); }); List<B&g

2022-05-23 10:44:05 317

原创 关于分布式

CAP理论对于一个分布式系统来说,设计读写操作时,需要考虑同时满足三点中的两个。Consistency一致性:所有节点访问同一份最新的数据副本Availability可用性:非故障的节点在合理时间内返回正确的响应。Partition tolerance分区容错性:分布式系统出现网络分区(多个节点本来网络是联通的,因为某些故障,不联通了,整个网络就分成了几块区域),仍然能够对外提供服务。分布式系统理论上不可能选择CA架构,只能选择CP或者AP架构,如ZooKeeper是CP,Eureka就是AP架构

2022-05-13 11:32:46 150

原创 java中的消息队列

消息队列:可以看做是一个存储消息的容器,它是分布式系统中的重要组件之一。目的是:1、为了通过异步处理来提高系统的性能来减少系统响应的时间一般的步骤是客户端发起请求给服务端,服务端在请求给数据库,数据库在返回结果给服务端,最后客户端在接收服务端的响应。此时运用消息队列先是客户端发送请求给服务端,服务端发送消息给消息队列,客户端接收服务端的响应,在消息队列请求数据库。因此在使用消息队列时需要考虑业务的流程进行异步处理。2、削峰/限流将短时间高并发产生的事务消息存储在消息队列中,然后后端服务再根据

2022-05-07 17:04:33 5559

原创 关于mysql

1、外键:外键约束不能跨引擎使用,它是为了保证数据的参照完整性创建外键:CONSTRAINT 外键名称[xxx] FOREIGN KEY(本表中字段名xx) REFERENCES 主表名[被子表外键所依赖表的名称xx](id主键列)例如:crate table tb_emp1( id int(11) primary key auto_increment,//自增 name varchar(25) not null,//非空约束 empId int(11) default 111,//默认约束

2022-05-06 15:04:27 710

原创 java中的高性能

读写分离:将数据库的读写操作分配到不同的数据库节点上,一般情况下,我那么都会选择一主多从,一台主数据库负责写,其他从数据库负责读。读写分离对提升数据库的并发非常有效,但是同时会发生问题,当主数据库写入数据时,主库和从库同步数据存在一定延迟,这就可能导致数据不一致的情况,这就是主从同步延迟。主从同步延迟解决方案:1、强制将读操作请求由主库处理 2、延迟读取如何实现读写分离:1、部署多台数据库,选择一台作为主数据库,其他作为从数据库2、保证主数据库和从数据库之间数据实时同步,这个过程就是主从复制

2022-04-22 18:06:21 1527

原创 java中高可用

高可用:表示一个系统在大部分时间里都是可用的,即使发生什么故障时,服务任然是可用的。限流:对请求的速率进行限制,避免瞬时的大量请求击垮系统。常见限流算法:固定窗口计算器算法:固定窗口就是就是时间窗口,规定我们单位时间请求数量。采用计数器count初始化为0,在一分钟内请求次数超过设定的某个值,后续请求会被拒绝。缺点是无法保证限流速率,因此无法保证激增的流量,如前0.9s没有请求访问,最后0.1s大量请求访问就会处理不完,系统会被击垮。滑动窗口计算器算法:将时间按比例分片,如接口限流一分钟只能处

2022-04-22 16:03:16 1679

原创 常见的注解

@ConfigurationPropertites(prefix=""):配置文件属性注解;@Configuration:定义此类为配置文件,作用相当于xml文件;@Bean:是一个方法级别上的注解,主要用在配置类里相当于<beans><bean></bean></beans>;@MapperScan():在SpringBoot启动入口类中添加,开启扫描Mapper接口的包以及子目录,也可以在pom.xml里用<resources><r

2021-08-26 23:14:52 158

原创 关于git(以及项目中编写自动化脚本拉取git仓库代码自动运行)

版本控制:一种在开发过程中用于管理文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前版本的软件工程技术。分类:1.本地版本控制:记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,比如RCS2集中版本控制:所有版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改,用户的本地只有自己以前所同步的版本,如果不联网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作,而且,所有数据保存在单一服务器上,有很大风险损坏,损失所有数据

2021-08-11 21:27:17 531

原创 JavaScript中求天数问题

输入年、月、日求得这一年在这个日期的天数和:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"&g

2021-05-04 14:39:56 323

原创 CSS

总结:常见的css样式:文本样式、背景样式、边框、边框圆角、尺寸、伪类选择器、盒模型、布局样式:浮动、定位 标签显示效果div:在页面布局中,主要作为承载内容的容器,没有任何的默认样式,所有的外观样式都需要我们自己调整css:用来表现HTML样式的计算机语言,为html化妆CSS的引入方式:1、行间引入:在标签行间。使用style属性,来为标签设置css样式,样式选取时优先级高如:《div style=“width:200px;height=200px;”》《/div》2、内部引入:在h

2021-04-13 19:21:23 75

原创 HTML

HTML:超文本标记语言。(超文本:网页中的呈现定义的内容不局限于文本,可加载图片、视频、音频等内容)注意:标记语言不是编程语言HTML基本文档结构如下::声明文档类型html:html文档的根标签head: 头标签,用于指定html一些属性和引入外部资源title:标题标签,设置当前页面的标题meta标签:指定当前页面的字符编码body:体标签,显示在页面中内容注释:HTML常见标签:一、标题标签:定义最大标题最小标题二、段落标签 :使文本独立成段其中属性有:ali

2021-04-12 22:45:20 79

原创 接口

在jdk 1.7以前接口中只能有常量和抽象方法jdk1.8中:允许定义带有方法体的方法默认方法:default修饰的方法静态方法:static修饰的方法默认方法:实现类中可以对该方法进行重写,也可以不重写。在实现类中,调用接口中的默认方法:1.直接调用(不能出现自己调自己)2.接口名.super.默认方法();实现了多个接口,接口中有相同的默认方法定义,实现类中必须重写该方法,如果想要调用父接口中的方法,父接口名.super.默认方法名()。...

2021-04-07 22:49:26 94

原创 反射

程序在运行中,可以获取某个类型中的成员(变量、方法、构造方法)。当class加载到内存中,就可以使用反射技术来实现对象的创建和成员的操作。不需要使用new关键字就可以创建对象。反射技术的源头就是:Class对象。1.获取Class对象方式a类名.classb对象.getClass()c.Class.forName(String 全类名)Class:位于java.langa包。该类的一个实例表示正在运行的某个类型类型:引用类型、基本类型、voidClass类中提供了一个方法:newI

2021-04-06 23:15:41 91

原创 类加载器以及java虚拟机

1.虚拟机加载类的机制虚拟机:执行class文件的,容器概念:虚拟机将描述类的数据的class文件加载到内存,并将这些数据进行校验、转换、解析、初始化的过程,最终形成java虚拟机能使用的java类型的数据什么时候加载类?1.创建对象实例时2.调用静态成员时(变量、方法)3.创建子类对象4.通过反射技术获取某个类型的Class对象时当程序执行到某一行时,需要使用某个类,内存中没有这个类,需要加载这个类。加载类的过程:1。加载:将class文件从硬盘中读取到内存中,并会为其创建一个Cla

2021-04-05 15:37:13 194 1

原创 UDP和TCP

UDP广播和组播:在当前所掌握的协议的基础上,进行通信:单播、广播、组播广播:模式:1对多固定IP:255.255.255.255实现效果:在同一个网络中。主机和其他主机实现共享数据组播:将信息进行共享,在同一个组中IP地址:244.0.0.0~255.255.255.255,不是这个区间会出异常套接字:MulticastSocket 它是DatagramSocket的子类对象。‘构造方法:MulticastSocket():创建多播套接字MulticastSocket(int p

2021-04-03 15:24:23 89

原创 关于java中计算机网络编程--实现两台电脑间通信

网络编程基本概念:计算机网络:总结:将不同地理位置,功能独立的多个计算机通过通信设备连接起来,实现数据共享网络编程:指的是在已有网络环境的前提下,进行数据的传输,对于发送端就是数据按照规定的协议进行打包,对于接收端根据规定的一些进行数据解析。网络通信的三要素:1.IP地址 2端口号 3协议IP地址:java.net包 网络包InetAddress用于描述IP地址这类事物的,用于表示网络计算机的唯一标识。Inet4Address:使用32位来表示,4个字节来表示,0~255Inet6

2021-03-31 20:06:24 2030 3

原创 线程池的理解

池是一个容器,这个容器中存储的是线程(已经创建好的)原因:多个任务并发执行,任务又比较小,大部分时间都耗费在线程的创建和销毁。线程的创建和销毁需要调用底层的系统资源,这样就会很消耗资源。当创建好线程池,内部就会有线程对象,任务过来,有一个线程对象就去执行任务。任务执行结束,它也不会销毁,而是回到线程池中,等到下一个任务。在java中,有封装好的线程池对象,供我们使用,不需要自己手动创建线程池。通过java.util.concurrent包中的Executors类中的静态方法来创建线程池。方法的返

2021-03-31 19:33:25 165

原创 线程生命周期

理解:从线程创建到线程消亡的过程。过程中划分了几种状态。不同状态描述不同信息。新建状态:创建线程对象:new Thread(…)就绪状态(可运行状态):调用start方法后的状态(一切都准备好,等待CPU的调度)运行状态:执行run方法(CPU来了)消亡态:run方法执行结束出现异常调用方法stop、destory(过时) 线程退出执行阻塞状态:从运行到阻塞,接触阻塞回到就绪主动放弃执行资格,意味着CPU不调度sleep()、wait()—notify()以上的线程的各

2021-03-30 20:22:12 81

原创 枚举

数组[]类:class接口:interfacejdk5.0之后出现的新类型。枚举也是类,只不过是特殊的类,编译后生成的也是class文件。关键字:enum格式:修饰符 enum 枚举类名{ }枚举类中定义的枚举值:都是该类的一个实例对象枚举值:通常都是大写字母或单词组成,中间使用逗号分隔,最后一个可以加分号也可以不加分号。如果还有其他内容,必须加分号。enun 枚举名{A,B,C;}访问枚举值:枚举类名.枚举值名某种类型创建的对象个数是有限的,使用枚举来定义。如季节、性

2021-03-30 20:11:49 131

原创 线程安全问题

问题:模拟窗口售票,总票数50张,两个窗口售票,运行结果出现同号票。比如下面代码:原因:两个线程执行的代码片段是同一段,对同一个ticket进行计算,t1线程对ticket计算还没有全部执行完,另一个线程参与进来执行,导致错误的数据产生。解决方式:对ticket变量的计算由始至终都是一个线程来操作,即使在执行过程中,其他线程由执行权,也不能参与对ticket的计算前提:1.两个或两个以上的线程2.保证多线程间看到的是同一个锁对象锁对象:可以是任意对象,没有限制。多线程对共享资源的所有操作放

2021-03-30 19:55:40 77

原创 数组内存理解

jvm启动时,会将内存划分为:寄存器:控制执行哪行代码本地方法区:调用的是底层方法的。方法区:代码堆:通过new创建的容器(对象、实体)都在堆中。栈:用于执行方法。先进先出。不同的区域,做不同的管理和计算,提高效率int[] arr = new int [3];内存中的过程:步骤:1.在堆中开辟空间,并分配地址值2.在该空间中,存储默认值3.将地址值赋值给引用变量arr4.arr指向了或引用了该空间输出arr,结果是:[I@15db9742[ :代表一维数组I:数组的元

2021-03-30 17:28:46 142

原创 进程、线程、多线程

进程:正在进行中的程序,需要资源:内存、cpu。线程:属于进程,指的是一个可以独立运行的代码片段(执行单元、执行路径)。一个进程中有多个可以独立运行的执行单元,这样的进程称之为多线程的进程。一个进程中至少有一个线程,这样的进程称之为叫做单线程的进程。多线程的进程共享同一块内存空间。CPU在执行时,某一时刻只能执行一个进程,做着高速的切换动作,导致看到的是貌似同时执行的效果(单核)。CPU执行线程的时间是不确定的。抢占式方式抢占CPU的调度。并行和并发:并行:多个任务同时执行,在某一时刻每个

2021-03-29 20:02:34 132

原创 对象流

对象流:主要是用来操作对象数据,可以将对象以字节数据的顺序进行存储-----序列化。反序列化:基本数据类型数据、常用的一些对象数据(集合、字符串、包装类等…)可以进行序列化。ObjectInputStream 反序列化对象ObjectOutputStream 序列化对象这两个对象属于IO流继承体系,除了继承的方法外,扩展了功能,因此可以操作任意对象。常用数据:自定义对象:只有实现了java.io.Serializable该接口的对象,才能进行序列化和反序列化。该接口中没有方法和属性,

2021-03-28 20:54:39 136

原创 Properties对象

property复数形式,属性的意思。属性名 = 属性值 key=value。位于java.util包理解:1.属性集合对象2.属于Map中的一员,继承Hashtable,可以直接使用map的方法3.key和value都只能是字符串。4.可以读取流中数据也可以将数据保存到流中5.持久化的属性集对象构造方法:Properties():空列表Properties(Properties prop):带有指定内容的列表按照map中的方式操作:以上方式不建议使用,因为属性集对象要求key

2021-03-28 20:17:11 945

原创 格式化与打印流

格式化输入:System.in:类型 InputStream.标准的输入流,默认数据源-键盘。更改数据源:System.setIn(InputStream in)格式化输出:System.out/System.err:标准输出/错误流默认输出目的地:控制台对应类型 :PrintStream 字节流(打印流)更改默认目的地:System.setOut(PrintStream out)...

2021-03-28 15:33:06 108

原创 转换流对象

问题:现有一文本文件,编码格式为utf-8,使用FileReader读取数据时,读取到的数据与源文件中的数据不一致,原因是编码和解码的格式不同。解决方式:使用转换流InputStreamReader构造方法:InputStreamReader( InputStream in):使用平台默认的码表读取数据–将字节流–> 字符流InputStreamWriter( IInputStream in,String charname):使用指定的字符集读取数据OutputSteamWriter:

2021-03-28 14:31:11 94

原创 Scanner扫描器

位置:java.util包中。是一个final类。能扫描基本类型和字符串类型数据,注意没有直接扫描字符类型的数据。构造方法:Scanner(File file):将文件作为扫描的数据源Scannner(InputStream in):使用默认的标准输入设备作为数据源(键盘)Scanner(String str):使用 str作为数据源方法:提供了 hasNext();用于判断是否有要扫描的数据提供了 next():用于扫描数据...

2021-03-28 11:40:48 266

原创 总结:字节流与字符流

字节流:InputStream-----FileInputStreamOutputStream-----FileOutputStream缓冲流:属于字节流的继承体系也是InputStream和OutputStream的子类BufferedInputStreamBufferedOutputStream字符流:Reader— FileReaderWriter— FileWriter缓冲流:属于字符流的继承体系,也是Reader和Writer的子类BufferedReader

2021-03-28 11:31:23 63

原创 java字符流

字符流:字节流+编码表编码表(字符集):字符与数字间对应关系形成的一张表ASCII: 一个字节数据8个bitISO8859-1:不能操作中文GBK:存储汉字,一个汉字占两个字节Unicode:java内置的码表,空间浪费,每个字符都占用两个字节,‘\u十六进制数据’utf-8:国际化的编码,1-3个字节存储数据,汉字占3个字节解码:将字节到字符的过程编码:将字符到字节的过程乱码:使用一个字符集进行编码,使用另外一个字符集进行解码。看到的数据看不懂就是乱码了字符输出流:根类:Wri

2021-03-28 11:25:03 84

原创 java字节流

字节流:有两个根类:输入流:InputStream输出流:OutputStream这两个根类流都是抽象类字节输出流:OutputStream:方法write(int by):写一个字节数据write(byte[] by) :将by写到目的地write(byte[] by,int index,int len):将by一部分数据写到目的地close():关闭流子类:FileOutputStream,文件输出流对象构造方法:FileOutputStream(File/String

2021-03-27 15:46:30 588

原创 IO流

I是input,输入O是output,输出流:指的是操作的数据。----->输入输出数据站在内存的角度来分析:数据进入内存的----输入;数据出内存的-----输出。作用:用来进行不同设备间数据的传输。设备:硬盘、磁盘、网络…按照操数据的流向划分为:输入流和输出流按照操作的数据类型划分为:字节流:任何类型数据都可以处理。视频、音频、图片等文件字符流:只能处理用记事本打开的文件的数据,即纯文本格式的数据。学习IO技术:1.看是做输出还是输入操作2.考虑用字节还是字符使用IO实现功

2021-03-27 15:28:52 57

原创 File类

位置:java.io包中目的:用来封装与文件有关信息的对象,切记不能操作文件中的数据。与文件有关的信息包括路径(目录)信息:绝对路径:路径的完整信息形式,即带有磁盘名的相对路径:不带有磁盘名,相当于在当前路径下表示的路径,例eclipse的相对路径是在此项目的文件夹下File对象也能直接封装路径相关信息。构造方法:File(String pathname)File(String parent,String child)File(File parent,String child)注意:创

2021-03-27 15:19:48 92

原创 Collections集合工具类

集合工具类,类中都是静态成员,大部分方法都是操作Collection内容可变参数:数据类型… 该类型的参数可以有多个,实际是一个数组。方法:addAll(Collection, T…):将多个T类型的数据添加到Collection中sort(List):按照自然顺序排序sort(List,comparator):按照比较器排序shuffle(List):随机打乱集合元素reverse(List):反转list集合元素reverseOrder():返回一个比较器对象,反转了自然顺序re

2021-03-27 11:03:21 68

原创 集合总框架

2021-03-27 10:37:21 101

原创 Map

字面意思:地图,映射的意思,用于存储一对一对的数据信息比如:身份证号–姓名 key–value 键值对特点:key 要唯一,value可以重复map集合的遍历的方式1:map集合的遍历方式2:

2021-03-27 10:35:47 80

原创 Set容器

特点:无序(存入的顺序和取出的顺序不能保证一致)不可重复。方法全部来自于父接口,并没有新增特有方法。实现类对象:HashSet子:LinkedHashSetTreeSet//定义数组1.如果定义的数组长度 < 集合元素长度定义的数组存储默认值(NULL),返回值数组存储的是集合中的元素2.如果定义的数组长度 = 集合元素长度定义的数组和返回值数组都将存储集合中的元素3.如果定义的数组长度 > 集合元素长度定义的数据和返回值数组都将存储集合中的元素,多余的位置存储

2021-03-26 22:53:18 147

原创 泛型

字面含义:广泛的类型。当定义某一个类型时,不确定要操作的类型,可以使用泛型。格式:<要操作的类型>,注意:只能是引用类型。好处:该技术是在jdk5.0版本出现的,可以认为属于一种安全机制,可以将运行时期出现的问题提前至编译时期。避免强转操作。弊端:仅仅只能操作泛型上的类型数据,其他类型不能操作。类型推断:左边写了<>,并指定了泛型的类型,那么右边只要保留<>即可‘eg:ArrayList list = new ArrayList<>();自定义泛型

2021-03-24 23:20:28 66

尚硅谷的商城sql语句CREATTE TABLE

CREATTE TABLE

2022-09-03

jdk1.8.0_191.zip

java jdj1.8

2021-03-16

JDK_API_1_6_zh_CN.zip

java API帮助文档

2021-03-16

jdk api 1.8_China.zip

帮助文档

2021-03-16

空空如也

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

TA关注的人

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