自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java-idea-servlet+jsp+mysql-最简单的登陆注册功能

Login-Regist简单的登陆注册功能基于mysql+servlet+jsp搭建的,遵循MVC的设计思路,Model用来写后台逻辑,View写前端,Controller写servlet,用于连接前后端。代码链接github1、文件目录介绍(由上到下)src文件夹里面主要放后端的相关代码,包括两个部分:Controller和Model。Controller文件夹里面放的是LoginServlet.java和RegistServlet.java,分别处理登陆服务和注册服务Model文件夹代

2021-03-01 13:35:28 2009 3

原创 leetcode#1160 词汇表中拼写字符串

力扣#1160 拼写单词题目要求:给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。输入:words = ["cat","bt","hat","tree"], chars = "atach"输出:

2020-11-02 14:31:13 220

原创 实现大数相乘、实现找到最近两个点的距离

算法大作业题目1 实现大数相乘题目要求:编程语言内置的数据类型都是有长度限制的,最长的long类型的长度是2^63-1,如果两个数的乘积超过了这个长度,那么就会出现错误,那么如何实现两个长度为20位二进制数字的乘积。算法思路暴力相乘法:这个方法的思路主要是使用两个循环模拟手动运算的过程,超出长度的数字用字符串表示,计算的过程中,需要注意在计算过程中的数字的位数调整。时间复杂度为O(n^2)。分治法分治法的主要思路是将问题分成可直接求解的子问题,针对这个问题可求解的子问题就是两个个位数

2020-10-31 15:58:44 199

原创 leetcode#1331 整数数组 arr元素替换为它们排序后的序号

力扣#1331题目描述:给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。序号代表了一个元素有多大。序号编号的规则如下:序号从 1 开始编号。一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。每个数字的序号都应该尽可能地小。解题思路:这题主要是对数组的序号进行了一些操作,那么我们就可以用哈希表来进行这个操作,哈希表就是有key和value组成的,并且查找的时间复杂度只有O(1),另外这道题涉及了很多操作,比如首先是一个排序,肯定不能直接对愿数组进行操作,不

2020-10-30 16:56:38 1157

原创 leetcode#88 合并两个有序数组,不能使用辅助数组

力扣#88 合并两个有序数组,不能使用辅助数组解题思路:假设使用辅助数组的话,那就是两个数组分别比大小进行放进辅助数组中。这道题中,我们还想使用这种对比放入的思想,这样就不用进行移动数组中的元素了。那么这时候,我们就可以从两个数组的尾部进行出发,两个数组的长度是确定的,从数组的尾部进行对比元素,大的元素必定是合并后最后一个元素,把对比中大的元素放进数组1的尾部,然后指针前移,继续重复对比两个数组的当前尾部即可合并两个数组。...

2020-10-29 23:13:03 221 1

原创 leetcode#1275 判断井字游戏谁输谁赢

#leetcode 1275判断井字游戏谁输谁赢解题思路:首先,必定是最后一个落子的人会可能获胜,这就意味着我们在遍历数组的时候一定要倒序遍历。然后 ,一共有8种获胜情况,占满3个行进行获胜或者占满3个列进行获胜,或是两个对角线进行获胜,那么我们申请一个长度为8的数组进行统计这几种情况是否出现。如果是占满某一行进行获胜,那么轨迹的某一行一定会出现3次,列同理。如果是占满正对角线进行获胜,那么我们用数组中第7个位置记录这种情况。如果是副对角线进行获胜,那么我们用数组的第八个位置进行记录。最终数组某个位置

2020-10-28 01:02:10 176

原创 leetcode#605

1、leetcode#605解题心得:在对或运算符进行判断的真值的时候,如果或运算符前面的一项结果是真,则直接不会对后面几项进行真值判断,也就意味着,如果第二项里面出现错误,类似于数组越界的错误的时候,程序并不会进行报错。同理,做与运算符的真值判断的时候,如果第一项判断为假,那么就不会对后面几项进行真值判断,即使后面几项出现错误,也不会进行报错。利用java程序的这一个性质,就可以进行一些特殊的异或判断达到目的,比如对数组的边界值进行判断的时候,下标i为0或者length-1的时,同时需要进行i-1以

2020-10-26 23:53:06 173

原创 leetcode#1588 正整数数组 arr中奇数长度子数组的和

1、leetcode#1588给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。最优化思路:** 针对奇偶关系的题目,可以考虑一下奇数加奇数等于一个偶数,偶数加偶数等于一个偶数,奇数与偶数的组合是一个奇数这种思路。**求一个奇数序列,可以考虑,这个中间数字前面选择偶数个数字有多少种情况,后面选择偶数个数字有多少种情况,加上中间数字,就是一个奇数长度的序列。或者考虑前面选择奇数个数字的情况,后面

