Java
张之海
硕士毕业于东北大学,现就职于北京某猫头鹰公司,大数据工程师职位。
展开
-
正则表达式
《正则表达式》1.\b:匹配一个位置——单词的开头或结尾。种类:位置。eg:Pattern.matches("\\bhi\\b", "hi") 返回true;即除"hi"外,没有其他任何字符。2..:除了换行符以外的任意字符。种类:除换行符外的任意字符。数目:有且仅有一个。eg:Pattern.matches("c.t", "cat") 返回fa原创 2015-12-13 20:21:18 · 440 阅读 · 0 评论 -
《设计模式》——1 单例模式
《设计模式》,emmm~老朋友了鸭,一个在本科阶段学习的课程,平常就用到其中几个而已,现在研究生期间面临找实习了,还是再全面地复习一下吧。为了加深理解,本文用Python和Java两种语言进行实现。设计模式总体包括3大类、2小类,3大类是:创建型,共五种:工厂方法、抽象工厂、单例、建造者、原型。结构型,共七种:适配器、装饰器、代理、外观、桥接、组合、享元。行为型,共十一种:策略、模板方...原创 2019-05-01 12:25:33 · 166 阅读 · 0 评论 -
Java 知识点 精解文章
1 Class.forname()Java Class.forname()详解原创 2019-05-22 16:52:39 · 104 阅读 · 0 评论 -
Java — 集合、泛型和枚举
已经有数组了,为什么还要使用集合?Java中数组长度不可变,然而实际情况中数据量往往不确定,这类数据不适合用数组存储,这时候就需要使用集合。1 Java Collection 接口表示集合的接口:接口是集合的抽象数据类型,提供对集合中所表示的内容进行单独操作的可能。Collection 接口:该接口是最基本的集合接口,一个 Collection 代表一个元素。List 接口:该接口实...原创 2019-06-11 13:55:12 · 382 阅读 · 0 评论 -
Java — IO
1 File文件类File,可以表示目录,也可以表示文件。File file = new File(Path path)path可以是一个文件夹的路径,也可以是一个文件的路径。绝对路径file.getAbsolutePath()相对路径file.getPath()在工程项目中,项目中某个文件所在的目录,可以用相对路径表示。这样打包发送给其他人后,仍可以正常使用。2 流2.1...原创 2019-06-12 08:14:26 · 256 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别及适用场景
1 String、StringBuffer、StringBuilder的区别:String内容不可变,StringBuffer、StringBuilder内容可变。StringBuffer的方法加了synchronized,是同步方法,属于安全的线程操作。StringBuilder中的方法都属于异步方法,属于非线程安全的操作。所以,StringBuffer对数据的安全性更高,StringBu...原创 2019-07-02 07:33:31 · 833 阅读 · 1 评论 -
Java比较元素:Comparable、Comparator
有两种比较元素的方法:集合的元素实现Comparable接口,并实现compareTo方法。然后由Collections类调用sort方法,将集合作为参数传入sort()。单独创建一个比较器类,实现Comparator接口,并实现其中的compare方法。然后集合调用自身的sort()方法,并将比较器类的实例作为参数传入sort()方法,实现排序。package com.Collec...原创 2019-07-30 15:53:39 · 285 阅读 · 0 评论 -
抽象类与接口
package com.abstractClass;/**有抽象方法的类一定是抽象类,抽象类里可以有普通方法。抽象类与普通类的不同点:有抽象方法时,抽象方法有abstract修饰,没有方法体。*/public abstract class AbstractClass {int b = 1;private int c = 1;public void test1() {in...原创 2019-08-17 15:06:44 · 281 阅读 · 0 评论 -
TreeSet、TreeMap、Collections.sort()的区别,原理
1 使用上看TreeSet要求,每一个元素要实现Comparable接口。TreeMap要求键实现Comparable接口。Collections.sort()有两种重载方式:(1)元素实现Comparable接口。(2)向sort()方法中传入一个Comparator实现类。TreeSetTreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了...原创 2019-09-06 15:54:22 · 970 阅读 · 0 评论 -
volatile与单例模式
参考文献:volatile关键字的作用、原理1 作用保持内存可见性:所有线程都能看到共享数据的最新值。防止指令重排序。2 实现2.1 怎么实现内存可见性(1)读取前先从内存刷新最新的值。(2)写入后立即同步回内存中。2.2 怎么防止指令重排什么是指令重排:基于偏序关系的Happens-Before内存模型中,指令重排技术大大提高了程序执行效率。在指令序列中 插入内存屏障来禁...原创 2019-09-07 10:20:53 · 956 阅读 · 0 评论 -
Java 项目中的.properties文件
1 创建.properties文件下面将文件命名为config.properties: 文件中的数据格式: 2 读取文件中的数据可以建立一个工具类,以便实现代码重用,下面将工具类命名为Utils.java:package stephen.utils;import java.io.IOException;import java.io.InputStream;impor...原创 2018-03-12 09:42:43 · 2863 阅读 · 0 评论 -
中文分词Ansj
AnsjSeg使用手册:前往AnsjSeg使用手册本文介绍Ansj分词工具的使用方法及程序源码示例。一 下载分词工具这里所谓的分词工具即两个jar包:ansj_seg-xxx.jar和nlp-lang-xxx.jar,下载地址:下载Ansj分词工具包二 新建项目将上面下载的两个jar包导入到项目中。即右键项目——>Build Path ——>Configure Build Path —...原创 2018-02-08 12:34:47 · 977 阅读 · 0 评论 -
toArray()与toArray(T [] a)的区别
1、Object[] toArray()原理:将集合转换为Object类型的数组并返回该数组(以首地址的形式)。 调用格式: Object []a=collecton.toArray() 注意:(1)前面类型必须为Object[]且不能被强制转换。 (2)需要在遍历Object a[]时,再强制转换a[n]的类型。由于编译器在语法上无法检测到类型错误,容易原创 2015-12-06 20:31:20 · 3000 阅读 · 0 评论 -
Map与Map.Entry的关系
Map与Map.Entry的区别:1.首先,说一下Map.Entry与Map的关系。Map.Entry是Map的内部类。即(关系图)class Map{class Entry{}}2.那么,Map与Map.Entry的内部结构是什么呢?(这里只对接口做了描述)interface Map{Set keySet();//返回一个集合set,所有的ke原创 2015-12-06 20:23:01 · 3909 阅读 · 0 评论 -
java scanner 输入多行
Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ String str = scanner.next(); int value = scanner.nextInt(); }这样,不断输入,输入的数据之间可以有空格也可以有换行。所有的数据输入完毕后,按Crtl+Z即可停止输入并退出循环。原创 2015-12-06 21:09:52 · 20977 阅读 · 0 评论 -
Java相似知识点区别
1、Object[] toArray() 是旧式的获得对象数组的方法调用格式: Object []a=collecton.toArray() 注意:(1)前面类型必须为Object[]且不能被强制转换。 (2)需要在遍历Object a[]时,再强制转换a[n]的类型。由于编译器在语法上无法检测到类型错误,容易出现类型使用不当。在java5引入泛型之前,这是唯一的获得原创 2015-12-01 20:51:17 · 953 阅读 · 0 评论 -
Java中生成随机数
1.Math.random()生成[0,1)中的数。2.Random random = new Random(); random.nextInt(index);生成[0,index)中的数。参考网站:Java 中生成特定区间的随机数原创 2016-03-05 11:07:38 · 435 阅读 · 0 评论 -
Java中方法不可以有默认参数
Java中的方法不可以有默认参数,只能通过重载来实现:public class ParameterDefault { /** * @param args */ public String getName(String givenName,String familyName){ return givenName+"."+f原创 2016-03-05 13:41:02 · 12236 阅读 · 0 评论 -
判断各种xxx是否为空
以下是java 判断字符串是否为空的四种方法:方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法: if(s == null |原创 2016-03-31 14:38:29 · 753 阅读 · 0 评论 -
Java与数据库的连接
步骤:1.下载:下载对应SQL Server的jdbc驱动,例如:SQL Server 2005的jdbc驱动下载地址为SQL Server 2005 jdbc下载链接,其中的sqljdbc即为相应的jdbc驱动。2.添加:将jdbc驱动添加到eclipse中的java project中:右键工程——>Build Path——>configure build path——>Add原创 2015-10-27 17:21:34 · 801 阅读 · 0 评论 -
getClass( )函数与Xxx类.class
如果你知道一个实例,那么可以通过实例的“getClass()”方法获得该对象的类型类,如果你知道一个类型,那么可以使用“.class”的方法获得该类型的类型类。详见java的getClass( )函数原创 2017-01-30 00:21:41 · 1209 阅读 · 0 评论 -
HashMap、HashTable、ConcurrentHashMap的底层原理
1 HashMap的原理HashMap是基于链地址法实现的一个散列表,jdk7使用数组、链表,jdk8使用数组、链表和红黑树。以下将HashMap的原理分为四部分讲解。初始容量。数组的初始容量为16。扩充容量每次扩充为2的次方,一是为了提高性能使用足够大的数组,二是为了能使用位运算代替取模运算。即若当前容量为16,下次扩充时,应变为16*2=32。初始容量默认为16: /**...原创 2019-09-22 01:01:02 · 435 阅读 · 0 评论