摘要:static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。static变量前可以
阅读全文
摘要:一、问题描述给定一个字符串,求出其最长重复子串例如:abcdabcd ,最长重复子串是 abcd最长重复子串可以重叠例如:abcdabcda ,这时最长重复子串是 abcda ,中间的 a 是被重叠的。二、分析1、直观的解法首先检测长度为 n - 1 的字符串情况,如果不存在重复则检测 n - 2, 一直递减下去,直到 1 。这种方法的时间复杂度是 O(N * N * N),其中包括三部分,长度纬度、根据长度检测的字符串数目、字符串检测。2、使用后缀数组后缀数组:例如对于字符串String str="banana"的后缀数组是a[0]="anana",a
阅读全文
摘要:一、概述树状数组(binary indexed tree),能够高效地获取数组中连续n个数的和。概括说,树状数组通常用于解决以下问题:数组A中的元素可能不断地被修改,怎样才能快速地获取连续几个数的和?二、树状数组基本操作普通数组(共n个元素)的元素修改和连续元素求和的复杂度分别为O(1)和O(n)。树状数组通过将线性结构数组转换成伪树状结构(线性结构只能逐个扫描元素,而树状结构可以实现跳跃式扫描),使得修改和求和复杂度均为O(lgn),大大提高了整体效率。给定序列(数列)A,我们设一个数组C满足C[i] = A[i–2^k+ 1] + … + A[i] //其中,k为i在二进制下末尾0的个数,
阅读全文
摘要:一、文件描述符要明白这两个输出的含义,首先要明白数字的含义。在 shell 程式中,最常使用的 FD (file descriptor) 大概有三个, 分别是: 0: Standard Input (STDIN) 1: Standard Output (STDOUT) 2: Standard Error Output (STDERR) 在标准情况下, 这些FD分别跟如下设备关联: stdin(0): keyboard 键盘输入,并返回在前端 stdout(1): monitor 正确返回值 输出到前端 stderr(2): monitor 错误返回值 输出到前端 二、例子当前目录只有一个文件
阅读全文
摘要:一、使用原因Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。二、Class的特点1、Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个Class对象。2、虚拟机为每种类型管理一个独一无二的Class对象。也就是说,每个类(型)都有一个Class
阅读全文
摘要:一、定义JAVA反射机制是在运行状态中:1)对于任意一个类,都能够知道这个类的所有属性和方法;2)对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。二、提供的功能:1)在运行时判断任意一个对象所属的类;2)在运行时构造任意一个类的对象;3)在运行时判断任意一个类所具有的成员变量和方法;4)在运行时调用任意一个对象的方法;5)生成动态代理。三、使用的原因1、扩展未知的应用。比如你写了一个程序,这个程序定义了一些接口,只要实现了这些接口的dll都可以作为插件来插入到这个程序中。那么怎么实现呢?就可以通过反射来实现。就是把dll加
阅读全文
摘要:一、无继承情况静态变量、初始化块→非静态变量、初始化块→构造函数示例:Base类class Base{ public static String baseStaticStr="静态变量"; { System.out.println("Base.非静态初始化块()"); } static{ System.out.println("Base."+baseStaticStr); System.out.println("Base.静态初始化块()"); } public Base() { // TODO Aut...
阅读全文
摘要:一、引入原因 http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息。Cookie就是应这种需要出现的。 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。 同时我们也看到,由于采用
阅读全文
摘要:一、su(切换用户)su username1 //具体参数可以使用--help / man/ info或:su - username1两者的区别是:su 是切换到其他用户,但是不切换环境变量(可以使用export命令查看一下)su - 是完整的切换到一个用户环境二、sudo(授权许可的su)1. sudo 的适用条件 由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性.
阅读全文
摘要:所谓对称子字符串,就是这个子字符串要么是以其中一个词对称:比如 “aba”, “abcba”;要么就完全对称:比如"abba", "abccba"。思路:首先,我们用字符数组 char[] array 来保持这个字符串,假设现在已经遍历到第 i 个字符,要找出以该字符为“中心”的最长对称字符串,我们需要用另两个指针分别向前和向后移动,直到指针到达字符串两端或者两个指针所指的字符不相等。因为对称子字符串有两种情况,所以需要写出两种情况下的代码:1. 第 i 个字符是该对称字符串的真正的中心,也就是说该对称字符串以第 i 个字符对称, 比如: “aba”。代
阅读全文
摘要:一、at命令让某个任务只运行一次使用at监控程序。at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。at now + time命令可以在指示任务。假设要运行的脚本(可以直接是命令)是/home/test.sh,那么可能用以下命令运行:at now +30 min //30分钟后运行该脚本at>/home/test.shat>ctrl+D上面的方式在编辑定时任务时没法像文本那样可以回退或修改,可以使用下面的方式:at -f /home/test.sh
阅读全文
摘要:一.BIOS自检计算机在接通电源之后首先由BIOS进行POST自检,然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入引导块。Linux系统是人BIOS中的地址oxFFFF0处开始引导的。BIOS的第1个步骤是加电POST自检。POST的工作是对硬件进行检测。BIOS的第2个步骤是进行本地设备的枚举和初始化。BIOS由两部分组成:POST代码和运行时的服务。当POST完成之后,它被从内存中清理出来,但是BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务。BIOS运行时会按照CMOS的设置定义的顺序来搜索处于活动状态并且可以引导的设备。引导设备可以是软盘、CD-ROM、
阅读全文
摘要:一、Ubuntu中软件安装方法1、APT方式(1)普通安装:apt-get install softname1 softname2 …;(2)修复安装:apt-get -f install softname1 softname2... ;(-f Atemp to correct broken dependencies)(3)重新安装:apt-get --reinstall install softname1 softname2...;2、Dpkg方式(1)普通安装:dpkg -i package_name.deb3、源码安装(.tar、tar.gz、tar.bz2、tar.Z)首先解压缩源码压
阅读全文
摘要:第1个异常是java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat –an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。第 2个异常是java.net.ConnectException: Connection refused: connect。该异常发生在客户端进行new Socket(ip
阅读全文
摘要:Ctrl+Shift+r:打开资源让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组快捷键并非在所有视图下都能用。Ctrl+o:快速outline它可以列出当前类中的所有方法及属性,你只需输入你想要查询的方法名,点击enter就能够直接跳转至你想去的位置。Ctrl+e:快速转换编辑器 这组快捷键将帮助你在打开的编辑器之间浏览。使用ctrl+page down或ctrl+page up可以浏览前后的选项卡,但是在很多文件打开的状态下,ctrl+e会更加有效率。Alt+Shift+r:重命名如果你重命名的是类中的一个属性,
阅读全文
摘要:1、start() 方法启动线程,该线程进入就绪队列,不是线程马上执行,它需要等待CPU进程调度机制。2、run() 是表示线程的运行,是线程对象的一个方法,里面是具体的线程实现逻辑,所以一个线程调用start() 方法后是否执行到run方法看CPU调度到该线程没。3、如果使用线程对象直接调用run方法,相当于调用了一个普通方法,并没有启动该线程。程序中还是只有线程对象所在的线程,并没有增加新的线程。如下例子说明调用这两个方法后的区别:A、线程类class MyThread implements Runnable{ @Override public void run() { ...
阅读全文