背景:前些日子有一外面抓视频的,用那个时间来查20条(大于某个时间Limit 20),因存的是这样的:2013-08-08 21:50:00  ,这样在Mysql数据量大,且没有建立索引(也不好建立索引的情况下),很容易把数据库拖死,其实应该用Unix的时间整数来进行查就快多了,因为这样建立起来的索引的势就高(老外好像是这样说的),查询就快,但现在就是存的时间了,查询时还得以时间来查,前端是输入的Unix时间戳(Unix timestamp),后面还得转一次。
涉及到:js unix时间戳转换 ,PHP时间戳转为Unix时间戳。

阅读全文
对于nginx+php的一些网站,上传文件大小会受到多个方面的限制,一个是nginx本身的限制,限制了客户端上传文件的大小,一个是php.ini文件中默认了多个地方的设置。所以为了解决上传文件大小限定的问题必须要做出多处修改。以下整理了几个地方。

1、修改/usr/local/nginx/conf/nginx.conf 文件,查找 client_max_body_size 将后面的值设置为你想设置的值。比如:

附录:Nginx有一个Upload组件:
上传速率,上传Body大小,也就是上传文件时可能较大?
client_max_body_size 1024M
upload_limit_rate 158k
如下:


2、修改php.ini

在php.ini里面查看如下行:

默认允许HTTP文件上传,此选项不能设置为OFF。
upload_tmp_dir =/tmp/www


在上传大文件时,你会有上传速度慢的感觉,当超过一定的时间,会报脚本执行超过30秒的错误,这是因为在php.ini配置文件中max_execution_time配置选项在作怪,其表示每个脚本最大允许执行时间(秒),0 表示没有限制。你可以适当调整max_execution_time的值,不推荐设定为0。

参考文章:
PHP.INI配置:文件上传功能配置教程:http://www.leapsoul.cn/?p=488
RocketDock是什么?
你是否曾经透过那些苹果机用户的肩头瞥见过他们屏幕下方那个漂亮的图标栏?这就是著名的”Dock”. 对那些没有看到过Dock的人来说,Dock就是位于你屏幕下方可以设置背景和图标的的工具栏.这个工具栏的作用就是将你的应用程序和各种图标有机的组织起来,从而把你从杂乱的桌面中解脱出来.

特性
最小化窗口到Dock Vista系统中实时的窗口预览 正在运行的程序的指示器 简单的拖曳界面 支持多监视器系统 支持alpha效果PNG和ICO图标 图标的平滑缩放效果 自动隐藏 鼠标滑过自动弹出 位置和图层设置 完全个性化设置 支持ObjectDock插件(Docklet) 兼容MobyDock, ObjectDock, RK Launcher, 和 Y’z Dock皮肤 在低配置电脑上运行流畅 支持统一字符编码标准
多语种支持,可以方便的翻译成各种文字版本

官方下载地址:http://www.rocketdock.info/wp-content/upload/RocketDock1-3-5.rar

设置:http://wenku.baidu.com/view/53542ec69ec3d5bbfd0a7457.html
官网下载:http://rocketdock.com/DOWNLOAD


我的印象中Mac的界面就是这个样子的吧?
RocketDock 窗口特效[图] | 小众软件感觉很流畅的样子,RocketDock让你在使用Windows更加的动感,它用极少的内存以及CPU资源,让你就算使用着旧计算机,也不会感到计算机变慢。内建多种面板模式,以及一组的图标,如果觉得面板模式太少或是图标太少,还可以自行选用自己喜欢的图标。而且图标的可不是只能用ICO,PNG图片格式,它一样能够支持,让你的图标看起来更加的漂亮。而且还支持使用拖曳的方式来自订要启动的程序,或是资料夹,让你自己打造一个动感味十足,界面漂亮,占用极少资源的个人专属快捷工具栏。

对于喜欢花哨的用户来说,在好不过了,不过像我这样力求简洁实用的来说,就有些多余了。哈哈,因为我用WIN+R
解决办法:http://see.sl088.com/wiki/Explicit_defaults_for_timestamp
解决
进入/etc/my.cnf,增加一项设置
# seem 5.6 need this
explicit_defaults_for_timestamp = 1
阅读全文
背景:现在很少有用C实现文件上传了,有Nginx的上传模块,用CGI实现文件上传在这里作下备案。
后加参考:http://hi.baidu.com/davidgabriel/item/58fec40b4c2f49803c42e290  
用C语言库(CGIC)编写CGI,实现文件上传:
http://hi.baidu.com/rszlatkfoxbalqd/item/62bb3a4e04e89c0fc0161326  
使用C语言的CGI库“CGIC”完成Web开发的各种要求 :
http://blog.sina.com.cn/s/blog_75a8cfac0100p9es.html
add Time:2014-01-14
阅读全文
1.php 接口类:interface

