自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

林老师带你学编程

从前端到服务器、从服务器到Linux运维,林老师带你走进编程的世界

原创 最新B站大咖资源分享

程序员想要有一个更好的未来,就离不开持续性学习,想要系统性的学习一般要么看视频,要么看书。现在的视频教程要么是百度云盘分享,要么就是CSDN这种技术平台,但是大部分资料要么过时,要么需要付费。下面老师给大家分享一些B站的学习视频,无广告且免费的哦。 程序员高薪必备技能:Java多线程 http...

2020-05-06 21:06:25 109 0

转载 Java异常宝典

在开发过程中,我们会遇到各种各样的问题,这边博主给大家收集总结了一下,有需要的可以收藏哦~ 1、java.lang.ArithmeticException 算术运算异常,例如除数为0,所以引发了算数异常 2、Java.lang.StringIndexOutOfBoundsException:...

2020-04-24 20:13:57 77 0

原创 Java中实现超大Json文件读取,还不会内存溢出

一般来说Json文件都相对比较小,但是盖不住有些变态的需求中,Json的文件简直大到让你发指,那如果遇到超大Json解析的时候,我们又该如何解决呢?今天就给大家分享一种,可以利用极低的内存,就可以解析任意大小的Json文件的方法。 一、准备大Json文件 在win10系统E盘目录下,准备一...

2020-04-22 21:39:47 384 0

原创 大数据技术栈详解

相信很多学Java的同学都有想转大数据或者学大数据的想法,但是一看到网上那些大数据的技术栈,就一脸懵逼,什么Hadoop、HDFS、MapReduce、Hive、Kafka、Zookeeper、HBase、Sqoop、Flume、Spark、Storm、Flink等等技术。 童鞋们可能一下子...

2020-04-12 19:11:16 139 0

原创 redis分布式锁--》死锁问题解决策略研究

死锁场景 redis分布式锁都不可避免会遇到死锁问题,我们先来讨论一下,什么场景会发生死锁问题。 因为redis锁对应的key还在,如果不将redis锁对应的key删除,下次获取锁的时候还是会失败。 redis integration原理 有童鞋会说,那还不简单,重启的时候直接将r...

2020-04-09 18:54:35 52 0

原创 Spring MVC源码---- @RequestBody和@ResponseBody原理解析(版本:Spring Framework 5.1.7.RELEASE)

