
Java基础学习
文章平均质量分 57
java core learning ...
谭正强
一个不愿在枯燥的日子里自废武功,同时对技术有点追求的 Java、大数据程序员。永远对牛人心生敬仰,对自己不甘平庸。
人到中年,太多的无奈驱使我无法专心做技术,但是在这里我希望这颗心可以纯粹点,聊点对技术的热爱,反省下当下的人生。
展开
-
一个 Java8 的坑坑了我 2 小时试错...
上述402 小版本的坑没有真正解决,但是可以通过降低版本的方式来解决问题,所以遇事不能死脑筋,能解决问题就好,网络上太多纷杂的文章解决方案,有收费的,有一笔带过的,希望的我遇到的问题能使你不在踩坑,阿门~原创 2024-03-18 15:49:39 · 798 阅读 · 0 评论 -
聊聊JavaSPI
文章目录前言一、SPI 示例二、SPI原理与双亲委派机制1. MySQL Driver2.DataX 插件的热插拔也是破坏双亲委派的一种总结前言 SPI 全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。其运用的非常广泛、比如MySQL驱动加载、DataX热插拔加载插件等。Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加..原创 2021-04-01 20:04:41 · 319 阅读 · 1 评论 -
Java最佳实践笔记
一、常量定义最佳实践public final class Constants { private Constants() { } public static final String COMMON_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String SIMPLE_DATE_FORMAT = "yyyy-MM-dd"; public static final int TRUE = 1;原创 2021-04-01 16:11:19 · 210 阅读 · 0 评论 -
JVM常见参数以及JDK调试工具记录
参见官网:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html堆参数参数 描述 -Xms 设置JVM启动时堆的初始化大小。 -Xmx 设置堆最大值。 -Xmn 设置年轻代的空间大小,剩下的为老年代的空间大小。 -XX:PermGen 设置永久代内存的初始化大小。 -XX:PermGen 设置永久代内存的初始化大小。 -XX:Surviv原创 2020-12-12 16:49:38 · 316 阅读 · 0 评论 -
为什么建议你使用枚举?
枚举是 JDK 1.5 新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错误码等。枚举类型不止存在在 Java 语言中,在其它语言中也都能找到它的身影,例如 C# 和 Python 等,但我发现在实际的项目中使用枚举的人很少,所以本文就来聊一聊枚举的相关内容,好让朋友们对枚举有一个大概的印象,这样在编程时起码还能想到有“枚举”这样一个类型。本文的结构目录如下:枚举的 7 种...转载 2020-09-04 17:23:00 · 652 阅读 · 0 评论 -
Java 12个语法糖
本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java。语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,...转载 2020-05-07 13:57:43 · 400 阅读 · 0 评论 -
java之图形化界面(GUI)
一、概述用户与计算机进行交换的方式有两种:GLI:Command lin User Interface(命令行用户接口),也就是常见的dos窗口,它需要记住一些常用的命令,操作不直观方便。GUI:Graphical User Interface(图形用户接口),用图形的方式,来显示计算机操作的界面,这样更方便直观。这两种交换方式就对应两种交互界面:命令行界面原创 2014-08-10 18:08:41 · 4520 阅读 · 0 评论 -
Java之网络编程
概述网络编程其实是为了实现不同主机上的数据通信,而要实现通讯则需要首先知道对方的IP和端口号,同时明确双方使用的通信规则,或传输协议。Ip地址、端口号和传输协议,即是网络通讯的三要素IP地址:主机在网络的地址,或者在网上的唯一标识。127.0.0.1,本地回环地址,用它可以测试网卡是否损坏;还有些IP地址保留了,不用于广域网,只用于局域网,例如:192.168.0.原创 2014-08-11 20:32:45 · 1138 阅读 · 0 评论 -
IO流中的其他流对象
打印流:该流提供了打印方法,可以将各种数据类型的数据都原样打印。字节打印流:PrintStream构造函数可以接收的参数类型:1,file对象。File2,字符串路径。String3,字节输出流。OutputStream字符打印流:PrintWriter构造函数可以接收的参数类型:1,file对象。File2,字符串路径。String3,字节原创 2014-08-08 11:05:18 · 1230 阅读 · 0 评论 -
IO综合练习:录入学生成绩并将信息存储在硬盘文件中
问题描述:原创 2014-08-09 21:28:56 · 1619 阅读 · 0 评论 -
File类常见方法
1,创建。 boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。 和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。 boolean mkdir():创建文件夹。 boolean mkdirs():创建多级文件夹。 2,删除。 boolean delete():删除失败返回false。如果文件正原创 2014-08-07 09:35:25 · 997 阅读 · 0 评论 -
包装类的用法
/*JDK1.5版本以后出现的新特性。*/class IntegerDemo1 { public static void main(String[] args) { // Integer x = new Integer(4); Integer x = 4;//自动装箱。//new Integer(4) x = x/* x.intValue() */ + 2;/原创 2014-07-15 17:45:55 · 622 阅读 · 0 评论 -
基本数据类型对象包装类
基本数据类型对象包装类。byte Byteshort shortint Integerlong Longboolean Booleanfloat Floatdouble Doublechar Character基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间做转换基本数据类型转成字符原创 2014-07-15 17:15:57 · 536 阅读 · 0 评论 -
获取两个字符串中最大相同子串
4,获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。"abcwerthelloyuiodef""cvhellobnm"思路:1,将短的那个子串按照长度递减的方式获取到。2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到!原创 2014-07-14 15:42:18 · 1851 阅读 · 0 评论 -
字符串操作--查询字符串出现的次数
1、获取一个字符串在另一个字符串中出现的次数 思路: 1,定义个计数器。 2,获取kk第一次出现的位置。 3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。 每获取一次就计数一次。 4,当获取不到时,计数完成程序示例:package tan;public class StringTest2 { public static v原创 2014-07-14 15:26:15 · 1907 阅读 · 0 评论 -
转换流以及流规律总结
转换流: 上边读取键盘录入的代码,与BufferedReader的readLine()方法很相似,那么能不能用readLine()来代替?因为System.in是字节流,它要使用字符流缓冲区的方法,这就需要使用到两个转换流:InputStreamReader和OutputStreamWriter。package tan;import java.io.*;public class原创 2014-07-29 19:27:22 · 959 阅读 · 1 评论 -
多线程--生产者消费者问题(wait和notify方法)
java.lang.Object类中提供了wait(),notify原创 2014-07-13 11:06:25 · 720 阅读 · 0 评论 -
多线程--生产者、消费者另解
JDK1.5 中提供了多线程升级解决方案。将同步Synchronized替换成现实Lock操作,将Object中的wait,notify notifyAll,替换了Condition对象。该对象可以Lock锁 进行获取。该示例中,实现了本方只唤醒对方操作。Lock:替代了Synchronizedlock unlocknewCondition()Con原创 2014-07-13 15:59:14 · 543 阅读 · 0 评论 -
多线程--单例设计模式
单例模式的优点:在内存中只有一个对象,节省内存空间。避免频繁的创建销毁对象,可以提高性能。避免对共享资源的多重占用。可以全局访问。原创 2014-07-11 19:03:57 · 762 阅读 · 0 评论 -
String类
String a="abString s=new String("abc");System.out.println(a==s); //falseSystem.out.println(a.equals(s)); //true原创 2014-07-13 18:02:50 · 562 阅读 · 0 评论 -
面向对象
1、什么时候定义构造函数呢?当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。2、构造代码块:作用::给对象进行初始化。对象一建立就运行,而且优先于构造函数执行。它和构造函数的区别是:构造代码块是给所有对象进行统一的初始化,而构造函数是给对应的对象初始化。构造代码块中定义的是不同对象共性的初始化内容。3、this用于区分局部变量和成员变量同名的情原创 2014-06-22 23:05:00 · 592 阅读 · 0 评论 -
StringBuffer和StringBuilder用法比较
StringBuffer是字符串缓冲区,是一个容器。特点:1,长度是可变化的。2,可以字节操作多个数据类型。3,最终会通过toString方法变成字符串。C create U update R read D delete1,存储。StringBuffer append():将指定数据作为参数添加到已有数据结尾处。StringBuffe原创 2014-07-15 16:50:43 · 955 阅读 · 0 评论 -
字符串去空格以及反转操作示例
字符串反转原创 2014-07-14 10:49:46 · 1644 阅读 · 0 评论 -
多线程--创建线程
进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。线程:就是进程中的一个独立的控制单元。线程在控制着进程的执行。一个进程中至少有一个线程。Java VM 启动的时候会有一个进程java.exe.该进程中至少一个线程负责java程序的执行。而且这个线程运行的代码存在于m原创 2014-07-10 17:41:32 · 527 阅读 · 0 评论 -
Java程序员们最常犯的10个错误
1.将数组转化为列表将数组转化为一个列表时,程序员们经常这样做:1List list = Arrays.asList(arr);Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,而不是java.util.ArrayList类,java转载 2014-11-12 07:50:13 · 880 阅读 · 0 评论 -
方法二连接方式复习20140510
package tan;import java.io.InputStream;import java.sql.Connection;import java.sql.Driver;import java.util.Properties;import org.junit.Test;public class TestDriver { /**方法二复习: * 1、定义一个可复用的Connection方法原创 2014-05-10 14:12:38 · 829 阅读 · 0 评论 -
JAVA中神奇的双刃剑--Unsafe
前提参考资料:Java魔法类:sun.misc.Unsafe 在openjdk8下看Unsafe源码Unsafe介绍在Oracle的Jdk8无法获取到sun.misc包的源码,想看此包的源码可以直接下载openjdk,包的路径是:openjdk-8u40-src-b25-10_feb_2015\openjdk\jdk\src\share\classes\sun\misc。当然...转载 2019-03-24 11:09:26 · 1449 阅读 · 0 评论 -
Java基础编程最佳实践
1、数组复制 Integer[] arr={1,2,3,4}; List<Integer> list = Arrays.asList(arr); //注意 大小是固定的// list.add(100);// 不能添加元素 System.out.println(list); // 最佳实践 -- 数组的复制 ...原创 2018-05-29 10:41:22 · 396 阅读 · 0 评论 -
常用正则表达式大全
常用正则表达式大全!(例如:匹配中文、匹配html) 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除转载 2015-12-11 10:15:39 · 490 阅读 · 0 评论 -
Java 删除当前目录及其目录下的所有文件
删除目录2下面的所有文件及其文件夹示例目录如下:D:/test/1/21、使用FileUtils类,静默删除 String url = "D:/test/1/2"; boolean bol = FileUtils.deleteQuietly(new File(url)); System.out.println(bol);如果要删除目录1呢? 只需要这样原创 2015-07-15 16:08:56 · 20951 阅读 · 0 评论 -
Java 获取指定日期的方法总结
转自:Java 获取指定日期的方法总结 格式化日期 String-->Date 或者 Data-->StringSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse("2009-11-04");//String-->Date String sda转载 2015-06-12 09:53:21 · 683 阅读 · 0 评论 -
如何用Map对象创建Set对象
ava中的Map和Set有不少相似之处。本文将分享一个把Map类转化成Set类的小技巧。或许你已经知道,HashSet其实是一个披着Set方法外衣的HashMap;同样,TreeSet其实也是一个披着Set方法外衣的TreeMap。Map并不支持直接用迭代器进行遍历,因此下面的这段代码编译无法通过:123Map<Strin转载 2014-11-12 08:02:54 · 1445 阅读 · 0 评论 -
HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap
ap是最重要的数据结构。这篇文章中,我会带你们看看HashMap, TreeMap, HashTable和LinkedHashMap的区别。1. Map概览Java SE中有四种常见的Map实现——HashMap, TreeMap, Hashtable和LinkedHashMap。如果我们使用一句话来分别概括它们的特点,就是:HashMap就是一张hash表,键和值转载 2014-11-12 07:53:10 · 832 阅读 · 0 评论 -
java字符串反转方法【全】
搜集的java字符串反转方法,一般用于面试,项目中用的很少···package com.wsheng.aggregator.algorithm.string; import java.util.Stack; /** * 8 种字符串反转的方法, 其实可以是9种方法,第9种是使用StringBuffer和StringBuilder中实现的方法 * @author Josh Wang(转载 2015-04-27 09:25:47 · 1484 阅读 · 0 评论 -
Map集合
Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。1,添加。put(K key, V value) putAll(Map m) 2,删除。clear() remove(Object key) 3,判断。containsValue(Object value) containsKey(Object key) isEmpty()原创 2014-07-21 17:27:19 · 655 阅读 · 0 评论 -
map嵌套
问题描述:map扩展知识。map集合被使用是因为具备映射关系。"yureban" Student("01" "zhangsan");"yureban" Student("02" "lisi");"jiuyeban" "01" "wangwu";"jiuyeban" "02" "zhaoliu";一个学校有多个教室。每一个教室都原创 2014-07-22 20:56:03 · 1182 阅读 · 0 评论 -
Map元素的两种取出方式练习
问题mia每一个学生都有对应的归属地。学生Student,地址String。学生属性:姓名,年龄。注意:姓名和年龄相同的视为同一个学生。保证学生的唯一性。思路:1,描述学生。2,定义map容器。将学生作为键,地址作为值。存入。3,获取map集合中的元素。原创 2014-07-22 10:59:39 · 1043 阅读 · 0 评论 -
利用map集合获取字符串中字母出现的次数
练习:"sdfgzxcvasdfxcvdf"获取该字符串中的字母出现的次数。希望打印结果:a(1)c(2).....通过结果发现,每一个字母都有对应的次数。说明字母和次数之间都有映射关系。注意了,当发现有映射关系时,可以选择map集合。因为map集合中存放就是映射关系。什么使用map集合呢?当数据之间存在这映射关系时,就要先想原创 2014-07-22 18:00:00 · 1085 阅读 · 0 评论 -
单例设计模式
单例设计模式:解决一个类在内存只存在一个对象。想要保证对象唯一。1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象2,还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。这三部怎么用代码体现呢?1,将构造函数私有化。2,在类中创建一个本类对象。3,提供一个方法可原创 2014-07-03 20:10:12 · 492 阅读 · 0 评论 -
进制转换
数制也称计数制,是指用同一组固定的字符和统一的规则来表示数值的方法.十进制(自然语言中)通常用0到9来表示,二进制(计算机中)用0和1来表示,八进制用0到7表示,十六进制用0到F表示。 (1)十进制整数转换成二进制(八进制、十六进制),转换方法:用十进制余数除以二(八,十六)进制数,求其数即为转换后的二(八、十六)进制数。(2)二(八、十六)进制整数转换成十进制整数原创 2014-06-15 09:40:15 · 705 阅读 · 0 评论