其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 :



我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都 不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不 行,但是具体你怎么去做,我不管,那是你的事,如:



你想想,在一个多人合作的大项目里面,有了接口类是多么的方便,这样你就不用去问别人,你的某某功能的方法名是什么了,当然如果你们喜欢这样我也没有办法。



结论 : 接口类就是一个类的领导者,指明方向,子类必须完成它指定方法。

2.php 抽象类 : abstract

其实抽象类和接口类有一部分很像,记得在哪里看见这样一句话,抽象类就把类像的部分抽出来,这句看上去很搞笑,其实它说出了抽象类的真理,抽象类的 作用是,当你发现你的很多类里面用很多方法你不断的在重复写,那你就可以考虑使用抽象类了,你可能会说“我不是可以重写一个类每个公共类我个实例化一个这 个公共类,调用相同的方法就可以了”,这里是可以,实际上抽象类做的工作也就是这个,不过他省去了你实例化的这个步骤,让你就像直接调用本类方法一样方 便,而且你还可以重载这个方法。如:




    这里是一个例子,想上面一样我定义了一个商店类,抽出了它所有像的部分,买(buy),卖(sell),看(view),并且抽象类里都实现了这些方法,那么继承它的子类就自动获得了这些方法,子类就做它自己独特的东西,介绍代码的重复,提高复用性。
结论: 抽象类就是一个类的服务提供商,拥有众多服务,你不用必须用,当需要的时候你来用就可以,如果你觉得不提供服务不满意,你还可以自己来做。而abstract function 方法和interface有些相似,就是父类中生声明的方法,子类中必须实现,但是没有用abstract声明的方法将成为子类的公共方法,没有必要在子类中必须实现

转自:http://blog.csdn.net/hyholine/article/details/7270392
首先需要确定你用的用宽任务栏,确认的方法是在任务栏空白区域右键——属性——确认你没有勾选“使用小图标”(我就是勾选了小图标一直就只显示上午几点几点,没有日期)
如果你没有勾选的话,那你的年月日一般默认就显示了,下面就看怎么显示星期了,下面是简单的步骤:
1、在显示时间的区域右键——【调整日期/时间(A)】
2、在弹出的窗口中选择“调整日期和时间”
在日期和时间设置界面,点击“更改日历设置”
在日期选项卡中,分别在短时间和长日期后加上“ dddd”
TIPS:dddd前面有个空格,大家别忘掉了
设置完成后,确认即可看到效果。
详细参考:http://wenku.baidu.com/view/1a45d9513c1ec5da50e27052.html


WIN7旗舰版为什么右下角只显示时间而不显示日期:
你的任务栏是用的小图标吗?小图标就是只显示时间
改大图标方法:右键任务栏-》属性-》任务栏外观项把使用小图标前的勾去掉。






建议:把任务栏按钮,始终合并,这样更节省空间。
http://oldboy.blog.51cto.com/2561410/1180894
http://liangxiao.blog.51cto.com/3626612/1183268
http://tywangpanpan.blog.51cto.com/6264315/1182927



http://sethfeng.blog.51cto.com/2769379/1183715

http://wiki.postgresql.org/wiki/PGStrom?utm_source=feedly
Raspberry Pi的流行吸引了越来越多的公司进入到廉价单板计算机市场。25美元和35美元型号的Raspberry Pi共售出了120万。由德州仪器雇员创建的BeagleBoard推出了45美元的BeagleBone Black,硬件规格高于Raspberry Pi,采用 1GHz Sitara AM335x ARM Cortex-A8处理器, 512MB DDR3L内存,2GB储存空间,预装Ångström Linux,支持Ubuntu或 Android操作系统,支持连接到3D打印机、盖革计数器、遥控潜艇和LCD触摸屏等。类似的单板Linux PC并不少见,如69美元的ODROID-U配备了1.4Ghz Prime Cortex-A9四核处理器,Mali-400 Quad Core 400MHz,1GB内存;89美元的ODROID-U2配备了 1.7GHz四核处理器,2GB内存,支持Android 4.x和Ubuntu 12.10。
cat /proc/361/limits |grep files
Max open files            1024                 4096                 files    

