java
文章平均质量分 95
梅川酷紫
这个作者很懒,什么都没留下…
展开
-
JUC并发 满满干货
前言:在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的。JUC就是java.util .concurrent工具包的简称。这是一个处理线程的工具包,JDK 1.5开始出现的。下面一起来看看它怎么使用。欢迎大家关注我的公众号 javawebkf本文转自https://www.jianshu.com/p/1f19835e05c0作者:贪挽懒月一、volatile关键字与内存可见性1、内存可见性:先来看看下面的一段代码:public class TestVolatile {转载 2021-03-10 15:17:28 · 332 阅读 · 0 评论 -
REDIS缓存穿透、击穿、雪崩 原因及解决方案
一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。为了克服上述的问题,转载 2021-02-22 14:22:57 · 882 阅读 · 0 评论 -
MyBatis-Plus 2.x版本 乐观锁采坑记
主要适用场景当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:取出记录时,获取当前version更新时,带上这个version执行更新时, set version = yourVersion+1 where version = yourVersion如果version不对,就更新失败乐观锁配置需要2步 记得两步1、插件配置spring xml<bean class="com.baomidou.mybatisplus.plugins.OptimisticLocke原创 2020-12-04 17:24:37 · 1109 阅读 · 0 评论 -
ZooKeeper实现分布式锁实现方案
ZooKeeper实现分布式锁的实现方案zookeeper客户端选型原生zookeeper客户端,有watcher一次性、无超时重连机制等一系列问题ZkClient,解决了原生客户端一些问题,一些存量老系统中还在使用curator,提供了各种应用场景(封装了分布式锁,计数器等),新项目首选分布式锁使用场景在单体项目中jvm中的锁即可完成需要,但是微服务、分布式环境下,同一个服务可能部署在多台服务器上,多个jvm之间无法通过常用的jvm锁来完成同步操作,需要借用分布式锁来完成上锁、释放锁。例如原创 2020-06-17 10:10:50 · 5950 阅读 · 0 评论 -
干掉 Date,Java8 LocalDate 真香
干掉 Date,Java8 LocalDate 真香简介 伴随 lambda表达式、streams 以及一系列小优化,Java 8 推出了全新的日期时间API。Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。 全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、 长短(duration)、日期、时间、时区和周期。 同时继原创 2020-06-15 15:49:18 · 6731 阅读 · 0 评论 -
六种常见系统架构 —— 进阶篇
六种常见系统架构 —— 进阶篇常见的几种系统架构设计,接下来讲后面三个:1、单库单应用架构:最简单的,可能大家都见过2、内容分发架构:目前用的比较多3、读写分离架构:对于大并发的查询、业务4、微服务架构:适用于复杂的业务模式的拆解5、多级缓存架构:可以把缓存玩的很好6、分库分表架构:解决单及数据库瓶颈四、微服务架构上面的模式看似不错,解决了性能问题,我可以不用鲁肃街头了、老婆还是我的,哈哈,但是软件系统天生的复杂性决定了,出了性能,还有其他诸如高可用、健壮性等大量问题等待我们去解决,在加上原创 2020-06-04 15:58:51 · 13930 阅读 · 3 评论 -
六种常见系统架构 —— 基础篇
六种常见系统架构 —— 基础篇常见的几种系统架构设计,本文先讲前三个:1. 单库单应用架构:最简单的,可能大家都见过2. 内容分发架构:目前用的比较多3. 读写分离架构:对于大并发的查询、业务4. 微服务架构:适用于复杂的业务模式的拆解5. 多级缓存架构:可以把缓存玩的很好6. 分库分表架构:解决单及数据库瓶颈一、单库单应用架构这是最简单的一种设计模式,我们的大部分本科毕业设计、一些小的应用,基本上都是这种模式,这种模式的一般设计见下图:如上图所示,这种模式一般只有一个数据库,一个业务应原创 2020-06-04 15:50:35 · 32898 阅读 · 4 评论 -
RPC(Remote Procedure Call)框架详解
RPC(Remote Procedure Call)框架RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有:应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。通信框架转载 2020-06-01 13:33:45 · 8788 阅读 · 0 评论 -
RabbitMQ 的三种类型的交换器
RabbitMQ 的三种类型的交换器RabbitMQ 使用 Exchange(交换机)和 Queue(队列)来实现消息队列。在 RabbitMQ 中一共有三种交换机类型,每一种交换机类型都有很鲜明的特征。基于这三种交换机类型,OpenStack 完成两种 RPC 的调用方式。首先简单介绍三种交换机。①广播式交换器类型(Fanout)该类交换器不分析所接收到消息中的 Routing Key,默认将消息转发到所有与该交换器绑定的队列中去。②直接式交换器类型(Direct)该类交换器需要精确匹配原创 2020-05-29 17:40:30 · 8327 阅读 · 0 评论 -
各种面试题及技巧 -- JAVA Web
java web开发面试题汇总java基础及java后台面试题汇总链接: 各种面试题及技巧 – JAVA后台本文总结主要是偏前端。1、JavaScript 面试题源码链接:https://github.com/MaximAbramchuck/awesome-interview-questions2、jquery相关面试题源码链接:https://github.com/MaximAb...原创 2019-12-11 13:59:07 · 6265 阅读 · 0 评论 -
各种面试题及技巧 -- JAVA后台
java 后台相关面试题1、java基础源码链接:https://github.com/MaximAbramchuck/awesome-interview-questions2、设计模式源码链接:https://github.com/MaximAbramchuck/awesome-interview-questions3、数据库语言SQL源码链接:https://github.c...原创 2019-12-11 11:35:15 · 6346 阅读 · 0 评论 -
HttpClient 通过资源URL下载资源
HttpClient 通过资源URL下载资源使用富文本编辑器写文章什么的,从第三方拷贝过来的图文,里面的资源内容都是第三方的,如果第三方删除该资源,导致该文章也无法访问,故需要把文章中的第三方资源通过http下载到本地服务器,永久保存。用到了以下三种方法:1、纯IO写文件/** * 根据url下载文件,保存到filepath中 * @param url * @param filepa...原创 2019-12-05 16:13:04 · 7779 阅读 · 0 评论 -
从html源码中获取图片链接地址和视频链接地址
从HTML源码获取资源地址1、img标签截取正则表达式String PICTURE_REGEX = "<img\\b[^<>]*?\\bsrc[\\s\\t\\r\\n]*=[\\s\\t\\r\\n]*[\"\"']?[\\s\\t\\r\\n]*(?<imgUrl>[^\\s\\t\\r\\n\"\"'<>]*)[^<>]*?/?[\...原创 2019-12-05 15:41:17 · 11296 阅读 · 0 评论 -
仿微信时间转换工具类,昨天、周几等
仿微信时间转换工具类,昨天、周几等格式要求如下:代码格式要求如下:15:55昨天 15:55星期三 15:55星期二 15:55星期一 15:55星期日 15:55星期六 15:552019-01-04 15:55:362019-01-03 15:55:362019-01-02 15:55:36代码package com.skychion;import java.t...原创 2019-01-11 16:14:16 · 6913 阅读 · 0 评论 -
@RequestMapping 使用@PathVariable 从URI中获取参数
@RequestMapping 使用@PathVariable 从URI中获取参数URI中的请求参数定义URL变量规则获取URI变量定义多个URL变量匹配正则表达式URI中的请求参数在Web应用中URL通常不是一成不变的,例如微博两个不同用户的个人主页对应两个不同的URL:http://weibo.com/user1,http://weibo.com/user2 。我们不能对于每一个用户都编写...原创 2018-12-05 12:23:40 · 10743 阅读 · 0 评论 -
利用tomcat 自带功能实现文件下载
1、在tomcat 安装目录\conf\Catalina\localhost下建立任意文件名xml文件,比如:download.xml,内容如下:<?xml version="1.0" encoding="UTF-8"?><Context reloadable="true" docBase="D://download" crossContext="true&qu原创 2018-08-21 14:12:40 · 14408 阅读 · 2 评论 -
JavaBean对象转Map对象
/** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map map, Class beanClass) throws Exception { if (map == null) return转载 2018-01-11 10:52:26 · 10506 阅读 · 0 评论