Java笔记
文章平均质量分 91
RayeWang
Java&Android工程师,个人blog主页,http://www.raye.wang
展开
-
KafkaStream Local Store和Global Store区别和用法
使用kafkaStream进行流式计算时,如果需要对数据进行状态处理,那么常用的会遇到kafkaStream的store,而store也有Local Store以及Global Store,当然也可以使用其他方案的来进行状态保存,文本主要理清楚kafkaStream中的Local Store以及Global Store之间的区别和用法,以及什么时候选择何种store和当store无法满足我们需求时,应该如何使用其他方案来进行数据的状态保存。原创 2024-06-05 11:02:33 · 563 阅读 · 0 评论 -
Springcloud+Seata+nacos 分布式事务项目搭建 AT模式
前言本文要求对Springcloud有一定了解,对分布式事务本身有一定认知,如果不了解微服务,建议先看看Spring Cloud的基本认识和使用Spring Cloud的基本教程,再回头学习本文为什么会出现分布式事务开发过程中,随着项目模块的增加以及分库分表的出现,传统事务已经无法满足业务需求,如分库,由于有多个数据源,而数据库事务又是基于数据库层,所以如果只用数据库原生事务,会导致数据库A成功提交,数据库B回滚,导致数据不一致,又比如多模块下,常见的订单流程,订单服务成功提交订单,调用库存服务扣减库原创 2021-02-26 10:47:42 · 1108 阅读 · 0 评论 -
Springboot Druid 自定义加密数据库密码
前言开发过程中,配置的数据库密码通常是明文形式,这样首先第一个安全性不好(相对来说),不符合一个开发规范(如项目中不能出现明文账号密码),其实就是当出现特殊需求时,比如要对非运维人员开方服务器部分权限,但是又涉及项目部署的目录时,容易泄漏数据库密码,虽然一般生产环境中,数据库往往放入内网,访问只能通过内网访问,但是不管怎么说账号密码直接让人知道总归不好,甚至有些项目需要部署到客户环境中,但是可能共用一个公共数据库(数据库只向指定服务器开放外网端口或组建内网环境),这样的情况下,如果数据库密码再以明文形式存原创 2020-12-21 16:25:45 · 1779 阅读 · 0 评论 -
Java 浮点型(Double,Float)精度丢失解决方案
前言最近公司某小伙子做了一个商城的微信支付相关的接口,其中包含退款,在测试过程中发现部分单据没有退款,微信支付提示退款金额跟支付金额不匹配(大于支付金额),检查数据库和调试过程中,发现商品的单价和手工计算出来的总价是跟订单金额匹配的,实在无法确认问题原因最终bug转向我来排查,于是有了此文排查由于手工计算出来的金额跟实际支付的金额是能匹配上的,所以一开始我以为是订单已经进行了部分退款,再次全部退款的话肯定会被微信阻止,因为这样的话就会出现超退。第一步:是否已经部分退款去微信支付平台排查是否有退款,原创 2020-07-11 16:01:17 · 450 阅读 · 0 评论 -
基于IDEA热部署更新服务器Tomcat类,服务器Tomcat热更新
前言在开发过程中,如果我们是使用的IDEA,就会知道IDEA有一个热更新的功能,何为热更新?就是在不重启Tomcat的情况下让服务器中的代码变更为最新的。这样既能快速的更新代码,又不用担心Tomcat重启session过期的问题,如同更新jsp一般的方便,当然IDEA里面的热更新还是没有更新jsp那么方便,具体限制本文后面有提(只是我目前了解到的限制)。如果说本地更新还算快捷,那么服务器更新就更...原创 2019-12-12 17:34:49 · 1433 阅读 · 0 评论 -
Rabbitmq延迟队列实现定时任务
场景开发中经常需要用到定时任务,对于商城来说,定时任务尤其多,比如优惠券定时过期、订单定时关闭、微信支付2小时未支付关闭订单等等,都需要用到定时任务,但是定时任务本身有一个问题,一般来说我们都是通过定时轮询查询数据库来判断是否有任务需要执行,也就是说不管怎么样,我们需要先查询数据库,而且有些任务对时间准确要求比较高的,需要每秒查询一次,对于系统小倒是无所谓,如果系统本身就大而且数据也多的情况下...原创 2018-05-22 10:00:41 · 35870 阅读 · 7 评论 -
ElasticSearch优化会员列表搜索
ElasticSearch简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便,维基百科、Stack Overflow、G...原创 2018-06-23 13:53:48 · 311 阅读 · 0 评论 -
通过Maven profile实现环境切换,快速部署到正式环境
前言在开发工作中存在多个环境:开发环境、测试环境、正式环境(生产环境),而每个环境的MySQL、Redis、Rabbitmq、ElasticSearch等配置各不相同,所以每次开发完成部署或者更新都需要手动改变配置文件,尤其是当使用jenkins等相关自动化编译部署的工具的时候,必须要先修改配置文件再上传代码,否则更新就容易出错。解决这个问题常用的方法有:一是通过Git分支,不同环境不同分支,...原创 2018-06-27 09:22:25 · 509 阅读 · 0 评论 -
记一次ajax的JSESSIONID 变化解决、非跨域变化
前言某一天测试提了一个bug,系统进入到某个页面中后,出现登录失效,不管怎么样,只要进入这个页面再点击其他链接就会去到登录页面,测试环境没有问题。开始解决第一步:怀疑代码问题因为测试环境没有任何问题,所以怀疑是代码本身的问题,于是在本地测试,发现本地没有问题,于是重新打包部署到正式服务器测试,发现还是出现异常。第二步:确认为何会登录失效因为代码和测试环境与本地都...原创 2018-07-07 14:34:48 · 4100 阅读 · 0 评论 -
SpringMVC,SpringBoot快速验证参数是否完整 基于@Valid注解
前言在接口开发中,经常是需要对传入参数完整性进行验证的,或者对手机号格式进行验证等,而一般不了解@Valid注解之前,都是通过自己封装方法来验证,都是一堆if else集合,这样判断对于代码结构很不友好,开发效率也不高,使用@Valid注解可以快速的对参数进行验证,并且可以通过抓取全局异常,从而实现统一返回引用@Valid是使用hibernate validation的时候使用,其中java...原创 2019-05-08 09:22:46 · 1662 阅读 · 0 评论 -
Springboot Druid 使用Slf4j输出可执行SQL
前言在开发中,为了数据安全,所有SQL语句肯定是用占位符的,但是在实际开发中,为了方便追踪问题,经常需要查看具体执行的SQL语句内容,而用了占位符之后,每次真实执行的语句只能靠自己根据参数拼接出来,耗时耗力,所以需要一个方法输出每次执行的SQL语句,并且还是有参数的(替换了占位符),而Druid就支持此功能(Druid的主要功能可不是这个),所以此文主要讲Springboot环境下使用Druid...原创 2019-06-29 09:44:20 · 8909 阅读 · 7 评论 -
MySQL读写分离基于Mycat实现
为什么需要读写分离至于为什么需要读写分离,在我之前的文章有介绍过了,相信看到这篇文章的人也知道为什么需要读写分离了,当然如果你也需要了解一下,那么欢迎查看我之前的文章SpringBoot Mybatis 读写分离配置,顺便也可以了解一下怎么通过代码进行读写分离的MySQL主从复制主从复制是读写分离的关键,不管通过什么方式进行读写分离,前提就是MySQL有主从复制,当前双机主从也行,但是关键的关键,是原创 2018-03-16 09:15:23 · 819 阅读 · 1 评论 -
Java 线程学习笔记
java 线程学习笔记一1.线程的实现方法a.继承Thread类 (创建对象new MyThread();)b.实现Runnable接口(创建对象 new Thread(new MyRunnable());)2.开始执行线程执行Thread.start()的方法能运行线程,线程从run方法开始执行,如同main方法一样,执行完成线程就停止运行3.终止线程运行由于线程的生原创 2014-10-23 16:33:19 · 573 阅读 · 0 评论 -
基于maven的SpringMVC,Spring,MyBatis的全注解配置
首先创建maven项目1.maven添加各种依赖包 c3p0 c3p0 0.9.1.2 org.mybatis mybatis-spring 1.2.2 org.mybatis mybatis 3.2.2 org.springframework spring-原创 2015-04-17 11:29:33 · 4065 阅读 · 1 评论 -
Swagger环境搭建之非依赖代码法
前言Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。好吧,以上是官方的说法,我直接复制的,在我看来swagger就是一个接口文档管理器,以前我们写接原创 2016-10-08 10:04:47 · 6630 阅读 · 9 评论 -
Spring boot集成RabbitMQ
RabbitMQ简介RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是原创 2017-01-12 16:04:08 · 5314 阅读 · 0 评论 -
Spring boot 集成Dubbox
前言因为工作原因,需要在项目中集成dubbo,所以去查询dubbo相关文档,发现dubbo目前已经不更新了,所以把目光投向了dubbox,dubbox是当当网基于dubbo二次开发的一个项目,dubbox,因为公司项目中一个是基于spring mvc 3.0的,一个是基于spring boot的,而spring boot相对来说文档少一点,所以此文记录下spring boot下如何继承dubbox一原创 2017-05-26 13:51:43 · 2818 阅读 · 2 评论 -
简易的后台管理权限设计
前言因为想做一个快速的后台开发模板框架(方便以后直接开发功能而不用纠结环境和页面框架搭建的选择),当时在权限控制方面纠结于spring security和shiro,但是由于对这2个框架理解都不深,只是停留在基础的使用上面,而且一般的后台管理也用不了那么多的功能,所以思前想后还是决定自己做一套权限系统设计,第一方便扩展,第二自己做的也更熟悉,更方便做特定功能的定制。看本文之前可以先看看我做的简易开发原创 2017-04-26 13:42:39 · 20639 阅读 · 0 评论 -
Java配置maven+jenkins+git(svn)+tomcat自动编译和部署(持续集成)
提交代码到版本控制器master分支,Jenkins自动编译打包并部署到Tomcat原创 2017-05-20 15:13:14 · 4584 阅读 · 1 评论 -
Spring Cloud的基本认识和使用Spring Cloud的基本教程
认识Spring CloudSpring Cloud简单来说就是一个微服务相关的框架,至于什么是微服务,简单来说就是一个整体项目由多个单独运行的小项目构成,每个小项目负责一个或多个功能,每个小项目有1个或者1个以上运行实例,项目之间可以相互调用。如果有接触Dubbo,那么就可以很容易理解,Dubbo是一个提供不同项目相互调用的框架,同时Dubbo需要依赖于Zookeeper,所以说Spring Cl原创 2017-06-27 09:54:50 · 10068 阅读 · 2 评论 -
Springboot Mybatis MySQL读写分离及事物配置
为什么需要读写分离当项目越来越大和并发越来大的情况下,单个数据库服务器的压力肯定也是越来越大,最终演变成数据库成为性能的瓶颈,而且当数据越来越多时,查询也更加耗费时间,当然数据库数据过大时,可以采用数据库分库分表,同时数据库压力过大时,也可以采用Redis等缓存技术来降低压力,但是任何一种技术都不是万金油,很多时候都是通过多种技术搭配使用,而本文主要就是介绍通过读写分离来加快数据库读取速度原创 2018-02-05 09:17:12 · 6211 阅读 · 3 评论 -
DWR中获取Session,Request,Response等信息
在DWR中,因为访问的是普通的java类而不是Servlet,所以想要访问Session看起来就非常困难,不过DWR貌似早就想到了这一点,所以要访问HttpServletRequest,HttpServletResponse,HttpSession,ServletContext,ServletConfig. 等对象时,只需要在方法中加入此参数,而在调用时选择忽略,因为这个参数是DWR自动填充的,在原创 2013-10-11 10:13:16 · 861 阅读 · 0 评论