- 博客(23)
- 收藏
- 关注
原创 计算日期在当月是第几周-【自然周(每月第一个周一为该月第一周)做法以及1号为第一周做法】
Java计算日期在当月是第几周背景Java LocalDate API每月第1个周一为该月第一周的做法每月1号为第一周做法背景公司项目需求是统计周报,一开始我的做法是按每月1号开始为第一周统计周报,比如2020-05-01到2020-05-03属于5月第一周,2020-05-04到2020-05-10为5月第二周。产品小姐姐看了觉得不对,账单周报统计,是以一周7天为维度,如果按照上面的做法,统计出来5月第一周的周报只有3天,4月最后一周只有4天,这种不符合账单统计型产品的需求。后面又拿出支付宝的周
2020-06-11 10:40:08
11067
原创 Zookeeper实现通知式分布式锁及Zookeeper事件监听机制的坑
这里写自定义目录标题用Zookeeper原生API实现分布式锁与Redis分布式锁的对比:Zookeeper监听机制的知识点:zookeeper机制的特点ZooKeeper对Watch提供了什么保障Zookeeper监听事件参考首先,由下面这篇文章代码的示例,编写出Zookeeper分布式锁的基本骨架。用Zookeeper原生API实现分布式锁原文代码链接:https://mp.weixin.qq.com/s/98J7I5RwTXdMGMyPlHV__Q加入Zookeeper依赖<!--
2020-06-02 10:05:48
890
原创 读写锁及锁降级
看完了《Java并发编程的艺术》后,感觉对锁这一快好像有了一个大概念的体系了。但是细节上可能还是有些不清楚,这里对读写锁做一个学习的记录常见的业务场景都是读多写少,对于读写锁来说,其允许多个线程同时进行读操作,单手只能有一个线程进行写操作,且这个写操作不能喝读操作同时进行。写锁的解锁会自己完成其他线程的可见。如果要在Java5前实现这一功能,只能通过synchronized的等待通知机制。比较...
2020-05-04 23:04:22
1068
原创 在刷新微信公众号accessToken中使用读写锁
背景:微信公众号的accessToken是有过期时间的,文档写是2个小时,我们可以通过指定api去刷新accessToken,但是有一点是,如果刷新了accessToken,那么原来的accessToken将会变得不可用,这就可能出现用一个不可用的accessToken来进行请求返回错误。一般的做法是使用Redis作为全局缓存,存入有过期时间的key,然后定时去刷新这个Redis以及key过期...
2020-05-04 22:52:06
710
原创 Java中的常见的锁及其内存语义
为什么会有锁?为什么Java会有锁,这要从Java的内存模型讲起:大家都知道Java是个多线程语言,这句话的意思是一个Java进程可以创建多个线程来执行指令。对于可并发的编程语言,要怎么做到线程之间是如何通信的,以及线程间是如何同步的?在命令式编程中,通信机制一般有两种,共享内存和消息传递共享内存是一种隐式通信,通过访问一个公共的内存区域,来达到线程间数据交互的作用。消息传递是一种显...
2020-05-04 22:46:28
728
原创 FeignClient调用报错405请求方法错误
文章目录背景原因FeignClient调用流程简化后主要流程背景FeignClient和GetMapping组合报错405请求方法错误在编写代码的时候,遇到一个情况,在使用FeignClient调用服务,因为是获得数据的接口,并且参数有很多,所以封装成一个DTO,但是却总是报错,报的还是很奇怪的405,请求方法错误,通过全局异常捕捉时,发现在服务端显示的是调用源POST调用,可是我明明使用...
2020-03-20 01:39:25
8138
6
原创 Nacos服务搭建系列之——(五)搭建Zuul服务
在微服务场景中,很多时候是需要使用网关的。引入依赖这里主要引入3个依赖,zuul依赖,nacos的config依赖以及nacos的服务发现依赖(里面包含Nacos-Client)<!--Zuul依赖--><dependency> <groupId>org.springframework.cloud</groupId> <...
2020-03-02 17:59:05
1537
原创 Nacos服务搭建系列之——(四)Nacos的服务管理-搭建消费者服务
配置依赖同搭建生产者服务一样,将依赖加入,并需要新增添spring-cloud-starter-netflix-ribbon依赖和spring-cloud-starter-openfeign依赖ribbon依赖是为了进行RestTemplate的测试,而openfeign的依赖是进行Feign调用的测试。配置启动类@SpringBootApplication@EnableDi...
2020-03-02 17:56:34
651
原创 Nacos服务搭建系列之——(三)Nacos的服务管理-搭建生产者服务
这里顺便学习了一般项目中的结构来搭建首先创建一个module,作为parent-module,然后删除自动生成的src等目录,留下pom文件作为parent并重写pom修改此pom的打包方式。并且添加Module<modules> <module>nacos-provider-demo</module> ...</modules>...
2020-03-02 17:54:16
692
原创 Nacos服务搭建系列之——(二)Nacos的配置管理-读取Config配置
Nacos的配置管理和服务管理是分开的,就如同Eureka的服务注册和配置中心是分开的一样,只不过Nacos将这两个(类比eureka-server和config-server)放在同一个控制台里面进行管理了。搭建Nacos_Config服务加入依赖:<dependency> <groupId>com.alibaba.cloud</groupId>...
2020-03-02 17:49:56
1539
原创 Nacos服务搭建系列之——(一)Nacos部署手册
在官网GitHub下载release版本安装包(用IDM下载更快)tar解压压缩包,并执行命令bash startup.sh -m standalone随后便可以查看logs文件夹中start.out的输出分析startup.sh这个shell脚本文件,可以明白 “-m”的用法及原因export SERVER="nacos-server"export MODE="cl...
2020-03-02 17:28:46
851
原创 为什么从HttpRequest拿出数据需要重写getInputStream方法
很多文章解释这个问题的是,说是SpringMVC自己用的InputStream没有实现reset()方法,而JDK大部分自带InputStream实现了这个方法,所以可以让InputStream重复读取,但是在笔者仔细了解后,发现实质上不是reset()的问题。
2020-03-01 19:56:26
2255
原创 Zuul服务网关的简单使用与相关知识点分析
Zuul网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求、鉴权、监控、缓存、限流等功能。主流的网关:Zuul、kong(基于Nginx的API gateway)、nginx+lua(是一个高性能的HTTP和反向代理服务器,lua是脚本语言,让Nginx执行Lua脚本,并且高并发、非阻塞的处理各种请求)利用Zuul搭建服务网关:搭建网关服务,引...
2019-08-08 00:18:30
416
原创 MySQL关联子孙查询-MySQL递归函数
场景:根据商品根属性向下拿到从属他的商品表结构:CREATE TABLE `product` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL COMMENT '商品名称', `code` varchar(255) NOT NULL COMMENT '商品编号', `catalog...
2019-08-06 22:21:51
502
原创 ThreadPoolExecutor分析
前言:ThreadPoolExecutor其实是利用其内部类Worker来开拓多线程,每一个Worker就是一个线程,而Worker的run方法,也就是Worker的工作就是就是从队列中拿取线程,并直接执行其run方法,而不是start方法,原因也很简单,worker已经是并行启动了,里面执行的操作是串行才合理首先,看看ThreadPoolExecutor中的一些属性(组件)corePoo...
2019-07-15 15:59:45
141
原创 MyBatis中mapper.xml其属性resultSets的作用及研究
在完成一个需求的时候,意外发现了resultSets这一属性,以前都没有接触过,现在在学习经历写下了做一次总结与分享除了resultType,resultMap做映射外,Mybatis还提供了开放的API来做映射的处理。resultType和resultMap首先来说说MyBatis的resultType和resultMp,这个两个实际上就是对数据库中的列名和我们的Java实体中做了一对...
2019-07-02 11:50:46
13221
5
原创 记一次SQL优化
按照公司需求,优化一些慢服务,其中一个服务仅为SQL查询数据,无任何业务逻辑,所以单纯就SQL优化,写写自己的笔记,如果有好的建议,欢迎讨论首先看看原SQL因为后面都是纯业务判断,不涉及这次优化的内容,所以也不予展示 ,来看看这条SQL,首先bsm.*就不应该写,就算真的要查出全列,也应该将列全部写出,这样方便扩展。紧接着看到这些子查询,如果要优化,肯定是从这里优化下手,我们先不急,看看这...
2019-04-26 16:57:31
226
原创 Spring事件机制
如何在项目启动时初始化一个管理员在我们做初始化管理员的时候,我们是实现了一个Spring事件的监听类AppicationListener,这个接口是基于java.util.EventListene的(继承)这个接口有一个方法,就是处理容器事件的 -> onApplicationEvent(E event),这个E是ApplicationEvent的子类,而当时我们使用的是Spring刷...
2019-03-04 22:04:40
500
原创 SpringMVC和JSON的时间格式
Date类型数据从后台转前台格式问题传输数据时会出现时间是一串时间戳数字的问题,所以需要转换格式如果传输的不是JSON数据对于JSP来说,需要使用JSTL标签库(记得加依赖)&lt;fmt:foematDate: value = "${date}", pattern = "yyyy-MM-dd"/&gt;对于FreeMarker来说,需要用到FreeMarker自己的语法&
2019-03-04 22:02:31
642
原创 SpringMVC入门
回顾之前的JavaWeb的MVC架构在web.xml中配置servlet以及映射路径在servlet类中获取请求参数并调用相应的业务方法最后通过请求转发或者重定向的方式来跳转页面SpringMVC入门SpringMVC的请求分发都是依靠一个Servler,DispatcherServlet–前端控制器开发步骤配置前端控制器:DispatcherServlet配置处理器映射器:...
2019-03-04 22:00:43
348
原创 Mapped Statements collection does not contain value for XXX错误
一个不该犯的错误怎么说呢,这个bug报的实在太降低水平了,一是本就不该犯这个bug,二是这个bug竟然找了这么久。。。。Mapped Statements collection does not contain value for 意思是在映射器语句里面没有包含相应的值,其实就是mapper的xml文件没有被加载,导致找不到。遇到bug,第一步是百度,发现大家报这个bug很多是配置不正确,但是...
2019-03-01 11:32:43
6412
2
原创 SpringMVC的Map共享数据的原理
SpringMVC流程简单来说就是一个请求到达前端控制器,先由处理器映射器处理请求获得chain执行链,这个执行链还包含了拦截器,这个执行链经过处理器适配器拿到合适的处理器适配器,去执行相应的处理器方法,最终返回ModelAndView,接着通过视图解析器获取逻辑视图结合数据渲染为物理视图最终返回给用户前言在参考一个开源项目的时候看到在其代码编写在Controller层使用Map来共享数据...
2019-02-24 23:46:36
961
原创 Nginx认识以及配置
什么是NginxNginx是一个高性能的HTTP和反向代理服务器和负载均衡器,顾名思义nginx常用的功能就是反向代理以及负载均衡。在后台开发中Nginx经常和服务器集群一起使用,用轮询、权重、ip_hash等策略将请求分发给服务器在连接高并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并...
2019-02-18 19:28:54
305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人