做题总是心态有点乱,卡题了就很难熬。
要有自信,题目总是可以做出来的
做题总是心态有点乱,卡题了就很难熬。
要有自信,题目总是可以做出来的
看到了一个帖子,说lighttpd可以直接播放mkv,而nginx不行。有点奇怪,所以尝试了一下lighttpd,发现点击mkv文件还是显示下载,不能和mp4一样直接播放,但是chrome是支持mkv播放的,本地同样的文件拖入chrome是可以完美播放的。
后来去找了一下相关的原因,在stackoverflow上面发现mkv是下载还是直接播放取决于mime类型,mime类型如果是video/webm的是可以直接播放的
所以之后又尝试了一下在lighttpd和nginx指定mime类型映射列表
|
|
这样的话点击mkv文件会直接播放而不是下载。
但是chrome的文件类型支持有限,所以有些本地不能播放的网络上肯定是更加不可能的了。
gem install rails
安装需要花点时间,最好显示一下进度
gem install rails -V
安装中报错:
要安装一个ruby-dev
ubuntu 上面安装可能会出现cannot find lib文件夹
需要在gems的ruby目录下建立一个ruby文件夹
今天遇到了一个特别坑的地方。
我在action里面写一个变量叫gId,然后jsp上写上xxx.action?gId=1
然后到action函数里面竟然打不出gId的值。。set和get方法都写了。。
网上找不到一个答案。。
后来看了一下那个myeclipse自动生成的set和get方法叫setgId,getgId
看起来不太顺眼。。
然后把那个gId该名成了gid,自己写了setGid和getGid,这样才能获取到值。。
myeclipse真是好不靠谱啊。。
还有生成hiberate的xml文件都会少一个空格的,实在是醉了。。
java变量的命名规则如下:
按照道理说gId这样命名应该没问题的吧?
看样子之后写成员变量要全小写了。
redsocks 不说明
iptables配置
mysql数据库导出
myeclipse出现未知问题
手动开栈:
java web 错误:No result defined for action xxx and result input
可能是因为select 有误,struct 拦截器会跳转到 “input”
今天写了个判断一个数的k次方是否超过另个数
然后当时想都没想就用了快速幂
(其中那个数的k次方可能超过long long)
第一个版本:判断x ^ n 是否大于m
下面这样是错的。。因为数据一大x超过long long 变成0,res也从1变成了0.
例子是:1000 536870912 1000
试了试加了个条件。x > m跳出。
发现还是错了,看这组数据:3 2 1
还需要再加个条件。。n>0.因为可能n已经为0了但是x大于了m.
其实这个东西不写快速幂就很快了,指数函数式爆炸上升的。。手残写了快速幂还错。。下次要牢记啊。
并查集是一个树形的数据结构,能够实现快速查询两个数是否属于同一个集合。
并查集虽说是树形的结构,但是一个节点只记录了父亲,不记录子节点,因为记录子节点完全没有必要。
怎么标记两个节点属于一个集合?比如两个节点是a和b,则只需要fa(a) = fa(b),fa(a)是a最原始的祖先。这样的话两棵树就连在了一起。要查询两个节点是否在同一个集合,只需要分别计算fa(a)和fa(b),只要两者一样就代表他们在同一颗树,也就是属于同一个集合。
当然,并查集只能只有上述两个操作,不能够修改节点集合之间的关系,也不能嵌套之类的。如果真的要实现这些复杂的操作,那么只能够求靠动态树了。
并查集一个操作的复杂度在于找父亲,可以每次merge的时候让这棵树平衡一点加快并查集的查询速度。
并查集的一个应用就是求最小生成树的kruskal算法。每次选择最短的边,把两个相连的点标记为在同一个集合,知道所有点都加入集合,就得到最小生成树了。
下面是并查集一个实现:
splay 是一种很灵活的数据结构。它是动态树的基础,动态树是维护树上数据的神器啊~
splay是一种特殊的二叉查找树,与平衡树不同,不是按照判断高度来降低深度的。
每次插入一个点,或者每次处理一个点,都需要进行一次splay操作把该点移动到根,根据数据的局部性原理,可以使处理变得快一点。
###它有以下规则:(p是x的parent节点)
splay可以替代线段树进行更加复杂的区间操作,但是一般如果不是线段树解决不了的问题,尽量不能用splay做,因为splay常数比线段树大很多。
splay的维护懒惰标记也很巧妙,每次旋转的时候先把标记下降,然后旋转,旋转之后只有该节点原来的父亲的数据会发生变化,需要pushup一下,当前节点的数据可以等位置固定了之后再维护。
如果要计算一段区间内的值,可以先把该段位置的前一个节点splay到根,然后把该段位置的后一个节点splay到root,这样的话,后一个的节点的左子树就是该段区间所维护的值了。
下面是一个实现:
|
|
线段树是一种非常常用的数据结构,能够在log的时间内对数组进行区间修改,区间合并等操作。它的局限性也很明显,如果操作不是在数组上,而是在一颗树上,那么线段树将无能为力。
树链剖分为线段树的这个缺点提供的有效的解决方法,即把树转化为链。尽可能把树上的操作转化为链的操作。
如下图所示,粗的线条就是重链,细的是轻链,标号是其在线段树中的位置
树链剖分把一棵树标号,把树上的链分为重链和轻链两种。重链就是父亲到最重的儿子上的一条边。且转化出来的相连的重链标号连续。所有链的编号不同。我们知道,树上的每两个点之间的路径都是唯一的。标号之后,树上每两点的路径是由重链和轻链交替连接的,重链会尽量的长(这就是剖分轻重链的优点)。
因为重链比较长,所以树上两个点的路径轻重链的条数会很少,而因为重链标号是连续的,所以可以把链上的数据维护在线段树中,lg(n)复杂度时间内就能够完成一条重链的操作。效果非常不错。
下面是一个例子的实现:
|
|