Java
过自己想过的生活
用博客记录自己的技术成长中的酸甜苦辣!!!
展开
-
关于java中Lambda表达式的使用(粗解)
Lambda表达式的使用可以很大程度上减少代码的数量,但是阅读起来并不是怎么方便,如果是长期查看lambda代码可能还好一点!!!使用lambda表达式减少的代码主要是简化匿名内部类使用的代码的数量。原创 2017-05-24 18:34:45 · 2523 阅读 · 0 评论 -
Fork/Join框架的简单使用
原文地址:《Fork/Join框架的简单使用》1、什么是Fork/Join框架fork操作的作用是把一个大的任务划分成若干个较小的任务。在这个划分过程一般是递归进行的。直到将任务划分到合适的大小为止。需要恰当地选取子问题的大小。太大的子问题不利于通过并行方式来提高性能,而太小的子问题则会带来较大的额外开销。每个子问题计算完成后,可以得到关于整个问题的部分解。join操作的作用是把这些分解任务的...转载 2019-05-28 22:54:54 · 646 阅读 · 0 评论 -
ThreadLocal简单使用
原文地址:《ThreadLocal简单使用》1、什么是ThreadLocal每一个ThreadLocal能够放一个线程级别的变量,可是它本身能够被多个线程共享使用,并且又能够达到线程安全的目的,且绝对线程安全。这里的安全只是表示在当前线程中创建的对象不会被其他的线程修改。 这跟ThreadLocal中的内部实现有关,关于TreadLocal的具体实现在后期再聊。2、为什么使用ThreadLo...转载 2019-05-28 22:53:00 · 391 阅读 · 0 评论 -
ThreadLocal的实现机制
原文地址:《ThreadLocal的实现机制》1、ThreadLocal的作用ThreadLocal 用一种存储变量与线程绑定的方式,在每个线程中用自己的 ThreadLocalMap 安全隔离变量,这里的ThreadLocalMap可以近似的理解为Map,这个Map与线程绑定,每个线程都拥有一个Map,Map中存储的值以ThreadLocal对象为key,value为指定的具体对象。2、T...转载 2019-05-28 22:51:50 · 983 阅读 · 0 评论 -
ThreadPoolExecutor的实现机制
原文地址:《ThreadPoolExecutor的实现机制》1、什么是ThreadPoolExecutorThreadPoolExecutor是一个 ExecutorService一个具体实现,在实际项目中,主要使用ThreadPoolExecutor维护的线程队列中的任意一个空闲线程去执行每个提交任务。说的直白点就是在实际项目中,没有办法为每个提交的任务立马分配一个线程,所以在程序中维护一个...转载 2019-05-28 22:50:04 · 289 阅读 · 0 评论 -
Hash地址冲突解决之开放定址法
原文地址:《Hash地址冲突解决之开放定址法》1、什么是hash冲突hash函数也被称为散列函数,就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值,也就是不同的输入值可能得到相同的输出值。当在使用数组存储对象时,如果使用对象的hash值来分...转载 2019-05-28 22:48:04 · 4118 阅读 · 4 评论 -
HASH地址冲突解决之链地址法
原文地址《HASH地址冲突解决之链地址法》1、什么是链地址法在hash冲突产生时,将相同具有相同hash值的对象以链表的形式存储,更直白的表述就是数组中的每个元素不在是具体的每个要存储的对象了,每个元素代表具有相同hash值对象组成的链表,通过对象内部的指针可以查询到下一个具有相同hash值的对象。 简单总结:将产生冲突的值以链表的形式连起来2、链地址法如何解决快速查询问题HashMap在...转载 2019-05-28 22:46:21 · 6934 阅读 · 0 评论 -
CopyOnWrite的实现机制
原文连接《CopyOnWrite的实现机制》1、什么是CopyOnWrite和单词描述的一样,他的实现就是写时复制, 在往集合中添加数据的时候,先拷贝存储的数组,然后添加元素到拷贝好的数组中,然后用现在的数组去替换成员变量的数组(就是get等读取操作读取的数组)。这个机制和读写锁是一样的,但是比读写锁有改进的地方,那就是读取的时候可以写入的 ,这样省去了读写之间的竞争,看了这个过程,你也发现了...转载 2019-05-28 22:44:38 · 1223 阅读 · 0 评论 -
http/https请求中如何优雅的对请求参数和输出参数的key进行处理
在实际的程序编写中,特别是微服务间的调用时,经常会出现一个请求的,其入参的key值定义非常的不规范,导致服务端想要接受参数时,请求体内部的属性也定义的乱七八糟。举个例子:如果一个post请求是以这种参数格式发送过来的:{ "json_name":"json_test", "json_value":"test123", "json_id":"1"}那么在不对key进行处理的情原创 2018-11-25 10:41:44 · 4125 阅读 · 0 评论 -
Java解析xml文件之Dom4j
本篇博客主要使用实例讲解如何使用om4j解析xml文件,不会对源码做分析。直接结合代码进行说明。 测试解析的xml文件如下:<?xml version="1.0" encoding="UTF-8"?><changeFileName> <transactionInfo> <detail name="sourceDirec...原创 2018-05-26 17:33:46 · 207 阅读 · 0 评论 -
Java解析xml文件之JDOM
本篇博客主要使用实例讲解如何使用jdom解析xml文件,不会对源码做分析。直接结合代码进行说明。 测试解析的xml文件如下:<?xml version="1.0" encoding="UTF-8"?><changeFileName> <transactionInfo> <detail name="sourceDirecto...原创 2018-05-26 17:27:56 · 1784 阅读 · 0 评论 -
Java解析xml文件之SAX
本篇博客主要使用实例讲解如何使用dom即系xml文件,不会对源码做分析。直接结合代码进行说明。 测试解析的xml文件如下:&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;changeFileName&gt; &lt;transactionInfo&gt; &am原创 2018-05-26 17:18:41 · 288 阅读 · 0 评论 -
Java解析xml文件之DOM
本篇博客主要使用实例讲解如何使用dom即系xml文件,不会对源码做分析。直接结合代码进行说明。 测试解析的xml文件如下:<?xml version="1.0" encoding="UTF-8"?><changeFileName> <transactionInfo> <detail name="sourceDirecto...原创 2018-05-26 17:07:16 · 245 阅读 · 0 评论 -
Android蓝牙通讯(三)————蓝牙通讯的实现
在前两篇博客中大致介绍了蓝牙相关的基础知识,不了解的朋友可以查看前两篇博客: Android蓝牙通讯(一)————蓝牙功能的相关权限 Android蓝牙通讯(二)————蓝牙的相关操作在本篇博客中我将介绍如何实现两个蓝牙设备之间的通讯,蓝牙的通讯类似于socket的通讯,在蓝牙通讯中没有绝对的设备充当server角色,基本上就是发送连接请求的设备充当client角色,而server一般会在开原创 2017-10-28 14:12:56 · 961 阅读 · 0 评论 -
自定义实现Java类加载器
本篇博客主要讲述如何实现一个自己的java类加载器(当然功能时很简单的),Java类加载器的作用就是在运行时加载类。 Java类加载器基于三个机制:委托、可见性和单一性。委托机制是指将加载一个类的请求交给父类加载器,如果这个父类加载器不能够找到或者加载这个类,那么再有此加载器加载它。可见性的原理是子类的加载器可以看见所有的父类加载器加载的类,而父类加载器看不到子类加载器加载的类。单一性原理是指仅加原创 2017-05-21 22:23:35 · 1081 阅读 · 1 评论 -
如何使用命令行编译运行java程序
在使用java编程的时候,一般来说我们都是通过使用IDE来编写运行程序的,但是学会使用命令行来编译运行java程序还是很有必要了!!原创 2017-05-20 11:52:41 · 6467 阅读 · 1 评论 -
Java环境变量配置
Java作为目前比较流行的编程语言,掌握java的相关编程知识还是很有必要的(其实个人觉得所有的编程语言都差不多,都是入门简单,精通难,简单来说,编程就是个坑!!!),我是在研二的时候才接触java的,当时的感觉就是真TM好用,居然没有指针了,心情特爽,在这里就不分享了!!原创 2017-05-20 11:03:04 · 615 阅读 · 1 评论 -
ScheduledThreadPoolExecutor实现原理解析
原文地址:《ScheduledThreadPoolExecutor实现原理解析》1、什么是ScheduledThreadPoolExecutor通熟的来就是一个线程池,只不过这个线程池中的所有工作线程需要处理的都是计划任务,这个任务分为两种,一种是重复任务,一种是一次性任务,所谓一次性任务,基本上是指定在提交任务多长时间之后开始执行,而重复性任务就是在任务被执行完成之后,在一定的时间间隔之后还...原创 2019-07-03 09:56:19 · 1923 阅读 · 1 评论