自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(307)
  • 资源 (2)
  • 收藏
  • 关注

原创 谷粒商城项目实战——05商品服务之品牌分类

四. 品牌分类1. 实现分页1. 问题查询出来的数据条数显示只有0条, 且没有实现分页功能​ 2. 解决1. 官网分页插件 | MyBatis-Plus (baomidou.com)​ 2. config配置类创建配置类@Configuration// 开启事务@EnableTransactionManagement@MapperScan("com.hjf.gulimall.product.dao")public class MyBatisConfig {

2021-05-17 00:12:54 340

原创 谷粒商城项目实战——04商品服务之属性分组

三. 属性分组1. 前期工作1. 数据导入将课件中菜单数据库中的数据导入数据库, 这样就不用自己后期一个一个的添加2. 三级分类抽取成公共组件1. 抽取公共类抽取公共类<template><!-- :data: 获取的数据源 :props: 配置选项 @node-click: 节点被点击时的回调 node-key: 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的(一定要设置)--> <el-tree :d

2021-05-02 16:35:25 393 1

原创 谷粒商城项目实战——03商品服务之品牌管理

二. 品牌管理1. 前期工作可以直接将代码生成器中生成的前端代码拷贝到前端页面, 从而实现简单的功能,只需根据业务需求做相应的修改即可1. 步骤使用代码生成器生成相关代码注意代码生成器所配置时制定的数据库将代码生成器中生成的brand.vue 和 brand-and-or-update.vue两个页面拷贝到项目中​ ​ 2. 测试由于生成的代码中有权限功能, 只有有权限的时候才会生成显示添加和删除等按钮, 所以我们现将权限获取全部设置为true, 后期再来验证权限

2021-05-02 09:56:21 293

原创 谷粒商城项目实战——02商品服务之三级分类管理

一. 三级分类1. 分类树形显示1. 后端代码1. Enerty层在实体类CategoryEntity中添加一个children字段, 用于表示子分类// @TableField(exist = false) 注解表示该属性不是数据库中的字段@TableField(exist = false)private List<CategoryEntity> children;2. Controller层查询所有分类及其子分类, 并以树形结构组装起来@RequestMap

2021-05-02 09:54:45 597 2

原创 谷粒商城项目实战——01前期工作(写得比较乱, 后期需要重新整理)

零.1. 业务对应的数据库product -> gulimall-pmscoupon -> gulimall-smsmember -> gulimall-umsorder -> gulimall-omsware -> gulimall-wms一. 人人开源1. renren-fast-vue: 前台renren-fast-vuehttps://www.jianshu.com/p/2be02670484e2. renren-fast: 后台

2021-05-02 09:52:14 216

原创 谷粒学院项目实战——04后台讲师管理模块(二)前端

一. 搭建项目前端页面环境1. vue-admin-template-master1. 简介vue-element-admin是基于element-ui 的一套后台管理系统集成方案。功能: https://panjiachen.github.io/vue-element-admin-site/zh/guide/#功能GitHub地址: https://github.com/PanJiaChen/vue-element-admin项目在线预览:https://panjiachen.

2021-04-23 23:15:14 361

原创 谷粒学院项目实战——03后台讲师管理模块(一)后端

一. 后台讲师管理模块1. 查询相关的功能1. 查询所有讲师1. 配置文件配置文件内容# 服务端口号server.port=8001# 服务名spring.application.name=service_edu# 环境设置: dev, test, prodspring.profiles.active=dev# 数据库连接spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasourc

2021-04-22 23:36:40 441

原创 AcWing1402. 星空之夜

题目夜空深处,闪亮的星星以星群的形式出现在人们眼中,形态万千。一个星群是指一组非空的在水平,垂直或对角线方向相邻的星星的集合。一个星群不能是一个更大星群的一部分。星群可能是相似的。如果两个星群的形状、包含星星的数目相同,那么无论它们的朝向如何,都认为它们是相似的。通常星群可能有 8 种朝向,如下图所示:现在,我们用一个二维 01 矩阵来表示夜空,如果一个位置上的数字是 1,那么说明这个位置上有一个星星,否则这个位置上的数字应该是 0。给定一个夜空二维矩阵,请你将其中的所有星群用小写字母..

