从七月初开始用md在github上写技术日志,每天一篇,提醒自己不能放松。
后来逐渐发现如果文件名上只有日期的话,会很不方便查阅,于是便想着将每篇日志的标题放到文件名上来,这样在没有网络的时候,我也可以随时在本地找到。
这样改的话工程量毕竟很大,于是今天试着用PHP对文件进行操作,统一更改文件名。
| 1 | <?php | 
从七月初开始用md在github上写技术日志,每天一篇,提醒自己不能放松。
后来逐渐发现如果文件名上只有日期的话,会很不方便查阅,于是便想着将每篇日志的标题放到文件名上来,这样在没有网络的时候,我也可以随时在本地找到。
这样改的话工程量毕竟很大,于是今天试着用PHP对文件进行操作,统一更改文件名。
| 1 | <?php | 
@keyframes,animation, transform三样便可以搞定
| 1 | <!DOCTYPE html> | 
Math.cos(), Math.sin(),这两个函数的参数都是弧度,所以可以用 Math.PI * 2/360将角度转化成弧度。
| 1 | <!DOCTYPE html> | 
这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的。毕竟校招在刚刚开始拉开帷幕,精彩的还在后头,内推不过,还有机会去秋招,这次秋招不过,还有明年的春招。但是明年的春招我可能等不起了,我迫不及待地需要一份工作,需要一份我向往的工作。
今天看书看到canvas部分,便用它来写了一个时钟,原理很简单,用context.arc(100, 100, 99, 0, Math.PI*2, false);绘制圆形作为表盘,context.fillText(i, textX, textY);绘制表盘上的数字,context.lineTo(secondsX, secondsY);绘制秒针,时针和分针的原理与此相同。接着就是正弦和余弦函数的运用。
开代码:
| 1 | <!DOCTYPE html> | 
通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript。
先来认识一下css3的animation
animation的简写animation: name duration timing-function delay iteration-count direction;
其次就是@keyframes

