- 博客(39)
- 资源 (4)
- 收藏
- 关注
原创 Spring中不同类型属性注入的方式
1. 添加依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.8</version></dependency>2. Student 类package pojo;import java.util.*;public class
2021-10-30 17:03:46
324
原创 Spring中的IOC,通过XML实现依赖注入
1. 添加依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.8</version></dependency>2. UserDao接口public interface UserDao { void listUser();}
2021-10-30 13:55:52
179
原创 控制反转与依赖注入
如果一个类A的功能实现需要借助于类B,那么就称类B是类A的依赖,如果在类A的内部去实例化类B,那么两者之间会出现较高的耦合,一旦类B出现了问题,类A也需要进行改造,如果这样的情况较多,每个类之间都有很多依赖,那么就会出现牵一发而动全身的情况,程序会极难维护,并且很容易出现问题。要解决这个问题,就要把A类对B类的控制权抽离出来,交给一个第三方去做,把控制权反转给第三方,就称作控制反转(IOCInversionOfControl)。控制反转是一种思想,是能够解决问题的一种可能的结果,而依赖注入(Depen...
2021-10-27 21:00:41
188
原创 聚类分析-KMeans算法与DBSCAN算法,简单理解
1KMeans算法KMeans算法是用来聚类的,其中的 K 表示类别数量,以样本间的距离作为聚类的标准,该算法的核心思想非常简单,总共就 3 个步骤。步骤 1:在样本中随机选取 K 个样本点,作为初始中心点;步骤 2:计算每个样本点到各个中心点的距离,然后将样本点分配给最近的中心点;步骤 3:根据聚类结果,将每类的均值作为新的中心点;步骤 4:不断重复步骤 2、3,当中心点不再变动时,结束算法。2 DBSCAN算法DBSCAN 算法是一种以密度为基础的空间聚类算。该算法也很.
2021-09-23 13:39:28
1034
原创 K近邻算法,简单理解
1 原理K近邻算法的原理:对于一个新样本,在已有数据中寻找与它最相似(或最近)的 K 个数据,如果这 K 个数据大多数属于某个类别,则该样本也属于这个类别。其实就是物以类聚人以群分的意思,要想判断小明是好人还是坏人呢?那非常简单,就看他最要好的 K 个朋友是好人还是坏人,假如好人多呢,那就判定小明也是好人,假如坏人多呢,就判定小明也是坏人。所以从这里可以看出,K 最好是奇数。2 相似度和距离的计算那么问题来了,这个最相似或距离最近,这个相似度或是距离该怎么计算呢?方法有很多,这里介绍两个常用
2021-09-23 01:07:06
476
原创 关联分析:Apriori算法,简单理解
0 问题假设有一组购物数据如下,我们需要通过这份数据来挖掘不同商品之间的关联关系,找出强关联规则,从而对购买过某商品的用户推荐其可能也会购买的商品。用户 购买的商品列表 用户1 A, B, C 用户2 A, B 用户3 B, C 用户4 A, B, C, D 用户5 B, C, D 1 关联分析的基本概念①事务库:上面的整个表就是一个事务库。②事务:事务库中的每一条记录就是一个事务。③项和项集:每个商品就是一个项,多个商品的集合
2021-09-21 17:04:36
1724
原创 什么是机器学习?简单理解
1 什么是机器学习?机器学习一般有如下三个步骤:根据问题假设模型 使用数据训练模型 应用模型预测分析这三个步骤在实际操作中分别对应着:根据问题假设函数 使用数据求解参数 应用函数预测分析也就是说,机器学习中所谓的模型就是函数,理解这一点非常重要!定义:机器学习是对研究问题进行模型假设,并利用计算机从训练数据中学习得到模型参数,并最终对数进行预测和分析的一门学科。2 机器学习过程演示接下来我们使用一个非常简单的案例来演示上述机器学习的过程...2.1 第 0 步:问题
2021-09-21 11:58:13
7011
原创 评论抓取:Python爬取AppStore上的评论内容及星级,突破500条限制
之前看到网上有AppStore应用评论的爬虫,但是由于用的是官方提供的api,每个应用最多只能获取到500条评论,完全没法满足数据分析的需求。因此经过一些分析,写了一个可以获取更多评论的爬虫。下面是配置文件:首先解释一下配置文件:max_page:要爬的最大评论页数,每页是10条评论;ids:要爬取的应用id列表;headers:浏览器发起请求的请求头;intervals:每爬一页评论的间隔时间。...
2021-08-03 22:29:28
8325
23
原创 面向对象设计原则
1. SRP 单一职责原则:用于指导类的设计 一个类只负责一组相关的事情,也就是说一个类有多个方法,但这些方法都是相关的。(适用于基础类,不适合用来约束基于基础类构建的复杂类)2. LSP 里氏替换原则:用于指导类继承的设计 (1)子类必须实现或者继承父类所有的公有方法。 (2)子类每个方法的输入参数必须和父类一样,否则调用父类方法的调用者将调用不到子类的方法。 (3)子类每个方法的输出必须不比父类少,否则基于父类输出的处理将无法完成。3. ISP 接口隔离原...
2020-08-12 00:54:27
121
原创 价值10元的maven配置教程,有效解决maven不下载jar包问题
1. 首先在maven官网下载maven,然后解压缩。2. 更改maven\conf\settings.xml 文件,主要是更改本地仓库路径和更换成阿里云镜像3. 在idea的settings中找到Maven\Runner,在VM options中加入-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=tru
2020-08-07 23:11:53
135
原创 [C语言]-指针
1. 指针作为参数// 函数声明void func(int *x, int *y);// 函数调用func(&x, &y);——————————————————————————————————————————————————————————————————————————// const 保护参数void func(const int *x){ *x = 0...
2019-11-10 12:00:20
198
原创 NumPy 矩阵的运算
数组的创建使用 array 函数通过传入 list 或 tuple 来创建 NumPy 的 array 对象。 import numpy as np arr1 = np.array([1, 2, 3]) # 列表 arr2 = np.array((1, 2, 3)) # 元组 arr3 = np.array([[1, 2, 3], [1, ...
2019-10-19 22:02:23
296
原创 [Python] x.x-装饰器
功能函数比如现在有一个函数:# 累加 0-10000def accumulate_add(): count = 0 for i in range(10001): count = count + i print(count) 新需求现在有一个新的需求,就是要计算函数的运行时间,我们可以这样做:import time# 累加并计时d...
2019-10-18 13:00:10
137
原创 [数据库] 3.0-Redis数据库
3.1 Redis 数据类型和抽象Redis valuesRedis不是一个简单的 key-value 存储,它实际上是一个数据结构服务器,支持不同类型的 values。这意味着,在传统的 key-value存储中你可以关联 string key 到 string values,但在Redis中, value不限于简单的string,你可以使用更复杂的数据结构。以下是Redis支持的所有数据结...
2019-10-17 20:14:53
168
原创 [Python3网络爬虫] 3.0-数据存储
文件TXT文本# 第一个参数为要读写的文件,可使用绝对地址和相对地址# 第二个参数为读写的模式# encoding参数指定文件的编码def write_to_txt(doc): with open('result.txt', 'a', encoding='utf-8') as file: file.write(doc)JSON文件调用json库的loads(...
2019-10-16 21:03:35
329
2
原创 给表格增加复选框
function initTableCheckbox() { var $thr = $('table thead tr'); var $checkAllTh = $('<th><input type="checkbox" id="checkAll" name="checkAll" /></th>'); /*将全选/反选复选框添加到表头最..
2018-07-24 11:39:49
6265
1
原创 springboot与web页面交互
一、后台接收URL拼接参数后台代码:@GetMapping("/item/{code}") //对应的链接为:/item/10001public List<Description> getProduct(@PathVariable("code") String code) { //your code }二、后台接收查询参数后台代码:@GetMapping("/det...
2018-07-05 09:32:21
11704
原创 jQuery获取标签元素与JavaScript的区别
HTML<p class="pp" id="first">1</p><p class="pp">2</p><p class="pp">3</p><p class="pp">4</p>
2018-07-04 14:00:17
927
原创 HTTP协议简述
HTTP由两个程序实现,一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP定义了这些报文的结构以及客户和服务器程序进行报文交换的方式。HTTP使用TCP作为它的支撑运输协议。服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息,HTTP是一个无状态协议。HTTP报文格式1.HTTP请求报文2.HTTP响应报文...
2018-07-03 08:39:26
173
原创 bootstrap显示大图模态框
<!-- 显示大图模态框 --><div class="modal fade text-center" id="showImgModal"> <div class="modal-dialog modal-lg" style="display: inline-block; width: auto;"> <di
2018-06-27 15:11:52
5698
1
原创 jQuery的HTML方法
1. text()设置或返回所选元素的文本内容<h1><br>hello</br>,world</h1> //获取的内容为:hello,world2. html()设置或返回所选元素的内容,包括内嵌的标签<h1><br>hello</br>,world</h1> //获取
2018-06-26 16:01:49
323
原创 jQuery文档就绪事件
为了防止文档在完全加载(就绪)之前运行 jQuery 代码,要在 DOM 加载完成后才可以对 DOM 进行操作。我们需要将代码写在特定的函数中,有以下两种写法。1.$(document).ready(function(){ //your code});2.$(function(){ //your code});原生js的写法:window.load() = function (...
2018-06-26 14:40:45
1827
原创 正则表达式
限定符字符描述*匹配前面的子表达式0次或多次,如:ab*能匹配"a", "ab", "abc"等+匹配前面的子表达式1次或多次,如:ab*能匹配"ab", "abc"等;不能匹配"a"?p匹配前面的子表达式0次或1次,{n}n是一个非负整数,匹配前面的子表达式确定的n次{n,}n是一个非负整数,至少匹配前面的子表达式n次{n,m}n, m都是非负整数,且n <= m,最少匹
2018-05-23 09:08:05
119
原创 Git的基本使用(Windows)
一、安装Git下载并安装最新版本的Git。(官网下载、腾讯软件中心下载)二、配置Git设置用户信息第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:git config --global user.name "Mona Lisa"git config -...
2018-05-17 14:12:54
244
原创 封装
什么是封装?封装就是隐藏信息。封装数据通过private, protected, public等关键字来控制类的字段的访问权限。客户程序只能通过暴露的接口来操作数据。封装实现只通过暴露的接口来提供服务,服务具体的实现是隐藏的,只要接口不变,客户程序就不需要改变。封装类型通过接口和抽象类来隐藏真正的类型。封装变化将系统中稳定的部分和易变的部分隔离开来,将易变的部分封装起来,当需要变化时,就比较容易进...
2018-05-02 15:28:31
86
原创 常见的排序算法
选择排序思路:首先找到数组中最小的那个元素,然后与数组中的第一个元素交换位置,然后找到剩余元素中的最小元素与数组中的第二个元素交换位置。重复进行以上步骤直到完成所有元素的排序。伪码:class SelectionSort () { public static void sort (Caparable[] a) { int N = a.length(); //开始循环数组 for (i...
2018-04-24 12:10:24
91
原创 什么是算法?关于算法复杂度的分析
算法的定义一个有限的指令集接受一些输入(有时不需要输入)产生输出在有限步骤之后终止算法的复杂度分析n表示输入规模空间复杂度S(n):根据算法写成的程序在执行时占用存储单元的长度。这个长度与输入数据的规模有关,空间复杂度过高的算法可能导致内存溢出。时间复杂度T(n):根据算法写成的程序在执行时耗费时间的长度。这个长度与输入数据的规模有关,时间复杂度过高的算法可能导致长时间无法得到输出。算法的复杂度,...
2018-04-24 10:59:10
1146
原创 计算机网络-进程通信
一个进程可以被认为是一个运行在端系统中的一个程序,当程序运行在相同的端系统上时,它们使用进程间通信机制相互通信。进程间通信的规则由运行在端系统上的操作系统确定。当程序运行在不同的端系统上时,需要通过计算机网络交换报文而相互通信。发送进程生成并向网络中发送报文;接收进程接收这些报文并可能通过将报文发送回去进行相应。进程与计算机网路之间的接口进程通过一个称为套接字(socket)的软件接口向网...
2018-04-20 13:22:20
1228
原创 JavaScript中几种创建对象的方法
1. 对象字面量var person = { name: "Alex", age: 24, job: "student", sayName: function () { console.log(this.name); }}2. Objectvar person = new Object();person.name = "Alex";...
2018-04-20 10:34:52
224
1
原创 计算机网络-什么是计算机网络?
计算机网络的组成端系统(end system)通过通信链路(communication link)和分组交换机(packet switch)连接到一起。端系统:也叫主机(host),是连接到网络的各种设备,现在已经不局限于传统的PC机和手机。通信链路:各种通信的物理媒介,同轴电缆、光纤、无线电频谱等。分组交换机:分组交换机从它的入通信链路接受到达的分组,并从它的一条出通信链路转发分组。主要有两类:...
2018-04-11 14:43:22
2363
原创 [数据库] 0.0-什么是数据库?关于数据库的基本概念
关系型数据的基本概念数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件)。数据库管理系统(DBMS)数据库是通过DBMS来创建和操纵的容器。注:一定要区分数据库和数据库管理系统的概念。数据库就像是一个Excel文件,里面有零个或多个表格。而数据库管理系统就像是Excel这个软件。没有Excel软件,我们就无法创建和操纵Excel文件;同样的,...
2018-04-11 10:01:00
1939
原创 Django关于数据库(SQLite)的操作
数据库配置项目的settings.py文件中DATABASES变量是有关数据库配置的,默认配置的是SQLite。如果要使用其他数据库,需要安装合适的database bindings,比如使用MySQL时,需要安装mysqlclient包。然后改变DATABASES'default'中的一些键值:ENGINE-可选的值有'django.db.backends.sqlite3','django.db...
2018-04-09 16:31:28
5400
原创 三种信息标记形式------XML,JSON,YAML
XMLxml元素:开始标签 + 内容 + 结束标签<book category="botany">book book</book>空元素:没有内容,开始标签和结束标签在一起<img src="china.jpg" size="10"/>注意事项:xml标签对大小写敏感。xml可以自定义标签和属性。xml文档必须有根元素。xml标签属性必须加引号。JSONjson..
2018-04-09 11:48:30
1037
原创 Django视图响应类型
处理函数编写原则处理函数接受HTTP请求并返回响应,可以放在任何地方,可以是任何功能。处理函数可以返回web文本、页面、重定向、错误、图片等任何内容。处理函数通过HttpResponse、JsonResponse等类表达和返回响应。按照约定,处理函数放在对应app中的views.py文件中。响应类型HttpResponse类及其子类(共10个)HttpResponse(content='', co...
2018-04-08 13:53:39
568
原创 Django路由机制
什么是路由对一个给定的URL进行定义,转换,传参,命名之后,找到相应处理函数的过程,也就是关联URL和处理函数的过程。Django的路由配置在settings.py文件中ROOT_URLCONF变量指定了全局路由文件名称。也就是工程的入口路由文件。ROOT_URLCONF = "<工程名称>.urls"在urls.py文件中使用urlpatterns变量表示路由,该变量是列表类型,元素...
2018-04-08 12:52:11
1065
原创 Django最小程序
安装Django打开命令行,使用pip安装Django。pip install django验证使用如下命令,如输出了一个版本号,则说明已成功安装此版本的Django。python -m django --version创建项目打开命令行,cd到想放置代码的目录,使用如下命令,创建一个Django项目。django-admin startproject mysite注意:mysite可以替换成任意...
2018-04-04 16:35:47
377
原创 CSS水平居中设置
行内元素水平居中:行内元素的水平居中是相对于包裹它的块级元素来说的。(理解这句话)方法:给包裹行内元素的前辈块级元素设置text-align:center;1.<label>文字<label>在这里 让“文字”这两个字相对于label水平居中是毫无意义的,label是行内元素,他的宽度等于内容的宽度,也就是说“文字”这两个字,永远是水平居中的。2.<p>文字&l...
2018-03-21 22:58:23
3622
原创 Java中this,super,final,static的作用
this:方法的隐式参数,代表调用此方法的对象在构造函数中调用同类中的其他构造函数public class Employee { private String name = "Alex"; private int age = 24; //第一个构造函数 public Employee(String name) { this.name = name; } //第二个构造函数...
2018-03-10 22:34:30
528
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人