Michael Hsu

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

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

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

2019-07-30 22:24:43

阅读数 12

评论数 0

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

将c3p0换成Druid数据库连接池后,启动运行时报错: java.lang.ClassNotFoundException: com.alibaba.druid.support.http.WebStatFilter 查看确实将Druid导入到lib目录下对应的配置文件内容也设置了,可是还是有问题,...

2019-06-30 22:20:15

阅读数 149

评论数 0

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

一、代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式...

2019-06-27 15:40:37

阅读数 19

评论数 0

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

一、二分查找的返回值 对有序数组应用二分查找是经典的查找算法,当查找的元素在数组中存在时,返回的是该元素在数组中的下标;如果查找的元素在数组中不存在时,此时的low下标其实是插入点(insertion point),即将查找元素插入该位置时,数组仍将保持有序,但有个问题,如果是返回0的话,被查找元...

2019-06-03 14:25:39

阅读数 24

评论数 0

Java使用Scanner对象的输入问题

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

2019-05-19 17:02:18

阅读数 50

评论数 0

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

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

2019-04-27 15:40:22

阅读数 112

评论数 0

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

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

2019-04-23 17:13:27

阅读数 58

评论数 0

Java输入问题

因为某些原因,需要用Java进行oj刷题,当然要首先解决一下输入问题啊! Java中调用Scanner对象进行输入,可以根据数据类型完成指定类型的输入,这里主要讨论一下用于字符串输入的.next()方法和.nextLine()方法。 next() next()一定要读取到有效字符后才可以结束输入...

2019-04-21 14:54:10

阅读数 32

评论数 0

Java多线程编程

一、Java线程API Java标准库类java.lang.Thread就是Java平台对线程的实现。Thread类或其子类的一个实例就是一个线程。 每个线程都有其要执行的任务。线程的任务处理逻辑可以在Thread类的run实例方法中直接实现或通过该方法进行调用,因此run方法相当于线程的任务处理...

2019-04-19 09:58:48

阅读数 60

评论数 0

Java中的Math.round

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

2019-04-17 11:04:00

阅读数 12

评论数 0

Java变量初始化

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

2019-04-16 17:19:27

阅读数 19

评论数 0

Java中的goto

一、 Java中的goto关键字        在C/C++中,goto常被用于跳出多重循环。但goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 got...

2019-04-16 16:09:55

阅读数 235

评论数 0

堆排序

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

2019-04-02 14:31:40

阅读数 306

评论数 0

Redisson

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

2019-04-01 17:03:06

阅读数 382

评论数 0

配置高可用集群

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

2019-04-01 15:41:07

阅读数 15

评论数 0

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

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

2019-04-01 11:28:28

阅读数 63

评论数 0

Redis持久化

一、Redis持久化的原因 由于Redis是在内存中存储数据的,所以当服务器重启时,所有数据都将丢失。为了保证数据的安全,Redis还提供了将数据持久化到磁盘中的机制。Redis中共有两种数据持久化类型:RDB和AOF。RDB可以看作是Redis在某一个时间点上的快照(snapshot),非常适合...

2019-03-31 21:58:30

阅读数 41

评论数 0

Redis复制机制

一、Redis的复制机制 在生产环境中,单个数据库实例常常存在诸如系统崩溃、网络连接闪断或突然断电等单点故障问题。与其他大多数数据库系统一样,Redis也提供了一个复制机制,使得数据能够从一个Redis服务器(master, 主实例)复制到一个或多个其他的Redis服务器(slave,从实例)。 ...

2019-03-31 17:16:49

阅读数 11

评论数 0

Redis开发

一、概述 Redis与大多数关系数据库不同,除了微调一些配置参数以增强Redis的处理能力以外,在Redis的服务端几乎不能进行任何其他的优化。在应用程序设计的最开始,使用恰当的数据类型和API,是充分利用Redis的高性能特性并同时避免其短处的关键。 二、Redis常见应用场景 会话存储 在现...

2019-03-30 17:19:35

阅读数 12

评论数 0

使用发布订阅PubSub

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

2019-03-30 10:48:24

阅读数 45

评论数 0

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