自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于 SpringBoot2 + MybatisPlus 的商城管理系统【源码开源】

项目简介SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue 的前后端分离的商城系统, 包含商城、拼团、砍价、商户管理、 秒杀、优惠券、积分、分销、会员、充值、多门店等功能,更适合企业或个人二次开发。商城功能商品模块:商品添加、规格设置,商品上下架等订单模块:下单、购物车、支付,发货、收货、评价、退款等营销模块:积分、优惠券、分销、砍价、拼团、秒杀、多门店等微信模块:自定义菜单、自动回复、微信授权、图文管理、模板消息推送配置模块:各种配置

2021-02-08 22:26:20 662

原创 一款基于 Spring Boot 的现代化社区(论坛/问答/社交网络/博客)

推荐一个不错的论坛类开源项目!这个项目叫做「forum-java」,是一款用 Java(spring boot) 实现的现代化社区(论坛 / 问答 / BBS / 社交网络 /博客)系统平台。forum-java 是一个开源的现代化社区平台,它实现了:面向内容讨论的论坛面向知识问答的社区100% 开源forum-java 功能列表图片forum-java 特性前端:多终端适配(手机端,pc端)自定义主题颜色,方便企业用户自定义主题编辑器支持 control + s 保存编..

2021-02-08 22:15:43 442

原创 IntelliJ IDEA 查看类继承关系图,太强大了!

最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟。这次利用了IDEA的diagram,结果一目了然,也是好用到炸裂,就此分享。1、查看图形形式的继承链在你想查看的类的标签页内,点击右键,选择 Diagrams,其中有 show 和 show ... Popup,只是前者新建在标签页内,后者以浮窗的形式展示:实际上,你也可以从左边的项目目录树中,对你想查看的类点击右键,同样选择Diagrams,效果是一样的:

2021-02-05 10:07:11 2752

原创 我们到底为什么要用 IoC 和 AOP

作为一名 Java 开发,对 Spring 框架是再熟悉不过的了。Spring 支持的控制反转(Inversion of Control,缩写为IoC)和面向切面编程(Aspect-oriented programming,缩写为AOP)早已成为我们的开发习惯,仿佛 Java 开发天生就该如此。人总是会忽略习以为常的事物,所有人都熟练使用 IoC 和 AOP,却鲜有人说得清楚到底为什么要用 IoC 和 AOP。技术肯定是为了解决某个问题而诞生,要弄清楚为什么使用 IoC 和 AOP,就得先弄清楚不用它们会

2021-02-05 10:06:01 175

原创 二叉树、平衡二叉树、红黑树、B树、B+树与B*树

一、二叉树1️⃣二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图:基于二叉查找树的这种特点,在查找某个节点的时候,可以采取类似于二分查找的思想,快速找到某个节点。n 个节点的二叉查找树,正常的情况下,查找的时间复杂度为 O(logN)。之所以说是正常情况下,是因为二叉查找树有可能出现一种极端的情况,例如:这种情况也是满足二叉查找树的条件,然而,此时的二叉查找树已经近似退化为一条链表,这样的二叉查找树的查找时间复杂度顿时变成了 O(n)。由此必须防止这种情况发生,为

2021-02-02 22:32:40 529

原创 B-Tree 和 B+Tree傻傻分不清楚

B-TreeB-Tree又叫做B树,和平衡二叉树不同的地方在于B树是多叉树(平衡多路查找树),Oracle和MongoDB的索引技术就是基于B树的数据结构,B树也可以看作是对2-3查找树的一种扩展。一个m阶的B-Tree有以下性质每个节点最多有m个子节点;每个非叶子节点(根节点除外)至少含有m/2个子节点;如果根节点不是叶子节点,那么根节点至少有两个子节点;每个节点上,所有的关键字都是有序的,从左到右,依次从小到大排序;每个关键字的左子树的均值小于当前关键字,右子树的均值大于当前关键字;每

2021-02-01 22:28:35 189

