Java基础
文章平均质量分 65
BiggerLee
这个作者很懒,什么都没留下…
展开
-
JVM学习收藏
关于G1收集器Java Hotspot G1 GC的一些关键技术原创 2020-01-10 21:28:08 · 106 阅读 · 0 评论 -
Python中pack和unpack函数的Java替换写法
Python在实现Socket网络通信时,发送数据前需要对数据pack后,使用socket发送时,对接收数据需要用unpack来解析,伪代码如下socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)socket.connect();arg1=int(1)arg2=short(2)arg3=short(3)#传递一个int型,...原创 2019-11-29 18:07:41 · 2277 阅读 · 0 评论 -
HashMap源码之get与put方法
HashMap是基于数组和链表来存储键值对对象的,我们简单看下get和put方法的源码。1、我们调用put方法来存储键值对时,它先调用hash方法来计算hashcode,然后用hashcode和Entry数组的大小来做按位与操作,求出所在的Entry数组的下标位置。通过key与下标所在的Entry链表进行判断是否已经存在此Key,如果存在就重新设置value为新的值,不存在则加入到Entry链...原创 2018-10-24 12:56:19 · 192 阅读 · 0 评论 -
JVM内存分配与回收学习(2)
1、垃圾收集器什么时候开始回收?(1)新生代有一个Eden区和两个survivor区(From survivor 和To Survivor),每次使用Eden和其中一个Survivor(From Survivor),创建对象时,首先会将对象放入Eden区,如果放不下就会引发一次发生在新生代的minor GC(清理Eden和From Survivor空间),将存活的对象复制到 To surviv...原创 2018-09-29 22:08:10 · 555 阅读 · 0 评论 -
JVM 内存分配与回收学习(1)
随笔。记录各类型在堆内存中占用内存空间大小的理解:引用类型在堆中占用4字节,byte,boolean基本类型在堆中占用1字节,char,short基本类型在堆中占用2字节,int,float基本类型在堆中占用4字节,long,double基本类型在堆中占用8字节。 用代码验证下,以下代码的vm参数为-Xmx20m -Xms20m -XX:+HeapDumpOnOu...原创 2018-09-28 21:15:39 · 289 阅读 · 0 评论 -
Java实现BlockingQueue队列(二)
之前写过Java实现阻塞队列 是以链表的形式实现的,最近闲着,又试了下数组形式的实现。直接上代码吧。package com.xtli.queue;import java.util.Random;/* * 阻塞队列。put方法,take方法。 * 数组实现。 * 定义队列的head和tail: * head 指向第一个值; * tail 指向最后一个为null的下标; * ...原创 2018-09-25 17:01:58 · 260 阅读 · 0 评论 -
排好序的数组中,找出两数之和为m的所有组合
package com.xtli.controller.leetCode;import java.util.HashMap;import java.util.Map;/* * 排好序的数组中,找出两数之和为m的所有组合。 */public class APlusBEqualMInArray { public static void main(String[] args) { i原创 2017-12-22 20:19:59 · 1310 阅读 · 0 评论 -
使用单向链表实现LinkedList
单向链表是指节点中的指针域只有一个,指针域只能沿着同一个方向移动的链表。Java.util包中提供了LinkedList,此LinkedList是基于双向链表实现的。本文基于单向链表实现LinkedList中的某些方法,主要是学习使用下单向链表这种数据结构。原创 2017-10-26 22:39:06 · 1807 阅读 · 0 评论 -
Java中利用String类进行文本处理
最近对文本字符串处理比较多,现总结下String处理字符串的方法,以及Java是如何利用String的方法进行文本处理的。原创 2017-09-28 22:05:29 · 1637 阅读 · 0 评论 -
JVM内存模型及String对象内存分配
昨天看了一篇关于《Java后端程序员1年工作经验总结》的文章,其中有一段关于String和StringBuffer的描述,对于执行结果仍然把握不准,趁此机会也总结了下JVM内存模型。1、JVM运行时数据区域关于JVM内存模型之前也了解过一些,也是看过就忘,好记性比如烂笔头,记下来吧。参考此文章http://chenzhou123520.iteye.com/blog/1585224...原创 2017-09-14 11:39:09 · 4469 阅读 · 7 评论 -
反射应用:比较两个对象属性的不同
在工作中遇到这样一个问题:在操作人修改单据时,记录此次修改的内容。此问题,最简单的方法就是对修改前和修改后的对象属性一一比较,记录修改内容。如果此单据有几十个属性时,一一比较的方法较繁琐。此时,我们用反射的方法来解决。package com.xtli.controller.utils;import java.lang.reflect.Field;import java.lang.refl原创 2017-08-13 19:43:54 · 2927 阅读 · 0 评论 -
反射之invoke方法
当获得类对应的Class对象后,可以通过getMethods()方法得到全部方法——返回Method数组,或者getMethod()方法来获取指定方法——Method对象。可以通过Method对象的invoke()方法来调用它对应的方法。Object invoke(Object obj, Object...args): obj是执行该方法的Class对象,args是执行该方法时传入的实参。原创 2017-08-13 18:45:41 · 2458 阅读 · 0 评论 -
Java基本类型与类型转换(2)——位操作: byte & 0xff
在Java中 byte型数据在内存中占8位,int型数据在内存中占32位。0xff默认为int型,是十六进制,十进制中表示为255,二进制为32位,后八位为'1111 1111',其他24位均为0;在&运算时,2个bit均为1,则得1,否则得0。 先看以下程序 byte a = -17; System.out.println(a);原创 2017-07-19 20:56:53 · 3076 阅读 · 0 评论 -
Java基本类型与类型转换(1)
1、Java的基本数据类型分为两大类:boolean类型和数值类型。而数值类型又可以分为整数类型和浮点类型。整数类型里的字符类型也可单独对待。所有数字在计算机底层都是以二进制形式存在的,原码是直接将一个数值换算成二进制数。但计算机以补码的形式保存所有的整数,补码的计算规则:正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,只是最高位(符号位)保持不变。如下原创 2017-06-28 20:22:09 · 392 阅读 · 0 评论