
Java
文章平均质量分 54
小梦_人生如戏
这个作者很懒,什么都没留下…
展开
-
log4j自动加载
在项目中,log4j的jar导入之后,会自动加载配置文件。看源代码: 快捷键,进入org.apache.log4j.Logger中的getLogger()方法: 继续,进入LogManager类中,查看该类的静态代码块: 到这里我们可以看到,加载该类的时候,会进行判断,找不到配置的话,log的配置的话,会优先找log4j.xml文件,然后再去找log4j.properties文件...原创 2018-04-27 11:10:37 · 543 阅读 · 0 评论 -
socket通讯,长度+数据
需求:socket通讯,传输的数据格式为长度(4个字节)+数据,其中此长度不包含本身的长度服务端: ServerSocket ss = new ServerSocket(12345); Socket s = ss.accept(); InputStream is = s.getInputStream(); DataInputS...原创 2019-03-18 10:17:16 · 2312 阅读 · 0 评论 -
Java 字节读取流的read方法返回int的原因
为什么InputStream.read()读取一个byte确返回一个int呢?java 字节读取流的read方法一次读一个byte但返回int的原因读取二进制数据按字节读取,每次读一个字节(byte)。read()的底层是由C++实现的,返回的是unsigned byte,取值范围为[0~255],在java中没有对应的类型,所以只能用int类型接收,由Java接收得到的就是int[0...转载 2019-03-11 20:54:35 · 2191 阅读 · 0 评论 -
在java中String类为什么要设计成final?
转载地址:在java中String类为什么要设计成final?String很多实用的特性,比如说“不可变性”,是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝继承,防止世界被熊孩子破坏,维护世界和平!1. 什么是不可变?String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl",不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。...转载 2019-03-06 16:00:36 · 157 阅读 · 0 评论 -
java中i=i++
1、i++和++i自增的两种形式:i++表示先赋值后加1,++i表示先加1后赋值2、i=i++,看如下代码:public class Test { public static void main(String[] args) { int i = 0; i = i++; System.out.println("i=" + i);...原创 2019-02-20 15:33:32 · 2204 阅读 · 0 评论 -
HashMap实现原理及源码分析
一、什么是哈希表 哈希表和数组、链表、二叉树一样,是一种数据结构。和其他数据结构相比,哈希表在进行添加、查找、删除等操作时具有十分好的性能,在不考虑哈希冲突的情况下,只需要一次定位即可完成操作,时间复杂度为O(1)。 计算机底层的物理存储结构分为两种:顺序存储和链式存储。我们一般意义上说的栈、队列等结构是逻辑结构。数组中查找元素是根据index查找,一次定位即可实现...原创 2018-11-22 21:40:27 · 174 阅读 · 0 评论 -
Java 对象与垃圾回收
当程序创建对象、数组等引用型实体的时候,系统会在堆内存中分配一块内存区,对象保存在这块内存区中,当该内存不再被任何引用变量引用时,这块内存就变成了垃圾,等待垃圾回收机制进行回收。垃圾回收机制的特征:1、只负责回收堆内存中的对象,不会回收任何的物理资源(数据库连接、网络IO等资源)。2、程序无法精确控制垃圾回收的进行,垃圾回收会在合适的时候进行当对象永久性失去引用后,系统会在合适...原创 2018-08-06 15:41:00 · 558 阅读 · 0 评论 -
Java的native关键字
今天研究Java基础类库,Object类的时候,发现了一个关键字:native咦?这是个什么东东?它认识我,我可不认识它!嘿嘿,没关系,baidu一下。 java native关键字 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现...转载 2018-07-20 15:20:34 · 129 阅读 · 0 评论 -
使用jsch中ChannelShell,使用readline方法读取执行结果时,被阻塞
最近使用jsch中的ChannelShell,使用BufferedReader的readLine()方法读取返回结果,代码如下:while ((line = dataIn.readLine()) != null){ stdout.add(line);}执行的时候,代码一直在while循环中,无法跳出该循环。原因: 在代码中,使用的是ChannelShell...原创 2018-07-17 16:31:34 · 9695 阅读 · 3 评论 -
并发模型:Future模式
多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式;jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池; 锁(分为内部锁、重入锁、读写锁)、ThreadLocal、信号量等在并发控制中发挥着巨大的作用。这里重点介绍第一种并发——Future模型。一、什么...转载 2018-04-28 16:35:50 · 196 阅读 · 0 评论 -
java获取本地真实ip
一、问题在获取本地ip这个问题上遇见了问题。1、InetAddress.getLocalHost()得到的是VMnet8的ip地址,而并非本地真实ip。2、InetAddress.getLocalHost().getHostAddress()获取到的是127.0.0.1二、解决方法接下来上正确代码:StringBuilder sb = new StringBuilder(); tr...原创 2018-04-28 11:31:24 · 6758 阅读 · 2 评论 -
slf4j和Log4j
作为一个程序员,我想大家应该知道日志对于一个程序的重要性。很多情况下,日志是我们了解程序如何执行的唯一方式。对于强大的Java语言来讲,在日志方面有很多成熟的开源框架可以被直接使用,如:JDK自带的原生日志框架java.util.logging、Log4j、LogBack、Log4j2。而我们在使用日志框架的时候,建立使用日志门面的方式。那么问题来了,日志门面是什么?实际上,SLF...原创 2019-04-11 12:03:05 · 176 阅读 · 0 评论