Java
文章平均质量分 52
zz308
每天进步一点点
展开
-
Java基础知多少
一 深拷贝和浅拷贝区别:浅拷贝是对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝;而深拷贝是对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容。https://m.html.cn/qa/other/22850.html...原创 2021-09-03 23:29:34 · 223 阅读 · 0 评论 -
雪花算法 SnowFlake
最近一段时间,忙于code,转载一篇介绍雪花算法的文章,文章写得很清晰,值得一看。生成订单唯一的流水号:雪花算法 SnowFlake转载 2021-05-14 09:00:29 · 240 阅读 · 0 评论 -
【数据结构与算法】经典查找算法
1. 折半查找算法:1. 首先数列有序,该算法针对的是有序数列2. 折半查找,给定值a与中间值array[(low+high)/2]相比,若小于中间参考值,则给定值存在左侧,否则给定值存在右侧,通过迭代或者递归方式查询元素所在索引 //二分查找,迭代版本 public static Integer biSearch(int array[], int a) { int low = 0; int high = array.length - 1;原创 2021-03-14 16:38:00 · 148 阅读 · 0 评论 -
【数据结构与算法】十大经典排序算法
前言有小伙伴已经把这个知识点总结的非常到位了,读后让人醍醐灌顶,这里只是记录一下自己学习的历程。推荐:十大经典排序算法(动图演示)/ 计算时间复杂度1. 时间复杂度时间复杂度常用大O表示法,其实就是统计计算过程中,运算逻辑在数量级为N的时候,需要的计算次数,取其最大量级作为时间复杂度。常见的时间复杂度量级:1. O(1):常数阶,其实就是运算逻辑和量级N没有直接的关系,这里不能假想有,代码中最直观的就是没有循环结构啥的,比如控制台输出一个结果(表示自己常钻牛角尖,输出一条运算是1,输出原创 2021-03-13 10:20:47 · 1094 阅读 · 0 评论 -
【技术栈】Kafka
1. Kafka2. Kafka整体架构图原创 2021-03-09 15:47:39 · 551 阅读 · 5 评论 -
【项目】PowerEngine解析
前言曾经有幸在科蓝公司做过开发,很多银行项目基于PE框架,由于项目开发较早,想着当时还没有MVC框架,更遑论现今主流的SpringMVC/SpringBoot框架了,老一批的程序员基于JSP/Servlet开发,后期又加入了很多的优化,导致项目看起来特别费劲,又因为软件著作权的原因吧,度娘也看不到什么让人眼前一亮的博文。最近整理电脑,发现还有那么一个MerchantTest项目,心血来潮看了一下,若干年后纯粹想总结一下,希望给仍使用该PE框架的小伙伴一点点火花。1. PE内部结构如图所示(原创 2021-03-08 01:09:50 · 3120 阅读 · 2 评论 -
【技术栈】消息中间件MQ
1. 什么是MQMQ属于分布式系统中的一个子系统(消息子系统),主要负责消息(或数据)的发送、接收,利用其可靠有效的异步消息传递机制来集成其它子系统。2. MQ的特点MQ的特点:1. 异步处理:一个长的同步流程,可以被拆解为短的异步流程(原则:异步流程可以延后操作,并不影响前面的交易)2. 系统解耦:MQ前后的子系统进行解耦,松耦合可以使得前后子系统互不影响或减少影响,只要生产者成功把消息放入MQ中,消费者消费成功与否与生产者无关3. 缓冲能力:MQ子系统也可以理解为一个缓存区,消原创 2021-03-04 09:51:47 · 459 阅读 · 1 评论 -
【技术栈】Zookeeper
1. Zk介绍Zk是一个开源的分布式协调器,或者叫做分布式管理中心。2. Zk节点Zk类似Windows的文件系统,稍有不同之处是ZNode节点没有文件夹和文件的概念,Znode节点保存节点的kv信息,每个节点除了节点名信息外,还保存着其它节点信息。3. Zk选举Zk选举中,Zab原子广播协议是专门为Zookeeper定义的一个分布式协议,核心是半数选举策略(超过一半以上的节点同意,则可确定为leader节点,然后广播消息给其它节点当前的leader节点信息)4. Zk应用场景原创 2021-03-03 10:29:23 · 123 阅读 · 1 评论 -
【知识点】Java线程池
1. 池化技术池化技术里听得最多的就是Java线程池、以及数据库连接池了。对于池化技术而言,其精髓就在于复用,复用池子里已经分配好的线程。优点:减少对线程的创建、销毁工作,可以复用线程资源。缺点:适合耗时较短的逻辑,若逻辑耗时,使用过多线程池可能导致系统宕机。2. 运行原理3. 源码解析...原创 2021-03-01 12:57:23 · 105 阅读 · 0 评论 -
【知识点】Java集合
【推荐】1. 传智播客-LinkedList课程2. CSDN-java集合超详解【提醒】原创 2021-02-24 12:18:23 · 100 阅读 · 0 评论 -
【知识点】JVM
知识点总结,直接上干货。JVM基本结构JVM类加载机制JVM运行时内存区域JVM虚拟机栈JVM垃圾回收机制JVM垃圾回收算法JVM常见垃圾收集器JVM性能调优目录JVM基本机构1. 类加载器子系统1.1 JVM类加载机制1.2 类加载器1.3 双亲委派模型2. 运行时内存区域3. JVM虚拟机栈4. JVM垃圾回收机制4.1 什么是垃圾4.2 垃圾什么时候进行回收4.3 垃圾如何回收5. 垃圾回收算法JVM基本机构 ...原创 2021-02-23 12:05:49 · 125 阅读 · 0 评论 -
AtomicBoolean使用
AtomicBoolean是java.util.concurrent.atomic的原子变量的类;可以看到下面还有很多类似的Atomic这样的类,如下图所示这样的类具有原子性,在多线程的环境下使用是线程安全的;举个例子,在多线程环境中,我们通过判断一个boolan变量的值,然后修改该变量的值,之后进行操作...转载 2019-12-26 11:30:43 · 188 阅读 · 0 评论 -
用 Java 实现拦截器 Interceptor 的拦截功能
原创 用 Java 实现拦截器 Interceptor 的拦截功能 ...转载 2019-12-05 10:27:46 · 275 阅读 · 0 评论 -
【Java】真的了解抽象类和接口的作用么
抽象类重点在于代码复用,接口重点在于规范。如果基于接口的子类有相同的代码逻辑,请使用抽象类作为中间层。理解了抽象类和接口,就掌握了面向对象的本质了,少林易筋经,华山独孤九剑,无招胜有招...抽象类和接口:1、当我们需要一组规范的方法的时候,我们就可以用接口,在具体的业务中,来对接口进行实现,能达到以不变应对万变,多变的需求的情况我们只需要改变对应的实现类 。2、如果多个实现类中有者...原创 2019-11-22 19:15:20 · 183 阅读 · 0 评论 -
【转载】线程的基本概念
线程的基本概念按照规划,从本篇开始我们开启『并发』系列内容的总结,从本篇的线程开始,到线程池,到几种并发集合源码的分析,我们一点点来,希望你也有耐心,因为并发这块知识是你职业生涯始终绕不过的坎,任何一个项目都或多或少的要涉及一些并发的处理。这一系列文章只能算是对并发这块基本理论知识的一个总结与介绍,想要成为并发高手,必然是需要通过大规模并发访问的线上场景应用,或许以后我有了相关经验了,再给...转载 2019-10-12 17:40:13 · 87 阅读 · 0 评论 -
5个步骤,教你瞬间明白线程和线程安全
什么是进程?电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑管家等等。什么是线程?进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。那什么是多线程?提到多线程这里要说两个概念,就是串行和并行,搞清楚这个,我们才能更好地理解多线...转载 2019-10-12 17:34:05 · 94 阅读 · 0 评论 -
【Java进阶】线程池深入理解
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以...转载 2018-05-28 16:40:13 · 311 阅读 · 0 评论 -
【Java】Java Socket编程----通信是这样炼成的
本文转载:Java Socket编程----通信是这样炼成的Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。下面就让我们一起揭开Socket的神秘面纱。Socket编程一、网络基础知识(参考计算机网络) 关于计算...转载 2019-05-27 14:29:04 · 220 阅读 · 0 评论 -
【Java】NIO入门要看这一篇才行
前言:关于Java NIO网上也看了不少帖子,有些帖子质量还可以,文字部分总结很到位,但相对而言图解则没那么准确了,无意中发现下边这篇文章,总结很到位,尤其图解直观正确,建议观看。了解java的NIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。BIO常...转载 2019-06-05 21:11:03 · 291 阅读 · 0 评论 -
【Java】Java程序初始化的顺序是怎样的?
Java程序初始化的顺序是怎样的?一、类的生命周期1.装载:.class文件加载至方法区(永久代)的过程2.链接:链接分为校验、准备、解析三个过程。校验主要来确认.class文件是否适合当前的JVM(Version),以及.class文件的格式等是否正确;准备主要是为静态变量分配内存并赋默认值;解析主要是为将符号引用转换为直接引用的过程,如将常量池的代码引用转换为直接引用。...原创 2019-06-07 10:03:00 · 144 阅读 · 0 评论 -
【Java】Java内存模型
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性 由于...转载 2019-06-07 10:17:34 · 105 阅读 · 0 评论 -
【Java进阶】 泛型深入理解
泛型之前在面向对象编程语言中,多态算是一种泛化机制。例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性。此外,如果将方法参数声明为接口,将会更加灵活。在Java增加泛型类型之前,通用程序的设计就是利用继承实现的,例如,ArrayList类只维护一个Object引用的数组,Object为所有类基类。...转载 2018-05-27 11:45:24 · 195 阅读 · 0 评论