原创 13K点赞都基于 Vue+Spring 前后端分离管理系统ELAdmin,大爱

其实项目网上有很多了,但是教程比较详细的没多少,今天分享的项目从安装部署到代码具体功能都有很详细都说明eladmin 是一款基于 Spring Boot 2.1.0 、 Jpa、 Spring Security、redis、Vue 的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由。欢迎关注Java项目分享这个开源项目基本稳定,并且后续作者还会继续优化。完全开源!这个真的要为原作者点个赞,如果大家觉得这个项目有

2021-01-27 19:37:42 176

原创 Spring Boot快速开发企业级Admin管理后台

Erupt 可快速的构建管理页面,零前端代码、零CURD、自动建表,仅需单个类文件 + 简洁的注解配置,即可快速开发企业级Admin管理后台!后台管理系统非常重要,但开发存在一定的痛点,如:开发效率低、界面不美观、交互不理想、工作量重复、存在安全漏洞、后端研发被迫写前端代码等。我是程序汪Erupt提供企业级中后台管理系统的全栈解决方案,提供超多业务组件,简洁美观的后台页面,支持23类数据组件,多种数据源支持,严密的安全策略,压缩研发周期,降低研发成本。关注Java项目分享注:我不是代码生成器,代码生.

2021-01-27 19:36:09 332 1

原创 盘点 Github 上的高仿 app 项目,B站 微博 微信等等

学技术的,多多少少都仿过出名的产品。一来,可以练练手,二来对知识点能查漏补缺。欢迎关注Java项目分享更重要的一点是能给你带来及时的正反馈,让学习的过程不那么枯燥。今天给大家介绍 GIthub 上几个仿造大厂的 app 项目。我是程序汪\高仿微信**▼iOS 版:Github 地址:https://github.com/nacker/LZEasemob3界面截图:Android 版:Github 地址:https://github.com/GitLqr/LQRWeChat界面截图:高

2021-01-27 19:34:49 993

原创 10 个超好看可视化面板

Web 开发中几乎所有平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用,那么有哪些优秀的开源免费的控制面板呢?我在 Github 上收集了一些优秀的后台控制面板,并总结得出 Top 10。1. AdminLTEGithub Star 数 24969 , Github 地址:https://github.com/almasaeed2010/AdminLTE非常流行的基于 Bootstrap 3.x 的免费的后台 UI 框架。2.

2021-01-23 11:42:09 163

原创 Typora+图床详解(小白都能学得会)

1 了解工作博客中用的笔记软件——Typora(Markdown语法)博客中用的图床——阿里云对象存储(Object Storage Service,简称OSS)图床平台介绍七牛云七牛云, 很多大佬也是推荐,注册认证后有10G永久免费空间,每月10G国内和10G国外流量,速度相当快,插件支持比较多,有免费ssl证书,但https流量收费。注意:七牛云30天后会回收测试域名,因此你必须要绑定自己的已经备案的域名.网易云网易云 NOS 对象存储从三个维度进行计量收费:存储容量、流量、接口调用

2021-01-23 11:01:59 1129 2

原创 Memcached 缓存数据库应用实践

1.1 数据库对比缓存: 将数据存储到内存中,只有当磁盘胜任不了的时候,才会启用缓存    缺点:断电数据丢失(双电),用缓存存储数据的目的只是为了应付大并发的业务。数据库: mysql(关系型数据库,能够保证数据一致性,保证数据不丢失,当因为功能太多,导致性能不高) ===数据参考缓存数据库: memcache redis(非关系型数据库,性能极高,但不保证数据完整性) === 业务的数据提供者      memcachedb 会将内存的数据写入到磁盘中       redis 主要工作

2021-01-23 10:46:01 167

原创 官方源、镜像源汇总

站点版(一)、企业站搜狐:http://mirrors.sohu.com/网易:http://mirrors.163.com/阿里云:http://mirrors.aliyun.com/腾讯:http://android-mirror.bugly.qq.com:8080/(仅针对APP开发的软件,限流,不推荐)淘宝:http://npm.taobao.org/(二)、教育站上海交通大学:http://ftp.sjtu.edu.cn/html/resources.xml(部分移动运营商出口状况.

