- 博客(279)
- 资源 (7)
- 收藏
- 关注
原创 java中的编码
编码方式规定了语言的最小单位用什么二进行制数字来表示,比如“UTF-8”编码中就有规定一个汉字用3个字节来表示,以及每个汉字对应哪3个字节。java中的String是用来表示多国语言的,java支持的语言在对应的编码方式下都能找到相应的byte数字表示,但并不是任意的byte(或byte数组)都能对应到一个字--即使尝试所有的编码方式。String一定是有编码方式的,但文件不一定有,比如二进制
2013-06-15 19:35:15 1106
原创 java按值传递
C语言中可以使用指针*或引用&把一企业基本数据类型传到一个函数里面,然后改变它的值,Java没有这个功能。Java中所有的赋值操作=和函数传参,传递的都是“值”,但是要特别强调一下,对于引用数据类型(除基本数据类型以外的所有java数据类型,String也属于引用数据类型)的变量,变量本身的值是指向那片内存的地址。StringBuffer a=new StringBuffer("
2013-06-15 14:03:46 1012
原创 vim常用命令
光标移动0行首$行尾gg第一行G最后一行nG移到第n行n向后移n行n向后移n个字符pageup向上翻页pagedown向下翻页插入i光标前I行首插入a光标后插入A行尾插入o在下一行插入O在上一行插入 复制yy复制当前行5yy复制从当前行开始的5行 粘贴p粘贴到下一行P粘贴到上一行 删除dd删
2013-05-03 12:28:30 957
原创 几个任务执行相关的类
Runnable正面就是Runnable的完整定义,非常简单。public interface Runnable { public abstract void run();}CallableCallable和Runnable的功能非常相似,一样的简捷,但是Callable更强大。public interface Callable { V call()
2013-03-16 16:22:17 1271
翻译 Executors,Timer,DelayQueue,Interruption
在Java类库中执行任务的主要抽象不是Thread,而是Executor。ExecutorWeb服务器上为每个请求创建一个线程存在诸多弊端:如果请求到达的频率很高,而请求的处理又是轻量级的,那创建和销毁线程的开销相对就很高。线程数多于可用处理器数时,大量线程会闲置,空闲的线程会战胜大量的内存,而且大量线程在竞争CPU资源时会产生其他的性能开销。可创建线程的数量有一个上限。这跟平
2013-03-15 14:44:13 1431
翻译 一种高效可伸缩的缓存设计方法
几乎所有的服务器应用中都要使用缓存,重用之前的计算结果能降低延迟,提高吞吐量,但是要消耗更多的内存。Memorizer1简单地使用HashMap来缓存之前的计算结果:public interface Computable { V compute(A arg) throws InterruptedException;}public class Memorizer1 impleme
2013-03-13 22:09:38 1034
翻译 CountDownLatch,FutureTask,Semaphore,Barrier,Exchanger
CountDownLatch当希望所有线程在某一个点上进行同步时,可以考虑使用闭锁。public long timeTasks(int nThreads,final Runnable task) throws InterruptedException{ //起始门计数器初始值设为1 final CountDownLatch startGate=new CountDownLatch(1)
2013-03-13 17:28:16 1361
翻译 Java容器的线程安全
同步容器类同步容器类包括Vector和Hashtable(二者是早期JDK的一部分),还包括JDK1.2中添加的一些相似的类。同步容器类实现线程安全的方式是:将状态封闭起来,并对每个公有方法进行同步,使得每次只有一个线程能访问容器状态。这里解释一下所谓“状态”指的就是成员变量,“封装起来”即将它们设不private,但是通过公有的方法外界仍然可以访问修改类的私有成员,所以要用synchroni
2013-03-13 11:43:45 2726
原创 Java序列化
将一个对象编码成一个字节流,称为序列化(serializing),相反的过程为反序列化。一旦对象序列化后,它的编码就可以从一台正在运行的虚拟机被传递到另一台虚拟机上,或者被存储到磁盘上,供以后反序列化时用。序列化对远程通信提供了标准的线路级对象表示法,也为JavaBean组件结构提供了标准的持久化数据格式。
2013-03-12 19:37:59 759
原创 Eclipse快捷键
搜索显示搜索对话框:Ctrl+H打开资源:Ctrl+Shift+R打开类型:Ctrl+Shift+T快速Outline:Ctrl+O在Workspace 中搜索选中的元素声明:Ctrl+G在Workspace 中搜索选中的文本:Ctrl+Alt+G在Workspace 中搜索元素的引用:Ctrl+Shift+G打开类层次结构:Ctrl+T打开调用层次结构
2013-03-05 16:41:48 870
原创 Java变量自动初始化
相比于C++中变量的自动初始化,Java中的变量自动初始化就简单多了。对于函数之外的变量--也就是域成员变量,基本数据类型自动初始化为0,boolean值初始化为false,装箱类型(比如Integer,Boolean等)以及其他引用类型(包括String)初始化为null。对于数组或集合,按照其元素类型的初始化方式进行初始化。函数之内的变量一律不进行自动初始化,初始化之前使用这些变量会造
2013-03-04 08:55:34 1150
原创 Java注解
Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。元注解元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。@Retention: 定义注解的保留策略
2013-03-02 14:11:39 744
原创 Java枚举
public class A { public enum Apple{FUJI,PIPPIN,GRANNY} public enum Orange{NAVEL,TEMPLE,BLOOD} public static void main(String[] args){ for(Apple a:Apple.values()) System.out.println(a);
2013-03-01 21:51:00 853
原创 Java泛型
泛型的主要功能是提供编译时类型检查,原生态类型(即不使用泛型)躲避了编译时类型检查,不推荐使用,在IDE中编辑时会有警告。泛型有子类化(subtyping)规则。参数化类型的List是原生态类型List的一个子类型,但不是参数化类型List的子类型。在泛型中不承认参数之间的继承关系。但是ArrayList是List的子类。与泛型刚好相反,数组是协变(covariant)的,即Sub为Super的子
2013-02-28 21:50:41 841
原创 用函数对象表示策略
Java中的函数对象功能上类似于C语言中的函数指针,是一种策略模式。public class StringLengthComparator { public int compare(String str1,String str2){ return str1.length()-str2.length(); }}像上面代码这样,一个类仅仅是提供了一个方法,而这个方法是对其他对象(这些
2013-02-28 16:10:56 764
原创 单例模式
本文讲Java中单例模式的3种实现方法。方法一public class Elvis { public static final Elvis INSTANCE=new Elvis(); private Elvis(){}}强制把构造函数私有化,只能通过INSTANCE来得到实例,并且这个实例只有1个。同时,INSTANCE中final类型,不可被更改。但是
2013-02-27 11:16:19 865
原创 Builder模式创建对象
package builder;public class NutritionFacts { //必选参数 private final int servingSize; private final int servings; //可选参数 private final int carlories; private final int fat; private final int s
2013-02-26 21:14:30 926
原创 服务提供者框架
//服务接口public interface Service { public void move();}public class Train implements Service{ public void move(){ System.out.println(this.getClass().getName().substring(this.getClass().getName().
2013-02-26 19:41:00 854
原创 如何保持http会话
刚才面试被别人问到这个问题,不会。记录一下。在HTTP的WEB应用中, 应用客户端和服务器之间的状态是通过Session来维持的, 而Session的本质就是Cookie, 简单的讲,当浏览器向服务器发送Http请求的时候, HTTP服务器会产生一个SessionID,这个SessionID就唯一的标识了一个客户端到服务器的请求会话过程。为了保持这个状态, 当服务端向客户端回应的时
2013-02-25 10:32:02 1325
原创 高频面试题
非常地失落,我觉得这些问题非常的无趣,所以不想挂在博客上。但是某公司每次都问这些问题,还是总结一下吧。malloc/free和new/delete的区别malloc/free是C语言的标准库函数,new/delete是C++的运算符。 由于malloc/free是库函数而不是运算符,不在编译器控制权限之内。对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要
2013-02-25 10:31:03 508
原创 C/C++面试题
1.求下面函数的返回值(微软)int func(x){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx;}假定x = 9999. 答案:8思路:将x转化为2进制,看含有的1的个数。 2. 什么是“引用”?申明和使用“
2013-02-25 10:30:05 715 1
原创 模型的评估
光决策树我们就介绍了好几种模型,这里有一些重要的问题:如何验证(verification)和确认(validation)一个模型?对于一个个体的问题,使用哪种方法?如何将一种方法与另一种比较?通常高质量的数据是短缺的,下面我们讨论如何在有限的数据上检验模型的预测性能。再代入法。同一个数据集,先用于训练,再用于检验。这种方法对误差率的估计是偏向乐观的,在现实中很少使用,当
2013-01-05 19:05:17 795
原创 C4.5决策树
C4.5决策树在ID3决策树的基础之上稍作改进,请先阅读ID3决策树。C4.5克服了ID3的2个缺点:1.用信息增益选择属性时偏向于选择分枝比较多的属性值,即取值多的属性2.不能处理连贯属性OutlookTemperatureHumidityWindyPlayGolf?sunny8585FALSEnosunny
2013-01-05 18:32:23 832
原创 Ridge Regression岭回归
数值计算方法的“稳定性”是指在计算过程中舍入误差是可以控制的。对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为“病态矩阵”。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。对于高斯消去法来说,如果主元(即对角线上的元素)上的元素很小,在计算时就会表现出病态的特征。回归分析中常用的最小二乘法是一种无偏估计。当X列满秩时,有
2013-01-05 18:32:21 1470
原创 curse of dimensionality维数灾难
或者翻译成维度的咒语,这个咒语出现在很多方面:sampling采样如果数据是低维的,所需的采样点相对就比较少;如果数据是高维的,所需的采样点就会指数级增加,而实现中面对高维问题时往往无法获得如此多的样本点(即使获得了也无法处理这么庞大数据量),样本少不具有代表性自然不能获得正确的结果。combinatorics组合数学由于每个维度上候选集合是固定的,维度增加后所有组合的总数就会指数
2013-01-05 18:32:19 607
原创 perl中my与local的区别
转载:http://blog.sina.com.cn/s/blog_4fcdb9280100l46v.htmlmy: lexically scoped variablelocal:Dynamically scoped variable 内部->外部:(1)my和local都只在一个block里有效,出去就失效;(2)但是local的变量可以继续在这个block中调用的子程序中存在;
2013-01-05 18:32:16 532
原创 拉格朗日乘子法和KKT条件
拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。前提是:只有当目标函数为凸函数时,使用这两种方法才保证求得的是最优解。对于无约束最优化问题,有很多经典的求解方法,参见无约束最优化方法。拉格朗日乘子法转换为系数λi称为拉格朗
2013-01-05 18:32:14 1125
原创 大数加法
两个很大的整数--超过了INT_MAX,它们怎么做加法呢?把它们当作字符串,逐位进行相加喽。#include#includestring.h>#includechar* add(const char *arr,const char *brr){ int lena=strlen(arr); int lenb=strlen(brr); int ma
2013-01-05 18:32:11 481
原创 __stdcall和__cdecl的区别
__stdcall和__cdecl是两种函数名字修饰。(注意是连续的两个下划线)Windows上windows上不管是C还是C++,默认使用的都是__stdcall方式。不论__stdcall还是__cdecl函数参数都是从可向左入栈的,并且由调用者完成入栈操作。对于__stdcall方式被调用者自身在函数返回前清空堆栈;而__cdecl则由调用者维护内存堆栈,所以调用者函数生成的汇编
2013-01-05 18:32:09 487
原创 C++继承
先上一段代码:#includeusing namespace std;class Base{public: int a;protected: int b;private: int c;};struct Derived:public Base{};int main(){ Derived inst; cout<<sizeo
2013-01-05 18:32:07 413
原创 栈溢出
栈是从高地址向低地址方向增涨,堆的方向相反。在一次函数调用中,栈中将被依次压入:参数,返回地址,EBP。如果函数有局部变量,接下来,就在栈中开辟相应的空间以构造变量。在C语言程序中,参数的压栈顺序是反向的。比如func(a,b,c)。在参数入栈的时候,是:先压c,再压b,最后a。在取参数的时候,由于栈的先入后 出,先取栈顶的a,再取b,最后取c。C语言是不作栈溢出检查,如下代码可以正常
2013-01-05 18:32:04 604
原创 union变量存储
字节序小端字节序(Little Edian)指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。比如整形1在内存中的存放情况是:而换成大端字节序(Big Edian)则是:基于Intel X86的体系结构的PC机是小端字节序,我们可以写一个程序来验证。#includemain(){ int num=1; int c=num>>24; pri
2013-01-05 18:32:02 467
原创 struct变量存储
在没有#pragma pack宏的情况下,结构体中的变量存储遵循以下对齐原则:原则一:第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从其自身大小的整数倍开始。原则二:结构体的总大小,也就是sizeof的结果,必须是其内部最大数据成员的整数倍,不足的要补齐。原则三:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大数据成员大小的整数倍地址开始存储。
2013-01-05 18:32:00 522
原创 卡特兰数Catalan Number
Catalan Number满足下列递推公式:N个元素元素进栈,多少种出栈方式考虑A、B、C、D依次进栈,那么所有的出栈顺序是下列4种情况的并集:1)A第一个出栈。肯定是A进栈后马上出栈,剩下B、C、D的出栈顺序有h(3)种。h(0)*h(3)。2)A第二个出栈。在A之前出栈的肯定是B,B的出栈顺序有h(1)种,剩下C、D的出栈顺序有h(2)种。h(1)*h(2)。
2013-01-05 18:31:57 461
原创 分类回归树CART(上)
分类回归树(CART,Classification And Regression Tree)也属于一种决策树,上回文我们介绍了基于ID3算法的决策树。作为上篇,这里只介绍CART是怎样用于分类的。分类回归树是一棵二叉树,且每个非叶子节点都有两个孩子,所以对于第一棵子树其叶子节点数比非叶子节点数多1。表1名称体温表面覆盖胎生产蛋能飞水生有腿冬眠
2013-01-05 18:31:55 956
原创 libevent基础
关于I/O利用,不同的平台上都有相应的策略,比如select、poll、epoll、kqueue、devpoll、evport、win32。为libevent提供一组库函数,屏蔽了平台的差异性,底层还是调用的epoll、kqueue、devpoll等函数。libevent会使用优化的策略来选择使用哪个后端方法,以达到效率最高。创建event_basestruct event_base *e
2013-01-05 18:31:52 469
原创 Linux I/O复用
epoll首先看个结构体typedef union epoll_data{ void *ptr; int fd; uint32_t u32; uint64_t u64; } epoll_data_t; struct epoll_event { uint32_t events; /* Epoll events *
2013-01-05 18:31:50 367
原创 基于网站风格树SST的网页噪声去除
网页噪声去除可以看作是一个分类问题:把一个网页片断分为”有用信息“和”噪声“。在有大量训练样本的情况下可以使用SVM进行分类。一种直接的想法把HTML转换成DOM树,对每个节点计算链接文字比率,如果高于一定的阈值,就认为它不是正文,而是页眉、页脚、广告等其他信息。元素节点与风格节点图1.两个网页的DOM结构 图2.合并之后的网站风格树在网站风格树(Site Styl
2013-01-05 18:31:48 661
原创 不要一个人吃饭
《不要一个人吃饭( Never Eat Alone)》一书介绍了21世纪的交际规则。1.努力让自己的付出多于回报因为你会为别人提供价值,别人才会联系你。所以多考虑别人而不是自己。2.不要保留 不要以为友谊是有限的。这是投资,会越滚越多。3.成功的关键是慷慨大方在社交中通行的不是贪图便利,而是慷慨大方。 4.在你需要前,打造好人际网络 要你发现要用到别人之前,就尽早的保持联系。重要的是把这些人当做是
2013-01-05 18:31:45 485
原创 回溯
回溯算法的求解过程实质上是一个先序遍历一棵"状态树"的过程,只是这棵树不是遍历前预先建立的,而是隐含在遍历过程中。幂集即求一个集合的所有子集。比如对于集合A={1,2,3},则A的幂集为p(A)={{1,2,3},{1,2},{1,3},{1},{2,3},{2},{3},Φ}求幂集P(A)的元素的过程可看成是依次对集合A中元素进行“取”或“舍”的过程,并且可以用一棵状态树来表示。求幂
2013-01-05 18:31:43 426
bow
2011-09-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人