自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

暮雨亦成詩

生活不止眼前的苟且,还有诗与远方。

  • 博客(67)
  • 收藏
  • 关注

原创 Java基础知多少

一 深拷贝和浅拷贝区别:浅拷贝是对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝;而深拷贝是对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容。https://m.html.cn/qa/other/22850.html...

2021-09-03 23:29:34 212

转载 雪花算法 SnowFlake

最近一段时间,忙于code,转载一篇介绍雪花算法的文章,文章写得很清晰,值得一看。生成订单唯一的流水号:雪花算法 SnowFlake

2021-05-14 09:00:29 232

转载 【知识点】JVM调优参数、方法、工具以及案例总结

说明JVM调优:一个高大上的技术点,因为若公司业务量小,生产中几乎遇不到该类问题,遇到频率最高的也许就是在跳槽面试时了。其实,随着公司体量的上升,早晚有一天可能会遇到,到时若能顺利调优,你也就摇身一变成为公司大牛,想想是多么让人期待的一件事儿。这里发现一篇在JVM调优上总结的比较好的一篇文章,二话不说,转载归档,慢慢消化。原文连接:JVM调优参数、方法、工具以及案例总结...

2021-03-22 10:17:34 252

转载 【面试】Redis常见面试题

前言看到好帖,忍不住想转载一下,原文请参看:几率大的Redis面试题(含答案)一Redis 持久化机制Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。RDB是Redis默.

2021-03-21 17:14:13 22397 3

原创 【技术栈】Redis

1. Redis简介Redis:1. 缓存数据库:作为缓存缓存数据,也有持久化功能(RDB/AOF)2. NoSql数据库:和关系型数据库不同,是基于KV键值对的内存数据库3. 单进程单线程:Redis是单进程单线程的,命令串行执行,网络IO多路复用技术4. 丰富的数据类型:除常见的有5种数据类型之外,还有位图、跳表等数据结构2. Redis数据结构如图所示:Redis主要有5种数据结构1. String:单值存储、对象存储(json字符串)、分布式锁、计数器(incr)、se

2021-03-20 22:24:30 423 1

原创 【技术栈】Redis分布式锁

1. 前言生产中经常使用Redis分布式锁,可从未做过深入分析和理解,这里做个总结。以前理解上的偏差:第一次接触Redis分布式锁,是在支付项目中,业务场景就是需要去FTP服务器上获取对账文件并对其解析以便后续对账,但对账服务器是多机部署的,而拉取对账文件其实仅仅需要一次,所以用到了Reids分布式锁,让多机进行竞选,首先竞选到的机器拉取文件。当时以为分布式锁就是解决单一机器执行的问题,多个机器只有第一个能够执行任务,其实不是:通过Redis锁竞选,第一个机器首先获取执行权,其它机器进行等待,最

2021-03-20 11:58:17 217

原创 【技术栈】Redis缓存穿透/击穿/雪崩/预热/降级

1. 前言Redis缓存穿透、击穿、雪崩是Redis作为缓存最常遇到的问题(生产+面试)。Redis缓存穿透、击穿、雪崩:穿透:指在缓存和数据库中均没有值得时候击穿:指的是单个值的缓存过期,查询直达DB的情况雪崩:指的是批量值得缓存过期,查询直达DB的情况2. 缓存穿透危害描述:1. 缓存和数据库均无值,查询直达DB,缓存层已经失去缓存意义。这种情况经常出现在查询一个数据库中本没有值的情况(如会员id<0)解决方案:1. 布隆过滤器:查询Redis缓存前,先经过布隆过滤

2021-03-18 12:44:05 137

原创 【数据结构与算法】经典查找算法

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 140

原创 【数据结构与算法】十大经典排序算法

