`
xglv2013
  • 浏览: 38072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
最近在生产上遇见一个分页查询特别慢的问题,数据量大概有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. ...

HashMap java实现

    博客分类:
  • Java
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 ...
Global site tag (gtag.js) - Google Analytics