2021-02-04 13:44:49 150

原创 AcWing0089. a^b

题目求 a 的 b 次方对 p 取模的值。输入格式三个整数 a,b,p ,在同一行用空格隔开。输出格式输出一个整数,表示a^b mod p的值。数据范围0≤a,b≤10^91≤p≤10^9输入样例3 2 7输出样例2代码1import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scann..

2021-02-04 13:37:57 107

原创 AcWing1101.献给阿尔吉侬的花束

题目阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。迷宫用一个 R×CR×C 的字符矩阵来表示。字符 S 表示阿尔吉侬所在的位置,字符 E 表示奶酪所在的位置,字符 # 表示墙壁,字符 . 表示可以通行。阿尔吉侬在 1 个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出..

2021-02-04 13:31:39 133

原创 AcWing0756. 蛇形矩阵

题目输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1≤n,m≤100输入样例3 3输出样例1 2 38 9 47 6 5代码1import java.io.*;import java.util.*;public class Main { pub..

2021-01-30 16:46:27 187

原创 AcWing1102. 移动骑士

题目给定一个 n∗nn∗n 的棋盘,以及一个开始位置和终点位置。棋盘的横纵坐标范围都是 0∼n0∼n。将一个国际象棋中的骑士放置在开始位置上,请问将它移动至终点位置至少需要走多少步。一个骑士在棋盘上可行的移动方式如下图所示:输入格式第一行包含整数 T,表示共有 T 组测试数据。每组测试数据第一行包含整数 n,表示棋盘大小。第二行包含两个整数 x,y 用来表示骑士的开始位置坐标 (x,y)。第三行包含两个整数 x,y 用来表示骑士的终点位置坐标 (x,y)。输出格式每组..

2021-01-30 16:39:55 196

原创 AcWing0104. 货仓选址

题目在一条数轴上有 NN 家商店,它们的坐标分别为 A1A1~ANAN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数N。第二行N个整数A1A1~ANAN。输出格式输出一个整数,表示距离之和的最小值。数据范围1 ≤ N ≤ 1000000 ≤ Ai ≤ 40000输入样例46 2 9 1输出样例12代码import ..

2021-01-30 16:33:04 104

原创 LeetCode 迷宫系列(0490, 0499, 0505)

1. 迷宫1: 判断是否能走出迷宫题目//由空地和墙组成的迷宫中有一个球。球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动。当球停下时,可以选择下一个方向。 //// 给定球的起始位置,目的地和迷宫,判断球能否在目的地停下。 //// 迷宫由一个0和1的二维数组表示。 1表示墙壁,0表示空地。你可以假定迷宫的边缘都是墙壁。起始位置和目的地的坐标通过行号和列号给出。 //// //// 示例 1: //// 输入 1: 迷宫由以下二维数组表示////0 0 1 0 0

2021-01-30 11:30:56 2255

原创 JUC学习笔记——04.单例,CAS和各种锁

16. 单例模式1. 饿汉式代码// 饿汉式: 可能会浪费资源public class TestSingle01 { private TestSingle01(){ System.out.println(Thread.currentThread().getName() + " OK!"); } private final static TestSingle01 SINGLE = new TestSingle01(); public static

2020-12-14 23:22:27 116

原创 JUC学习笔记——03.函数式接口, Stream, ForkJoin, JMM和Volatile

10. 四大函数式接口1. 函数式接口定义只有一个方法的接口2.Function函数式接口说明Function函数式接口: 有一个输入, 有一个输出源码@FunctionalInterface// 传入参数T, 返回类型Rpublic interface Function<T, R> { R apply(T t); ...}测试public class Test01 { public static void main(Str

2020-12-14 23:22:08 123

原创 JUC学习笔记——02. 集合不安全, Callable, 读写锁, 阻塞队列 和 线程池

4. 集合类不安全1. List不安全代码public class TestArrayList { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { new Thread(() -> {

2020-12-14 23:21:38 131

原创 JUC学习笔记——01. 线程, 进程和Lock锁

1. 什么是JUCJUC就是java.util.concurrent下面的类包,专门用于多线程的开发。2. 线程和进程1. 概念进程: 运行的程序, 一个线程往往可以包含多个线程java默认有两个线程: main线程和GC线程线程2. 并发和并行并发: 多个线程操作同一资源CPU一核, 快速交替, 模拟出来多条线程,并行: 多个线程同时执行CPU多核, 多个线程同时执行3. 线程的多个状态源码public enum State { // 新生

2020-12-13 20:17:18 151

原创 JVM学习笔记——07垃圾回收(二)垃圾回收器

1. GC分类于性能指标1. 说明垃圾收集器没有在规范中进行过多的规定, 可以由不同的厂商, 不同版本的JVM来实现.由于JDK的版本处于高速迭代过程中, 因此java发展至今已经衍生了众多的GC版本从不同角度分析垃圾收集器, 可以将GC分为不同的类型.2. 分类按线程数分, 可以分为串行回收器和并行回收器按工作模式分, 可以分为并发式垃圾回收器和独占式垃圾回收器按碎片处理方式分, 可以分为压缩式垃圾回收器和非压缩式垃圾回收器按工作的内存区间分, 又可分为年轻代垃

2020-12-01 20:19:22 142

原创 JVM学习笔记——06垃圾回收(一)

一. 垃圾回收概述1. 什么是垃圾垃圾是指在运行程序中没有任何指针指向的对象, 这个对象就像是需要被回收的垃圾.2. 为什么需要垃圾如果不能及时对内存中的垃圾进行处理, 那么, 这些垃圾对象所占据的内存空间会一直保留到应用程序结束, 被保留的空间无法被其他对象使用, 甚至可能导致内存溢出.除了释放没有的对象, 垃圾回收也可以清楚内存里的记录碎片. 碎片整理将所占用的堆内存以到堆的一端, 以便JVM将整理出的内存分配给新的对象随着应用程序所应付的业务也来越庞大, 复杂, 用户越来越多, 没有GC

2020-11-29 11:43:22 193

原创 JVM学习笔记——05对象, 执行引擎, String

一. HotSpot虚拟机对象探秘1. 对象的创建1. 创建对象的方式new: 最常见的方式变形1: Xxx的静态方法变形2: XxxBuilder/XxxFactory的静态方法Class的newInstance(): 反射的方式, 只能调用空参的构造器, 权限必须是publicConstructor的newInstance(Xxx): 反射的方式, 可以调用空参, 带参的构造器, 权限没有要求使用clone(): 不调用任何构造器, 当前类需要实现Cloneable接口, 实现c

2020-11-28 09:13:38 182

原创 JVM学习笔记——04运行时数据区域(二)

五. Java堆1. 堆的核心概述1. 说明一个jvm实例只存在一个堆内存, 堆也是java内存管理的核心区域.Java堆区在jvm启动的时候即被创建, 其空间大小也就确定了. 是jvm管理的最大一块内存空间.堆内存的大小是可以调节的Java堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的,这点就像我们用磁盘空间去存储文件一样,并不要求每个文件都连续存放。此内存区域的唯一目的就是==存放对象实例==所有的线程共享java堆, 堆中可以划分出多个线程私有的分配缓冲区 (Thre

2020-11-26 19:28:03 138

原创 JVM学习笔记——03运行时数据区域(一)

一. 概念Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。二. 程序计数器(PC寄存器)1. 概述程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的 字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器 的值来选取下一条需要执

2020-11-24 21:45:09 136 2

原创 JVM学习笔记——02类加载子系统

一. 类的加载器1. 类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件, class文件在文件开头有特定的文件标识ClassLoader只负责class文件的加载, 至于它是否可以运行, 则由Execution Engine决定.加载的类信息存放于一块称为方法区的内存空间. 除了类的信息外, 方法区中还会存放运行时常量池信息, 可能还包括字符串字面量和数字常量.2. 类加载器ClassLoader角色class file存在于本地磁盘上class file加载到

2020-11-21 21:37:05 121

原创 JVM学习笔记——01JVM与Java体系结构

一. Java发展史1. JDK 1.0版1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0提供了一个纯 解释执行的Java虚拟机实现(Sun Classic VM)JDK 1.0版本的代表技术包括:Java虚拟机、Applet、 AWT等。2. JDK 1.1版JDK 1.1版的技术代表有: JAR文件格式、JDBC、JavaBeans、RMI等。Java语 言的语法也有了一定的增强,如内部类(Inner Class)和反射(

2020-11-21 21:36:31 123

原创 LeetCode0050. Pow(x, n)

一. 题目题目实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例二. 方法一:解题思路x^n = (e^ln(x))^n = e^(n*ln(x))解题代码public double myPow(double x, int n) { int flag = 1; if(x < 0 && n % 2 == 1) { flag = -1; } x = Math.abs(x); // x^

2020-11-15 09:50:10 77

原创 LeetCode0231. x的幂

一. 题231: 2的幂题目给定一个整数,编写一个函数来判断它是否是 2 的幂次方。解题代码public boolean isPowerOfTwo(int n) { if(n <= 0) { return false; } // 方法一: 统计有多少位是1, 当只有一位1时, 就是2的幂 // int sum = 0; // for(int i = 30; i >= 0; i--) { // sum += n

2020-11-12 10:22:10 62

原创 ElasticSearch学习笔记——03Java API

1. 实例化代码@Configurationpublic class ElasticSearchClientConfig { @Bean public RestHighLevelClient restHighLevelClient(){ RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9

2020-11-10 23:01:47 114

原创 ElasticSearch学习笔记——02常见命令

一. IK分词器1. 什么是IK分词器分词: 即把一段中文或者别的划分成一个个的关键字, 我们在搜索时候会把自己的信息进行分词, 会把数据库中或者索引库中的数据进行分词, 然后进行一个匹配操作, 默认的中文分词是将每个字看成一个词, 比如 “我爱狂神” 会被分为 “我”,“爱”,“狂”,“神” , 这显然是不符合要求的, 所以我们需要安装中文分词器 ik 来解决这个问题。2. 分词算法IK 提供了两个分词算法: ik_ smart 和 ik_ max_ word ,其中 ik_ smart

2020-11-10 16:47:58 66

原创 Docker学习笔记——02容器卷, DockerFile 和 Docker网络

一. 容器数据卷1. docker理念回顾将应用和环境打包成一个镜像数据存放在容器中, 当我们删除容器时, 数据也会丢失需求: 数据可以持久化, 数据可以存储在本地容器之间数据隔离, 需要实现数据共享目录挂载: 将容器内的目录, 挂载到Linux上面总结一句话: 数据卷就是容器的持久化和同步操作2. 使用数据卷1. 命令方法一: 直接使用命令来挂载-vdocker run -it -v 主机目录:容器目录2. 案例命令docker run -it -v /hom

2020-10-25 00:03:43 328

原创 Docker学习笔记——01基础语法

一. Docker概述1. Docker为什么会出现?一款产品: 开发–上线 两套环境!应用环境,应用配置!开发 — 运维。 问题:我在我的电脑上可以允许!版本更新,导致服务不可用!对于运维来说考验十分 大环境配置是十分的麻烦,每一个机器都要部署环境(集群Redis、ES、Hadoop…) !费事费力。发布一个项目( jar + (Redis MySQL JDK ES) ),项目能不能带上环境安装打包!之前在服务器配置一个应用的环境 Redis MySQL JDK ES Ha

2020-10-19 23:44:48 197

原创 LeetCode0086. 分隔链表

一. 题目题目给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5二. 方法一: 链表拼接解题思路创建两个链表然后遍历原链表, 如果值小于val, 则插入到链表1的末尾; 否则插入到链表2的末尾遍历结束后,

2020-10-17 13:10:30 186 1

原创 LeetCode0142. 环形链表 II

一. 题目题目示例二. 方法一: 集合解题思路用集合存储每一个节点的地址值如果地址值已经在集合中存在, 则该节点是环的第一个节点, 返回该节点如果遍历到列表末尾, 则说明没有环解题代码 def detectCycle(self, head: ListNode) -> ListNode: res = set() while head: if id(head) in res: return he

2020-10-17 09:49:56 68

原创 LeetCode0589. N叉树的前序遍历

一. 题目题目给定一个 N 叉树,返回其节点值的前序遍历。示例二. 方法一: 递归解题思路解题代码def preorder(self, root: 'Node') -> List[int]: if not root: return root res = [root.val] for ele in root.children: res.extend(self.preorder(ele)) return r

2020-10-15 17:59:00 81

原创 Swagger笔记

一. 前后端分离1. 说明后端: 后端控制层, 服务层, 数据访问层前端: 前端控制层, 视图层​ 伪造数据, json. 不需要后端, 前端工程依旧可以跑起来前后端如何交互 ==> API前后端相互独立 ==> 松耦合前后端甚至可以部署在不同的服务器上.2. 产生一个问题:前后端集成联调, 前端人员和后端人员无法做到"及时协商, 尽早解决"3. 解决方案:首先指定"Schema", 实时更新最新API, 降低集成的风险.早些年指定word文档前后端分离:

2020-10-15 16:25:14 139

原创 LeetCode0116. 填充每个节点的下一个右侧节点指针

一. 题目题目示例二. 方法一: 层次遍历解题思路层次遍历, 将同一层的所有元素通过next指针连起来即可解题代码def connect(self, root: 'Node') -> 'Node': if not root: return root # res 用于存储需要依次遍历的元素 res = [root] while res: # 获取同一层的元素个数

2020-10-15 14:29:10 78

原创 LeetCode0073. 矩阵置零

一. 题目题目给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例二. 方法一解题思路解题代码def setZeroes(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ row = set() col = set

2020-10-13 20:54:28 78

原创 LeetCode0053. 最大子序和

一. 题目题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例二. 方法一解题思路如果之前的最大子序列小于0, 则当前最大子序列就是当前元素如果之前的最大子序列大于0, 则当前最大子序列等于之前最大子序列 + 当前元素解题代码def maxSubArray(self, nums: List[int]) -> int: max_size = nums[0] arr = [0 for _

2020-10-13 16:07:16 55

原创 LeetCode0070. 爬楼梯

一. 题目题目示例二. 方法一解题思路因为一次只能可能走一步或两步, 所以当最后一步可能是1步或2步所以n阶的情况等于n-1阶的情况 + n-2阶的情况斐波那契解题代码def climbStairs(self, n: int) -> int: if n <= 2: return n res = [_ + 1 for _ in range(n)] for i in range(2, n): res

2020-10-13 15:05:40 76

原创 LeetCode0189. 旋转数组

一. 题目题目给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例二. 方法一解题思路将列表中最后的元素弹出并插入到列表的第一个位置重复k次后, 得到的列表即为最终结果解题代码def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ for

2020-10-13 11:09:44 90

redis连接包.zip

Java开发redis的相关包 1. commons-pool2-2.4.2.jar 2. jedis-2.8.1.jar

2020-07-26

nginx-sission相关包.7z

包括以下所有包文件: asm-3.2.jar kryo-1.04.jar kryo-serializers-0.11.jar memcached-session-manager-1.7.0.jar memcached-session-manager-tc7-1.8.1.jar minlog-1.2.jar msm-kryo-serializer-1.7.0.jar reflectasm-1.01.jar spymemcached-2.7.3.jar

2019-10-20

空空如也

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

TA关注的人

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