一:SecureCRT 自动登录脚本:
常常会登录跳板机,里面的一些用户名和密码每次要重新输入,于是否,这就需要用一些捕获电脑输出(如输入用户名后会提示输入密码)的脚本,如果是自己先在跳板机会,执行脚本也成,这样用快捷键:alt+s R 参数后找到编辑好的脚本后,就可以自动登录到外网,还可以sudo成root等,但这个快捷命令有它的好处,如外面有多台,这时可以把多个自动登陆脚本放到不同文件,用上面的快捷键进行多次,但是只有一台时,用快捷键就有些麻烦,于是否,secureCRT有一个界面供我们使用,如下:
alt + B找到跳板机的那个IP,后在上面点右键,后连接下面有一个登陆动作->选 自动登录,选 上发送初始回车,下面有一行:
预期                                                    发送                                                            隐藏
[xiangdong@localhost ~]                       ssh -l xiangdong 192.168.109.8                       可勾选/不勾选也成
xiangdong@192.168.109.8's password:   xiangdong
[xiangdong@test ~]                             sudo -s
Password:                                           xiangdong
以上就实现了如果登录跳板机,上面的脚本就会执行并自动登陆到外网那一台机器并sudo成root权限。这样一登录跳板机就上了外面的配置机器,极其方便,如果你在全局设置里->常规->默认会话->使用自动会话,添加这个跳板机为打开SecureCRT就自动登录后,更灰常的方便喽,嘿嘿。

注意:在登录xiangdong后有可能会有shell提示:
-bash: ulimit: open files: cannot modify limit: Operation not permitted

-bash: ulimit: open files: cannot modify limit: Operation not permitted
[xiangdong@test ~]

是因为:
vi /etc/profile里有一行:ulimit -n 200000 ,这个句柄权限是不能让我这个权限设置的,于是否,提示权限不够。
这里因java需要大量的句柄,所以修改大了很多,在此点特别备注,后面要捕获的,还是那个:[xiangdong@test ~],即可。
特别注意:这个脚本如果没有捕获到会一直捕获,直到捕获到,或这个shell终端挂掉,否则,再想运行其它脚本时选脚本时会变灰,没法再选。

二、解决普通用户ssh连接linux服务器是总是提示:ulimit: open files: cannot modify limit: Operation not permitted
vi /etc/profile  //这个文件每个用户都会执行它
ulimit -S -c 0 > /dev/null 2>&1  //实践发现这个放在/etc/profile里不会报

//下面这样的如果不以root去执行肯定会报:cannot modify limit: Operation not permitted
ulimit -n 200000
ulimit -HSn 65536                                                                                                                                            
ulimit -HSn 65536
ulimit -n 200000

su 普通用户后:
[xiangdong@localhost ~]$ source /etc/profile
-bash: ulimit: open files: cannot modify limit: Operation not permitted
去掉后就OK了,当时有两个,发现去了还是有,一查才是跳板机上还有一样的问题,再次去掉就好了。
特别注意:有时会有定时脚本会往这个/etc/profile里写,如再次出现得查一下是从哪儿写过来的。
背景:近来发现一内网的IP如:192.168.1.8 这样的,居然可以通过配置另外一个Host进行外网的访问,刚开始以为是Nginx作的反向代理,如果要加一个虚拟机的域名还得再添加一次Nginx的反向代理,也就是添加一个Nginx的反向代理的配置,于是否,也就向运维了解了下情况,说是因F5作了四层代理给那台内网IP了(确定了下:四层),不是用的Nginx,只需要自己在92.168.1.8上加一个域名就可以了,这样一来,就不像Nginx代理那样需要设置一次nginx.conf,并nginx -s reload一下,扯多了,停:这里涉及到四层代理 ,于是就有下面的文章了,如下:

