自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 csv文件转换成utf-8格式乱码

csv文件转换成utf-8格式乱码

2022-10-21 09:20:16 2062 1

原创 servlet无法访问WEB-INF目录下的jsp

servlet无法访问WEB-INF目录下的jsp

2022-09-21 20:49:48 724

原创 pycharm解释器更改失效

pycharm 解释器更改失效今天遇到一个问题是我在settings中更改了项目解释器,但是却一直使用的是之前的解释器在运行。解决方法如下:解释器更改失效

2021-12-14 19:49:13 1328

原创 java并发之ConcurrentHashMap

 我们之前了解了HashMap这一容器,但是这个容器并不是并发安全的,为了解决这个问题,JUC为我们提供了支持并发安全的HashMap,即ConcurrentHashMap。 和HashMap一样,ConcurrentHashMap也是有着默认值的,并且也是懒加载机制。默认长度为16,但是如果你在创建的时候有设置初始值,那么我们会创建比你的初始值大的2的幂次方的长度的ConcurrentHashMap。private final Node<K,V>[] initTable() { //默认初

2021-07-18 20:07:53 531 1

原创 java高并发之ReentrantLock

我们经常会遇到一个问题,就是lock和synchronized有什么区别?我们首先可以通过代码发现,lock是一个接口,而sychornized是一个修饰符public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time, TimeUnit unit) throws I

2021-07-16 22:22:22 100

原创 java并发之AQS

 之前我们提到了CAS的原理和实现方式,但是CAS只能对一个变量进行原子操作,而我们实际的应用场景中的资源可不只是仅仅一个变量,还可以是资源对象。那么面对这样的场景时我们应该如何进行处理呢?  java并发大师Doug Lea早就想到了这一问题,也为这个问题提出了解决的方案,就是我们大名鼎鼎的AQS(Abstract Queued Synchronizer)这其实是一个抽象类,即这是一个框架,里面很多具体的方法在我们需要使用的时候还需要重写。这里仅仅介绍几个类中的经典方法。 首先介绍的是抽象类中的几个

2021-07-16 16:25:11 119

原创 二分图的最大匹配(找女友算法)

二分图的最大匹配,也可以称为匈牙利算法,或者找女友算法算法描述:我们认为所有妹子都是可以去尝试的如果发现妹子已经有了男朋友,那么我们出于不达目的不罢休的态度,我们去找她男朋友,问他能不能换一个女朋友如果他有备胎,换了女朋友,那么我们就把妹子拿下如果他也没办法,换不了,那么我们也就没办法了,尽力了题目描述:给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求

2021-07-09 21:46:46 220

原创 染色法判断二分图

二分图:当且仅当图中不含有奇数环,两个集合内部的内部没有边题目描述:给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含两个整数 u 和 v,表示点 u 和点 v 之间存在一条边。输出格式如果给定图是二分图,则输出 Yes,否则输出 No。数据范围1≤n,m≤105输入样例:4 41 31 42 32 4输出样例:Yes代码实现:import java.io.*

2021-07-09 17:15:15 182

原创 kruskal最小生成树算法

之前我们介绍了prim最小生成树算法,那么这个kruskal最小生成树算法也能得到一个图的最小生成树,但是采取的方式是不一样的kruskal算法一开始将我们所有的边都读入,然后从中选取一条权重最小的边,并判断它的两个节点是否是连通的,如果没有连通,则将两点连通。如果能得到一个最小生成树,那么它拥有n-1条边,我们可以通过我们连通的边数来进行判断,判断图是否会有最小生成树。题目描述:给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树

2021-07-09 17:00:16 206

原创 prim最小生成树问题

题目描述:给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包

2021-07-09 16:30:54 167

原创 floyd求最短路问题

在边权可能为负数的情况下,我们还可以用floyd算法来对问题进行求解,只是这个方法的时间复杂度比较高为O(n3^33)简单理解,图中i,j两个节点之间的最短距离,由i,j 经过 1,k的节点的所有状态计算出来,因此需要将k放最外层题目描述;给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定 k 个询问,每个询问包含两个整数 x 和 y,表示查询从点 x 到点 y 的最短距离,如果路径不存在,则输出 impossible。数据保证图中不存在负权回路。输入格式第

