自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 服务器运行机器学习项目全流程

搭建步骤一、用户创建二、anaconda安装三、项目迁移四、环境安装五、项目运行一、服务器创建用户# 管理员远程ssh登录服务器(username:管理员用户名 ip:服务器ip) $ ssh username@ip -p 22# 创建用户(test:新创建用户名,根据自己需要修改 -d 后为分配给用户的家目录) $ sudo useradd -d /home/test -m test# 修改用户密码 $ sudo passwd test# 给用户增加显示目录功能

2021-06-03 19:08:09 671

原创 Nginx部署多个前端项目

一、前端项目部署二级目录以部署2个Vue项目为例,为了防止两个项目的静态文件位置重合,需要将一个项目加入二级目录。vue.config.js 中加入publicPathsrc/router/index.js 加入二、Nginx 配置文件修改没有加入二级目录的项目正常修改为 root 后的地址, 加入二级目录的项目 通过 alias 修改到 location 二级目录的 ip 转发。...

2021-05-28 14:43:48 360

原创 Linux服务器部署jena

一、 jena安装下载网站 下载 Apache Jena 和 Apache Jena Fusekihttps://jena.apache.org/download/index.cgi将两个压缩包上传服务器 $ scp -P port apache-jena-4.0.0.zip username@ip:~/apache-jena-4.0.0.zip $ scp -P port apache-jena-fuseki-4.0.0.zip username@ip:~/apache-jena-

2021-05-28 14:08:35 411

原创 Linux-MongoDB命令导入json

一、collection 导入 json# 进入服务器terminal $ mongoimport --db xxx --collection xxx --jsonArray ~/xxx.json# 若无法使用,即没有添加到 profile里,需到mongo目录下使用# 查看 mongodb.conf,一般在 /etc 目录,其中有 mongodb 的 dbpath# 进入 dbpath $ cd xxxx $ mongoimport --db xxx --collection xxx --j

2021-05-28 10:59:26 1324

原创 Linux-MongoDB开放对外端口

Linux-MongoDB开放对外端口一、 测试MongoDB连接端口是否打开# mac 命令 mongodb端口一般为27017 $ nc -vz -w 2 服务器ip 27017# 若开放 Connection to 服务器ip port 27017 [tcp/*] succeeded!# 否则表示端口未打开,需要进行配置二、 打开服务器MongoDB对外连接端口# 首先登陆服务器# 修改mongodb.conf 一般情况下在etc目录中 $ sudo vim /etc/mongod

2021-05-28 10:45:49 1717

原创 项目部署-Nginx-Gunicorn-Vue-Flask

前后端分离项目部署-Nginx-Gunicorn-Vue-Flask一、部署过程Vue 前端项目打包Nginx ip转发前端Gunicorn 开启 Flask 后端Nginx ip转发后端二、Vue 前端项目打包# vue 项目打包,生成dist文件 $ npm run build

2021-05-27 11:40:15 383

原创 在Ubuntu上命令安装Chrome浏览器和ChromeDriver

在Ubuntu上安装Chrome浏览器和ChromeDriver一、安装Chrome浏览器1、安装依赖sudo apt-get install libxss1 libappindicator1 libindicator72、下载Chrome安装包wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb3、安装 sudo dpkg -i google-chrome*.deb

2020-12-18 16:55:45 548 1

原创 代理模式(Proxy Pattern) -----Python 实现

代理模式(Proxy Pattern) -----Python 实现模式动机在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。通过引入一个新的对象(如小图片和远程代理 对象)来实现对真实对象的操作或者将新的对 象作为真实对象的一个替身,这种实现机制即 为代理模式,通过引入代理对象来间接访问一 个对象,这就

2020-12-14 20:48:39 137

原创 享元模式(Flyweight) ----- Python实现

享元模式(Flyweight) ----- Python实现模式动机面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正是为解决这一类问题而诞生的。享元模式通过共享技术实现相同或相似对象的重用。在享元模式中可以共享的相同内容称为内部状态(IntrinsicState),而那些需要外部环境来设置的不能共享的内容称为外部状态(Extrinsic State),由于区分了内部状态和外部状态,

2020-12-14 20:37:14 183

原创 外观模式(Facade Pattern) ----- Python实现

外观模式(Facade Pattern) ----- Python实现模式定义外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。模式结构图Python代码class OperationA: def say(self): print('A')class Operati

2020-12-14 20:12:28 299

原创 装饰模式(Decorator Pattern) ----- Python实现

装饰模式(Decorator Pattern) ----- Python实现模式动机一般有两种方式可以实现给一个类或对象增加行为:继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这个嵌入的对象为装饰器(Decorator)装饰模式以对客户透明的方式动态地给

2020-12-14 19:53:10 202

原创 桥接模式(Bridge Pattern) ------ Python实现

桥接模式(Bridge Pattern) ------ Python实现模式动机设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:第一种设计方案是为每一种形状都提供一套各种颜色的版本。第二种设计方案是根据实际需要对形状和颜色进行组合对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。设计方案二即是桥接模式的应用。桥接模式将继承关

2020-12-10 11:38:03 249

原创 适配器模式(Adapter Pattern) — Python实现

适配器模式(Adapter Pattern) — Python实现模式动机在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能,适配器模式可以完

2020-12-09 14:30:47 356

原创 单例模式(Singleton Pattern) --- Python实现

单例模式(Singleton Pattern) — Python实现模式动机对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。一个更好的解决办法是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且

2020-12-09 11:55:42 196

原创 Mac mysql 重置密码

Mac mysql 重置密码一、放开密码认证vim /etc/my.cnf在[mysqld]后面任意一行添加“skip-grant-tables”,保存退出。二、重启Mysql并进入sudo mysql.server restartmysql三、重置命令use mysql;ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码四、开启密码认证并重启Mysql将[mysqld]后面添加的“skip-grant-tables”删除,保存退出。

