• 关于 生成短网址 的搜索结果

回答

Re想在家里搭建一个网站需要备案吗 域名..要是在国处.就好操作一点了..如果在国内注册的.有些域名商.不给解析.怎么办???没办法..只能备案了..   如果真的不想备案..可以去找个 韩国,台湾.日本的..   香港,,现在不推荐了..  香港.听传言.马上就要备案了. ------------------------- Re想在家里搭建一个网站需要备案吗      如果真的不想备案..还有一个办法吧.. 用微博 生成一个短网址,,   直接用短地址访问.然后跳转到IP上... 这个就不能解析了..域名也省了.

ip 2019-12-01 23:34:55 0 浏览量 回答数 0

问题

如何在线生成自己的短网址,可自定义域名 可统计点击数

元芳啊 2019-12-01 21:51:52 1625 浏览量 回答数 0

回答

回 1楼(kideny) 的帖子 看到我上传的图片的左上角的阅读量没有?有3408了,竟然没有业绩,我郁闷不? 我把以前的帮阿里云做的推广链接换成现在 新的阿里云的好长的吓人的团购链接,我也很郁闷的是因为以前的推广链接网址很短,很方便,但是以前竟然那么高的阅读量却没有业绩,难道不郁闷? ------------------------- 回 5楼(xuanmin) 的帖子 您用的什么网站程序,竟然可以加 流量 ?看来您也真是太聪明了吧?我用的是phpwind程序,根本无法加流量!您用过phpwind程序吗?告诉我使用phpwind的程序如何在帖子的阅读量上加流量?我是菜鸟,不懂! ------------------------- Re:Re把阿里云推广链接放达合一网daheyi.com后的故事【有图有真相】 引用第16楼lujjjh于2012-08-10 10:34发表的 Re把阿里云推广链接放达合一网daheyi.com后的故事【有图有真相】 : 现在各种短链接生成的应用,随便转下就好了嘛。 http://www.dwz.cn/2FtLa 上面只是测试下,点进去是我的推广。 这个没有研究过,还有,转化成短链接会不会变成别人的网站了? ------------------------- Re:Re把阿里云推广链接放达合一网daheyi.com后的故事【有图有真相】 引用第16楼lujjjh于2012-08-10 10:34发表的 Re把阿里云推广链接放达合一网daheyi.com后的故事【有图有真相】 : 现在各种短链接生成的应用,随便转下就好了嘛。 http://www.dwz.cn/2FtLa 上面只是测试下,点进去是我的推广。 你这个是怎么实现的?教我,具体点,谢谢 ------------------------- 引用第7楼ap6214f2r于2012-08-09 16:22发表的  : 楼主,没地方可以看到推介的成果的。 就是,如果能看到自己推介的成就,该有多好,做起来也有精神,这个阿里云应该是实现这个功能才对! ------------------------- Re:回 15楼(xuanmin) 的帖子 你到我的站里注册,然后发一个关于你网站的宣传的链接的帖子,然后你自己刷新下试试看,看看清楚每次流量是增加一次呢,还是增加好多次,或者你不用注册,就直接进入这推广阿里云的帖子 http://www.daheyi.com/read.php?tid-1580.html ,你刷新下看看到底每次这个页面增加多少?看看耍小聪明没有? ------------------------- Re:回 19楼(k8888f) 的帖子 引用第22楼sjaelien于2012-08-10 19:15发表的 回 19楼(k8888f) 的帖子 : 你直接访问 http://www.dwz.cn ,把你的推广链接复制粘贴进去然后点击生成不就可以了。   我的意思是前缀能不能换成我的 www.daheyi.com 而不是 dwz.cn  能不能呢?教我哦,谢谢

k8888f 2019-12-01 23:15:11 0 浏览量 回答数 0

新用户福利专场,云服务器ECS低至102元/年

新用户专场,1核2G 102元/年起,2核4G 699.8元/年起

回答

