分类目录归档:technologys

10大基础算法

一:快速排序算法

 

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。

算法步骤:

1 从数列中挑出一个元素,称为 “基准”(pivot),

2 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

3 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去

点击查看原图


参考:

快速排序

https://zh.wikipedia.org...

继续阅读

发表在 technologys | 10大基础算法已关闭评论

Quartz Misfire处理规则

调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则

CronTrigger

withMisfireHandlingInstructionDoNothing
——不触发立即执行
——等待下次Cron触发频率到达时刻开始按照Cron频率依次执行

withMisfireHandlingInstructionIgnoreMisfires
——以错过的第一个频率时间立刻开始执行
——重做错过的所有频率周期后
——当下一次触发频率发生时间大于当前时间后,再按照正常的Cron频率依次执行

withMisfireHandlingInstructionFireAndProceed
——以当前时间为触发频率立刻触发一次执行
——然后按照Cron频率依次执行

SimpleTrigger

withMisfireHandlingInstructionFireNow
——以当前时间为触发频率立即触发执行
——执行至FinalTIme的剩余周期次数
——以调度或恢复调度的时刻为基准的周期频率,FinalTime根据剩余次数和当前时间计算得到
——调整后的FinalTime会略大于根据starttime计算的到的FinalTime值

withMisfireHandlingInstructionIgnor...

继续阅读

发表在 technologys | 标签为 , | Quartz Misfire处理规则已关闭评论

tools

Hex To ASCII Converter:    http://www.aooshi.org/tools/hex2ascii.html

继续阅读

发表在 technologys | tools已关闭评论

队列应用的一些场景

注:以下内容收集于网络:

主题订阅典型产品架构:

点击查看原图

队列模式经典产品架构:

点击查看原图

典型场景之抢红包:

点击查看原图

 

架构描述: 利用消息服务的队列模型,作为抽奖和发放红包高并发场景的缓冲。利用海量消息堆积能力和消息必达的特性。解决业务高并发下的超卖,漏单等常见问题

适用场景描述: 海量商品库数据离线计算后,结果数据准确无误的推送业务系统;抽奖出现促销活动场景,海量高并发订单下单支付,如何防止漏单和超卖

架构优势: 实现负责业务系统之间的解耦,并弹性可扩展

 

典型场景之定时任务

点击查看原图

架构描述: QUEUE作为订单到支付之间的核心处理模块,简化秒杀原本系统需要考虑峰值并发的技术架构。消息延时发送和VIP插队机制,能保障特定用户的特定业务规则

适用场景: 团购,秒杀,促销活动等业务

 

 

 

继续阅读

发表在 technologys | 队列应用的一些场景已关闭评论

unknown publisher

备忘:

应用程序提示:

unknown publisher

This file came from another computer and might be blocked to help protect this computer

 

单个文件: 右键 -> 解锁

多个文件:下载Microsoft提供的如下工具
Streams(http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx)
使用方法:
> streams.exe -s -d directory
如:
>streams.exe -s -d c:\temp

继续阅读

发表在 technologys | unknown publisher已关闭评论

Big Endian/Little Endian

Big Endian:最高字节在地址最低位,最低字节在地址最高位,依次排列。
Little Endian:最低字节在最低位,最高字节在最高位,反序排列。

当在本地主机上,无需注意机器用的是Big Endian还是Little
Endian。

但是网络上都是用的是Big Endian,需要进行一个转换,C#提供的BitConverter默认使用的Little
Endian,在需与网络通信时,反的字节序大有不便,特此提供一个可选Big Endian和Little Endian类方便转换。

为什么存在Little Endian?因为对于机器来说,Little Endian更有利于机器的运算。内存地址由低位到高位,在两个数相加运算,直接在高位添加进位数,不必移动内存地址

继续阅读

发表在 technologys | Big Endian/Little Endian已关闭评论

Unicode/UTF-8

=============很久以前保存的,别人写的但是很明了=============

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。

开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。
他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上0×10,
终端就换行,遇上0×07, 终端就向人们嘟嘟叫,例好遇上0x1b,
打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0×20以下的字节状态称为”控制码”。他们又把所有的空
格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。大家看到这样,都感觉
很好,于是大家都把这个方案叫做 ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用...

继续阅读

发表在 technologys | 标签为 , | Unicode/UTF-8已关闭评论

Crontab / Cron Expressions

cron表达式和Linux下的很类似,比如 "/5 * * ? * * *"  这样的7位表达式,最后一位非必选。

表达式从左到右,依此是秒、分、时、月第几天、月、周几、年。下面表格是要遵守的规范:

段名 允许的值 允许的特殊字符
Seconds 0-59 , - * /
Minutes 0-59 , - * /
Hours 0-23 , - * /
Day of month 1-31 , - * ? / L W
Month 1-12 or JAN-DEC , - * /
Day of week 1-7 or SUN-SAT , - * ? / L #
Year 空, 1970-2099 , - * /

  

