自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Michael Hsu

很多事情都需要做,但当应用需要更高要求的算法时,就必须能够阅读论文,领会论文思路并通过代码实现,如此反复下去。

  • 博客(140)
  • 资源 (2)
  • 问答 (6)
  • 收藏
  • 关注

原创 Java中的equals和hashcode方法

秋招面试Java岗,被频繁问到equals和hashcode方法,这里总结一下知识点以供日后回顾。一、Object中的equals和hashcode方法。equals和hashcode方法是定义在Java的Object类里的,由于Object类是Java中所有类的根类,所以Java中所有的类都是有equals和hashcode方法的,而且这两个方法大多数时候是会进行重写的,看一下Object类...

2019-09-11 11:18:33 331

原创 A - Learning Languages CodeForces - 277A(并查集 Java实现)

The “BerCorp” company has got n employees. These employees can use m approved official languages for the formal correspondence. The languages are numbered with integers from 1 to m. For each employee ...

2019-08-30 22:34:00 443

原创 快速求解霍夫曼编码树的带权路径长度

一、简介霍夫曼编码被广泛的用在文本压缩编码中,但在求解霍夫曼树的WPL长度时其实不必真的构造出一棵霍夫曼树再去实际求解,在实际oj和测试时时间也不允许,求解WPL可以基于如下定义快速求解:WPL = 所有叶子节点的带权路径长度之和 = 霍夫曼树中所有非叶节点的权值之和证明如图:图片转载自https://blog.csdn.net/hchild1/article/details/509339...

2019-07-30 22:24:43 1168

原创 java.lang.ClassNotFoundException: com.alibaba.druid.support.http.WebStatFilter异常解决

将c3p0换成Druid数据库连接池后,启动运行时报错:java.lang.ClassNotFoundException: com.alibaba.druid.support.http.WebStatFilter查看确实将Druid导入到lib目录下对应的配置文件内容也设置了,可是还是有问题,后来发现之前的博客需要将Druid放入到Tomcat的lib目录下,试了一下,问题解决!...

2019-06-30 22:20:15 7225 1

转载 Java的3种代理模式(转载)

一、代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的...

2019-06-27 15:40:37 114

原创 Java8的Arrays.binarySearch()及其返回值分析

一、二分查找的返回值对有序数组应用二分查找是经典的查找算法,当查找的元素在数组中存在时,返回的是该元素在数组中的下标;如果查找的元素在数组中不存在时,此时的low下标其实是插入点(insertion point),即将查找元素插入该位置时,数组仍将保持有序,但有个问题,如果是返回0的话,被查找元素在数组到底有没有存在呢,针对这一问题Java8使用了一个小技巧,使得只要返回的下标值大于等于0就说明...

2019-06-03 14:25:39 1172

原创 Java使用Scanner对象的输入问题

一、背景描述今天在使用Java做OJ题目时,死活输入不对,类似如下:public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); String str = in.nextLine(); Syst...

2019-05-19 17:02:18 6216

原创 Java中集合和数组相互转换的注意点

一、前言Java中数组和集合是常用的两种数据结构,前者直接、占空间小,后者简单易用,但有时有的场合需要将这两种数据结构进行互转,尽管提供了API,但不注意是会出错的,这里对一些关键点进行一下记录二、数组转集合Arrays是针对数组对象进行操作的工具类,包括数组的排序、查找、对比、拷贝等操作。**在数组转集合的过程中,注意是否使用了视图方式直接返回数组中的数据。**至直接使用Arrays.as...

2019-04-27 15:40:22 737

原创 如何指定多个线程的执行顺序

一、问题定义运行10个线程,按照顺序打印0123456789,Java代码实现!二、具体实现原始实现设定一个orderNum,每个线程执行结束后,更新orderNum,指明下一个要执行的线程,并且唤醒所有的等待线程;在每一个线程的开始,要while判断orderNum是否等于自己的要求值,不是则wait,是则执行本线程。public class OrderedThread ex...

2019-04-23 17:13:27 1248

原创 Java输入问题

因为某些原因,需要用Java进行oj刷题,当然要首先解决一下输入问题啊!Java中调用Scanner对象进行输入,可以根据数据类型完成指定类型的输入,这里主要讨论一下用于字符串输入的.next()方法和.nextLine()方法。next()next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有...

2019-04-21 14:54:10 335

原创 Java多线程编程

一、Java线程APIJava标准库类java.lang.Thread就是Java平台对线程的实现。Thread类或其子类的一个实例就是一个线程。每个线程都有其要执行的任务。线程的任务处理逻辑可以在Thread类的run实例方法中直接实现或通过该方法进行调用,因此run方法相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相关线程时直接调用,而不是由应用代码进行调用。运行一个线程实...