2021-01-23 10:36:09 161

原创 微服务划分的姿势

我们知道微服务是一种理念,没有确切的定义和边界,好比设计原则,是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话,具体问题需要具体分析,所以这篇文章谈到的划分也不是绝对标准,仅供参考。  有人说微幅不难,难的是服务的划分,虽然我持保留意见。但是从侧面也反应了划分具有一定的困难。这里的矛盾在于粒度。如果粒度太大了,分和不分似乎都差不多;如果粒度太小了,聚合、发布、调用链、调试等都是坑。  以下谈到的拆分是前人经验的总结,我罗列了三种行家的拆分姿势,每个的的经验和视野不同,各有偏颇,我在这里更.

2021-01-23 10:32:25 112

原创 微服务的时间和成本去哪儿了

为什么选择微服务?  虽然刘老师的说辞有点举重若轻,说的是因为执着和技术人的专研精神选择了微服务,甚至也对比和调研过,但是在只有四个人的团队里,连一张披萨都没有凑齐的前提下就“冒然”选型,显然不能让我信服。可能是刘大佬有比较充分的调研和把握,或者说有一定的技术自信。否则换成我,我是无论如何不敢带着四个缺少微服务实战经验的小伙伴贸然前进,除非我想把这个项目当成试验品。  因为如果分层架构足够规范简单,团队规范足够精细,设计面向微服务的架构就足够解决问题,等团队和业务发展壮大后,再切换到微服务不迟。  刘

2021-01-23 10:29:59 534

原创 假如你是架构师,你要做些什么

很多做软件开发同学的梦想都是成为一名架构师,而架构师的核心工作就是做好软件设计。软件设计是软件开发过程中的一个重要环节,那么如何进行软件设计,其输出标准又是什么呢?软件设计过程中,如何和各个相关方沟通,使软件设计能同时满足用户的功能需求和非功能需求,并降低公司的开发成本? 前期思考  很多软件开发同学的职业规划都是架构师,试想这样一个场景,如果公司安排你做架构师,让你在项目开发前期进行了一些架构设计。你该如何开展你的工作?应该如何说出你的工作成果?你如何确定你的设计是否满足用户需求的?你是.

2021-01-23 10:27:50 112

原创 说透代码评审

  代码如熵,不加外力很容易就会随着代码的不断堆积而发生腐烂和溃败。我们不是不知道代码问题,而是对既成事实难有改变。但是如果站在迭代的角度思考下一次升级,如何确保新的代码质量就显得很有必要,特别是你的代码需要重写的时候,我想你一定会遇到和我一样的问题,我们究竟应该如何保证我们的代码的质量?于是就有了这篇工具型的文章。​ 以下内容架构是我摘录觉得比较重要的纬度,很多方法论借鉴了以上几篇文章思想,对代码评审的各种情况基本都谈得比较到位了,反复精读基本上就可以采用拿来主义,希望对你的团队评审有所帮助。为

2021-01-23 10:25:16 284

原创 从哲学层面浅谈计算机学习方法论

这篇文章会从更高的形而上的角度来审视自己的学习。其中的思想来源比较复杂,主要是受了老子、王东岳、李善长、古典文学和计算机科学等的影响,不知其所踪。学什么?抽象模型  庄子说过吾生有崖,知无涯。以有限的生命去学习无尽的知识是很愚蠢的。所以,学习的终极目标一定不是知识本身,因为知识是表象的、不稳定、会过时。那么我们应该学什么,什么东西才是永恒的?也许我们会有很多见解,比如学习哲学,或者叫哲科;或者学习方法论;或者学习抽象模型等等…​ 这些抽象模型的完美体现就是我们经常看到的数学公式,公式好比万.

2021-01-23 10:21:08 351

原创 分布式事务:两阶段提交与三阶段提交

