
Java基础
文章平均质量分 63
我和ye猫子
这个作者很懒,什么都没留下…
展开
-
关于Map的多线程安全问题HashTable和HashMap、CurrentHashMap,Collections.synchronizedMap(Map)的使用
HashMap和HashMap的区别见文章:Hashtable与HashMap的区别(图文详解)_u011441473的专栏-优快云博客参考文章:原创 2022-01-18 15:32:02 · 2512 阅读 · 0 评论 -
Hashtable与HashMap的区别(图文详解)
一、HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。 HashMap实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆。 HashMap存数据的过程是:...原创 2022-01-17 11:56:16 · 24720 阅读 · 1 评论 -
根据Java1.5的JavaAgent创建自定义的agent例子
一:什么是JavaAgent JavaAgent顾名思义就是Java探针技术,我理解的是,通过一个JavaAgent探针类,可以在java虚拟机启动之前,或者运行的时候植入这个探针类,对jvm做一些特别的操作,如动态改变字节码文件这种,要想植入,肯定是通过jvm参数来搞了 使用JavaAgent的技术的项目我目前知道的是SkyWalking,dubbo用没用我没印象了一、创建一个自定义的anget让JavaAgent在被代理程序在JVM运行启动的时候,做一些操作1、创建一...原创 2021-12-28 16:08:51 · 824 阅读 · 1 评论 -
List、Set、Map集合的区别以及各个集合的适用场景
目录介绍Collection容器(接口) List(列表)的特点是:元素是有序的、允许有任意个重复元素,包括空元素。ArrayList(直接实现类)LinkedList(间接实现类)Vector(直接实现类) Set(集合)的特点是:元素是无序的、不允许重复元素,有且仅有一个空元素存在。HashSet(直接实现类)TreeSet(直接实现类)LinkedHashSet(间接实现类)Map映射(接口) 将键映射到值的对象。不能包含重复的键,...原创 2021-09-06 22:28:41 · 1518 阅读 · 3 评论 -
形参和实参——Java值传递详细说明
java只有值传递,方法上传的是引用对象的地址因为java中方法的参数传递的原则是复制。也就是说不管是值传递还是引用传递,参数传递的都是值得拷贝或者是引用的拷贝。因此对象作为参数传递的是对象的引用package com.jokin.learn;import java.util.HashMap;import java.util.Map;/** * java只有值传递,方法上传的是引用对象的地址 * b传入的是null,是没有地址的,而a传入的是一个引用的地址,是new出的对象, .原创 2021-06-10 09:58:02 · 11216 阅读 · 3 评论 -
JDK8中Lambda表达式和Stream的运用
package com.jokin.learn.Jdk18;import com.alibaba.fastjson.JSONObject;import com.jokin.learn.Tair.MyTairClient;import com.jokin.learn.Tair.TairConfig;import com.jokin.learn.coverage.KeyValue;import com.taobao.tair.DataEntry;import com.taobao.tair.R.原创 2021-06-01 20:07:43 · 180 阅读 · 0 评论 -
线程池的简单运用Executors.newFixedThreadPool(2)
package com.jokin.learn.Jdk18;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.atomic.AtomicInteger;/** * https://blog.youkuaiyun.com/w.原创 2021-06-01 20:00:37 · 1717 阅读 · 0 评论 -
Serializable接口的意义
程序员面试时,序列化知识点经常会遇到。张工是一名java程序员,工作5年了,一直从事java开发。最近到某互联网公司面试,做了笔试题后,有一道笔试题是这样子的:Serializable有什么作用,张工没有作答,面谈时面试官又问了,张工回答不出个所以然。面试官:你都工作五年了,连序列化都不知道,你这5年都干些什么了?张工一脸的无助,不过确实不应该,类似Serializable序列化这样的知识点,平时应该不会少用。参加的笔试也遇到了关于序列化的问题,关于序列化我们都能知道个大概,但要是能进一步分析个所以原创 2021-05-26 00:19:17 · 212 阅读 · 1 评论 -
StringBuilder类(线程不安全)和StringBuffer(线程安全)的常用方放和说明
在实际开发当中,我们经常会使用到字符串连接的操作,如果用String来操作,则使用“+”号完成字符串的连接操作;这种连接字符串,代码性能非常低,解决这个问题的方法是使用StringBuffer类的方法。StringBuffer 类:StringBuffer的内部实现采用字符数组,默认数组的长度为16,超过数组大小时,动态扩充的算法是原来的长度*2+2所以当我们预知要添加的数据长度时,建议使用带初始化容量的构造方法,来避免动态扩充的次数,从而提高效率。StringBuffer类里的常用.原创 2021-05-02 14:57:21 · 876 阅读 · 1 评论 -
idea打包jar的多种方式
这里总结出用IDEA打包jar包的多种方式,以后的项目打包Jar包可以参考如下形式:用IDEA自带的打包形式 用Maven插件maven-shade-plugin打包 用Maven插件maven-assembly-plugin打包用IDEA自带的打包方式:打开IDEA的file -> Project Structure,进入项目配置页面。如下图:点击Artifacts,进入Artifacts配置页面,点击 + ,选择如下图的选项。进入Create JAR from Mod原创 2021-04-09 17:39:23 · 1870 阅读 · 0 评论 -
java继承和组合的区别
要实现的目标:鸟(Bird)和狼(Wolf)都是动物(Animal),动物都有心跳(beat()),会呼吸(beat()),但是鸟会fly(fly()),狼会奔跑(run()),用Java程序实现以上描述。InheritTest.java 使用继承方式实现目标CompositeTest.java 使用组合方式实现目标//InheritTest.java 使用继承方式实现目标 class Animal{ private void beat(){ System.原创 2021-03-16 14:41:07 · 174 阅读 · 0 评论 -
springboot学习网站
http://springboot.fun/原创 2020-03-04 19:48:11 · 293 阅读 · 0 评论 -
CountDownLatch 的 .await() 的线程阻塞 和countDown() 计时唤醒
CountDownLatch是一种java.util.concurrent包下一个同步工具类,它允许一个或多个线程等待直到在其他线程中一组操作执行完成。CountDownLatch的用法非常简单,下面的例子也是我在网上看到的,十分贴切,这里就贴出来public class Test { public static void main(String[] args) { ...原创 2019-11-14 18:11:46 · 35574 阅读 · 3 评论 -
set、list和map体系, 及set去重原理(Set 存储对象集合并去重,需要重写equals和hashcode)
Map不是collection的子接口或者实现类。Map是一个接口set去重原理(用 Set 存储对象集合并去重,需要重写equals和hashcode)https://blog.youkuaiyun.com/zpf336/article/details/42397415...原创 2019-11-08 19:04:13 · 249 阅读 · 0 评论 -
Java运行CMD命令的两种方式并接收返回结果
方法一:public static void main(String[] args) throws Exception { Runtime runtime = Runtime.getRuntime(); /* * 执行指定的字符串命令 * 相对路径现在当前目录找,然后去path找 * 绝对路径直接在绝对路...转载 2018-07-11 13:57:47 · 4047 阅读 · 0 评论 -
HttpResponse Entity的处理(将字符数组转为JSON)
HttpResponse Entity的处理(将字符数组转为JSON)摘要:1.问题背景调用高德的IP地址查询接口,获取的返回值为字符串数组(如下);因为这里只是纯字符串,并不是真正的数组,无法直接取值,所以想到看能不能转为数组或者JSON再进行取值。2.解决:通过在查找资料,发现可以直接将这种字符串数组转为JSON的:HttpResponseresponseHttpUtils.doGet(hos...转载 2018-07-04 19:32:50 · 26140 阅读 · 0 评论 -
Java序列化接口Serializable接口的作用总结
Java序列化接口Serializable接口的作用总结一.Java序列化接口Serializable的作用:一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字段的值。(因为静态static的东西在方法区.)序列化能把堆内存中的对象的生命周期延长,做持久化操作.当下次再需要这个对象的时候,我们不用new...转载 2018-07-05 19:03:15 · 616 阅读 · 0 评论 -
Java多线程 的状态问题
线程状态转换下面的这个图非常重要!你如果看懂了这个图,那么对于多线程的理解将会更加深刻! 1、新建状态(New):新创建了一个线程对象。2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。4...转载 2018-07-26 17:25:28 · 190 阅读 · 0 评论 -
架构师面试之-------谈谈jvm中堆和栈的区别
架构师面试之-------谈谈jvm中堆和栈的区别 1.前言。 其实jvm能优化的空间不多,最主要的是使用的共享内存不要超过默认的2g或者自己调的参数。但了解一下还是有点意思的,建议面试时还是要看,别学笔者裸奔。2.区别。 网上说是有5点区别。但笔者认为只有两点主要区别。堆--用new建立,垃圾自动回收负责回收 1、堆是一个"运行时"数据区,类实例化的对象就是从堆...转载 2018-07-22 23:13:47 · 523 阅读 · 0 评论 -
Java中的小数可以是double和float,默认是double,
默认小数为 double 类型,后面也可以加 D 或 d,但这纯属多此一举,如:1.0d,但因为是默认所以可以不加直接写出1.0小数,如果要指明是float,须在后面加f ,如:1.0f...原创 2018-06-17 09:50:02 · 13746 阅读 · 0 评论