文档章节

小算法记录

zhuqianli
 zhuqianli
发布于 2017/09/11 20:20
字数 457
阅读 1
收藏 0
点赞 0
评论 0

write a program that input a positive integer, find out all the prime factors of it. the prime factors of 72 is 2,3 Example 72 =2^3* 3^2 181944 =2^3 *3^2*7*19^2 the prime factors of181944 is 2,3,7,19

public class PrimeAlgorithm {
    public static List factor(long g) {
        List result = new ArrayList(16);
        for (long i = 2; g != 1; i++)
            if (g % i == 0) {
                g /= i;
                result.add(i);
                i--; // i--使得i的值不变,即能把含有的所有的当前质因数, 如 2,除尽后, 再去除下一个指数, 如 3
            }

        return result;
    }

    public static void main(String[] args) {
        List factor = PrimeAlgorithm.factor(2132123);
        System.out.println(factor);
    }
}

 

一段生成分布式全局唯一ID的代码

https://gist.github.com/longkerdandy/a296b7a084fd191af6e4176eed168812


public class IdGenerator {

  // Modeled after base64 web-safe chars, but ordered by ASCII.
  private final static String ID_CHARS = "-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz";

  // Pseudorandom number generator
  private final Random random;

  // Timestamp of last push, used to prevent local collisions if you push twice in one ms.
  private long lastTimestamp = 0L;

  // We generate 72-bits of randomness which get turned into 12 characters and appended to the
  // timestamp to prevent collisions with other clients.  We store the last characters we
  // generated because in the event of a collision, we'll use those same characters except
  // "incremented" by one.
  private int[] lastRandChars = new int[12];

  /**
   * Create a new IdGenerator with specific Random instance
   *
   * @param random Random, SecureRandom or ThreadLocalRandom
   */
  public IdGenerator(Random random) {
    this.random = random;
  }

  /**
   * Generate next chronological 20-character unique id
   *
   * @return New ID
   */
  public String nextId() {
    long now = System.currentTimeMillis();
    char[] result = new char[20];

    // random chars
    int[] randChars = compareAndUpdate(now);
    for (int i = 0; i < 12; i++) {
      result[i + 8] = ID_CHARS.charAt(randChars[i]);
    }

    // timestamp chars
    for (int i = 7; i >= 0; i--) {
      final Long module = now % 64;
      result[i] = ID_CHARS.charAt(module.intValue());
      now = (long) Math.floor(now / 64);
    }
    if (now != 0) {
      throw new AssertionError("We should have converted the entire timestamp.");
    }

    return new String(result);
  }

  /**
   * Compare the timestamp and update last record state. To be thread safe, all the compare and
   * update operation are included in this method
   *
   * @param timestamp Timestamp
   * @return Random Chars should be used
   */
  private synchronized int[] compareAndUpdate(long timestamp) {
    if (timestamp != this.lastTimestamp) {
      // If the timestamp has changed since last request, create a new random number.
      this.lastTimestamp = timestamp;
      for (int i = 0; i < 12; i++) {
        this.lastRandChars[i] = this.random.nextInt(64);
      }
    } else {
      // If the timestamp hasn't changed since last request, use the same random number, except incremented by 1.
      int i;
      for (i = 11; i >= 0 && lastRandChars[i] == 63; i--) {
        this.lastRandChars[i] = 0;
      }
      if (i < 0) {
        i = 11;
      }
      this.lastRandChars[i]++;
    }
    // return a new array
    return this.lastRandChars.clone();
  }
}

 

© 著作权归作者所有

共有 人打赏支持
zhuqianli
粉丝 5
博文 91
码字总数 56989
作品 0
杭州
程序员
MySQL的JOIN(二):JOIN原理

表连接算法 Nested Loop Join(NLJ)算法: 首先介绍一种基础算法:NLJ,嵌套循环算法。循环外层是驱动表,循坏内层是被驱动表。驱动表会驱动被驱动表进行连接操作。首先驱动表找到第一条记录...

文文1 ⋅ 04/01 ⋅ 0

以太坊的 DPoS 算法实现 - Go Ethereum Meitu

Go Ethereum 项目是美图技术团队在以太坊上实现的 DPoS 算法,是以太坊协议的 Go 语言实现,目前尚处于实验阶段。 查看官方的实现版本>>>https://www.oschina.net/p/go-ethereum 基于 Ethere...