在分布式系统中著有 CAP 理论,该理论由加州大学伯克利分校的 Eric Brewer 教授提出,阐述了在一个分布式系统中不可能同时满足 一致性(Consistency)、可用性(Availability),以及 分区容错性(Partition tolerance)。C:一致性在分布式系统中数据往往存在多个副本,一致性描述的是这些副本中的数据在内容和组织上的一致。A:可用性可用性描述了系统对用户的服务能力,所谓可用是指在用户容忍的时间范围内返回用户期望的结果。P:分区容错性分布式系统

2021-01-22 12:48:42 224

原创 领域驱动实践总结(基本理论总结与分析+架构分析与代码设计+具体应用设计分析V)

领域驱动实践总结三:具体应用设计分析领域驱动设计DDD是一种设计思想,它可以同时指导中台业务建模和微服务设计(中台本质是业务模型,微服务是业务模型的系统落地),领域驱动设计强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是脱离领域模型来谈微服务设计。微服务拆分困境产生的根本原因:不知道业务或者微服务的边界到底在什么地方。DDD 核心思想:通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。对于领域驱动设计的学习做的总结主要写三篇博客,主要包括三

2021-01-21 12:51:13 283

原创 Java三元表达式中的陷阱

今天遇到一个奇怪的Java三元表达式中的空指针异常。特此记录。代码代码示意如下:Integer itemVO = null;Integer globleLatenessToleranceUseAlternate = null;Integer latenessToleranceUseAlternate = (itemVO == null ? globleLatenessToleranceUseAlternate : itemVO.intValue());从上面代码可以看出:当itemVO不为

2021-01-20 12:57:48 154

原创 Java有陷阱——慎用入参做返回值

