随笔 - 221  文章 - 0  评论 - 57  阅读 - 162万 

随笔分类 -  Java

使用RestTemplate上传下载文件
摘要:1、使用form表单上传文件 文件发送: @Test public void storeFile1() { File file = new File("D:\\test.txt"); String uploadUrl = "http://127.0.0.1:8080/upload1"; HttpHe 阅读全文
posted @ 2022-10-27 15:30 玄同太子 阅读(2855) 评论(0) 推荐(0) 编辑
JWT生成Token
摘要:Jar包引入 <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>4.0.0</version> </dependency> Java代码示例: public class JwtTo 阅读全文
posted @ 2022-09-30 13:58 玄同太子 阅读(740) 评论(0) 推荐(0) 编辑
JDK8流(stream)常用操作(List转Map,List转Set)
摘要:1、获取年龄>20的人员列表 List<User> list = users.stream().filter(item -> item.getAge() != null && item.getAge() > 20).collect(Collectors.toList()); 2、以ID(id+use 阅读全文
posted @ 2022-07-13 15:50 玄同太子 阅读(1602) 评论(0) 推荐(0) 编辑
fastjson中$ref循环引用
摘要:问题描述: 当我们使用fastjson工具包的方法转换成字符串时,我们发现转换后的字符串不正确,出现了$ref,如图 为啥会出现$ref: 这是因为我们对象出现了重复引用,待转换的对象有不同内部变量指向了同一个对象。 public class User { private String userNa 阅读全文
posted @ 2021-01-09 11:35 玄同太子 阅读(732) 评论(0) 推荐(0) 编辑
使用common-pool2构建thrift客户端连接池
摘要:本文不讨论thrift是否有发展前途,重点在于common-pool2的使用。 背景说明:最近在维护公司的一个老项目,项目目的是使公司内部产品和购买的产品进行交互,主要功能有导入用户、岗位、权限等。由于购买的产品有缓存设置,所以我们无法使用数据库导入的方式进行数据修改,而必须使用它内部的方法进行处理 阅读全文
posted @ 2020-05-30 22:26 玄同太子 阅读(1358) 评论(0) 推荐(0) 编辑
关于SimpleDateFormat线程安全问题
摘要:今天百度一些资料偶然发现SimpleDateFormat居然不是线程安全的,平时使用时根本没有考虑,万幸今天发现了这个问题,得把写的代码得翻出来整理一下了。 一般我们使用的SimpleDateFormat一般是这样写的: public void method() { ... DateFormat d 阅读全文
posted @ 2020-05-10 20:31 玄同太子 阅读(251) 评论(0) 推荐(0) 编辑
Java使用BIO和NIO进行文件操作比较
摘要:1、读文件 package com.zhi.test; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.nio.ByteBuffer; import 阅读全文
posted @ 2020-05-09 21:29 玄同太子 阅读(1552) 评论(0) 推荐(0) 编辑
Java并发编程-锁
摘要:锁的主要知识点有: 悲观锁/乐观锁 独享锁/共享锁 公平锁/非公平锁 可重入锁 分段锁 自旋锁 分布式锁 1、乐观锁/悲观锁 悲观锁/乐观锁体现的是一种思想,不是指具体什么类型的锁。 悲观锁总是假设最坏的情况,每次拿数据都会上锁,这样共享资源只能被一个线程使用阻塞其他线程,当用完后才释放锁让其他线程 阅读全文
posted @ 2020-05-05 14:42 玄同太子 阅读(264) 评论(0) 推荐(0) 编辑
Java并发编程-线程间通讯示例
摘要:在Java中线程间通讯有多种方式,我这里列出一些常用方式,并用代码的方式展示他们是如何实现的: 共享变量 wait, notify,notifyAll(这3个方法是Object对象中的方法,且必须与synchronized关键字结合使用) CyclicBarrier、CountDownLatch 利 阅读全文
posted @ 2020-05-04 22:37 玄同太子 阅读(291) 评论(0) 推荐(0) 编辑
Java并发编程-多线程
摘要:1、进程与线程 一个程序就是一个进程,一个程序中的多个任务被称为线程。进程是资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位。多线程的好处并发执行提高了程序的效率,CPU不会因为某个线程需要等待资源而进入空闲状态 2、线程的实现方式 继承java.lang.Thread类 阅读全文
posted @ 2020-05-03 21:49 玄同太子 阅读(223) 评论(0) 推荐(0) 编辑
分布式锁的实现方式和优缺点&Java代码实现
摘要:以下实现仅仅是大概思路,是非公平锁,也是独享锁,而且没有考虑阻塞。 1、基于数据库 它的实现方式很简单,就是在数据库中创建一个lock表,申请锁就是向表中插入一行唯一关键字,数据库能够保证只有一个请求执行成功,也就是说这个请求申请到了锁,其他请求会报错说明没有申请到锁。释放锁就是在数据库中删除这一行 阅读全文
posted @ 2020-05-03 17:28 玄同太子 阅读(1514) 评论(0) 推荐(0) 编辑
jar解压后重新打包
摘要:因为一些原因修改了jar中的配置文件,但用WinRAR压缩成zip文件后该后缀名为jar,发现重新压缩的文件不可用,所有这些情况下我们必须用jar重新打包。 配置Java环境,让jar命令可用: jar命令使用参数如下: 阅读全文
posted @ 2019-10-25 13:44 玄同太子 阅读(8087) 评论(0) 推荐(1) 编辑
Java基本类型内存字节数
摘要:基本类型 字节数 位(bit) 取值范围 byte 1 1*8 -128~127 short 2 2*8 int 4 4*8 long 8 8*8 float 4 4*8 double 8 8*8 char 2 2*8 boolean 1 1*8 true,false 阅读全文
posted @ 2019-04-03 23:15 玄同太子 阅读(421) 评论(0) 推荐(0) 编辑
CentOS下运行Java文件Error: Could not find or load main class
摘要:今天,因为测试拷贝一个JvmTest.java文件到CentOS虚机上运行,发现文件编译没有问题,但运行时却报错,如下图: Java代码如下: 解决方式:去掉java代码第一行package信息。 重新编辑后执行,代码执行成功 阅读全文
posted @ 2019-03-30 17:56 玄同太子 阅读(12761) 评论(0) 推荐(0) 编辑
ArrayList与LinkedList
摘要:1、ArrayList 1)继承结构 2)ArrayList是数组存储结果,初始容量为0,添加第一个元素后容器为10,后面每次超过容量时,容量递增50%,每次扩容都需要产生新的数组,再把老的数据复制过去。 3)优缺点 优点:存取速度快 缺点:事先必须知道数组的长度、插入删除元素很慢、空间通常是有限制 阅读全文
posted @ 2019-03-27 23:02 玄同太子 阅读(310) 评论(0) 推荐(0) 编辑
Java获取本地IP地址和主机名
摘要:方式一:通过java.net.InetAddress类获取 输出: 这种方式获取到的主机名没啥问题,这种方式获取的主机名没啥问题,但获取到的IP地址却有待考量,如果一台机器有多个网卡,他获取的IP是谁的呢?事实上,上面输出的IP是我虚拟机IP地址,既不是我有线网卡的地址,也不是我无线网卡的地址。 方 阅读全文
posted @ 2019-03-27 17:39 玄同太子 阅读(21145) 评论(0) 推荐(2) 编辑
CopyOnWriteArrayList&Collections.synchronizedList()
摘要:1、ArrayList ArrayList是非线性安全,此类的 iterator() 和 listIterator() 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 阅读全文
posted @ 2019-03-17 21:31 玄同太子 阅读(288) 评论(0) 推荐(0) 编辑
Java线程池ThreadPoolExecutor&Executors
摘要:一、先看看传统的开启线程。 new Thread(new Runnable() { @Override public void run() { } }).start(); 缺点: 1、每次new Thread新建对象性能差。 2、线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统 阅读全文
posted @ 2019-03-17 19:53 玄同太子 阅读(477) 评论(0) 推荐(0) 编辑
AtomicInteger类的使用
摘要:先看一段代码 程序执行结果 Num类中的increment方法并不是线程安全的,所以目标结果并不是期望的1000000。为了保证计数的准确性,我们需要在increment方法上加上关键字synchronized 程序执行结果 目标结果与期望相同,但这是否是最好的方式呢?答案是否,我们可以使用java 阅读全文
posted @ 2019-03-11 16:37 玄同太子 阅读(273) 评论(0) 推荐(0) 编辑
JAVA设计模式-单例模式
摘要:方式一:适合单线程模式(不推荐) 方式二:没有延迟加载(不推荐) 方式三:不适合高并发(不推荐) 方式四:双重检测(推荐) 方式五:推荐 学了Java多年,一直都是用方式一、方式二和方式三,今天才发现方式四,百度后才知道方式五。 阅读全文
posted @ 2019-03-10 21:08 玄同太子 阅读(128) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示