JAVA
文章平均质量分 52
君を見つけて
这个作者很懒,什么都没留下…
展开
-
通过Redis实现分布式锁 代码分享。
Redis实现分布式锁的作用和意义,可以参考这篇文章:https://zhuanlan.zhihu.com/p/268290754代码的话,不废话,直接看我在项目中用的。一.配置RedisTemplate对象我是基于RedisTemplate对象来实现分布式锁的,而不是jedis。package com.wuyouhu.common.redis.configure;import org.springframework.cache.annotation.CachingConfigurerSuppo原创 2021-12-13 23:42:58 · 1387 阅读 · 2 评论 -
使用Stream进行嵌套遍历。
需求:对集合A和集合B进行遍历,判断集合A存在的元素是否同时也在集合B存在,统计出存在的数量。如集合A存在10个元素,集合B存在100个元素,但集合A只有8个元素和集合B的元素一致,那么就返回8.代码: List<String> coinNames = Arrays.asList("ETH,LINK,XMR,BCH,AXS,DOT,VRA,AVAX,ADA,LUNA,NBTB".split(",")); List<String> verifi原创 2021-12-10 10:41:29 · 1708 阅读 · 0 评论 -
使用Stream流进行过滤,并相加计算总和。
需求对一个集合进行条件过滤,然后计算某个字段值相加后的总数。/** * 商家卖家交易实体 * */@Datapublic class Trade { private String instId;//产品ID private String sz;//交易数量 private String side;//交易方向 buy:买 sell:卖 public Trade() { }}代码 @Test public void tes原创 2021-11-29 09:47:14 · 8160 阅读 · 0 评论 -
java项目打为jar包后,依赖没有一同打包的解决方法。
使用某产品的官方javasdk写了个小工具,想打包放在服务器上跑。通过Maven来package之后,尝试运行。报了错:Error: A JNI error has occurred, please check your installation and try againException in thread "main" java.lang.NoClassDefFoundError: com/alibaba/fastjson/JSON at java.lang.Class.getD原创 2021-10-17 18:39:22 · 1906 阅读 · 0 评论 -
解决SpringBoot打为jar包后,通过response.getOutputStream下载文件内容为空。
背景:项目中有一个下载文件模板的功能,文件为excl表格文件。问题是在Idea运行这个项目时,下载的文件是有内容的。但打为jar包后下载的文件是空的。解决:首先查找原因,发现,一个原因是打为jar包后,路径有变,而我代码中获取文件的方式不适用于Jar包,改为this.getClass().getResourceAsStream("/templates/seatInfoTemplate.xls")解决。但发现下载的文件还是为空,通过InputStream流对象的available方法获取长度,发现在原创 2021-09-29 15:01:45 · 3788 阅读 · 0 评论 -
使用Stream流遍历过滤Map集合 及 使用Stream流遍历指定变量并组成新的集合
List<Map<String, Object>> list = this.getQuestionList(map); List<String> listStr = list.stream().map(item -> item.get("ID").toString()).collect(Collectors.toList())原创 2021-09-23 16:39:43 · 6672 阅读 · 0 评论 -
在代码中,给java程序自身设置网络代理来爬虫相关站点或使用相关api。
在开发中,我们可能会使用到某些api。但是这些api(如谷歌云)因为一些因素,我们本机是无法直接访问的。最要命的是,我们开发中必然要用到这些api,而尽管本机开启了代理,但是java程序本身却不走代理,完全无法开发下去。这个时候,我们要为java程序本身设置一个代理了,这是在代码中来实现的,也很简单,就是通过System类来配置。代码如下: public static void main(String[] args) { System.setProperty("socksP原创 2021-09-21 05:44:53 · 214 阅读 · 0 评论 -
若依框架中@DataScope数据权限注解的使用与自定义sql语句。
介绍若依框架本身具有角色、部门、用户业务。在业务中,用户必须绑定一个角色,而角色又必须将自身绑定到部门,角色绑定了哪些部门,就决定着隶属于该角色的用户能对哪些部门数据进行增删改。那么,怎么实现让用户只能遵循其绑定角色所指定的部门,来进行数据范围控制呢?一般情况下,假如我们对一张表要进行查询或更新的话,需要在sql语句中,where条件语法后面 加上 dept.id = {currentDeptId} 来进行过滤,例如下面的sql语句:select * from sys_userwhere de原创 2021-09-05 03:53:33 · 18800 阅读 · 3 评论 -
在Swagger中,如何给暴露的接口及其参数添加说明描述?
Swagger是个测试工具,它能将我们在controller层暴露的接口添加说明。给类和方法添加说明描述一.我们可以使用@Api注解,在一个controller类上添加说明。如下:那么,访问swagger时,就能看到这个controller类的描述了二.我们可以通过将@ApiOperation注解,写在controller层的方法上,来说明该方法的作用。给实体类的字段添加描述。我们可以给实体类的字段添加描述。那么,我们为什么要给实体类的属性添加描述呢?这是因为在开发中,我们的con原创 2021-08-22 23:36:11 · 24123 阅读 · 4 评论 -
用Stream流遍历两个集合,对比出数据差异。
今天开发一个需求时,要对A和B两个List集合遍历,并比较出集合A有,而集合B没有的值。比如说List集合A有’one’,‘two’,‘three’三个值,List集合B有’one’,‘three’两个值。那么最终打印’two’。下面我就用stream流来做个例子。例子中,集合A的泛型为HashMap,集合B的泛型为String。Stream流中,forEach()方法用于对一个流进行结尾动作,同时对最终过滤后的元素结果进行一个遍历操作。我们可以在forEach()中直接写入类和其对应方法名,来原创 2021-08-19 00:38:19 · 11543 阅读 · 1 评论 -
指定jar包Main入口的二种方式
有时候,我们打包好了一个jar包。但是当通过命令 java -jar xxxx.jar 运行时,我们应该如何指定要运行哪个main呢?这里有两种方式。一种是在打包为jar时指定main,一种是运行jar时直接指定要运行的方法。方式一:打Jar包时指定这是一个项目的结构,我们想指定jar的main为‘LoadPrice’类,因为该类已经有Main方法,所以不需要再指定LoadPrice类的具体方法。在项目工程的pom文件中,通过packaging标签,指定其打包方式为jar.点击File —&原创 2021-06-05 12:54:52 · 13384 阅读 · 2 评论 -
对于JSON转换的注解@RestController/@ResponseBody 进行时间格式化统一处理
编辑application.yml文件写下如下内容:spring:jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8或者使用JsonSerializer,可以自定义某一个字段,使用方法TODO转自:https://www.cnblogs.com/hhan/p/10727954.html原创 2020-10-08 14:14:43 · 459 阅读 · 0 评论 -
Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasou解决
SpringBoot集成MongoDB+SpringDataJap,运行时出现报错,错误如下:APPLICATION FAILED TO STARTDescription:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver cla原创 2020-09-29 16:21:13 · 268 阅读 · 0 评论 -
fastjson判断空JSON节点,判断JSON节点是否存在.
有一个项目需求,是解析一个json,其中父节点为’data’,子节点为不确定的key(即代码中的nowKey),次子节点为’had’.要将次子节点’had’下的数据封装到实体类中.但次子节点had有时不存在,此时直接获取会空指针异常.我尝试使用fastjson的jsonNode对象的’isEmpty’和’isNull’方法来判断该次子节点’had’是否存在,可是即使不存在,也会返回为true.为此苦恼了好久,后来经过尝试,发现直接通过’==null’就能成功准确的判断该次子节点是否存在.代码示例如下原创 2020-09-23 23:16:56 · 4475 阅读 · 0 评论 -
json字符串去除双引号
使用String对象的replaceAll方法.str.replaceAll("\"", "")原创 2020-09-17 11:04:04 · 3623 阅读 · 1 评论 -
SpringBoot中RestTemplate对象爆红报错的办法
问题:在SpringBoot中,某个类使用到了RestTemaplte对象.然后爆红.运行时出现了如下异常:Consider defining a bean of type ‘org.springframework.web.client.RestTemplate’ in your configuration这是因为在springboot1.4以及以后的版本中,需要手动创建一个RestTemplate的配置.解决方案:新建一个配置类,通过Bean注解对RestTemplate对象进行配置.p原创 2020-08-16 10:33:46 · 4970 阅读 · 1 评论 -
自定义异常:可预知异常处理 与 不可预知异常处理
概念对可预知异常和不可预知异常的处理方案:1、自定义异常类型。2、自定义错误代码及错误信息。3、对于可预知的异常由程序员在代码中主动抛出,由SpringMVC统一捕获。可预知异常是程序员在代码中手动抛出本系统定义的特定异常类型,由于是程序员抛出的异常,通常异常信息比较齐全,程序员在抛出时会指定错误代码及错误信息,获取异常信息也比较方便。4、对于不可预知的异常(运行时异常)由SpringMVC统一捕获Exception类型的异常。不可预知异常通常是由于系统出现bug、或一些不要抗拒的错误(比原创 2020-08-16 01:22:09 · 993 阅读 · 0 评论 -
Rabbitmq高级
消息可靠投递OR.确认(confirm)模式概念当生产方发送给交换机失败时,进行相应的业务处理(执行setConfirmCallback函数方法).一.开启确认模式如果是基于spring集成rabbitmq的话,那么需要在rabbitmq的xml配置文件中开启确认模式,如下图所示二.配置ConfirmCallback回调函数代码示例(示例为基于Spring集成Rabbitmq的环境下)package cn.rabbitmq;import org.junit.Test;import o原创 2020-08-09 18:42:17 · 420 阅读 · 0 评论 -
Spring 整合RabbitMQ
生产者创建工程添加依赖修改pom.xml文件内容为如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.原创 2020-08-06 19:25:40 · 334 阅读 · 0 评论 -
SpringBoot集成Rabbitmq
生产者一.创建SpringBoot模块/工程可以使用Ider的快速创建SpringBoot模板/工程,也可以选择’Maven’来创建SpringBoot模块/工程(此处,我自己在创建生产者模块时/工程时,是使用自己选择’Maven’来手动创建的)二.在Pom文件中添加依赖. <!-- SpringBoot的核心依赖 --> <parent> <groupId>org.springframework.boot</group原创 2020-08-06 19:04:03 · 454 阅读 · 0 评论 -
典型SSM项目所用到的配置文件
一.[父工程]pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apac原创 2020-08-09 18:40:20 · 389 阅读 · 0 评论 -
总结56 Maven之SOA架构开发与Dubbo的应用
SOA架构概念SOA全称为Service-Oriented Architecture,即面向服务的架构。它可以根据需求通过网络对松散耦合的粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进程中。站在功能的角度,把业务逻辑抽象成可复用的服务,通过服务的编排实现业务的快速再生,目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用。Dub...原创 2020-04-11 03:37:56 · 257 阅读 · 0 评论 -
总结55 Maven高级应用 解决依赖冲突 分模块构建 私服
解决依赖冲突解决依赖冲突有三种方式如图上所示,现如今我们只用"锁定版本"来解决依赖冲突,其余的忽视.解决方案:版本锁定版本锁定不仅还能解决jar包冲突,还能规范jar包版本.比如你做a项目,你用的spring框架版本为5.0.5,而同事做b项目,且继承了你a项目的jar包.那么,如果你在你的a项目中把版本锁定为5.0.5,你同事就只能在b项目中使用5.0.5的spring框架.而...原创 2020-04-10 03:58:44 · 342 阅读 · 0 评论 -
centos7下安装jdk1.8
1.上传jdk的tar包/** * jdk-8u162-linux-x64.tar.gz*/2.查看是否安装过jdkrpm -qa | grep java/** * java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.i686 * tzdata-java-2015e-1.el6.noarch * java-1.7.0-openjdk-1.7.0...原创 2020-03-18 00:09:30 · 310 阅读 · 0 评论 -
获取文本文件中指定行数的内容,或最后一行的内容
有两个类能够实现,LineNumberInputStream 以字节流的形式获取LineNumberReader 以字符流的形式获取这里我以LineNumberReader做例子,以字符流的形式获取.如果你想获取最后一行的内容,需要用到while循环,通过’readLine’方法读取每行的内容,届时可以通过’getLineNumber’方法来获取当前行的位置它有如下几个方法步骤一,创建...原创 2020-03-12 20:40:49 · 2538 阅读 · 0 评论 -
总结40 Maven的概念与应用
概念Maven是用来便捷地操作项目的工具它涵盖两大功能:一:依赖管理(Maven的最大意义)也就是一键管理Jar包那么’管理jar包’有什么意义呢?在往常,我们使用jar包都需要导入,因此,每做一个项目或者模块就导入一次,实在是太过麻烦.但是,Maven能够解决这个问题,我们只需要指定一个存放jar包的文件夹,将要用到的jar包放入该文件就可以了二:一键构建一键重构分为三大类分...原创 2020-03-08 22:02:24 · 266 阅读 · 0 评论 -
总结35 Proxy动态代理 与 Listener监听器的应用
动态代理所谓动态代理,就是可以将对象中一些方法的功能进行改造或增强.比如:A对象中有一个方法,叫做’test’,这个方法可以可以根据一个键来返回一个值但是你想先规定这个值必须具有某种规律的话,那么你就需要对’test’方法进行改造.动态代理有时多用于配合Filter进行词汇过滤动态代理的使用步骤一:根据欲进行增改的目标对象Class文件反射,创建一个动态代理对象格式:目标对象...原创 2020-03-02 01:40:38 · 561 阅读 · 0 评论 -
总结33 MVC开发理念以及EL表达式的概念与应用
MVC的概念MVC不是一种应用,而是一种开发理念许多大公司都不允许JSP文件中存在JS代码,和Java代码(也就是JSP的:<% %>),因为这将使得前端和后端都合为一体,开发虽然方便,但是修改的话将会很难处理,阅读性会很差.这不仅仅是阅读性的问题,当前端工作人员处理前端页面时,也会非常困扰,因为他们很可能仅仅只懂得前端代码因此,催生出了MVC这种理念,前端页面可以允许少量的后...原创 2020-02-24 02:31:47 · 340 阅读 · 0 评论 -
总结32 JSP与JSTL的概念与应用
aaa原创 2020-02-21 18:25:56 · 408 阅读 · 0 评论 -
总结31 WEB服务中,Cookie与Session的应用
Cookie的概念Cookie的概念不必我多说了吧,自行体会.Cookie的应用Cookie对象的使用步骤一:创建Cookie对象,并为其赋值(在cookie发起处)格式:Cookie 自定义cookie对象名 = new Cookie("自定义cookie的键", "自定义cookie的值");列如: Cookie cookieObj = new Cookie("1...原创 2020-02-20 00:33:35 · 346 阅读 · 0 评论 -
总结30 WEB服务器中HTTP的Response与ServletContext对象之应用,以及Mime
概念Response是HTTP中的一种应用对象.它同Request对象属于对等关系,Request负责请求,Response负责响应(即传递数据给浏览器)响应行/响应头/响应体的介绍响应行当你访问某个服务器的资源时,服务器的响应行都会给你一个代码,依照代码不同代表多种含义.分类:一,代码:1xx 服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多(今后不会见到)二,...原创 2020-02-19 01:23:06 · 499 阅读 · 0 评论 -
总结28 WEB服务器中Tomcat和Servlet的应用
WEB服务软件的简介WEB服务软件可以开启最基础的WEB服务,这样的话,这台电脑就会成为一个网站常用的开启WEB服务的软件有以下几种.一.ebLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。二.webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。三.JBOSS:JBOSS公司的,大型的JavaEE服务器...原创 2020-02-14 00:32:04 · 387 阅读 · 0 评论 -
总结22 前端之CSS
CSS概念CSS是前端网页开发语言的一种,它能够在html语言的基础之上,将自身的属性应用到指定的html代码中.这样就不需要对html进行一个一个的美工.只需将需要进行美工处理的html语言放置到div内部就行,而div内部的html立马就会被该div选择器定义的属性进行美工处理.因此,html可以跟css进行分离,这也意味着能够大大提高开发效率CSS应用到HTML的三种方式CSS如...原创 2020-01-15 20:34:41 · 130 阅读 · 0 评论 -
java总结20 JDBC数据池的C3P0,Druid 和JdbcTemplate及单元测试功能的概念与应用
数据库连接池的概念数据库连接池目的在于让数据库的执行效率更加高效,它能够事先通过配置文件定义’池’中的连接数量(即配置文件的’最大连接数’).来达到’池’的效果.当有人要用时,则从中抽取一个连接数给其使用,而当使用完毕后,通过’close’释放资源的方法,将其’连接’返还给数据吃.而数据库连接池基于各种公司开发的’数据池实现Jar包’而不同,比较出名的是[C3p0数据池jar包]和[Druid...原创 2020-01-13 01:58:21 · 347 阅读 · 0 评论 -
总结19 JDBC底层应用(弃用) 在JAVA中对数据库进行操作.
JDBCJDBC用于在JAVA中对SQL数据库进行操作,包括但不限于Mysql,Oracle(甲骨文),Server Sql.这些都可以通过JDBC用统一标准进行实现,那就是导入上述Mysql环境各自的jar包.如Mysql的Jar包’mysql-connector-java-5.1.37-bin.jar’一.使用步骤实现步骤有两种方案,第一种是用**createStatement(...原创 2020-01-12 18:40:02 · 441 阅读 · 0 评论 -
Java总结15 java反射体系 Class字节码文件,反射构造方法,反射成员变量,反射成员方法
反射的概念简而言之,反射是可以通过每个.java文件生成的.class文件来对立进行一些数据访问和修改.比如访问其私有化方法或私有化成员变量.同时,能够无视方法的形参类型限制,比如可以通过更改ArrayList的’class’文件,能够在其泛型为’Integer’的情况下,通过’add’方法添加String字符串元素....原创 2020-01-07 17:25:14 · 284 阅读 · 0 评论 -
Java总结14 函数式接口Supplier供应者/Consumer消费者/Predicate判断/Function转换和Stream流的概念与应用
一.函数式接口的概念函数式接口:接口中只有一个抽象方法.函数式接口分为4个常用接口1.Supplier供应者2.Consumer消费者3.Predicate判断4.Function功能(多用于类型转换)1.Supplier函数接口概念:需要用到Lambda表达式.定义一个方法,方法里有一个已经存在的类作为其参数和返回值类型.每当你调用这个方法时,都需要用Lambda表达式去重写...原创 2020-01-04 00:00:01 · 2108 阅读 · 0 评论 -
Java总结13 Lambda表达式 和 方法引用 的概念与应用
一.Lambda表达式一种代码简洁又抽象的表达方式,它能够在一个方法要调用某个接口的抽象方法前,对其要调用的抽象方法实现重写.1.Lambda使用条件1.必须要保证它是某个接口中唯一的一个抽象方法.即:无法用于存在多个抽象方法的接口如:interface InterA{ void show();//Lambda表达式之 不带形参不带返回值的接口抽象方法}2.要有一个方法或...原创 2020-01-02 20:22:00 · 310 阅读 · 0 评论 -
Day10 详解JAVA中'接口'的意义概念与应用
InterFace — 接口(Inter废四) Implements — 接口工具(imple 因普李 ments 们斯)Const — 常量 Final — 不可变#一/接口的概略接口是多个类情况下的公共规范和标准,接口是引用类型. 其中最重要的就是[抽象方法]接口定义格式: public interface 接口名称{//接口体:即接口内容}其中的接口名称为为大驼峰....原创 2019-12-02 20:06:30 · 376 阅读 · 0 评论 -
Java总结12 Java网络编程体系 InetAddress地址封装类/TCP协议/UDP/协议 的概念与应用
一.InetAddressIP地址封装类,有许多与IP地址相关的方法1/创建方式1/ 指向别人主机输入别人的IP地址/主机名,来获取其对应的IP/主机名.即:输入IP可获取主机名,输入主机名可获取IP.格式:InetAddress 方式1自定义对象名 = InetAddress.getByname(别人的IP/主机名);列如:InetAddress address = InetAddr...原创 2020-01-01 02:04:06 · 544 阅读 · 0 评论