前言有小伙伴已经把这个知识点总结的非常到位了,读后让人醍醐灌顶,这里只是记录一下自己学习的历程。推荐:十大经典排序算法(动图演示)/ 计算时间复杂度1. 时间复杂度时间复杂度常用大O表示法,其实就是统计计算过程中,运算逻辑在数量级为N的时候,需要的计算次数,取其最大量级作为时间复杂度。常见的时间复杂度量级:1. O(1):常数阶,其实就是运算逻辑和量级N没有直接的关系,这里不能假想有,代码中最直观的就是没有循环结构啥的,比如控制台输出一个结果(表示自己常钻牛角尖,输出一条运算是1,输出

2021-03-13 10:20:47 1022

原创 【技术栈】Kafka

1. Kafka2. Kafka整体架构图

2021-03-09 15:47:39 520 5

原创 【项目】PowerEngine解析

前言曾经有幸在科蓝公司做过开发,很多银行项目基于PE框架,由于项目开发较早,想着当时还没有MVC框架,更遑论现今主流的SpringMVC/SpringBoot框架了,老一批的程序员基于JSP/Servlet开发,后期又加入了很多的优化,导致项目看起来特别费劲,又因为软件著作权的原因吧,度娘也看不到什么让人眼前一亮的博文。最近整理电脑,发现还有那么一个MerchantTest项目,心血来潮看了一下,若干年后纯粹想总结一下,希望给仍使用该PE框架的小伙伴一点点火花。1. PE内部结构如图所示(

2021-03-08 01:09:50 2938 2

原创 【技术栈】消息中间件MQ

1. 什么是MQMQ属于分布式系统中的一个子系统(消息子系统),主要负责消息(或数据)的发送、接收,利用其可靠有效的异步消息传递机制来集成其它子系统。2. MQ的特点MQ的特点:1. 异步处理:一个长的同步流程,可以被拆解为短的异步流程(原则:异步流程可以延后操作,并不影响前面的交易)2. 系统解耦:MQ前后的子系统进行解耦,松耦合可以使得前后子系统互不影响或减少影响,只要生产者成功把消息放入MQ中,消费者消费成功与否与生产者无关3. 缓冲能力:MQ子系统也可以理解为一个缓存区,消

2021-03-04 09:51:47 404 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 102 1

原创 【知识点】Java线程池

1. 池化技术池化技术里听得最多的就是Java线程池、以及数据库连接池了。对于池化技术而言,其精髓就在于复用,复用池子里已经分配好的线程。优点:减少对线程的创建、销毁工作,可以复用线程资源。缺点:适合耗时较短的逻辑,若逻辑耗时,使用过多线程池可能导致系统宕机。2. 运行原理3. 源码解析...

2021-03-01 12:57:23 89

原创 【知识点】Java集合

【推荐】1. 传智播客-LinkedList课程2. CSDN-java集合超详解【提醒】

2021-02-24 12:18:23 87

原创 【知识点】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 112

转载 AtomicBoolean使用

AtomicBoolean是java.util.concurrent.atomic的原子变量的类;可以看到下面还有很多类似的Atomic这样的类,如下图所示这样的类具有原子性,在多线程的环境下使用是线程安全的;举个例子,在多线程环境中,我们通过判断一个boolan变量的值,然后修改该变量的值,之后进行操作...

2019-12-26 11:30:43 182

转载 用 Java 实现拦截器 Interceptor 的拦截功能

原创 用 Java 实现拦截器 Interceptor 的拦截功能 ...

2019-12-05 10:27:46 236

转载 【Linux】Linux实用命令总结

1. Netstat端口号被某个进程占用netstat -pan | grep portps -aux | grep pid2. top命令第一行:系统当前时刻;系统启动后到现在的运作时间;当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;“load...

2019-12-04 14:33:30 77

原创 【Mysql】Explain执行计划

MySQL执行计划相关https://www.cnblogs.com/xinysu/p/7860609.htmlhttps://www.jianshu.com/p/514aa0b139d8sql优化https://blog.csdn.net/qq_38789941/article/details/83744271

2019-12-03 17:09:32 86

转载 【Mysql】UNION ALL 查询是否并行

需求描述问题:subquery 1 union subquery2,其中union左右的两个子查询是否并行。场景:业务中性能敏感的业务,希望能加快速度,如果数据库能两个子查询并行执行,既可以节省时间,还可以节省网络开销测试结果mysql> select version();+---------------+| version() |+-------------...

2019-12-03 16:48:23 2405

原创 MySQL中group by 与 order by 一起使用有坑

https://blog.csdn.net/m__l__/article/details/90544444https://blog.csdn.net/zj20142213/article/details/81073428见上述文章描述:问题以及group by原理生产中也遇到类似的问题,group by根据分组字段进行分组,此时获取的数据再进行order by排序其实是没用...

2019-12-02 15:21:40 1045

原创 【Java】真的了解抽象类和接口的作用么

抽象类重点在于代码复用,接口重点在于规范。如果基于接口的子类有相同的代码逻辑,请使用抽象类作为中间层。理解了抽象类和接口,就掌握了面向对象的本质了,少林易筋经,华山独孤九剑,无招胜有招...抽象类和接口:1、当我们需要一组规范的方法的时候,我们就可以用接口,在具体的业务中,来对接口进行实现,能达到以不变应对万变,多变的需求的情况我们只需要改变对应的实现类 。2、如果多个实现类中有者...

2019-11-22 19:15:20 170

转载 【Navicat】常用快捷键

功能 操作 打开查询窗口 Ctrl + Q 注释SQL语句 Ctrl + / 取消注释SQL语句 Ctrl + Shift + / 运行查询窗口的SQL语句 Ctrl + R 只运行选中的SQL语句 Ctrl + Shift + R 打开一个mysql命令行窗口 F6 删除一行 Ctrl + L 在查询窗口,打开一个新...

2019-11-04 10:29:37 125

转载 【转载】线程的基本概念

线程的基本概念按照规划,从本篇开始我们开启『并发』系列内容的总结,从本篇的线程开始,到线程池,到几种并发集合源码的分析,我们一点点来,希望你也有耐心,因为并发这块知识是你职业生涯始终绕不过的坎,任何一个项目都或多或少的要涉及一些并发的处理。这一系列文章只能算是对并发这块基本理论知识的一个总结与介绍,想要成为并发高手,必然是需要通过大规模并发访问的线上场景应用,或许以后我有了相关经验了,再给...

2019-10-12 17:40:13 78

转载 5个步骤,教你瞬间明白线程和线程安全

什么是进程?电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑管家等等。什么是线程?进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。那什么是多线程?提到多线程这里要说两个概念,就是串行和并行,搞清楚这个,我们才能更好地理解多线...

2019-10-12 17:34:05 84

原创 XML解析

一、XML解析之DOM解析详解二、XML两种底层解析机制三、SAX解析原理四、XML的SAX解析以及DOM解析和SAX解析区别

2019-09-28 21:48:10 64

转载 【转发】Java Web之过滤器(Filter)

Java Web之过滤器(Filter)

2019-09-03 19:24:56 95

原创 【Web】Java Poi读取Excel实现批量插入

需求说明:管理系统可以下载Excel模板,编辑Excel文件后,解析该文件实现批量插入。一、按钮效果二、HTML文件三、JS文件 new AjaxUpload('#insert', { action: baseURL + "apadchannel/insert", name: 'file', autoSubmit:true, responseTyp...

2019-07-01 21:03:55 467

转载 【设计模式】装饰者与继承&&装饰者与代理间的小九九

前言:装饰者与继承:装饰者模式除了能实现继承的类功能加强外,主要能够预防类爆炸;装饰者与代理:表面看一样,仔细看和静态代理也相差无几,装饰者模式更直观,更易于开发人员了解到类加强了哪些内容,除此之外,个人认为装饰者和代理的应用场景不大一样,代理主要用于同一逻辑的切面提取,适用于不同类不同业务但是有相同处理逻辑,装饰者还是更加适合同一类特异化的处理。设计模式的理解需要业务和知识的积累,关于...

2019-06-09 10:43:18 154

转载 【Java】Java内存模型

1. 概述  多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性  由于...

2019-06-07 10:17:34 96

原创 【Java】Java程序初始化的顺序是怎样的?

Java程序初始化的顺序是怎样的?一、类的生命周期1.装载:.class文件加载至方法区(永久代)的过程2.链接:链接分为校验、准备、解析三个过程。校验主要来确认.class文件是否适合当前的JVM(Version),以及.class文件的格式等是否正确;准备主要是为静态变量分配内存并赋默认值;解析主要是为将符号引用转换为直接引用的过程,如将常量池的代码引用转换为直接引用。...

2019-06-07 10:03:00 136

转载 【中间件】Redis缓存穿透、缓存雪崩和缓存击穿

实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。本篇文章,并不是要更加完美...

2019-06-06 10:09:48 143

原创 【中间件】Zookeeper分布式锁

10分钟看懂!基于Zookeeper的分布式锁10分钟看懂!ZooKeeper典型应用场景:分布式锁

2019-06-06 09:10:10 316

转载 【Java】NIO入门要看这一篇才行

前言:关于Java NIO网上也看了不少帖子,有些帖子质量还可以,文字部分总结很到位,但相对而言图解则没那么准确了,无意中发现下边这篇文章,总结很到位,尤其图解直观正确,建议观看。了解java的NIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。BIO常...

2019-06-05 21:11:03 283

转载 【JVM】Java线上应用故障排查之一:高CPU占用

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen)以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux | g...

2019-06-05 10:22:29 246

原创 【技术思考】一个由Token引发的APP盈利思考

今天看到一篇关于Token的技术文章,大致内容就是随着APP小程序的泛滥,人们对于密码的安全保密也要求越来越高,已没有谁去傻傻的去注册一个甚至没有认证过的小程序。而小程序为了生存,提出了使用Token授权的概念一、Token授权何谓Token授权?即考虑到用户对于小程序安全性的忧虑,提出有第三方(如支付宝、微信、网易)授权方式免登录。比如一个“信用卡管家“的小程序,希望访问用户网易邮箱中关...

2019-05-29 12:01:20 225

原创 【Web】HTTPS 之我见

印象里,HTTPS比HTTP更为安全,使用端口号443,其它的没有了...面试在即,上面很难应付,故重新认识了下HTTPS简单说,HTTPS是通过非对称加密来传输对称密钥,使用对称加密来传输信息怎么说?1. HTTPS是通过非对称加密来传输对称密钥客户端请求服务器,服务器使用自己的私钥加密配对的公钥及其它信息后,传送给客户端,客户端接收到加密报文,使用服务器的公钥来解密,从而获得服...

2019-05-28 21:27:06 185

转载 【Spring】漫话-Spring生态圈

漫画 | Spring AOP的底层原理是什么?1、Spring中配置的bean是在什么时候实例化的?2、描述一下Spring中的IOC、AOP和DIIOC和AOP是Spring的两大核心思想3、谈谈IOC、AOP和DI在项目开发中的应用场景4、谈谈Spring如何配置声明式事务控制声明式事务管理有两种常用的方式:基于tx和aop名字空间的xml配置文件 ...

2019-05-28 10:02:28 388

转载 【JVM】Java类加载机制

转载:Java类加载过程类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中类加载过程包括加载、验证、准备、解析和初始化五个阶段。 类加载器的任务就是根据一个类的全限定名来读取此类的二进制字节流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例。BootstrapClassLoad...

2019-05-27 16:38:44 100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除