VC:
1 | #include <stdio.h> |
GCC:
1 | #include <stdio.h> |
VC:
1 | #include <stdio.h> |
GCC:
1 | #include <stdio.h> |
1 | **---------------|相关学习资源|---------------** |
1 | **---------------|二进制基础知识|---------------** |
1 | **---------------|汇编语言基础知识|---------------** |
通用寄存器:
1 | EAX 累加器 |
段寄存器:
1 | CS:代码段(Code Segment) |
指令寄存器:
EIP 指令指针寄存器
低16位为IP(8086)
它存储的是下一条要执行指令的地址。
标志寄存器:
1 | IOPL(I/O Privilege Level) I/O特权级字段,它的宽度为2bit,它指定了I/O指令的特权级。如果当前的特权级别在数值上小于或等于IOPL,那么I/O指令可执行。否则,将发生一个保护性异常。 |
寻址方式
段基址*10H+段内偏移地址,形成20位地址
段基址是16的倍数,长度最大不超过64K
站点地图这个东西,目的是为了对搜索引擎友好。搜索引擎每天来爬你的网站,如果能给它提供一份实时更新的站点地图,自然会让搜索引擎在爬取网站的时候更加有效率。
这里用php实现了一个自动化的站点地图生成器,可以在爬虫访问站点地图的时候动态的创建页面,来提供一份实时更新的sitemap.xml。
具体的实现,首先你需要让apache服务器支持将xml文件作为php来解析,这样sitemap.xml中的php语句得以执行。
可在站点根目录下的.htaccess文件的<IfModule mod_rewrite.c>和</IfModule>之间加入这一句:
1 | AddType application/x-httpd-php .xml |
至于php部分,其实就是先获取网站首页所有的url,再将url写入页面,同时将创建的日期设为今天。这样爬虫就会认为站点是实时更新的,从而提高搜索排名。
然后就是sitemap.xml的源代码:
1 | <?php |
一直想给安装一个缩略图点击弹出的插件,但是找了找几乎都是用的php来做的,插件的使用和安装极其繁琐,于是上网查了些demo,自己实现了一个纯js的图片弹出插件。
实现的思路是通过编写hook图片的onclick事件的函数,在函数中对body追加div元素,再将传入的图片对象放入元素中,同时再监听div的onclilck事件,当捕捉到点击,再关闭(其实是隐藏)弹出的div。
通过在函数初始化的时候收集页面所有的img元素,再为每个img元素增加onclick=”picHook(this)”这条属性,这样当图片在被点击时,这个函数就能自动创建div蒙板背景,并获取被点击图片的宽度和高度,同时生成一个新的和图片一样大小的div来显示图片。当蒙板再次被点击时,hook事件再次响应,并将蒙板和图片div的style置为none,弹出的图片就被关闭了。
实现效果见本博客,任意点击一个图片即可查看效果。
说起来很简单,做起来就更简单了,简单到只需要一个函数即可实现。
talking is cheap,show you my code:
1 | <script> |
将这段代码保存在页面的head中,再将body的onload事件绑定到picHook()函数,你的页面中就也可以实现图片点击弹出大图啦。
还存在一点小bug,主要是因为我不太熟悉css,导致div的样式做的有点难看。
css的样式我是直接声明在js里的,这样就不用再另外创建css文件了。
强迫症,没办法。
等有时间再琢磨琢磨css,优化下样式。
喜欢就拿去吧。
你可以点击下面的图片测试一下看看效果:
有了Ruby笔记,怎么能少了python笔记呢。
这里主要记录我的python使用心得和调错笔记。
No module named win32api
安装pywin32
进入这个链接:
http://sourceforge.net/projects/pywin32/
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/
选择对应的版本,例如64位windows,python版本2.7.1,则选择
pywin32-220.win-amd64-py2.7.exe
Python比较难找的cffi包
1 | pypi.python.org/packages/source/c/cffi/cffi-1.4.2.tar.gz |
定义类
定义类的过程就是定义类的属性的过程;
类的属性就是累的静态属性的简称,指类内包含的各项数据。
类的服务被称为成员函数或方法。
继承extends
通过定义继承方法,子类可以获得父类的所有属性和方法
接口implements
说明当前类中实现了哪个接口定义的功能和方法
是Java语言中实现多重继承的一种机制
类的修饰符分为:
访问控制符
抽象类说明符
最终说明符
类的属性:
描述了类内部的信息,又称为类的静态属性
类属性为简单变量
【修饰符】 变量类型 变量名【=变量初值】
【修饰符】 类名 对象名 【=new 类名(实际参数列表)】
若使用另一个类的对象作为当前类所定义的类的属性,
要保证该对象所在的类在当前类中是可已被当前类所引用的
类属性的修饰符包括:
访问控制符
静态修饰符static
最终修饰符final
易失修饰符volatile
过渡丢师傅transient
类的方法(成员函数)
用来规定类属性上的操作
实现类内部功能的机制
也是类与外界交互的窗口
声明方法的语法:
【修饰符】返回值类型 方法名(参数列表)
Trows 例外名1,例外名2,…
{
方法体:
局部变量声明;
语句序列;
}
方法的修饰符包括:
访问控制符
静态修饰符static
抽象修饰符abstract
最终修饰符final
同步修饰符synchronous
本地修饰符native
类的构造函数
特殊之处:
构造函数的方法名与类名相同
构造函数没有返回类型
构造函数的主要作用是完成对类对象的初始化工作
在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化
Java在声明类是,可以不定义构造函数,系统会自动为该类生成一个默认的构造函数
此时这个构造函数的名字与类名相同,没有任何形式参数,也不完成任何操作
类的访问控制符只有一个public
属性和方法的访问控制符有:
public
private
protected
private protected
对于同一个包中的类可以不需任何说明,方便的互相访问和引用
在不同包中的类,只有他们都声明为public时,然后再在程序头部声明import后才可以被访问和引用相应的类。
publici修饰的类的属性称为公共属性
如果公共属性属于一个公共类,则可以被所有的其他类使用
public修饰符会造成安全性和数据封装性下降,应尽量减少public属性的使用
缺省访问控制符规定该类只能被同一个包中的类访问和引用,而不可以被其他包中的类引用,这种特性称为包访问性。
类内的属性和方法如果没有访问控制符来限定,也说明他们具有包访问性,可以被同一个包中的其他类所访问和调用
用private修饰的属性或方法只能被该类自身所访问和修改,而不能被任何其他类,包括该类的子类来获取和引用。
procted修饰的属性可以被该类自身和包中的类访问
public可以被任意访问
静态属性
被static修饰的属性称为静态属性
静态属性是一个公共的存储单元
任何一个类的对象访问它时取到的都是相同的值
任何一个类的对象去修改它时,都是在对同一个内存单元做操作。
static修饰符修饰的属性是属于类的公共属性
static修饰符修饰的方法是属于整个类的方法
不用static修饰符修饰的方法是属于某个具体对象或实例的方法
声明一个方法的static至少有三重含义
调用这个方法时,应该使用类名做前缀,而不是某一个具体的对象名
非static的方法是属于某个对象的方法,在这个对象创建时对象的方法在内存中拥有自己的专用代码段
而static的方法是属于整个类的
它在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有
static方法只能处理static类型的数据
静态初始化器
石油关键字static引导的一对大括号括起的语句组
静态初始化器与构造函数的区别:
构造函数是对每个新创建的对象初始化,而静态初始化器是对每个类进行初始化
构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用运行的
不同于构造函数,静态初始化器不是方法,没有方法名,返回值和参数列表
抽象类
当一个类被生命为abstract时,这个类被称为抽象类
所谓抽象类就是没有具体实例对象的类
抽象类是它所有子类的公共属性的集合
使用抽象类的一大优点就是可以利用这些公共属性来提高开发和维护程序的效率
最终类,最终属性,最终方法,终结器
最终类
如果一个类被final修饰符所修饰和限定,说明这个类不可能拥有子类
最终属性
final就是用来修饰常量的修饰符,一个类的成员变量如果被声明为final,那么它的取值在程序的执行过程中都不会改变,也就是一个常量
用final修饰符说明常量时:
需要说明常量的数据类型
需要同时指出常量的具体取值
因为所有类的对象的常量成员,其数值都固定一致,为了节省空间,常量通常都被声明为static
final修饰符所修饰的类方法,是功能和内部语句都不能被更改的最终方法,即是不能被当前类的子类重载的方法
final方法固定所对应的具体操作,防止子类对父类关键方法的错误的重定义,保证了程序的安全性和正确性
所有已被private修饰符限定为私有的方法,以及所包含在final类中的方法,都被缺省的认为是final的
终结器
终结器是回收对象时执行的方法
protected void finalize(){}
终结器是一个名为finalize的方法,没有产生列表和返回值
volatile修饰符
被volatile修饰的类的属性可能同时被几个线程控制和修改
通常用来修饰受外部输入的属性
建立热点:
1 | @echo off |
关闭热点
1 | netsh wlan set hostednetwork mode=disallow |
win10上搭建raby on rails环境:
步骤如下
1.安装ruby (我选择的版本是ruby 2.2.3p173)
2.安装rails gem
在这之前建议先把gem的源换成淘宝的源,速度快点。
1 | $ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/ |
之后:
1 | gem install rails |
3.安装devkit
下载地址;
http://rubyinstaller.org/downloads
如果是win10,选择DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe
这个版本的。
然后运行,将程序解压到c:\devkit
进入c:\devkit目录
1 | ruby dk.rb init |
之后修改config.yml
添加下面三行
1 | --- |
注意把路径换成当前ruby的安装路径,-前后各有一个空格不可忽略。
然后:
1 | ruby dk.rb install |
最后进入需要建立工程的目录,使用如下命令新建rails项目
1 | rails new testapp |
如果在此过程中报错,则进入testapp中
使用
1 | bundler install |
来安装所需要的依赖包。
如果还报错,修改testapp目录中的Gemfile
将第一行的sources源内容改为
1 | source 'https://ruby.taobao.org/' |
然后再执行bundler install命令
Debian中搭建ruby on rails开发环境
假设你已经安装好ruby了
接下来安装rvm
1 | $ curl -L https://get.rvm.io | bash -s stable |
某些情况下,可能需要编译一下rvm的初始化脚本
我的位置是在/etc/profile.d/rvm.sh,所以运行这一句:
1 | $source /etc/profile.d/rvm.sh |
接着安装bundler
1 | gem install bundler |
然后安装rails
1 | gem install rails |
如果这地方出现错误,尝试使用rvm切换ruby的版本:
1 | rvm install 2.0.0 |
CentOS中搭建ruby on rails开发环境
1 | $curl -L https://get.rvm.io | bash -s stable |
python:
先按F5,之后将下面的命令保存,再设置快捷键。
1 | cmd /k c:\python27\python "$(FULL_CURRENT_PATH)" & PAUSE & EXIT |
我使用的是Ctrl+F9
之后按Ctrl+s保存更改,再按Ctrl+F7即可快速在cmd中运行代码,方便调试。
ruby
1 | cmd /k C:\Ruby22-x64\bin\ruby "$(FULL_CURRENT_PATH)" & PAUSE & EXIT |
Update your browser to view this website correctly. Update my browser now