@RequestBody作用是将http请求解析为对应的对象。例如: http请求的参数(application/json格式): { "accountId": 10, "adGroupId": "12345678", ...

2020-03-31 22:55:41 67 0

原创 揭秘前端精度丢失之谜!!!

今天测试突然跟我说页面显示的数值和数据库的对应不上,一开始我以为是程序问题,把数据给修改了,但是后面检查程序发现,没有任务问题,用postman请求,发现数据也和数据库的一致。但是页面上面显示的就是不一样。 问题追踪 一开始我怀疑是前端转型把精度丢失,前端那边直接是通过Number接收的,没有...

2020-03-22 19:16:15 71 0

原创 log.error()底层到底做了些啥?
原力计划

今天给大家介绍一下logback日志,底层是如何实现的。这边我们打印一下error级别的日志,看看从log.error到输出磁盘,这个过程中到底发生了些什么,并从源码级别揭秘整个日常的输出过程。 我们先在代码中编写log.error,作为日志入口。 log.error("测试日志输...

2020-03-16 17:53:35 101 0

原创 零基础-项目开发经验分享

前段时间分配到一个支付相关的需求,一个需要和前端对接的项目,需要涉及到前后端对接的问题。为了可扩展性,决定将支付项目独立为一个新的服务。新创建的项目,不熟悉的童鞋可能会遇到一堆的坑,这边博主简单分享一下,自己的开发经验和准则。 确定需求: 在开发之前,我们首先要明确需求,需求中到底涉及到哪些业...

2019-12-30 22:15:37 173 0

转载 反编译小程序,这一篇就够了!!!

一、前言 看到人家上线的小程序的效果,纯靠推测,部分效果在绞尽脑汁后能做出大致的实现,但是有些细节,费劲全力都没能做出来。很想一窥源码?查看究竟?看看大厂的前端大神们是如何规避了小程序的各种奇葩的坑?那么赶紧来试试吧。 反编译,其实还是简单的,要想拿到微信小程序源码,找到源文件在手机存放的位置...

2019-12-30 22:11:35 461 0

原创 记一次redis cpu 100%的紧急bug

前段时间遇到一个棘手问题,mq消费速度突然从30/s变成1/s,而且还持续了很长的一段时间,吓得我赶紧动手排查问题。但是mq消费速度慢的原因,可能有很多种(例如mysql、jvm、redis、mq、代码问题等)。为了可以快速定位问题点,博主直接通过Arthas工具进行问题的排查和追踪。 Arth...

2019-12-30 22:03:16 108 0

原创 如何用java中的webmagic爬取网页

说到爬虫,大家第一个想到的肯定是python的scrapyd爬虫。但是大家不知道吧,我们的java也有相应的爬虫工具。今天就给大家介绍一下我们java的爬虫工具。 我们今天要介绍的爬虫工具,名字叫做webmagic,webmagic的架构图如下所示: 如图所示,它主要分为四个部分: Do...

2019-12-20 21:16:09 76 0

转载 一分钟弄懂什么是分布式和微服务

简单的说,微服务是架构设计方式,分布式是系统部署方式,两者概念不同 微服务是啥? 这里不引用书本上的复杂概论了,简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务都是由独立的小团队开发,测试,...

2019-11-24 23:39:37 174 0

原创 阿里巴巴开源性能监控神器Arthas

线上经常遇到MQ消费速度忽高忽低,但是线下测试却没有问题。那会是哪一个问题引起的呢?因为影响MQ消费速度的因素太多了,如下因素只要任何一种出现问题,就会影响MQ消费速度。 JVM内存过高,一直在Full GC。 Redis连接堵塞,导致Redis操作一直延迟。 第三方接口响应时间过长。 服...

2019-11-24 23:28:58 153 0

原创 finally会不执行吗???

不知道大家有没有问过自己,finally方法会在什么时候不执行呢???有些人可能会一脸懵逼的说:怎么可能会不执行呢,那我们下面来看看finally到底会不会不执行。 1.finally的含义 finally的真正含义是指从try代码块出来才一定会执行相应的finally代码块。 publi...

2019-10-22 22:47:37 215 0

原创 慎用System.out.println!!!

初学者一般在开发中或者调试bug的时候,都会习惯性的使用System.out.println语句,输出到控制台中,观察数据是否正常。开发或者调试完毕,很可能就忘记删除,直接就发布到生产中去了。 问题导入 有童鞋会说,那有啥关系的,不就是控制台多打印一些日志嘛。那今天老师就和童鞋们分析一下,Sy...

2019-10-22 22:45:57 1822 1

原创 如何优雅的解决n 1查询!!!

我们在写代码的时候非常忌讳出现n+1次查询,这就意味的你的循环有多少次,就会查询多少次数据库,这是很恐怖的场景。 因为每次服务调用mysql查询的时候,都是一件很耗费性能的操作,下面我们举个例子,来说说n+1的触发场景及解决方案。 业务需求 需要查询指定用户的订单详细信息,详细信息不仅仅包含...

2019-10-22 22:44:20 75 0

原创 redis反序列化出现:java.lang.ClassNotFoundException异常

不知道大家在使用redis的时候,有没有遇到过如下错误:java.lang.ClassNotFoundException,这个错误是因为反序列化时找不到对应的对象导致的。 什么是序列化 在开始今天的课程之前,我们先来介绍一下:什么是redis的系列化和反序列化。 数据想要存入redis缓存...

2019-10-22 22:42:36 477 0

原创 超大csv解析攻略

前段时间遇到这样一个需求,解析csv文件数据,将数据封装批量插入数据库中。 咋一看确实没什么问题,但是看到文件大小的时候,差点没吐一口老血,文件大小2.1g!!!如果用传统的方式直接将csv文件流按行解析,然后封装成po对象,结果很明显,优雅的OOM掉了。 所以为了能够成功解析这个超大文件,博...

2019-09-15 21:35:32 213 0

转载 SpringBoot中使用redis事务

首先从使用springboot+redis碰到的一个问题说起。在前几篇文章中介绍了用SpringBoot+redis构建了一个个人博客。在刚开始远行的时候发现发了几个请求操作了几次redis之后,后面的就被阻塞了,请求一直在等待返回,我们重现一下问题。 [注意] 该问题只会出现在springbo...

2019-09-04 20:54:47 605 0

原创 第三方接口超大数据获取方案(下载-解析-入库模式)

需求: 每间隔2个小时,定时从亚马逊接口获取商家广告数据 细则说明: 商家指的是亚马逊商家授权给平台的用户。(类似淘宝店) 亚马逊接口指的是亚马逊对外提供数据的公开接口。 广告数据指的是商家在亚马逊平台添加的广告,产生的点击率,转化率等广告相关数据。 现有问题: 授权商家达到一定量级,...

2019-09-04 09:17:11 429 2

原创 ELK日志系统介绍

1.为什么要用ELK系统: 当我们的系统发生故障时,我们需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。 在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文...

2019-08-18 21:06:19 289 0

原创 Mysql索引使用的正确姿势

今天给大家简单的介绍一下mysql的索引用法,像在我们日常业务开发中,最核心的其实就是写SQL命令,但是你写的SQL真的用到索引了吗? 索引实现原理 mysql数据库索引实现是在存储引擎中完成的,今天主要以InnoDB存储引擎为例给大家介绍一下。InnoDB存储引擎索引的实现采用B+树数据结构...

2019-08-18 21:04:49 169 0

原创 Maven依赖管理大全

大家都知道随着业务的进展,项目会变得越来越多,这个时候如果没有一个统一的依赖管理中心,就会有很多问题发生。 如果没有依赖管理中心,会发生哪些问题呢? 项目的依赖会有很多重复,一模一样的依赖可能要重复写多次,浪费时间。 如果没有一个公共的代码依赖项目,像很多工具类、pojo对象需要重复写多个,...

2019-08-18 21:01:21 175 0

原创 Mybatis中自定义实例化SqlSessionFactoryBean

现在SpringBoot基本成为开发的标配,如果你上司让你搭建一个SpringBoot,然后集成Mybatis+Druid,你可以能百度几下,卡卡就搭建完毕了。 现在项目基本都会使用连接池技术,市面上的连接池有很多,比如:DBCP、c3p0、Druid等,今天我们重点介绍Druid连接池。 ...

2019-07-22 21:37:03 1984 0

原创 MQ监听器下多线程安全问题

背景 今天在写MQ队列监听器队列的时候,突然有一个疑问,局部变量会不会受到多线程的影响,所以为此做了一个实验。 实验 我在监听器中定义了两个变量,一个是类变量,一个是局部变量。然后设置监听器的并发线程为2个、一次抓取线程的消息个数为10个,具体代码如下所示: public int cou...

2019-07-18 22:05:24 872 0

原创 如何高效的处理第三方接口数据?

很多公司业务都需要进行第三方接口的对接工作,特别是那种大部分数据都来自第三方的项目。比如亚马逊商家服务的saas系统,基本上所有的数据都来自亚马逊平台。 背景 像这种需要定期获取亚马逊接口数据,然后存储到本地数据库中的项目,一般就会涉及到数据转换过程。这边我将会给大家介绍一个实际项目案例,平台...

2019-07-16 22:17:24 930 0

原创 对象内存计算神器

今天给大家介绍一个对象内存计算神奇。jvm内存溢出的时候,我们可以通过很多方法查看原因,很多时候也需要查看具体是哪一个大对象导致内存溢出。 这里要介绍的是lucene提供的专门用于计算堆内存占用大小的工具类:RamUsageEstimato maven坐标: <!--加载内存查看工具...

2019-06-29 21:59:24 447 0

原创 ArrayList之removeAll底层原理实现详解

今天给大家介绍下ArrayList之removeAll的用法,并深入讲解一下它的底层实现原理。 大家先看如下所示代码: CollectionTest collectionTest =new CollectionTest(); List<DataDto&g...

2019-06-23 22:55:38 638 2

原创 SpringBoot中Mybatis时区问题

最近遇到一个巨坑的bug,mybatis打印出来sql日志显示数据入库成功,但是数据库查询却怎么也查询不到数据,debug日志打了一堆,硬是没发现任何问题。 问题背景 这边先给大家介绍一下bug背景,有一个订单服务需要实时获取第三方接口订单数据,然后对第三方的json数据进行解析入库。流程其实...

2019-06-15 21:19:57 2272 1

转载 mysql由于临时表导致IO过高的性能优化过程分享

线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右。 SQL语句如下: SELECT DISTINCT g.*, cp.name AS cp_name, c.name AS category_name, t.name AS...

2019-06-09 20:54:49 579 0

原创 RabbitMQ日常爬坑分享

现在好多项目都需要进行微服务化,所以就需要将传统的ssm项目转化为springboot项目,今天就给大家分享一下:我在RabbitMQ改造时,遇到的坑。 坑一:消息队列无法创建坑: 代码里面明明写了MQ队列如果不存在,就会新建一个消息队列,但是实际却没有任何效果。 @Bean ...

2019-06-08 18:00:42 276 0

原创 记一次RabbitMQ连接阻塞,全部队列不消费异常

前几天博主遇到一个很狗屎的bug,RabbitMQ本来运行的好好突然所有的消息队列都不消费了,看了一下 Connections连接,发现全部都发生阻塞了,导致线上的队列堆积如山,情况万分危急。 推测一:生产者和消费者问题 刚开始推测是不是生产者和消费者出问题了,然后就检查了一下服务的运行状态,...

2019-06-02 14:13:40 4699 0

原创 记一次服务cpu爆高异常

这几天进行架构整改,将业务服务话,然后单独部署,但是有一台服务的运行时,cpu特别高,基本都是90%以上,导致服务的消费能力特别差。这种级别bug,简直是一种噩梦,但还是必须得解决。 发现问题: 1.服务部署到linux之后,通过top命令观察服务的cpu和内存使用情况 我们可以很明显的...

2019-06-02 14:11:58 262 0

转载 Spring @Lookup实现单例bean依赖注入原型bean

作者:simoscode 地址:https://www.jianshu.com/p/5254e1947d77 大多数场景,在Spring容器的大多数bean都是单例的.当一个单例bean A依赖另一个单例bean B,直接在A中定义一个属性与bean B类型一样,然后通过setter方法注入或...

2019-05-23 21:08:07 295 0

转载 JAVA - String 中删除指定字符(11种方法)

这边给大家介绍一下,String中是如何删除指定字符,博主粗略总结了11种方法,如果有不足或者遗漏希望读者能够不吝赐教。 作者:CoderPLDQ https://blog.csdn.net/li767517488/article/details/64919194 第一种方法 通过循环...

2019-05-22 11:40:23 20158 0

转载 Tomcat8类加载机制

在了解类加载机制时,发现网上大部分文章还停留在tomcat6,甚至tomcat5。 Tomcat8 和 Tomcat6比较大的区别是 : Tomcat8可以通过配置<Loader delegate="true"/>不打破双亲委托 类的加载顺序略不同 概述 ...

2019-05-19 20:59:16 323 0

转载 高并发下Mysql主从延迟处理方案

产生原因 一般做数据库读写分离的时候,都是由于数据库扛不住用户的大量请求,导致数据库出现瓶颈,为了增大数据库的吞吐量而做的。那么当一个请求往主库里面写的时候,同时会同步一份数据写到从库中。如果此时从库处于非常繁忙的状态,就会出现主库的数据没法及时同步到从库,从库无法查询到更新的数据。就产生了...

2019-05-19 20:57:56 1259 0

转载 基于 Nginx 的动态代理

在实际应用中,遇到了这样一个场景: 已有一个手机 APP 客户端,需要在该 APP 客户端中实现通过 Web 的形式接入其他的应用页面。按照常规的流程,在 APP 中为应用设置入口链接按钮,当用户点击应用入口按钮时,APP 启动 WebView 并打开设置的应用链接即可。 但在该场景中,接入 ...

2019-05-19 20:56:42 599 0

转载 白话解析Java中HashMap底层实现原理

作者:ZoroRen https://www.cnblogs.com/yuanblog/p/4441017.html 一、Java中的hashCode和equals 1、关于hashCode hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCo...

2019-05-19 11:36:10 163 2

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