2021-07-09 16:18:21 159

原创 spfa求负环

我们之前已经介绍了spfa算法,即只将距离变短了的节点带入队列对其他节点的距离进行更新。而这种方式其实还可以用来判断图中是否含有负环。因为我们记录了每次距离变短的节点,我们可以进行一个统计,然后利用两个常用的方法对负环进行判断:统计每个点入队的次数,如果某个节点入队n次,则存在负环统计每个点最短路所包含的边数,如果某点的最短路边数大于等于n,则说明也存在负环对第一种情况,如果没有权重为2的边,那么b点只会入队一次,但是如果,我们增加了权重为2的边,那么a点和b点都会不断入队,直到入队n次,我们

2021-07-09 16:06:04 325

原创 spfa求最短路问题(带负权)

 我们在之前介绍了bellman-ford算法求解带负权的最短路问题,也解释了为什么我们不能使用dijkstra算法进行求解,今天我们要介绍一种新的求解带负权最短路问题的方法,spfa算法,这其实也是对bellman-ford算法优化。spfa算法在最好的情况下,算法时间复杂度为O(m),最坏情况下算法时间复杂度为O(nm)那么spfa是如何对bellman-ford算法进行优化的呢? 在bellman-ford算法的松弛操作中,即使点b并没有被更新,还是需要用它去更新其他节点,这其实是没有必要的,因

2021-07-09 15:13:04 512

原创 有边数限制的最短路问题

bellman-ford算法给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出从 1 号点到 n 号点的最多经过 k 条边的最短距离,如果无法从 1 号点走到 n 号点,输出 impossible。注意:图中可能 存在负权回路 。输入格式第一行包含三个整数 n,m,k。接下来 m 行,每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示从 1 号点到 n 号点的最多经过 k 条边的最短距离。如果

2021-07-09 14:55:33 255

原创 transient关键字

被transient关键字修饰后的变量不再是持久化的一部分。!!!只修饰变量

2021-06-03 16:34:03 57

原创 String 几兄弟

关于String类、StringBuilder和StringBuffer首先String类不是一个基本类型,它是一个引用类型。并且String类型是不可变的,每次我们对它进行修改时,都会创建一个新的String对象,然后将新的值放入新对象String类的compareTo方法返回的是两个字符串的ASCII码的差值,即两字符串从头开始比,如果第一个就不等则直接返回差值,否则继续StringBuffer类型是线程安全的,而StringBuilder类型不是线程安全的,具体表现为StringBu

2021-06-03 16:33:32 55

原创 spring AOP

aop全称:Aspect Oriented Programming即面向切面编程一些专有名词:通知: advice 定义你想要的功能连接点: joinpoint 每个方法的前后都可以是连接点切入点: pointcut 从连接点中选择进行切入切面: 通知和切入点的结合引入: introduction 允许我们向现有的类添加新的方法目标: 引入当中的目标类织入: 把切面应用到目标对象来创建代理对象的过程  那么spring是如何实现使用代理类包裹切面,把他们织入spring管理的bean里面

2021-06-03 16:31:00 43

原创 聊聊synchronized锁

  我们都知道sychronized关键字可以保证我们的并发安全,那么他具体是怎么实现的呢?当使用synchronized关键字修饰同步代码块的时候,我们锁的是配置对象当使用synchronized关键字修饰同步方法时,我们锁的是实例对象当使用synchronized关键字修饰静态同步方法时,我们锁的是类对象synchronized实现方法主要表现在锁对象的对象头中锁同步代码块中主要表现在 monitorentry和monitorexit语句中锁同步方法 ACC_SYNCHRONIZED

2021-06-03 16:30:20 83

原创 数据库中文???