特殊字符 解释
, 或的意思。例:分钟位 5,10  即第5分钟或10分都触发。 
/ a/b。 a:代表起始时间,b频率时间。 例; 分钟位  3/5,  从第三分钟开始,每5分钟执行一次。
* 频率。 即每一次波动。    例;分钟位 *  即表示每分钟 
- 区间。  例: 分钟位   5-10 即5到10分期间。 
? 任意值 。   即每一次波动。只能用在DayofMonth和DayofWeek,二者冲突。指定一个另一个一个要用?
L 表示最后。 只能用在DayofMonth和DayofWeek,4L即最后一个星期三
W 工作日。  表示最后。 只能用在DayofWeek
# 4#2。 只能用DayofMonth。 某月的第二个星期三  

 

实例介绍

”0 0 10,14,16 * * ?"    每天10点,14点,16点 触发。

"0 0/5 14,18 * * ?"    每天14点或18点中,每5分钟触发 。

"0 4/15 14-18 * * ?"       每天14点到18点期间,  从第四分钟触发,每15分钟一次。

"0 15 10 ? * 6L"        每月的最后一个星期五上午10:15触发。

 

 

继续阅读

发表在 technologys | 标签为 , | Crontab / Cron Expressions已关闭评论

推荐算法

基于用户的协同过滤推荐算法原理和实现:

http://www.cnblogs.com/technology/p/4467895.html

 

今日头条的个性化推荐算法

http://www.mahaixiang.cn/internet/1418.html

 

基于时间效应和用户兴趣变化的改进推荐算法

http://www.doc88.com/p-8949047664061.html

 

新闻个性化推荐基本算法

http://blog.csdn.net/hxxiaopei/article/details/47007011

 

推荐算法一些看法

http://www.zhihu.co...

继续阅读

发表在 technologys | 推荐算法已关闭评论

.NET RSACryptoServiceProvider PEM + DER Support

In .NET, RSACryptoServiceProvider greatly simplifies common tasks
associated with public/private keys, such as signing of data and
verifying a signature.
Unfortunately, there is only a single format (proprietary XML) available for importing and exporting public/private key data.
The
two widely spread formats for key exchange, PEM and DER are not
supported, which limits the usability of the class when working with
different kinds of public key APIs. 继续阅读

发表在 technologys | .NET RSACryptoServiceProvider PEM + DER Support已关闭评论

Expires,Cache-Control,Last-Modified,ETag

1.Expires(过期时间)HTTP头信息Expires(过期时间) 属性是HTTP控制缓存的基本手段,这个属性告诉缓存器:相关副本在多长时间内是新鲜的。过了这个时间,缓存器就会向源服务器发送请求,检查文档是否被修 改。几乎所有的缓存服务器都支持Expires(过期时间)属性;

大部分Web服务器支持你用几种方式设置Expires属性;一般 的:可以设计一个绝对时间间隔:基于客户最后查看副本的时间(最后访问时间)或者根据服务器上文档最后被修改的时间;

Expires

头信息:对于设置静态图片文件(例如导航栏和图片按钮)可缓存特别有用;因为这些图片修改很少,你可以给它们设置一个特别长的过期...

继续阅读

发表在 technologys | 标签为 , , , , | Expires,Cache-Control,Last-Modified,ETag已关闭评论

服务器名字指示SNI(Server Name Indication)

Server Name Indication是用来改善SSL(Secure Socket Layer)和TLS(Transport
Layer Security)的一项特性。它允许客户端在服务器端向其发送证书之前请求服务器的域名。这对于在虚拟主机模式使用TLS是必要的。

TLS背景

加密一个面向流的通讯会话最常用的方法之一就是使用TLS协议。比如,当用户在浏览器的地址栏里面输入https时就是在使用这个协议。

为了确认用户想要连接的站点就是浏览器实际连接到的站点,TLS使用包含站点域名的数字签名证书。客户端软件(比如浏览器)通常信任这个证书,如果这个证书是由其内置信任的认证机构签发的。
在TL...

继续阅读

发表在 technologys | 标签为 | 服务器名字指示SNI(Server Name Indication)已关闭评论

emoji

点击查看原图

一 参考资料

1 Emoji 全编码表:(我参考的这个)
  http://punchdrunker.github.com/iOSEmoji/table_html/flower.html
2 Emoji全编码表
  http://code.iamcal.com/php/emoji/

3 iOS5/4 Emoji  兼容性:
  http://stackoverflow.com/questions/7856775/how-to-convert-the-old-emoji-encoding-to-the-latest-encoding-in-io... 继续阅读

发表在 technologys | 标签为 | emoji已关闭评论

APNS

1、实现provider向APNS推送消息

在通过provider向APNS发送消息之前,我们首先需要了解需要发送的格式,APNS的信息结构包如下图:
点击查看原图

上图显示的这个消息体就是我们的服务器(Provider)发送给APNS服务器的消息结构,APNS验证这个结构正确并提取其中的信息后,再将消息推送到指定的设备。这个结构体包括七个部分:

第一个部分是命令标示符;

第二部分是一个表示这个通知的一个表示位,如果apns不能解释该通知,就返回一个错误包;

第三部分是一个以秒标识的时间值,它标识通知是否有效,标识的通知时间与UNIX之差与当前时间与UNIX时间之差,如果大于零,APNS最少通知一...

继续阅读

发表在 technologys | APNS已关闭评论

Sublime Text 3 安装Package Control

一、简单的安装方法

使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码:

 

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf),...

继续阅读

发表在 technologys | Sublime Text 3 安装Package Control已关闭评论