- 博客(103)
- 资源 (2)
- 收藏
- 关注
原创 Redis分布式锁问题及解决方案
文章目录实现思路:问题:死锁错位解锁业务并发执行问题实现思路:redis setIfAbsent 加锁逻辑执行完,finally执行remove,释放锁问题:死锁加锁后宕机导致无法释放锁;解决方案: 设置锁过期时间,且需要保证setNx和设置过期时间操作的原子性过执行一个Lua脚本文件来实现RedisConnection命令连用(Boolean)redisTemplate.execute(new RedisCallback<Boolean>() {
2020-07-30 14:39:01
1736
原创 Mac下安装jdk压测工具JMeter
下载安装包https://jmeter.apache.org/download_jmeter.cgi下载tgz包需求JDK8以上版本。安装1、解压2、配置环境变量 vi .bash_profileexport JMETER_HOME= jmeter解压目录export PATH=$JAVA_HOME/bin:$PATH:.:$JMETER_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/too
2020-07-09 11:43:13
537
原创 《java多线程编程实战指南》读书笔记 -- 基本概念
并发:多个线程操作相同资源,保证线程安全,合理使用资源高并发:服务能同时处理多个请求,提高程序性能测试上下文切换工具Lmbench3 测量上下文切换时长vmstat 测量上下文切换次数减少上下文切换无锁并发编程:将数据ID按hash算法取模分段,不同线程处理不同段数据。CAS算法使用最少线程协程:在单线程中实现多任务调度并维持任务间切换避免死锁避免一个线程同时获取多...
2019-12-12 10:00:29
452
原创 策略模式+工厂模式 去除if-else
本文参考链接: https://juejin.im/post/5dad23685188251d2c4ea2b6需求1、多种会员优惠:超级会员折扣8折、普通会员折扣9折、普通用户没有折扣;2、用户付款时,根据用户类型进行打折计算应付金额;3、业务发展,新需求要求专属会员要在店铺下单金额大于30元时享受7折优惠;4、新需求要求如果用户超级会员到期,并到期时间在一周内,对用户的单笔订单按照超级...
2019-11-03 12:49:46
3100
4
原创 SpringBoot + quartz实践
文章目录基础实践定义Schedule定义Job注册Job基础quartz中有几个重要的概念:Schedule: 引用Trigger和JobDetail进行任务调度JobDetail: 包含作业元数据的接口Trigger:触发作业开始执行的接口Job:定义作业真实执行的逻辑的接口要成功进行任务调度,需要执行以下步骤:1)定义、实例化并开启一个Schedule2)创建一个Job的...
2019-09-09 10:16:22
384
原创 悲观锁、乐观锁、CAS中ABA问题
悲观锁对数据库加锁,在sql语句中添加for update,会将查询的数据进行加锁,在事务处理完毕后,其它事务才能对数据进行操作。此方式在高并发场景下影响性能。乐观锁上图方案就是多线程中CAS(Compare And Swap)概念。此方法可能会存在ABA问题,如下图所示:解决方案:1)增加版本号(version),其只能递增,不能递减;只要操作过程中对共享值进行修改,无论业务正常、...
2019-07-10 21:17:50
500
原创 Spring Boot 装配bean
文章目录@ComponentScan@AutowiredBean生命周期使用属性文件@Value@ConfigurationProperties@PropertySource条件转配Bean本篇博客仅记录Spring Boot中一些需要特殊注意的点,更多详细的Bean装配相关内容,可见本人之前博客:Spring高级装配@ComponentScanBoolean lazyInit默认为f...
2019-05-09 13:40:20
1586
原创 Spring Boot 自动配置
SpringBoot自动配置是其亮点之一,自动配置的出现,大大降低了SpringBoot应用的编写难度;同时,消除了冗长的配置内容,让代码结构变得更加清晰。下面,以spring-boot-starter-web为例,看看自动配置内部的一些实现细节。SpringBoot实现自动配置,主要依靠spring-boot-autoconfig这个依赖,我们可以在maven本地仓库中找到它。另外针对web...
2019-05-08 15:17:07
315
原创 Spring MVC 高级技术 - 处理异常和控制器通知
Spring提供多种方法将异常转化为响应:特定的Spring异常会自动映射为指定的HTTP状态码;异常上可以添加@ResponseStatus注解,从而将其映射为某一个状态码;在方法上可以添加ExceptionHandler注解,使其用来处理异常;将异常映射为HTTP状态码Spring异常自动映射Spring异常HTTP状态码BindException400-...
2019-05-08 10:01:13
333
原创 Spring MVC 高级技术 - multipart数据处理
文章目录配置multipart解析器StandardServletMultipartResolverCommonsMultipartResolver处理multipart请求原始byte[]形式MultipartFile形式以part形式接收上传的文件multipart格式数据会将一个表单拆分为多个部分,每个部分对应一个输入域配置multipart解析器Spring内置multipart...
2019-05-06 17:13:56
787
原创 Spring MVC高级技术 - MVC配置替代方案
文章目录MVC配置替代方案自定义DispatcherServlet配置MVC配置替代方案自定义DispatcherServlet配置customizeRegistration(Registration.Dynamic registration):AbstractDispatcherServletInitializer中定义的方法,利用传入的Dynamic可以完成多项任务,Dynamic是S...
2019-05-06 17:13:09
434
原创 python入门学习实践
最近跟着廖雪峰老师的python教程在学习python开发语言,跟着教程,进行了一些自己的实践,代码已经上传到github:https://github.com/yzy199391/python-learn作为python小白,欢迎各路大佬留言交流指教最后,附上廖老师的官方网站地址:https://www.liaoxuefeng.com...
2019-04-29 16:30:04
192
原创 编码格式ASCII、Unicode、UTF-8
ASCII编码一个字节字母A的ASCII编码为十进制的65,二进制的01000001。Unicode编码世界上所有语言都统一到一套编码中,通常为两个字节。字母A的ASCII编码为十进制的65,二进制的00000000 01000001(在ASCII编码基础上,在前面补8位0);汉字中,Unicode编码是十进制的20013,二进制的01001110 00101101。⚠️缺点:文本中...
2019-04-23 18:08:19
2738
原创 Spring Boot 配置
文章目录YAMLSpring Boot 配置文件使用随机数java -jar 命令中指定配置Spring Boot 加载属性顺序(由高到低)eg1:指定配置文件路径eg2:优先级比较实践YAML无法通过@PropertySource注解来加载配置。YAML属性加载到内存中是保存时有序的,若配置文件中的信息需要具备顺序含义时,YAML比Properties文件更具优势。Spring Boot ...
2019-04-15 16:35:04
229
原创 Spring cloud 基础
组件简介spring cloud config:支持使用Git存储配置内容;可实现配置的外部化存储,并支持客户端配置信息刷新、加密/解密配置内容等。spring cloud netflix:核心组件,对多个Neflix OSS开源套件进行整合。1)eureka:包含服务注册中心、服务注册与发现机制的实现。(dubbo也可以选用)2)hystrix:容错管理组件,实现断路器模式。...
2019-04-09 10:34:04
183
原创 mybatis jdbcType与javaBean之间转换处理
文章目录Mapper 文件配置java pojo转换处理类完整的依赖关系如下图:Mapper 文件配置<resultMap id="BaseResultMap" type="com.ximalaya.business.group.checkin.infrastructure.model.CheckinConfig" > <id column="CHECKIN_ID...
2019-03-20 15:22:03
1901
原创 Spring MVC 基础
文章目录跟踪Spring MVC的请求搭建Spring MVC配置DispatcherServlet启动Spring MVC编写Controller重定向表单校验主要组成:调度Servlet处理映射器(handler mapping)控制器视图解析器跟踪Spring MVC的请求请求:Web浏览器中点击链接或提交表单时,请求开始工作。请求使用Spring MVC经历的所有站点:...
2019-03-18 09:31:57
259
原创 科大讯飞语音评测web api调研
文档地址:https://doc.xfyun.cn/rest_api/%E8%AF%AD%E9%9F%B3%E8%AF%84%E6%B5%8B.html评测需要: 一段语音(不超过3分钟) + 试卷(需要评测文本内容)异常情况VLC播放pcm文件命令/Applications/VLC.app/Contents/MacOS/VLC --demux=rawaud --rawa...
2019-03-14 14:24:41
3915
原创 Spring Cloud Stream学习及实践
文章目录基本介绍Springboot中使用引入依赖核心注解@EnableBinding@StreamListener核心概念Binder(绑定器)发布-订阅模式消费组消息分区使用详解开启绑定功能绑定消息通道注入绑定接口注入消息通道消息生产与消费Spring Integration原生支持@StreamListener详解响应式编程消费组和消息分区消息类型MIME类型绑定器详解绑定器SPI多绑定器配...
2019-03-14 14:00:16
4230
1
原创 AbstractAnnotationConfigDispatcherServletInitializer剖析
javax.servlet.ServletContainerInitializer接口的实现类在Servlet3.0环境中,用于配置容器。Spring中提供上述接口的实现类SpringServletContainerInitializer,它反过来会查找实现WebApplicationInitializer的类,将配置的任务交给他们来完成。Spring3.2中引入AbstractAnnotat...
2019-03-06 09:47:42
6065
原创 Spring AOP和AspectJ
文章目录面向切面编程AOP术语通知(Advice)连接点(Join point)切点(Pointcut)切面(Aspect)引入(Introduction)织入(Weaving)Spring对AOP的支持通过切点选择连接点编写切点在切点中选择bean使用注解创建切面处理通知中的参数通过注解引入新功能在XML中声明切面声明前置和后置通知声明环绕通知为通知传递参数通过切面引入新的功能注入AspectJ...
2019-03-05 10:45:12
3247
原创 JAVA中的委托
委托实现基础类public class Event { //要执行方法对象 private Object object; //要执行的方法名 private String methodName; //参数数组 private Object[] params; //参数的参数类型 private Class[] paramType...
2019-03-04 09:24:38
6744
转载 mac idea 控制台mvn命令无效
简单解决一下最近遇到的一个问题。最近在idea for mac的terminal控制台下,无法使用maven命令,也就是输入任何mvn命令出来一个command not found。问题的本质就是mac下没有配置maven的环境变量。简述一下:Mac系统的环境变量,加载顺序为:a. /etc/profileb. /etc/pathsc. ~/.bash_profiled. ~/.b...
2019-03-02 15:12:25
15596
6
原创 Spring高级装配
文章目录profile@ProfileXML profile激活Profile* ConditionalConditionContextAnnotatedTypeMetadata处理自动装配歧义性标示首选Bean(@Primary)限定自动装配的bean面向bean ID的限定符面向特性的的限定符自定义限定符bean的作用域@Scopoe基本使用使用web相关作用域XML中声明作用域代理运行时注入...
2019-02-26 11:33:12
447
原创 Spring bean 装配
文章目录装配 bean1. 自动化装配@Component@ComponentScan@Autowire@Named 和 @Inject2. 通过代码装配BeanXMLjavaConfig@BeanBean注入3. XML装配装配 bean1. 自动化装配@Component告知Spring为被注解的类创建bean> 为bean命名:> + Spring为Bean默认命名为...
2019-02-20 16:48:15
159
转载 深入Java中的位操作
本文转自:公众号程序员DD的推送文章:《深入Java中的位操作》 ,公众号二维码:https://mp.weixin.qq.com/mp/qrcode?scene=10000004&size=102&__biz=MzAxODcyNjEzNQ==&mid=2247486683&idx=1&sn=436b4579f712798882c22a402a74b400...
2019-01-18 11:20:22
278
原创 HttpServletResponse重定向时Cookie“丢失”问题解决
问题描述最近开发遇到一个问题,在用HttpServletResponse的sendRedirect方法做重定向时,创建Cookie并添加到response中,重定向后,在chrome浏览器通过开发者工具无法查看到添加到cookie内容。重定向代码如下:try { Cookie xReferCookie = new Cookie("x-referer", xRefere...
2018-12-30 11:54:28
13030
1
原创 调用api配置微信公众号自定义菜单
文章目录微信官方接口调用1)查询当前存在的自定义菜单2)自定义菜单删除3)自定义菜单创建微信官方接口调用1)查询当前存在的自定义菜单http请求方式:GEThttps://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN正确响应为:注: 此处查询到的信息为通过api创建的菜单,若为后台配置的菜单则无法获取,可通...
2018-12-19 11:44:59
9088
原创 基于openapi3.0的yaml文件生成java代码的一次实践
在github上看了swagger-api项目(https://github.com/swagger-api/swagger-codegen)中的一些文档以及swagger-codegen的使用说明,还是觉得有些麻烦,该项目中有提到使用swagger-codegen-maven-plugin但是看了下给的样例,swagger的yaml文件还是用的几年前更新的老的样例,而使用openapi3.0规范...
2018-11-15 10:15:53
18974
18
原创 设计模式--观察者模式
1、角色说明观察者模式中,主要有两类角色:主题(subject)和观察者(observer)。主题:采集数据,将更新消息推送给订阅该主题的所有观察者;观察者: 订阅了主题之后,可以从主题中接收通知;此模式结构类图如下:2、实例问题java中内置有观察者模式,但是为了更好地理解此模式,我们以《Head First 设计模式》一书中的例子为切入点,自己搭建一套关于天气的观察者模式...
2018-11-07 09:48:50
419
原创 设计模式--策略模式
《Head First 设计模式》中,对于策略模式的描述如下:定义算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。这里,我们以一个例子来加深对策略模式对理解任务描述:将取自一个冒险游戏的一堆杂乱的类与接口,其中包括:游戏角色类、角色可使用的武器行为类;一个角色一次只能使用一把武器,可以更换角色使用对武器。可选角色:King(国王)、Que...
2018-10-25 09:59:48
194
原创 redis学习实践(三)-- 基础数据结构和API
所有内容都总结在如下百度脑图中,方便结构组织:http://naotu.baidu.com/file/5e3945fa5d1809dcfd2c82103a693847?token=35a15faf7778f355脑图预览图如下:
2018-09-19 10:15:27
202
转载 数据结构以及算法题
转自:http://hi.baidu.com/geogre_jsj/blog/item/e4b98fd2aab5aa3611df9b92.html由于这些题,实在太火了。所以,应广大网友建议要求,在此把之前已整理公布的前80题,现在,一次性分享出来。此也算是前80题第一次集体亮相。此些题,已有上万人,看到或见识到,若私自据为己有,必定为有知之人识破,付出代价。所以,作者声明:本
2018-09-19 09:04:12
2802
原创 redis学习实践(一)--mac下redis安装和启动
本次安装启动实践是在mac环境中进行安装下载访问官网下的Download标签页,获取最新的stable版本,此处下载版本为4.0.11版本。下载完后为redis-4.0.11.tar.gz压缩包,将其解压到/User/local文件夹下编译打开终端,进入redis解压路径cd /usr/local/redis-4.0.11/执行编译测试su...
2018-09-17 10:01:49
247
原创 redis学习笔记(二)--常见应用场景
我们通常将redis认为就是一个缓存数据库,这种看法是不对的,缓存是redis的一个极其重要的功能点,但是其不仅能用于缓存场景。1、缓存系统 如上图示,此处redis作为缓存系统工作,对于数据变化频率低,查询...
2018-09-14 09:34:09
207
原创 百度搜索高级搜索指令和参数
最近听了一节关于搜索网络资源的课程,感觉打开了一扇新世界的大门,第一次了解到了关于百度搜索的一些骚操作(可能是敝人太过孤陋寡闻,让各位见笑了~),在这里记录一下一些常用的搜索指令和参数,对这方面没有过了解的小伙伴可以涨波姿势。intitle搜索范围限定在网页标题用法样例: intitle:mybatis教程 搜索标题中带有mybatis教程关键字的答案。注意:冒号与内容...
2018-09-07 14:38:56
11338
原创 SpringCloud学习实践(一)--服务注册与发现
基本概念前端服务对后端服务进行聚合与裁剪后端通用服务业务核心服务服务网关路由、负载均衡、集群容错、限流、监控日志 …实践操作注册中心选用Eureka IDE使用idea 2018.1搭建Eureka Service1、Spring官方工具搭建项目基本模型 ...
2018-09-04 11:56:16
213
原创 编程实践--现有10元,每瓶饮料2元;2个空瓶换一瓶饮料;4个瓶盖换一瓶饮料;总共能喝多少瓶?
编程解决实际问题,关于此问题若有更好的算法思路,欢迎提出,共同讨论!import lombok.Data;/** * @author yanzy * @date 2018/9/3 下午3:16 * @description 现有10元,每瓶饮料2元;2个空瓶换一瓶饮料;4个瓶盖换一瓶饮料;总共能喝多少瓶? */@Datapublic class BottleCapExample...
2018-09-03 15:49:02
4290
windows server 2008 r2 bug修复补丁
2018-06-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人