JavaSE
文章平均质量分 72
JavaSE
狒狒你呐
这个作者很懒,什么都没留下…
展开
-
volatile如何实现线程可见和指令重排序
首先看下以下代码class VolatileBarrierExample { int a; volatile int v1 = 1; volatile int v2 = 2; void readAndWrite() { int i = v1; //第一个volatile读 int j = v2; // 第二个volatile读 a = i + j; //普通写原创 2022-01-07 11:15:05 · 806 阅读 · 0 评论 -
ASCII,Unicode 和 UTF-8
ASCIIASCII 码一共规定了128个字符的编码,对英语字符与二进制位之间的关系,做了统一规定。简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256 x 256 = 65536 个符号。UnicodeUnicode将世界上所有的符号都对应一个二进制数字。如果一定要问一个Unicode码占几个字节?回答是2个。但这样问是不对的,Unicode只是规定了字符的二进制数,至于怎么编码实现(utf-8)这个值,才涉及到占几个字节。UTF-8 是 Unico转载 2021-12-28 14:39:53 · 170 阅读 · 0 评论 -
操作系统-锁机制
计算机操作系统锁机制.在多线程编程中,操作系统引入了锁机制。通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。所谓的锁,可以理解为内存中的一个整型数,拥有两种状态:空闲状态和上锁状态。加锁时,判断锁是否空闲,如果空闲,修改为上锁状态,返回成功;如果已经上锁,则返回失败。解锁时,则把锁状态修改为空闲状态。加锁过程用如下伪码表示:1、read lock;2、判断lock状态;3、如果已经加锁,失败返回;4、把锁状态设置为上转载 2021-12-20 15:43:22 · 828 阅读 · 0 评论 -
自定义类加载器、打破双亲委派
自定义类加载器、打破双亲委派import java.io.FileInputStream;import java.lang.reflect.Method;public class MyClassLoaderTest { static class MyClassLoader extends ClassLoader { private String classPath; public MyClassLoader(String classPath) { .原创 2020-07-21 01:08:38 · 615 阅读 · 0 评论 -
JavaSE-Map接口,HashMap底层实现
1. Map接口框架(常用)|----Map:双列数据,存储key-value对的数据 —类似于高中的函数:y = f(x)|----HashMap:作为Map的主要实现类;线程不安全的,效率高;存储null的key和value|----LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一...原创 2020-03-30 16:39:16 · 174 阅读 · 0 评论 -
JavaSE-对象重写hashCode()、equals()原则
重写 hashCode() 方法的基本原则在程序运行时,同一个对象多次调用 hashCode() 方法应该返回相同的值。当两个对象的 equals() 方法比较返回 true 时,这两个对象的 hashCode() 方法的返回值也应相等。对象中用作 equals() 方法比较的 Field,都应该用来计算 hashCode 值。重写 equals() 方法的基本原则何时需要重写equ...原创 2020-03-30 14:12:47 · 191 阅读 · 0 评论 -
JavaSE-线程池
线程:调度cpu的最小单元,也叫轻量级进程LMP(Light Weight Process)ULT(用户级线程):用户程序实现,不依赖操作系统核心,应用提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态/核心态切换。内核对ULT无感,线程阻塞则进程(包括他的所有线程)阻塞。KLT(内核线程):系统内核管理线程(KLT),内核保存线程的状态和上下文信息,线程阻塞不会引起进程阻塞。...原创 2020-03-30 00:23:58 · 170 阅读 · 0 评论 -
java锁体系
1.java中锁体系乐观锁,悲观锁读锁(共享锁),写锁(排他锁)自旋锁,非自旋锁无锁,偏向锁,轻量级锁,重量级锁分布式锁区间锁(分段锁)java.util.concurrent ConcurrentHashMap重入锁,非重入锁公平锁,非公平锁...原创 2020-03-29 01:13:22 · 300 阅读 · 0 评论 -
JavaSE-网络编程(TCP编程、UDP编程、URL)
1. TCP/IP协议簇传输层协议中有两个非常重要的协议:传输控制协议TCP(Transmission Control Protocol)用户数据报协议UDP(User Datagram Protocol)。 TCP/IP 以其两个主要协议:传输控制协议(TCP)和网络互联协议(IP)而得名,实际上是一组协议,包括多个具有不同功能且互为关联的协议。IP(Internet Protoco...原创 2020-03-16 19:54:47 · 220 阅读 · 0 评论 -
JavaSE-网络编程
1. 概述Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。网络编程的目的:直接或间接地通过网络协议与其它计算机实现数...原创 2020-03-16 19:23:22 · 329 阅读 · 0 评论 -
JavaSE-IO流(二)
1.随机存取文件流RandomAccessFile原创 2020-03-16 17:27:20 · 198 阅读 · 0 评论 -
JavaSE-对象序列化、IO
1. 对象的序列化-对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。//当其它程序获取了这种二进制流,就可以恢复成原来的Java对象-序列化的好处在于可将任何实现了Serializable接口的对象转化为字节数据,使其在保存和传输时可被还原序列化是 RMI(Remote Method ...原创 2020-03-16 17:08:13 · 203 阅读 · 0 评论 -
JavaSE-JDK常用类-System类、Math类、BigInteger
1. System类System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。1.1成员变量System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流...原创 2020-03-16 16:20:51 · 209 阅读 · 0 评论 -
JavaSE-JDK常用类-Java比较器
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种:自然排序:java.lang.Comparable定制排序:java.util.Comparator1.自然排序:java.lang.ComparableComparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。实现 Comparable 的...原创 2020-03-16 16:06:49 · 147 阅读 · 0 评论 -
JavaSE-JDK常用类-日期时间API
1.JDK8之前日期时间API1.1 java.lang.System类System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。此方法适于计算时间差。计算世界时间的主要标准有:UTC(Coordinated Universal Time)GMT(Greenwich Mea...原创 2020-03-16 15:31:13 · 193 阅读 · 0 评论 -
JavaSE-JDK常用类-包装类、字符串相关类
1.String 类1.1 String 类public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/** The value is used for character storage. */private final char value[];...原创 2020-03-16 10:57:41 · 151 阅读 · 0 评论 -
JavaSE-基本语法-流程控制
程序流程控制流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。其流程控制方式采用结构化程序设计中规定的三种基本流程结构:顺序结构程序从上到下逐行地执行,中间没有任何判断和跳转。分支结构根据条件,选择性地执行某段代码。有if…else和switch-case两种分支语句。循环结构根据循环条件,重复性的执行某段代码。有while、...原创 2020-03-15 22:10:20 · 307 阅读 · 0 评论 -
JavaSE-IO流
1. Java IO原理I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序...原创 2020-03-15 03:04:25 · 152 阅读 · 0 评论 -
JavaSE-File类
1. 简介java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。File对象可以作为参...原创 2020-03-14 19:45:43 · 166 阅读 · 0 评论 -
java-NIO
java NIO简介Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新 的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。Java API中提供了两套NIO,一套...原创 2020-03-14 15:54:03 · 82 阅读 · 0 评论 -
java--对象实例化执行顺序
静态(变量和代码块)-->非静态-->构造器在静态中,先执行父类的,再执行子类的main()方法执行时,mian()只是个静态方法,jvm会加载main()方法所在类中的静态部分因为 静态(变量和代码块)是绑定在类上的,非静态 和 构造器是绑定在对象上的,构造器用以构造对象,所以是最后执行的...原创 2019-12-29 15:08:48 · 431 阅读 · 0 评论 -
java--jdbc
1.jdbc的测试代码maven依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46&...原创 2020-01-25 16:20:58 · 119 阅读 · 0 评论 -
java-手动实现定时任务
java-手动实现定时任务public static void timeTask1(){ TimerTask task =new TimerTask() { @Override public void run() { System.out.println("hello world"); ...原创 2020-01-23 22:28:46 · 1512 阅读 · 0 评论 -
java-代理
简介代理是基本的设计模式之一。代理模式的作用是:为其他对象提供一个代理对象以控制对目标对象的访问。代理对象可以在客户端和目标对象之间起到中介的作用1.静态代理由代码手动实现代理,在代码编译前已经确定了目标类、代理类。2.动态代理在程序运行时对不确定的目标对象创建代理的方式。两种动态代理的实现方式:1.jdk代理java.lang.reflect.Proxy类/** * {@co...原创 2020-01-23 21:42:49 · 120 阅读 · 0 评论 -
java中==,equals(),hashCode()
1.java中==,equals()的区别“==” 判断两个对象的地址是不是相等,或者说两个对象是不是同一个对象(基本数据类型 = = 比较的是值,引用数据类型 = =比较的是内存地址)equals() 判断两个对象是否相等。类没有覆盖equals()方法时,等价于“==”,类覆盖equals()方法则看其实现。java.lang.Object类中,equals()方法就是“= =”...原创 2020-01-23 20:12:15 · 151 阅读 · 0 评论 -
java类型信息
简介运行时类型信息可以在程序运行时发现和适应类型信息,使你从只能在编译期执行面向类型的操作的禁锢中解脱出来。java是如何让我们在运行时识别对象和类型信息的呢?两种方式:传统的“RTTI”,他假定我们在编译时已经知道了所有的类型反射,允许在运行时发现和使用类的信息总结:反射是RTTI发展产生的概念和技术,多态是隐式地利用RTTI,反射则是显式地使用RTTI。1.RTTIRTTI(...原创 2020-01-23 19:38:29 · 122 阅读 · 0 评论 -
java正则表达式
1.Pattern类/** * A compiled representation of a regular expression. * * <p> A regular expression, specified as a string, must first be compiled into * an instance of this class. The resulti...原创 2020-01-22 23:39:15 · 68 阅读 · 0 评论 -
泛型
1.简介泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展2.泛型的用法泛型接口,接口持有泛型,类名public interface TestApi<T> { T method1(T a);}泛型类,类持有泛型,类名public class ResultDto<T> { private T...原创 2020-01-22 20:43:11 · 140 阅读 · 0 评论 -
java--基本数据类型,运算符
char占几个字节?char在设计之初的时候被用来存储字符,两个字节可以存储2^16(65536)种,这个数量符合大多数国家的语言字符个数,于是Java团队使用unicode作为编码标准,一个char作为2个字节来存储,unicode只是一个标准,具体的实现还是有如:UTF-8或UTF-16等编码。java中char占几个字节,取决于使用的编码集,如果使用ASCII编码集,则占一个字节;如...原创 2019-12-26 14:43:21 · 157 阅读 · 0 评论 -
URLEncoder
URLEncoder是什么是HTML 格式编码的实用工具类。该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。对 String 编码时,使用以下规则:字母数字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不变。特殊字符 “.”、"-"、"*" 和 "_"保持不变。空格字符 " "...原创 2019-11-04 14:27:24 · 494 阅读 · 0 评论 -
j2se(二)_Character 类
Character 类用于对单个字符进行操作。Character 类在对象中包装一个基本类型 char 的值转义序列前面有反斜杠(\)的字符代表转义字符,它对编译器来说是有特殊含义的。转义序列 描述\t在文中该处插入一个tab键\b在文中该处插入一个后退键\n在文中该处换行\r在文中该处插入原创 2016-11-28 19:49:35 · 303 阅读 · 0 评论 -
j2se(四)_数组,时间日期
Java 语言中提供的数组是用来存储固定大小的同类型元素Arrays 类java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:给数组赋值:通过 fill 方法。对数组排序:通过 sort 方法,按升序。比较数组:通过 equals 方法比较数组中元素值是否相等。查找数组元素:通过 binarySearch 方法能对排序好的数原创 2016-11-28 22:36:10 · 1072 阅读 · 0 评论 -
java定时任务
通thread 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。public class Task1 { public static void main(String[] args) { // run in a second final long timeInter原创 2016-11-30 15:07:12 · 216 阅读 · 0 评论 -
JavaSE-基本语法(变量与运算符)
当需要使用数字的时候,通常使用内置数据类型,如:byte、int、long、double 等。在实际开发过程中,经常会遇到需要使用对象,而不是内置数据类型的情形。Java 为每一个内置数据类型提供了对应的包装类。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。这种由编译器特别支持的包装称为装箱,所以当内置数据类型原创 2016-11-28 19:45:00 · 564 阅读 · 0 评论 -
java环境搭建
windows安装JDK在"系统变量"中设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击"编辑",不存在则点击"新建"。变量设置参数如下:变量名:JAVA_HOME 变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根据自己的实际路径配置变量名:CLASSPATH 变量值:....原创 2017-01-02 11:54:06 · 283 阅读 · 0 评论 -
java泛型中的K,V,T,E,?,object的意思及其用法
K表示键,V表示值,T表示type类型,E表示enum枚举,其实这四个都只是符号,都是表示泛型名称 ? 表示不确定的类型 Object java中所有类的父类。 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import jav转载 2017-01-02 20:15:37 · 10886 阅读 · 0 评论 -
Java泛型通配符<? extends T>与<? super T>
关键字说明 ● ? 通配符类型 ● 表示类型的上界,表示参数化类型的可能是T 或是 T的子类 ● 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Object extends 示例 static clas转载 2017-01-02 20:17:00 · 1038 阅读 · 1 评论 -
Java中处理异常throw和throws
throw关键字:语句抛出异常 throws关键字:声明异常(方法抛出一个异常) 01.throw 是语句抛出一个异常。语法:throw (异常对象); throw e; 02. throws 是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常) 调用者必须做出处理(捕获或继续抛出)语法:[(修饰符)](返回值类型原创 2017-01-03 22:35:49 · 1260 阅读 · 0 评论 -
java随机数
转自http://blog.sina.com.cn/s/blog_4f925fc30100uvur.htmljava产生随机数的几种方式一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在j2me中没有。二.在java.util转载 2016-12-26 10:55:18 · 239 阅读 · 0 评论 -
java取整,保留n位小数,BigDecimal
舍掉小数取整:Math.floor(3.5)=3四舍五入取整:Math.rint(3.5)=4进位取整:Math.ceil(3.1)=4 // 方式一:double f = 3.1516;BigDecimal b = new BigDecimal(f);double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doub原创 2016-12-26 11:21:24 · 4028 阅读 · 0 评论