2020-10-21 13:25:19 224

原创 机器学习面试题插眼

https://www.julyedu.com/question/topic_list/23

2020-09-28 17:31:43 82

原创 for循环中++i 和I++区别

1、首先,在非for循环的使用中,两者的功能是不一样的,++i是为了先对i进行加一,然后将加一后的数值进行返回,而i++是先返回i的值,然后对i进行加一。2、但是我们讨论的是放在for循环之中进行操作,针对内置类型变量来说,没有什么区别,都是为了实现i加一的功能,甚至于性能方面也没什么区别,因为编译器会自动优化内置变量。3、有区别的地方在于如果不是内置变量,或者进行了操作符的重载的话,两者还是有一定的区别的。比如针对++i操作来说,直接返回加一之后的操作值,针对i++来说,需要先进行定义一个临时变量,

2020-09-24 17:36:11 3698

原创 动态规划法

为什么不用递归:因为递归进行计算的时候会产生较多的重复计算,例如求斐波那契数列fib(8),中间的fib(5),fib(4),fib(3),fib(2)等重复计算了好多次,导致不必要的计算,当然可以用一个数组来储存计算过的值,这样也是一种优化思路。动态规划的主要的思路是先建模,建立一个金字塔模型用于分析问题,确定状态。然后从下往上计算,用一个数组储存计算过的底层的最优解,最后数组最后一个值...

2020-02-18 09:30:17 99

原创 面试题12——寻找矩阵中的路径

题目:判断一个二维矩阵中是否存在一条特定的字符串路径。自己的思路:完全没有思路书中给的思路:回溯法,我专门写了一个回溯法的。对照着书把代码撸了一遍大致了解了回溯法的思想:#include<iostream>using namespace std;bool hasPath(char *matrix, int rows, int cols, char *str){ ...

2020-02-15 16:38:19 247

原创 面试题11——旋转数组的最小值

题目:把一个有序数组的末尾几位移到最开始的位置形成的新的新数组成为旋转数组,找出数组的最小值。自己思路:查找的话离不开遍历,二分,哈希,二叉搜索树。这题用遍历可以解决,但是太耗费时间了。旋转数组的特点:前面的有序序列必然大于后面的有序序列(假设数组之前是升序排列),可以根据二分进行查找。代码:二分查找的递归实现:#include<iostream>using namesp...

2020-02-15 11:49:11 131

原创 面试题10——斐波那契数列

斐波那契数列的定义:每一项都是前两项的和。自己思路:1、脚趾头想都是递归,基本每个算法书讲递归的时候必然会举斐波那契的例子。但是这是面试题,应该不会这么简单,递归太耗时间了,考官应该会想节省时间的方法。2、想起来递归,非递归可能要用到栈来实现递归。具体面试的时候用哪种思路,可以和面试官讨论具体的细节,然后选择符合面试官要求的方法。递归思路:#include<iostream&gt...

2020-02-14 23:24:18 167

原创 面试题9——两个栈实现一个队列

自己的思路:主要思路是一个栈当主要的执行操作,另一个作为辅助栈。有两种思路:主要栈的栈顶即为队列的头,栈底为队列的尾。另一种反过来,栈顶为尾,栈底为头。直接写代码:把栈顶当作队列的尾#include<stack>#include<iostream>using namespace std;stack<int> s1;stack<int&g...

2020-02-14 22:49:43 121

原创 面试题8——寻找二叉树的下一个节点

题目要求:给定一棵二叉树和一个节点,找出这个节点在中序序列中的下一个节点。自己的思路:1、可以根据中序遍历构建一个中序线索二叉树,然后所有结点的中序遍历的前一个节点和后一个节点都可以找出来了。2、根据中序遍历的特点,找出所有的可能性,既可以判断中序遍历的下一个节点。实现代码:#include<iostream>#include<string>#include...

2020-02-14 21:54:39 109

原创 面试题7——重建二叉树

题目:给定一个二叉树的前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},重构这棵二叉树。自己的思路:1、看到树应该想到的是递归,树和递归基本是分不开的,那么我们可以通过前序遍历确定树的根节点以及子树的根节点,然后遍历中序序列找到根节点,依据中序序列的特点,在根节点左边的是左子树,在根节点右边的是右子树。以此递归即可实现代码:#include&l...

2020-02-14 17:42:49 138

原创 面试题6——倒序输出链表

