程序算法
文章平均质量分 60
joeywen
努力做正确的事
展开
-
如何在运行时加载C++函数和类
有些时候你想在运行时加载一个lib或者function or class,这种事情经常发生在你开发一个plugin或者module时遇到。在C语言里,你可以轻松的利用dlopen, dlsym, dlclose来做到,但是在C++的世界里却没那么简单了。本文简单介绍如何在运行时加载c++ function和class的简单实现方法。原创 2015-05-31 01:59:25 · 5402 阅读 · 2 评论 -
HashMap的工作原理
http://www.importnew.com/7099.htmlHashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现Ha转载 2013-11-21 15:23:56 · 1175 阅读 · 0 评论 -
Java解析HTML到org.w3c.dom.Document,再把Document输出到文件。
Document doc = parser.parseHtml(url, httpBody, entryPageUrl, docType); try { TransformerFactory transformerFactory = TransformerFactory .newInstance(); Transfo原创 2013-11-21 12:21:49 · 7128 阅读 · 3 评论 -
young氏矩阵
http://www.jobcoding.com/array/matrix/young-tableau-problem/如果一个矩阵每一行每一列都严格单调递增,我们称该矩阵为杨氏矩阵(Young Tableau)。对于杨氏矩阵(a[m][ n]),通常会涉及两个问题:(1) 怎样在杨氏矩阵中查找某个元素X?(2) 怎样在杨氏矩阵找第k大的数?2. 解决方案转载 2013-11-18 19:37:10 · 999 阅读 · 0 评论 -
Lucene之MaxScorer算法简介
简介 名叫“Lucene之MaxScorer算法分析”其实并不准确,因为有Stefan提交的MaxScorer代码尚未提交到Lucene,至今还在讨论中,具体见:https://issues.apache.org/jira/browse/LUCENE-4571,他索所要解决的问题就是Lucene在计算Top-k时效率慢的问题。目前Lucene对于MaxScore的计算,原创 2013-10-22 21:08:54 · 3521 阅读 · 0 评论 -
Skiplist实现——(C++版)
Comparator.h#ifndef __COMPARATOR_H__#define __COMPARATOR_H__#include #include templateclass Comparator : public std::binary_function {public: bool operator() (T t1, T t2) { retu原创 2013-10-17 23:04:57 · 2131 阅读 · 0 评论 -
代码之美中的二分搜索算法--Java版
很多人写二分搜索的时候,都会存在一些纰漏,前段时间看到代码之美里面有一段程序,总结了二分搜索package com.algorithms.binsearch;public class BinSearch { // expert experience, absolute right ! public static int find(String[] keys, String targe原创 2013-03-15 16:42:15 · 1246 阅读 · 0 评论 -
redis python client lrem函数的使用
以前从来没有用过redis,现在有个任务需要使用redis,要求是能够根据index来删除key所所对应的alue list里面的值def lrem(self, name, count, value): """ Remove the first ``count`` occurrences of elements equal to ``value``原创 2013-08-26 23:10:25 · 3336 阅读 · 0 评论 -
推荐算法之Slope One Java 及 PHP实现
这两个貌似都是原作者自己写的import java.util.*;/** * Daniel Lemire A simple implementation of the weighted slope one algorithm in * Java for item-based collaborative filtering. Assumes Java 1.5. * * See m转载 2013-08-14 10:08:53 · 2229 阅读 · 1 评论 -
自己实现substr函数——C语言
#include #include #include #include char* mysubstr(char* srcstr, int offset, int length) { assert(length > 0); assert(srcstr != NULL); int total_length = strlen(srcstr); int real原创 2013-11-21 18:57:23 · 9442 阅读 · 2 评论 -
Java面试的一些Tips网上资料个人收藏
1、HashMap和HashSet的区别 http://www.importnew.com/6931.html2、HashMap和HashTable的区别http://www.importnew.com/7010.html3、JAVA中重写equals()方法为什么要重写hashcode()方法?http://blog.csdn.net/methods2原创 2013-11-15 14:11:06 · 1011 阅读 · 0 评论 -
C++实现一个LRU Cache
#include #include #include using namespace std;using namespace stdext;templatestruct LRUCacheEntry{ K key; T data; LRUCacheEntry* prev; LRUCacheEntry* next;};templateclass LRUCache{原创 2013-11-29 18:01:32 · 960 阅读 · 0 评论 -
对编程的一些建议
对编程的一些建议良好的编程风格代码风格很关键,代码风格之于项目就像衣服之于人一样,不能乱,不能邋遢,给人的第一印象就要好,这样别人也会多看一会儿,良好的代码编程风格也能避免一定的bug,比如很多人养成了断言的习惯,就会在某些地方打上断言,这样就会在工程初期fast-fail,有助于工程的最终结果。 强烈不建议copy别人的代码,特别是网上的一些人开发的小功能的代码。程序猿初期,老师或者leader原创 2015-05-27 13:52:34 · 1060 阅读 · 0 评论 -
短文本合并重复(去重)的简单有效做法
转自:http://www.cnblogs.com/zhengyun_ustc/archive/2012/06/12/sim.html短文本合并重复(去重)的简单有效做法2012/6/12不大合适的SimHash前些日子看了Charikar SimHash的介绍《Simhash算法原理和网页查重应用》,核心思想是用一个f位的hash值来表示文件的特征值,然后使用ha转载 2014-03-13 17:22:23 · 1889 阅读 · 0 评论 -
编程之美系列之二——寻找出现频率超过一半的数
问题描述: 现在有一数组存放int型整数,数字有重复,且有一数字出现的频率超过了50%,请找出这个数字。 补充:主要考虑数据量很大的情况。 问题求解:分析: 最直接的方法就是对数组中所有的数字排序,然后再扫描一遍,统计各个数字出现的次数,如果某个数字出现的次数超过一半,则输出这个数字。显然这个算法的时间复杂度是O(N转载 2014-02-24 10:30:54 · 801 阅读 · 0 评论 -
程序算法代码片段
1、判断二叉树是否相同bool is_same(Node *a, Node *b) { return a?(b && b->val == a->val && is_same(a->left, b->left) && is_same(a->right, b->right)) : (b == 0);}2、(排列判断)整数数组,返回从1开始第一个不在数组中得整数?把A[i]换到A[A[i原创 2014-02-16 16:51:45 · 979 阅读 · 0 评论 -
shell风格的python pipeline
源码来自 CoolShell.cn 函数式编程的评论里面。在此收藏一下class Pipe(object): def __init__(self, func): self.func = func def __ror__(self, other): def generator(): for obj in other:转载 2014-01-22 13:54:41 · 1223 阅读 · 0 评论 -
大数据处理方法总结(转载)
转自:http://www.cnblogs.com/jishu/archive/2011/04/27/2030921.html大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大转载 2013-12-21 22:32:35 · 1442 阅读 · 0 评论 -
Java Tip 26: How to improve Java's I/O performance-如何提高java I/O性能
Java I/O性能由于JDK1.0.2java.io的设计与实现,现在已经成为了很多Java 应用的瓶颈。一个关键问题就是buffer——大多数的java.io类都不是真正的buffered。实际上,真正有buffer的类是BufferedInputStream和BufferedOutputStream,但是他们也仅仅提供了有限的方法。例如,在大多数的文件读写操作相关的应用中,你需要一行一行的解翻译 2014-01-02 21:46:42 · 1294 阅读 · 0 评论 -
C语言实现atoi和atof函数
#include #include #include #include #include int ato_i(char *p) { assert(p); int k = 0; int sign = 1; while (*p) { if (isdigit(*p)) { k = k * 10 + *p - '0';原创 2013-12-04 20:25:38 · 1553 阅读 · 1 评论 -
外部排序技术之多路归并
文章转自 http://blog.chinaunix.net/uid-25324849-id-2182916.html重点:败者树的创建调整函数1.外部排序概述外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成转载 2013-07-28 03:13:18 · 1012 阅读 · 0 评论 -
SkipList实现——Java版
package test;class SkipNode> { public final E value; public final SkipNode[] forward; // array of pinter @SuppressWarnings("unchecked") public SkipNode(int level, E value) { forward = n转载 2013-08-26 09:35:03 · 1073 阅读 · 0 评论 -
随机选择算法---Randomized Selection Algorithm
Introduction我们已经见过很多关于顺序统计的信息。在不排序的情况下,在一个无序数组中找到第K小的数,你将会怎么做呐?找最大值一般的做法就是定义一个最大值变量,来遍历数组。但是如果要找的是第二大的数值又如何做呐?你是不是需要两个变量?如果是找第100小的数值呐?解决上述问题的方法就是接下来我即将介绍的随机选择算法——Randomized Selection Al原创 2013-07-24 11:14:58 · 7563 阅读 · 1 评论 -
计算方法之用雅克比法求线性方程组
/************************************** 用雅克比法求线性方程组* * 5*x1 + 2*x2 + 1*x3 = -12*{-1*x1 + 4*x2 + 2*x3 = 20* 2*x1 - 3*x2 +10*x3 = 3***************************************/#include#include#in原创 2013-06-11 12:59:13 · 1554 阅读 · 0 评论 -
计算方法之二分法求方程根
/************************* 用二分法求方程* f(x)=x^3-2x-5=0* 在区间[2,3]内的根*************************/#include#include#includefloat f(float x) { float a; a = x * x * x - 2 * x - 5; return a;}int mai原创 2013-06-11 12:48:19 · 1885 阅读 · 0 评论 -
计算方法之用变步长梯形求积公式求定积分
/*** 用变步长梯形求积公式求定积分* 1* ∫ (x/(4+x^2))dx* 0*/ #include #include #include #include #include #define epsilon 0.00001float f(float x){ return(x/(4+x*x));}float computeT(原创 2013-06-11 13:02:53 · 8619 阅读 · 0 评论 -
计算方法之牛顿迭代法求方程根
/************************************** 用牛顿迭代法求非线性方程* f(x)=x-e^(-x)=0* 在区间[0,1]的根,取ξ=10^(-5),x0 = 0.5**************************************/#include#include#include#define maxrept 1000float原创 2013-06-11 12:54:04 · 2164 阅读 · 0 评论 -
PageRank算法概述
读书报告,转载请标明出处http://blog.csdn.net/wzhg0508/article/details/9068849原创 2013-06-09 23:25:01 · 1287 阅读 · 0 评论 -
分享一个libevent server——cliserver
/* * An event-driven server that handles simple commands from multiple clients. * If no command is received for 60 seconds, the client will be disconnected. * * Note that evbuffer_readline() is a转载 2013-03-17 12:05:46 · 1345 阅读 · 0 评论 -
HelloWorldForU ---九度Online Judge
题目描述:Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, "helloworld" can be printed as:h de ll rlowoThat is,原创 2013-03-15 13:08:11 · 639 阅读 · 0 评论 -
一些用位运算解决的方法
所有程序均来自于网上。1、判断奇偶bool isEven(int n) { if (n & 1) { return true; } else return false;}2、改变符号int changeSign(int n) { return ~n + 1;}3、取绝对值int abs(int n) { return (n ^ (原创 2013-03-15 16:35:38 · 704 阅读 · 0 评论 -
计算方法之用追赶法求线性方程组
/************************************** 用追赶法求线性方程组* * |- -| |- -| |- -|* | 2 -1 | | x1 | | 3 |* |-1 3 -2 | | x2 | | 1 |* | -2 4 -2 |*| x3 | = | 0 |*原创 2013-06-11 12:57:52 · 3070 阅读 · 0 评论 -
计算方法之改进的欧拉法计算常微分方程
/************************ *改进的欧拉法计算常微分方程* y'=(1/x)*y-(1/x)*y^2, 1<=x<=1.5*{* y(1) = 0.5** 取步长h=0.1即n=5*************************/#include#include#includefloat f(float x, float y) { ret原创 2013-06-11 13:01:55 · 3470 阅读 · 0 评论 -
计算方法之迭代法求方程根
/************************* 用迭代法求方程* f(x)=e^(-x)-x+1=0* 的根*************************/#include#include#includefloat fa(float);float dd(float);int main() { float x0; printf("input data x0 = "原创 2013-06-11 12:51:48 · 1779 阅读 · 0 评论 -
一个简单的Trie树实现
header file#ifndef TRIE_H_INCLUDED#define TRIE_H_INCLUDED#include#includetypedef struct trie{ int words; int prefixes; struct trie *edges[26];} trie;trie * initialize(trie *nod原创 2013-07-19 15:46:04 · 695 阅读 · 0 评论 -
自动机编程
摘自 维基自动机编程自动机编程(英语:Automata-based programming)是编程范型中的一种,是指程序或其中的部份是以有限状态机(FSM)为模型的程序,有些程序则会用其他型式(也更复杂)的自动机为其模型。有限状态机编程(英语:FSM-based programming)大致上等同于自动机编程,但有限状态机编程专指以有限状态机为模型的程序。自动机编程有以原创 2013-07-02 19:23:30 · 1276 阅读 · 0 评论 -
Python打印log,包括行号,路径,方法名,文件
logger.py 文件 #!/usr/bin/python # coding: utf-8 import logging import logging.handlers from logging import * from datetime import * logger = logging.getLogger() logger.setLevel(logging.原创 2013-07-18 11:09:32 · 22049 阅读 · 0 评论 -
自定义Java Annotations实例以及用Java Reflection来解析自定义的Annotation
转自 http://www.journaldev.com/721/java-annotations-tutorial-with-custom-annotation-example-and-parsing-using-reflectionJava程序员都知道,在Java世界里到处可见@Override, @Deprecated等等这些Annotations, 这些代码不仅不影响Java代码编翻译 2013-07-16 18:17:32 · 1022 阅读 · 0 评论 -
关于Lock-free Hash Table的一些链接资料
链接http://preshing.com/20130505/introducing-mintomic-a-small-portable-lock-free-apihttp://preshing.com/20130605/the-worlds-simplest-lock-free-hash-tablehttp://preshing.com/20130529/a-lock-fre原创 2013-06-08 09:09:30 · 1057 阅读 · 0 评论 -
Lock-free 多核数据结构设计
lock-free思想背景基本的多核数据结构设计是非常简单的:只需要在并发处理同一数据结构时,加上locks就可以了。这种思想在并发数不是很多的情况下工作的很好。因为这时的资源争用开销并不是很大。随着多核机器逐渐的变大变多,例如成百上千的核,这种加lock机制对此应用的不是很好:如果你只有几个锁,锁的争夺成为巨大的;如果你有许多细粒度的锁,锁的开销开始增加。所以对于大型多核机器来说翻译 2013-06-09 00:28:39 · 1269 阅读 · 0 评论