好了,接下来运用上述两个属性做一个可以旋转的齿轮
| 1 | <style> | 
演示demo
当我们运用html元素”textarea”写一个文本输入框时,浏览器会自动生成以下样式
用鼠标拖动右下角的小三角就可以对文本框的大小进行重新设置,于是我们试着在一个div中实现与上述相似的功能
先看布局
| 1 | <style> | 
用父元素div2代替“文本框”,用div1代替小三角,这里的定位,为后面的js实现方法打下了基础
JS的实现方法
| 1 | <script> | 
将小三角移动的x轴和y轴长度反应到其父元素的宽高上面,便得到了这样的效果
布局并不麻烦,两个div,定宽高、背景颜色即可
演示demo
逆向思维:既然我们要检测div在运动过程中是否重合,那如果知道什么时候不重合,剩下的情况就是重合了,在这里,分析不重合的情况显然比分析重合的情况要容易
如图,当r1
| 1 | <script> | 
position: static;
元素框正常生成,块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中
position: relative;
元素框偏移某个距离,元素仍然保持位定位前的形状,它原本所占的空间仍然保留
position: absolute;
元素从文档流完全删除,相对于包含块定位,包含块可能是元素中的另一个元素或者初始包含块()。元素原先在正常文档流中所占的空间被关闭,且定位后的元素会生成一个块级框
position: fixed;
相当于包含块是视窗的position: absolute;
这里参考豆瓣克军大牛的一篇文章
| 1 | <style> | 
| 1 | function getRequest() { | 
有字符串在的地方就少不了正则表达式
| 1 | // 根据参数获取参数值 | 
每个矩形都是由两条水平直线和两条竖直直线组成的,那么水平直线的取法有 32/(21) = 3,竖直线的取法有 54/(21) = 10,则矩形个数为30(不知道这里正方形算不算矩形……)
在ECMAScript有5种基本数据类型: Undefined/Null/Boolean/Number/String, 以及一种复杂数据类型Object。
| 1 | var str = new String("abcd"); | 
例如:
| 1 | select * from t1 where col1 = (select col2 from t2); | 
其中 select * from t1, 称为Outer Query/Outer Statement
select col2 from t2 ,称为 SubQuery。
子查询有多个关键字或条件,如 distinct , group by, order by, limit, 函数等
子查询的外层查询可以是 : select, insert, update, set 或 do。
语法结构 : operand comparison_operator subquery
子查询实例
求所有商品的平均价格
| 1 | select round(avg(goods_price), 2) from tdb_goods; | 
列出所有商品价格在平均价格之上的商品
| 1 | select goods_id,goods_name,goods_price from tdb_goods | 
用 SOME(任意一个),ANY(任意一个),ALL(所有的) 修饰比较运算符
= ANY运算符 与IN 等效,!=ALL或<>ALL与NOT IN 等效;
如果子查询返回任何行,EXIST将返回TRUE,否则返回false;
在一个数据表的分类中,可能存在大量重复的数据,这时候可以奖建立两个数据表关联,提高查询效率。
实例
| 1 | 将查询结果写入数据表 | 
多表的更新基本上与单表更新相似。
连接类型
| 1 | INNER JOIN(与JOIN,CROSS JOIN等价) 内连接, | 
SQL语句实例
| 1 | create table tdb_goods_brands | 
当两个表的字段名相同时,可以为两个表分别起一个别名,例如下面的g和b:
| 1 | update tdb_goods as g inner join tdb_goods_brands as b on g.brand_name = b.brand_name set g.brand_name = b.brand_id; | 
| 1 | alter table tdb_goods change goods_cate cate_id smallint unsigned not null,change brand_name brand_id smallint unsigned not null; | 
通常使用 ON 关键字来设定连接条件,使用WHERE关键字进行结果集记录的过滤。
内连接:显示左表及右表符合条件的记录(交集)。
SQL语句实例
| 1 | select goods_id,goods_name,cate_name from tdb_goods inner join tdb_goods_cates on tdb_goods.cate_id =tdb_goods_cates.cate_id; | 
| 1 | select goods_id,goods_name,cate_name from tdb_goods left join tdb_goods_cates on tdb_goods.cate_id = tdb_goods_cates.cate_id; | 
| 1 | select goods_id,goods_name,cate_name from tdb_goods right join tdb_goods_cates on tdb_goods.cate_id =tdb_goods_cates.cate_id; | 
| 1 | select goods_id,goods_name,cate_name,brand_name,goods_price from tdb_goods as g | 
| 1 | <style> | 
| 1 | <body> | 
return false来解决掉很多浏览器默认事件,在这里就有一个很好的应用setCapture(),IE中,假设id为div1一个元素设置了setCapture(),然后再绑定事件,比如一个点击事件,接下来,无论你点击哪里,被触发的都是div1元素的点击事件了,甚至你点击浏览器的地址栏,工具栏,都会触发div1的点击事件()。此时你的ie浏览器会像中毒一样,点击关闭按钮都是在触发div1的点击事件(),其他元素不管在div之上还是之下的,他们绑定的点击事件全部失效。setCapture和releaseCapture,当鼠标的div1上按下时,为div1 setCapture,这时所有的事件都集中到了div1身上,捕获所有事件,再也不会去选中其他的元素了,在鼠标抬起后,运用releaseCapture,不再捕获。| 1 | <!DOCTYPE html> | 
| 1 | * 文件的字节数 | 
根分区
swap分区(交换分区,内存2倍,不超过2GB)
/boot (启动分区 200MB)
设置Linux的IP地址 ifconfig eth0 192.168.233.2
4.1.1  命令格式与目录处理命令ls
    ls -a 可以看到隐藏文件(带有.)
    ls -l  长格式显示
    ls -lh  长格式人性化显示(自动转换文件大小的单位)
    ls -ld /etc  查看指定目录的详细信息
    ls-i 查看 inode 节点
    文件类型: -普通文件 d目录 l软链接
        r所属人 g所属组 o其他人
    文件权限    r读 w写 x执行
4.1.2 目录处理命令    
    mkdir 创建目录
    mkdir /tmp/zhongshan 可以同时创建多个目录
    mkdir -p /tmp/zhongshan/liu   当/zhongshan 目录不存在的时候创建 /liu 目录
    cd 目录名  change directory切换目录
    cd ..       返回上一级目录
    pwd          print working directory 显示当前工作目录
    rmdir  remove empty directory  删除空目录
    cp -rp [原文件或目录][目标目录]  复制过程中可以改文件名
         -r  复制目录
         -p 保留文件属性(修改时间等)
    mv [原文件或目录][目标目录]   剪切文件、改名,move
    rm -rf [文件或目录]
         -r 删除目录
         -f 强行执行( false )
    ctrl+c 终止命令 , ctrl+l 清屏
4.1.3 文件处理命令
    touch [文件名] 创建文件 文件名允许使用大多数字符,除了'/'
    cat 显示文件内容
    cat -n 显示行号
    tac 文件倒着显示
    more 显示长文件,使用空格或f翻页,(enter)换行,q退出
    less 与more类似,显示长文件。按(page up)可向前翻页,按(^)可向上翻行。'/'+关键词可以搜索关键词,此时可以按'n'查找下一个高亮显示
    head/tail -n 20 /etc/services   查看文件的前(后)20行,如果不指定行数,默认显示前10行
    tail -f [文件名]   动态显示文件末尾的内容, ctrl+c 终止命令
4.1.4 链接命令
    ln -s [原文件][目标文件]  创建软链接,软链接特征类似于Windows的快捷方式,它的权限不影响原文件的权限,软链接可以跨分区,可以针对目录使用
    ln [原文件][目标文件]  创建硬链接,硬链接不能跨分区,两个文件可以同步更新,且他们的i节点相同,不可以针对目录使用
4.2.1 权限管理命令
    chmod (change the permissions mode of file)  
    chmod [{ugoa}{+-=}{rwx}][文件名]
               [421][文件名]
               -R 递归修改,更改其子目录的权限
    -------------------权限有继承关系----------------------------------------------
    directory     r:ls
           w: touch/mkdir/rmdir/rm
           x: cd (一般r和x 成对出现)
4.2.2 其他权限管理命令
    chown (change file ownership)更改文件的所有者(只有root 可以改)
    chgrp (change file group ownership) 更改文件的所属组(只有root 可以改)
    umask -S 查看新建文件默认的权限(任何新建的文件都不具备x可执行)
    umask 023 可以更改当前新建文件的默认权限
4.3.1 文件搜索命令
    find [搜索范围][匹配条件]
    find /etc -name init  在/etc 目录下查找文件init,精准的搜索
    find /etc -name *init* 在/etc 目录下查找包含init的文件,模糊的搜索
    find /etc -name init???  匹配以 init 开头,后面有3个字符的文件
    (ctrl+q解决secureCRT 假死问题)
    find /etc -iname init???  忽略文件名大小写
    find / -size +n 搜索文件大小大于n 的文件(一个数据块是0.5kb)
    find /home -user zhongshan 查找所有者为 zhongshan 的文件
    find /home -group brothers 查找所属组为 brothers的文件
    find /etc -cmin -(+)5 在/etc 在查找5分钟内(外)被修改过属性的文件和目录
                 -amin      访问时间access
                 -mmin    文件内容modify 
    -o --->or        -a ---->and
    find /etc -size +163840 -a -size -204800   (and)查找大于80M小于100M的文件
                  -o      or或
    -type根据文件类型查找  f文件 d目录 l软链接文件
    find /etc -name inittab -exec ls -l {} \;   在/etc 下查找inittab文件并显示其详细信息    
    find /etc -name inittab -ok ls -l {} \;   在/etc 下查找inittab文件并显示其详细信息询问确认        
    find . -inum 130715 -exec rm {} \;   在当前目录下根据 i 节点找到文件并删除
4.4 帮助命令-帮助命令
    man    原义为manual 
    man ls 查看ls命令的帮助信息
    man services  查看配置文件的帮助信息
    1  命令的帮助, 5  配置文件的帮助
    man 5 passwd   查看passwd 配置文件的帮助
    whatis ls 得到ls 命令的一个简短的信息
    apropos services  查看配置文件的简短信息
    touch --help  查看命令的选项
    date 070222552015.00  更改系统时间
    info         与man相似
    help umask    shell内置命令的详细信息(找不到命令所在位置的命令)
4.5 文件搜索命令-用户管理命令
    useradd 用户名     添加用户(用户名不要太复杂)
    passwd 用户名     修改用户名密码
    who     查看在线登陆用户信息,tty为本地登陆,pts表示远程终端
    w   得到更为详细的登陆信息
    uptime   查看系统使用情况
4.6 文件搜索命令-压缩解压命令
    压缩格式:.gz  .zip(windows和linux兼容)
    gzip 文件名     压缩文件,只能压缩文件,不可压缩目录,不保留原文件
    gunzip 文件名     解压文件
    tar -cvf Japan.tar Japan   将Japan目录打包成Japan.tar文件
    tar -zcf Japan.tar.gz Japan       打包压缩一步完成
    tar -zx(v)f Japan.tar.gz    解压命令
    zip Japan.zip Japan      将Japan 压缩成Japan.zip 
    unzip Japan.zip         解压文件
    bzip2  -k boduo       压缩文件且保留原文件
    tar -cjf Japan.tar.bz2 Japan  打包压缩一步完成
    tar -xjf Japan.tz2           解压缩
4.7 网络命令
    write 用户名     给在线用户发信息 ctrl+D 保存结束
    wall 给所有在线用户发信息
    ping 选项 IP地址 -c指定发送次数   packet loss(丢包率)
    ifconfig 查看当前网卡状态
    mail [用户名]  查看发送电子邮件
    mail 查看邮件, 序列号查看邮件内容, h查看列表, d+序列号删除邮件,q退出邮件系统
    last 统计计算机所有的登录用户以及重启记录
    lastlog  查看某特定用户上次登录的时间
    lastlog -u 520 查看用户id为502的上次登录时间
    traceroute www.lampbrother.com  显示数据包到主机的路径
    netstat [选项] 显示网络相关信息
        -t    TCP协议
        -u   UDP协议
        -l    监听
        -r   路由
        -n  显示IP地址和端口号
    netstat -tlun 查询当前本机监听的端口
    netstat -an  查询本机所有的网络连接
    netstat -rn   查询本机路由表
    setup   配置网络(永久生效)
    service network restart 重启网络服务
    mount  -t iso9660 /dev/sr0 /mnt/cdrom/ 挂载光盘
    umount /dev/sr0 卸载光盘
4.8 关机重启命令
    shutdown -h now 现在关机
    shutdown -r now  现在
    shutdown -c  取消前一个关机命令
    reboot 重    启
    init 6   重启
    runlevel 查询当前运行级别
    logout  退出登录
5.1 Vim常用操作
    vi filename   进入
    按下ESC  进入命令模式
    进入命令模式后
        a 在光标所在字符后插入
        A 在光标所在行行尾插入
        i 在光标所在字符前插入
        I 在光标所在行行首插入
        o 在光标下插入新行
        O 在光标上插入新行
        :set nu  设置行号
        :set nonu 取消行号
        gg 到第一行
        G 到最后一行
        nG 到第n行
        :n  到第n行
        $  移至行尾
        0  移至行首
        x  删除光标所在处的字符
        n 删除光标所在处n个字符
        dd 删除光标所在行, ndd删除n行
        dG 删除光标所在行到文件末尾内容
        D 删除光标所在处到文件末尾的内容
        :n1,n2d 删除光标所在范围内行
        yy 复制当前行
        nyy 复制当前行以下n行
        dd 剪切当前行
        ndd 剪切当前行以下n行
        p/P  粘贴在当前光标所在行下或行上
        u 取消上一步操作
        r  取代光标所在处字符
        R 从光标所在处开始替换字符,按ESC结束
        set ic 不区分大小写
        set noic 不区分大小写
        /string 指定搜索字符串
        n 搜索指定字符串的下一个位置
        :%s/old/new/g  全文搜索替换指定字符串
        :%s/old/new/g  全文搜索替换指定字符串(询问确认)
        :n1,n2s/old/new/g  在一定范围内搜索替换指定字符串
        :w 保存修改
        :w new_filename 另存为指定文件
        :wq 保存退出
        ZZ 快捷键,保存修改并退出
        :q! 不保存修改退出
        :wq! 保存修改并退出(文件所有者以及root可使用)
5.2 Vim使用技巧
    :r 文件名   导入文件的内容
    :r !命令   导入命令执行结果
    定义快捷键
        map 快捷键 触发命令
    :map ^p(ctrl+v+p) I#<ESC>  ctrl+p 设置快捷键跳到行首添加#
    :map ^B 0x  跳到行首删除第一个字符
    连续行注释
        :n1,n2s/^/#/g
        :n1,n2s/^#//g   去掉行首的#
        :n1,n2s/^/\/\//g   替换时转义
    :ab zhongshan zhongshanshanshanshan
    /home/username/.vimrc   配置相关快捷键(永久生效)
6.1 软件包管理
    软件包分类:源码包(脚本安装包)和二进制包(RPM包、系统默认包)