思路有两个:1、利用递归思路,这样比较耗时,但是省空间。2、既然能够使用递归,就能使用栈来操作。首先要涉及到链表的定义和初始化:struct LinkNode{ int value; LinkNode *next; LinkNode(int value1, LinkNode *next1 = nullptr){ value = value1; ...

2020-02-14 09:47:51 116

原创 面试题5——替换空格

题目要求:将字符串中的空格替换成%20自己的思路:1、空间换时间,申请一个新的字符串,将原有的字符串挨个复制过来,并且遇到空格时替换%20。2、减少空间消耗,在原有字符串上直接替换,题目就类似于一个字符数组进行位置的移动,一个元素被三个元素替换。...

2020-02-14 08:46:27 81

原创 面试题4——二维数组中的查找

自己想出来的思路:1、暴力搜索二维数组,时间复杂度为O(n^2)。2、对每一行进行二分搜索,时间复杂度为O(nlog(n))。3、从第一行中找出大于搜索数字的的列剔除,从第一列中找出大于搜索数字的行剔除。在剩下的二维数组中进行每一行的二分搜索。时间复杂度还是O(nlog(n)),但是算法的执行速度应该会比较快。第二种思路的代码:#include<iostream>using...

2020-02-12 17:31:37 134

原创 面试题3——寻找数组中的重复数字

1、先排序,再直接找重复数字(思路比较简单)2、空间换时间思路:找一个临时数组类似于哈希表的操作,用于记录第i数字的个数。时间复杂度是O(n),空间复杂度是O(n)3、交换法:判断第i个位置上面的数字j是否和第j个位置上面的数字相等,如果相等就说明有重复的数字出现,接着判断i+1的位置,如果不相等就交换i和j的数字,直到位置i上面的数字j和第j个位置上面的数字是相等的。时间复杂度是O(n)...

2020-02-12 11:34:32 161

原创 何为end to end

我的理解(经过图像方面的学习)是这样:end to end:一个神经网络的输入 端是数据,输出端就是输出的结果非端到端:在进行网络的输入时先提取特征,再输入网络,即为输入的不是原始的数据,也可以理解为不是不是通过一步直接出结果...

2020-02-01 11:33:29 270

原创 编译型语言、解释型语言、动态语言、静态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言

参考网上的一些资料外加自己的理解整理出的有关几种概念的区分。首先看张图:一、编译型语言,解释型语言,混合型语言1、编译型语言程序源码通过编译器生成机器码,接着通过链接将机器码与依赖库链接起来生成可执行程序。优点 :源码只需要通过一次编译生成可执行程序,后续的运行只需要通过可执行程序即可,程序运行效率较高。缺点由于源码在进行编译的过程中,生成机器码根据操作系统的不同会不一样,所以编...

2020-01-16 19:56:41 171

原创 pytorch训练自己的数据集

将图片放在每类的文件夹下面,接着放一个txt文件使用img_data = torchvision.datasets.ImageFolder(image_path, transform)

2019-05-25 08:57:27 3782

原创 jupyter远程配置

vim .jupyter/jupyter_notebook_config.py写入下面配置c.NotebookApp.notebook_dir = u’/root/workspace_jupyter’ # jupyter存放文件的路径c.NotebookApp.ip = ‘0.0.0.0’ # 允许所有ip访问c.NotebookApp.password = u’sha1:…’ # ...

2019-05-22 12:50:34 193

原创 关于jupyterlab中导入包错误的解决方案

出现这个问题的原因是jupyter中的路径与终端的路径是不同的,从而造成了在终端中可以正常导入包,而那在jupter中却找不到,所以解决方案就是修改jupter中的路径为终端路径第一步:import syssys.path #查看导入包的路径sys.executable #查看使用kernel的路径以上两步是为了检查导入包的时候是否在正确的路径之下因为jupyter的包路径,执...

2019-04-09 11:01:00 5784

转载 远程使用服务器 jupyter lab

【本地】登入远程服务器:ssh USER@IP -p PORT【远程服务器】在 ~/.jupyter/jupyter_notebook_config.json 中写入如下内容,尤其是 “ip”: “*”,这样让服务器监听所有 ip:{ "NotebookApp": { "ip": "*", "open_browser": false }}【远程服务器】启动 Jup...

2019-04-09 09:54:48 3427

原创 关于pytorch中optimizer.zero_grad()

这个查了好多资料才搞明白一个Batch有最少一张图片,计算loss的时候是对Batch_size张图片的loss对weight的导数的平均数,所以会有一个Batch_size张图片loss累加的计算的过程,这时候在计算新的导数的时候,是要进行一次清零才能计算新一轮Batch中Batch_size张图片的导数...

2019-03-27 17:19:40 2670

原创 信息量,熵,交叉熵

参考自:https://blog.csdn.net/tsyccnh/article/details/79163834信息量信息量是对事件发生概率的一个度量,事件发生的概率越小,事件所包含的信息量越多。举个例子:巴西进入世界杯,中国进入世界杯,这个事件从直觉来说是第二个小概率事件所包含的信息量多所以香农提出了一个定量衡量信息量的公式:熵熵是表示一种事件不确定性的一种衡量,对于一个存在不...

2019-03-22 17:17:32 181

原创 lvm

lvm(Logical Volume Manager)原始磁盘管理:原始的磁盘分区在进行设置好物理分区之后并不能动态改变分区的大小,所以以后磁盘被沾满之后就不能进行动态的扩容或者只能使用磁盘分区工具进行重新分区,这些操作一般是需要服务器进行停机才可以进行的操作。lvm逻辑分区管理:采用了lvm进行磁盘管理的机制,可以动态的对逻辑卷的大小进行划分。他是在硬盘和分区之上的一个逻辑层,用来提高磁...

2019-03-21 20:40:29 344

原创 解决KeyError: 'unexpected key "module.encoder.embedding.weight" in state_dict'

原因:可能是之前训练的时候开了nn.DataParallel,造成了储存模型的时候是放在module里面的。解决方案:1、关掉nn.DataParallel 重新训练权重文件2、模型参数文件是以OrderDict储存,可以手动去除尝试一下3、新的模型训练的时候开启nn.DataParallel尝试一下...

2019-03-20 09:19:46 2036

原创 tensorboadX安装及在pytorch中的使用

1、安装pip install tensorboardX注意因为tensorboardX是依赖于tensorflow使用的所以应该提前安装 tensorflowpip install tensorflow2、使用from tensorboardX import SummaryWriterwriter = SummaryWriter('log')3、显示命令行tensorbo...

2019-03-20 08:43:17 1812

原创 ubuntu换源

1、备份原来的sudo cp /etc/apt/sources.list /etc/apt/sources.list.old2、修改源sudo gedit /etc/apt/sources.list3、系统型号需要修改,每一行加粗的部分#网易的源deb http://mirrors.163.com/ubuntu/ raring main universe restricted mul...

2019-03-14 22:35:42 130

原创 pytorch在无anaconda环境下源码编译安装

参考自源码编译pytorch由于要紧急测试pytorch的代码,实验室环境下无anaconda,打算直接在无anaconda的环境下编译pytorch的源码1、首先安装yaml依赖sudo apt install python-yaml python3-yaml2、git clone pytorch 的源码git clone https://github.com/pytorch/pyt...

2019-03-13 19:55:29 887 1

原创 Numpy介绍

一、Numpy是什么?Numpy是python的扩展程序库,支持大量的维度与矩阵的运算,就是进行数组运算的库。Numpy一个非常重要的特点就是用于存放同类型元素N维数组的ndarray对象,由下面几个组成。1、指向数据的指针2、数据类型,描述数组中固定大小值的格子3、表示数组形状的元组4、跨度元组,其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。注:有了列表为什么还...

2019-03-13 19:30:13 230

原创 Linux 挂载新硬盘

基本概念:1、linux设备都是以文件储存在系统中,设备保存在/dev目录下面,比如磁盘的/dev/sda等,现在的设备一般都是以sd开头,以前是以hd开头2、分区:分区是为了方便管理,linux分区最多只能有4个,要创建更多的分区需要创建逻辑分区,逻辑分区占有一个分区3、文件系统:linux文件系统也是以分区形式管理,例如windows中类型是NTEF,FAT32,linux系统中常见的类...

2019-03-07 14:05:59 138

原创 Wasserstain metric

具象成最有运输距离推出,从离散概率到连续概率。使用概率测率表示具体数值的占比

2019-01-28 16:47:56 271

原创 python3编码方式问题

部分代码转载自https://zhuanlan.zhihu.com/p/40834093,详细python3编码方式见链接一、python31、首先搞懂本地操作系统编码与系统编码的区别:(1)本地操作系统编码方式是与操作系统有关的,linux默认的编码方式是utf-8,windos的默认编码方式是gbk(2)系统编码方式是与编译器有关的,python3编译器的默认编码方式是utf-8,...

2019-01-22 10:30:11 3668

原创 交叉熵

交叉熵

2019-01-22 10:26:14 963

原创 初遇GAN

论文地址:Generator Adversarial NetworkGAN(Generative Adversarial Network)是由两部分组成,一个是生成器(Generator),一个是判别器(Discriminator)两者处于一种博弈的状态。生成器的作用是用来生成图片,判别器的作用是用来对输入的图片进行判断是Generator生成的图片还是数据集中真实的图片。一、训练目标注...

2019-01-21 22:52:46 161

空空如也

空空如也

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

TA关注的人

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