欢迎来到gulucn的博客


  • 首页

  • 分类

  • 归档

  • 标签

[转]颜色迁移之四——模糊聚类(FCM)算法

发表于 2015年02月12日   |   分类于 数据挖掘 , 聚类   |  

  伴随着模糊集理论的形成、发展和深化,RusPini率先提出模糊划分的概念。以此为起点和基础,模糊聚类理论和方法迅速蓬勃发展起来。针对不同的应用,人们提出了很多模糊聚类算法,比较典型的有基于相似性关系和模糊关系的方法、基于模糊等价关系的传递闭包方法、基于模糊图论的最大支撑树方法,以及基于数据集的凸分解、动态规划和难以辨别关系等方法。然而,上述方法均不能适用于大数据量的情况,难以满足实时性要求较高的场合,因此实际应用并不广泛。

  模糊聚类分析按照聚类过程的不同大致可以分为三大类:

(1)基于模糊关系的分类法:其中包括谱系聚类算法(又称系统聚类法)、基于等价关系的聚类算法、基于相似关系的聚类算法和图论聚类算法等等。它是研究比较早的一种方
法,但是由于它不能适用于大数据量的情况,所以在实际中的应用并不广泛。

(2)基于目标函数的模糊聚类算法:该方法把聚类分析归结成一个带约束的非线性规划问题,通过优化求解获得数据集的最优模糊划分和聚类。该方法设计简单、解决问题的范
围广,还可以转化为优化问题而借助经典数学的非线性规划理论求解,并易于计算机实现。因此,随着计算机的应用和发展,基于目标函数的模糊聚类算法成为新的研究热点。

(3)基于神经网络的模糊聚类算法:它是兴起比较晚的一种算法,主要是采用竞争学习算法来指导网络的聚类过程。

阅读全文 »

[转]一个“蝇量级” C 语言协程库

发表于 2015年01月10日   |  

(感谢网友 @我的上铺叫路遥 投稿)

协程(coroutine)顾名思义就是“协作的例程”(co-operative routines)。跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧。实际上协程的概念比线程还要早,按照 Knuth 的说法“子例程是协程的特例”,一个子例程就是一次子函数调用,那么实际上协程就是类函数一样的程序组件,你可以在一个线程里面轻松创建数十万个协程,就像数十万次函数调用一样。只不过子例程只有一个调用入口起始点,返回之后就结束了,而协程入口既可以是起始点,又可以从上一个返回点继续执行,也就是说协程之间可以通过
yield 方式转移执行权,对称(symmetric)、平级地调用对方,而不是像例程那样上下级调用关系。当然 Knuth 的“特例”指的是协程也可以模拟例程那样实现上下级调用关系,这就叫非对称协程(asymmetric coroutines)。

阅读全文 »

[原]使用pythn脚本获取服务器ssl证书的Common Name

发表于 2014年06月2日   |   分类于 ssl   |  

1.使用python自带的ssl库来获取证书Common Name

由于自带的ssl库功能比较弱,如果指定ca证书时,在获取对应的证书数据时,一般会返回空,因此需要先准备好ca证书,可以使用http://curl.haxx.se/docs/caextract.html上面的

cacert.pem

使用以下脚本来获取CommanName

import socket
import ssl