在插入数据库的时候遇到了一个问题,将中文字符串插入mysql数据库时会产生???,但是我idea的文件和字符设置都是utf-8,mysql数据库也是设置的utf-8,为什么会产生问题解决办法:useUnicode=true&characterEncoding=UTF-8  这个语句影响的只是从客户端发送SQL语句时的字符集,也就是说jdbc会通知mysql数据库使用某个字符集发送,然后mysql数据库会用某种字符集来解码,然而客户端的编码过程是jdbc来完成的,所以我们在jdbc后面加上这句

2021-06-03 16:29:16 116

原创 最短路问题dijkstra问题Ⅱ

dijkstra解决的是单源最短路问题,即一个点到另外一个点的最短路问题。这种单源最短路问题有很多做法,如dijkstra以及SPFA等等。今天我们主要了解dijkstra算法:初始化一个节点dist[1]=0,其他都为无穷大利用初始节点更新邻居节点的距离,找到当前节点的邻居中距离最短的点加入组织利用加入的点继续更新其他节点;我们一共需要n次循环,n为节点数,因为每次只能加入一个节点进入组织。  我们如上图所示,一开始我们假设到达所有节点的距离都为无穷大即d[1] = INF,d[2] = IN

2021-06-03 16:28:38 87

原创 最短路问题之dijkstra

dijkstra解决的是单源最短路问题,即一个点到另外一个点的最短路问题。这种单源最短路问题有很多做法,如dijkstra以及SPFA等等。今天我们主要了解dijkstra算法:初始化一个节点dist[1]=0,其他都为无穷大利用初始节点更新邻居节点的距离,找到当前节点的邻居中距离最短的点加入组织利用加入的点继续更新其他节点;我们一共需要n次循环,n为节点数,因为每次只能加入一个节点进入组织。  我们如上图所示,一开始我们假设到达所有节点的距离都为无穷大即d[1] = INF,d[2] = IN

2021-06-03 16:27:45 142

原创 object的了解

Object类是所有类的父类其中主要有以下几个方法:public final native Class<?> getClass();//这个方法用来获得生成当前对象的类对象public native int hashCode();//计算当前类的hash值,一般重写equals都会重写hashCode方法public boolean equals(Object obj) { return (this == obj); }// 判断两个对象是否相等pr

2021-06-03 16:26:38 61

原创 java IOC 和DI

IOC:全名 Inversion Of Control,即控制反转。就是将你设计好的对象交给Spring容器进行管理,不是在自己的对象内部进行控制,这样的控制关系的反转叫做控制反转。注: 以前是我们自己在对象内部创建我们所需要的对象,现在是容器通过依赖注入的方式,将你想要的对象给你。DI:全名Dependency Injection,即依赖注入。就是容器动态的将依赖关系注入到组件中。谁依赖谁:  我们的程序依赖容器为什么依赖:  我们的程序需要容器给我们提供外部资源谁注入谁:  容器注入依赖

2021-06-03 16:25:47 196

原创 CAS理解

