自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(240)

原创 2020年规划

2020年1月5日,2020年21月31日检查...

2020-01-05 20:34:34 465

原创 java程序员常用查询和学习的网站 ( 建议收藏,持续更新 )

常用的一些程序员相关网站,在这里记录下,大家一起学习

2018-07-04 21:09:11 1530

原创 JVM基础知识汇总

1.jvm是什么 2.jvm能做什么 3.jvm分类 4.jvm优缺点 5.jvm内存管理分配 6.jvm垃圾回收 7.jvm可视化 8.jvm调优

2018-04-16 22:03:27 646

原创 很多人都把jwt用错了,千万不要再犯这种错误

jwt介绍jwt(JSON Web Token)本身是一个行业标准,用于端与端之间安全的将信息作为json对象传输,核心思想是通过散列算法(不可逆算法)做签名,从而验证消息是否被篡改过,和https签名算法是一样的原理。jwt官网介绍jwt常用的散列算法(sha算法)与java实现jwt做登录的由来最一开始做登录,就是将登录后生成唯一token返回,同时将token和用户对应起来存在数据库,以后这个用户操作的时候,就得带着这个token,服务器通过查询数据库,就知道这个token是对应的哪个用户了

2020-10-19 20:34:26 146

原创 mysql 报错 Specified key was too long; max key length is 767 bytes,开启系统变量:innodb_large_prefix

mysql 报错 Specified key was too long; max key length is 767 bytes当mysql数据库的字符集使用了utf8mb4,就很容易在执行建表sql的时候报这个错误。原因:mysql有个系统变量innodb_large_prefix,如果开启了,索引键前缀限制为3072字节;如果禁用了,索引键前缀限制为767字节。当mysql数据库的字符集使用了utf8mb4,每个字符最大的字节数为4,如果建表语句中,有类似varchar(255)的字段,4*

2020-10-19 17:53:04 117

原创 关于SimpleDateFormat线程不安全的源码分析

SimpleDateFormat,线程不安全,源码分析1、先看SimpleDateFormat类图SimpleDateFormat继承了DateFormatDateFormat中有个成员变量是Calendar,这个先记住,线程不安全主要就是因为这个成员变量2、看下图SimpleDateFormat的parse方法这个方法,主要就两步,第一步是针对入参text做了一系列操作,这里可以省略不看第二步就是下图代码中的红框部分:calb.establish(calendar),这个入参就是上面说的

2020-10-12 17:55:52 365 1

原创 quartz 本地有效,线上失效的问题

问题:最近开了一个新项目,spring boot 整合了quartz,出现了一个问题,就是当项目连接到本地电脑的数据库时,一切正常。但是当项目连接远程linux上的数据库的时候,发现定时任务不灵了,也不是不执行,比如手动执行一次这个操作,点一下没反应,再点一下,却执行两次。调试:看了下源码,整个手动执行一次的逻辑是这样的:1、当页面点执行一次,后台qrtz_triggers表会插入一条新记录,代表马上要执行了2、在org.quartz.core.QuartzSchedulerThread#run方

2020-09-28 20:54:16 216

原创 quartz 报错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS‘ doesn‘t exist

问题:spring-boot 整合quartz的时候,连接windows的mysql的时候好好的,然而用linux上的mysql的时候,启动就报了这个错:Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS’ doesn’t exist分析:首先用windows的mysql是没问题的。其实linux的mysql也是有这个表的,但由于是从windows复制过去的,所以表名都是小写的,而quartz启动的时候找的是大写,所以认为test.QRTZ

2020-09-25 21:31:39 282

原创 【读书笔记】--- 《码出高效:java开发手册》

这几天读了几本书,突然觉得可以写点什么,因为我也看了不少书了,于是就有了个想法,我可以在我看过的每本书后,把我的一些想法记录下来,一方面可以供以后回忆,一方面可以让读者看到后,对这本书有一些更详细的了解,然后再确定要不要买。正文:这本书涉及到的知识点比较多,大多数都比较浅一点,整体上适合初入职场1年以上的同学,,但不是很适合新手入门。虽然这样,但本书也有很多地方写的也挺细的,比如讲https的那块,是我看到过的所有相关文章中比较详细且易懂的。但我还是觉得值得一买,因为当你仔细阅读这本书,你会发现这本