正常情况下,在Java中入参是不建议用做返回值的。除了造成代码不易理解、语义不清等问题外,可能还埋下了陷阱等你入坑。问题背景比如有这么一段代码:@Namedpublic class AService { private SupplyAssignment localSupply = new SupplyAssignment(); @Inject private BService bervice; public List<Supply> calcSupplyA

2021-01-20 12:55:08 129

原创 Eclipse中安装反编译工具Fernflower(Enhanced Class Decompiler)

IntelliJ IDEA一个吸引人的地方在于,他有比较好的反编译工具,这让Eclipse用户牙痒痒。但不要紧,本文介绍如何在Eclipse IDE中使用IntelliJ IDEA的反编译工具Fernflower。为啥需要反编译很多jar不提供源码,那么打开class是这个鸟样。不具备人类可读性。因此需要反编译。什么是Fernflower那么我是怎么知道Fernflower的呢?你随便用IntelliJ IDEA打开一个jar中的class文件,可以看到下面的信息,这就是IEDA中的反编译工具F

2021-01-20 12:49:50 686

转载 高级开发必须理解的Java中SPI机制

本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。1 SPI是什么SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。整体机制图如下:Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间..

2021-01-16 18:28:48 141

原创 全文搜索引擎Elasticsearch,这篇文章给讲透了!

于elasticsearch的深度好文。生活中的数据搜索引擎是对数据的检索,所以我们先从生活中的数据说起。我们生活中的数据总体分为两种:结构化数据非结构化数据结构化数据:也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。指具有固定格式或有限长度的数据,如数据库,元数据等。非结构化数据:又可称为全文数据,不定长或无固定格式,不适于由数据库二维表来表现,包括所有格式的办公文档、XML、HTML、Word 文档,邮件,各类报表、.

2021-01-16 18:12:35 562

原创 Netty 系列之 Netty 百万级推送服务设计要点

1. 背景1.1. 话题来源最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题。问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为如下几类:Netty 是否可以做推送服务器?如果使用 Netty 开发推送服务,一个服务器最多可以支撑多少个客户端?使用 Netty 开发推送服务遇到的各种技术问题。由于咨询者众多,关注点也比较集中,我希望通过本文的案例分析和对推送服务设计要点的总结,帮助大家在实际工作中少走弯路。1.2. 推送服

2021-01-15 22:20:22 213

转载 IP 基础知识“全家桶”,45 张图一套带走

前言前段时间,有读者希望我写一篇关于 IP 分类地址、子网划分等的文章,他反馈常常混淆,摸不着头脑。那么,说来就来!而且要盘就盘全一点,顺便挑战下小林的图解功力,所以就来个 IP 基础知识全家桶。吃完这个 IP 基础知识全家桶全家桶,包你撑着肚子喊出:“真香!”不多说,直接上菜,共分为三道菜:首先是前菜 「 IP 基本认识 」其次是主菜 「IP 地址的基础知识」最后是点心 「IP 协议相关技术」正文前菜 —— IP 基本认识IP 在 TCP/IP 参考模型中处于第三层,也就是网络.

2021-01-15 22:15:57 125

原创 深入浅出AQS之共享锁模式

搞清楚AQS独占锁的实现原理之后,再看共享锁的实现原理就会轻松很多。两种锁模式之间很多通用的地方本文只会简单说明一下,就不在赘述了一、执行过程概述获取锁的过程:当线程调用acquireShared()申请获取锁资源时,如果成功,则进入临界区。当获取锁失败时,则创建一个共享类型的节点并进入一个FIFO等待队列,然后被挂起等待唤醒。当队列中的等待线程被唤醒以后就重新尝试获取锁资源,如果成功则唤醒后面还在等待的共享节点并把该唤醒事件传递下去,即会依次唤醒在该节点后面的所有共享节点,然后进入临界区,否则

2021-01-14 19:45:16 129

原创 redis探秘:选择合适的数据结构,减少80%的内存占用,这些点你get到了吗?

redis作为目前最流行的nosql缓存数据库,凭借其优异的性能、丰富的数据结构已成为大部分场景下首选的缓存工具。由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观。那么在一些场景下,通过选用合适的数据结构来存储,可以大幅减少内存的占用,甚至于可以减少80%-99%的内存占用。利用zipList来替代大量的Key-Value先来看一下场景,在Dsp广告系统、海量用户系统经常会碰到这样的需求,要求根据用户的某个唯一标识迅速查到该用户的id。譬如根据mac地址或uuid或手机号的

2021-01-14 19:37:10 138

原创 ReentrantReadWriteLock读写锁详解

一、读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场景,JAVA的并发包提供了读写锁ReentrantReadWriteLock,它表示两个锁,一个是读操作相关的锁,称为共享锁;一个是写相关的锁,称为排他锁,描述如下:线程进入读锁的前提条件:没有其他线程的写锁,没有写请

2021-01-06 18:55:29 102

原创 【译】Java 14 Hotspot 虚拟机垃圾回收调优指南

本文主要包括以下内容:优化目标与策略(Ergonomics)垃圾收集器实现(Garbage Collector Implementation)影响垃圾收集性能的因素总堆(Total Heap)年轻代可用的收集器(Available Collectors)串行收集器(Serial Collector)并行收集器(Parallel Collector)G1收集器(Garbage-First Garbage Collector)Z收集器(The Z Garbage Collector)

2021-01-04 19:03:55 252

原创 为什么说云原生会成为未来企业技术变迁的趋势

云原生是当下的热点话题,但是很多人对云原生有很多误解,特别是传统产业物联网或工控、物联网行业对云原生显得"后知后觉"。与其在这里说是预测,不如说是现在进行时,只是由于传统产业本身的技术包袱和组织个人认识程度差异,目前发展并不见快。目前大部分的系统还是停留在旧年代,只是不到火候,还没到尝鲜和推倒重来的必要。但是,面对未来业务的持续增长和行业竞争,必然要面临一个技术的现代化转型升级,即:使用新技术代替老技术,使用新观念代替老观念的痛苦过程。否则老系统必然会变成企业发展的一个瓶颈,因为基于老.

2020-12-30 12:52:50 139

原创 看懂这篇,才能说了解并发底层技术

零、开局前两天我搞了两个每日一个知识点,对多线程并发的部分知识做了下概括性的总结。但通过小伙伴的反馈是,那玩意写的比较抽象,看的云里雾里晕晕乎乎的。所以又针对多线程底层这一块再重新做下系统性的讲解。有兴趣的朋友可以先看下前两节,可以说是个笼统的概念版。好了,回归正题。在多线程并发的世界里synchronized、volatile、JMM是我们绕不过去的技术坎,而重排序、可见性、内存屏障又有时候搞得你一脸懵逼。有道是知其然知其所以然,了解了底层的原理性问题,不论是日常写BUG还是面试都是必备神器了。

2020-12-29 19:12:24 100

原创 我在项目内使用了设计模式后,同事直呼看不懂

 一切抛开业务的设计,都是扯淡!在项目中有个我们会对多个接口进行多业务逻辑判断,项目开始工期紧,所以先以实现功能为主,最近打算优化一番,一开始的代码是这样的public void checkProjectAdd(List<OrderDetail> list) { if (!CollectionUtils.isEmpty(list)) { orderService.check(list); stockService.check(li

2020-12-29 19:06:10 111

原创 分布式事务概述及大厂通用解决方案

1.0 分布式事务概述 2018-02-05 02:05:26 32,685 161、事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomicity):个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency):事务必须是使数据库从一个一致性

2020-12-29 18:53:51 258

原创 JAVA中 ReentrantReadWriteLock读写锁详系教程,包会

一、读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场景,JAVA的并发包提供了读写锁ReentrantReadWriteLock,它表示两个锁,一个是读操作相关的锁,称为共享锁;一个是写相关的锁,称为排他锁,描述如下:线程进入读锁的前提条件:没有其他线程的写锁,没有写请

2020-12-28 20:05:17 114

原创 分析源码,学会正确使用 Java 线程池

在日常的开发工作当中,线程池往往承载着一个应用中最重要的业务逻辑,因此我们有必要更多地去关注线程池的执行情况,包括异常的处理和分析等。本文主要聚焦在如何正确使用线程池上,以及提供一些实用的建议。文中会稍微涉及到一些线程池实现原理方面的知识,但是不会过多展开。线程池的异常处理UncaughtExceptionHandler我们都知道Runnable接口中的run方法是不允许抛出异常的,因此派生出这个线程的主线程可能无法直接获得该线程在执行过程中的异常信息。如下例: public static v

2020-12-28 19:52:17 94

原创 Java有陷阱,用时需谨慎——慎用入参做返回值

正常情况下,在Java中入参是不建议用做返回值的。除了造成代码不易理解、语义不清等问题外,可能还埋下了陷阱等你入坑。问题背景比如有这么一段代码:@Namedpublic class AService { private SupplyAssignment localSupply = new SupplyAssignment(); @Inject private BService bervice; public List<Supply> calcSupplyA

2020-12-28 19:37:04 91

原创 真实业务 | 高并发场景下锁的使用技巧

高并发场景下锁的使用技巧如何确保一个方法,或者一块代码在高并发情况下,同一时间只能被一个线程执行,单体应用可以使用并发处理相关的 API 进行控制,但单体应用架构演变为分布式微服务架构后,跨进程的实例部署,显然就没办法通过应用层锁的机制来控制并发了。那么锁都有哪些类型,为什么要使用锁,锁的使用场景有哪些?今天我们来聊一聊高并发场景下锁的使用技巧。锁类别  不同的应用场景对锁的要求各不相同,我们先来看下锁都有哪些类别,这些锁之间有什么区别。悲观锁(synchronize)Java 中的重量级锁

2020-12-18 12:30:21 187

原创 95%的人都不知道 MySQL还有索引管理与执行计划

1.1 索引的介绍  索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。  索引的一个主要目的就是加快检索表中数据的方法,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。1.1.1 唯一索引  唯一索引是不允许其中任何两行具有相同索引值的索引。当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中

2020-12-16 17:51:27 84

空空如也

空空如也

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

TA关注的人

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