
java
文章平均质量分 55
我先森
shit code
展开
-
java 正则匹配json中占位符
对于一些框架研发的时候,一些json配置文件我们可以使用占位符语法,然后可通过-Dkey=value传递到系统参数中,最后正则替换掉。原创 2024-11-06 18:28:43 · 311 阅读 · 0 评论 -
java volatile
需要注意的是,尽管 volatile 保证了每次读取的都是最新的值,并且每次写入都会立即反映到主内存中,但它并不能保证加一操作的原子性。这意味着如果有多个线程同时对这个 volatile int 变量执行加一操作,它们可能会读取到相同的旧值,并在此基础上进行加一,导致最终的结果比预期的要小。如果需要确保加一操作的原子性,应该使用原子类(如 AtomicInteger)中的 incrementAndGet() 方法,或者使用 synchronized 关键字或其他锁机制来同步对这个变量的访问。原创 2024-03-19 15:46:13 · 294 阅读 · 1 评论 -
java空字符和空的区别
ASCII 编码表,中前三十个左右都是控制字符,控制字符的意思是可以实现一些控制,而不仅仅是表面人眼看到的字符的样子。unicode 表示方式是:\u0000 八进制表示方式是\000 十六进制表示方式是\x00。空字符:是一个不可见的字符,再控制台打印的时候它是不存在的,但是物理意义上是存在的。比如图中十进制10 表示换行。请找到对应的行,我们来解读。\u0000: 指的是空字符。“” : 表示空字符串。原创 2024-03-08 15:23:58 · 583 阅读 · 0 评论 -
Java双冒号(::)运算符详解
1.说明之前没用过::这个东西,今天看flink的时候发现官网有个例子用到了这个符号, 本着求知欲去百度查了一番,没找到能说到我心里去的解释,本着求知欲的态度,我去了官网看了看. java ::2.先来说下@FunctionalInterfacejava8 lambda 内部接口需要@FunctionalInterface这个注解,这个注解是一个说明性质的注解,被@FunctionalInterface注解的接口只能由一个抽象方法,@FunctionalInterface只能用于注解接口而不能用在c原创 2021-09-10 18:50:38 · 12279 阅读 · 23 评论 -
java 父进程获取子进程的输出 ,父子进程通信,(标准输入输出)
应用场景:B进程负责处理数据,结果输出在标准输出中,A进程作为B的父进程去启动B进程,A可以获取到B进程的stdout,stderr.这样做的好处是解耦,假设B进程是java语言开发,na'm原创 2021-06-03 15:33:24 · 1352 阅读 · 0 评论 -
java FileOutputStream write
FileOutputStream 有三个写出方法原创 2021-06-02 15:13:01 · 602 阅读 · 0 评论 -
java 类加载之热部署
1.概述java是非动态语言,所谓的动态语言就是在代码运行的过程中可以动态的增加方法,类。java虽然非动态语言但是利用自己的反射,依旧可以完成这样的功能。 今天讨论的是java的热加载,也就是热更新。考虑这样一个事实,当你的项目代码十分繁重,或者说上线很麻烦的时候。这个时候能够在不重启项目的情况下,让我们修改的java代码生效,就是很好的事情了。 谁也不想动不动重新编译,重启项目。 要解决这个问题,就要用到java的类加载,也就也是自定义类加载。 而理解类加载的核心,就是理解Class<?...原创 2021-05-13 15:11:52 · 219 阅读 · 0 评论 -
ExecutorService 源码每个方法的介绍 告别迷糊
摘要:最近发现网上很多讲解 shutdown shutdownNow 等方法分文章,说的云里雾里,闲着没事,看了看源码,顺带英文原文,彻底了解这些方法,后续会将线程池这块知识慢慢补充上来。public interface ExecutorService extends Executor { /** 对已经提交的线程启动一个有序的关闭 * Initiates an orderly shutdown in which previously submitted 线程池..原创 2021-03-17 20:45:05 · 340 阅读 · 0 评论 -
java获取elasticsearch所有的数据
注意:下面的代码是用的java-high客户端在贴出程序之前先提出几个问题,首先在搜索引擎中任何时候涉及到批量数据处理的时候,都不可能在一次请求中获取到所有的数据,这样是为了节省内存,而且全部拿到也不现实,一般都是分页获取的,也就是说先给你展示,下一页的话通过你的点击会从上次展示的位置往后获取数据,而这个位置你可以理解为位置指针。就这样循环获取循环请求才能真正的将数据全部拿到。下面的程序...原创 2019-03-14 17:47:08 · 12261 阅读 · 7 评论 -
hashMap扩容算法
一、需求给定一个整数,返回大于等于该整数的最小2次幂(2的乘方)。例: 输入输出-1111349161516二、分析当遇到这个需求的时候,我们可能会很容易想到一个"笨"办法:通过对数函数求解。假设输入数字为num,那么我们先判断num是不是2的乘方,如果是的话就直接返回了;否则需要...转载 2020-05-15 13:56:40 · 860 阅读 · 0 评论 -
springboot 拦截请求,统一化处理post get
适用场景:为了方便后台做统一化处理,方便前后端交互,在拦截器中将post get 统一处理,在control就不需要区分该请求是post 还是get请求,很方便。@Componentpublic class RequestParamInterceptor implements HandlerInterceptor { private static Logger log ...原创 2020-05-07 10:34:50 · 2998 阅读 · 0 评论 -
java 同步异步互斥 wait noitfy
如果两个线程之间有依赖关系,线程之间必须进行通信,互相协调才能完成工作。例如有一个经典的堆栈问题,一个线程生成了一些数据,将数据压栈;另一个线程消费了这些数据,将数据出栈。这两个线程互相依赖,当堆栈为空时,消费线程无法取出数据时,应该通知生成线程添加数据;当堆栈已满时,生产线程无法添加数据时,应该通知消费线程取出数据。wait noitfy两个方法是每一个对象都有的方法,Object最上层...原创 2019-12-31 18:19:02 · 346 阅读 · 0 评论 -
java 单例看这一篇就够了
单例的实现有很多种,大部分人其实还是用的synchronized目录synchronized 懒汉式单例2.java 饿汉式单例3.用枚举实现单例(推荐这么用)4.CAS自旋实现单例 synchronized 懒汉式单例 public class Singleton { private static Singleton instance...原创 2019-12-30 16:20:11 · 136 阅读 · 0 评论 -
java hash table
<div id="content_views" class="markdown_views prism-tomorrow-night"> <!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="di...转载 2019-12-25 17:36:34 · 239 阅读 · 0 评论 -
JAVA final static总结
一、final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。fin...转载 2019-12-25 16:54:17 · 109 阅读 · 0 评论 -
java compare compareTo方法区别
1,compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable<T>接口的,必须重写public int compareTo (T o)方法,比如MapReduce中Map函数和Reduce函数处理的<key,value>,其中需要根据key对键值对进行...转载 2019-12-25 11:39:33 · 739 阅读 · 0 评论 -
java 自定义map排序
package test;public class Test { public static void main(String[] args) throws IOException { Map<String, String> sourceMap = new HashMap<>(); sourceMap.put( "201...原创 2019-12-25 10:49:36 · 843 阅读 · 0 评论 -
java CAS 乐观锁
本文讲解CAS机制,主要是因为最近准备面试题,发现这个问题在面试中出现的频率非常的高,因此把自己学习过程中的一些理解记录下来,希望能对大家也有帮助。什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清楚了,这些词也就唬不住人了。synchronized是悲观锁,这种线程一旦得到锁,其他需要锁的...转载 2019-12-12 14:15:30 · 138 阅读 · 0 评论 -
java可重入锁的意义
java默认锁的机制都是非公平的,非公平的意思就是线程一,线程二同时取循环执行一串被锁住的代码块,执行的先后顺序是不确定的,也就是说不一行是先来后到的,这就是非公平。执行结果是下面这样,这就是默认的线程调度方式是非公平的。public class FairLock implements Runnable{ public static ReentrantLock fairLock = ...原创 2019-12-12 11:16:36 · 1296 阅读 · 2 评论 -
String[] for循环分割
public class Test { public static void main(String[] args) {// SystemCode systemCode = SystemCode.OK;// System.out.println(systemCode.getCode()+systemCode.getMessage());// ...原创 2019-12-11 11:50:48 · 4314 阅读 · 0 评论 -
java注解
Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我个人认为,比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Ja...转载 2019-11-28 18:15:02 · 122 阅读 · 0 评论 -
进程通信的几种方式
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。1、管道我们来看一条 Linux 的语句netstat -tulnp | ...转载 2019-11-25 18:15:13 · 342 阅读 · 0 评论 -
java SequenceInputStream 文件合并
这个SequenceInputStream的功能就是合并多个input输入流(继承自InputStream的类都可以合并),在看这个之前你可以先看一下我其他的I/O文章,下面我写了一个小例子,功能就是读取两个文件的内容,然后合并成一个新的文件,先贴上代码和实验结果。import java.io.*;public class test { private static Str...原创 2019-04-25 18:09:51 · 550 阅读 · 0 评论 -
java ByteArrayOutputStream
fileinputstream是字节流的管道形式,ByteArrayOutputStream是字节流的数组形式,ByteArrayOutputStream/ByteArrayInputStream在内部都维护的一个字节数组,将输入流转换成其内部数组来保存。这个不难理解。看代码:public class test { private static String a; publ...原创 2019-04-25 16:20:45 · 1741 阅读 · 0 评论 -
java fileoutputstream/fileinputstream
目录一:FileInputStream/FileOutputStream二:改进的复制功能。2.1需要注意的地方是一:FileInputStream/FileOutputStream首先一点计算机识别的都是二进制,所以来说,读取文件的第一步就是建立文件连接,然后构建字节流通道,java所有的I/O都是字节流开始的,所谓的字符流也是在字节流的基础上进行的字节流转化成字符流的...原创 2019-04-24 15:37:16 · 604 阅读 · 0 评论 -
java InputStreamReader
java底层从计算机读取的统统都是二进制,所以一开始我们读取的时候都是先简历连接通道,然后将文件数据以字节流的形式读取进入通道。#建立连接File file =new File("a.txt");#二进制流的通道。FileInputStream fileInputStream = new FileInputStream(file);#你想啊,fileInputStr...原创 2019-04-23 17:47:20 · 937 阅读 · 0 评论 -
log4j2小笔记
FiltersAccept、Deny、Neutral配置文件中有这么一段,我们来详细解读下,这个非常重要,涉及到不同级别的日志输出到对应的日志文件中:1 <Filters>2 <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" />3 <Threshold...原创 2019-04-16 01:00:30 · 350 阅读 · 0 评论 -
jsch下载文件(递归下载)
//本程序的作用:对远程服务器的目录,实时的监控,并且递归下载,如果哪个方法你不懂的话,哈哈那你百度一下。代码是可以用的哦。package com.tp;import com.jcraft.jsch.*;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.ut...原创 2019-03-11 18:04:42 · 1156 阅读 · 0 评论 -
java自定义链表
数组,在内存上给出了连续的空间.链表,内存地址上可以是不连续的,每个链表的节点包括原来的内存和下一个节点的信息(单向的一个,双向链表的话,会有两个).数组优于链表的:1.内存空间占用的少,因为链表节点会附加上一块或两块下一个节点的信息.但是数组在建立时就固定了.所以也有可能会因为建立的数组过大或不足引起内存上的问题.2.数组内的数据可随机访问.但链表不具备随机访问性.这个很容易理解.数...原创 2019-05-23 18:14:24 · 639 阅读 · 0 评论 -
八.Elasticsearch Translog
目录目录1:什么是TransLog2:Translog设置2.1看官网:2.1:优化的同时存在的风险2.2网友的解释1:什么是TransLog对Lucene的更改只在Lucene提交期间持久化到磁盘,这是一个相对昂贵的操作,因此不能在每次索引或删除操作之后执行。当进程退出或硬件故障时,Lucene将从索引中删除一次提交之后和另一次提交之前发生的更改(也就是说...原创 2019-06-03 18:42:00 · 1265 阅读 · 0 评论 -
理解java类加载器
目录目录摘要:1:类加载器做了什么2:类的唯一性3:加载过程 假如我有一个test.class4:类加载器的层次结构5:加载插件以及层次结构图6:自定义类加载器:摘要:java之所以跨平台,就是因为jvm对其可以解析的文件做了规范,你的所有的java代码再编译之后会生成Class文件,程序运行的时候载入jvm的就是class文件,class文件是被...原创 2019-08-02 11:09:09 · 216 阅读 · 1 评论 -
log4j onMatch onMismatch
日志级别: <!-- ALL < TRANCE < DEBUG < INFO < WARN < ERROR < FATAL < OFF--><ThresholdFilter level="INFO" onMatch="" onMismatch=""/>onMatch:意思是当前级别以及以上要怎么处理:ACCEPT ...原创 2019-09-06 19:33:12 · 3000 阅读 · 2 评论 -
spring boot 基于注解 aop的分组参数验证
功能:所有的方法中的参数都封装在一个实体类中,基于aop实现统一的验证。那么有人要说了,假如我有一个参数param1,现在两个方法A, B其中A方法需要验证参数param1,B方法又不需要验证怎么办呢?spring-boot提供了参数分组的概念,下面是一个比较完整的例子。基于注解 aop的分组参数验证,下面的例子还包括了全局异常处理,算是生产实践可以直接借鉴的,如果有不懂得地方请留言。一:C...原创 2019-09-17 10:42:06 · 270 阅读 · 0 评论 -
java设计模式-策略模式
策略模式摘要:在讲解系列java设计模式的接下来的文章中,希望你深刻理解四个字 '开闭原则',意思就是对客户隐藏既有的功能,避免其修改,对于需要自定义添加的功能应该对客户提供拓展接口。一:举个例子,假如你有一个计算器,现在你只添加 加减功能,至于乘除开方根号等功能你没有实现,留给客户实现。下...原创 2019-09-26 11:01:13 · 130 阅读 · 0 评论 -
java设计模式-责任链模式
责任链模式摘要:责任链模式,在实际应用中十分广泛,但是对于初级java工程师甚至是中级你都不一定用的好,这个模式顾名思义,就是将各种功能像链条穿起来,然后再统一执行。一:案例:假如此时我们要多网站的关键词进行一个过滤,比如说过滤掉“黄色”,“敏感”,“广告”这三个词语。首先你要考虑,未来有可能我们会过滤更多...原创 2019-09-26 14:46:38 · 142 阅读 · 0 评论 -
java-单例多例
一:单例public class SingleObject {private static SingleObject instance;public SingleObject(){}public static SingleObject getInstance(){if(instance == null){instance = new SingleObject();}...原创 2019-09-26 15:46:19 · 152 阅读 · 0 评论 -
JAVA lambda 表达式
目录JAVA lambda 表达式 1概要 1一. 函数式接口的概念 1二. 例子 22.1自定义一个只有一个方法的接口如下 22.2接口的实现调用 2三. ForEach 3四:Lambda方法的传递 5JAVA lambda 表达式概要Java8已经出来好几年了,现在依然有很多人在用java7,在技术方面固步自封自然不是好事,接受新的事物,...原创 2019-09-27 13:57:43 · 331 阅读 · 0 评论 -
java 递归逐层遍历读取所有的文件并输出每一行的内容
感言:以前读取目录文件都是事先知道文件是目录还是文件,比较有局限性,今天闲来没事搞了个递归读取,总体来说也很简单,代码如下。 package Decode;import java.io.*;public class RecursionRead { public static void main(String[] args) { try { ...原创 2019-01-24 13:44:40 · 1731 阅读 · 0 评论