2020-09-23 23:08:43 222

转载 【转载】广告系统架构解密

广告、增值服务、佣金,是互联网企业最常见的三种盈利手段。在这3大经典中,又以广告所占的市场份额最大,几乎是绝大部分互联网平台最主要的营收途径,业务的重要性不言而喻。从技术角度来说,广告业务涉及到 AI算法、大数据处理、检索引擎、高性能和高可用的工程架构 等多个方向,同样有着不错的技术吸引力。我从去年开始接触广告业务,到现在差不多一年时间了。这篇文章将结合我的个人经验,同时参考业界的优秀案例,阐述下广告系统的架构实践方案,希望让大家有所收获。内容包括以下3部分:广告业务简介面临的技术挑战广告系统架

2020-09-22 21:50:04 221

原创 api接口设计

api接口设计健壮性对外提供的接口,最好支持幂等性,即相同的请求重复调用,服务端的操作应该只有一次,并且每次返回的结果应该是一样的。一般的做法是要求客户端在每次调用的时候带上唯一键,服务端第一次正常处理,并缓存唯一键和结果,后面再有重复调用,即可直接获取缓存结果返回。如果客户端没有唯一键的条件,也可以要求传时间戳,用时间戳作为唯一键。对外的接口,粒度能细就细,最好不要是那种入参是type,然后服务端根据type类型返回不同的数据,这样容易被调用方猜到一些服务端不想暴漏的内容。举个例子,比如你要

2020-09-09 16:51:10 223

转载 redis 常见基础面试题

1、在项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?面试官心理分析这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?这就是看看你对缓存这个东西背后有没有思考,如果你就是傻乎乎的瞎用,没法给面试官一个合理的解答,那面试官对你印象肯定不太好,觉得你平时思考太少,就知道干活儿。面试题剖析项目中缓存是如何使用的?这个,需要结合自己项目的业务来

2020-08-15 11:51:17 386

原创 【错误记录】Invalid character found in method name. HTTP method names must be tokens

错误日志[2020-08-14 10:47:11.262] [http-nio-8093-exec-7] [INFO] [o.a.c.h.Http11Processor] [Error parsing HTTP request headerNote: further occurrences of HTTP header parsing errors will be logged at DEBUG level.]java.lang.IllegalArgumentException: Invalid ch

2020-08-14 10:55:44 227

原创 云服务和serverless

