- 浏览: 38072 次
- 性别:
- 来自: 北京
最新评论
-
xglv2013:
liaokangli 写道linkedhashmap 可以实现 ...
双端链表实现LRUCache -
liaokangli:
linkedhashmap 可以实现
双端链表实现LRUCache -
kesun_shy:
收藏。。过两天就试一下。
Spring MVC实现的RESTful webservice服务器并用Python调用API -
qindongliang1922:
不错
Spring MVC实现的RESTful webservice服务器并用Python调用API -
xglv2013:
bewithme 写道实际中有啥用呢个人感觉就是帮我们直观的看 ...
Java实现的矩阵链乘法动态规划算法Swing动态演示器
文章列表
最近在生产上遇见一个分页查询特别慢的问题,数据量大概有200万的样子,翻到最后一页性能很低,差不多得有4秒的样子才能出来整个页面,需要进行查询优化。
第一步,找到执行慢的sql,如下:
SELECT
shotel_id as hotelId,
mroom_type_id as mroomTypeId,
available_date as availableDate,
result_status as resultStatus,
create_time as createTime,
operate_time as operateTime
FROM ...
一个很有意思的问题,一个社区,所有的房子构成一棵二叉树,每个房子里有一定价值的财物,这棵二叉树有一个根节点root。如果相邻的两座房子同时被进入,就会触发警报。一个小偷,最初只能访问root节点,并可以通过二叉树的边访问房子(注:访问不意味着进入),请问不触发警报的前提下他能偷到的财物的最大价值是多少?
以下面这棵二叉树为例,最多能偷走3+3+1=7的财物
3
/ \
2 3
\ \
3 1
分析:
这个问题乍一看上去可能没什么思路,但是如果是用递归,可以很优雅的解决这个问题,这需要读者对递归有比较深刻的理解。下面给出 ...
接上一篇博客的内容,给出利用已知的隐马尔可夫模型和观察状态序列,输出最可能的隐藏状态序列的算法,该算法由著名信息学大师维特比提出,所以叫做维特比算法(viterbi algorithm),这其实是一个解码的过程。维特比算法依然利用动态规划,时间复杂度跟前向算法相同,最大的区别有两个:1.求和变为取最大值,即计算问题变为最优化问题 2.增加了回溯,利用一个前驱数组,记录了每条最优(也就是概率最大)的子隐藏状态序列的每个节点的前驱。java程序如下:
package hmm;
import java.util.HashMap;
import java.util.Map;
...
隐马尔可夫模型(hidden markov model 简称hmm)广泛应用于语音识别,机器翻译等领域。
隐马尔可夫模型的具体定义,请参考著名论文《A tutorial on Hidden Markov Models and selected applications in speech recognition》,在阅读以下内容之前,建议读者阅读这篇论文的第I II III 节,理论性的东西在此不做赘述。
hmm通常解决以下三类问题:
1.给定一个hmm和观察序列,判断生成这个观察序列的可能性;
2.给定一个hmm和观察序列,给出最可能生成这个观察序列的隐藏序列;
3.给定一个观察序列,训 ...
protobuf是google的文件序列化协议,最近在项目中广为使用,unix操作系统里面配置方法如下:
1.从网上任何一个途径下载protobuf-2.6.1.tar.gz
2.运行tar xvf protobuf-2.6.1.tar.gz
3.运行cd protobuf-2.6.1
4.运行./configure CC=clang CXX=clang++ CXXFLAGS='-std=c++11 -stdlib=libc++ -O3 -g' LDFLAGS='-stdlib=libc++' LIBS="-lc++ -lc++abi”
5.运行make -j 4
6.运行sudo ...
Memcached的实现核心就是一个LRU算法,它使用双端链表实现。
下面也是一个简单的用双端链表实现的单例LRU Cache,大家可以根据自己的需要添加一些方法。
package lruCache;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
public class LRUCache {
private static Map<Object, DoubleLinkedListNode> map = ...
package permStr;
public class PermStr
{
public static final int SWITCH = 1; //是否去除重复的开关, 1表示去重, 0表示不去重, 默认为1
private static boolean need_swap(StringBuilder str, int start, int i)
{
if(SWITCH == 0)
return true;
else
{
for(int j = start; j <= i - 1; j++)
{
if(str. ...
1.hashMap类
package hashMap;
import java.util.LinkedList;
public class LvHashMap<K,V> {
LinkedList[] buckets;//桶数组, 元素类型是链表
int bucketCount;
LvHashMap(int bucketCount)
{
this.bucketCount = bucketCount;
buckets = new LinkedList[bucketCount];
for(int i = 0; i <= bucketCou ...
Coach店一般只允许保持不超过某个特定数量的顾客在店里,其余的顾客要在店外等候,直到店里有顾客出来才允许进入,Java中的Semaphore信号量的用法和这个场景非常相似,下面使用Semaphore仿真顾客逛Coach店的场景。
(1)顾客类 ...
下面使用spring MVC+jpa实现一个RESTful webservice服务器,然后用python调用API实现资源的转移,数据库使用mysql,本文仅仅是为了起到一个演示的作用,所以无论是源代码还是配置文件,都只写了有关怎样配置restful服务的部分,关于其他spring的配置问题请参阅相关文档。有什么不当之处,还请不吝赐教!
第一步,在mysql中建立一个名为spitter的数据库,使用如下的建表语句建立一个用户表spitter,一个发文表spittle:
CREATE TABLE `spitter` (
`id` int(11) default N ...
目前,Python在大数据处理领域和自动化测试开发方面的应用逐渐火热起来,这是一篇我以前写的实际项目中应用Python调用主机的API的文章
1 什么是zManager 以及其REST API 接口
zEnterprise System由三大部分组成:IBM zEnterprise 大型机、IBM zEnterprise BladeCenter Extension (zBX)刀片扩展机柜和IBM zEnterprise Unified Resource Manager (Unified Resource Manager,zManager)管理固件,zManager能够管理跨越System Z ...
这里使用java socket和concurrent包里的ThreadPoolExecutor实现了一个小型的HTTP服务器,管理入站请求,代码如下:
package jHttpNew;
import java.net.*;
import java.io.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class JHTTP extend ...
众所周知,spring的bean在spring上下文的范围内默认是单例的,但通过将bean标签的scope属性显式的标记为prototype,可以使其变为非单例的。
下面就写几行程序来验证一下这个结论,程序用到一个调用者接口Referer和被调用者接口Referee:
package refer;
public interface Referer
{
void order();
}
package refer;
public interface Referee
{
void speak();
}
ChenReferer实现了调用者接口,guangRe ...
矩阵链乘法问题,是动态规划的一个经典问题。目的是使一个相乘的矩阵序列所用的乘法次数最少。这里用Java Swing实现了矩阵链乘法的动态演示。用到两个二维数组,m和s。其中m[i][j]的值表示第i个矩阵和第j个矩阵之间的最优的加括号的方案。s[i][j]的值表示第i个矩阵和第j个矩阵最外层的两部分在何处断开。关于矩阵、矩阵相容性和矩阵链乘法算法的详细介绍请查阅《算法导论》第15章《动态规划》,在此不做赘述。
算法运行之前:
算法运行中(其中绿色方块表示已经计算出的值,黄色方块表示正在计算的值,蓝色方块表示当前计算的值所依靠的值):
算法运行结束:
代码:
im ...
输入第一个序列inSequence,是车厢入栈顺序
输入第二个序列outSequence,是车厢出栈顺序
算法判断以inSequence入栈的车厢可否以outSequence的顺序出栈
若可以,则返回出入栈动作的顺序并打印YES
若不可以,则返回出入栈动作的顺序直到失败的车厢并打印NO
算法的图示:
带括号的数字代表步数,红叉代表出栈,入栈序列的指针需要左右移动故采用双向链表,出栈序列的指针只向右移动故采用单向链表
package train;
public interface AddDelete
{
void addNode(int addNumber);
void d ...