- 博客(33)
- 收藏
- 关注
原创 设计模式-模版方法
模版方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模版方法模式是很常见且很有用的一种模式,理解起来也容易。其优点就是保护了这个算法的结构,重复的步骤在自身实现,一些步骤放给子类去实现,很灵活。
2025-02-12 18:03:22
444
原创 设计模式-外观模式
外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层的接口,让子系统更容易使用。外观模式其实和适配器模式很像,只不过适配器模式转化接口是为了实现接口的兼容,把每个接口都做了转化,而外观模式改变接口的原因是为了简化接口,把复杂的一切都隐藏,只对外暴露出一个干净的外观,而且外观模式不只是简单得简化解耦,也实现了将客户从众多子组件中解耦。
2025-02-12 14:35:12
497
原创 设计模式-适配器模式
适配器模式可以将一个类的接口转换成客户期望的另一个接口,适配器让原本不兼容的类可以合作无间。举一个生活中常见的例子,比如手机上的TypeC接口转3.5mm的二级插口的转换器,就是一个适配器,让不同的物理接口可以正常合作。适配器模式可以将一个类的接口转换成客户期望的另一个接口,适配器让原本不兼容的类可以合作无间。举一个生活中常见的例子,比如手机上的TypeC接口转3.5mm的二级插口的转换器,就是一个适配器,让不同的物理接口可以正常合作。
2025-02-12 11:36:37
561
原创 设计模式-命令模式
命令模式就是将一些请求封装为对象,以便使用不同的请求、队列、或者日志来参数化其他对象。命令模式也可以支持撤销的操作。也就是说可以把一些动作封装为对象,以便于我们随心所欲地存储、传递和调用它们。这种正式的定义一般都比较抽象的,我们下面通过设计一个遥控器的例子来理解。
2025-02-10 15:35:13
685
原创 设计模式-策略模式
策略模式比较容易理解且很常见,主要思想就是将同一类型的算法封装为一个算法组,使得他们之间可以相互替换,此模式让算法变化独立于使用算法的客户。可能这样直接说比较抽象,下面的实现通过一个经典的鸭子类的例子来实现策略模式。
2025-02-08 16:15:42
661
原创 设计模式-单例模式
单例模式算是比较简单的一种设计模式了,其核心思想就是确保一个类只有一个实例,并提供一个全局访问点。具体点来说,就是我们把单例类设计成自己管理的一个单独实例,同时避免其他类创建单例实例,要想获取单例实例,通过单例类是唯一的方式。所谓的全局访问点,单例实例提供给其他类的获取实例的方法,也就是在这个方法中,保证了单例类只有一个实例。
2025-02-08 14:58:48
616
原创 【MySQL】MySQL时间问题:1、MySQL本身问题;2、jdbc连接问题
参数,这时,系统会把从数据库中查询出来的数据当做UTC时区的,而我的服务器(就是后端调用SQL的机器)的时区是GMT+8的,所以他会把查出来的时间加上8个小时。3:使用SQL的日期函数,结果和MySQL的时区有关,如果MySQL时区配置正确,和本地时区一致,那么时间就是本地时间。,从数据库中查出来的数据会被认为是jdbc连接中的参数设置的时区的,会将这个时间转为当前机器的时区。查出来的结果如何本地时间查了8个小时,这一般就是MySQL的时区不对,那么重新设置一下时区即可。如图,在jdbc的连接中故意设置。
2023-04-02 15:12:24
673
原创 Shiro权限安全框架的使用
该方法只是获取进行对比的信息,认证逻辑还是按照Shiro底层认证逻辑完成需要通过配置使自定义的realm生效,目前在ini文件中配置,之后在springboot中配置。
2022-10-19 23:37:50
1342
原创 【位运算简单例题】
已知一个数组中只有一种数出现了奇数次,其他所有数都出现了偶数次,怎么找到这个出现了奇数次的数?已知一个数组中有两种数出现了奇数次,其他所有数都出现了偶数次,怎么找到这两个出现了奇数次的数?要求时间O(N),空间O(1)第一问:很简单,声明一个变量eor,初始为0,遍历数组都异或一边,最终的结果就是这个值第二问:和上一问一样先异或一遍,结果eor = a^b,由于a!=b,所以eor必然有一位上为1,下面就是找到一个1,之后...
2022-08-07 10:46:34
251
原创 【SSM整合】SSM整合学习-2022详细学习笔记
学习尚硅谷2022版SSM教程的详细学习笔记SpringMVC和Spring可以整合也可以不整合,不整合就是Spring和SpringMVC用同一个IOC容器,整合就是各自创建IOC容器去管理自己的。SpringMVC的IOC容器是在DispatcherServlet进行初始化的时候创建的,那么Spring的IOC容器应该在什么时候创建呢?SpringMVC管理的是控制层组件,而其他的需要交给Spring管理,而controller需要自动装配service层.........
2022-08-05 11:19:46
4520
原创 【SpringMVC】SpringMVC学习-2022详细学习笔记
尚硅谷2022版SSM课程学习笔记是一种架构思想,不是框架或者设计模式是Spring为表述层开发提供的一整套完备的解决方案,封装的就是servlet。注:由于 Maven 的传递性,我们不必将所有需要的包全部配置依赖,而是配置最顶端的依赖,其他靠传递性导入。匹配请求时:写,匹配浏览器向服务器发送的所有请求,但是不包括以.jsp结尾的请求而,可以匹配.jsp的请求,但是DispatcherServlet不能处理这种请求,需要Tomcat中专门的的处理.jsp请求的servlet.........
2022-08-05 11:07:44
2361
原创 【Spring】Spring框架学习-2022详细学习笔记
学习尚硅谷2022版SSM全套教程的笔Spring 基础框架,可以视为 Spring 基础设施,基本上任何其他 Spring 项目都是以 Spring Framework为基础的。1、非侵入式:使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
2022-08-05 10:55:55
2933
1
原创 【MyBatis】MyBatis框架学习-2022详细学习笔记
尚硅谷2022版SSM教程MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis提供的持久层框架.........
2022-07-23 17:22:17
1557
1
原创 【安装mysql8.0】使用msi安装mysql8.0,在Windows上配置,Navicat连接数据库
使用msi安装,msi是Windows installer数据包,安装完成之后会有mysql installer 程序,之后对于mysql的安装升级卸载等都可以通过这个程序来实现。下载第二个,注意,虽然这里显示的是32位的,但是之后安装完成之后是可以进行选择mysql5.7-win64位的,所以这里并不是代表着mysql是32位的。点击下载之后需要你登录,这里我们直接选择 No thanks, just start my download.即可下载完成之后运行安装程序选择之后,点击绿色的箭头就可以了这
2022-07-19 20:04:39
1620
原创 【cs231n】详解神经网络中的反向传播
定义:使用计算图来表示任意函数,其中图的节点表示我们要执行的每一步计算。好处:使用计算图来表示一个函数,就能使用反向传播技术递归地调用链式法则来计算一下计算图中每个变量的梯度。当涉及到非常复杂的函数时,这种方法非常有用。对于函数f(x,y,z)=(x+y)zf(x,y,z) = (x+y)zf(x,y,z)=(x+y)z,其中x=-2,y=5,z=-4链式法则,比如计算∂f∂y=∂f∂q∂q∂y\dfrac{\partial f}{\partial y} = \dfrac{\partial f}{\pa
2022-07-06 14:52:46
546
原创 【cs231n】损失函数SVM、softmax及梯度下降优化
如何确定W,如何利用训练数据得到好的W。损失函数:定义一个函数,输入W,然后定量计算W的好坏。给定一个样本(xi,yi)(x_i,y_i)(xi,yi),其中xix_ixi是图片,yiy_iyi是图片真实对应的标签,就是第几类,i代表是训练集第i个样本。用支持向量机表示为:Li=∑j≠yimax(0,sj−syi+1)L_i = \sum_{j\neq y_i}max(0,s_j-s_{y_i}+1)Li=j=yi∑max(0,sj−syi+1),S为这张图片通过分类器计算出来的各个
2022-07-06 14:51:55
909
原创 【cs231n】图像分类K最邻近算法和线性分类器
很难直接写出一个代码来判断他是什么对象通过比较图像之间的差异进行分类,通过像素进行比较差异。首先通过训练函数只是简单地所有的训练数据都记忆下来,每次输入一张图片进行预测时,将遍历已经记忆的训练数据找到最相近的图片,根据最相近的图片的类别来预测这个输入图片的类别。训练的复杂度:O(1)预测的复杂度:O(N)这是很坏的一个结果,因为在训练时这个算法很快,但是真正进行预测时很慢,这和我们的初衷完全相反。如果只计算最邻近一个图片,会有弊端,比如下图,绿色分区中单独有一个黄色的点,因为只计算最近的那个点,所以那一片就
2022-07-06 14:51:28
726
原创 jdbc学习笔记以及DAO层设计
JDBC:是sun发布的一个java程序和数据库之间通信的规范(接口)各大数据库厂商去实现JDBC规范(实现类),将这些实现类打成压缩包,就是所谓的jar包比如:url:防止中文乱码,加上参数。url的标准格式为:1.3 添加数据先建立连接之后,得到connection对象,这个对象相当于建立了一条连接数据库和java之间的马路,通过connection对象得到预处理对象,这个对象相当于马路上的一辆车,用于运送真实的数据。在SQL语句中,使用当做占位符,再通过预处理对象的set方法为占位符填充内容最后,
2022-06-22 21:04:41
531
原创 【安装mysql5.7】使用msi安装mysql5.7,在Windows上配置,Navicat连接数据库
使用msi安装,msi是Windows installer数据包,安装完成之后会有mysql installer 程序,之后对于mysql的安装升级卸载等都可以通过这个程序来实现。注意,虽然这里显示的是32位的,但是之后安装完成之后是可以进行选择mysql5.7-win64位的,所以这里并不是代表着mysql是32位的。点击下载之后需要你登录,这里我们直接选择 No thanks, just start my download.即可下载完成之后运行安装程序具体选择几位的根据你的操作系统来确定,选择之后,
2022-06-21 12:11:32
1401
1
原创 【Linux】shell教程
更多参考菜鸟教程1 shell脚本1.1 shell:Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。1.2 shell 脚本Shell 脚本(shell script),是一种为.
2022-05-03 13:59:56
1040
原创 【动手学深度学习】02-softmax回归
1、softmax回归1.1 从回归到分类输出i是预测为第i类的置信度。输出的个数等于类别的个数均方损失n个类别,假设先用1,0表示是否类别正确。使用均方损失训练,最大值作为预测。校验比例其实我们关心的不是他具体分类的置信度的值是多少。关心的是是否可以把正确类别的置信度是否特别大,模型能够把真正的类别和其他的类别拉开一个距离,数学表达式为 Oy−Oi>=Δ(y,i)O_y - O_i >= \Delta(y,i)Oy−Oi>=Δ(y,i)引入一个操作子softma
2022-03-10 22:03:34
2889
原创 【动手学深度学习】01-线性回归模型的实现
一、从零开始实现1.1 读取数据集训练模型时要对数据集进行遍历,每次抽取一小批量样本,并使用它们来更新我们的模型。 由于这个过程是训练机器学习算法的基础,所以有必要定义一个函数,该函数能打乱数据集中的样本并以小批量方式获取数据。def data_iter(batch_size, features, labels): """ 该函数接收批量大小、特征矩阵和标签向量作为输入,生成大小为batch_size的小批量]。每个小批量包含一组特征和标签。""" num_examples = len
2022-03-10 22:00:11
3087
原创 【动手学深度学习】01-线性回归模型
1.线性回归 linear-regression1.1 一个简化模型问题引入:房价预测,究竟什么决定着房价。简化模型为:y=w1x1+w2+w3+b y=w_1x_1+w_2+w_3+by=w1x1+w2+w3+b1.2 线性模型1.2.1 模型公式定义给定n为输入:x=[x1,x2,...,xn]T\mathbf{x}=[x_1,x_2,...,x_n]^Tx=[x1,x2,...,xn]T线性模型中有一个n维权重和一个标量偏差 w
2022-03-10 21:58:32
1486
原创 【动手学深度学习】00-矩阵求导和自动求导
1.矩阵求导1.1 标量导数(高中知识)都是高中的知识1.2 亚导数将导数拓展到不可导的情况1.3 梯度将导数扩展到向量1.3.1 $ \partial y/\partial\mathbf{x} $ 底部是向量,上部是标量由于向量在底部,所以求导之后结果的向量会反过来样例为下:特别的就是,两个向量的内积为矩阵,sum一个向量,其导数为向量1的转置注意,对于$ \frac{\partial<\bold{w,x}>}{\partial\bold{w}} = \
2022-03-10 21:29:01
1088
原创 【vue组件插槽和单文件组件】
一、组件的使用在HTML文件中的使用(不经常使用,一般使用单文件组件)1、使用Vue.component定义组件,两个参数,1:组件名称,保证全局唯一2:组件配置,包括props参数配置,template模板字符串,其中代码中的参数就是props中的data(){return {}},这里的data,要写成方法的形式,防止在一处改动而影响了全局methods:写组件使用到的方法<div id="app"> <ul> &
2022-02-10 16:23:39
558
原创 【pandas】动手学pandas--基于莫烦python的教程
Pandas本文提供了所有章节的可运行代码,要想尽快学习掌握,还是需要动手去运行查看效果,然后自己动手编写。1、基本介绍pandas类似于python的字典,一般和numpy搭配着使用。创建DataFrame,指定行和列的名称默认名称就是索引号传入字典构造DataFrame查看数据类型查看行和列的名称转置排序,按照索引名称排序。按照值排序import pandas as pdimport numpy as np# pd类似于字典# 一般为pd和np搭配着使用s = pd
2022-02-10 16:15:38
1144
原创 【numpy学习】numpy教程--基于莫烦python的教程
numpy本套教程是基于莫烦python的教学视频记录的学习笔记,每一部分都是一个可运行的python代码块,可以直接拷贝运行,并且知识点都有清晰地注释0、作用使用numpy&pandas使得数据分析中计算非常快,比python自带的字典和列表快很多,因为这俩模块使用C语言编写的。应用到了矩阵的运算,使用C语言实现,更快。1、安装直接在终端使用命令pip install numpy安装完成即可2、numpy基本属性基本属性包括:将列表转换为numpy的array,查看arra
2022-02-09 13:57:22
894
原创 【pytorch】normal函数的详细使用和常见错误
normal函数的详细使用和常见错误1.normal(mean, std, *, generator=None, out=None)返回值:一个张量,张量中每个元素是从相互独立的正态分布中随机生成的。每个正态分布的均值和标准差对应着mean中的一个值和std中的一个值参数mean(tensor):是一个张量,存储着输出张量中每个元素正态分布的均值std(tensor):是一个张量,存储着输出张量中每个元素正态分布的标准差注意:张量mean和std的形状不一定相同,但是元素个数必须相同。如果二
2022-01-26 22:01:52
9392
原创 查询pytorch文档的实用方法
查阅文档对于pytorch,一些函数可能不是很熟悉,这里给出查阅函数文档的方法查找模块中的所有函数和类为了知道模块中可以调用哪些函数和类,我们调用dir函数。例如,我们可以(查询随机数生成模块中的所有属性:)import torchprint(dir(torch.distributions))['AbsTransform', 'AffineTransform', 'Bernoulli', 'Beta', 'Binomial', 'CatTransform', 'Categorical',
2022-01-25 20:36:32
3328
原创 windows上配置深度学习(李沐-动手学深度学习)
1、安装minicondawindows下安装,去清华大学开源镜像下载,速度比较快。选中Miniconda3-latest-Windos-x86_64.exe下载安装包(目前最新的是py3.9)或者(py3.8版本的)(由于该课程李沐用的是3.8,所以建议3.8):下载完成之后双击安装即可,一般都选择默认配置即可安装完成后,打开anaconda prompt这个终端(安装miniconda的时候会自动安装prompt到你电脑上),然后分别执行如下四个命令,将conda和pip的软件源修
2022-01-01 15:10:01
7440
11
原创 c++判断数组是否有重复元素
题目:给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true1、暴力求解法 bool containsDuplicate(vector<int>& nums) { if(n
2021-11-30 20:03:30
6783
原创 ubuntu20.04安装mysql5.7
mysql乌班图ubuntu 20.04系统自带源直接安装是MySQL 8.0,要安装MySQL 5.7的版本的所以先进行换源1.1 备份原来的sorce文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.old1.2 修改sources.list文件sudo vim /etc/apt/sources.list 我选择的是清华镜像源。将sources.list内容清空,然后选择一个源粘贴到sources.list,保存退出。注意:vim
2021-11-25 16:07:56
3221
原创 微服务项目手动打成jar包
微服务项目手动打包jar运行,并在Linus上运行1、项目结构,打包准备如图所示,需要把所有顶层模块的打包方式都设置成pom,所有需要打包的子模块的打包方式都改为jar,很关键的一步:在需要打包,并且有SpringBootApplication注解标注主类的子模块中的pom文件中加入:<build> <!--maven的打包插件--> <plugins> <plugin> <groupI
2021-10-17 17:43:25
6232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人