对于新入门的开发者,如何安装Ruby,RubyGems和Rails的运行环境可能会是个问题。下面学步园小编来讲解下如何快速正确的安装Ruby,Rails运行环境?
如何快速正确的安装Ruby,Rails运行环境
系统需求
首先确定操作系统环境,不建议在Windows上面搞,所以你需要用:
MacOSX
任意Linux发行版本(Ubuntu,CentOS,Redhat,ArchLinux...)
以下代码区域,带有$打头的表示需要在控制台(终端)下面执行(不包括$符号)
...
阅读全文
大家都知道重载是指在同一个类中,定义了有相同名称但是有不同参数类型的方法时,到底调用那一个方法会根据参数类型来选择。下面学步园小编来讲解下JAVA重载(overload)和覆盖(override)有哪些陷阱?
JAVA重载(overload)和覆盖(override)有哪些陷阱
classParentClass{
}
classChildClassextendsParentClass{
}
publicclassTest{
publicvoidtestOverLoad(ParentClasscls){
System.out.println...
阅读全文
java项目中经常需要用到到当前日期的前若干天、后若干天、前几小时、后几小时的时间.在开发中经常会使用到一些日期方面的操作。下面学步园小编来讲解下Java中获取指定日为星期几及其他日期怎么操作?
Java中获取指定日为星期几及其他日期怎么操作
取得指定日期是星期几可以采用下面两种方式取得日期是星期几:
a、使用Calendar类
[java]
//根据日期取得星期几
publicstaticStringgetWeek(Datedate){...
阅读全文
在非ajax页面中,只要在page上设置MaintainScrollPositionOnPostback="true"即可进行记忆滚动条位置. 但是在ajax中,这个功能却不能正确工作了,那么我们应当如何让div自动维护滚动条位置呢?下面学步园小编来讲解下如何让div自动维护滚动条位置?
如何让div自动维护滚动条位置
首先在页面上增加asp:panel控件,然后在aspx.cs后台加入以下方法:
[c#]
protectedvoidDoMaintainScrollPositionForAjax(UpdatePane...
阅读全文
c++的代码包含头文件和实现文件两部分,头文件一般是提供给别人(也叫客户)使用的,但是一旦头文件发生改变,不管多小的变化,所有引用他的文件就必须重新编译,编译就要花时间。下面学步园小编来讲解下怎样减少C++代码编译时间?
怎样减少C++代码编译时间
言归正传,怎样介绍编译时间呢,我知道的就3个办法:
删除不必要的#include,替代办法使用前向声明(forwarddeclared)
删除不必要的一大堆私有成员变量,...
阅读全文
归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。
基本思想
可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就是递归拆分子序列的过程。
合...
阅读全文
类锁和对象锁,synchronized修饰static方法与非static方法的区别
当synchronized修饰一个static方法时,多线程下,获取的是类锁(即Class本身,注意:不是实例),作用范围是整个静态方法,作用的对象是这个类的所有对象。
当synchronized修饰一个非static方法时,多线程下,获取的是对象锁(即类的实例对象),作用范围是整个方法,作用对象是调用该方法的对象。
结论: 类锁和对象锁,一个是类的Class对象的锁,一个...
阅读全文
synchronized 加到 static 方法前面是给class 加锁,即类锁;而synchronized 加到非静态方法前面是给对象上锁。这两者的区别我用代码来演示下:
对象锁和类锁是不同的锁,所以多个线程同时执行这2个不同锁的方法时,是异步的。
在Task2 中定义三个方法 doLongTimeTaskA和doLongTimeTaskB是类锁,而doLongTimeTaskC是对象锁。
public class Task2 {
public synchronized static void doLongTimeTaskA() {
...
阅读全文
通过分析Synchronized和Static Synchronized这两个用法的分析,我们可以理解java中锁的概念。一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),一个是全局锁(该锁针对的是类,无论实例多少个对象,那么线程都共享该锁)。实例锁对应的就是synchronized关键字,而类锁(全局锁)对应的就是static synchronized(或者是锁在该类的class或者classloader对象上)。下面的文章做了很好的总结:
...
阅读全文
为什么需要倒排索引
倒排索引,也是索引。
索引,初衷都是为了快速检索到你要的数据。
每种数据库都有自己要解决的问题(或者说擅长的领域),对应的就有自己的数据结构,而不同的使用场景和数据结构,需要用不同的索引,才能起到最大化加快查询的目的。
对 Mysql 来说,是 B+ 树,对 Elasticsearch/Lucene 来说,是倒排索引。
Elasticsearch 是建立在全文搜索引擎库 Lucene 基础上的搜索引擎,它隐藏了 ...
阅读全文