自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

战无道的博客

一些自我学习的笔记,请大佬们多多指教!

  • 博客(108)
  • 收藏
  • 关注

原创 2022.03面试题

//阿里云项目组面试真题1、https://blog.csdn.net/justloveyou_/article/details/62893086相同点:hashmap和Hashtable都实现了map、Cloneable(可克隆)、Serializable(可序列化)这三个接口不同点:底层数据结构不同:jdk1.7底层都是数组+链表,但jdk1.8 HashMap加入了红黑树Hashtable 是不允许键或值为 null 的,HashMap 的键值则都可以为 null。添加key-valu

2022-02-11 23:49:17 1847

原创 Linux服务器相关命令(更新中)

剪切文件到当前目录(./为当前目录)mv …/person/pser.war ./删除文件夹,-r强制删除,-f不询问rm -rf xxx解压zip/war到当前目录unzip xxx.war解压到指定目录unzip -d /root/src xxx.war压缩命令:tar -czf dgw.tar.gz dgw改变用户组#usermod -g root ioc查看开放端口iptables -nL(看最后面的内容)或firewall-cmd --zone=public --li

2021-12-14 16:56:55 2144

原创 面试题

map有哪些主要实现map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):HashMap:我们最常用的Map,HashMap的值是没有顺序的,他是按照key的HashCode来实现的,就是根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为 Nul

2020-12-13 00:15:24 2736 1

原创 面试常问

写SQL很常考察group by、内连接和外连接。手写代码:手写代码一般考单例、排序、线程、消费者生产者。我建议排序算法除了冒泡排序,最好还能手写一种其他的排序代码。试想:如果一般面试者都写的冒泡排序,而你写的是快速排序/堆排序,肯定能给面试官留下不错的印象。面试常问的知识点?1)集合相关问题(必问):1.1HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现。1.2HashMap和Hashtable的区别。1.3.

2020-12-13 00:14:35 291

原创 SpringCloud-7-配置中心

一、创建配置中心微服务4041把所有配置文件都扔到git仓库里,修改配置文件,只需要发送一个post请求,不需要重启项目就能完成更新git创建仓库1.1 添加依赖其实和eureka一样,config也是个服务端,其他微服务连到这个模块就相当于客户端。注意:这个默认版本是2.2.1,其他版本如2.2.2会出现jar包冲突,nosuchmethod错误1.2 配置文件注意:你的git仓库是私有的就加上账号密码,公有的就可以不加server: port: 4041eureka:

2020-11-16 16:29:59 104

原创 SpringCloud-5-Hystrix

一、Hystrix概述熔断器,断路器,类似于家里的保险丝,保证分布式服务的安全运行1.1 服务雪崩在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者"的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。如果下图所示: A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了。现实通常是更糟糕

2020-11-15 21:21:45 146

原创 SpringCloud-8-事务控制

一、事务1.1 概念事务控制必须保证同一个连接,spring打个注解就解决了,但分布式里控制不住,可能是在自己微服务里同时调用三个微服务,不同数据库不同虚拟机不同ip地址,肯定控制不住。解决方法:1. 把关联性比较强的几个表放在一个微服务里,spring打个注解就可以用了2. 分布式用seata解决//seata中文网http://seata.io/zh-cn/https://github.com/seata/seatahttps://github.com/seata/seat

2020-11-15 00:18:06 1991

原创 SpringCloud-6-Zuul网关

一、网关作用nginx结构图就是一个微服务的统一入口,网关会根据路径进行分配,发送给不同的模块1.1 概述1.2 常见的API网关实现方式Kong基于Nginx+Lua开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用。问题:只支持Http协议;二次开发,自由扩展困难;提供管理API,缺乏更易用的管控、配置方式。ZuulNetflix开源,功能丰富,使用JAVA开发,易于二次开发;需要运行在web容器中,如Tomcat。问题:缺乏管控,无法动态配置;依赖组件较多;处

