以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式:
Class A实现接口CallBack callback——背景1
class A中包含一个class B的引用b ——背景2
class B有一个参数为callback的方法f(CallBack callback) ——背景3
A的对象a调用B的方法 f(CallBack callback) ——
继续阅读 »
每年的快到毕业季的时候,校园里总会热闹许多,很多平时见不到的人都开始频繁出现。校门外的饭店生意也越加红火,每天都有人不管有没有理由都拉着同学去吃饭、喝酒、K歌。听着将要毕业的朋友述说大学生活的短暂,不由得想到自己校园生活可能也没多长了。
继续阅读 »
最近发生了好多好多事情,生活方式大变模样,拖拖拉拉搞了很久,今天终于有勇气开始把近期的事情记录下来。
这个 title 实在很难起啊,就乱七八糟来一个吧~!
more
二三月份的时候,工作不是那么饱和,人闲着就是喜欢东想西想,就觉得自己这段时间工作上没什么进步,学不到东西,自学又没有强大的驱动力,效果很差。
继续阅读 »
3 月 16 日下午,我跟实验室另一个前端同学到广电科技大厦进行 UC 的笔试,虽然去的过程比较曲折,但我们最后还是准时到达了指定地点,准备笔试。
因为太多人原因,我们被安排到了 14 楼的 UC 员工餐厅中进行笔试,然后 3 点 10 分左右,我们就开始正式笔试了,笔试是分不同的方向的,下面我们就来看看 UC 的笔试题(题目只能凭记忆复原,不保证准确)
继续阅读 »
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 7.1. OOP: The general theory.
概述
本文主要讨论 ECMAScript 中面向对象编程。之前已经有大量的文章讨论过该话题了,但本文与那些文章不同,本文主要从理论方面来解析其内部原理。重点讨论对象创建算法,对象之间的关系(包含最基本的关系 -- 继承)是如何形成的,并给出了明确的定义(我希望这可以消除一些文章中对于 JavaScript 中 OOP 的疑虑和混乱)。
more
概论、范式和思想
在开始讨论之前,有必要掌握一些 OOP 的基本特征,并弄清楚一些基本概念。
ECMAScr
继续阅读 »
有些网站的导航下面会有一到杠,鼠标在各个导航之间移动的时候,这一道杠也会跟着动,很好看,就像这个
See the Pen ooo-nav by Oliver (@ochukai) on CodePen.
我把她叫做小精灵。
原理
实现这个其实不难,当鼠标移动到某一个菜单上面时,小精灵滑入(至于方向,如果鼠标从右边进入菜单,那就从右向左滑),然后当鼠标移出时,小精灵跟着也移出菜单, 同时如果鼠标恰好移进了另一个菜单,下一个菜单的进入动画也开始播放,连续起来的话就像是小精灵跟着过来了。
实现
菜单
菜单的话当然是用 ul 来实现了
html
我的
导航栏
非常
牛逼
小精灵
这个小精灵该怎么实现
继续阅读 »
介绍
所谓树状数组,就是将线性的数组预处理成树状的结构以降低时间复杂度。先来看一幅经典的图:
其中的a数组为原生数组,c数组为辅助数组,计算方式为: $$c_1=a_1——{(1)}{10}={(1)}_2$$ $$c_2=a_2+c_1——{(2)}{10}={(10)}_2$$ $$\ldots$$ 不难发现,c[k]存储的实际上是从k开始向前数k的二进制表示中右边第一个1所代表的数字个元素的和。这样写的好处便是可以利用位运算轻松计算sum。上代码。
Code
var
n, i: longint;
a, c: array [1..10000] of longint;
//计算x最右边的1所代表的数字。
继续阅读 »
这几天开始工作了,工作中使用了git进行项目管理,这才发现原来我以前所知道的git使用那只是一点皮毛。
写一些这几天用到的一些git技巧喽,以后有的话继续更新啦。
git status 查看当前的状态,那些文件修改了,那些文件创建还没有add的。
more
git add . 添加所有的修改
或者
git add 文件名或者文件路径,添加指定的
git stash 将没有commit的部分文件放到暂存栈去,这样从服务器pull文件的时候不会有问题。
git stash
继续阅读 »
MkDocs
MkDocs(官网、Github)是一款使用python开发的轻量级静态站点生成器,主要用于生成api文档,使用markdown撰写,使用yaml作为配置文件。
安装
首先需要安装python以及pip,然后使用pip即可安装MkDocs。
sudo apt-get install python
sudo apt-get install python-pip
sudo pip install mkdocs
安装完成之后,可以执行命令mkdocs --version查看所安装版本。
开始使用
执行以下命令新建一个工程。
mkdocs new demo
cd demo
生成的目录里结构如下:
p
继续阅读 »
十年前,我根本就没想到自己会喜欢上coding,变成一个程序员。
2006年进入大学,专业是电子信息科学与技术,迷茫的渡过了4年,当然期间也曾努力过,但大多数时间都是混日子而已,临近毕业,工作签了一个打着飞毛腿名号招聘的西安本地通信公司, 公司当时大量招人,听说是在竞标项目,需要提前做通信人才储备,至此,我开始了我短暂的网优生涯,经过了紧张的培训学习之后,学校一起签工作的人慢慢脱颖而出,也可能是我们几个觉得工作来之不易,相对比较珍惜,培训完考核我们基本都是优秀员工,还记得和猴哥一起为了大四期末考试奔波回学校,培训期间追剧,看球赛。第一份工作(注:这不算真正意义上的工作,因没有签订劳动合同)学会了珍惜,也见识了残酷,培训期间有个别学
继续阅读 »