2020-12-09 10:57:54 90

原创 Leetcode 17. 电话号码的字母组合

Leetcode 17. 电话号码的字母组合题目说明给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].题目解析Python代码1.队列回溯 def letterCombinations(self, digits: str) -> List[str]:

2020-12-01 08:25:49 87

原创 10. 正则表达式匹配

Leetcode 10. 正则表达式匹配题目说明给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa” p = “a”输出:false解释:“a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa” p = “a*”输出:true解释:因为 ‘*’ 代表可以匹配零个或多个前面

2020-12-01 08:18:42 177

原创 建造者模式(Builder Pattern) --- Python实现

建造者模式(Builder Pattern) — Python实现模式动机“无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节”“在软件开发

2020-11-26 12:21:56 295

原创 抽象工厂模式(Abstract Factory) --- Python实现

抽象工厂模式(Abstract Factory) — Python实现模式动机在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建

2020-11-26 10:47:06 306

原创 Leetcode 63. 不同路径II

Leetcode 63. 不同路径II题目说明一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例 1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障

2020-11-24 08:43:17 103

原创 Leetcode 62. 不同路径

Leetcode 62. 不同路径题目说明一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -&g

2020-11-24 08:35:09 62

原创 Leetcode 59. 螺旋矩阵II

Leetcode 59. 螺旋矩阵II题目说明给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]题目解析建立元素全为 0 的正方形矩阵,方向数组((0,1),(1,0),(0,-1)(-1,0))while循环,按方向数组的递进方向给矩阵赋值,当长度超过矩阵长度或矩阵长度坐标位的值不为0,方向改变时间复杂度O(n), 空间复杂度O(n2

2020-11-24 08:17:10 64

原创 Leetcode 57. 插入区间(Python 实现)

Leetcode 57. 插入区间(Python 实现)题目说明给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例 2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [

2020-11-22 12:39:53 254

原创 Leetcode 56. 合并区间(Python 实现)

Leetcode 56. 合并区间(Python 实现)题目说明给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。题目解析

2020-11-22 11:05:28 460

原创 Leetcode 54. 螺旋矩阵

Leetcode 54. 螺旋矩阵题目说明给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]题目解析常规做法建立路径

2020-11-22 10:57:40 49

原创 Leetcode 53. 最大子序和

Leetcode 53. 最大子序和题目说明给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题目解析动态规划从第二个元素开始,后面每一个元素都为该元素 + max(0,上个元素)滑动窗口设置中间值mid = 0, 遍历数组,当数组元素 + mid > 0 ,赋值给mid,mid赋值resul

2020-11-22 10:51:00 51

原创 Leetcode 48. 旋转图像

Leetcode 48. 旋转图像题目说明给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],

2020-11-22 10:42:52 127

原创 工厂方法模式(Factory Method Pattern)

工厂方法模式(Factory Method Pattern)模式定义工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。模式结构图Pyt

2020-11-21 11:01:07 120

原创 简单工厂模式(Simple Factory Pattern)

简单工厂模式(Simple Factory Pattern)模式定义“”“简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。”“”模式结构图Python代码from abc import ABCMeta, abstractmethodclass

2020-11-21 10:01:32 117

原创 SSH连接远程服务器

SSH连接远程服务器SSH命令登录$ ssh username@ip -p port提示输入密码后,即可登录免密码登录客户端生成公钥、私钥$ ssh-keygen生成的公钥、私钥 存放在 ~/.ssh目录下将公钥复制到服务器上,追加到.ssh文件夹下authorized_keys文件的末尾$ scp -P port ~/.ssh/id_rsa.pud username@ip:~/id_rsa.pub$ cat ~/id_rsa.pub >> ~/.ssh/auth

2020-11-20 10:53:17 312

原创 Leetcode 42. 接雨水

Leetcode 42. 接雨水题目说明给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9题目解析动态规划遍历数组两次,得到每个坐

2020-11-19 20:39:14 71

原创 Leetcode 41. 缺失的第一个正数

Leetcode 41. 缺失的第一个正数题目说明给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。题目解析将数组中的负数都赋值为数组长度 + 1遍历数组,若遍历变量的绝对值不等于数组长度 + 1,将遍历变量的绝对值的坐标变为该坐标的负值。遍历数组

2020-11-19 20:34:10 53

原创 Leetcode 40. 组合总和 II

Leetcode 40. 组合总和 II题目说明给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1

2020-11-17 14:13:45 111 1

原创 Leetcode 39. 组合总和

Leetcode 39. 组合总和题目说明给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates =

2020-11-17 09:09:33 101

原创 Leetcode 27. 移除元素

Leetcode 27. 移除元素题目说明给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 n

2020-11-17 08:45:20 52

原创 Leetcode 26. 删除排序数组中的重复项

Leetcode 26. 删除排序数组中的重复项题目说明给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,

2020-11-17 08:36:40 50

原创 Leetcode 18. 四数之和

Leetcode 18. 四数之和题目说明给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[

2020-11-17 08:27:22 107

原创 Leetcode 16. 最接近的三数之和

Leetcode 16. 最接近的三数之和题目说明给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[

2020-11-17 08:14:51 54

原创 leetcode 15. 三数之和

Leetcode 15. 三数之和题目说明给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]题目解析数组双指针法对数组进行排序。遍历数组,对于每次遍历,对没有遍历的后续元素设置左右指

2020-11-15 09:31:33 50

原创 Leetcode 11. 盛水最多的容器

Leetcode 11. 盛水最多的容器题目说明给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)

2020-11-15 09:20:47 108

空空如也

空空如也

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

TA关注的人

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