• 社交网站站内排名与社区演化

    社交网站站内排名一直是一个热门的话题,一套好的排名机制有助于将社区中精华的内容(如博客、帖子、评论等)优先推送给网站用户,从而有效促进社区的良性发展。本文将以Reddit知乎这两个热门社交网站为例,分析其站内排名算法的优缺点,并探讨其对整个社区内社团形成以及同质化的作用和影响。

    知乎排名算法

    知乎是一个基于问答的社交网站,以“创造有价值的内容”和“保持友善和尊重”为核心原则:

    创造有价值的内容:知乎的初衷是帮助人们可以更好的分享彼此的知识、经验和见解,发表有用、有帮助、有质量的内容,不仅可以帮助他人,也会让自己获益。

    保持友善和尊重:不要攻击、故意贬低用户或者他写的内容,尊重不同的观点,不恶意揣测动机。

  • 2015-04

  • Java 多线程

    随着多核芯片逐渐成为主流,大多数软件开发人员不可避免地需要了解并行编程的知识。而同时,主流程序语言正在将越来越多的并行特性合并到标准库或者语言本身之中。我们可以看到,JDK 在这方面同样走在潮流的前方。从JDK 5到JDK 7,越来越多的线程相关的新API加入到了标准库中,为不同场景下对线程实现与调度提供了完善的支持。我们可以充分利用这些类库,来提高开发效率,改善程序性能。

    Java中使用线程

    Java的多线程基于以下两个重要的机制:

    1. 父线程结束,如果子线程正在运行,子线程不会跟着结束。
    2. 每个线程拥有一个线程栈,会维护引用,用于GC。
  • 约数个数加倍

    最近在Project Euler上看到一道很有意思的题目,题目大意是找到一个最小的正整数,这个正整数有 $2^{500500}$ 个约数。将原题摘引如下:

    The number of divisors of 120 is 16.

    In fact 120 is the smallest number having 16 divisors.

    Find the smallest number with 2500500 divisors.

    Give your answer modulo 500500507.

  • 欧拉路径

    总结下欧拉路径相关的算法。

    相关的定义

    1. 欧拉环:图中经过每条边一次且仅一次的环;
    2. 欧拉路径:图中经过每条边一次且仅一次的路径;
    3. 欧拉图:有至少一个欧拉环的图;
    4. 半欧拉图:没有欧拉环,但有至少一条欧拉路径的图。
  • 社区发现与K-means聚类

    将机器学习中的概率算法模型引入社区发现和网络图划分算法的研究–以K-means算法为例。

    摘要

    社区发现(Community Detection)作为社会网络科学的经典问题之一,长期以来一直受到领域内研究者的广泛关注,近二十多年来,社区发现以及社交网络图的划分算法一直是定义期刊、会议的热点之一。本文旨在阐述如何将机器学习的概率算法模型引入社区发现和网络图划分的研究中来,通过合理利用成熟的机器学习技术来改善传统算法面对超大规模社交网络时在效率、性能和准确性上的不足。

  • C/C++中的格式化IO

    C/C++中的格式化IO操作(输入、输出)使用非常灵活,但C/C++语言标准中复杂的关于格式化IO的定义也很让人头疼。接下来,将系统地讨论C/C++定义的格式化字符串,以及在使用格式化输出时容易出现错误的地方。

    格式化字符串的定义

    格式化参数以一个字符串的形式定义了输入/输出的格式,例如类型、宽度、进制,等等,标准格式化字符串的定义:

    %[flags][width][.precision][length]specifier
    
  • 2015-03

  • Scala 入门笔记

    Hello World in Scala

    学习Scala的语法,还是从Hello World开始吧:

    object HelloWorld {
      def main(args: Array[String]) {
        print("Hello World, Scala!")
      }
    }
    
  • Java对象初始化机制

    在Java里,对象的初始化工作主要由构造函数完成,除此之外,静态初始化和实例初始化会完成另外一部分初始化工作。

    构造函数初始化

    类的构造函数承担类的实例化工作,Java中,每次使用new来创建一个新的对象时,都会调用对象的对应参数类型的构造函数。

    Java中,构造函数的定义如下:

    A constructor is used in the creation of an object that is an instance of a class.

    文档

  • Java继承中的小细节

    Java继承机制是其Object-Oriented特性之一,使用继承extends时有很多需要注意的容易出错的小细节。例如,构造函数的调用顺序和规则、

    构造函数

    首先从构造函数说起。

    对于一个类,如果没有显式定义构造函数,那么便有一个无参的默认构造函数。但是,一定自己定义了构造函数(无论有没有参数),就都只能使用自己定义的构造函数。

    继承时,如果子类没有显式定义构造函数,那么便会去寻找与调用的参数匹配的父类的构造函数。一旦子类定义了一个构造函数,无论参数类型,new构造子类对象时都不会直接匹配父类的同类型参数构造函数。如果不存在调用参数类型的构造函数,编译时会出现错误。需要注意的是,就算子类中没有定义构造函数,子类也没有默认的无参构造函数。

  • Mathematica 求根与求最值

    Mathematica具有强大的数值计算系统,可以用来进行求解方程的根、对函数求最值等数值计算操作。与求根和求最值的相关操作如下:


Subscribe via RSS