ip='65.55.85.12'
s = socket.socket()
s.settimeout(10)
c = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED, ca_certs='cacert.pem')
c.settimeout(10)
print( "try connect to %s" % (ip))
c.connect((ip, 443))
cert = c.getpeercert()
print cert
如果可以正常连接,结果应该类似下面的结果
try connect to 65.55.85.12
{'notAfter': 'May 22 23:59:59 2015 GMT', 'subjectAltName': (('DNS', 'mail.live.com'), ('DNS', 'm.mail.live.com'), ('DNS', 'contacts.live.com'), ('DNS', 'hotmail.co.jp'), ('DNS', 'hotmail.co.uk'), ('DNS', 'hotmail.com'), ('DNS', 'hotmail.live.com'), ('DNS', 'hotmail.msn.com'), ('DNS', 'people.live.com'), ('DNS', 'www.hotmail.com'), ('DNS', 'www.hotmail.msn.com'), ('DNS', 'www.mail.live.com'), ('DNS', 'home.live.com'), ('DNS', 'www.live.com'), ('DNS', 'dvt.mail.live.com'), ('DNS', 'snt002.afx.ms'), ('DNS', 'snt002.mail.live.com'), ('DNS', 'snt110.afx.ms'), ('DNS', 'snt110.mail.live.com'), ('DNS', 'snt111.afx.ms'), ('DNS', 'snt111.mail.live.com'), ('DNS', 'snt112.afx.ms'), ('DNS', 'snt112.mail.live.com'), ('DNS', 'snt113.afx.ms'), ('DNS', 'snt113.mail.live.com'), ('DNS', 'snt114.afx.ms'), ('DNS', 'snt114.mail.live.com'), ('DNS', 'snt115.afx.ms'), ('DNS', 'snt115.mail.live.com'), ('DNS', 'snt116.afx.ms'), ('DNS', 'snt116.mail.live.com'), ('DNS', 'snt117.afx.ms'), ('DNS', 'snt117.mail.live.com'), ('DNS', 'snt118.afx.ms'), ('DNS', 'snt118.mail.live.com'), ('DNS', 'snt120.afx.ms'), ('DNS', 'snt120.mail.live.com'), ('DNS', 'snt121.afx.ms'), ('DNS', 'snt121.mail.live.com'), ('DNS', 'snt122.afx.ms'), ('DNS', 'snt122.mail.live.com'), ('DNS', 'snt123.afx.ms'), ('DNS', 'snt123.mail.live.com'), ('DNS', 'snt124.afx.ms'), ('DNS', 'snt124.mail.live.com'), ('DNS', 'snt125.afx.ms'), ('DNS', 'snt125.mail.live.com'), ('DNS', 'snt126.afx.ms'), ('DNS', 'snt126.mail.live.com'), ('DNS', 'snt127.afx.ms'), ('DNS', 'snt127.mail.live.com'), ('DNS', 'snt128.afx.ms'), ('DNS', 'snt128.mail.live.com'), ('DNS', 'snt129.afx.ms'), ('DNS', 'snt129.mail.live.com'), ('DNS', 'snt130.afx.ms'), ('DNS', 'snt130.mail.live.com'), ('DNS', 'snt131.afx.ms'), ('DNS', 'snt131.mail.live.com'), ('DNS', 'snt132.afx.ms'), ('DNS', 'snt132.mail.live.com'), ('DNS', 'snt133.afx.ms'), ('DNS', 'snt133.mail.live.com'), ('DNS', 'snt134.afx.ms'), ('DNS', 'snt134.mail.live.com'), ('DNS', 'snt135.afx.ms'), ('DNS', 'snt135.mail.live.com'), ('DNS', 'snt136.afx.ms'), ('DNS', 'snt136.mail.live.com'), ('DNS', 'snt137.afx.ms'), ('DNS', 'snt137.mail.live.com'), ('DNS', 'snt138.afx.ms'), ('DNS', 'snt138.mail.live.com'), ('DNS', 'snt139.afx.ms'), ('DNS', 'snt139.mail.live.com'), ('DNS', 'snt140.afx.ms'), ('DNS', 'snt140.mail.live.com'), ('DNS', 'snt141.afx.ms'), ('DNS', 'snt141.mail.live.com'), ('DNS', 'snt142.afx.ms'), ('DNS', 'snt142.mail.live.com'), ('DNS', 'snt143.afx.ms'), ('DNS', 'snt143.mail.live.com'), ('DNS', 'snt144.afx.ms'), ('DNS', 'snt144.mail.live.com'), ('DNS', 'snt145.afx.ms'), ('DNS', 'snt145.mail.live.com'), ('DNS', 'snt146.afx.ms'), ('DNS', 'snt146.mail.live.com'), ('DNS', 'snt147.afx.ms'), ('DNS', 'snt147.mail.live.com'), ('DNS', 'snt148.afx.ms'), ('DNS', 'snt148.mail.live.com')), 'subject': ((('1.3.6.1.4.1.311.60.2.1.3', u'US'),), (('1.3.6.1.4.1.311.60.2.1.2', u'Washington'),), (('businessCategory', u'Private Organization'),), (('serialNumber', u'600413485'),), (('countryName', u'US'),), (('postalCode', u'98052'),), (('stateOrProvinceName', u'Washington'),), (('localityName', u'Redmond'),), (('streetAddress', u'1 Microsoft Way'),), (('organizationName', u'Microsoft Corporation'),), (('organizationalUnitName', u'Outlook Kahuna SNT-DC A May2013'),), (('commonName', u'mail.live.com'),))}

