java
海里的顽石
这个作者很懒,什么都没留下…
展开
-
idea 远程调试springboot项目
项目部署在linux服务器上,启动命令为:java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=12345 project.jar --server.port=8088idea上创建remotedebug运行原创 2021-08-27 17:42:16 · 210 阅读 · 0 评论 -
centos 安装docker及docker-compose
安装docker$ curl -fsSL get.docker.com -o get-docker.sh$ sudo sh get-docker.sh --mirror Aliyun$ sudo systemctl enable docker$ sudo systemctl start docker安装docker-compose下载地址:https://github.com/docker/compose/releases将下载好的文件复制到/usr/local/.原创 2021-08-16 12:04:03 · 150 阅读 · 0 评论 -
nginx 丢失端口问题
问题描述:我使用docker部署的nginx服务,nginx内部是80端口,映射到宿主机上的5001端口上,nginx的内部配置如下:upstream upstream{ server xx.xx.xx.xx:8080;}server { listen 80; server_name xx.xx.xx.xx; #charset koi8-r; #for server access logs. if ( $time原创 2021-07-27 18:52:08 · 2437 阅读 · 0 评论 -
mybatis-plus QueryWrapper 添加limit
其实是在sql的最后加上 limit 相关的语句。QueryWrapper wrapper = new QueryWrapper<>();wrapper.last("limit 1");原创 2021-06-23 18:07:44 · 69917 阅读 · 4 评论 -
easyExcel读数据后在写入另一个excel
需求说明:如下图所示,excel中有4个sheet,每个sheet的数据格式都一样,有5列,第一列为订单id,现在要根据订单id到数据库中查询出其他几列的信息并补充到excel中。代码如下:首先为service中的主方法 public void userMessage() {// String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();原创 2021-06-18 17:30:10 · 2977 阅读 · 0 评论 -
flatmap使用
使用场景适用于嵌套list数据结构,想把内部的list数据合并成一个list.。举例如下:public class Test { public static void main(String[] args) { List<List<String>> list = new ArrayList<>(); List<String> list1 = new ArrayList<>();原创 2021-06-16 10:38:38 · 3240 阅读 · 0 评论 -
feign如何启用httpClient、OKhttp
启用httpClient:网上很多文章都说通过配置feign.httpclient.enabled=true原创 2021-06-09 17:56:01 · 3079 阅读 · 0 评论 -
class.getTypeParameters()方法
该方法会返回class上定义的泛型变量数组:举例如下public interface First<T,U> { public void test();}public class MainTest { public static void main(String[] args) { Class<First> firstClass = First.class; TypeVariable<Class<First&原创 2021-06-09 15:57:11 · 586 阅读 · 0 评论 -
Jackson2ObjectMapperBuilderCustomizer不生效解决
@Configuration@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)public class ConvertConfiguration implements WebMvcConfigurer { @Autowired(required = false) private MappingJackson2HttpMessageConverter mappingJackso.原创 2021-06-07 20:03:32 · 10599 阅读 · 0 评论 -
前端传入数字,后端用枚举接收统一处理
举例:有性别枚举:public enum GenderEnum implements BaseCodeEnum { male(1,"男"), female(2,"女"); Integer code ; String value; GenderEnum(Integer code , String value){ this.code = code; this.value = value; } @Overri原创 2021-06-07 19:57:15 · 2794 阅读 · 0 评论 -
springCloud-gateway按照服务名动态路由的改造(三)
springCloud-gateway按照服务名动态路由的改造(二)从上一篇文章中,我们分析知道,按照服务名动态路由无非是构造RouteDefenition的过程不同,是根据从注册中心获取到的服务来动态构造RouteDefenition的各个属性,包括id,uri,Predicate,Filter这几个属性。每个RouteDefenition对应后端的一个服务。...原创 2021-05-28 19:14:20 · 727 阅读 · 0 评论 -
springCloud-gateway按照服务名动态路由的改造(二)
按照服务名动态路由如果按照我们上面的理解,所有的路由在程序中都对应一个RouteDefenition对象,下面我们来看看gateway是如何根据服务名来生成对应的路由对象RouteDefenition的?打开GatewayDiscoveryClientAutoConfiguration,根据我们的配置会生成一个DiscoveryClientRouteDefinitionLocator对象bean。下面我们分析一下DiscoveryClientRouteDefinitionLocator的构造原创 2021-05-28 15:43:32 · 1648 阅读 · 2 评论 -
springCloud-gateway按照服务名动态路由的改造(一)
我们知道在gateway中加入下面的配置,则网关会根据路径中的服务名会自动路由到对应的服务,如 http://gateway.com/my-service-name/login这个请求,将会根据my-service-name这个服务名路由到该服务。spring: cloud: gateway: discovery: locator: enabled: true #开启根据微服务名称自动转发 lower-case-se原创 2021-05-26 20:50:16 · 3522 阅读 · 0 评论 -
警告: ParameterizedTypeImpl是内部专用 API, 解决方式
需求: 我需要构造一个A<B>格式的Type,以求jackson反序列化的时候传入,刚开始是用了如下方法:ParameterizedTypeImpl.make(A.class,new Type[]{B.class},null)程序启动时一直包警告。警告原因:ParameterizedTypeImpl 后续版本可能会删除。后面解决方式:使用gson的TypeTokenType wrapperType = TypeToken.getParameterized(A.原创 2021-05-21 17:05:35 · 3182 阅读 · 0 评论 -
java lambda groupingby 结果的value为对象的一个属性
需求如下:将List<Person> 按照id分组,并取name为分组的结果。即结果应该为Map<id,List<Sting>>,而 不是Map<id,List<Person>>实体如下@Datapublic class Person{ private Long id; private String name; }实现如下: Map<Long,List<Stirng>>原创 2021-05-17 11:49:55 · 4566 阅读 · 0 评论 -
gradle 作为编译工具 lombok 死活不生效解决
在gradle.build文件里的dependencies模块里添加compileOnly 'org.projectlombok:lombok'annotationProcessor 'org.projectlombok:lombok'原创 2021-04-26 11:13:35 · 826 阅读 · 1 评论 -
gradle 将自定义springboot-starter上传到nexus私服
plugins { id 'org.springframework.boot' version '2.1.5.RELEASE' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'maven' id 'maven-publish' id 'java-library'}group = 'com.xxx.xxx'version = '1.0.1'sourceCom.原创 2021-04-21 19:02:22 · 472 阅读 · 0 评论 -
Gradle 构建jar包,依赖和配置分离
项目环境:springboot 2.1.5-releasegradle 6.7.xidea2020.3// 将依赖包复制到lib目录task copyJar(type: Copy) { // 清除现有的lib目录 delete "$buildDir\\libs\\lib" from configurations.runtimeClasspath into "$buildDir\\libs\\lib" from configurations.com.原创 2021-04-19 18:02:30 · 1197 阅读 · 1 评论 -
dolphinscheduler1.3版本源码分析---MASTER模块
在API模块的分析中,我们知道了当任务到达定时器定义的时间时,会在t_ds_command表中生成一条记录。那么谁去消费这张表里的这条记录呢?下面我们分析MASTER模块。1、master的启动过程分析上面的启动过程,我们可以知道masterSchedulerService.start();启动了一个线程,这个线程主要负责处理command表中的记录,下面我们进入到MasterSchedulerService中进行分析二、MasterSchedulerService分析...原创 2021-01-19 17:43:47 · 660 阅读 · 0 评论 -
skywalking和JPA冲突问题解决
冲突原因:不加skywalking的时候,JPA接口的代理方式为JDK动态代理,加入skywalking后,JPA的接口代理方式变成了CGLIB。如下图所示为判断JPA接口代理方式的逻辑:之所以加入skywalking后,代理方式变成CGLIB的原因是,skywalking对hasNoUserSuppliedProxyInterfaces方法进来了重新定义。代理的逻辑代码如下图,第二张图是具体的重定义实现。解决方式:我的解决方式就是在afterMethod中增加判断,如果是JPA原创 2020-07-10 20:10:12 · 1305 阅读 · 1 评论 -
spring-cloud-sleuth链路信息中增加自定义属性
需求说明:我要实现的需求是前端会将页面的pageId放到request heander中,后端会将pageId保存到链路信息中,这样以后就可以查看某个页面上有多少个请求了(链路展示端没用到zipkin,是自定义前端页面)。实现方式:通过研究sleuth的源码,发现sleuth已经提供了这样的方法了,我们只需要配置一下就好了,配置方法如下:1,配置文件:红色部分spring: zipkin: sender: type: kafka ...原创 2020-05-18 18:31:27 · 2253 阅读 · 0 评论 -
TCC java 案例
参考:https://github.com/changmingxie/tcc-transaction转载 2020-01-20 14:50:23 · 546 阅读 · 0 评论 -
java lambda 对list实现分组(groubby);并将对象的部分属性作为List对象,然后返回list中的第一个值
List<Persion> pList = new ArrayList<>{...初始化数据}Class Persion{String name;String age;//setter//getter}实现目标:对list按照age分组 并返回分组中第一个persion的name实现:Map<String,...原创 2019-12-04 16:09:56 · 3987 阅读 · 0 评论 -
java web 解决cors 跨域问题
解决跨域问题要在服务器端解决,在服务器端的响应头中增加如下设置即可://表示允许所有域访问response.headers().set("Access-Control-Allow-Origin", "*");//表示请求头中可以包含任意的属性response.headers().set("Access-Control-Allow-Headers", "*");//表示允许所有的请...原创 2019-11-22 14:00:10 · 454 阅读 · 0 评论 -
java中lambda表达式双冒号::的使用
1:当 ::前面为一个类名,后面跟一个静态方法时,如下所示,此时等号左边的函数式接口中的方法和静态方法签名一致即可,即方法参数个数和类型一致,如果左边的函数式接口中的方法返回值不是void则要求右边lambda静态方法的返回值和其一致,如果左边的函数式接口中的方法返回值是void,则右边的lambda静态方法的返回值可以为任意类型。2:当::前面为一个类名,后面为一个实例方法时,如下图所示...原创 2019-11-20 15:06:38 · 6520 阅读 · 0 评论 -
关于String常量池的理解
1:String s1="abc";当我们写这样的表达式的时候,在编译时 “abc”就会在常量池中创建,s1指向的是常量池中“abc”的引用。2:String s2 = new String("abcd")当我们写这样的表达式的时候,在编译时 “abcd”就会在常量池中创建,但是运行时仍然会在堆中创建一个字符串对象。s2引用为堆中的地址。以下的输出为false,因为s2为堆中的...原创 2019-11-14 11:14:29 · 263 阅读 · 0 评论 -
nexus 私服 提示磁盘空间不足
nexus使用过程中随着资源的增加,磁盘剩余空间将越来越小,小到一定程度后会报以下错误Return code is: 500 , ReasonPhrase:javax.servlet.ServletException: com.orientechnologies.orient.core.exception.OLowDiskSpaceException: Error occurred whil...原创 2019-09-19 11:00:50 · 13841 阅读 · 1 评论 -
java ThreadLocal 原理说明
准备工作创建一个共享变量ThreadLocal再创建一个向共享变量ThreadLocal 中赋值的线程再创建一个从共享变量ThreadLocal 中取值的线程如下图所示:tl为共享变量ThreadLocalTestThreadForSet 为赋值线程;TestThreadForGet 为取值线程,为保证赋值线程先于取值线程执行,中间加入了等待2秒运行结果:...原创 2019-08-31 18:25:50 · 426 阅读 · 0 评论 -
windows7下编译openjdk9
一:工具准备1.1:mercurial,该工具主要用于下载openjdk的源码,我用的是4.8.1,下载链接https://download.csdn.net/download/sj1231984/109441311.2:cygwin64,该工具模拟linux的操作环境,内置make,zip等工具,用于编译openjdk源码。下载链接;https://download.csdn.ne...原创 2019-01-30 11:14:13 · 663 阅读 · 0 评论 -
maven将本地jar及第三方jar发布到nexus3私服中的相关配置
一:安装nexus3略二:在nexus3上创建仓库nexus3默认会有七八个仓库,我把这些都删掉了,然后创建自己的仓库,如下图所示:dzsoft_releases是宿主仓库,放置上传的本地jar和第三方jar的发布版本;dzsoft_snapshot是宿主仓库,放置上传的本地jar和第三方jar的快照版本;maven-central是代理仓库,代理maven的中央仓库;...原创 2018-11-05 18:13:59 · 3255 阅读 · 0 评论 -
将maven 导出的jar包发布成windows服务
一:maven导出的jar的目录结构如下图:其中config放置的是jar包的配置文件,比如log4j2.xml,config.properties等。lib目录放置的是jar包的依赖。traversal_client-1.0.0.jar为项目对应的jar。二:工具准备1)将jar包打出服务需要用到javaService.exe这个第三方工具,没有的同学百度搜索下载就可以。...原创 2018-08-29 11:18:35 · 574 阅读 · 0 评论