云服务中的一些基础概念IaaS(Infrastructure as a server)基础设施即服务基础设施就是物理服务器云服务厂商把物理服务器搭好,直接卖云端服务器或者虚拟机用户可以自己装系统,然后装软件等等PaaS(Platform as a Server)平台即服务平台就是操作系统云服务厂商把操作系统安装好了,剩下的用户自己装SaaS(Software as a Server)软件即服务云服务厂商把软件都装好了,用户直接用,最多只需要维护产生的数据即可DaaS(Date as a

2020-08-13 19:46:36 362

原创 spring boot maven项目返回值乱码的解决方法

云服务的基础概念IaaS(Infrastructure as a server)基础设施即服务云服务厂商把物理服务器搭好,直接卖云端服务器或者虚拟机用户可以自己装系统,然后装软件等等PaaS(Platform as a Server)平台即服务云服务厂商把操作系统安装好了,剩下的用户自己装SaaS(Software as a Server)...

2020-08-13 10:23:18 272

原创 java 使用gzip压缩和解压 传输文件必备

java gzip 压缩解压工具类,开箱即用package com.yeahmobi.datacheck.util;import java.io.*;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;public class CompressUtil { public static void main(String[] args) throws IOException { //

2020-08-07 10:27:37 257

原创 错误记录:Current request is not a multipart request

springboot 报错:Current request is not a multipart request这个一般是controller是带有上传文件的服务,类似@RequestParam MultipartFile[] file解决:首先检查请求头中的Content-Type是否设置对,如果把Content-Type设置成application/json是不行的需要把Content-Type设置成multipart/form-data或着去掉Content-Type。还有一种可能就是你的请

2020-08-04 14:21:25 1240

原创 spring boot controller 增加指定前缀的两种方法

1、增加配置server.servlet.context-path: /api这种是最常见的,加上这个配置后,所有的url,必须带上/api的前缀,才能访问到改url2、过滤拦截这种是加上/api也可以访问,不加/api也可以访问,适合项目重构修改的适合用import org.apache.commons.lang.StringUtils;import org.springframework.context.annotation.Configuration;import org.spring

2020-07-25 16:33:19 669

原创 RabbitMQ和Kafka选型用哪个

作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差异的。不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计,开发和维护的能力。这篇文章会先介绍RabbitMQ和Apache Kafka内部实现的相关概念。紧接着会主要介绍这两种技术的主要不同点以及他们各自的优缺点,最后我们会说

2020-07-18 15:15:14 282

原创 关于高考报志愿的一些规划建议

关于高考报志愿,上大学,考研等的一系列个人建议总结,希望有人能因为这篇文章而改变,变好。

2020-07-14 22:49:34 352

原创 LeetCode删除排序数组中的重复项(Java实现)

原题:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组

2020-07-04 17:14:40 252

原创 excel导出经验

excel导出经验,供参考

2020-07-01 19:46:47 295 1

原创 数据库选型经验汇总

数据库选型下面这些都是免费开源的。

2020-06-30 19:16:14 280

原创 [记录] --- safari浏览器对于yyyy-MM的坑

问题后端给前端返回的带格式的日期类型时,很多时候都是yyyy-MM-dd格式的,在一般浏览器中都没问题,但safari浏览器就会出问题。解决:换成yyyy/MM/dd格式

2020-06-29 19:52:20 226

转载 [转载] --- Fastjson1.2.68版及以下全版本远程代码执行漏洞通告

【安全通告】Fastjson <=1.2.68全版本远程代码执行漏洞通告 尊敬的腾讯云用户,您好!近日,腾讯云安全运营中心监测到,Fastjson <=1.2.68版本存在远程代码执行漏洞,漏洞被利用可直接获取服务器权限。为避免您的业务受影响,腾讯云安全建议您及时开展安全自查,如在受影响范围,请您及时进行更新修复,...

2020-06-29 19:07:37 436

原创 java 实现 生成短链接服务

短链接生成的java常用实现

2020-06-24 14:19:24 447

原创 如何在摆摊经济中脱颖而出

最近,摆摊经济开始火了起来,于是各路诸侯纷纷举起大旗开始摆摊。我周围也不乏有亲朋好友蠢蠢欲动,有的甚至已经初有规模。但这波摆摊风是否真的可行,对谁可行,有哪些风口,有哪些坑,我们慢慢分析下。

2020-06-09 19:38:09 291

原创 @JsonFormat失效解决

先说结论@JsonFormat失效,换成@JSONField就好了问题经过和原理@JsonFormat作为Date类型的属性值,返回前端格式化处理,很方便。比如: @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss") private Date updateTime;返回给前端是这样:但在我加了ResponseBodyAdvice之后就失效了。ResponseBodyAdvice是一个接口,自定义一个类,实现这个接口后,就可以对controlle

2020-05-22 22:59:03 418

原创 非对称加密算法 --- RSA签名算法

RSA原理通过一定的规则,生成公钥和私钥,公钥和私钥总是成对出现。公钥可以公开出去,任何人都可以知道。私钥只有自己知道。RSA算法能保证,公钥加密后的密文,只有对应的私钥才能解密。或者,私钥加密后的密文,只有对应的公钥才能解密。而且不能通过公钥得到私钥,也不能通过私钥算出公钥。关于为什么公私钥直接不能互相转换,请看我之前的一篇文章:非对称加密算法之RSA算法实现RSA应用场景RSA加密场景A给B传一条消息,要保证哪怕消息被截取了,也不能让别人知道消息的真正含义。1、B生成公钥和私钥,私

2020-05-13 00:07:23 275

转载 面试 HTTP ,99% 的面试官都爱问这些问题

HTTP 和 HTTPS 的区别HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范HTTP 主要内容分为三部分,超文本(Hypertext)、传输(Transfer)、协议(Protocol)。超文本就是不单单只是本文,它还可以传输图片、音频、视频,甚至点击文字或图片能够进行超链接的跳转。上面这些概念可以统称为数据,传输就是数据需要经过一系列的物理介质从一个端系.

2020-05-11 19:41:28 337

原创 对称加密算法原理与常用实现

定义原文通过加密秘钥生成密文,密文通过解密秘钥得到原文。对于加密秘钥和解密秘钥是相同的算法,就叫对称加密算法。常用的对称加密算法DESData Encryption Standard初代对称加密算法从98年开始不断被破解,到现在已经完全不具备安全性了。现在基本没人用了,但很值得学习。秘钥长度56位3DES由于DES算法长度不够,衍生出3重DES算法。AESPEBIDEA...

2020-05-03 18:05:06 464

原创 MAC算法原理与常用实现

定义MAC(Message Authentication Codes),是一种消息摘要算法,也叫消息认证码算法。这种算法的核心是基于秘钥的散列函数。可以理解为,MAC算法,是MD5算法和SHA算法的升级版,是在这两种算法的基础上,又加入了秘钥的概念,更加安全。所以,有时候又叫MAC算法为HMAC算法(keyed-Hash Message Authentication Codes),即含有秘...

2020-04-20 23:30:57 460

原创 SHA算法原理与常用实现

看本文前,最好先看看之前的这一篇关于MD5算法的介绍。MD5算法原理与常用实现定义SHA算法(Secure Hash Algorithm),又叫安全散列算法。SHA算法是基于MD4算法的基础上,演变而来。但SHA算法出生好,是美国国家安全局设计的。SHA算法,是一个系列家族,包括SHA-1,SHA-2(SHA-224、SHA-256、SHA-384、SHA-512),括号中的四个通常被...

2020-04-18 00:09:50 936

原创 MD5算法原理与常用实现

定义MD全称Message-Digest,即信息摘要,所以MD家族的算法也叫信息摘要算法MD家族有MD2、MD3、MD4、MD5,一代比一代强。所以MD5是MD算法家族中,目前最常用的一种加密算法。任何信息,都可以通过MD5算法运算生成一个16字节(128位)的散列值,但却无法通过这16个字节的散列值获得加密前的信息。这就是MD5最重要的一个特性:加密不可逆。MD5特点加密不可逆,即...

2020-04-16 23:39:27 363

原创 Base64编码的原理与常用实现

这篇主要是为了后面好介绍加密算法,做的铺垫。这个是基础,什么是一个程序员的涵养,这些基础就是涵养。平时可能用不到,但必须得会。如果连这个原理都说不上来,就别玩王者荣耀绝地求生英雄联盟和平精英了,该好好补补了。Base64编码定义Base64编码是基于64个字符的编码方式。所有的二进制数据都可以用这64个编码来表示。怎么编码,64个字符有哪些,是基于一个规范的:RFC2045Base...

2020-04-16 01:37:42 277

原创 随想,产品思维和开发思维

有时候,产品思维和开发思维,由于出发点的不同,会产生较大的分歧。作为一个开发,不仅要有自己的思维,也要了解产品的思维,这样才能在和产品的撕逼的战斗中所向披靡,百战百胜。举个例子:比如你在系统上提交一个申请单,这时这个申请的状态是待审核。待审核状态,可以变成审核通过和审核不通过。这时分歧就来了,如果是审核不通过,原因是因为申请单里面的一些东西写错了,那应该是重新生成一个申请单呢,还是修改之...

2020-04-14 01:52:19 298

原创 秒杀业务的基础点

秒杀的是一个很常见的业务了。就是在某个时刻,让大量用户抢购少量的优惠的商品,从而达到商品曝光和电商网站的曝光,增大用户流量,从而提升整体销售额。比如今年疫情下,各大电商网站,就针对口罩开展了秒杀业务。通用秒杀逻辑1、秒杀页动态获取服务器时间,前端根据时间倒计时2、倒计时结束,开始秒杀3、获取后端秒杀接口4、真正执行秒杀(减库存,下订单insert)一般减库存是放在redis中顶的,因...

2020-04-14 01:15:50 258

原创 ThreadLocal不仅要应付面试,更要真的理解,真的会用

ThreadLocal,千万不要一看就会,一用就废

2020-04-12 02:45:00 335

原创 赶紧看一下mysql8.0版本的新特性,你的数据库是不是该升级了

mysql8.0,又一个大版本,如果用了mysql,本文内容是一些必知的新特性

2020-04-10 00:51:22 575

原创 机器学习笔记(常见算法)

大概了解常见算法

2020-04-08 02:32:06 286

空空如也

空空如也

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