JAVA
文章平均质量分 90
never疯
这个作者很懒,什么都没留下…
展开
-
【音视频】服务编排--Conductor 文档翻译
介绍Conductor是一个微服务的编排引擎Conductor优点Conductor,帮助我们协调基于微服务的流程,具有以下功能:允许创建复杂的流程/业务流,其中由微服务实现单个任务。基于JSON DSL的定义执行流程。为这些流程提供可见性和可追溯性。在暂停,恢复,重启等周围公开控制语义,以获得更好的devops体验。允许更多地重用现有的微服务,为管理提供更容易的途径。用户界面可视化流程。能够在需要时同步处理所有任务。能够扩展数百万个并发运行的流程。由客户端提取的排队服务支持。能原创 2020-08-20 21:32:07 · 775 阅读 · 0 评论 -
【JAVA】Supplier
继续学习一个新的函数式接口–Supplier,它的中文意思为供应商、提供者而具体的方法也是相当的简单,就是不接受任何参数,返回一个结果:对它有了大概的了解之后,下面用代码来使用一下它:貌似这函数的使用相当简单呀,但是简单并非是它的用处少,那它到底可以应用在现实中的什么场合之下呢?工厂就是其一,因为工厂有时里面是不接收参数的,直接从工厂里面返回一个结果,当然如果工厂里面要接收参数且返回结果那Function函数式接口就可以派上用场了,下面还是看一下这种Supplier的场景:首先定义一个实体:原创 2020-08-04 10:35:14 · 16932 阅读 · 6 评论 -
HTTPS加密的原理
加密的方式对称加密:加密和解密都使用同一个密匙非对称加密:加密使用的密匙和解密使用的密匙不相同的哈希算法:将任意长度的信息转换为固定长度的值,算法不可逆数字签名:证明某个消息或者文件是某人发出/认同的HTTP数据传输流程浏览器将支持的加密算法信息发送给服务器浏览器选择一套浏览器支持的加密算法,以证书的形式回发给浏览器浏览器验证证书的合法性,并结合证书公钥加密信息发给服务器服务器使...原创 2019-06-28 10:50:02 · 427 阅读 · 0 评论 -
【java】希尔排序
import java.util.*;public class Test { public static void main(String[] args){ int[] arr = new int[]{2,1,6,4,7,9}; shellsort(arr); System.out.println(Arrays.toString(arr)); } public static void shellsort(int[] nums){ .原创 2020-07-10 14:17:09 · 181 阅读 · 0 评论 -
【JAVA】JAVA实现归并排序
import java.util.*;public class Test { public static void main(String[] args){ int[] arr = new int[]{2,1,6,4,7,9}; resunion(arr,0,5); System.out.println(Arrays.toString(arr)); } public static void resunion(int[] nums原创 2020-07-10 13:55:33 · 295 阅读 · 0 评论 -
【JAVA】 JAVA实现堆排序
代码还是很好理解的,过两天 我加些动图import java.util.*;public class Test { public static void main(String[] args){ int[] arr = new int[]{2,1,6,4,7,9}; heapsort(arr); System.out.println(Arrays.toString(arr)); } public static void heaps原创 2020-07-10 09:33:53 · 178 阅读 · 0 评论 -
【JAVA】 try catch finally 中包含return的几种情况,及返回结果
第一种情况:在try和catch中有return,finally中没有return,且finally中没有对try或catch中要 return。这种情况,无论如何finally中的代码块都会执行,然后再执行try或者finally中的return。第二种情况:在try和catch中有return,finally中没有return,但finally中有对try或catch中要 return数据进行操作的代码返回的数据为基本数据类型,则finally中对要返回数据操作无影响。try或者catch要返回的值原创 2020-07-07 16:49:00 · 536 阅读 · 0 评论 -
【JAVA】 实现消费者生产者
通过wait()和 notifyAll()实现public class PublicQueue { public int putindex = 0; public int maxcount = 10; public synchronized void add(){ while(putindex >= maxcount){ try { System.out.println("没有东西可以加了");原创 2020-06-21 18:14:41 · 192 阅读 · 0 评论 -
【JAVA】线程 打印ABC
通过控制变量的方式public class Test { public static int num = 1; public static void main(String[] args) { Thread a = new Thread(new Runnable() { @Override public void run(){ while (true){原创 2020-06-20 12:19:18 · 259 阅读 · 0 评论 -
【JAVA】 JVM
https://www.cnblogs.com/czwbig/p/11127124.html原创 2020-06-07 23:03:51 · 187 阅读 · 0 评论 -
【JAVA】设计模式 单例模式的五种代码
单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3...原创 2020-05-03 19:05:50 · 734 阅读 · 0 评论 -
【算法】Java中的 && 与&
Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false。&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式;&则两个表达式都执行。&可以用作位运算符,当&两边的表达式不是Boolean类型的时候,&表示按位操作...原创 2020-04-21 00:32:07 · 247 阅读 · 0 评论 -
【数据结构】LRU的实现
最近看到好多人的面试题都是要求手写LRU,自己也想整理下这方面的知识点页面置换算法:地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。LRU算法:最近最少使用,简单来说就是将数据块中,每次使用过的数据放在...原创 2019-12-26 18:58:12 · 1329 阅读 · 0 评论 -
【JAVA】Integer、new Integer() 和 int 比较的面试题
基本概念区分1、Integer 是 int 的包装类,int 则是 java 的一种基本数据类型2、Integer 变量必须实例化后才能使用,而int变量不需要3、Integer 实际是对象的引用,当new一个 Integer时,实际上是生成一个指针指向此对象;而 int 则是直接存储数据值4、Integer的默认值是null,int的默认值是0Integer、new Integer()...原创 2019-12-18 08:13:24 · 558 阅读 · 2 评论 -
【算法】红黑树的前世今生
最近有好多知识点没整理,忙完这一阵我就开始慢慢弄。因为我觉得网上大多数博客包括书(《算法导论》!!)上来就直接给个红黑树的五大定义,然后就开始旋转了,我看完是一点记不住,那么今天我就讲讲红黑树的前世今生。那么我也先把这五个定义给你,你可以先过下(不用记)1.每个节点或者是红色的,或者是黑色的 2.根节点是黑色的 3.每一个叶子节点(最后的空节点)是黑色的 4.如果一个节点是红色的,那...原创 2019-11-29 12:05:21 · 268 阅读 · 1 评论 -
[java]栈和堆的理解
栈:函数中定义的基本类型变量,对象的引用变量都在函数的栈内存中分配。栈内存特点,数数据一执行完毕,变量会立即释放,节约内存空间。栈内存中的数据,没有默认初始化值,需要手动设置。堆:堆内存用来存放new创建的对象和数组。堆内存中所有的实体都有内存地址值。堆内存中的实体是用来封装数据的,这些数据都有默认初始化值。堆内存中的实体不再被指向时,JVM启动垃圾回收机制,自动清除,这也是JAV...原创 2019-06-29 20:21:36 · 269 阅读 · 0 评论 -
[java] 线程的生命周期和各状态的转换
线程的状态转换图1、新建状态用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable)。注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadStateException异常。2、就绪状态处于就绪状态的线程已经具备了...原创 2019-06-29 19:13:51 · 584 阅读 · 0 评论 -
[java]重写类的 equals()方法
equals()方法和hashCode()方法是什么?equals()和hashCode()都是是Java中万物之源Object类中的方法;equals方法用于比较两个对象是否相同,Object类中equals方法的实现是比较引用地址来判断的对象是否是同一个对象,通过覆盖该方法可以实现自定义的判断规则;hashCode是jdk根据对象的地址或者字符串或者数字计算该对象的哈希码值的方法。为什...原创 2019-06-29 18:53:44 · 7298 阅读 · 2 评论 -
[JAVA] Object的方法有哪些
protected Object clone()创建并返回此对象的一个副本。boolean equals(Object obj)指示某个其他对象是否与此对象“相等”。protected void finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。Class<? extends Object> getClass()返回一个对象的运...原创 2019-06-29 20:48:34 · 582 阅读 · 0 评论 -
[java] volatile
1.volatile简介volatile这个单词的本义:不稳定的,反复无常的,易挥发的说简单点,volatile就是表示某人或某物是不稳定的、易变的。volatile作为java中的关键词之一,用以声明变量的值可能随时会别的线程修改,使用volatile修饰的变量会强制将修改的值立即写入主存,主存中值的更新会使缓存中的值失效(非volatile变量不具备这样的特性,非volatile变量的值...原创 2019-06-29 18:37:14 · 178 阅读 · 0 评论 -
[java]请你谈谈关于Synchronized和lock
synchronized是Java的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。JDK1.5以后引入了自旋锁、锁粗化、轻量级锁,偏向锁来有优化关键字的性能。Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁...原创 2019-06-29 18:31:06 · 642 阅读 · 0 评论 -
请你介绍一下map的分类和常见的情况
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数...原创 2019-06-29 18:14:34 · 1571 阅读 · 0 评论 -
JMH的使用和代码
概述JMH 是一个由 OpenJDK/Oracle 里面那群开发了 Java 编译器的大牛们所开发的 Micro Benchmark Framework 。何谓 Micro Benchmark 呢?简单地说就是在 method 层面上的 benchmark,精度可以精确到微秒级。可以看出 JMH 主要使用在当你已经找出了热点函数,而需要对热点函数进行进一步的优化时,就可以使用 JMH 对优化的效...原创 2019-08-30 16:51:58 · 2381 阅读 · 0 评论 -
你知道java8的新特性 Lambda
你知道java8的新特性吗,请简单介绍一下Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。方法引用− 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。默认方法− 默认方法就是一个在接口里面有了一个实现的方法。新工具− 新的编译工具,如...原创 2019-06-29 18:06:58 · 391 阅读 · 0 评论 -
【接口和抽象类的区别】
1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。2、抽象类要被子类继承,接口要被类实现。3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么...原创 2019-07-17 09:56:21 · 136 阅读 · 0 评论 -
【JAVA】 Hashmap!!!!!!
这篇文章特别特别好https://zhuanlan.zhihu.com/p/21673805原创 2019-07-25 19:10:02 · 179 阅读 · 0 评论 -
Springboot 使用数据库连接池 Druid【详】
本人也是刚开始使用Druid现在java比较火的数据库连接池有 Hikaricp 和 Druid我看了一些教程Hikaricp是一个很好的数据库连接池,速度非常快,而且评价特别高。对于自己的话,自己选择的是Druid,因为Druid是阿里的产品,有很多官方文档是中文,简单易读,而且自己只是学习来用,Druid足够了。自己查了一些资料,因为自己使用springboot比较多,所以选择的spr...原创 2019-06-05 11:20:27 · 1705 阅读 · 0 评论 -
Java 类初始化顺序
一个类中包含如下几类东西,他们前后是有顺序关系的1.静态熟悉 : static 开头定义的属性2.静态方法块 : static{} 圈起来的方法块3.普通属性 :未带static定义的属性4.普通方法块: {}圈起来的方法块5.构造函数:类名相同的方法6.方法 : 普通方法包含子类和接口类普通类静态变量静态代码块如果有main函数 main()普通变量普通代码块构造函数...原创 2019-09-17 19:45:54 · 166 阅读 · 0 评论 -
命令模式 自己理解
命令模式命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。以下的这个关键代码放在最上面的原因在于想要更好的理解命令模式,我们需要明确的区分这三部分关键代码定义三个角色:1、received 真正的命令执行对象 2、Command...原创 2019-09-17 17:25:15 · 698 阅读 · 0 评论 -
@RefreshScop原理整理
1、@controller 控制器(注入服务)用于标注控制层,相当于struts中的action层2、@service 服务(注入dao)用于标注服务层,主要用来进行业务的逻辑处理3、@repository(实现dao访问)用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的)泛指各...原创 2019-08-28 11:26:58 · 3584 阅读 · 0 评论 -
Git的使用
Git是什么?Git是目前世界上最先进的分布式版本控制系统(没有之一)。Git的诞生很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?事实是,在2002年以前,世界...原创 2019-08-24 20:55:26 · 114 阅读 · 0 评论 -
StringUtils里的isEmpty方法和isBlank方法的区别
isEmpty()public static boolean isEmpty(String str) { return str == null || str.length() == 0;}isBlank()public static boolean isBlank(String str) { int strLen; if (str ...原创 2019-08-24 10:53:04 · 247 阅读 · 0 评论 -
【java】HashMap 一遍就懂!!!!
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java.util.Map,...转载 2019-07-28 11:18:15 · 132056 阅读 · 31 评论 -
【java】 HelloWorld程序的执行流程
详细分析从编译到执行到输出结果的过程:public class HelloWorld { public static void main(String[] args) { String s ; s = “Hello World!”; //定义字符串s System.out.println(s); ...原创 2019-07-27 20:41:08 · 1000 阅读 · 0 评论 -
[JAVA] 请你讲讲数组(Array)和列表(ArrayList)的区别?什么时候应该使用Array而不是ArrayList?
Array和ArrayList的不同点:Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。Array大小是固定的,ArrayList的大小是动态变化的。ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方...原创 2019-06-29 18:03:57 · 1967 阅读 · 0 评论 -
[JAVA] 浅谈java和javascript的区别
参考回答:JavaScript 与Java是两个公司开发的不同的两个产品。Java 是原Sun Microsystems公司推出的面向对象的程序设计语言,特别适合于互联网应用程序开发;而JavaScript是Netscape公司的产品,为了扩展Netscape浏览器的功能而开发的一种可以嵌入Web页面中运行的基于对象和事件驱动的解释性语言。JavaScript的前身是LiveScript;而Ja...原创 2019-06-29 16:30:43 · 19326 阅读 · 0 评论 -
面试题 如何设计一个关系型数据库 和索引相关
下面是我们对数据库索引的整理1、首先要明白无名无实莫要用索引:因为数据中的记录很多,为了方便我们查找,提高查询的效率;2、索引的原理:对要查询的字段建立索引其实就是把该字段按照一定的方式排序;建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效了,比如图书馆的书是按照书名的第一个字母排序的,那么你想要找作者叫张三的就不能用改索引了;还有就是如果索引太多会降低查询的速度3、索...原创 2019-06-28 16:54:18 · 861 阅读 · 0 评论 -
数据返回 @Date 时间戳 怎么变成汉字
一般我们定义实体类时都是private Date birthday;但是我们想要给他处理成返回字符串的时间格式时我们可以写成@JsonFormat(pattern=“yyyy-MM-dd hh:mm:ss a”,locale="zh),timezone=“GMT+8”)private Date birthday;这样返回的就是字符串了...原创 2019-06-13 11:27:18 · 455 阅读 · 0 评论 -
【JAVA】Java中的HashMap的工作原理是什么?
hashmap是一个key-value键值对的数据结构,从结构上来讲在jdk1.8之前是用数组加链表的方式实现,jdk1.8加了红黑树,hashmap数组的默认初始长度是16,hashmap数组只允许一个key为null,允许多个value为nullhashmap的内部实现,hashmap是使用数组+链表+红黑树的形式实现的,其中数组是一个一个Node[]数组,我们叫他hash桶数组,它上面存放...原创 2019-06-12 17:13:28 · 5753 阅读 · 1 评论 -
【JAVA】 Iterator和ListIterator的区别是什么?
下面列出了他们的区别:Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。...原创 2019-06-12 16:49:19 · 1237 阅读 · 1 评论