swift 多线程GCD和延时调用

GCD 是一种非常方便的使用多线程的方式。通过使用 GCD,我们可以在确保尽量简单的语法的前提下进行灵活的多线程编程。在 “复杂必死” 的多线程编程中,保持简单就是避免错误的金科玉律。好消息是在 Swift 中是可以无缝使用 GCD 的 API 的,而且得益于闭包特性的加入,使用起来比之前在 Objective-C 中更加简单方便。在这里我不打算花费很多时间介绍 GCD 的语法和要素,如果这么做的话就可以专门为 GCD 写上一节了。在下面我给出了一个日常里最通常会使用到的例子 (说这个例子能覆盖到日常的 GCD 使用的 50% 以上也不为过),来展示一下 Swift 里的 GCD 调用会是什么样子:

// 创建目标队列
let workingQueue = dispatch_queue_create("my_queue", nil)

// 派发到刚创建的队列中,GCD 会负责进行线程调度
dispatch_async(workingQueue) {
    // 在 workingQueue 中异步进行
    print("努力工作")
    NSThread.sleepForTimeInterval(2)  // 模拟两秒的执行时间

    dispatch_async(dispatch_get_main_queue()) {
        // 返回到主线程更新 UI
        print("结束工作,更新 UI")
    }
}

» 阅读全文

Web系统大规模高并发下数据安全,避免超发问题

我们知道在多线程写入同一个文件的时候,会存现“线程安全”的问题(多个线程同时运行同一段代码,如果每次运行结果和单线程运行的结果是一 样的,结果和预期相同,就是线程安全的)。如果是MySQL数据库,可以使用它自带的锁机制很好的解决问题,但是,在大规模并发的场景中,是不推荐使用 MySQL的。秒杀和抢购的场景中,还有另外一个问题,就是“超发”,如果在这方面控制不慎,会产生发送过多的情况。我们也曾经听说过,某些电商搞抢购活 动,买家成功拍下后,商家却不承认订单有效,拒绝发货。这里的问题,也许并不一定是商家奸诈,而是系统技术层面存在超发风险导致的。

1. 超发的原因

假设某个抢购场景中,我们一共只有100个商品,在最后一刻,我们已经消耗了99个商品,仅剩最后一个。这个时候,系统发来多个并发请求,这批请求读取到的商品余量都是99个,然后都通过了这一个余量判断,最终导致超发。(同文章前面说的场景)


» 阅读全文

Linux平台监控工具munin安装笔记

munin其实很早就听过了,但是我基本上都使用 : monitorix :http://monitorix.jincon.com/ ,以及NMON:http://www.jincon.com/archives/288/  ,但是听说munin还不错,支持各类插件,于是安装了下

1、安装EPEL

rpm -Uvh  http://mirrors.opencas.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm

vim /etc/yum.repos.d/dag.repo

输入:

[dag]

name=Dag RPM Repository for Red Hat Enterprise Linux

baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag

gpgcheck=1

gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

enabled=0   // 这里建议设为,网上很多都写1,可能会导致 perl个别库出现冲突


2、安装munin服务端和munin-node客户端

yum install munin munin-node

如果不行,就 yum makecache

» 阅读全文

iTerm2让SSH自动输入免密码登录远程Linux服务器

iTerm2 是我最喜欢的远程连接工具之一,但是以前不知道怎么实现免密码登录,每次都要输入各种服务器的

密码进行登录,有时候脑子不好,也不容易记住,所以,就想着怎么实现:

iTerm2让SSH免 输入密码登录远程Linux服务器

google 一番,其实很简单

vi ~/.ssh/whatevername

  set user 用户名
  set host ip地址
  set password 密码
  set timeout -1

  spawn ssh $user@$host
  expect "*assword:*"
  send "$password\r"
  interact
  expect eof
然后打开iTerm2的设置里,点开Profiles,左下角点+号新增一个配置文件,

然后在Genernal->Command下选择 Command,在输入框里填入 expect ~/.ssh/whatevername

以后就可以直接免密码登录啦,其实,这个不是真的免密码登录,只是自动免输入密码而已。

python脚本分析nginx日志1000条IP超过100次自动封 IP

最近有一些王八蛋,总是喜欢爬取网站内容,于是就想到利用python 脚本分析nginx日志1000条,

IP 1000次中超过100次 自动封 IP 功能,正常情况1000条记录,一般不会超过100个,当然,

你可以根据情况调整,python代码如下

#!/usr/bin/python

__author__ = 'jincon'

import os;
import string;

lines_ = os.popen("tail -n 1000 /home/www/nginx.log  |awk -F' ' '{print $1}'|sort|uniq -c|sort -n").read();
lines = lines_.split("\n");

for line in lines:
	if line != '':
		line = line.strip();
		lineArr = line.split(" ");
		if int(lineArr[0])>50:
			print lineArr[1]+"=="+lineArr[0];


print "ok";

这个代码,我没有写封 I P 的功能,封 IP,一般普通的服务器不外乎就 iptables 和 nginx 的 deny 了

iptables很简单,我就不说了。

nginx 的话,可以在 python 脚本里面把超过限制的 IP,写入到一个文件里面然后 nginx  ,include 就行了,当然你还要reload 下 nginx,注意,不要重启,没必要,只要加载配置文件即可。

最后就是加一个计划任务,譬如每隔5分钟运行一次,封特么的的。


关键词: python脚本 , nginx日志

他妈的鄙视壹聚教程网111cn.net等这样垃圾人和垃圾站

他妈的鄙视壹聚教程网111cn.net等这样垃圾人和垃圾站

他妹的,各种转账劳资的文章,一个转账来源都没写,

准备写邮件,他大爷的,邮件不能发,卧槽!!!


特么的的,大写的鄙视


他妈的鄙视壹聚教程网111cn.net

等这样垃圾人和垃圾站

CentOS安装tmux的正确方法

centos官方软件源中没有 tmux ,如果不想使用EPEL源或者其他第三方源,就要自己编译安装。网上一些直接就 yum install xxx 让人着实郁闷,之前用 screen 较多。 tmux 感觉不错,可以试试,Centos 安装过程如下:

wget http://downloads.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.21-stable.tar.gz

wget http://jaist.dl.sourceforge.net/project/tmux/tmux/tmux-2.0/tmux-2.0.tar.gz 

tar xzf libevent-2.0.21-stable.tar.gz

cd libevent-2.0.21-stable

./configure

make && make install

cd ..


» 阅读全文

关键词: 安装tmux , centos

分享一款flash头像编辑上传利器:富头像上传编辑器

富头像上传编辑器是一款支持本地上传、预览、视频拍照和网络加载的flash头像编辑上传插件,可缩放、裁剪、旋转、定位和调色等...

  1. 小巧的身材:文件大小仅仅只有 46.3 KB,而新浪的头像编辑器组件有 58.1 KB,更有甚者达 80 KB 之多以上。
  2. 漂亮的外观:灰色系的外观设计,适用于所有风格的站点。还可轻松地实现换肤。
  3. 强大的功能:原图支持本地上传、视频拍照和网络加载,图片编辑有缩放、裁剪、旋转、定位和调色等功能。
  4. 丰富的接口:可自定义头像(大小、数目...)、所有文本(包括其字体,大小,颜色,方便扩展多语言站点)、可在外部接口中定义选项卡、按钮...
  5. 跨平台兼容:运行环境Flash Player 10.1+,任何浏览器 IE All、Firefox、 Chrome、Opera...都正常使用。
  6. 极致的体验:人性化的设计方式,细节上精心的处理,用户使用起来得心应手。

» 阅读全文

关键词: flash头像上传