java
文章平均质量分 50
常用java技术以及思想。
甜甜掉在星星上
这个作者很懒,什么都没留下…
展开
-
读取yml配置文件以及工具类静态方法获取配置文件配置信息
获取阿里文件上传配置信息为例配置文件配置好 oss: access-key-id: xxxxx accesskey-secret: xxxxxx bucket-name: xxxx endpoint: https://oss-cn-shenzhen.aliyuncs.com使用配置类读取配置文件信息/** * @ClassName: AliOssProperties * @Description: oss配置文件类 * @author: ruyi原创 2022-04-06 17:35:27 · 2256 阅读 · 0 评论 -
【计算两点经纬度距离】
知道两个地方的经纬度,计算两点的距离/** * @ClassName: CoordinateUtils * @Description: 计算两点经纬度距离 * @author: ruyi * @date: 2022/1/6 19:52 */public class CoordinateUtils { /** * 6378.137为地球半径(单位:千米) */ private static final double EARTH_RADIUS = 6378.13原创 2022-01-06 19:57:37 · 339 阅读 · 0 评论 -
随机获取集合中n个元素
需求:每次请求接口要求返回数据是随机不重复的n条数据思路:确定好每次随机取几条数据n,当n>=集合长度时就直接返回集合当n<集合长度时取集合长度的随机数,每次以集合长度的随机数为key,集合的第集合长度的随机数元素为value装入map中,每次循环就去判断map是否包含当前集合长度的随机数key,不包含就进行put操作。实现: /** * 从集合中随机取出N个不重复的元素 * @param list 需要被取出数据的集合 * @param n原创 2021-12-12 19:59:20 · 1027 阅读 · 2 评论 -
使用拦截器和Aop在控制台 日志打印请求参数和请求路径等信息
一、使用拦截器在控制台日志打印请求参数和请求路径等信息public class GlobalRequestInterceptor implements HandlerInterceptor { private static final Logger log = LoggerFactory.getLogger(GlobalRequestInterceptor.class); public GlobalRequestInterceptor() { } public bool原创 2021-06-04 09:17:15 · 1133 阅读 · 0 评论 -
在JAVA中像数学正常除法计算保留小数点
在JAVA中"/“是取整,”%"是取余,那要是想算类似x÷y=0.z怎么算?方法一:DecimalFormat/** * 除法运算,保留小数 * @param a 被除数 * @param b 除数 * @return 商 */ public static Double txDouble(int a,int b) { //设置保留位数 DecimalFormat df=new DecimalFormat("0.00"); e.setAreaRatio(Doub原创 2021-04-27 21:34:37 · 698 阅读 · 0 评论 -
已解决:connection holder is null问题。
错误信息Caused by: java.sql.SQLException: connection holder is nullat com.alibaba.druid.pool.DruidPooledConnection.checkState(DruidPooledConnection.java:1085)at com.alibaba.druid.pool.DruidPooledConnection.getMetaData(DruidPooledConnection.java:825)at org.原创 2021-04-21 20:55:20 · 19607 阅读 · 1 评论 -
5步教你将项目工程打到本地maven仓库去方便其他项目引用
1、首先把项目打成jar包,在target下面看见说明打包成功跳过测试打包命令:mvn package -Dmaven.test.skip=true2、然后windows+r 输入cmd回车 唤起命令提示符窗口3、准备命令:mvn install:install-file -Dfile=jar路径 -DgroupId=待填 -DartifactId=待填 -Dversion=版本号 -Dpackaging=jar待填项与项目pom文件的相对应mvn install:instal原创 2021-03-08 23:28:20 · 1829 阅读 · 5 评论 -
Environment上下文获取类,判断是正式环境还是测试环境
/** * @author : wangyejian * @Description: spring environment上下文获取工具类 **/@Slf4j@Component@Lazy(false)public class EnvironmentHelper implements EnvironmentAware { private Environment environment; //商用环境 public static final String PROD = "原创 2021-03-06 16:02:11 · 764 阅读 · 2 评论 -
一个集合长度超过一百每次只能请求集合的100条数据
问题引出:在做京东商品图片同步时,每次最多通过100个商品skuId去拉取商品的图片。 public static void main(String[] args) { //模拟商品skuid ArrayList<Long> skuIds = new ArrayList<>(); for (int i = 0; i < 203; i++) { skuIds.add((long) i); }原创 2021-01-19 20:48:52 · 769 阅读 · 2 评论 -
接口需要让一个参数 可以传可不传 解决方案
在项目中经常遇见有的参数 有时候需要有的时候不需要单纯使用@RequestParam(value="id") Long pid的时候 当前端没有传pid时那么就会出现解析问题,解析不到pid解决办法:加上required =false 并且defaultValue 还可以设置默认值 这样前端不传值也不会解析错误了@RequestParam(value="id",required = false, defaultValue = "0") Long pid...原创 2021-01-14 18:02:50 · 5897 阅读 · 0 评论 -
已解决:自定义全局序列化以及配置文件不生效问题
前段时间 项目配置全局序列化,但是线上又出bug了,原因是全局序列化未生效。检查很久发现是配置WebMvcConfigurationSupport所以将全局序列化的配置文件移动到WebMvcConfig 配置了WebMvcConfigurationSupport的类中为什么会这样呢 请看 继承WebMvcConfigurationSupport类是会导致自动配置失效的原因旧的配置文件/** * Jackson配置类 * 因为配置了WebMvcConfigurationSupport 导致原创 2021-01-08 23:53:45 · 1655 阅读 · 0 评论 -
继承WebMvcConfigurationSupport类是会导致自动配置失效的原因
网上有很多文章说从spring boot2.0之后在构造spring配置文件时建议推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport ,经测试实现WebMvcConfigurer是没问题,但继承WebMvcConfigurationSupport类是会导致自动配置失效的。继承WebMvcConfigurationSupport类是会导致自动配置失效的原因在spring boot的自定义配置类继承 WebMvcConfigurationSuppor原创 2021-01-08 23:48:35 · 1432 阅读 · 0 评论 -
自定义全局序列化将BigDecimal类型序列化为String类型,以及注解实现BigDecimal类型序列化为String类型
解决方式一:自定义全局序列化在项目上线以后商品购买出现故障,原因是价格不对 30.495,但是数据库是30.50。定义问题为BigDecimal失去精度将BigDecimal类型的数据序列化成String类型传给前端解决问题。前端取值let 或者var 不是强类型。一、自定义序列化类继承StdSerializer类重新serialize方法public class BigDecimalStringSerializer extends StdSerializer<BigDecimal>原创 2021-01-06 01:48:55 · 6251 阅读 · 0 评论 -
接口还没有使用接口冥等性?一文让你知道什么是接口冥等性以及如何解决接口冥等性
问题引出:系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,3. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题等等很多重要的情况这就需要幂等的特性来支持。解决方案:查询操作:查询一次和查询多次,在数据不变的情况下,查询结果是一样的。select是天然的幂等操作;删除操作:删除操作也是幂等的,删除一次和多次删除都是把数据删除。(注原创 2020-12-14 01:05:56 · 733 阅读 · 0 评论 -
解决的跨域--双重head头(开发环境和部署到测试环境都做了跨域从而产生双重header头)
跨域是前后端分离必须要解决的问题当我们在开发环境加上一段代码 解决跨域问题/** * 允许跨域调用的过滤器 */ @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfig.原创 2020-11-30 11:52:43 · 1151 阅读 · 0 评论 -
SpringBoot单体项目集成RabbitMQ发送消息
引入依赖 <!--RabbitMQ依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>yml文件配置MQ的相关配置server: .原创 2020-11-24 18:04:08 · 1845 阅读 · 0 评论 -
并发编程--常用方法以及CompletableFuture
常用方法声明一个ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();ExecutorService方式:execute方法 new Runnable() 这样可以异步的执行Runnable里面的方法。//异步方式一 @Override public void get1() { System.out.println("异步1"); newCachedThre原创 2020-11-23 11:47:10 · 341 阅读 · 0 评论 -
nginx部署Springboot加Vue和普通css、js、html技术栈的项目,linux部署前后端分离项目
后台运行XXX-1.0.0.jar 并将日志写到output.log 中nohup java -jar XXX-1.0.0.jar 2>&1 >output.log &原创 2020-11-22 15:40:03 · 345 阅读 · 0 评论 -
Error:java: Compilation failed: internal java compiler error 解决办法
Error:java: Compilation failed: internal java compiler error 解决办法原创 2020-11-02 10:13:45 · 96 阅读 · 0 评论 -
session和token的区别
为什么要有session的出现?答:是由于网络中http协议造成的,因为http本身是无状态协议,这样,无法确定你的本次请求和上次请求是不是你发送的。如果要进行类似论坛登陆相关的操作,就实现不了了。session生成方式?答:浏览器第一次访问服务器,服务器会创建一个session,然后同时为该session生成一个唯一的会话的key,也就是sessionid,然后,将sessionid及对应的session分别作为key和value保存到缓存中,也可以持久化到数据库中,然后服务器再把sessi..原创 2020-10-10 00:02:25 · 413 阅读 · 0 评论 -
使用docker安装fastdfs
使用docker安装fastdfsyum install docker 安装docker环境docker version 查看docker版本systemctl start docker 启动docker安装fastdfsdocker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=47.95.234.255 -e WEB_PORT=80 -v ${HOME}/fastdfs:/var/loca原创 2020-08-19 23:43:37 · 127 阅读 · 0 评论 -
linux安装mysql(rpm)
CentOS7下通过rpm安装MySQL5.5.541.查看是否安装过MySQL(mariadb版本,如果安装过,先卸载,再安装)命令:rpm –qa | grep -i mariadb -i 忽略大小写2.卸载MySQL; --nodeps 排除依赖,否则别的软件依赖mysql,无法删除命令:rpm -e --nodeps mariadb-libs3.安装MySQL客户端和服务端拷贝到usr/local/mysql文件下(在哪都可以)MySQL-server-5.5.5原创 2020-11-21 15:33:49 · 131 阅读 · 0 评论 -
创建支付订单调用三方支付(支付宝支付)
创建一个表保存店铺的支付宝信息:店铺的私钥,appid,支付宝的公钥,店铺名等其他需要的字段交换支付宝的公钥如果使用了内网穿透工具,要记住去官网该自己的ip和端口号,不然异步回调找不到路径一、准备配置类 在支付成功以后进行回调package cn.itsource.wyj.utils;public class AlipayConfig { //异步回调地址 自己项目地址ip+控制成的异步回掉路径 public static String NOTIFY_URL = "htt原创 2020-07-16 00:58:05 · 1663 阅读 · 2 评论 -
用户注册(图片验证码实现,配置文件取值新方式,类名.字段名)
如何解决redis的key并且不能覆盖其他页面的redis前端使用UUID生成,存到sessionStorage,然后注册传到后端后台控制层调用服务层处理图片验证码获取图片验证码请求服务层实现方法,实现逻辑判断key使用uuid生成图片验证码把验证码存到redis,可以使用前台的传过来的key1集成feign,开启feign,开启熔断器2在redis加一个setex方法设置过期时间,3添加到feign,托低方法4过期时间配置在yml里面5取值新方式:把配置属性用对象接收,把配置读到对.原创 2020-07-06 13:01:21 · 290 阅读 · 0 评论 -
ElasticSearch搜不出来数据原因以及使用RabbitMQ出现问题和SpringBoot单体项目集成RabbitMQ
ElasticSearch搜不出来 原因:没有上线分词器的问题,搜索的单词没有被分词请求报错业务逻辑有问题,打断点跟踪。RabbitMQ出现问题中文用户名erlang环境安装出问题SpringBoot集成RabbitMQ导包-》配置yml连接参数对RabbitMQ作配置...原创 2020-07-06 00:31:51 · 506 阅读 · 0 评论 -
课程上线并保存到ElasticSearch里面,课程资源下线把数据从ElasticSearch中删除
课程上线与下线课程上线:发起上线请求-》修改数据库状态为上线-》将上线的课程存储在elasticsearch中为什么放在elasticsearch中:检索流程:门户网站区搜索:不会去mysql,而是去elasticsearch搜索-》返回结果给客户端取消发布课程:修改mysql数据状态为下线:-》从elasticsearch删除要下线的课程课程上线实现:控制层加入上线方法service层:1根据id查询对象2判断课程状态为下线才能上线(使用常量)3修改课程状态为上线4 保原创 2020-07-02 11:17:38 · 179 阅读 · 0 评论 -
在公共服务集成ElasticSearch进行简单的crud和高级查询
在公共服务集成ElasticSearch进行简单的crud和高级查询导入elasticsearch依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>配置文件yml,配置ElasticSearch的集原创 2020-07-02 00:44:41 · 151 阅读 · 0 评论 -
用户三方登录之微信登录
1.发起微信授权请求2.跳转回调页面解析url中的code和state原创 2020-06-06 01:07:23 · 433 阅读 · 0 评论 -
OneinStack(一键式安装java运行环境(jdk、mysql、tomcat、nginx等配置))
- OneinStack软件安装第一步:下载oneinstack包[root@ecs-4229 /]# cd /usr/local/src/[root@ecs-4229 src]# wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz注意:#包含源码,国内外均可下载第二步:解压oneinstack包[root@ecs-4229 src]# tar -zxvf oneinstack-full.tar.gz -C ./[root@ecs-原创 2020-05-21 22:46:34 · 1187 阅读 · 0 评论 -
Spring事务集成
构造参数注入spring事务导包 spring-tx在spring配置文件配置 事务管理器 并且注入数据连接池(去参照sqlsesion的dataSource)添加tx头命名空间开启注解式支持加注解@Transaction 加了这个注解就开启了事务增添删就加注解 查询不加注解太多了,使用事务传播机制在类上加上注解@Transactional(readonly=false,propagation=Propagation.NOT_SUPPORTED)readonly:只读(原创 2020-05-15 00:02:14 · 188 阅读 · 0 评论 -
maven常用命令
maven:一个项目管理工具maven安装:解压即用配置环境在新建MAVEN_HOME变量配置安装路径path去引用maven的常用命令打开cmd命令行,进入项目根目录执行 mvn compile命令,编译项目cmd 中继续录入mvn clean命令,清空项目编译的文件cmd 中录入 mvn clean compile命令, 先清空在编译cmd 中录入 mvn clean test命令,先清空在运行测试文件cmd 中录入 mvn ..原创 2020-05-14 23:06:57 · 262 阅读 · 0 评论 -
分布式+集群方式部署项目(nginx)
分布式:把不同的业务分布在不同的服务器。集群:多台服务器实现同一个业务分布式+集群解决了:多并发,单点故障,处理效率慢(tomcat不擅长处理静态资源,它把静态资源当动态资源处理)需要采用动静分离的办法解决。...原创 2020-05-14 22:46:55 · 3825 阅读 · 0 评论 -
在虚拟机Linux系统上安装mysql、tomcat以及部署项目
安装jdk卸载系统自带的openjdk运行命令:rpm -qa | grep java(查看到自带的jdk)通过 rpm -e --nodeps 后面跟系统自带的jdk名 这个命令来删除系统自带的jdk 例如: rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64`上传安装包到/usr/local/src目录下,解压文件 tar -zxvf jdk-8u151-linux-x64.tar.gz将解压好原创 2020-05-14 22:35:55 · 389 阅读 · 0 评论 -
在Linux常用到的命令(关闭防火墙、切换用户、创建文件夹、解压zip文件等)
Linux常用命令防火墙相关的:查看防火墙状态:systemctl status firewall.service开启防火墙:systemctl start firewall.service关闭防火枪:systemctl stop firewall.service查看ipifconfig清空屏幕clear切换用户su - 用户名(切换用户和环境)su 用户名(只是切换用户,还是在上一个用户所在的文件目录中)注意:小权限切大权限需要输入密码,大的权限切换到小的权限不需要输入密码。查原创 2020-05-09 08:32:40 · 183 阅读 · 0 评论 -
登录,回车登录,动态显示登录名,记住密码,登录拦截,/*与/**的区别
登录:准备静态页面(注意文本输入框必须要有对应的name),提交按钮要使用butto类型,不然在表单内部按钮将会作为submit提交,全局刷新。前端点击登录按钮以后将参数提交到后台,后台接收参数,通过用户名去数据库里面查询,如果用户名为空那么就请返回一个自定义异常,用户不存在。如果用户存在密码不相同,返回给前端一个自定义异常密码不正确。如果用户密码都正确就返回用户。//servi...原创 2020-05-08 16:29:03 · 370 阅读 · 0 评论 -
轮播图展示与轮播图管理
展示复制文章展示后台,改请求。新增修改轮播图上传文件前提上传准备工作1.表单必须是post提交2.表单设置enctype类型3.在springmvc必须设置上传解析器具体实现工作和FreeMark步骤基本上一样的保存或者修改轮播图判断是否有文件上传@Override public void save(Slide slide, HttpServletRequest req...原创 2020-05-07 00:17:46 · 1668 阅读 · 1 评论 -
前后端实现增删改查
给页面添加“增添改查”的按钮。删除前台给删除按钮注册事件,通过事件冒泡方式,让表格的所有的删除按钮都有这个事件。首先给确认按钮注销事件获取id,在删除按钮处用data-id=“cell” 方式获取id,通过json.val("")获取id值。把id包装成json格式准备传递var param={“id”:id}弹出模态框给确认按钮注册事件(发送请求删除数据,关闭模态框,刷新页...原创 2020-05-05 00:00:43 · 706 阅读 · 0 评论 -
jQuery部分函数操作
获取被选中的复选框checked$("#btn").click(function(){ //获取复选框被选中的(获取input元素标签,并且拥有name属性,name属性的值为hobbies并且为选中状态的) var cheaked=$("input[name='.hhobbies']:checked"); console.debug(cheaked); })显示和隐藏...原创 2020-04-28 20:54:04 · 148 阅读 · 0 评论 -
jQuery基础
引入jQuery文件,一般引入min版,没有源码<script type="text/javascript" src="jquery/jquery-2.1.3.min.js"></script>jQuery对象和dom节点的互转jquery对象转dom 1.jQuery对象[0] 2.jQuery对象.get(0)dom节点转jQuery对象 ...原创 2020-04-20 22:43:09 · 79 阅读 · 0 评论 -
eclipse关于解决在项目工程右键选中new菜单打开没有class等常用的模板还得去other中找的解决办法~
src右键新建package,菜单new列表没有class,HTML等文件,需要other中找,比较麻烦,解决办法如下选中Window->Perspective选择Customize Perspective选择Shoutcats->点击java->选择要在列表中展示的菜单选择需要的,单击ok!好了。如果因为eclipse版本不一样找不到CustomizeP...原创 2020-04-18 09:37:52 · 905 阅读 · 0 评论