自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql中IS NULL、IS NOT NULL不能走索引?

mysql中IS NULL、IS NOT NULL不能走索引?不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL、IS NOT NULL、!=、like %* 、like %*%,不能使用索引查询,只能使用全表扫描。刚入行时我也是这么认为的,还奉为真理!但是时间工作中你会发现还是走索引啊!下面我们来一一探究其中的奥秘。一、首先验证一下是会走索引的创建一个表,结构如下:create table user_info( ...

2020-08-16 21:19:38 1438

原创 55岁程序员跳槽腾讯?底下回复:98岁保洁复读考上北大

就互联网公司来说的话,现在几乎都是年轻人居多,基本上超过40人以上的人你几乎见不到,如果你看到一群坐在电脑面前精神萎靡的年轻人,那么不要怀疑,他们就是程序员,虽然才20多岁,但是看起来却像30多岁了。。。(我就黑程序员一次)!现在很多互联网公司都非常在意程序员的年龄,40岁以上的程序员就很少见了,那么程序员上了年龄该怎么办呢?有人说码农越老越值钱,自己公司就有一位老码农50岁跳槽腾讯,以下时期吹牛的内容,我们可以看下。显然,这名网友只是在哗众取宠,55岁的程序员跳槽腾讯,虽然不说..

2020-08-16 21:18:28 449

原创 一文让你了解MySQL数据库高可用方案

一.什么是高可用性高可用性=可靠性,它的本质就是通过技术和工具提高可靠性,尽可能长时间保持数据可用和系统运行,实现高可用性的原则,首先要消除单点故障,其次通过冗余机制实现快速恢复,还有就是实现容错。二.我们在考虑数据库的高可用方案时,应该考虑几个方面1.若数据库发生了宕机或者意外中断等故障,能够尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的中断而中断2.用作备份,只读副本等功能的非主流节点的数据应该和主节点的数据实时或者始终保持一致3.当业务发生数据库切换的时候,

2020-08-16 21:16:09 369

原创 在学Linux驱动之前:需要先了解驱动模型

Linux设备林林总总,嵌入式开发一个绕不开的话题就是设备驱动开发,在做具体设备驱动开发之前,有必要对Linux的驱动模型有一个相对清晰的认识,将会帮助驱动开发,明白具体驱动接口操作符相应都做些什么。个人对于驱动模型的理解概括起来就是一句话:利用面向对象编程思想,实现设备分层管理软件体系结构。注:代码分析基于linux-5.4.31为啥要驱动模型随着系统结构演化越来越复杂,Linux内核对设备描述衍生出一般性的抽象描述,形成一个分层体系结构,从而引入了设备驱动模型。这样描述还是不够让人理解,

2020-08-12 19:35:19 188

原创 作为程序员,你怎么看待用go语言重写所有的Java后台工程

网传哔哩哔哩用go语言重写所有的Java后台工程,作为程序员怎么看待这件事,go语言是成主流趋势了吗?会Java的程序员怎么办,不会失业吧!现在小编就带领大家看看这两门语言到底有何特点以及网友对此事的一个认知。Go语言是谷歌2009年发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。北京时间2010年1月10日,Go语言摘得了TIOBE公布的2009年年度大奖。Java:是一种可以撰写.

2020-08-10 15:02:43 267

原创 面试被问到如何优化掉多余的if/else?程序员小伙:直接开头return

前期迭代懒得优化,来一个需求,加一个if,久而久之,就串成了一座金字塔。当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅的优化掉这些多余的if/else?1. 提前return这是判断条件取反的做法,代码在逻辑表达上会更清晰,看下面代码:if (condition) { // do something} else { return xxx;}其实,每次看到上面这种代码,我都心里抓痒,完全可以先判断!condition,干掉else。.

2020-08-10 14:38:52 237

转载 阿里双十一的性能“凶手”之一:自定义异常为什么性能差?

前言大家应该都经历过双十一吧,那个流量大的恐怖吧,那个并发高的吓人吧。那么在一个高并发的系统里,有哪些点是影响系统性能的呢,今天我们来讲其中一个点:自定义异常为什么异常会影响性能?首先给大家看一段JDK的Throwable源码publicsynchronizedThrowablefillInStackTrace(){if(stackTrace!=null||backtrace!=null/*Outofprotocolstate*/...

2020-08-10 14:35:50 277

原创 蚂蚁金服Java研发岗二面:说说HashMap 中的容量与扩容实现

JDK1.8 中 HashMap 的底层实现,我相信大家都能说上来个 一二,底层数据结构 数组 + 链表(或红黑树) ,源码如下/***数组*/transientNode<K,V>[]table;/***链表结构*/staticclassNode<K,V>implementsMap.Entry<K,V>{finalinthash;finalKkey;Vvalue;Node&l...

2020-08-10 14:33:59 259 2

转载 一款直击痛点的优秀http框架,让我超高效完成了第三方接口的对接

1.背景因为业务关系,要和许多不同第三方公司进行对接。这些服务商都提供基于http的api。但是每家公司提供api具体细节差别很大。有的基于RESTFUL规范,有的基于传统的http规范;有的需要再header里放置签名,有的需要SSL的双向认证,有的只需要SSL的单向认证;有的以JSON 方式进行序列化,有的以XML方式进行序列化。类似于这样细节的差别太多了。不同的公司API规范不一样,这很正常。但是对于我来说,我如果想要代码变得优雅。我就必须解决一个痛点:不同服务商API那么多的差异点,如何

2020-08-08 21:42:25 195

原创 7月份GitHub上最热门的Java开源项目排行

7月份GitHub上最热门的Java开源项目排行已经出炉啦,一起来看看上榜详情吧1,tsunami-security-scannerhttps://github.com/google/tsunami-security-scannerStar 5834tsunami-security-scanner是谷歌专门为大型企业网络开源了一个漏洞扫描神器,主要用于数千个甚至数百万个物联网组成的企业系统。谷歌表示,“海啸”旨在满足类似于谷歌这样的高端企业的客户需求,漏洞扫描的准确性是重中之重,项目..

2020-08-08 21:39:14 757

原创 面试经常被问到JVM而答不上,JVM真的有这么难吗?这篇文章带你深入浅出JVM

一、什么是JVMJVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Ja

2020-08-08 20:50:18 246

原创 雕堡了!!一键生成数据库文档,堪称数据库界的Swagger

最近部门订单业务调整,收拢其他业务线的下单入口,做个统一大订单平台。需要梳理各业务线的数据表,但每个业务线库都有近百张和订单相关的表,挨个表一个一个字段的弄脑瓜子嗡嗡的。为了不重复 CV 操作,抱着一丝希望开始在GitHub里找,看看有没有什么工具可以用,结果就真的发现了宝藏,screw(螺丝钉),居然可以生成数据库文档,优秀啊~。数据库文档图一、数据库支持 MySQL MariaDB TIDB Oracle SqlServer ...

2020-08-06 01:11:11 192

转载 不会项目经验?这3个基于SpringBoot的图片识别处理系统赶紧来看看吧

中药图片拍照识别系统项目地址:gitee.com/xiaohaoo/ch…项目简介主要用来对拍摄的中药图片进行识别,系统会给出概率值最高的 10 种中药, 同时主要包含功能还有:中药详细信息查看、中药筛选、中药全文检索、问题社区等。项目后端介绍本项目后端包含五个模块:admin: 服务器端。Maven+SpringBoot+MongoDB+Elasticsearch 和 IK 分词器(全文检索)+MySQL+Deeplearning4j(基于 Java 深度学习框架探索) medi

2020-08-06 01:08:16 357

原创 程序员过关斩将--为微服务撸一个简约而不简单的配置中心

毫不犹豫的说,现代高速发展的互联网造就了一批又一批的网络红人,这一批批网红又极大的催生了特定平台的一大波流量,但是留给了程序员却是一地鸡毛,无论是运维还是开发,每天都会担心服务器崩溃,程序down机。还是怀念以前那些单机结构呀,甚至有点嫉妒那些做内网几乎没有访问量的应用的程序员,不用加班,不用提心吊胆,更不用每年买霸王洗发露。提到单机架构,在互联网应用中肯定是吃不开的,流量高峰冲击的你可以怀疑人生。单机升级集群,带来的不止是技术上的挑战,在顶住流量高峰,迎合业务的同时,也引入了配置的复杂性。这也是我今天

2020-08-05 14:45:32 174

原创 把MySQL中的各种锁及其原理都画出来

在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发生了死锁现象:ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction由于开发任务紧急,只是暂时规避了一下,但是对触发死锁的原因和相关原理不甚了解,于是这几天一直在查阅相关资料,总结出一个系列文章供大家参考,本篇是上篇,主要介绍 MySQL 加锁原理和锁

2020-08-03 19:48:18 189

转载 忘掉 Snowflake,感受一下性能高出587倍的全局唯一ID生成算法

今天我们来拆解 Snowflake 算法,同时领略百度、美团、腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法。这还不够,我们会讨论到全局唯一 ID 服务的分布式 CAP 选择与性能瓶颈。已经熟悉 Snowflake 的朋友可以先去看大厂的设计和权衡。百度 UIDGenertor:github.com/baidu/uid-g…美团 Leaf:tech.meituan.com/2017/04/21/…腾讯 Seqsvr: www.infoq.

2020-08-03 19:45:40 515

原创 Java 高频面试题:聊一聊 JUC 下的 CopyOnWriteArrayList

ArrayList 是我们常用的工具类之一,但是在多线程的情况下,ArrayList 作为共享变量时,并不是线程安全的。主要有以下两个原因: 1、ArrayList 自身的 elementData、size、modCount 在进行操作的时候,都没有加锁; 2、这些变量没有被 volatile 修饰,在多线程的情况下,对这些变量操作可能会出现值被覆盖的情况; 如果我们想在...

2020-05-07 13:39:21 1754

原创 SpringBoot 知识点整理,从面试题到项目实战,资深架构师全搞定

SpringBoot 知识点整理,从面试题到项目实战,资深架构师全搞定前言Spring Boot旨在简化Spring的开发,就这点而论,Spring Boot涉及了Spring的方方面面。要一下子讲清楚Spring Boot的所有用法是不可能的,因为这必须涵盖Spring本身所支持的各种技术。所以今天就由来自一线大厂的架构师带你搞定SpringBoot,从面试题到...

2020-05-06 15:17:57 379

原创 Linux 上搭建 Snort+BASE 入侵检测系统

配置实验环境由于本人电脑的存储空间不足,无法再承担安装一个虚拟机的开销,因此在阿里云上申请了一个云服务器进行本次实验。服务器配置如下:1 核 - 2GB 内存 - 40GB 系统盘 操作系统:Ubuntu 18.04修改 Ubuntu 源查看 /etc/apt/sources.list 发现已经配置好了阿里源,故不再做修改。如有需要,可自行改为阿里源或清华源,提高安装包下载...

2020-05-06 15:15:26 1415 5

原创 设计模式(Java语言)- 原型模式

原型模式(Prototype Pattern)也有人将原型模式称为克隆模式,是属于创造型设计模式,用于创建重复的对象,提供了一种创建对象的最佳方式。原型模式需要实现Cloneable接口,来实现对象的克隆。在实际的应用中,如果应用需要反复创建相同的对象时,并且创建这个对象需要花费大量时间或者需要访问权限,比如需要读取数据库,配置文件等,如果每次创建重复对象都需要读一次数据库,那么这种方式显然并不是...

2020-05-06 15:13:41 277

原创 SpringBoot集成Quartz实现定时任务

1 需求在我的前后端分离的实验室管理项目中,有一个功能是学生状态统计。我的设计是按天统计每种状态的比例。为了便于计算,在每天0点,系统需要将学生的状态重置,并插入一条数据作为一天的开始状态。另外,考虑到学生的请假需求,请假的申请往往是提前做好,等系统时间走到实际请假时间的时候,系统要将学生的状态修改为请假。显然,这两个子需求都可以通过定时任务实现。在网上略做搜索以后,我选择了比较流行的定时...

2020-05-06 15:12:34 909

原创 面试腾讯T4,结果惨败被吊打摩擦,打蒙了我的面试之路

前言大部分的程序员心里都有大厂梦。但是,腾讯的面试让我的心是凉了半截,比较打击人(失败经验谨慎参考)面试腾讯之前是非常有信心的,听闻腾讯不在乎学历,不少在职员工都是大专出身,所以我才有这份勇气,下了这个决心。面试第一面时,还算是顺利,所以还在暗自窃喜,原以为能够顺利拿下offer,但在第二面居然结果惨败被吊打摩擦,不得不叹服:不愧是第一的互联网公司。(以下附面试题)一面:1. 自我介绍...

2020-04-30 16:02:59 780

原创 Java提升学习(三):抽象类、多态、接口

一、抽象类父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有 意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 的类就是抽象类。就像上面所画出来的例子,图形可以计算面积,但是,得具体到什么图形,动物们可以吃东西,但得具体到他们吃什么东西。1.定义: 修饰符...

2020-04-30 16:01:47 153

原创 Springboot以Tomcat为容器实现http重定向到https的两种方式

1 简介本文将介绍在Springboot中如何通过代码实现Http到Https的重定向,本文仅讲解Tomcat作为容器的情况,其它容器将在以后一一道来。建议阅读之前的相关文章:(1)Springboot整合https原来这么简单(2)HTTPS之密钥知识与密钥工具Keytool和Keystore-Explorer2 相关概念2.1 什么叫重定向所谓...

2020-04-30 16:00:26 490

原创 在微服务项目中,Spring Security 比 Shiro 强在哪?

虽然目前 Spring Security 一片火热,但是 Shiro 的市场依然存在,今天我就来稍微的说一说这两个框架的,方便大家在实际项目中选择适合自己的安全管理框架。首先我要声明一点,框架无所谓好坏,关键是适合当前项目场景,作为一个年轻的程序员更不应该厚此薄彼,或者拒绝学习某一个框架。小孩子才做选择题,成年人两个都要学!所以接下来主要结合我自己的经验来说一说这两个框架的优缺点,没有...

2020-04-30 15:59:44 3224 1

原创 DAS性能优化之Tomcat数据源调优

背景上一次为了解决数据库偶发连接高耗时的问题,我们将参数minIdle从0改为1,在连接池中始终保留一个连接。然后为了确保连接的有效性,又把参数testOnBorrow改为true。成功解决偶发高延时问题。随后,我们DAS团队对Tomcat数据源做了更多的了解和研究,包括研读它的源代码,发现它仍旧有优化的空间。我们上次调优主要是将testOnBorrow配置为true。虽然保证...

2020-04-30 15:58:52 211

原创 如何不重启热更新线上 Java 代码?

一、前言热更新代码的场景1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题。二、Arthas的使用使用阿里巴巴开源的J...

2020-04-30 15:56:56 141

原创 你知道什么是 GitHub Action 么?

本文是 GitHub Action 的入门教程,如您已有相关使用经验可以直接关掉。GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务。之前一直都是 Beta 版本,正式版于 2019 年 11 月正式推出。首先还是先放几个官方的链接:GitHub Action :https://github.com/features/ac...

2020-04-29 19:24:37 569

原创 源码分析 Alibaba sentinel 滑动窗口实现原理(文末附原理图)

要实现限流、熔断等功能,首先要解决的问题是如何实时采集服务(资源)调用信息。例如将某一个接口设置的限流阔值 1W/tps,那首先如何判断当前的 TPS 是多少?Alibaba Sentinel 采用滑动窗口来实现实时数据的统计。温馨提示:如果对源码不太感兴趣,可以先跳到文末,看一下滑动窗口的设计原理图,再决定是否需要阅读源码。@目录1、滑动窗口核心类图 2、滑动窗口实现原理...

2020-04-29 19:22:32 227

原创 mybatis源码学习:基于动态代理实现查询全过程

一、动态代理:执行代理对象的方法时拦截,进行方法增强。复制 /** * 作用:执行被代理对象的任何接口方法都会经过该方法 * @param proxy : 代理对象的引用 * @param method : 当前执行的方法 * @param args : 当前执行方法所需的参数 * @return : 和被代理对象有相同的返回值 * @throws Throwable */ ...

2020-04-29 19:21:00 129

原创 【高并发】高并发分布式锁架构解密,不是所有的锁都是分布式锁!!

锁用来解决什么问题呢?在我们编写的应用程序或者高并发程序中,不知道大家有没有想过一个问题,就是我们为什么需要引入锁?锁为我们解决了什么问题呢?在很多业务场景下,我们编写的应用程序中会存在很多的资源竞争的问题。而我们在高并发程序中,引入锁,就是为了解决这些资源竞争的问题。电商超卖问题这里,我们可以列举一个简单的业务场景。比如,在电子商务(商城)的业务场景中,提交订单购买商品时,首...

2020-04-29 19:20:15 165

原创 用long类型让我出了次生产事故,写代码还是要小心点

一: 背景1. 背景介绍因为是自己写的代码,所以我知道问题出现在哪里,如果大家看过我之前写的文章应该知道我用全内存跑了很多模型对用户打标签,一个模型就是一组定向的筛选条件,而为了加速处理,我会原子化筛选条件,然后一边查询一边缓存原子化条件获取的人数,后面的模型如果命中了前面模型的原子化条件,那么可以直接从缓存中读取它的人数即可,这也是动态规划的思想~ ,如果不明白我来画张图。从上面...

2020-04-29 19:19:00 124

原创 SpringBoot全局异常处理与定制404页面

一、错误处理原理分析使用SpringBoot创建的web项目中,当我们请求的页面不存在(http状态码为404),或者器发生异常(http状态码一般为500)时,SpringBoot就会给我们返回错误信息。也就是说,在SpringBoot的web项目中,会自动创建一个/error的错误接口,来返回错误信息。但是针对不同的访问方式,会有以下两种不同的返回信息。这主要取决于你访问时的http头...

2020-04-28 16:00:42 681

原创 掌握MySQL连接查询到底什么是驱动表

两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下CREATE TABLE `student` ( `id` int(11) NOT NULL, `no` varchar(20) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DE...

2020-04-28 15:59:21 134

原创 用了这么多年的泛型,你对它到底有多了解?

现代程序员写代码没有人敢说自己没用过泛型,这个泛型模板T可以被任何你想要的类型替代,确实很魔法很神奇,很多人也习以为常了,但就是这么有趣的泛型T底层到底是怎么帮你实现的,不知道有多少人清楚底层玩法,这篇我就试着来分享一下,不一定全对哈。。。一:没有泛型前现在的netcore 3.1和最新的.netframework8早已经没有当初那个被人诟病的ArrayList了,但很巧这玩意不得不说,因...

2020-04-28 15:57:36 158

原创 MySQL不香吗,为什么还要有noSQL?

noSQL的大概意思noSQL现在非常火,我看过的简历里面十个有九个都写了熟悉noSQL,但是对于noSQL背后的细节却很少有人能讲清楚,甚至连noSQL里面的这个no是什么意思都很多人搞错。这个no并不是not的意思,而是not only的缩写。不得不说这个缩写实在是很坑爹,单从字面上应该没人能猜出来它是这个意思。而且即使解读成not only SQL,还是有点云里雾里,不是很能精准地get...

2020-04-28 15:54:43 173

原创 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密

前言出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方。ps:日常开发中,我们要有一定的安全意识,对于密码,金融数据等敏感信息事实加密存储保护。这个需求说起来不是很难,我们只需要在执行 sql 之前,提前将指定数据进行加密。执行 sql 之后,获取返回结果,再进行的相应的解密。稍微改...

2020-04-27 15:30:43 273

原创 美团开发十年,精心整理这份实战文档—Dubbo+springBoot+Docker

深入理解微服务实战——Dubbo+spring Boot+Docker过去十多年互联网产业的高速发展,在给社会带来深刻变革的同时,也催生了服务架构的演进:从传统的单体应用到面向服务的SOA,再到现今主流的微服务架构,而Dubbo+spring Boot+Docker就是微服务领域中的先行者和佼佼者。对于想要进阿里的人来说,Dubbo是你必须掌握的框架Dubbo是阿里巴巴公司...

2020-04-25 16:41:10 235

原创 SpringBoot与单元测试JUnit的结合

有些人认为,写单元测试就是在浪费时间 ,写完代码,依然还是能够进行测试的。但是,还是建议写单元测试的,可以让你的条理更加清晰,而且当某个功能出现问题时,可能通过单元测试很容易的定位和解决问题。本文主要总结下在Spring及SpringBoot项目中,使用单元测试时的方法。将JUnit4和JUnit5对比着来写,因为我发现我身边的同事经常搞不明白要怎么用。Juint版本说明这里主要说明下它...

2020-04-25 16:40:19 205

原创 从一次“并发修改字段业务”引出多版本并发控制与InnoDB锁

并发字段修改业务#最近在主要在做“工作流引擎”课题的预研工作,在涉及到“会签任务”(工作流业务概念,这与我们今天讨论文问题没有太多关联)的时候,遇到了一个并发修改同一个字段的应用场景。大致是由于要等一个活动节点的所有实例任务都完成之后才能继续向下流转,则引擎必须在每次任务提交的时候进行判断。我选择了在数据库表中记录下每个活动节点对应的任务实例数目,活动实例完成提交时做相应的数目修改(act...

2020-04-25 16:39:27 272

空空如也

空空如也

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

TA关注的人

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