2019-04-19 09:58:48 133

原创 Java中的Math.round

Java中Math.round(a)的具体用法是:将a的值加上0.5得到一个新值,然后对这个新值取第一个小于等于这个新值的整数,返回为long型数据。

2019-04-17 11:04:00 184

原创 Java变量初始化

Java中有两种变量,局部变量和成员变量。局部变量必须要初始化,否则编译时会报错,即局部变量必须要初始化赋值才能使用。但是类中的成员变量可以不进行初始化,虚拟机也会确保它有一个默认的值。Java也会给定默认的初始值。默认是如下所示:当变量作为作为类成员使用时,Java才确保给定其初始值,防止程序运行时错误。在Java中基本类型的默认值是0,引用类型会默认为null。...

2019-04-16 17:19:27 1559

原创 Java中的goto

一、 Java中的goto关键字       在C/C++中,goto常被用于跳出多重循环。但goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。实际上,自从“goto有害论”提出后,软件开发就不建议使用goto了,但是Java中依然保留了goto这个关键字留作备用,但这个关键字没有任何作用,...

2019-04-16 16:09:55 49289 6

原创 堆排序

一、堆排序算法介绍堆是一种数据结构,可以把堆看成一棵完全二叉树,这棵完全二叉树满足:任何一个非叶结点的值都不大于(或不小于)其左右孩子结点的值。若父亲大孩子小,则这样的堆叫做大顶堆;若父亲小孩子大,则这样的堆叫作小顶堆。堆排序的思想:代表堆的完全二叉树的根结点的值是最大(或最小)的,因此将一个无序序列调整为一个堆,就可以找出这个序列的最大(或最小)值,然后将找出的这个最大值交换到序列的最后(...

2019-04-02 14:31:40 454

原创 Redisson

Redission是一个增强的Redis Java客户端,它为使用Redis提供了一种更便捷的方式。Redisson提供了一系列分布式对象和服务,能够简化使用Redis设计和实现大型分布式系统的难度。Redisson基于Java NIO的Netty框架。它不仅可以在数据库驱动程序层上作为扩展的Redis客户端,还可以提供更高级的功能。诸如hash、list、set、string、Geo和Hype...

2019-04-01 17:03:06 1363

原创 配置高可用集群

一、Redis Cluster由于Redis中所存储的数据增长速度很快,一个存储了大量数据(>16GB)的Redis实例的处理能力和内存容量可能会变成应用的瓶颈。随着Redis中数据集大小的增长,在进行持久化或主从复制时,也会越来越多地出现诸如延迟等的问题。对于这种情况,Redis Cluster技术可以将数据集通过分区的方式分布到多个Redis实例中。...

2019-04-01 15:41:07 186

原创 Java Web用户指定时间内未登录时断开连接并跳回到登录页面

一、背景用户登录系统后,在指定时间(15分钟)内没有任何操作时,为了安全和性能应该注销session并跳回到登录页面。该功能实现时前端使用的是JQuery EasyUI,后台使用的是SSM框架。二、分析如何刻画用户没有任何操作?在Web系统中一般是先用鼠标去点击操作,很少有使用键盘快捷键的,所以可以使用JQuery的mouseover()绑定整个document用户有没有进行操作。JQu...

2019-04-01 11:28:28 1571 2

原创 Redis复制机制

一、Redis的复制机制在生产环境中,单个数据库实例常常存在诸如系统崩溃、网络连接闪断或突然断电等单点故障问题。与其他大多数数据库系统一样,Redis也提供了一个复制机制,使得数据能够从一个Redis服务器(master, 主实例)复制到一个或多个其他的Redis服务器(slave,从实例)。复制不仅提高了整个系统的容错能力,还可以用来对系统进行水平扩展。在一个重读取的应用中,可以通过增加多个...

2019-03-31 17:16:49 126

原创 Redis开发

一、概述Redis与大多数关系数据库不同,除了微调一些配置参数以增强Redis的处理能力以外,在Redis的服务端几乎不能进行任何其他的优化。在应用程序设计的最开始,使用恰当的数据类型和API,是充分利用Redis的高性能特性并同时避免其短处的关键。二、Redis常见应用场景会话存储在现代网站架构中,通常多个Web服务器位于一个或多个负载均衡器之后。会话(Session)通常需要存储在外...

2019-03-30 17:19:35 117

原创 使用发布订阅PubSub

一、PubSub消息传递模式介绍发布-订阅(Publish-Subscribe, PubSub)是一种历史悠久的经典消息传递模式。在发布-订阅模式中,想要发布事件(event)的发布者(publisher)会把消息(message)发送到一个PubSub频道(channel),这个频道会把事件投递给(deliver)对这个频道感兴趣的每一个订阅者(subscriber)。许多流行的消息传递中间件...

2019-03-30 10:48:24 373

原创 Redis的事务

关系数据库中的事务是一组需要原子化执行的操作,这意味着一组操作必须同时成功或失败。但是在Redis中,事务的概念完全不同,其关键区别在于Redis事务没有回滚功能,一般来说,在一个Redis事务中可能会出现两种类型的错误,而针对这两种类型的错误会采取不同的处理方式。错误1: 命令有语法错误。在这种情况下,由于命令在入队(Redis是单线程,所有命令都会被统一放入一个队列中执行)时就能发现存在语...

2019-03-30 10:09:50 65

原创 Redis数据特性

位图bitmap位图是由比特位组成的数组,其底层数据类型是字符串,因为位图存储的是布尔信息,所以在某些情况下(如集合中元素非常多时)可以节省大量的内存空间。位图的命令:SETBIT命令设置位图指定偏移处比特位的值[0|1]GETBIT命令从位图中获取指定偏移处比特位的值BITCOUNT命令获取位图中被设置为1的比特数BITOP [AND|OR|XOR|NOT] 命令用于进行位操作,...

2019-03-29 22:23:48 89

原创 Redis数据类型及数据特性

一、Redis数据类型在使用Redis进行应用设计和开发时,应首先考虑的是Redis原生支持的那种数据类型最适合我们的应用场景。此外,无法使用像在关系数据库中那样的SQL来操作Redis的数据,相反,需要直接使用API发送数据对应的命令,来操作想要操作的目标数据。Redis支持的数据类型有:string, list, hash, set, sorted set, HyperLogLog, Ge...

2019-03-29 11:31:10 481

原创 Redis学习——使用介绍

Redis是什么?Redis是一个基于内存的轻量级键值数据库(key-value database),亦可以将其理解为是一个数据结构服务器。Redis全称为REmote DIctionary Server。Redis原生地在内存中实现了多种类型的数据结构,并提供了操作这些数据结构的多种API。此外,作为一个需要长期运行的数据存储服务,Redis还提供了高性能命令处理、高可靠性/扩展性的架构...

2019-03-28 22:37:42 241

转载 Java中的8种基本数据类型

转载自:http://www.cnblogs.com/doit8791/archive/2012/05/25/2517448.htmlJava基本类型共有八种,基本类型可以分为三类:字符类型char布尔类型boolean数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、dou...

2019-03-28 10:09:23 125

原创 Java字符串常量池

Java中==运算符判断两个对象是否指向同一个堆空间地址,但是下面的程序返回的却是truepublic class A { public static void main(String[] args) { String a = "ab"; String b = "a" + "b"; //TODO:思考为什么相等,返回值是True呢??...

2019-03-26 11:21:37 104

原创 Java容器学习

使用接口的目的在于如果你决定修改你的实现,所需的只是在创建处修改它!这里ArrayList已经被向上转型为List(注意List是接口interface)。因此,创建一个具体类的对象,将其转型为对应的接口,然后在其余的代码中使用这个接口。但是这种方式并非总能奏效,因为某些类具有额外的功能。例如,LinkedList中具有在List接口中未包含的额外方法,而TreeMap也具有在Map接口中未包含...

2019-03-26 08:49:05 110

原创 Java访问权限

Java访问权限高到低:public -> protected -> default -> privatepublic:公共权限使用public修饰符的类允许任意类(可在不同的包中)访问该类public类中的成员和方法是public时,可被其他类访问private:私有权限一般修饰变量和方法,被修饰的变量和方法只能被当前的类访问(使用)default:包级别访问权限...

2019-03-25 10:52:54 1012

原创 Java泛型之分页

一、 需求描述在JavaWeb开发中,分页是很常见的功能,在一个系统中,根据需求可能存在不同模块的分页,但是如果对每一个分页都写一个具体的类,这样做重复度太高,会造成代码冗余,因为分页处理的内容只不过是实体类型不同而已,其他的都大同小异。类型不同,自然想到Java泛型的类型参数,关于Java泛型,贴一篇不错的博客。二、具体实现首先,根据分页的功能需要抽象出一个泛型基类PageModel,该...

2019-03-23 16:11:26 1958

原创 Java泛型学习

一、 序言一直在用的语言是Java,本以为掌握的已经不错了,但最近面试才发现之前自己只是停留在熟料使用的状态,距离编写出优雅,高可复用的代码还有一定的距离。强烈建议大家有机会一定要去看一下JDK源码,写的非常漂亮,可以学到不少东西!二、 泛型为什么要使用泛型?进行日常开发时,当面对有重复的代码时,我们自然而然的将公共部分抽取出来封装成一个函数或方法,然后进行频繁调用。同样的道理,在进行功...

2019-03-22 16:00:38 239

原创 Python实现迪杰斯特拉算法

一、 迪杰斯特拉算法思想Dijkstra算法主要针对的是有向图的单元最短路径问题,且不能出现权值为负的情况!Dijkstra算法类似于贪心算法,其应用根本在于最短路径的最优子结构性质。最短路径的最优子结构性质:如果P(i,j)={Vi…Vk…Vs…Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径。证明:假设P(i,j)={Vi…...

2019-03-17 10:54:46 11820

原创 快速排序(Python实现)

一、 算法介绍快速排序是经常考查到的排序算法,这里对快排算法做一下总结。快速排序是“交换”类的排序,它通过多次划分操作实现排序!以升序为例,其执行流程可以概括为:每一趟排序选择当前所有子序列的一个关键字(通常是第一个)作为枢轴量,将子序列中比枢轴量小的移到枢轴前边,比枢轴大的移到枢轴后边,具体过程是一个交替扫描和交换的过程。当本趟所有子序列都被枢轴以上述规则划分完毕后会得到新的一组更短的子序列,...

2019-03-16 14:47:41 24286 16

原创 Java基本数据类型

Java中的数据类型大致可分为两种:基本数据类型和引用数据类型。基本数据类型只包括:byte, short, int , long, float, double, char, boolean八种。其他的都是引用数据类型,尤其需要注意的是基本数据类型构成的数组也是引用数据类型。示例代码如下:public class MaxValue { static void transform1D...

2019-03-08 08:52:02 112

原创 服务器下MySQL数据库的定时备份与恢复

原文地址一、为什么要进行数据库备份在生产环境中数据库可能会遭遇各种各样的不测从而导致数据丢失,所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据。二、 实现功能描述把MySql数据库存放目录/var/lib/mysql下面的test数据库备份到/media/hsu/DA18EBFA09C1B27D/test_db_backup里面(这里数据库备份是放到了另外一个硬盘下面),...

2019-03-07 10:11:56 689 1

转载 字符编码笔记:ASCII,Unicode 和 UTF-8

该文章转自:字符编码笔记:ASCII,Unicode 和 UTF-8一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上个世...

2019-03-01 09:23:33 107

原创 使用位运算判断奇偶性

平时在做奇偶数判定时,往往采用对2取余看结果是0和1的方式来判断,但这种方法不仅慢,而且有局限性,因为奇偶数的定义是:整数中,能被2整除的数是偶数,不能被2整除的数是奇数整数不仅包括0和整数,而且也包括负整数,这种方式如果是根据取余结果来判断是否为0来判断偶数、奇数的话还是可以的,但是如果用1来判定的就糟了(因为负奇数对2取余结果为-1)。其实将整数用二进制表示后,可以很方便的进行奇偶性的...

2019-02-28 16:47:28 7379 3

原创 配置远程GPU服务器

实验室刚好有一台GPU服务器,假期想远程使用,就想能否试一下像Google的CoLab那样通过jupyter notebook进行访问,试了一下确实可以,这里记录一下过程。服务器和本地系统都是Ubuntu16.04一、Jupyter Notebook的配置Jupyter Notebook的安装有很多教程,这里只记录安装完之后如何进行配置使得通过客户端浏览器可以访问。为Jupyter No...

2019-02-12 10:17:21 4713

原创 PyTorch, GAN笔记

GAN的原理:生成器(Generator)想骗过判别器(Discriminator),但判别器因为有真实数据,所以可以将真实数据与生成器生成的数据区分开来,通过两者的博弈达到一个纳什均衡点。...

2019-02-11 11:01:32 284

原创 PyTorch-RNN笔记

时间序列采用两种数据表示方式:[word_num, batch, word_vec]和[batch, word_num, word_vec]PyTorch中Embedding有两种表示方式:word2vec和GloVe,而且已经提供了实现方式。3)PyTorch中使用nn.Embedding执行查表操作,使用PyTorch中面向自然语言处理的torchnlp包可以实现。使用GloVe是一...

2019-02-07 13:37:23 181

SSM开发Jar包,包括单元测试,JSON等,亲测可用

JavaEE中的SSM开发Jar包,包括单元测试,JSON等,亲测可用

2018-01-10

MyBatis逆向工程的Jar包

MyBatis逆向工程所需的Jar包

2017-07-31

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

TA关注的人

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