CAS 即 compare and swap,比较替换  CAS中主要用的有三个操作数:内存地址v,旧的预期值A,修改的新值B。  当我们更新一个变量的时候,只有当变量地址v的值是预期值A的时候,才会将内存地址v的对应值修改为B。但是我们使用CAS时会遇见ABA的问题即当我们想要修改的值在之前已经被改为了B,然后重新改为A,此时我们使用CAS是无法进行判断的。public static void main(String[] args) { final AtomicInteger a

2021-06-03 16:25:01 62

原创 Come ModuleNotFoundError: No module named ‘utils.training_sdg_inner‘

最近在服务器上重新搭建Come的环境,运行时报了一个错误ModuleNotFoundError: No module named 'utils.training_sdg_inner'然后我忘了之前是如何解决的,于是查看原作者github中的问题描述查看有没有解决思路。Come问题描述然后发现了其中一个解答有印象Hello,I successfully installed comE today. 1. Install Cython==0.25 2. In comE-master, run:

2021-05-17 15:53:29 307

原创 undefined symbol: omp_get_num_procs错误解决

conda install --channel conda-forge llvm-openmp上述命令解决了我的烦恼参考地址

2021-04-24 21:21:21 2709 2

原创 HashMap小结

HashMap小结首先定义的我们的初始表的大小为16,这里是将1左移四位变成10000,即16;然后是我们的最大容量,负载因子0.75以及链表转换为树的长度8. 这里6是表示我们在进行扩容后选择要不要将红黑树转化为链表的阈值。64则是我们的初始表大小容量达到64是才会选择在链表过长的地方将他们改造成红黑树。我们在hash表中主要存放的是NODE节点,它有以下属性,分别是hash值,key值,value值以及next指针。static final int hash(Object key) {

2021-03-26 19:10:21 108

原创 ArrayList扩容小结

ArrayList小结 首先ArrayList是我们List接口的一个实现类,是线性非安全的。优点是访问数据快,复杂度为O(1),缺点是对数据进行删除和添加的话不方便,时间复杂度在最好的情况下为O(1),最坏的情况下为O(n)。那么接下来我们就来看看ArrayList在jdk中是如何实现的:第一个参数是10,是ArrayList在加入元素时会进行,扩容的长度。然后是两个默认的空数组。接下来我们就可以来看一下ArrayList的初始化,以及它是如何进行元素的添加和扩容的。首先是两个构造方法,分别是

2021-03-25 23:10:46 342

原创 from tensorflow.examples.tutorials.mnist import input_data 出错

在使用tensorflow实现辨别手写体的过程中遇到了一下错误那么你则可以看下你当前环境下的TensorFlow的example中是否有tutorials文件或是否有example文件夹进入后如果发现,没有则去tensorflow中进行下载,然后粘贴到对应位置即可...

2021-03-09 13:08:22 9109 12

原创 Invalid type tf.int32 for Mean:0, expected: [tf.float32, tf.float64, tf.float16, tf.bfloat16].

TensorFlow 运行错误当我们将tf的变量设置为0的时候会出现题目所示的错误,此时我们只要将变量改为如下格式即可,因为在tf运行的过程中会调用框架中的其他方法,但是其要求为float32或是float64类型的数据...

2021-03-08 11:10:34 287

原创 pycharm中连接服务器的问题

pycharm 连接服务器解释器遇到的问题在使用服务器环境运行代码时会出现以下错误:Can’t get remote credentials for deployment server!这其实是我们的设置出现了问题,我们知道当我们设置将代码运行在服务器上时,我们需要在tools中的deployment下进行设置,用来设置我们本地文件夹映射到服务器当中所对应的文件夹。然后我们需要将python解释器设置为我们服务器上面的解释器环境即可,同时在设置环境的时候他也会要求我们设置一个映射的文件夹用来执行我们的

2020-11-03 14:15:40 1199 1

原创 Come代码出错

come代码运行失败首先从GitHub上面找到Come的代码下载下来,然后按照操作进行,根据.yml文件创建相应的conda环境。然后运行.main文件可能会出错,这个时候可以参照问题描述当中的方式进行解决come问题描述(https://github.com/andompesta/ComE/issues/3)但是这个时候可能你还会遇到一些问题上图所示的错误可以参照以下方式解决TypeError: ‘>=’ not supported between instances of ‘NoneT

2020-10-27 20:55:25 376

原创 ubuntu18.04显卡驱动安装+cuda+cudnn+TensorFlow

Ubuntu18.04环境服务器配置显卡驱动+cuda+cudnn+TensorFlow近日实验室新来了一台服务器,两个TITIAN RTX用来跑深度学习,其中配置环境的苦差事交给了我。系统重装创建一个linux系统启动盘,用来重装系统,Unetbootin和Uiso都可以,我用的是Unetbootin,把想要安装的镜像按照要求写入U盘即可。注意: 格式化的时候我一开始随便格式化的结果用不了,后面格式化的时候选择Fat32就可以使用了。插上U盘,选择启动顺序进入U盘启动然后按着步骤走就行了。

2020-10-26 21:32:40 375

原创 Jupyterlab更改kernel

修改内核jupyter一开始使用的是系统自带的环境,你可以使用jupyter kernelspec list命令可以查看当前的kernel及其地址,如没有安装则可以先安装ipykernel:conda install ipykernel如果要添加你想添加的python环境,首先activate到那个python环境,在此环境下添加ipykernel,然后使用以下命令安装即可。python -m ipykernel install --name test其中test可以换成你自己想用的名字注意:

2020-10-07 16:46:35 2110

原创 json格式字符串和字典的转换

字典转json格式存储 import json import csv test_dict = {} for key, value in sim_dict.items(): print(key, value) test_dict[str(key)]=value print(json.dumps(test_dict)) with open('test_data.csv', 'w') as f: f.write(jso

2020-09-24 09:03:33 661

转载 模块度函数

模块度函数的理解注:文章中的Q计算部分Q=12×2[(0−2×22×2×1+0+(1−2×12×2×1)]+12×2[0+(0−1×12×2)+0]+12×2[(0−1×12×2)×1+(1−1×22×2)×1+0]Q = \frac{1}{2\times2}[(0-\frac{2\times2}{2\times2}\times1+0+(1-\frac{2\times1}{2\times2}\times1)]+\frac{1}{2\times2}[0+(0-\frac{1\times1}{2\time

2020-08-03 17:30:22 691

原创 对LINE的理解

LINE: LARGE-SCALE INFORMATION NETWORK EMBEDDING现在对于信息网络的研究我们是十分重视的,但是现有的大多数图嵌入方法都不适用于通常包含数百万个节点的真实信息网络。所以LINE的作者提出了这样一种新的网络嵌入方法,它适用于任意类型的信息网络:无向、有向或者加权。一阶近似以及二阶近似一阶近似局部结构由网络中观察到的链路来表示,这些链路捕捉顶点之间的一阶近似。网络中的一阶近似是两个顶点之间的局部成对接近。对于由一条边(u,v)链接的每对顶点,该边上的权重wuv表示

2020-07-28 16:49:40 1037

原创 node2vec的一些理解

node2vecnode2vec也是一种网络嵌入的表示方法,它是基于DeepWalk的基础上进行改进的。主要改进的地方在于它在随机游走的过程中加入了一个权重,使得游走可以采用深度优先和广度优先的策略进行游走。Search bias α使得随机游走产生片偏差的最简单的方法是根据静态边缘权重WvxW_vxWv​x进行采样,在未加权图的情况下Wvx=1W_{vx}=1Wvx​=1,但是这并不能解释我们的网络结构,并且指导我们探索不同的网络邻居。此外,与BFS和DFS不同,BFS和DFS是分别适用于结构等价性

2020-07-22 22:11:56 2856 1

原创 Word2vec代码理解

Word2vecword2vec一开始主要是运用在NLP中,进行相邻词语的预测。列如“I HAVE A DREAM”如果我们把have当作中心词的话,如果滑动窗口是2,那么他的相邻词则是I A DREAM。这是我们要达到的目的。如上图所示,我们主要是要求出在中心词为t的情况下邻近词wt+jw^{t+j}wt+j的概率,如上图所示,因为我们假设每个单词预测的概率都是相互独立的,所以我们把它进行乘法,采用了最大似然估计。那么具体在代码中我们要怎么将word2vec进行实现呢?建立词汇表首先我们应该做的

2020-07-21 10:20:16 313

原创 对DeepWalk的理解

DeepWalk的理解如今我们都处于大数据时代,同时我们也身处于各个网络当中,列如通信网络,交通网络等等。我们如何将网络中的信息用我们计算机能懂的方式展现出来,这就是网络表示。而deepwalk主要是用来表示网络的一种方式,让网络能够方便我们的模型进行学习。类似的方法还有很多比如line,node2vec等等Deepwalk的主要算法如以上图片所示,deepwalk主要是利用了自己的随机游走的方法在与word2vec中的skip-gram方法相结合,而skip-gram是2013年的word2ve

2020-07-13 22:15:23 2376

空空如也

空空如也

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

TA关注的人

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