- 博客(47)
- 收藏
- 关注
原创 Java SE基础题(二)
1. 数组(Array) 和列表(ArrayList) 有什么区别?Array:可以存储基本数据类型、引用类型;空间大小固定,且需要提前知道大小以开辟内存空间。ArrayList:只能存储引用类型;是容器框架中的一员,底层是一个数组,可以看作是对数组的二次封装实现;由动态扩容机制(原理是数组的复制),不需要提前确定空间大小。2.ArrayList 和 Vector 的区别?ArrayList是异步的,线程不安全,性能比较高;以1.5倍进行数组的动态扩容,不可指
2021-11-17 23:01:47
475
原创 Java SE基础题(一)
1.说说你对面向对象思想的理解? 总结来说,我对面向对象思想的理解就是,万物皆可对象。Java的面向对象就体现在它的三个重要特性,即封装、继承、多态,抽象也是一个体现的地方。 封装就是把我们需要的一些属性和操作封装成一个对象,把它当作一个对象作为整体去考虑,帮助我们去执行一些功能,而不考虑内部的构造。 继承可以是子父类之间的单继承、接口之间或者类与接口之间的多继承,它体现的也是一个对事物的共性抽取的地方,也是抽象思想的一个具象化体现,最终通过具体的对象达到我们想要的效果。 继承是多态
2021-11-17 23:00:27
461
原创 Oauth2与Spring Security
文章目录Oauth21. Oauth2概念2. OAuth2 授权流程3. OAuth2 角色4 OAuth2 授权模式简介5. Spring Security Oauth2 入门案例5.1 什么是Spring Security5.2 搭建授权服务器5.2.1 POM配置文件5.2.2 编写启动器5.2.3 Application.yml5.2.4 Oauth2配置类5.2.5 Spring Security配置类5.3 搭建资源服务器5.3.1 POM配置文件5.3.2 编写启动器5.3.3 Applic
2021-10-24 12:39:24
3034
原创 什么是OpenResty&OpenResty的安装
OpenResty1. OpenResty概念OpenResty中文官方网站 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,由中国人章亦春发起,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用
2021-10-17 12:47:00
407
原创 Lua简易入门-01
Lua1. Lua概念 Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique deFigueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译、运
2021-10-17 12:43:00
313
原创 全文检索-ElasticSearch入门
1. 基于Lucene的全文检索1.1 全文检索概念 将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行检索,从而达到搜索相对较快的目的。从非结构化数据中提取出来并重新组织的信息,我们称之为索引。例如:字典中的拼音表、偏旁部首表就相当于字典的索引。 这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。注意:索引创建过程十分耗时,但是一旦创建有利于复用。全文检索主要处理的是查询,所以虽然创建索引耗时,
2021-09-24 23:53:05
1795
原创 消息中间件-RabbitMQ
文章目录1.消息中间件1.1 消息中间件概念1.2 MQ的优势1.2.1 应用解耦1.2.2 任务异步处理1.2.3 削峰填谷1.3 MQ的不足1.4 常见的MQ产品1.5 MQ的两种主流实现方式1.5.1 AMQP1.5.2 JMS1.5.3 AMQP 和 JMS 的区别2. RabbitMQ2.1 RabbitMQ概念2.2 RabbitMQ基础架构2.3 安装并配置RabbitMQ2.4 RabbitMQ入门示例2.4.1 RabbitMQ工作模式2.4.2 简单模式2.4.2.1 工程创建2.4.2
2021-09-11 20:03:18
1661
1
原创 高并发解决方案-代理服务器Nginx
文章目录Nginx1. Nginx概念2.Nginx的应用场景3. Linux环境下Nginx的安装与启动4. Nginx静态网站部署5. Nginx配置虚拟主机5.1 端口绑定5.2 域名绑定5.2.1 域名概念5.2.2 域名级别5.2.3 域名与ip绑定6. Nginx反向代理6.1反向代理概念6.2 配置反向代理7. Nginx负载均衡7.1 负载均衡概念7.2 准备工作7.3 配置负载均衡Nginx1. Nginx概念 Nginx 是⼀款高性能的 http 服务器/反向代理服务器及电子
2021-09-04 19:30:16
813
原创 API管理工具-Swagger
1. Swagger的概念 Swagger是一款目前世界最流行的API管理工具。目前Swagger已经形成一个生态圈,能够管理API的整个生命周期,从设计、文档到测试与部署。尤其擅长管理基于Restful的WebService接口。 Swagger有几个重要特性:代码侵入式注解遵循YAML文档格式非常适合三端(PC、iOS及Android)的API管理,尤其适合前后端完全分离的架构模式减少没有必要的文档,符合敏捷开发理念功能强大2. Swagger的作用接口的文
2021-08-28 19:28:40
3872
2
原创 分布式环境中文件存储的解决方案-分布式文件系统FastDFS
1. 学习FastDFS的原因在分布式集群环境下,文件上传至节点A,这时通过负载均衡算法,访问到节点B,则不能访问到文件,这时会出现有时能访问有时不能访问的问题。同时要考虑为文件做冗余备份、负载均衡、线性扩容等功能,这些都是单节点文件上传所不具备的。2. FastDFS概念 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网
2021-08-28 19:20:16
1089
原创 容器化技术-Docker
1. 初识Docker前述:在项目开发过程中,程序可能会经历三个环境(开发环境、测试环境和生产环境):这三种环境很多时候是不完全相同的,这很有可能带来一系列的问题。1.1 Docker的概念 Docker 是一个开源的应用容器引擎,即一种容器技术,诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc),能够解决容器环境迁移问题。从 17.03 版本之后,Docker 分为 社区版(Community Edition,CE) 和
2021-08-26 22:27:25
825
原创 记录-MySQL补充知识点链接-持续更新
聚集索引、非聚集索引、覆盖索引 原理外键设置的注意项帅地MySql面试题注意点:使用联合索引(复合索引)时,需要满足最左前缀原则,看网上别的例子的时候,注意下字段是不是在索引里面,满足覆盖索引的条件,因为这种情况是会走索引的,但是会迷惑你最左匹配原则失效。什么是全文索引什么是主从复制-MySQL、MySQL的主从复制慢查询优化方式慢查询是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句。...
2021-08-26 16:12:42
94
原创 Dubbo初级学习笔记
文章目录Apache Dubbo1. Dubbo的三大核心能力2. Dubbo的架构与运行流程3. 服务注册中心Zookeeper3.1 Zookeeper概念3.2 Zookeeper工作流程3.3 在Linux下安装使用zookeeper4. Dubbo入门案例4.1 父工程4.2 服务提供者4.2.1 创建Meven子工程provider4.2.2 创建服务接口4.2.3 创建服务实现类4.2.4 创建Spring的配置文件4.2.5 配置web.xml文件4.2.6 测试4.3 服务消费者4.3.1
2021-08-22 19:19:09
463
原创 SpringCloud-07-Gateway网关路由
SpringCloud-01-微服务的起源SpringCloud-02-SpringCloud入门SpringCloud-03-Eureka服务管理SpringCloud-04-Ribbon负载均衡SpringCloud-05-Hystrix熔断器SpringCloud-06-Feign声明式WebService客户端文章目录8. Gateway网关8.1 Gateway简介8.2 Gateway工作原理8.3 Gateway核心概念8.4 Gateway入门案例8.4.1 创建子工程8.4.2
2021-08-16 18:09:34
445
原创 SpringCloud-06-Feign声明式WebService客户端
文章目录7. Feign7.1 Feign概念7.2 Feign入门案例7.2.1 添加依赖7.2.2 Feign的客户端7.2.3 修改controller层7.2.4 开启Feign功能7.2.5 测试7.3 Feign集成Ribbon7.4 Feign集成Hystrix7.5 请求压缩[了解]7.6 日志级别[了解]7. Feign 在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码:String url = "http://user-service/user
2021-08-14 23:23:31
690
原创 SpringCloud-05-Hystrix熔断器
文章目录6. Hystrix熔断器6.1 Hystrix概念6.2 雪崩问题6.3 线程隔离与服务降级6.3.1 线程隔离原理6.3.2 服务降级原理6.3.3 服务降级实现6.3.3.1 引入依赖6.3.3.2开启熔断6.3.3.3 降级逻辑6.3.3.4 测试6.3.4 默认的降级逻辑6.3.5 超时设置6.4 服务熔断6.4.1熔断原理6.4.2 服务熔断与服务降级6.4.3 服务熔断参数自定义配置6. Hystrix熔断器6.1 Hystrix概念 Hystrix(直译为豪猪),是Ne
2021-08-14 18:24:31
223
原创 SpringCloud-04-Ribbon负载均衡
文章目录5. Ribbon负载均衡5.1 Ribbon概念5.2 Ribbon的入门案例5.2.1 启动服务提供者5.2.2 启动服务消费者5.2.2.1 开启负载均衡[@LoadBalanced]5.2.2.2 修改调用服务的方式5.2.2.3 测试5.3 原理分析5.4 负载均衡策略5.4.1 默认策略5.4.2 修改策略配置5. Ribbon负载均衡 在Eureka的入门案例中,我们启动了一个user_service,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端
2021-08-14 14:39:00
197
原创 SpringCloud-03-Eureka服务管理
文章目录4. Eureka注册中心4.1 Eureka简介4.2 Eureka工作流程4.3 Eureka入门案例4.3.1 搭建EurekaServer[服务中心]4.3.1.1 创建子工程4.3.1.2 编写全局配置文件4.3.1.3 启动类4.3.1.4 测试4.3.2 搭建EurekaClient[服务注册]4.3.2.1 添加依赖4.3.2.2 修改全局配置文件4.3.2.3 修改启动类4.3.2.4 测试4.3.3 搭建EurekaClient[服务发现]4.3.3.1添加依赖4.3.3.2修改
2021-08-13 00:32:01
561
原创 SpringCloud-02-SpringCloud入门
文章目录3. SpringCloud3.1 SpringCloud简介3.2 SpringCloud与SpringBoot版本对应3.3 SpringCloud入门案例3.3.1 创建父工程3.3.2 数据库建表3.3.3 服务提供者3.3.3.1 创建子工程3.3.3.2 编写全局配置文件3.3.3.3 实体类3.3.3.4 dao层3.3.3.5 service层3.3.3.6 controller层3.3.3.7 启动类3.3.3.8 测试3.3.4 服务调用者3.3.4.1创建子工程3.3.4.2
2021-08-13 00:31:33
284
原创 SpringCloud-01-微服务的起源
1.微服务的起源[系统架构的演变] 随着互联网的发展,网站应用的规模不断扩大、需求激增,系统架构也因此不断的演进、升级、迭代。1.1 集中式架构特点当网站流量很小的时候,为了节约成本,我们可以将全部功能部署在一起,形成一个应用。优点系统开发速度快;维护成本低;适用于并发要求较低的系统。缺点代码耦合度很高,后期维护困难;无法针对模块进行优化;无法水平扩展;单点容错率低,并发能力差。1.2 垂直拆分特点当访问量逐渐增大,单一应用无法满足需
2021-08-13 00:04:03
350
原创 JSP学习
JSP1. 基本概念 JSP全名为Java Server Pages,中⽂名叫java服务器页面,其根本是⼀个简化的Servlet设计,它 是由 Sun Microsystems公司倡导、许多公司参与⼀起建⽴的⼀种动态网页技术标准。 JSP技术有点类似ASP技术(加强市场),它是在传统的页面HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成 JSP文件,后缀名为(*.jsp)。 ⽤JSP开发的Web应用是跨平台的,既能在Linux
2021-08-05 22:19:09
178
原创 SpringBoot学习-02-整合篇:SpringBoot整合SpringMVC、JDBC、Mybatis、Tk-Myabtis、Thymeleaf以及Mybatis Plus
1.SpringBoot整合SpringMVC 之前的入门案例已经完成SpringMVC的自动配置,能够使用SpringMVC的功能,这里我们主要需要解决三个问题:1. 修改端口2. 静态资源3. 拦截器配置1.1 修改端口 编辑SpringBoot的全局配置文件application.properties:server.port=80 或者application.yml:server: port: 801.2 访问静态资源 Resource
2021-08-05 14:33:35
748
原创 SpringBoot学习-01-基础篇:SpringBoot概念、自动配置原理、全注解配置和属性注入、多环境切换
简单介绍SpringBoot是什么,他和Spring的关系,并提及SpringBoot的入门案例,浅谈自动配置原理、全注解配置和属性注入,以及多环境的切换
2021-08-03 14:13:13
923
原创 [问题记录]记录SSM项目实战中遇到的坑:@RequestMapping映射路径与静态资源路径重名问题
今天在做一个SSM实战项目的时候,遇到了个处理器方法与静态资源之间的问题。以下先贴出问题产生的背景,并给出问题以及出现原因与解决办法:静态资源目录后台处理器Controller的路径设置出现的问题 当我在后台添加一个RESTful风格的处理器方法并重启项目时,发现跳转不了doctor/index.html这个页面,报错400。然后检查半天没有一点发现(很是抓狂!),最后的最后发现后台出现了一个WARNING! 意思是,这个问题在于字符串String在转换成Int
2021-07-26 18:51:35
842
原创 懒人工具之Lombok
懒人工具之Lombok(了解) Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。 Lombok既是一个IDE插件(2020的Idea已经集成了),也是一个项目要依赖的jar包。Lombok是依赖jar包的原因:因为编译时要用它的注解;是插件的原因:是他要在编译器编译时通过操作AST(抽象语法树)改变字节码生成。也就是说他可以改变java语法。他不像Spring的依赖注入或者Hiber
2021-07-15 20:56:16
81
原创 数据库高级_事务
1. 事务 事务(Transaction)是由一系列对系统中数据进⾏访问与更新的操作所组成的⼀个程序执行逻辑单元。1.1 事务的语法事务的开启start transaction;begin;事务的提交使得当前的修改确认,将对数据库的操作进行永久性保存。commit;事务的回滚使得当前的修改被放弃,事务在未提交之前都是可以回滚的。rollback;注意:当前数据库的引擎是InnoDB,其他类型不支持事务。1.2 事务的ACID特性原⼦性(A
2021-07-15 20:47:21
89
原创 Mybatis学习笔记
文章目录Mybatis1. Mybatis 简介1.1 什么是Mybatis1.2 回顾JDBC1.3 Mybatis的优点2. Myabtis入门案例2.1 数据库、表的创建2.2 创建Maven项目并配置POM文件2.3 配置Mybatis的核心配置文件2.4 创建实体类2.5 创建Dao层接口2.6 编写Mybatis工具类2.7 编写ORM映射文件2.8 配置映射文件的扫描位置2.9 注册映射文件2.10 测试代码2.11 测试结果3.Mybatis的CRUD操作3.1 增加insert3.2 删
2021-07-11 00:55:08
1160
原创 Restful的使用
文章目录RESTful1. REST概念2. RESTful概念2.1 RESTful的特性2.2 RESTful和原有方式操作资源的对比3. API设计/URL设计3.1 RESTful核心思想3.2 RESTful中的五种动词3.3 RESTful中的宾语3.4 避免多级URL4. HTTP状态码4.1 状态码2xx4.2 状态码3xx4.3 状态码4xx4.4 状态码5xx5. 服务器响应6. 案例6.1 RESTful风格的查询6.2 RESTful风格的添加6.3 RESTful风格的更新6.4
2021-07-04 14:31:14
1280
原创 SpringMVC入门学习
文章目录SpringMVC1. 什么是SpringMVC2.SpringMVC的优势3. MVC模式回顾4. MVC入门4.1 创建MAVEN项目4.2 添加依赖4.3 添加配置文件4.4 加载Spring容器和SpringMVC容器5. SpringMVC原理5.1 SpringMVC再次理解5.2 SpringMVC组件5.3 SpringMVC运行流程6. @RequestMapping 注解6.1 @RequestMapping的映射规则6.2 @RequestMapping的请求方式6.3 静态资
2021-07-04 14:25:35
506
原创 Spring学习
Spring1.前言 什么是框架 框架(Framework):框(指其约束性)架(指其支撑性)其实就相当于一个解决实际问题的“半成品”,其本身一般不完整到可以解决特定问题,在软件设计中指为解决一个开放性问题而设计的具有一定约束性的支撑结构。框架天生就是为扩展而设计的,在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。框架里面可以为后续扩展的组件提供很多辅助性、支撑性的方便易用的实用工具(utilities),也就是说框架时常配套了一些帮助解决某类
2021-06-24 20:02:46
169
原创 redis学习
1. NOSQL1.1 什么是NOSQL? NoSQL是个概念,用于泛指非关系型的数据库,NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题, NoSQL数据库的产生就是为了解决大规模数据集合、多重数据种类带来的挑战,尤其是大数据应用难题,由于其本身的特点,非关系型的数
2021-06-14 22:34:13
845
1
原创 JavaWeb学习笔记:一文叙说Servlet、Session与Cookie、Servlet3.0注解、过滤器与监听器
文章目录1. Java Web1.1基本概念1.2 web的分类1.3 web应用程序1.4 web服务器2. Http协议简介2.1 基本概念2.2 网站的访问2.2.1 访问的简要过程2.2.2 http请求2.2.2.1 请求行(**General**,不属于headers,只用于收集请求url和响应的status等信息)2.2.2.2 请求头(**Request Headers**)2.2.3 Http响应2.2.3.1 响应头(**Response Headers**)2.2.3.2 响应状态码3
2021-04-25 15:39:02
652
原创 JDBC
1. JDBC JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 JDBC库包括通常与数据库使用相关的下面提到的每个任务的API。连接数据库。创建SQL或MySQL语句。在数据库中执行SQL或MySQL查询。查看和修改生成的记录。1.1 JDBC 体系结构 JDBC API支持两层和三层处理模型进行数据库访问,但在一般
2021-04-05 12:03:00
447
原创 数据库进阶_完整性、多表增删改查和数据库优化(MySQL)
1. 数据完整性1.1 什么是数据的完整性? 在创建表时给表中添加约束,用来保证存放到数据库中的数据是有效的,即数据的有效性和准确性。1.2 完整性的分类实体完整性(行)域完整性(列)参照完整性(也叫引用完整性,关联表,创建表时设置)1.2.1 实体完整性 表中的一行记录代表一个实体(entity),实体完整性的作用是标识每一行数据不重复。主键约束(primary key)每个表中要有一个主键,其作用为使数据唯一,且不能为null。使用DDL,创建表中字段的时候直接
2021-04-05 10:24:59
628
原创 数据库基础_sql语言
1. 数据库相关概念1.1 什么是数据库? 数据库(DataBase,DB):指长期存储、维护和管理在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。1.2 什么是数据库管理系统? 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。 用户通过数据库管理系统访问数据库中的数据。 常见的数据库管理系统:O
2021-04-05 09:05:55
332
原创 对JVM中堆、栈、方法区的初步认识
(一)堆(Heap)一个JVM实例只存在一个堆内存,堆内存大小是可以调节的;类加载并不是顺序执行,“并发” 执行一个类经过编译后通过一个类的全限定名来获取其定义的二进制字节流 ,然后将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区中这些数据的访问入口。类加载过程:加载、连接过程(验证、准备、解析)、初始化、使用、卸载第一次使用到该类的时候:先进行类加载,也是唯一一次1.1.堆的逻辑分类1.1.1.新生代
2021-03-20 23:37:16
83
原创 网络编程相关笔记
1.网络编程1.1 网络常识1.1.1 计算机网络的定义 分布在不同地域的计算机, 通过硬件等网络设备使用通信线路互相连接形成的一个网格系统。计算机网络, 可以很方便的进行信息的传递, 资源的共享 !1.1.2 计算机的IP地址 IP地址是计算机在互联网中的唯一标识(一般指公网IP)。本机IP: 127.0.0.1。 IP地址的分类:根据是否局域网分类内网IP公网IP根据Internet协议版本分类IPv4IPv4协议具有32位(4字节)地址长度;IPv
2021-03-20 23:34:50
135
原创 学习枚举、注解、类加载过程、双亲委派机制、反射与内省的笔记整理!
1. 枚举 JDK1.5引入了新的类型——枚举,在枚举类型中定义的常量是该枚举类型的实例,枚举类的存在就是为了帮助我们管理一些设置好了的常量。1.1 枚举类的格式权限修饰符 enum 枚举名称 { 实例1,实例2,实例3,实例4,……;}1.2 枚举抽象类的常见方法 Enum是枚举类公共的抽象父类,所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以**枚举对象不能再继承其他类。**Enum的常见方法如下:int compareTo(E o)将此
2021-03-20 23:32:56
194
原创 自己关于常用数据结构(链表、二叉树、栈和队列)、集合框架与Collections工具类的学习笔记整理
学习集合框架是学习javaSE必不可少的一个重点,欢迎大家指正错误!
2021-03-20 23:28:02
222
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人