- 博客(39)
- 收藏
- 关注
原创 Redis的概述与安装
一、Redis的概述Redis是一个开源的key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在
2021-06-12 20:15:51 127
原创 异步线程的复习以及CompletableFuture线程池的使用详解
1.初始化线程的四种方式继承Thread类实现Runnable接口实现Callable接口+FutureTask(可以拿到返回结果,可以处理异常)创建线程池方式1和方式2:主进程无法获取线程的运算结果,不适合分布式的场景方式3:主进程可以获取线程的运算结果,但是不利于控制服务器的线程资源。可能会导致服务器线程资源耗尽。方式4: 通过初始化线程池可以保证线程的稳定,也可以获取到结果,并捕获异常,但是,在业务复杂的情况下,一个异步调用可能会依赖于另一个异步调用的执行结果2.具体实现方式
2020-12-04 21:24:19 498
原创 Nginx的安裝与部署
随便启动一个nginx实例,只是为了复制出配置docker run -p80:80 --name nginx -d nginx:1.10 在你所创建的文件夹中例如opt创建nginx文件夹在nginx文件中创建html logs conf文件夹mkdir htmlmkdir logsmkdir conf将容器内的配置文件拷贝到/opt/nginx/conf/ 下docker container cp nginx:/etc/nginx/ /opt/nginx/conf/.
2020-11-30 14:23:05 124
原创 Vue实现前后端分离
VueMVVM思想M:module 包括数据和一些基本操作V:view 视图,页面渲染结果VM:View-module,模型与视图间的双向操作(无需开发人员干涉)视图和数据通过VM绑定起来,模型里有变化会自动地通过Directives填写到视图中,视图表单中添加了内容也会自动地通过DOM Listeners保存到模型中。教程:Vue: https://cn.vuejs.org/v2/guide/ElementUI: https://element.eleme.cn/#/zh-CN/
2020-11-29 13:33:11 889 2
原创 基于Redis封装一个分布式多级缓存框架
基于Redis封装一个分布式多级缓存框架1.技术栈:1、Redis缓存的使用2、ehcache缓存的使用3、使用aop切面编程4、Redis发布与订阅5、自定义注解 + spel表达式2.封装步骤2.1 创建Maven工程2.1.1导入相关依赖<parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springfr
2020-11-26 19:33:26 313 1
原创 微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比
前言服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。CAP理论CAP理论是分布式架构中重要理论一致性(Consistency) (所有节点在同一时间具有相同的数据)可用性
2020-11-22 12:02:41 90
原创 SpringMVC-整合SSM
1. 搭建整合环境思路:先搭建整合的环境先把Spring的配置搭建完成再使用Spring整合SpringMVC框架最后使用Spring整合MyBatis框架1.1创建数据库和数据表create database ssm;use ssm;create table account(id int primary keyauto_increment,name varchar(20),money double );1.2 创建maven工程,导入相关坐标 <proper
2020-09-28 22:11:06 147
原创 SpringMVC框架中的拦截器
SpringMVC框架中的拦截器1. 拦截器的概述SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有区别1.过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。2.拦截器是SpringMVC框架独有的。3.过滤器配置了/*,可以拦截任何资源。4.拦截器只会对控制器中的方法进行拦截拦截器也是
2020-09-28 13:25:13 203 1
原创 SpringMVC的异常处理
SpringMVC的异常处理1.异常处理思路Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进行异常的处理2.SpringMVC的异常处理package com.feilong.expection;/** * @author FeiLong * @version 1.8 * @date 2020/9/28 9:13 * * 自定义异常类 */@SuppressWarnings("ALL")
2020-09-28 13:06:20 76
原创 SpringMVC实现文件上传
SpringMVC实现文件上传1.文件上传步骤导入文件上传的jar包编写文件上传的JSP页面编写文件上传的Controller控制器<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version>
2020-09-28 12:59:07 98
原创 SpringMVC-02-响应数据和结果视图
SpringMVC-响应数据和结果视图1.返回值分类返回字符串Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。 /** * 返回值是字符串类型 * * @param model * @return */ @RequestMapping("/testString") public String testString(Model model) { System.out.pr
2020-09-28 12:40:04 94
原创 SpringMVC入门
SpringMVC入门1.SpringMVC的概述1.1SpringMVC是什么是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供 了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的 SpringMVC框架或集成其他MVC开
2020-09-27 17:33:59 93
原创 Spring的声明式事务控制
声明式事务控制1. 编程式事务控制相关对象1.1 PlatformTransactionManagerPlatformTransactionManager 接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的方法。注意PlatformTransactionManager 是接口类型,不同的 Dao 层技术则有不同的实现类,例如:Dao 层技术是jdbc 或 mybatis 时:org.springframework.jdbc.datasource.DataSourceTransa
2020-09-26 10:28:33 103
原创 Spring中JdbcTemplate的使用
Spring中JdbcTemplate的使用(了解)01-JdbcTemplate基本使用-概述(了解)JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。02-JdbcTemplate基本使用-开发步骤(理解)①导
2020-09-26 09:45:09 85
原创 Spring整合Junit
Spring整合Junit为了减少以下代码的冗余 ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccountService.class);Spring集成Junit步骤①导入spring集成Junit的坐标②使用@Runwith注解替换原来的运行期③使用@ContextConfig
2020-09-26 09:28:00 84
原创 Spring中的AOP
Spring中的AOP1.什么是AOPAOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。2.AOP的作用及其优势作用:在程序运行期间,在不
2020-09-25 09:04:01 109
原创 Spring的新注解
Spring的新注解>**Configuration**> 作用:指定当前类是一个配置类> 细节:当配置类作为AnnotationConfig ApplicationContext对象创建的参数时,该注解可以不写。ComponentScan 作用:用于通过注解指定spring在创建容器时要扫描的包 属性: value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。 我们使用此注解就等同于在xml中配置了:<context:com
2020-09-25 08:09:19 87
原创 Spring的依赖注入
复杂类型/集合类型数据注入 用于给List结构集合注入的标签数据: list set array 用于给Map结构集合注入的标签数据: map properties 结构相同,标签可以互换,所以只要记住两个就可以
2020-09-24 09:01:44 84
原创 Spring的快速入门
Spring的快速入门1.使用Spring的IOC容器解决程序之间的耦合什么是IOC?控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup),把创建对象的权利交给框架,依赖被注入到对象中。2.Spring程序开发步骤①导入 Spring 开发的基本包坐标②编写 Da
2020-09-24 08:27:56 66
原创 Mybatis的多表之间关系的操作
一、多表之间的查询关系映射使用xml文件配置方式1.一对多User实体类public class User implements Serializable { private int id; private String username; private Date birthday; private String sex; private String address;// 一对多关系映射,一个用户可能对应多个账户,主表实体对应从表实体的集合
2020-09-22 22:57:30 211
原创 dao接口映射配置文件xml的编写
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace 指的是要配置的全限定类名--><mapper namespace="com.feilong.dao.IUserDa
2020-09-22 08:20:59 934
原创 MyBatis的主配置文件SqlMapConfig的编写
MyBatis的主配置文件SqlMapConfig的编写<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><!--mybatis的主配置文件--><configuration&
2020-09-22 08:16:45 61
原创 使用Jquery的方法进行AJAX的数据请求交互
使用Jquery的方法进行AJAX的数据请求交互1.$.ajax()* 语法:$.ajax({键值对}); //使用$.ajax()发送异步请求 $.ajax({ url:"user/addUser" , // 请求路径 type:"POST" , //请求方式 //data: "username=jack&age=23",//请求参数
2020-09-21 21:41:51 64
原创 PageBean封装
大量数据进行分页展示PageBean的封装package com.feilong.shop.entity;import java.io.Serializable;import java.util.List;/** * @author FeiLong * @version 1.8 * @date 2020/9/15 11:48 */@SuppressWarnings({"ALL", "AlibabaAvoidCommentBehindStatement"})public class P
2020-09-19 16:08:24 190
原创 BaseServlet的用法
BaseServlet的抽取(减少创建多个Servlet类),利用反射机制进行优化package com.feilong.shop.controller;import com.feilong.shop.utils.Constants;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import java
2020-09-19 15:57:22 132
原创 JavaWeb-表单中提交数据时到服务器有图片等文件的数据
在进行表单提交数据到服务器有文件时,需要进行的操作以及注意事项1.注意自己的jsp文件中form表单中的属性值需要添加一项enctype="multipart/form-data"必须要加否则无法服务器无法接收,具体代码如下<form action="${pageContext.request.contextPath }/adminUser/addGoods" method="post" enctype="multipart/form-data"> <div> &l
2020-09-19 15:41:27 270
原创 Day07 Java对象
对象1.什么是程序 程序是为了模拟现实世界,解决现实问题而使用计算机语言编写的指令集合;2.什么是对象一切客观存在的事物都是对象,万物皆对象任何对象,一定具有自己的特征和行为 特征:称为属性,一般为名词,代表对象有什么 行为:称为方法,一般为动词,代表对象能做什么3.现实中的对象4.对象的创建5.对象创建流程6.对象的内存分配 存储对象的变量中保存对象的地址,通过变量中的地址访问对象的属性和方法7.
2020-08-01 15:29:31 80
原创 Java冒泡排序
冒泡排序public class Demo04 { // 利用冒泡排序进行比较数值 /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = { 25, 12, 36, 10, 5, 8, 40, 66 }; int i, j = 0; System.out.print("排序前的数组为:"); for (int
2020-08-01 13:59:42 83
原创 给定一个整数数组,读入一个整数n,如果n在数组中存在,输出下标,不存在,输出-1
给定一个整数数组,读入一个整数n,如果n在数组中存在,输出下标,不存在,输出-1;import java.util.Scanner;public class Demo03 { // 给定一个整数数组,读入一个整数n,如果n在数组中存在,输出下标,不存在,输出-1; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] arr =
2020-08-01 11:46:57 981
原创 Java打印杨辉三角
杨辉三角(1)直角杨辉三角import java.util.Scanner;public class Demo01 { // 打印直角杨辉三角 /* * 规律: 第n行有n个数字 每个数字的横坐标都大于等于纵坐标 每一行的开始和结尾都是1 a[i][0] = a[i][j] (当i==j时) * a[i][j] = a[i-1][j-1] + a[i-1][j] */ public static void main(String[] args) { Scanner sc =
2020-08-01 11:38:13 707
原创 Day06 Java数组
数组文章目录数组1.数组的概念2.数组的创建语法**3.数组的下标****4.数组的异常错误****5.数组的默认值****6.数组的遍历**7.数组的扩容8.数组复制的方式9.数组地址的替换10.可变长参数11.数组的排序12.二维数组13.二维数组的赋值14.二维数组的创建语法1.数组的概念 概念:一组连续的存储空间,存储多个相同的数据类型的值 特点:类型相同、长度固定2.数组的创建语法3.数组的下标数组中的每个数据格被称为“数组元素”。对每个元素进行复制或取
2020-08-01 11:28:11 171
原创 Java计算阶乘
利用控制台输入一个数计算这个数的阶乘例如:5的阶乘为 5 * 4 * 3 * 2 * 1import java.util.Scanner;class Demo01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入你要阶乘的数:"); int n = sc.nextInt(); System.out.println(n + "的
2020-08-01 10:02:30 595
原创 Java利用函数递归对“斐波那契数列”的实现
斐波那契数列斐波那契数列又称黄金分割列数,指的是这样一个数列“ 0, 1, 1, 2, 3, 5, 8, 13, 21, …import java.util.Scanner;class Demo01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入你要打印的第几个斐波那契数:"); int n = sc.nextInt();
2020-08-01 09:52:21 235
原创 Day05 Java函数
函数文章目录函数1.函数的概念2.函数定义的位置3.方法的调用4.函数的参数**形参与实参**:**多个参数**:实参的类型、个数、顺序必须与形参相对应5.如何定义参数6.返回值与返回类型函数的返回值 两种处理方法7.return的两种用法8.递归1.函数的概念 概念:实现特定功能的一段代码,可反复使用 注意:要将需要在多个位置反复使用的代码,定义在函数里调用,以避免代码的冗长 一个类中可以定义多个方法,方法之间属于并列关系,不可嵌套
2020-08-01 09:31:57 104
原创 Day04 Java循环结构
循环结构文章目录循环结构1.循环的概念2.while循环(先判断,再执行)3.do while循环(先执行,再判断)4.for循环(先判断,再执行)循环的组成(四个部分):5.流程控制6.嵌套循环1.循环的概念概念:通过某个条件,重复执行的一段逻辑代码2.while循环(先判断,再执行)语法:while(布尔表达式) { //逻辑代码(循环操作) }执行流程: 对布尔表达式进行判断,结果为true,则执行逻辑代码 执行完毕后,再
2020-07-31 21:46:09 75
原创 Day03 Java选择结构与分支结构
选择结构与分支结构文章目录选择结构与分支结构1.基本if选择结构2.if else选择结构3.多重if选择结构4.嵌套if选择结构5.switch分支结构6.局部变量7.成员变量1.基本if选择结构语法:if(布尔表达式) { //代码块//结果为true执行代码块}后续代码...执行流程:对布尔表达式进行判断结果为true,先执行代码块,再执行后续代码结果为false,跳过代码块,直接执行后续代码2.if else选择结构语法:if(布尔表达式) { //代码块1
2020-07-31 21:18:34 133
原创 Day02 java语言基础
Java的语言基础1.变量概念:计算机内存中的一块存储单元,是存储数据的基本单元组成部分:数据类型 变量名、值; int money = 10;定义流程:声明、赋值(变量的类型必须数据的类型相同)2.变量的声明方式变量的声明和赋值声明赋值方式先声明,再赋值数据类型 变量名; 变量名=值;声明并赋值数据类型 变量名=值;多个同类型变量的声明与赋值数据类型 变量1,变量2=值3.数据类型4.类型转换自动类型转换(
2020-07-31 20:33:21 77
原创 Day01 java概述与环境搭建
Java概述与环境搭建以及运行1. Java的由来 Java是一门由Sun公司于1995年推出的面向对象编程语言,应用于B/S(Brower/Server)结构的应用程序2. Java的特点(1)面向对象(贴近人类思维模式,模拟现实世界,解决现实问题)。(2)简单性(自动内存管理机制、不易造成内存溢出;简化流程处理、语义清晰)。(3)跨平台(操作系统、服务器等)。3. Java的执行机制先编译后解释处理流程: (1)编写java代码,以.java文件结尾 (2)通过
2020-07-31 16:31:21 135
原创 Java打印等腰三角形、直角三角形、菱形
Java打印各种三角形文章目录Java打印各种三角形打印正等腰三角形打印倒等腰三角形打印菱形打印左下直角三角形打印右下直角三角形打印左上直角三角形打印右上直角三角形打印正等腰三角形// 利用控制台输入行数打印各种三角形 Scanner ss = new Scanner(System.in); System.out.println("请输入正等腰三角形的行数:"); int line1 = ss.nextInt(); for (int i = 1; i <= line
2020-07-31 11:09:35 535
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人