- 博客(171)
- 收藏
- 关注
转载 公钥,私钥和数字签名的理解
一、公钥加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密。这样我就可以保护数据了。我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了...
2018-08-06 14:27:52 722
原创 idea配置 Tomcat Deployment添加时没有Artifact...选择的解决方案
情况:Tomat Deployment 没有Artifact选择,这个时候不能Run,如下图。 解决方法:1、先在maven project里点击package生成target文件夹,而.war文件在target文件夹中。2、在File的Project Structure选择生成的.war文件3、完成Tomcat配置 详细步骤如下:将鼠标移到I...
2018-07-25 19:26:50 44533 8
转载 JDK1.8 新增的日期时间API
JDK1.8 新增的日期时间APILocalDate、 LocalTime、LocalDateTime类的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。注: ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法这些新增的日期时间API都在 java....
2018-07-22 14:42:34 720
原创 LeetCode728 — Self Dividing Numbers
题目: 求这个数能被每个位数整数思路:会求一个数的各个位数,然后相除就可以了public class Solution { public List<Integer> selfDividingNumbers1(int left, int right) { List<Integer> res = new ArrayList<...
2018-07-15 23:34:05 291
原创 LeetCode718 — Maximum Length of Repeated Subarray
题目:求两个数组的最大公共子串思路:典型的dp问题,状态转移是当两个相等就加1,压缩版和不压缩版写法都差不多~public class Solution718 { public static int findLength(int[] A, int[] B) { int m = A.length; int n = B.length; ...
2018-07-14 22:50:21 373
原创 LeetCode695 — Max Area of Island
题目:给一个二维数组,1代表内陆,求相互连接的内陆最大的面积思路:easy~ dfs或bfs都能做出来,争取一次ACpublic class Solution { private int[][] d = {{-1,0},{0,1},{1,0},{0,-1}}; private boolean[][] visited; private int rows, c...
2018-07-14 22:50:05 398
原创 LeetCode136 — Single Number
题目:只有一个数是单个出现的,求这个数思路:位运算,异或两个相同的异或结果是0public class Solution136 { public int singleNumber(int[] nums){ int result = 0; for(int i = 0; i < nums.length; i++){ ...
2018-07-13 19:02:56 225
原创 LeetCode448 — Find All Numbers Disappeared in an Array
题目:在一个数组找出未出现的数字思路:经过前几题的洗礼,一看到n个数中有1-n个数就应该能知道用索引对应数值的方法区解题了 遍历一遍,如果第一次能到的话,则将其负,这里不管重复,题目只要求输出没有的值,那么遍历一遍之后还有正数的话,说明这个点的索引到不了,没有这个值能到这个索引。public class Solution448 { public Lis...
2018-07-13 19:02:26 216
转载 Java 利用枚举实现单例模式
Java枚举基本用法枚举的用法比较多,本文主要旨在介绍利用枚举实现单例模式的原理,所以这里也主要介绍一些相关的基础内容。 首先,枚举类似类,一个枚举可以拥有成员变量,成员方法,构造方法。先来看枚举最基本的用法:enum Type{ A,B,C,D;}123创建enum时,编译器会自动为我们生成一个继承自java.lang.Enum的类,我们上面的enum可以简单看作:...
2018-07-13 14:55:16 334
原创 使用静态内部类实现延迟加载单例模式
所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。就像是Java Web中的application,也就是提供了一个全局变量。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类就称为单例类。单例的创建一般分为懒汉式,恶汉式,双重锁检查,枚举等,其中双重锁检查只能在jdk1.5以后才能有效,1.5以前在java对象模型中...
2018-07-13 10:43:31 813
原创 LeetCode442 — Find All Duplicates in an Array
题目:和287类似,只不过这次出现重复的数字不只是一个,是多个。思路:如果可以开辟空间的话很简单,不能开辟空间的话,稍微思考一下还是有思路的。 和287不同的是,这道题没有规定数组不能够修改,那么就可以访问这个数字为标记一下是否访问过。public class Solution442 { public List<Integer> f...
2018-07-11 22:09:29 369
原创 LeetCode142 — Linked List Cycle II
题目: 链表判断是否有环,并找到入口public class Solution142 { public ListNode detectCycle(ListNode head) { ListNode slow = head; ListNode fast = head; boolean flag = false; w...
2018-07-11 22:09:09 233
原创 LeetCode287 — Find the Duplicate Number
题目: 找出一个重复的值,要去不能开辟空间,并且不能暴力解思路:快慢指针,两者相遇是在一个环中,而再依次递增就在切面点相遇了。证明这里省略(证明想了一上午,终于写出来了)~public class Solution287 { public int findDuplicate(int[] nums) { int slow = 0; int f...
2018-07-11 22:08:43 248
原创 LeetCode556 — Reshape the Matrix
题目: 将一个m*n的矩阵替换成r*c的矩阵,当不满足的话,返回原矩阵。思路:easy~ 用队列将所有的数字装起来,再依次取出来放入新数组。不用额外空间的话,就是所有的数字除以,求余列数得到的就是几行几列~class Solution { public int[][] matrixReshape(int[][] nums, int r, int c) { ...
2018-07-10 23:39:49 327
原创 LeetCode080 — Remove Duplicates from Sorted ArrayII
题目:和上题26一样,只是每个数出现次数不超过2次。思路:同理,有一个索引index,当超过了2,就不赋值了,跳过,否则就赋值,并且将count重置。public class Solution080 { public int removeDuplicates(int[] nums){ int index = 1; int count = 1;...
2018-07-10 23:39:23 713
原创 LeetCode026 — Remove Duplicates from Sorted Array
问题:给一个有序数组,移除重复的元素,要求原地思路:给定一个索引, 当index等于前一个,不动,否则就赋值往前移~public int removeDuplicates(int[] nums) { if(nums.length < 2) return 1; int index = 1; for(int i = 1; i &l...
2018-07-10 23:38:48 246
转载 Python的numpy库中将矩阵转换为列表等函数
这篇文章主要介绍Python的numpy库中的一些函数,做备份,以便查找。(1)将矩阵转换为列表的函数:numpy.matrix.tolist()返回list列表Examples>>>>>> x = np.matrix(np.arange(12).reshape((3,4))); xmatrix([[ 0, 1, 2, 3], [ 4, ...
2018-07-10 19:28:47 3806
转载 python中pandas库中DataFrame对行和列的操作使用方法
用pandas中的DataFrame时选取行或列:import numpy as npimport pandas as pdfrom pandas import Sereis, DataFrameser = Series(np.arange(3.))data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),colu...
2018-07-10 19:27:18 606
转载 pandas的read_csv 的参数与 DataFrame
<ul>对 DataFrame 对象迭代得到的是其各个属性列的列名,自然为 list 类型;1. 从文件读取数据返回 data framepandas.read_csv参数详解read_csv,read_exceldf = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learn...
2018-07-10 19:25:31 5620
原创 Pandas —— 处理缺失数据dropna( )和fillna( )
dropna( )对于Serial对象丢弃带有NAN的所有项In [152]: data=pd.Series([1,np.nan,5,np.nan])In [153]: dataOut[153]:0 1.01 NaN2 5.03 NaNdtype: float64In [154]: data.dropna()Out[154]:0 1...
2018-07-09 20:28:34 1680
原创 LeetCode027 — Remove Element
题目大意: 给一个数组,指定一个值让其移到后面去,其他的按顺序移到前面,并返回移除指定值剩余数的个数~比较easy,遍历一遍,等于指定的不走,不等于就赋值往后走~public class Solution027 { public int removeElement(int[] nums, int val) { int index = 0; ...
2018-07-08 23:27:46 318
原创 LeetCode283 — Move Zeroes
思路:原地排,将0排到数组的后面easy,直接遍历一遍,一个index遇到0就不动,遇到非0就赋值,并且index++public class Solution283 { public void moveZeroes(int[] nums) { int index = 0; for(int i = 0; i < nums.length; ...
2018-07-08 23:25:56 661
原创 LeetCode034 — Search for a Range
思路:首先数组排好序,简单的思路就是从两侧指针依次向内移动,直到找到相同的为止。上述的复杂度为O(n),没达到题目要求O(lgn)就只能用二分查找了, 这样才满足复杂度。class Solution { public int[] searchRange(int[] nums, int target) { int l = 0; int...
2018-07-08 23:25:15 654
转载 Java Hotspot G1 GC的一些关键技术
前言G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相信熟悉JVM的同学们都不会对它感到陌生。在JDK 9中,G1被提议设置为默认垃圾收集器(JEP 248)。在官网中,是这样描述G1的:The Garbage-Fi...
2018-07-08 14:39:30 769
原创 解决pycharm问题:module 'pip' has no attribute 'main'
在导入numpy的包时,一直显示错误~原因是pip 10版本中没有main(),如果不降级的话,则就会显示这个错误~第一种方法:在pycharm的helpers/packing_tools.py文件中头部添加import pip._internal as pip_new然后分别修改文件中的install的两个部分:return pip.main(['install'] + pkgs)return...
2018-07-05 17:14:48 693
原创 硬链接与软链接的区别
常用命令:硬链接:ln sourfile hard软链接:ln -s sourfile soft联系与区别联系:Linux文件分两部分,用户数据和元数据。用户数据记录文件真实内容的地方。元数据存放的是文件的附加属性,如大小,创建时间。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号...
2018-06-22 00:00:01 339
原创 Redis的多端口配置文件启动
一、Redis安装相关命令(/opt/soft目录下):wget:http://download.redis.io/releases/redis-3.0.7.tar.gztar -xvf redis-3.0.7ln -s redis-3.0.7 redis (个人习惯建立一个软链接)make 编译make install二、Redis启动:1. 默认配置启动单纯的执...
2018-06-21 21:12:10 1621
原创 异常: Canonical names should be kebab-case(“-” separated), lowercase......... blablabla
放假完第一天,启动项目发现半天起不来,之前写的dao层和service层都是通过单元测试,并没有完全启动。看提示:在微信微信扫描阶段,自己首先配置了一下,提示说这个U的问题,一开始把项目名该成小写,发现还是不行。仔细一看,大意是配置文件属性中的U是无效的,应该符合 kebab的形式,即用分隔符开分隔开就行了。写成这种就成功了。之后查了一下SpringBoot的官方文档:...
2018-06-19 09:54:29 13458 2
原创 算法与数据结构(30)—— Kruskal实现最小生成树
这个算法实现起来相对比较简单,有个原则,最小生成树是权值最小的边构成的。那么每次都找最小的一条边就可以了,只要不构成环就行了。那么对边进行排序,然后判断把边加入最小树中是否构成环,即并查集的思想。没有Prim的高效,但是思想比较简单,也容易实现。 public KruskalMST(WeightedGraph graph){ mst = new ArrayList<Edge&...
2018-06-17 00:04:36 395
原创 算法与数据结构(29)—— Prim实现最小生成树
实现的基础是索引堆,不过有数据结构基础的实现上还是比较能理解的~新建了一个edge数组,初始大小为节点个数,类型为边,专门用来存边了。作用是每次访问点的临界点所构成的边存在里面。marked标记数组,仍是看是否在同一个阵营,来判断是否是横切边索引堆,初始大小仍是节点个数,依据权值来判断。核心代码:public PrimMST(WeightedGraph graph){ G = g...
2018-06-16 23:43:27 218
原创 算法与数据结构(28)—— Lazy Prim
这个比较简单,利用堆的思想,寻找该节点相邻节点最短的边,但是有个判断时一条边的两个点不能同时在一个阵营,即这条边就不是横切边了。核心代码: private void visit(int v){ marked[v] = true; // 将和节点v相连接的所有未访问的边放入最小堆中 for( Edge<Weight> e : G.adj(...
2018-06-16 23:35:17 293
转载 java Queue中 remove/poll, add/offer, element/peek区别
这里简单对其重复的方法做点简单的区分。offer,add区别:一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。 poll,remove区别:remove() 和 poll() 方法都是从队列中删除第一个元素。...
2018-06-16 19:22:34 389
原创 算法与数据结构(27)—— bfs的最短路径
从一个点出发, 与这个点相连的点都入队,类似于树的层次遍历就好了~核心代码: Queue<Integer> q = new LinkedList<Integer>(); q.add(s); visited[s] = true; ord[s] = 0; while(!q.isEmpty()){ ...
2018-06-16 18:29:05 511
原创 算法与数据结构(26)—— dfs的基本应用
深度优先遍历:其实就是往一个往死里走,直到这个点不再指向其他或已经遍历过了,就退出来,接着往下一个点,直到所有的就访问过了。 应用:求一个图的连通分量,求两个点之前的路径dfs核心代码: public void dfs(int v) { visited[v] = true; // 节点 i 已被访问 for (int node : g...
2018-06-16 16:56:39 549
原创 算法与数据结构(25)—— 邻接矩阵表示稠密图
邻接表是一个list数组,数组中每个元素都是list,可扩展。而临界矩阵是一个二维矩阵public class DenseGraph { private int n; // 节点数 private int m; // 边数 private boolean directed; // 是否为有向图 private boolean[][] g; // ...
2018-06-16 16:41:04 748
原创 算法与数据结构(24)—— 邻接表表示稀疏图
应用:交通运输,社交网络,互联网,工作安排,脑区活动图的分类:无向图和有向图(无向图是一种特殊的有向图)无权图和有权图简单图不包括自环边和平行边。自环边:自己指向自己平行边:两个点有多条边图的表示: 邻接矩阵:适用稠缪图(Dense Graph,每个点几乎与每个点相连,即完全图)邻接表:适用稀疏图(Sparse Graph)public class SparseGraph { priva...
2018-06-16 16:33:52 2506
原创 在图的遍历模式中应用设计模式
今天在写图的算法时,想到如果要实现了求一个节点相邻的节点,该怎么写:稀疏图是邻接表实现的:稠密图是邻接矩阵实现的:问题:得到g这个变量进行操作,保持g变量的私有特性,而又让外部能遍历到这个数据?用模板方法来统一接口,这样外部调用统一的接口就可以访问这个点所有相邻点的集合了。邻接矩阵:// 返回图中一个顶点的所有邻边 public Iterable<Integer> adj(in...
2018-06-15 17:32:58 291
原创 算法与数据结构(23)—— 并查集 路径压缩
在查找根节点,我们需要一个一个查找parent以得到这个集合的根节点。那么我们在查找的时候,如果父节点不是根节点的话,可以指向父节点的父节点,这样就节省了不少树的高度(非递归版)。当然,因为节点是有指向父节点的,所以可以让每一个都指向根节点,根节点可以有无数个孩子(递归版)。理论上,递归版树的高度要低点,效率好,但是实际上,由于递归过程会产生额外的开销~实际中,使用非递归的就可以了,面试的时候讲讲...
2018-06-15 14:02:41 859
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人