其中subject里面的commonName就是需要获取的结果

阅读全文 »

[原]使用openssl工具来验证服务器证书以及握手过程

发表于 2014年06月2日   |   分类于 ssl   |  

背景

由于最近openssl的心脏问题,更换了1.0.1g的ssl库,工作上需要使用这个库连接服务器,但是发现更换库之后,对于某些域名的ssl握手就会出现失败的情况。为了找出失败的原因,最后在openssl自带的工具发现可以跟踪握手情况

跟踪网站的ssl端口

1.跟踪不带任何协议参数握手情况

openssl s_client -connect gmail.com:443
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=mail.google.com
   i:/C=US/O=Google Inc/CN=Google Internet Authority G2
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEeDCCA2CgAwIBAgIILdHLb3yg3v8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE
BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl
cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyNjU3WhcNMTQwODIwMDAwMDAw
WjBpMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN
TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEYMBYGA1UEAwwPbWFp
bC5nb29nbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs7il
DvSrk0jlEY0HSNv+7V1LUhUD9r7RUHsFHpkYo5Z+9vD9PJvYuHVbkUPHXMC0XLid
7R5esEf7l1Cn29nBO8swVCgOcd2bn2rVG6N/N0YfBL5Hk11NNrl4BtX9E6TpD1Xp
pUQumwL10Zqk4MF4zhj7VQMeg9eeS4FBWPz7LShcdJt6jfgC2yQ9dk3M/2OVztPt
oOwkGDpmSxzXrFBglJmwjnOKER9GiZHmbp4OjcQQ+0vdoRbOTSrgyIfS22idWLei
1ZLwfqHlcNn+OhLBzT4pTAjFOZBw5ez2+QqxiufY8qiuzT+KOIlKXQn/Nj/YFk2p
TYvJEBolZ6pEVnwm5QIDAQABo4IBQjCCAT4wHQYDVR0lBBYwFAYIKwYBBQUHAwEG
CCsGAQUFBwMCMBoGA1UdEQQTMBGCD21haWwuZ29vZ2xlLmNvbTBoBggrBgEFBQcB
AQRcMFowKwYIKwYBBQUHMAKGH2h0dHA6Ly9wa2kuZ29vZ2xlLmNvbS9HSUFHMi5j
cnQwKwYIKwYBBQUHMAGGH2h0dHA6Ly9jbGllbnRzMS5nb29nbGUuY29tL29jc3Aw
HQYDVR0OBBYEFJ+aSQdtCR/3p4hwPsDDYjPn6HJTMAwGA1UdEwEB/wQCMAAwHwYD
VR0jBBgwFoAUSt0GFhu89mi1dvWBtrtiGrpagS8wFwYDVR0gBBAwDjAMBgorBgEE
AdZ5AgUBMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9wa2kuZ29vZ2xlLmNvbS9H
SUFHMi5jcmwwDQYJKoZIhvcNAQEFBQADggEBAF5N1Dj+Y9k4MjADPH0qEebzd/8+
b2SlsYjGJAn3gsdrkIB+HFwQJ4XjsS6FL8lsJhIqMWO4uw5Kt+hwLc8b6uuWTcx8
Mx6O56YLivdFJ62ki0vxAwpDemjP7ktXwsW4vnjAyUYgO1CGxUlSy0PWYK5lmYJ8
qXwfVKLBRZIXc/6cFYX5QiNZExQeFXzHogGgHtKwRU+yQSnd6mUSBmbCuEydR0hI
ESmCgnYHK48QRxYKOlenuXPeJoMAsuks0dqtAzYFZa0H/jwXSByNQAkwyRmOP62j
s1JIVXxc8V+zEf5Kp655M2VOZ6ihv89XAI5ADDNXFttfbfBVTvDYceb3nyQ=
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=mail.google.com
issuer=/C=US/O=Google Inc/CN=Google Internet Authority G2
---
No client certificate CA names sent
---
SSL handshake has read 3741 bytes and written 443 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: E91F0144E74B2A6E363BBEF57E9366D8B8EEFA6BE0C45BF97079786D08B4DDC4
    Session-ID-ctx: 
    Master-Key: 7751AAA26F0E30F4A4C01468912E41A412684F9D2C422EF15D105375591358B5239045BF361CBB55810F38AE1560AC75
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - 92 80 c7 a1 08 8f d6 9f-2f bd 71 73 f7 4f 51 59   ......../.qs.OQY
    0010 - 41 8a 03 5d f3 3e 87 df-5b 5e d3 3b 0d 1a eb 65   A..].>..[^.;...e
    0020 - 5d de a9 36 24 6e 9a 69-b3 37 87 35 c9 bb 3e a6   ]..6$n.i.7.5..>.
    0030 - 63 30 c1 19 10 d5 d9 0d-5c d0 9c 37 6e 47 dc a3   c0......\..7nG..
    0040 - 48 40 ce 13 92 8c e9 c5-ed 4b 5a f0 a6 30 fe cc   [email protected]..
    0050 - b0 b5 23 ac 6c 76 63 63-54 d1 ff 76 e6 28 3d 31   ..#.lvccT..v.(=1
    0060 - 7c 08 3b fe f2 bd 93 28-76 6d 01 ba 3a d4 e7 3f   |.;....(vm..:..?
    0070 - 82 bd 31 cf 4d 3b a6 50-c7 76 0a 92 63 a9 78 b6   ..1.M;.P.v..c.x.
    0080 - 8f 19 5f 83 85 84 36 da-be da 87 4c af 80 1a c8   .._...6....L....
    0090 - ff 2e 00 8e 11 95 f5 8f-59 b1 cb e1 e7 62 cc 9a   ........Y....b..
    00a0 - 44 8d 07 1b                                       D...

    Start Time: 1401703776
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---
connect参数是基本参数,上面的内容会显示服务器证书以及最后采用的握手协议
阅读全文 »

[转]YARN(YetAnother Resource Negotiator)

发表于 2014年04月5日   |   分类于 hadoop   |  

YARN:针对MapReduce在扩展性和多框架支持方面的不足(扩展性受限、单点故障、难以支持MR之外的计算),提出了全新的资源管理框架YARN,它将Job
Tracker中的资源管理和作业控制功能分开,分别由两个不同进程ResourceManager和ApplicationMaster实现,其中Resource
Manager负责所有应用程序的资源分配,而ApplicationMaster仅仅负责管理一个应用程序。

MapReduce框架的问题主要集中在:

(1) JobTracker是MapReduce的集中处理点,存在单点故障;

(2) JobTracker完成了太大的任务,造成了过多的资源消耗:当MapReduce
job非常多的时候,会造成很大的内存开销,也就增加了JobTracker fail的风险(MapReduce只能支持4000节点主机的上限!);

(3) TaskTracker端:以MapReduce
task的数目为资源的表示过于简单,没有考虑到cpu/内存的占用情况,如果两个大内存消耗的task被调度在一起,很容易发生内存溢出错误;

(4) 在TaskTracker端把资源强制划分为map task slot和reduce task slot,如果当系统中只有map
task或者只有reduce task时会造成资源浪费;

(5) 源代码层面分析:一个类做了太多事情,代码量多大3000多行,造成类的任务不清晰,增加bug修复和版本维护的难度等

阅读全文 »
1…789…11

55 日志
19 分类
27 标签
RSS
Links
  • 结构之法&算法之道
  • 数盟-数据科学家联盟
  • 36大数据
© 2018
由 Hexo 强力驱动
主题 - NexT.Mist