自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 如果非要在多线程中使用ArrayList会发生什么?

我们都知道,Java中的ArrayList是非线程安全的,这个知识点太熟了,甚至面试的时候都很少问了。但是我们真的清楚原理吗?或者知道多线程情况下使用ArrayList会发生什么?前段时间,我们就踩坑了,而且直接踩了两个坑,今天就来扒一扒。上源码上代码之前先说下 ArrayList 的 add 逻辑:检查队列中数组是否还没有添加过元素如果是,设置当前需要长度为10,如果否,设置当前需要长度为当前队列长度+1判断需要长度是否大于数组大小如果是,需要扩容,将数组长度扩容1.5倍(第一次扩容会从

2021-07-15 20:54:30 1219 3

原创 fastjson到底做错了什么?为什么会被频繁爆出漏洞?

fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解析库,通常被用于将Java Bean和JSON 字符串之间进行转换。前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。但是作为一个开发者,我更关注的是他为什么会频繁被爆漏洞?于是我带着疑惑,去看了下fastjson的releaseNote以及部分源代码。最终发现,这其实和fastjson中的一个AutoType特性有关。从2019年7月份发布的v1.2.59一直到2020年6月份发布的 v1.

2021-07-15 17:24:32 560

原创 删库不跑路,教你如何恢复 MySQL 数据库

日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生。那么,如果连数据都恢复不了,还要什么 DBA。1 前言数据恢复的前提的做好备份,且开启 binlog,格式为 row。如果没有备份文件,那么删掉库表后就真的删掉了,lsof 中还有记录的话,有可能恢复一部分文件。但若刚好数据库没有打开这个表文件,那就只能跑路了。如果没有开启 binlog,那么恢复数据后,从备份时间点开始的数据都没了。如果 binlog 格式不为 row,那么在误操作数据后就没有办法做闪回操作,只能

2021-07-14 19:29:14 343

原创 Java杂谈——你真的会重写Equals方法吗

什么是equals方法Java中用equals方法来判断两个对象是不是相等,equals方法是Object类就拥有的方法,因此所有类都拥有该方法,使用方式很简单:a.equals(b) ,返回true或false。Object中的equals方法的源码public boolean equals(Object obj) { return (this == obj); } 为什么需要重写equals方法从object处的继承来了equals仅仅判断了2个对象的内存地址是否一样,这样的代.

2021-07-14 15:29:22 162 1

原创 Java反射机制可能是涨薪关键!

Java核心反射机制基本反射反射是一种动态类的处理机制,通过 Class类 来实现反射机制;Class类的基本信息:Module java.base Package java.lang Class Class<T> java.lang.Object java.lang.Class<T> 以下三种方式获得类的反射,三者都非常重要,牢牢掌握。一、利用Object类中提供getClass()方法获取实例化对象cla

2021-07-14 15:23:11 75

原创 牛逼了!教你用九种语言在JVM上输出HelloWorld

为了让Java语言具有良好的跨平台能力,Java独具匠心的提供了一种可以在所有平台上都能使用的一种中间代码——字节码(ByteCode)。有了字节码,无论是哪种平台(如Windows、Linux等),只要安装了虚拟机,都可以直接运行字节码。同样,有了字节码,也解除了Java虚拟机和Java语言之间的耦合。这话可能很多人不理解,Java虚拟机不就是运行Java语言的么?这种解耦指的是什么?其实,目前Java虚拟机已经可以支持很多除Java语言以外的语言了,如Kotlin、Groovy、JRuby、Jy

2021-07-13 16:42:55 86

原创 Java 8 到 Java 14,改变了哪些你写代码的方式?

其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些。Lambda表达式Lambda 表达式是 Java 8 中最重要的一个新特性,Lambda 允许把函数作为一个方法的参数。lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{ statements; }如以下例子:// 1. 不需要参数,返回值为 5 () -> 5 // 2.

2021-07-13 15:31:17 71

原创 升级IDEA后Lombok不能用了,如何解决?

今天到工作室比较晚,在电脑前吃着早饭,看到提示IDEA提示升级,寻思已经有好久没有升过级了。一样等着,就升级下吧。升级完毕重启之后,突然发现好多错误,原来的应用也没法启动了。仔细一看报错信息,是由于Lombok相关的注解似乎都没有生效。比如:用到@Slf4j的类里,会有类似这样的报错:java: 找不到符号 符号: 变量 log 位置: 类 com.didispace.UserServiceIDEA还提示,现在使用的编译器不支持lombokjava: You aren't usin

2021-07-13 15:00:01 488 1

原创 你还在统一返回 ApiResult 吗?duck 不必,快来看 API 错误处理的最佳实践

为什么写这篇文章?相信不少 Java 开发都在项目中使用过类似 ApiResult 这样的对象来包装 Api 返回类型,这相比什么都不包装有一定的好处,但这真的就是最好的做法吗?其实统一封装 ResultBean 实际上也是一种重复工作,秉承 DRY 的理念,还有必要对其继续优化。统一返回 ApiResult 还不是最佳实践,必须不断思考优化,就像 React 所提倡的 Rethinking Best Practices 。ApiResult 现状我们先看一个常见的 ApiResult 对象,代

2021-07-12 19:27:34 591 2

原创 Java程序员必备基础:Java代码是怎么运行的?拿来吧你

前言作为一名Java程序员,我们需要知道Java代码是怎么运行的。最近复习了深入理解Java虚拟机这本书,做了一下笔记,希望对大家有帮助,如果有不正确的地方,欢迎提出,感激不尽。java 代码运行主要流程本文主要讲解流程如下:java源文件编译为class字节码类加载器把字节码加载到虚拟机的方法区。运行时创建对象方法调用,执行引擎解释为机器码CPU执行指令多线程切换上下文编译我们都知道,java代码是运行在Java虚拟机上的。但是java是一门面向对象的高级语言,它不仅语法非常

2021-07-12 15:06:34 1694 15

原创 5种方案告诉你,并发环境下,先操作数据库还是先操作缓存?

前言在分布式系统中,缓存和数据库同时存在时,如果有写操作,先操作数据库还是先操作缓存呢?本文将分5种方案阐述展开对比,谢谢阅读~缓存维护方案一如果是一读(线程B)一写(线程A)操作,「先操作缓存,再操作数据库」。流程图如下所示:1.线程A发起一个写操作,第一步del cache2.线程A第二步写入新数据到DB3.线程B发起一个读操作,cache miss缓存失效了。4.线程B从DB获取最新数据5.线程B执行set cache,把从DB读到的数据,更新到缓存。「这样看,没啥问题」。我

2021-07-12 14:27:25 526 2

原创 学妹问我,并发问题的根源到底是什么?我悄悄趴她耳边这样说到.....

并发编程是 java 高级程序员的必备的基础技能之一。但是想要写好并发程序并非易事。那究竟是什么原因导致大把的“格子衫”朋友无法写出优质和性能稳定的并发程序呢?根本原因就是大家对并发编程的核心理论的模糊和不理解。想要运用好一项技术。理论知识和核心概念是一定要理解透彻的。今天我们就来一起看下并发编程三大核心基础理论:原子性、可见性、有序性1、原子性先来看下什么叫原子性第一种理解:原子(atomic)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意 为“不可被中.

2021-07-12 14:02:10 80 1

原创 我是程序员中的10%,父母眼中的不干正事,今天我就要说,我就是女程序员怎么了!

从哪里说起呢,我的程序员之路。有些话只是自己心里想的很明白,还从没说过。希望你有耐心看完,因为我的故事不精彩,也算不上奋斗史。我的文笔和叙事能力也很差。高中报志愿的时候坚定的报了计算机技术及应用,当时对计算机的认识只是机房里的苹果机,和老师教的用basic 输出一个正方形之类的。 我当时觉得我对计算机一无所知,我想了解他,就选择了这个专业,当然当时程序员的收入也是可观的。作为一名互联网IT行业的程序员,大家对这类群体的印象大概是:不愿意和别人交流、不善于表达沟通、木讷、死宅等等,但实际上并不是!技术.

2021-07-09 16:36:01 154 2

原创 老板:kill -9 的原理都不知道就敢去线上执行?明天不用来了!

相信很多程序员对于Linux系统都不陌生,即使自己的日常开发机器不是Linux,那么线上服务器也大部分都是的,所以,掌握常用的Linux命令也是程序员必备的技能。但是,怕就怕很多人对于部分命令只是一知半解,使用不当就能导致线上故障。前段时间,我们的线上应用报警,频繁FGC,需要紧急处理问题,于是有同事去线上重启机器(正常程序应该是先采集堆dump,然后再重启,方便排查是否存在内存泄露等问题)。但是在重启过程中,同事发现正常的重启命令应用无反应,然后尝试使用kill命令"杀"掉Java进程,但是仍然无.

2021-07-09 15:58:32 160

原创 线上服务被干爆了!竟然是日志的锅!!

本文要介绍的是一个发生在我们线上环境的真实案例,问题发生在某次大促期间,对我们的线上集群造成了比较大的影响,这篇文章简单复盘一下这个问题。问了方便大家理解,实际排查和解决过程可能和本文描述的并不完全一致,但是思路是一样的。问题过程某次大促期间,某一个线上应用突然发生大量报警,提示磁盘占用率过高,一度达到了80%多。这种情况我们第一时间登录线上机器,查看线上机器的磁盘使用情况。使用命令:df查看磁盘占用情况。$dfFilesystem 1K-blocks Used Available

2021-07-09 13:52:31 86 2

原创 玩转Java注解---元注解、内置注解、自定义注解的原理和实现

前言Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。重点:和 Javadoc 不同,Java 标注可以通过反射获取标注内容。大话空话不用说太多,简而言之,在编译器生成类文件时,标注 可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。反射+注解,是不是感觉Java变成一种动态语言?哈哈哈!我觉得注解可以分为三个部分来讲:内置注解,元注解,自定义注解。一、内置注解1、@Overri

2021-07-08 15:08:08 203

原创 你要偷偷学会排查线上CPU飙高的问题,然后惊艳所有人!

前段时间我们新上了一个新的应用,因为流量一直不大,集群QPS大概只有5左右,写接口的rt在30ms左右。因为最近接入了新的业务,业务方给出的数据是日常QPS可以达到2000,大促峰值QPS可能会达到1万。所以,为了评估水位,我们进行了一次压测。压测在预发布环境执行。压测过程中发现,当单机QPS达到200左右时,接口的rt没有明显变化,但是CPU利用率急剧升高,直到被打满。压测停止后,CPU利用率立刻降了下来。于是开始排查是什么导致了CPU的飙高。问题排查与解决在压测期间,登录到机器,开始排查问

2021-07-07 14:52:18 101

原创 面试官:你知道Dubbo怎么做优雅上下线的吗?你:优雅上下线是啥?

最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、动态代理等等都有一定的了解,这位候选人也一样。但是,我接下来问了他一个问题:你们在使用Dubbo的时候,应用如果重启,怎么保证一个请求不会被中断处理的呢?他没怎么说的上来,我以为他不理解我的问题,我接着问他:我就是想问下Dubbo是如何做优雅上下线的你知道吗?接着他问我:优雅上下线是啥??好吧。这篇

2021-07-07 14:30:31 246 3

原创 我不理解啊宝,为啥Java应用迁移到容器后会出现OOM啊

JVM启动后默认将最大使用堆大小设置为物理内存的四分之一,譬如一台普通的x86服务器配置128G内存,那么启动在容器的内启动JVM会将自己最大允许使用的堆内存调整为32G内存,如果容器启动时设置JVM只允许使用4G大小的内存,那么当JVM使用内存超过4G后,将会导致内核杀死JVM。测试代码如下:import JAVA.util.ArrayList; import JAVA.util.List; public class MemEat { public static void main(.

2021-07-07 13:52:13 110 2

原创 今天就来随便聊聊springboot项目数据库密码如何加密吧~

前言在我们日常开发中,我们可能很随意把数据库密码直接明文暴露在配置文件中,在开发环境可以这么做,但是在生产环境,是相当不建议这么做,毕竟安全无小事,谁也不知道哪天密码就莫名其妙泄露了。今天就来聊聊在springboot项目中如何对数据库密码进行加密正文方案一、使用druid数据库连接池对数据库密码加密1、pom.xml引入druid包为了方便其他的操作,这边直接引入druid的starter<dependency> <groupId>com.alibaba</

2021-07-06 21:44:22 282 1

原创 还不懂 Java SPI 机制,你该怎么进大厂啊???

引言在日常的项目开发中,我们为了提升程序的扩展性,经常使用面向接口的编程思想进行编程。这不仅体现了程序设计对于修改关闭,对于扩展开放的程序设计原则,同时也实现了程序可插拔。那么本文所阐述的 SPI 机制正是这种编程思想的体现。今天就和大家聊聊 SPI 到底是个什么鬼。顺便和大家一起看下 Seata 框架中是怎么使用 SPI 机制来实现框架扩展的。什么是 SPI在一般的开发逻辑中,都是服务提供方进行接口定义以及不同实现,服务调用方通过 API 的方式完成一次业务调用。但是这种方式对于服务调用方来说缺乏灵

2021-07-06 14:13:21 71 1

原创 批处理框架 Spring Batch 这么强,你会用吗?

spring batch 简介spring batch 是 spring 提供的一个数据处理框架。企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作。这些业务运营包括:无需用户交互即可最有效地处理大量信息的自动化,复杂处理。这些操作通常包括基于时间的事件(例如月末计算,通知或通信)。在非常大的数据集中重复处理复杂业务规则的定期应用(例如,保险利益确定或费率调整)。集成从内部和外部系统接收的信息,这些信息通常需要以事务方式格式化,验证和处理到记录系统中。批处理用于每天为企业处理数十亿

2021-07-05 21:15:15 73 1

转载 被各种注解搞晕了?那快来看看Spring Bean注解详解!

前言本篇博客中,我们将会讨论用于声明不同类型 Beans 的几种最常用的 Spring Bean 注解。众所周知,Spring 容器中有许多配置 Bean 的方法,我们既可以通过 XML 配置,也可以在配置类中使用 @Bean 注解来声明 Beans。此外,我们还可以使用 org.springframework.stereotype 包中的一个注解来对类进行标记,然后把其余工作交给组件扫描即可。【获取笔记】组件扫描在 Spring 中,一旦我们启用了组件扫描, Spring 就会自动扫描包中的 Be

2021-07-04 14:54:40 99 1

原创 还有这种骚操作? 教你如何优雅的在 Linux 终端下进行录像

前言相信大家,初始在使用Linux操作系统时,查找历史命令,第一时间会想到history命令:将显示出之前操作过的命令,其无法显示操作过的命令所输出的过程及结果。但往往有时候,我们却想知道在这台服务器上操作了什么?执行的过程是什么样的?输出的结果又是怎么样的?那history命令就已经无法满足我们的需求了,那究竟该怎么办呢?是时候,教大家一招了。那就是这个神奇的命令——script和scriptreplay一、录制 —— scriptscript命令:可以将 Linux 终端下的会话过程进行录制

2021-07-03 20:05:31 288 3

原创 怎么样才能让你的代码高出一个逼格?只需要掌握 Java Stream 流操作就可

概念Stream 将要处理的元素集合看作一种流,在流的过程中,借助 Stream API 对流中的元素进行操作,比如:筛选、排序、聚合等。Stream 的操作符大体上分为两种: 中间操作符 和 终止操作符中间操作符对于数据流来说,中间操作符在执行制定处理程序后,数据流依然可以传递给下一级的操作符。中间操作符包含8种(排除了parallel,sequential,这两个操作并不涉及到对数据流的加工操作):map(mapToInt,mapToLong,mapToDouble) 转换操作符,把比如

2021-07-03 15:22:56 82 1

原创 不会吧!1202年了,不会还有人不知道StringJoiner是什么吧!

这是个什么东西简要说明其实这是一个很简单的拼接字符串的类,能起到的作用其实也很有限。说到字符串拼接,各位看官瞬间就想到,String家族中的另外两个兄弟,StringBuilder和StirngBuffer,那这个StringJoiner小弟弟,有没有资格进入拼接军团当中,出现三足鼎立的情况呢,且听我细细道来~大家都知道,是个系统就有登陆,是个登陆就有鉴权的“全套服务”,这个其实没什么,一般系统都会选择OAuth2或者Jwt这些,偏偏我不!我要另辟蹊径,在下初心是好的,无非是Token传到能够解析出

2021-06-30 17:42:14 56 1

原创 WOC!原来 Linux 终端下居然还有进程记帐功能?!

在系统管理中,有时需要记录用户对资源的消费情况,作为对用户账号收取费用的依据。这些日志也可以用于安全目的,提供有关系统活动的有价值的信息。Linux 系统提供了一个名为 psacct 的软件包,可以实现记帐的功能。一、psacct 包检测首先,我们要确保当前系统是否已经安装了 psacct 包,可通过如下命令进行查看;# rpm -qa | grep psacctpsacct-6.3.2-63.el6_3.3.x86_64二、psacct 服务开启与关闭为了开启该记帐功能,需执行 /etc/

2021-06-29 17:14:54 171 4

原创 不管卷不卷,面试还是得问问你G1原理!

所有的垃圾回收器的目的都是朝着减少STW的目的而前进,G1(Garbage First)回收器的出现颠覆了之前版本CMS、Parallel等垃圾回收器的分代收集方式,从2004年Sun发布第一篇关于G1的论文后,直到2012年JDK7发布更新版本,花了将近10年的时间G1才达到商用的程度,而到JDK9发布之后,G1成为了默认的垃圾回收器,CMS也变相地相当于被淘汰了。G1结构G1抛弃了之前的分代收集的方式,面向整个堆内存进行回收,把内存划分为多个大小相等的独立区域Region。一共有4种Region:

2021-06-29 16:54:28 70

原创 竟然还有人认为Redis只有get set那样简单?!

Redis五种数据类型及应用场景Redis有五种数据类型,即 string,list,hash,set,zset(sort set),我想这点只要稍微对Redis有点了解的小伙伴都应该清楚。下面,我们就来讨论下这五种数据类型的应用场景。string这个类型相信是大家最熟悉的了,但是千万不要小瞧它,它可以做很多事情,也可以牵出一系列的问题。我们先从最简单的入手:localhost:6379> set coderbear helloOKlocalhost:6379> get codeb

2021-06-28 14:52:03 109

原创 面试问kafka消息丢失问题,你怎么答?

前言回答这个问题,我想可以从消息流开始产生(生产端),到kafka服务存储(broker),到被消费(消费端)的这个过程着手分析,明确kafka消息丢失的边界和如何配置kafka才能保证消息不丢失。【参考文献】每个服务都应该有自己明确的职责范围,kafka服务也不例外。所以,kafka保证消息不丢失,首先有一个重要的前提,那就是「消息已提交」。如果一条消息还未到达kafka服务,或者是到达了却未满足「已提交」这个定义,那么在kafka看来都属于消息未提交。接下来,我们一起来剖析这个过程吧~生产端k

2021-06-28 13:56:30 645

原创 手把手教你在 Linux 环境下部署 MySQL 数据库!

一、什么是 MySQL 数据库?MySQL 数据库是一个关系型数据库管理系统,是服务器领域中受欢迎的开源数据库系统,目前有 Oracle 公司主要负责运营与维护;【获取笔记】二、MySQL 数据库的特点多线程、多用户;简单易用、查询速度快;安全可靠;基于 C/S 架构;三、MySQL 数据库的编译安装避免出现端口和程序冲突的现象,先查询 MySQL 软件的安装情况,确认没有使用以 RPM 方式安装的 mysql-server、mysql 软件包,否则将其卸载,并安装自带的 ncurses

2021-06-27 15:00:32 1040 2

原创 宝,我今天CR了,C的什么R? 走过场的CR

CodeReview我相信目前很多公司都会有这么一个流程,关键是这个流程有没有用就很难讲。主要还是取决于你对CR的理解以及有没有真正的去落地CR,去重视CR带来的隐藏价值点。正好最近也是有人在问我CR相关的问题,他们也要开始做CR了,想了解下有没有最佳实践之类的。所以今天跟大家聊聊CR这个话题,我说的也不一定都是对的,仅供参考哈。其实说实话,我觉得CR不存在什么最佳实践。因为每个公司或者说每个团队所进行的方式都会不一样,真正的想要做好CR只能先去做,在研发流程中去落地这个事情,然后慢慢的去提炼出符合你们

2021-06-26 20:41:22 188

原创 Linux 环境下防毒软件 ClamAV,yyds!!!

在工作中,无论你是系统管理员也好,普通用户也罢。计算机都会存在这样的现象,第一:计算机系统本身的病毒,第二:黑客入侵他人计算机,而病毒的破坏性有大有小。例如:删除数据、窃取信息等等,不管怎么样,总之计算机用户会受到一定影响的。那么,我们就需要采取一些手段来进行保护;今天给大家介绍一个 Linux 环境下防毒软件:ClamAVClamAV 介绍ClamAV:是 Linux 操作系统上最流行的防病毒软件、GPL 协议免费发布、用于检测木马,病毒,恶意软件和其他恶意威胁的一个开源杀毒引擎。【在线源码】C.

2021-06-26 14:22:24 544

原创 敲黑板!关于微信支付,退款,转账中遇到的那些容易而且极易被忽略的坑

其实关于微信支付,网上已经有很多的案例.今天主要是介绍下关于微信支付,退款,转账中遇到的那些容易而且极易被忽略的一些坑.至于key,mcid,oppid和证书下载网上已经很全面了项目依赖 <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.

2021-06-17 19:35:28 354

原创 不要再死记硬背了,你试试这样理解JVM的这几代?

大家都知道,JVM中的堆,一般分为三个部分, 新生代、老年代和永久代。 这个是你第一天学JVM就知道的。但你可以先想想,为什么需要把堆分代? 不分代不能完成他所做的事情么?是这样,如果没有分代,那我们所有的对象都在一块,GC 的时候就要先找到哪些对象没用,怎么找呢?没分代就得对堆的所有区域进行扫描。但你知道,很多Java对象都是朝生夕死的,如果分代的话,我们可以 把新创建的对象放到某一地方,GC的时候就可以迅速回收这块存“朝生夕死”对象的区域。所以,一句话总结, 分代的唯一理由就是优化 GC 性能

2021-06-16 16:12:40 89

原创 阿里、华为、浪潮等大厂争相布局,开源数据库真成 “香饽饽”了?

6月1日,蚂蚁科技集团自主研发的分布式OceanBase数据库宣布正式开源,并成立OceanBase开源社区。而就在两天前,阿里云刚刚宣布对外开放关系型数据库PolarDB数据库for PostgreSQL的源代码。日前,华为的openGause、浪潮的ZNBase等也先后宣布开源。大厂们不约而同的躬身入局似乎透露出一个重要信号:开源数据库正在以前所未有的强势之姿挺进国内、乃至全球数据库市场。【参考文献】为什么是现在?随着国内的开放原子开源基金会挂牌成立、工信部等部门联合 Gitee 建设中国独立的开

2021-06-16 14:23:25 1152

原创 MySQL 中的反斜杠 \\,真是太坑了!!

在 MySQL 中有很多特殊符号都是相当恶心的,比如字符串中有单引号(’)、双引号(")、反斜杠(\)等等,同学们可以先脑补一下可能会出现啥问题?在我们平时操作 SQL 中,一不注意这些符号就会给你背上一口锅。你还别不信,听哥一句劝,这里的水很深,有些东西,你把握不住…好了,今天咱们就一起针对最膈应人的反斜杠(\),来看看都有哪些坑。一、INSERT 语句中有反斜杠(\)1、实际测试咱们用下面这些 SQL 来测试一下反斜杠(\)在 INSERT 语句中会是啥样?INSERT INTO `demo

2021-06-15 19:42:46 5162 1

原创 从头搭建一个SpringBoot项目,至少应该引入哪些配置?

前言建立一个全新的项目,或者把旧的庞大的项目,进行拆分成多个项目。在建立新的项目中,经常需要做一些重复的工作,比如说拷贝一下常用的工具类,通用代码等等。所以就可以做一个基础的项目方便使用,在经历新项目的时候,直接在基础项目上进行简单配置就可以开发业务代码了。基础项目该包含哪些东西。Swagger在线接口文档。CodeGenerator 代码生成器。统一返回。通用的分页对象。常用工具类。全局异常拦截。错误枚举。自定义异常。多环境配置文件。Maven多环境配置。日志配置。Jenk

2021-06-12 14:36:27 577

原创 看完这个还不了解redis的SDS,半夜你来扒我家墙头

概述:我们都知道redis底层是用C语言实现的,而C的字符串是以‘\0’来判断结束的,是一个对特殊字符存储不安全的。那redis是怎么做到存储二进制安全的呢?重头戏-redis中的字符串redis中还是有用到C中字符串的地方,比如一些不需要修改的字面量一些reids要输出的日志信息等。而需要修改的字符串redis抽象成了我们的SDS对象:简单动态字符串(simple dynamic string,SDS)。SDS的定义每个 sds.h/sdshdr 结构表示一个 SDS 值,结构如下:struc

2021-06-10 20:32:01 82

原创 如何在2021年涨薪15K?搞懂这份大厂Java面试知识点笔记汇总,你也没问题

就目前大环境来看,跳槽成功的难度比往年高很多。总结一下2021面试的感受:无论一面还是二面,都很考验Java程序员的技术功底!!最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份超级超级全面的资料管你是小白还是工作已久,不管你在面试还是已跳槽,都应该好好看看,这份资料真的超级超级全面,几乎打败了市面上90%的自学资料,并覆盖了整个Java技术栈,来 肝了它!肯定会对你有帮助!话不多说 直接上干货这份资料包括:自学视频、技术书籍、技术文档、面试资料、学习路线、简历模板等~所含技术栈:

2021-06-10 18:56:05 77

空空如也

空空如也

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

TA关注的人

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