2020-11-12 06:51:51 126 1

原创 SpringCloud-4-OpenFeign

一、概念1.1什么是Ribbon1.2重要作用基于ribbon实现服务调用调用的服务可能会崩掉,实现客户端负载均衡,nginx是实现服务器的负载均衡二、OpenFeign(最好的调用方式)不使用RestTemplate,定义接口(服务名),方法(请求路径)在分布式服务出现以前用WebService:Web服务;还有.NET Remote远程调用三、Hystrix:熔断器三个状态:默认关闭;打开直接进入降级;打开后半开放出一个请求,请求成功就关闭,失败了就继续打开3.1 降级正常请求

2020-11-12 06:51:15 112

原创 SpringCloud-3-Ribbon

一、概念1.1什么是Ribbon1.2重要作用基于ribbon实现服务调用调用的服务可能会崩掉,实现客户端负载均衡,nginx是实现服务器的负载均衡二、OpenFeign(最好的调用方式)不使用RestTemplate,定义接口(服务名),方法(请求路径)在分布式服务出现以前用WebService:Web服务;还有.NET Remote远程调用三、Hystrix:熔断器三个状态:默认关闭;打开直接进入降级;打开后半开放出一个请求,请求成功就关闭,失败了就继续打开3.1 降级正常请求

2020-11-12 06:50:11 150 1

原创 SpringCloud-2-Eureka注册中心