匿名 ⋅ 06/15 ⋅ 0

简谈常用算法

生活木有捷径 写在前面 算法,对于iOS开发者来说,既熟悉又陌生。首先,在iOS开发过程中,对算法要求不高,用到算法时候也是少之甚少,除非是一些接近底层开发需要用到一些算法。但是,算法作...

Jack_lin ⋅ 2017/03/18 ⋅ 0

页面置换算法 LRU & LFU 算法

页面置换算法介绍 评价一个页面替换算法好坏的标准主要有两个,一是命中率要高,二是算法要容易实现。要提高一个页面替换算法的命中率,首先要使这种算法能正确反映程序的局部性,其次是这种...

满小茂 ⋅ 2016/01/15 ⋅ 0

致敬中国互联网三十周年之宿华

摘要 「算法有没有价值观」这件事,他已经想了 30 年。 题记:致敬中国互联网三十周年,所有的伟大源于一个勇敢的开始。 正如凯迪拉克所代表的精神那样:所有的伟大,源于一个勇敢的开始。 ...

极客公园 ⋅ 2017/12/21 ⋅ 0

冒泡排序(Bubble Sort)

1、定义 冒泡排序(Bubble Sort)是一种交换排序。 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 2、基本思想 两两比较待排序记录的关键字,发现两个记录的次序相反时即进行...

野渡书生 ⋅ 2016/04/29 ⋅ 0

k-means算法 python实现

k-means算法 算法描述 需要事先指定簇的个数k,算法开始随机选择k个记录点作为中心点,然后遍历整个数据集的各条记录,将每条记录归到离它最近的中心点所在的簇中,之后以各个簇的记录的均值...

zxszxs ⋅ 05/28 ⋅ 0

SSL握手过程

一、SSL握手有三个目的: 1. 客户端与服务器需要就一组用于保护数据的算法达成一致; 2. 它们需要确立一组由那些算法所使用的加密密钥; 3. 握手还可以选择对客户端进行认证。 二、SSL握手过...

Cnlouds ⋅ 2013/09/28 ⋅ 0

Java数据结构与算法(第一章综述)

数据结构和算法能起到什么作用? 数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排。数据结果包括数组、链表、栈、二叉树、哈希表等等。算法对这些结构中的数据进行各种处理,例...

小风89 ⋅ 2015/10/21 ⋅ 0

嵌入式数据库系统Berkeley DB使用范例

前言 UNIX/LINUX平台下的数据库种类非常多,参考资料1中列举了其中的大部分。通常,我们在设计UNIX/LINUX平台下的应用软件时,如果数据种类繁多,数据与数据之间关系比较复杂,就会选用一些大...

西昆仑 ⋅ 2012/05/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 5分钟前 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 9分钟前 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 22分钟前 ⋅ 0

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 41分钟前 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 57分钟前 ⋅ 0

如何利用Spring Cloud构建起自我修复型分布式系统

利用Netflix所打造的组件及各类大家熟知的工具,我们完全可以顺利应对由微服务以及分布式计算所带来的技术挑战。 在过去一年当中,微服务已经成为软件架构领域一个炙手可热的新名词,而且我们...

harries ⋅ 今天 ⋅ 0

临近实习前的感想

再过两星期就要开始新的一段实习了,想想去年的这个时候也在实习,心中不免思绪万千,也一直想写对2017做个总结,但一直迟迟没有下笔。 2017年的春节,我就开始准备开学后找份实习。那时候就...

无精疯 ⋅ 今天 ⋅ 0

Spring AOP(面向切面编程)

Spring AOP概念: Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。通常情况下,AOP把项目中需要在多处用到的功能,比如日志、安全和事物等集中到一个类中处理,而...

霍淇滨 ⋅ 今天 ⋅ 0

人工智能、机器学习、数据挖掘以及数据分析有什么联系?

人工智能是目前炙手可热的一个领域,所有的互联网公司以及各路大迦们纷纷表态人工智能将是下一个时代的革命性技术,可与互联网、移动互联网时代的变更相媲美;AlphaGo在围棋领域战胜人类最顶...

董黎明 ⋅ 今天 ⋅ 0

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部