负载均衡设备也常被称为"四到七层交换机",那补充:
所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。
换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;
四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。
===================================================================================================================
所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。
比如四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
七层的负载均衡,就是在四层的基础上(不能空中楼阁,没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个WEB服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
么四层和七层两者到底区别在哪里?
负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。
1、负载均衡分为L4 switch(四层交换),即在OSI第4层工作,就是TCP层啦。此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。例子:
LVS,F5
2、另一种叫做L7 switch(七层交换),OSI的最高层,应用层。此时,该Load Balancer能理解应用协议。例子:
haproxy,MySQL Proxy
注意:上面的很多Load Balancer既可以做四层交换,也可以做七层交换。
如果单纯要做HTTP的负载均衡,用haproxy好了。性能很强。
另外,F5和Alteon这样的硬件LB是LVS等软件赶不上。

来自摘抄,其更多内容查看:http://blog.csdn.net/21aspnet/article/details/6583762
__________案例是七层上某个URL访问有问题,而转成4层就好了,也就是说七层上可以对某位上URI作过滤,不让你访问就是____________
TCP(传输层)
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

IP地址(网络层)
在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。
Internet的网络地址是指连入Internet网络的计算机的地址编号。所以,在Internet网络中,网络地址唯一地标识一台计算机。
我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。
在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。


http://www.2cto.com/net/201310/252965.html
DD命令复制磁盘文件:
linux下使用dd命令复制磁盘
# dd if=/dev/sdc of=/dev/sdd bs=2M status=progress



服务器磁盘坏块检查:


badblocks -s -v /dev/sdb  
实践如下:

====================================================
linux dd指令用法中参数bs,count:
bs=600 count=1,备份第一块为600个字节的区域
若显示0+0,表示备份的空间不到一块指定大小的区域.(大小默认好象为512个字节)
bs=512 count=2,备份前2块总共为1024个字节的区域
屏幕上显示2+1,表示备份了2个块,1表示文件被整个备份了
屏幕上显示2+0,表示备份了2个块,0表示文件没被整个备份

cat /tmp/sdbbadblocks.log
774968152 774968153 774968154 774968155 774968900 774968901 774968902 774968903 774969648 774969649 774969650 774969651 774970396 774970397 774970398 774970399 774971144 774971145 774971146 774971147 774971892 774971893 774971894 774971895 774973516 774973517 774973518 774973519
写入:
badblocks -w -f /dev/sda 774968152 774968153 774968154 774968155 774968900 774968901 774968902 774968903 774969648 774969649 774969650 774969651 774970396 774970397 774970398 774970399 774971144 774971145 774971146 774971147 774971892 774971893 774971894 774971895 774973516 774973517 774973518 774973519

badblocks是Linux下常用的坏道修复工具。当你觉得硬盘上可能有坏道,或者是SMART数据显示有坏道的时候,都可以用badblocks来检查一下。

假设我们要检查的硬盘是/dev/sdb

$sudo badblocks -s -v -o sdbbadblocks.log /dev/sdb

这样就可以对硬盘进行只读扫描,自动获取硬盘块数目并扫描全部块,将扫描日志输出到屏幕同时记录在sdbbadblocks.log文件中。

由于扫描速度比较低,一次不一定能扫完,可以分多次进行。

sudo badblocks -s -v -o sdbbadblocks.log /dev/sdb END START

将END和START换成结束和开始的块的编号就可以了。

如果找到了坏道,可以进行写入扫描进行修复。写入扫描遇到坏道的时候会自动重映射。写入扫描会覆盖原有数据,所以请先备份。写入扫描速度很低,所以应该只扫描只读扫描时候发现错误的部分。

$sudo badblocks -w -s /dev/sdb END START

背景:Unix上传文件如果是分块断点上传,需要合并文件,如果是想做测试,需要分割文件。
我們得到了一个文件/root/sdb.bad :

16435904

sdb 有1个坏块

先用dd尽量备份坏块

6.dd if=/dev/sdb bs=4096 skip=16435904 of=/tmp/15435904.dat count=1

如果显示读取字节数是0就多试几次, 不行就可能丢失此块数据, 倒是不用担心,一般不会有太大问题.

用badblocks的写测试功能,对这些坏块进行重写(注意! -w写测试会覆盖数据):

7.badblocks -w -f /dev/sdb2 16435904 16435904

如果前面的操作有成功的备份/tmp/15435904.dat, 就把它写回:

8.dd if=/tmp/15435904.dat of=/dev/sdb seek=15435904 bs=4096 count=1

其实我们不需要等待badblocks扫描完成, 就可以进行修复。

badblocks是对块设备进行处理, 所以可以实现对挂载中的系统进行处理。

在修复前后,利用smartctl 对磁盘进行long测试

# smartctl -l selftest /dev/sdb
阅读全文
最近公司需要通过web界面修改squid.conf,然后保存配置文件的同时重启动squid,web服务器是nginx+php,文件用户和组都是www。
首先编辑 /etc/sudoers 使用 visudo来编辑
/etc/sudoers的权限是440:
-r–r—– 1 root root 3248 Oct 18 23:47 /etc/sudoers
需要chmod u+w /etc/sudoers
修改完毕之后再chmod -w /etc/sudoers
因为如果/etc/sudoers的权限不是440,那么sudo会报错:
[root@hn ~]# sudo
sudo: /etc/sudoers is mode 0640, should be 0440
sudo: no valid sudoers sources found, quitting

在最下面添加一行

nobody ALL=NOPASSWD:/usr/local/squid/sbin/squid -k reconfigure

然后注释掉文件中的Defaults requiretty这行
否则会出现sudo: sorry, you must have a tty to run sudo的错误
保存退出即可
测试
写一个php文件,内容如下


来自:http://tunps.com/php-sudo-root-privilege-program
背景:把Nginx用来代理apache的svn,在传一个psd时出现:Server sent unexpected return value (413 Request Entity Too Large) in respon。

Nginx上传文件出现一个错误:413 Request Entity Too Large,百度了一下,原来是文件太大了。
原因上传文件超过最大值,修改nginx.conf的值就可以解决了。
client_max_body_size 2M
改为
client_max_body_size 50M;
分页: 86/272 第一页 上页 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 下页 最后页 [ 显示模式: 摘要 | 列表 ]