现在我们来分析一下 Github 上 beyondfengyu 大佬基于 Java 实现的 SnowFlake,完整代码如下: /** * twitter的snowflake算法 -- java实现 * * @author beyond * @date 2016/11/26 */ public class SnowFlake { /** * 起始的时间戳 */ private final static long START_STMP = 1480166465631L; /** * 每一部分占用的位数 */ private final static long SEQUENCE_BIT = 12; //序列号占用的位数 private final static long MACHINE_BIT = 5; //机器标识占用的位数 private final static long DATACENTER_BIT = 5;//数据中心占用的位数 /** * 每一部分的最大值 */ private final static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT); private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT); private final static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT); /** * 每一部分向左的位移 */ private final static long MACHINE_LEFT = SEQUENCE_BIT; private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT; private final static long TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT; private long datacenterId; //数据中心 private long machineId; //机器标识 private long sequence = 0L; //序列号 private long lastStmp = -1L;//上一次时间戳 public SnowFlake(long datacenterId, long machineId) { if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) { throw new IllegalArgumentException( "datacenterId can't be greater than MAX_DATACENTER_NUM or less than 0"); } if (machineId > MAX_MACHINE_NUM || machineId < 0) { throw new IllegalArgumentException( "machineId can't be greater than MAX_MACHINE_NUM or less than 0"); } this.datacenterId = datacenterId; this.machineId = machineId; } /** * 产生下一个ID * * @return */ public synchronized long nextId() { long currStmp = getNewstmp(); if (currStmp < lastStmp) { throw new RuntimeException("Clock moved backwards. Refusing to generate id"); } if (currStmp == lastStmp) { //相同毫秒内,序列号自增 sequence = (sequence + 1) & MAX_SEQUENCE; //同一毫秒的序列数已经达到最大 if (sequence == 0L) { currStmp = getNextMill(); } } else { //不同毫秒内,序列号置为0 sequence = 0L; } lastStmp = currStmp; return (currStmp - START_STMP) << TIMESTMP_LEFT //时间戳部分 | datacenterId << DATACENTER_LEFT //数据中心部分 | machineId << MACHINE_LEFT //机器标识部分 | sequence; //序列号部分 } private long getNextMill() { long mill = getNewstmp(); while (mill <= lastStmp) { mill = getNewstmp(); } return mill; } private long getNewstmp() { return System.currentTimeMillis(); } public static void main(String[] args) { SnowFlake snowFlake = new SnowFlake(2, 3); for (int i = 0; i < (1 << 12); i++) { System.out.println(snowFlake.nextId()); } } } 在详细分析之前,我们先来回顾一下 Snowflake 算法的 ID 构成图: ID 位分配 首位不用,默认为 0。41bit(第2-42位)时间戳,是相对时间戳,通过当前时间戳减去一个固定的历史时间戳生成。在 SnowFlake 类定义了一个 long 类型的静态变量 START_STMP,它的值为 1480166465631L: /** * 起始的时间戳:Sat Nov 26 2016 21:21:05 GMT+0800 (中国标准时间) */ private final static long START_STMP = 1480166465631L; 接着继续定义三个 long 类型的静态变量,来表示序列号和工作机器 ID 的占用位数: /** * 每一部分占用的位数 */ private final static long SEQUENCE_BIT = 12; //序列号占用的位数 private final static long MACHINE_BIT = 5; //机器标识占用的位数 private final static long DATACENTER_BIT = 5;//数据中心占用的位数 此外还定义了每一部分的最大值,具体如下: /** * 每一部分的最大值 */ private final static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT); // 31 private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT); // 31 private final static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT); // 4095 构造函数 SnowFlake 类的构造函数,该构造函数含有 datacenterId 和 machineId 两个参数,它们分别表示数据中心 id 和机器标识: private long datacenterId; //数据中心 private long machineId; //机器标识 public SnowFlake(long datacenterId, long machineId) { if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) { throw new IllegalArgumentException( "datacenterId can't be greater than MAX_DATACENTER_NUM or less than 0"); } if (machineId > MAX_MACHINE_NUM || machineId < 0) { throw new IllegalArgumentException( "machineId can't be greater than MAX_MACHINE_NUM or less than 0"); } this.datacenterId = datacenterId; this.machineId = machineId; } 生成 id 在 SnowFlake 类的实现中,在创建完 SnowFlake 对象之后,可以通过调用 nextId 方法来获取 ID。有的小伙伴可能对位运算不太清楚,这里先简单介绍一下 nextId 方法中,所用到的位运算知识。 按位与运算符(&) 参加运算的两个数据,按二进制位进行 “与” 运算,它的运算规则: 0&0=0; 0&1=0; 1&0=0; 1&1=1; 即两位同时为 1,结果才为 1,否则为 0。 清零:如果想将一个单元清零,只需要将它与一个各位都为零的数值相与即可。取一个数指定位的值:若需获取某个数指定位的值,只需把该数与指定位为 1,其余位为 0 所对应的数相与即可。 按位或运算(|) 参加运算的两个对象,按二进制位进行 “或” 运算,它的运算规则: 0|0=0; 0|1=1; 1|0=1; 1|1=1; 即仅当两位都为 0 时,结果才为 0。 左移运算符 << 将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补 0)。若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以 2。 在了解完位运算的相关知识后,我们再来看一下 nextId 方法的具体实现: /** * 产生下一个ID * * @return */ public synchronized long nextId() { // 获取当前的毫秒数:System.currentTimeMillis(),该方法产生一个当前的毫秒,这个毫秒 // 其实就是自1970年1月1日0时起的毫秒数。 long currStmp = getNewstmp(); // private long lastTimeStamp = -1L; 表示上一次时间戳 // 检测是否出现时钟回拨 if (currStmp < lastStmp) { throw new RuntimeException("Clock moved backwards. Refusing to generate id"); } // 相同毫秒内,序列号自增 if (currStmp == lastStmp) { // private long sequence = 0L; 序列号 // MAX_SEQUENCE = 4095 111111111111 // MAX_SEQUENCE + 1 = 4096 1000000000000 sequence = (sequence + 1) & MAX_SEQUENCE; // 同一毫秒的序列数已经达到最大 if (sequence == 0L) { // 阻塞到下一个毫秒,获得新的时间戳 currStmp = getNextMill(); } } else { //不同毫秒内,序列号置为0 sequence = 0L; } lastStmp = currStmp; // MACHINE_LEFT = SEQUENCE_BIT; -> 12 // DATA_CENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT; -> 17 // TIMESTAMP_LEFT = DATA_CENTER_LEFT + DATA_CENTER_BIT; -> 22 return (currStmp - START_STMP) << TIMESTMP_LEFT //时间戳部分 | datacenterId << DATACENTER_LEFT //数据中心部分 | machineId << MACHINE_LEFT //机器标识部分 | sequence; //序列号部分 } 现在我们来看一下使用方式: public static void main(String[] args) { SnowFlake snowFlake = new SnowFlake(2, 3); for (int i = 0; i < (1 << 12); i++) { System.out.println(snowFlake.nextId()); } } 现在我们已经可以利用 SnowFlake 对象生成唯一 ID 了,那这个唯一 ID 有什么用呢?这里举一个简单的应用场景,即基于 SnowFlake 的短网址生成器,其主要思路是使用 SnowFlake 算法生成一个整数,然后对该整数进行 62 进制编码最终生成一个短地址 URL。对短网址生成器感兴趣的小伙伴,可以参考 徐刘根 大佬在码云上分享的工具类。 最后我们来简单总结一下,本文主要介绍了什么是 Snowflake(雪花)算法、Snowflake 算法 ID 构成图及其优缺点,最后详细分析了 Github 上 beyondfengyu 大佬基于 Java 实现的 SnowFlake。在实际项目中,建议大家选用基于 Snowflake 算法成熟的开源项目,如百度的 UidGenerator 或美团的 Leaf。

kun坤 2020-04-24 11:01:10 0 浏览量 回答数 0

回答

很难实现,固定位数代表他的可能性就那么多,但是你的源的位数不固定,就代表可能性也是不固定的 ######除非你的源的位数一直都笔你加密出来的位数小######其实就是加密淘宝的图片地址,比如这样的:http://g.search.alicdn.com/img/bao/uploaded/i4/i2/19548019265873186/T1NBAWXaRXXXXXXXXX_!!0-item_pic.jpg_210x210.jpg######神都不可能办得到的事.######回复 @小耶果 : 呵呵,我就是想搞个能加密解密的,因为我网站的图片是实时调用其他网站的,目前有近千万张,每次更新还在不断增加,就想找个一个很好的解决方案,你看下这个帖子:http://www.oschina.net/question/1256206_125220######回复 @小耶果 : 他打破了能量守恒定理######回复 @鹏鹏鸟 : 如果LZ的意思是一个函数f(x)=r,x是任意长度,任意内容的待处理数据,r是输出结果,我们暂不管r的长度,只有确定对于任意输入内容的x,得到的r始终是固定长度的结果.且存在-f(r)=x,当你设计出这个f时并调试成功,那么此时人类,包括一切生物,地球都会灰飞烟灭,宇宙开始塌陷.因为你动摇了这个世界存在的基础规则之一,整个世界已经没有存在的依据了.######原来我的想法太苛刻了###### 引用来自“小耶果”的答案 神都不可能办得到的事. 大神都不可能办得到的事. ###### 这个需求有点奇怪,可能你想的解决方案未必就是真正需要的 一个变通的方案就是获得用户数据后,你存入数据库,并创建一个KEY,加盐也好,不加盐也好,使用SHA1或者MD5或者其它哈希函数生成。并把这个KEY传回给用户,下次你就使用这个KEY来读取数据库的信息了。当然本质上这和数字主键没多大区别,只是用户不太有希望从KEY重猜测别的KEY的值 ######回复 @西瓜回路遮断器 : 好的 谢谢了######回复 @鹏鹏鸟 : 我想我应该已经把思路描述的很清楚了。至于你补充上去的这个需求的话,Base64就已经做得足够好了,还担心什么######能给我个思路吗?这篇帖子的提问里我详细说明了:http://www.oschina.net/question/1256206_125220,谢谢了。######是,主要是为了解决海量图片的问题,因为我网站的图片都是在访问时实时调用其他大型网站的,想把原始地址的url加密后放在自己的图片url中,然后在用户访问的时候能还原。###### 用短网址吧...源码在此 $host = "126.am/"; //网易短网址 $url="http://www.5umao.com/imgs/c-50103018-03defd4c00bc654561c9b5e4f3bc0150.jpg"; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,"http://".$host."short.action"); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); $data=array('json'=>json_encode(array('urls'=>array(array("url"=>$url))))); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); $r=curl_exec($ch); curl_close($ch); $r=json_decode($r,true); $img=str_replace($host,"",$r['shortUrls'][0]['url']); //得到图片地址 //echo $img; //输出字符串 hUVOa4,该字符串可以作为图片文件名 //读取并输出图片 header("Content-type:image/jpeg"); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,"http://".$host."$img"); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); echo curl_exec($ch); curl_close($ch); 这个应该符合你的需求了... ######不错###### 直接XOR~

kun坤 2020-06-09 22:21:13 0 浏览量 回答数 0

回答

1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python](Welcome to Problem Solving with Algorithms and Data Structures) [该网址链接可能会比较慢]时写下的阅读记录,当然,也结合了部分[算法导论](Introduction to Algorithms)中的内容,此外还有不少wikipedia上的内容,所以内容比较多,可能有点杂乱。这部分主要是介绍了如何使用Python实现常用的一些数据结构,例如堆栈、队列、二叉树等等,也有Python内置的数据结构性能的分析,同时还包括了搜索和排序(在算法设计篇中会有更加详细的介绍)的简单总结。每篇文章都有实现代码,内容比较多,简单算法一般是大致介绍下思想及算法流程,复杂的算法会给出各种图示和代码实现详细介绍。 **这一部分是下面算法设计篇的前篇,如果数据结构还不错的可以直接看算法设计篇,遇到问题可以回来看数据结构篇中的某个具体内容充电一下,我个人认为直接读算法设计篇比较好,因为大家时间也都比较宝贵,如果你会来读这些文章说明你肯定有一定基础了,后面的算法设计篇中更多的是思想,这里更多的是代码而已,嘿嘿。** (1)[搜索](Python Data Structures) 简述顺序查找和二分查找,详述Hash查找(hash函数的设计以及如何避免冲突) (2)[排序](Python Data Structures) 简述各种排序算法的思想以及它的图示和实现 (3)[数据结构](Python Data Structures) 简述Python内置数据结构的性能分析和实现常用的数据结构:栈、队列和二叉堆 (4)[树总结](Python Data Structures) 简述二叉树,详述二叉搜索树和AVL树的思想和实现 2.Python算法设计篇 算法设计篇主要是阅读[Python Algorithms: Mastering Basic Algorithms in the Python Language](Python Algorithms: Mastering Basic Algorithms in the Python Language)[**点击链接可进入Springer免费下载原书电子版**]之后写下的读书总结,原书大部分内容结合了经典书籍[算法导论](Introduction to Algorithms),内容更加细致深入,主要是介绍了各种常用的算法设计思想,以及如何使用Python高效巧妙地实现这些算法,这里有别于前面的数据结构篇,部分算法例如排序就不会详细介绍它的实现细节,而是侧重于它内在的算法思想。这部分使用了一些与数据结构有关的第三方模块,因为这篇的重点是算法的思想以及实现,所以并没有去重新实现每个数据结构,但是在介绍算法的同时会分析Python内置数据结构以及第三方数据结构模块的优缺点,也就意味着该篇比前面都要难不少,但是我想我的介绍应该还算简单明了,因为我用的都是比较朴实的语言,并没有像算法导论一样列出一堆性质和定理,主要是对着某个问题一步步思考然后算法就出来了,嘿嘿,除此之外,里面还有很多关于python开发的内容,精彩真的不容错过。 这里每篇文章都有实现代码,但是代码我一般都不会分析,更多地是分析算法思想,所以内容都比较多,即便如此也没有包括原书对应章节的所有内容,因为内容实在太丰富了,所以我只是选择经典的算法实例来介绍算法核心思想,除此之外,还有不少内容是原书没有的,部分是来自算法导论,部分是来自我自己的感悟,嘻嘻。该篇对于大神们来说是小菜,请一笑而过,对于菜鸟们来说可能有点难啃,所以最适合的是和我水平差不多的,对各个算法都有所了解但是理解还不算深刻的半桶水的程序猿,嘿嘿。 本篇的顺序按照原书[Python Algorithms: Mastering Basic Algorithms in the Python Language](Python Algorithms: Mastering Basic Algorithms in the Python Language)的章节来安排的(章节标题部分相同部分不同哟),为了节省时间以及保持原著的原滋原味,部分内容(一般是比较难以翻译和理解的内容)直接摘自原著英文内容。 **1.你也许觉得很多内容你都知道嘛,没有看的必要,其实如果是我的话我也会这么想,但是如果只是归纳一个算法有哪些步骤,那这个总结也就没有意义了,我觉得这个总结的亮点在于想办法说清楚一个算法是怎么想出来的,有哪些需要注意的,如何进行优化的等等,采用问答式的方式让读者和我一起来想出某个问题的解,每篇文章之后都还有一两道小题练手哟** **2.你也许还会说算法导论不是既权威又全面么,基本上每个算法都还有详细的证明呢,读算法导论岂不更好些,当然,你如果想读算法导论的话我不拦着你,读完了感觉自己整个人都不好了别怪小弟没有提醒你哟,嘻嘻嘻,左一个性质右一个定理实在不适合算法科普的啦,没有多少人能够坚持读完的。但是码农与蛇的故事内容不多哟,呵呵呵** **3.如果你细读本系列的话我保证你会有不少收获的,需要看算法导论哪个部分的地方我会给出提示的,嘿嘿。温馨提示,前面三节内容都是介绍基础知识,所以精彩内容从第4节开始哟,么么哒 O(∩_∩)O~** (1)[Python Algorithms - C1 Introduction](Python Algorithms) 本节主要是对原书中的内容做些简单介绍,说明算法的重要性以及各章节的内容概要。 (2)[Python Algorithms - C2 The basics](Python Algorithms) **本节主要介绍了三个内容:算法渐近运行时间的表示方法、六条算法性能评估的经验以及Python中树和图的实现方式。** (3)[Python Algorithms - C3 Counting 101](Python Algorithms) 原书主要介绍了一些基础数学,例如排列组合以及递归循环等,但是本节只重点介绍计算算法的运行时间的三种方法 (4)[Python Algorithms - C4 Induction and Recursion and Reduction](Python Algorithms) **本节主要介绍算法设计的三个核心知识:Induction(推导)、Recursion(递归)和Reduction(规约),这是原书的重点和难点部分** (5)[Python Algorithms - C5 Traversal](Python Algorithms) **本节主要介绍图的遍历算法BFS和DFS,以及对拓扑排序的另一种解法和寻找图的(强)连通分量的算法** (6)[Python Algorithms - C6 Divide and Combine and Conquer](Python Algorithms) **本节主要介绍分治法策略,提到了树形问题的平衡性以及基于分治策略的排序算法** (7)[Python Algorithms - C7 Greedy](Python Algorithms) **本节主要通过几个例子来介绍贪心策略,主要包括背包问题、哈夫曼编码和最小生成树等等** (8)[Python Algorithms - C8 Dynamic Programming](Python Algorithms) **本节主要结合一些经典的动规问题介绍动态规划的备忘录法和迭代法这两种实现方式,并对这两种方式进行对比** (9)[Python Algorithms - C9 Graphs](Python Algorithms) **本节主要介绍图算法中的各种最短路径算法,从不同的角度揭示它们的内核以及它们的异同**

一键天涯 2019-12-02 01:23:49 0 浏览量 回答数 0

问题

【javascript学习全家桶】934道javascript热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:22 6202 浏览量 回答数 1

问题

#职场 8期 程序员的付费课程怎么赚钱

游客ih62co2qqq5ww 2020-05-06 14:34:31 12 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SSL证书 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 2020中国云原生 阿里云云栖号