一、Eureka服务注册中心所有模块的把自己的信息写到注册中心,模块间调用先在注册中心找到另一个模块的信息,查到就可以调用Eureka基本结构1.1 常见的注册中心(主要讲下zookeeper)Zookeeper有些公司在用,因为Dubbo推荐用这个,现在springcloud不推荐用,但也支持ZookeeperC:一致性A:可用性P:分区容忍性只能满足其中两个条件zookeeper:一个机器访问同步的服务器可以拿到数据,未同步的服务器就拿不到数据,那怎么实现一致性?(把信息同步到所

2020-11-12 06:49:40 113

原创 Vue-3-单文件组件

一、安装Vue脚手架工具(新版本)1.1 先安装node.js环境,下一步下一步即可管理员运行cmd,查看版本号,有的话说明安装成功node -v1.2 更换淘宝的镜像源npm config set registry https://registry.npm.taobao.org1.2 脚手架全局安装(只需要一次即可,不用反复安装)//官网npm install -g @vue/cli注意第一次安装的是3.0以下的版本,要3.0以上版本的话要卸载重新安装 npm uninsta

2020-11-08 18:52:07 913

原创 SpringCloud-1-概念及实现模块间调用

一、概念1.1系统架构的演变1.1.1 单体项目Web应用程序发展的早期,大部分web工程(包含前端页面,web层代码,service层代码,dao层代码)是将所有的功能模块,打包到一起并放在一个web容器中运行。优点:所有的功能集成在一个项目工程中项目架构简单,前期开发成本低,周期短,小型项目的首选。缺点:全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。技术栈受限。1.1.2垂直拆分当访问量逐渐增大,单一应用增加机器带

2020-11-07 14:28:10 1179 1

原创 Rebbitmq-3-SpringBoot整合

一、依赖二、配置自动配置+yml配置文件三、启用rabbitmq现在很多新的jar包不用打注解,有的老版本需要打,还是建议直接打上四、生产者五、消费者5.1 配置类配置声明及绑定配置类来配置,声明交换机、声明队列、绑定交换机也可以绑定交换机,一层一层传递这里注意绑定的是对象,要传对象过来或者直接写方法,一般不这么写5.2 消费者类监听六、确认消息6.1 生产者确认确认信息选择,通过干预spring生命周期就是在创建对象之前,要进行确认消息的选择,类似于原

2020-11-06 13:47:13 89

原创 RabbitMQ-2-工作模式及参数配置

一、workqueues多个消费者监听同一个队列,提高处理速度相比简单模式多加了消费者,类似于分布式,加快了处理消息的速度实际项目只声明一次队列,一般声明在消费者,因为消费者是一直运行的,不能关闭资源代码加一个消费者,就是复制一份消费者类即可,偶数就平均分配,奇数就一边2个一边3个二、publish/subscribe发布订阅(又叫扇出模式)将一个交换机里面的消息给多个队列,(消息同时发送到邮件队列和短信队列,两个消费者,一个监听邮件,一个监听短信(sms:short messaging se

2020-11-04 16:49:17 468

原创 RabbitMQ-1-概念及简单应用

一、为什么使用RabbitMQ只要写入数据库就响应给用户,用户体验比较好,发送邮件和短信就慢慢发1.1串行方式1.2 并行方式开两个线程快一些1.3 消息队列(这种最好)彻底分开为两个程序一个程序往队列里放消息,只负责把消息写入数据库;另一个程序就等待处理消息,拿到消息去发邮件或者发短信。只要消息写入消息队列,就算注册成功。1.4 作用应用解耦:写数据库和发送短信邮件分开流量削峰:流量高的时候不要一起处理,都放到消息队列里,拿一个处理一个,就不会丢数据了,解决了数据库连接

2020-11-04 16:48:45 204 2

原创 Vue-2-表单、组件

一、表单1.1双向数据绑定v-model(vue独有的功能,其他框架都没有)v-model相当于替代了value的属性,但是它更高级,因为双向操作,改变data里的数据,input框的值跟着变,改变input框里的值,data里的数据也跟着变,这个功能是vue独有的,react都没有,很强大。上下跟着变1.2 ref取名有时不想用双向绑定,只是想获得输入框的值失去焦点获得输入框的值,自己取名叫myInput,类似于原生js操作节点来获取值;不仅仅只能拿到输入框的值,可以拿到任何元素的值,@r

2020-11-02 22:30:08 448

原创 Redis-5-实际应用

一、session丢失本地请求不同服务器,session会覆盖二、分布式SpringSession共享之前的方法:session广播Spring-Session:把session数据存到redis中,每次getSession不去session中找,去redis中找,就不会丢了token:客户端携带token,分布式使用2.1添加依赖也是个小框架2.2 使用在启动类上打个注解即可,会自动将session存入redis三、Redis秒杀3.1商品数量:超卖解决方法:不用加锁,使

2020-11-02 19:57:18 110

原创 Vue-1-实例、渲染、监听事件

一、概念渐进的意思是我们可以用vue只写一个页面,慢慢的把整个项目用vue替换掉结合了React和Angular,也有自己的优点二、Vue实例页面的值都是从data里来的,随data值的改变而刷新,不用像render那样,只要改变就渲染整个页面2.1datadata是Vue中存放数据的属性,该属性的值有两种:对象返回对象的函数(推荐,因为一开始简单的可以用,到后面复杂项目对象就用不了了),实际上就必须是对象:function可省略需要用到和保存的数据继续在data里存就好

2020-11-01 19:31:47 718

原创 Redis-4-Java操作Redis

一、存对象这个写死了,key和value只能是String。可以序列化成json。存进去。取出来再转成对象用RedisTemplate<k, v>就比较灵活,默认使用了jdk的序列化,序列化为二进制格式的文件,不太好看,但安全,实际还是不好用注意k为object,所以假如存的1和"1",它俩不一样,取得数据不一样,而redis的key都为string,这里有冲突,后面自定义序列化器进行配置注意:用框架传输,实体类必须序列化,包括redis和cloud二、数据序列化方式Redi

2020-10-31 17:34:28 264

原创 Redis-3-Java搭建Redis

一、通用配置Jedis(无框架)Java操作Redis:jar包+API,框架(配置+ jar包+API)Redis官方推荐的工具类这里写法是最通用的:和Spring框架没有关系1.1 spring自动导入连接池的依赖1.2 基本操作Jedis1.3 使用连接池1.4 封装成工具类1.5 配置信息写入配置文件也可以这样获取二、spring配置jedis这里建的springboot项目,但是并没有用到启动器,只是用到了注入和读配置文件这里是自定义的配置文件,配置文件中自定

2020-10-31 17:33:55 308

原创 Redis-2-Linux操作Redis

一、Redis命令1.1 通用指令1.1.1 正则表达式1.1.2 基本命令1.1.2.1 key上面的命令key重名会直接覆盖(key对应数据覆盖newkey对应的表数据),下面的命令(nx=not exists)查询不到key才会修改1.1.2.2 数据库1.2 String添加后返回键对应字符串全部长度整数加完小数就不能加整数了,只能指定具体的小数来加不能减小数,只能加小数1.2.1 用字符存储对象1.3 hashMap<String key,Obje

2020-10-28 19:31:10 220 1

原创 Redis-1-Linux上搭建

一、Redis简介1.1 关系型数据库1.2 解决思路1.3 Nosql大数据用的是Hbase,java方向redis用的是最多的1.4 Redis和nginx都是c语言写的,要安装c和c++的编译器gcc1.5 特点i++:保证原子操作;多线程会出现指令操作被打断,i加了但没有赋值,最后得出的结果较真实数据小。redis6支持多线程指的是发送请求,执行指令还是单线程1.6 数据类型redis是以key-value方式存储的redis的key都是String,value才有

2020-10-28 19:30:39 94

原创 LayUI使用文档

一、表单1.1 更新表单1.2 预设属性值1.3 事件监听1.4 表单赋值取值1.5 表单验证二、数据表格2.1方法渲染2.2 基础参数2.3 示例2.4 toolbar2.5 异步数据接口2.6 done2.7 defaultbar2.8 自定义文本、排序2.9 容器高度2.10 表格外观2.11 基础方法2.12 获取选中行2.13 重置尺寸2.14 重载2.15 导出数据2.16 事件监听

2020-10-19 12:42:16 4915 1

原创 SpringBoot6-整合MyBatis、Shiro

一、整合MyBatis1.1 添加依赖mysql驱动包,默认是最新的版本mysql-spring-boot包不是spring做的,所以不受spring版本控制以前底层的都不需要自己写了,写映射文件就可以了,但自动配置的参数要配置一下1.2 目录位置1.3 配置文件1.3.1 以前的主配置文件配置写到springboot配置文件中1.3.2 打个Mapper注解,通过动态代理自动生成接口实现类每个类都打注解很麻烦,所以在主类加注解,全部扫描,就不用一个一个添加了1.4 最新版

2020-10-19 12:40:35 151

原创 SpringBoot5-Restful风格CRUD

一、Restful风格CRUD1.1 就是一种规范都是emp/1,你发送get就执行查询,发送put就执行修改以前像springmvc这样配置路径就不需要你做了1.2 示例代码1.2.1 查询限定请求方式为get转换日期格式1.2.2 添加1.2.2.1 添加前跳转查询(部门)查询跳转,添加之前的准备,超链接为get1.2.2.2 真正添加用请求方式来区分一定注意最后要重定向请求/emps的Controller,会自动跳转至查询页面,如果直接请求emps页面

2020-10-19 12:38:50 177

原创 SpringBoot4-日志-页面跳转-登录

一、日志门面实现SpringJCL(commons-logging)log4jSpringBootslf4jlogback1.1 控制日志1.2 自定义日志启动类使用logback核心类加一个@Slf4j注解,lombok可以自动生成logger对象log二、页面跳转2.1 静态资源解析默认的静态资源解析位置就在这不想用默认位置自己配,给了三个位置一般都够了我们就用默认的static下面,端口/a.html直接访问String页面跳

2020-10-08 23:30:19 252 1

原创 SpringBoot3-自动配置、配置文件和配置类

一、SpringBoot简化开发1.1 约定大于配置就不想放在主类包下面,也可以,在主类上面打个包扫描注解(没有必要给自己找麻烦)1.2 场景启动器一个特定开发环境中的所有jar包的整合1.3 XxxxAutoConfigure每个场景启动器中会有自动创建当前场景中需要使用的常用类1.4 XxxxProperties常用的类的对象创建以后,常用属性都有默认值,开发中不想使用这些固定的值,可以在SpringBoot的配置文件中修改,修改的属性值都是通过XxxxProperties类的set

2020-10-08 02:21:54 2290

原创 SpringBoot2-简介及搭建

一、简介Spring:​ EJB使用复杂,Spring是一个轻量级框架​ Spring使用以及整合其他框架的时候,配置越来越多SpringBoot:(你写的越少,底层就越复杂)​ 简化Spring开发,底层就是Spring​ 约定大于配置,底层有自动配置你只需要会一个接口即可,底层SpringBoot都帮你对接好了官方更新的很快,我们用正式版2.2.10(2020年初的版本)我们建的时候只能用服务器最新的版本,进去再改成老版本二、开发工具eclipse:没有SpringBoot的创

2020-10-08 00:41:38 3742

原创 SpringBoot1-父项目聚合项目

一、父项目pom就是创建继承关系和聚合关系项目用的1.1 创建父项目项目之间有继承关系,先创建父项目(打包类型是pom),再创建子项目(类型任意,它如果想再被继承,也可以是pom,都可以)1.2 创建子项目建项目还是建普通的项目,聚合关系就是建module了[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YubTVpOI-1602066532439)(C:/Users/CEO/AppData/Roaming/Typora/typora-user-images/im

2020-10-07 18:29:11 560

原创 Maven3-jar包冲突及创建SSM项目

一、jar包冲突这种添加没有任何意义,不叫jar包冲突,在前的不起作用,在后的起作用,后面会覆盖前面,这不是jar包冲突这是你的问题我们指的jar包冲突是两个包同时依赖同一种第三方jar包,而依赖的版本不同会产生冲突,这种叫jar包冲突举个栗子1.1 第一声明优先我们假设这是两个不用框架的依赖包,依赖同一jar包spring-beans两个jar包都依赖同一jar包(版本不同),依赖的层级相同,依赖包的版本由声明在前的jar包决定前后顺序一换,就是4.2.1生效1.2 最短路径优先

2020-10-06 01:43:02 150

原创 Maven2-依赖管理及创建javaWeb项目

一、Maven的生命周期编译compile清理 clean测试 test打包 package 在项目的target目录安装 install 在本地仓库部署 deploy 在远程仓库(中央仓库是一个服务器团队在维护,无法部署)在Windows里配置的环境变量是在dos命令窗口用的,在eclipse里面用是在eclipse里配置的,各管各的这个build不是maven里面的命令,是通用命令,选择你以前执行过的命令1.1 在pom.xml里右键maven添加jar包依赖,添加插件1.

2020-10-05 23:32:12 189

原创 Maven1-配置及创建JavaSE项目

一、Maven简介项目构建工具(不只是管理jar包),项目设计和编码由程序员来做,它做不了;而编译,运行,测试,打包,部署,jar管理它都能做Apache提供,Java开发的,运行Maven要有基本的java开发工具包Maven仓库:存储jar包本地仓库:当前本地电脑远程仓库:局域网中的服务器中央仓库:远程服务器有远程仓库:本地连接远程,远程仓库中有就下载到本地,没有就去连中央仓库,中央仓库下载到远程,远程再下载到本地,适合团队开发,远程仓库可以连接多个本地仓库,所以很多公

2020-10-05 20:54:39 435

原创 SSM-整合Shiro

一、 密码加密-Hash散列算法基础的比较流程1.1 MD5加密md5只执行了加密,没有解密的方法。 网上很多说的md5解密其实就是把常见的字符串解密结果存起来,去进行一个一个的比对,并没有能真正的把md5解密的方法盐值加密原来的字符串再加一个字符串,把密码的复杂程度再次提高迭代次数按照md5的算法再算一次,默认就是1次,迭代一次就是2,迭代两次就是31.2 改自定义realm这段代码应该是注册时使用,对密码进行加密把数据库储存的盐值转换为credenti

2020-10-05 20:53:28 121

原创 Shiro3-授权

授权1.1 角色类似于计算机上的组,不同的组权限个数都不同不同的用户属于不同的组,对应不同的权限个数在shiro框架里就是这个roles角色表role中间表权限表​ 一个用户具有一个角色加一个角色id的主键即可,一对一一个用户具有多个角色要再加一张用户角色表,一对多1.2 格式数据库里权限就这么写:user:update不同的用户有着多个不同的角色,不同角色对应着不同的权限这个.

2020-10-03 23:44:27 461

原创 Shiro2-加密

一、 密码加密-Hash散列算法基础的比较流程1.1 MD5加密md5只执行了加密,没有解密的方法。 网上很多说的md5解密其实就是把常见的字符串解密结果存起来,去进行一个一个的比对,并没有能真正的把md5解密的方法盐值加密原来的字符串再加一个字符串,把密码的复杂程度再次提高迭代次数按照md5的算法再算一次,默认就是1次,迭代一次就是2,迭代两次就是31.2 改自定义realm这段代码应该是注册时使用,对密码进行加密把数据库储存的盐值转换为credenti

2020-10-03 23:43:56 104

原创 Shiro1-权限框架搭建及认证

一、Shiro简介权限框架​ 认证 authentacation,登录(不需要自己写拦截器)​ 授权 authorization,有没有执行操作的权限整体架构从编码使用的角度来看,shiro的一些核心详细架构二、搭建(最简单)2.1 jar包2.2 配置文件以后存到数据库2.3 类token里面已经有比较了,把这个结果交给subject.login用户名密码不匹配,报凭证错误异常,继承自runtimeexception自己捕获异常三、自定义Ream

2020-09-26 19:22:54 116

原创 SpringMVC5-Interceptor拦截器

注解开发一、配置文件二、不用实现接口处理方法相对配置很灵活,但参数和返回值有规定,不能随便写三、路径符合规则3.1 多路径配置省略的value属性是一个String[],字符串数组3.2 命名空间每个方法路径前面加一个统一的前缀(像前面加一个域名一样)3.3 方法通配在和my中间,方法路径前面有且只有一层my/b/third.do在和my中间,方法路径前面有任意层3.4 限定请求类型method是一个String[],字符串数组,现在写get和post就.

2020-09-26 14:50:59 275

原创 SpringMVC4-JSR303验证框架

数据验证服务端数据验证:​ 接收参数,取出对应字段,依次判断是否满足对应业务规则(JSR303少写的就是这些代码);​ 验证不通过,存储在域中,转发到页面显示。JSR303:java验证规范,Spring框架没有实现,Hibernate实现了1.1 jar包1.2 配置验证器验证器id取名为localValidator(图片里没有写)注册驱动的名字要跟bean的id一致1.3 注解字符串,非空是NotEmpty除了String的其他类型非空NotNull,范围验证.

2020-09-26 14:50:22 125

原创 SpringMVC3-传递数据

一、Date类日期类型spring是不会自动转换的,要写实现转换器接口的类spring是不知道有这个转换器的,要配置记得要配置mvc注解驱动二、异常处理Controller层的异常处理2.1 之前的处理方法(java里最基本的方法)同步异步2.2 框架中处理方法2.2.1 写配置文件统一异常配置不同异常去不同页面有具体对得上的异常,就去它的页面(npe.jsp),否则就去总的异常界面(error.jsp)缺点:这是个兜底的配置,怎么样都不会看到

2020-09-24 17:38:00 127

空空如也

空空如也

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

TA关注的人

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