
Java
文章平均质量分 51
DavidSoCool
路漫漫其修远兮,吾将上下而求索
展开
-
什么是 ANT 表达式,以及如何在java中使用
ANT 表达式(也称为或)是一种用于匹配文件路径或目录结构的简单模式匹配语法。它最初由 Apache Ant 构建工具引入,广泛应用于各种构建工具、配置文件、文件系统操作等场景中,用于指定文件或目录的匹配规则。ANT 表达式的语法非常直观,允许使用通配符来匹配文件名、目录名或路径中的某些部分。它类似于 Unix Shell 的路径匹配规则,但有一些特定的扩展和差异。原创 2024-12-27 11:15:56 · 714 阅读 · 0 评论 -
spring-boot控制bean的创建顺序
3、提前将bean注册为BeanDefinition。2、dependsOn注解(有效)1、order注解(不一定有效)原创 2024-04-24 11:33:06 · 440 阅读 · 0 评论 -
spring-boot接收连接数、处理请求数
application.yml配置。原创 2024-04-24 10:59:15 · 632 阅读 · 0 评论 -
优惠券相关梳理
优惠券查询优惠券领取优惠券创建转赠领取原创 2022-04-13 16:55:59 · 300 阅读 · 0 评论 -
CompletableFuture并发调用多接口组装数据返回
// 并发调用多接口private ExecutorService executorService;private CarriersModel getCarriersAsync(CustomerAvailableBenefitQueryParam param){ CompletableFuture<List<MemberCardBaseModel>> cardFuture = CompletableFuture.supplyAsync(() -> get...原创 2022-03-29 10:00:49 · 11 阅读 · 0 评论 -
ShardingJDBC笔记(未完。。)
1、什么是分库分表? A:把一个数据库该分为多个,把一张表垂直或水平分割。2、为什么要分库分表? A:当我们的请求和数据量越来越大时,受到单机服务器的性能限制和单张表数据量的限制,已经无法满足我们的需求,我们需要多台数据库分散压力,从而提高服务的整体性能。shardingSphere 概览:https://shardingsphere.apache.org/document/legacy/4.x/document/cn/overview/demo项目:pom.xml...原创 2022-03-27 19:11:10 · 366 阅读 · 0 评论 -
Dubbo异步调用方式以及在商详中的应用
Dubbo异步调用三种方式从 2.7.0 开始,Dubbo 的所有异步编程接口开始以CompletableFuture为基础基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。使用 CompletableFuture 签名的接口需要服务提供者事先定义 CompletableFuture 签名的服务,具体参见服务端异步执行接口定义: public interface AsyncService { Compl...原创 2022-03-25 17:38:29 · 2331 阅读 · 1 评论 -
MapStruct 实现 bean 高效复制
官方文档 :https://mapstruct.org/documentation/stable/reference/html/MapStruct是一个注释处理器,用于生成类型安全、性能良好和无依赖关系的bean映射代码,自动生成get、set方法;maven 依赖<properties> <org.mapstruct.version>1.4.2.Final</org.mapstruct.version></properties>..原创 2021-04-01 15:01:11 · 352 阅读 · 0 评论 -
Arthas笔记
Arthas 是什么?Arthas 是阿里巴巴中间件团队开源的一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。Arthas 能做什么?1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception2.代码为什么没有执行到?没 commit?分支搞错了?3.无法在预发 debug ,只能通..原创 2021-03-25 17:07:40 · 284 阅读 · 1 评论 -
StringBoot根据不同环境加载Log4j配置
每个工程都有多个环境,不限于开发rd,测试qa,预发pre,线上online,这些环境对日志记录的需求是不一样的,目前开发中大家为了在开发测试环境能方便看日志,都会开启控制台输出,合并到master时这里难免会出现冲突或者将控制输出代码合并到master,仅仅在线上才会应用,这就需要不同环境有不同的log4j配置,可采取以下方式:##启用配置spring: profiles: active: local1、在application.yml或者application.propertie原创 2020-12-11 15:57:22 · 1516 阅读 · 0 评论 -
Log4j2 Filter配合ACM(Nacos)实现日志降级
原有日志降级实现方式为使用LogUtil工具类,在工具类中判断ACM状态实现日志降级,缺点很明显,打印日志中的行号是LogUtil方法的行号,而不是原始代码的行号。@Slf4jpublic class LogUtil { public static void logInfo(String format, Object... arguments){ if(!AcmSwitch.logInfoSwitchON){ return; }原创 2020-12-11 15:51:34 · 568 阅读 · 0 评论 -
CurrentHashMap笔记
数组中的Node类put方法 public V put(K key, V value) { return putVal(key, value, false); } /** Implementation for put and putIfAbsent */ final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) th.原创 2020-12-10 10:58:32 · 292 阅读 · 0 评论 -
记录一次排查oom
预发环境服务发生oom,乍一看才600多MB就oom?what?why?吓得马上查看了下堆大小发现才给的512MB,真是扣,这个要扩一下。查看dump分析发现是服务接入cat引起的,接了有一段时间了现在才oom,虽然内存配小了,但是还是要确定下加大内存会不会还有oom风险。开始分析是TcpSocketSender中的DefaultMessageQueue占用了大量的内存。在代码中查找:com.dianping.cat.message.io.TcpSocketSender。该原创 2020-10-28 09:29:38 · 300 阅读 · 0 评论 -
zookeeper watch 实现原理笔记
zk三种注册监听方式:getData(),exists,getChildren。客户端发送的监听请求会放到队列中(outgoingQueue),队列会有一个 sendThread 处理,sendThread 通过发送 path 路径和 watcher 为 true ,到 server 注册 watch 事件。zk服务端会有一个 WatchManger 该类中有 HashMap<String,HashSet<Watcher>> watchTable ,key为path , Wa原创 2020-05-09 13:13:41 · 515 阅读 · 0 评论 -
Spring自定义注解实现HandlerInterceptorAdapter 拦截请求
注解类UnLoginAccessAnnotation.javaimport java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;...原创 2020-05-07 15:36:11 · 1609 阅读 · 0 评论 -
springboot实现自己的starter
666666原创 2020-02-22 16:27:17 · 336 阅读 · 0 评论 -
java线程池的实现原理笔记
线程池的实现原理“池”1、复用已有资源2、控制资源总数线程池优势1、限流,控制线程数量2、降低频繁创建和小伙线程3、对于任务响应速度更快// 固定线程数线程池Executors.newFixedThreadPoolpublic static ExecutorService newFixedThreadPool(int nThreads) { retur...原创 2020-02-19 12:12:18 · 252 阅读 · 0 评论 -
Java后台接收字符串格式时间400失败问题
前端提交了一个表单后台做插入数据,表单里面createTime是字符串的时间格式,对应后台的是Date类型的createTime字段,接收请求的时候报400参数错误,加上@RequestBody也没有用,网上查阅了一番,发现前端请求方法默认的contentType是application/x-www-form-urlencoded; 而@RequestBody注解需要使用contentType:"...原创 2018-11-06 16:03:18 · 1384 阅读 · 0 评论 -
eclipse svn下主干修改代码同步至分支(分支同步至主干同理),附图片
从主干合并到分支 注意:svn合并针对的是目的文件,比如 从主干合并到分支 意思是:在分支上操作(拉取主干上的代码) 反之 从分支合并到主干 意思是 在主干上操作(从分支上拉取代码)。这样理解的话 就知道该选择哪一项了。以下步骤亲测成功,参考了别的文章,步骤是自己走出来的!!!创建分支,在项目名称上点击右键弹出菜单,选择“Team”,再选择“Branch/Tag” 弹出下面的页面,...原创 2018-10-25 15:41:58 · 6178 阅读 · 2 评论 -
json串转java对象工具类
jar:fastjson-1.2.31.jar类名:com.alibaba.fastjson.JSONArray.class目前就使用到2个转换,前一个参数传json串,后一个参数传实体类的class json串转java对象,JSONArray.parseObject(text, clazz); json串转java List,JSONArray.parseArray...原创 2018-10-10 10:55:23 · 743 阅读 · 0 评论 -
长字符串java后台接收有时为空
这个问题原以为是后台代码写的有问题,查了一下发现是前台传的字符串过长,tomcat的server.xml中Connector没有添加配置属性maxPostSize,然后默认的长度为2097152 (2 megabytes),请求内容过大超过了tomcat的默认值,只需把maxPostSize="-1"加上就行,这里是负数代表没有限制大小,网上有些人说是0也是没有限制大小,查阅资料后发现是...原创 2018-10-10 10:37:05 · 1180 阅读 · 0 评论 -
Java List排序
// 广告排序List<Advertisement> ads=entry.getValue(); Collections.sort(ads, new Comparator<Advertisement>(){ @Override public int compare(Advertisement o1, Adve...原创 2018-08-30 18:01:08 · 174 阅读 · 0 评论 -
Java 8 流过滤List
// 获得小于18岁的用户对象List<User> list = userList.stream().filter(o ->o.getAge()<18).collect(Collectors.toList());//获得小于18岁的用户名字List<String> list = userList.stream() .filter(o ->......原创 2018-08-30 17:59:25 · 21211 阅读 · 3 评论 -
cookie取不到值
在项目中遇到html页面需要做一些记忆操作,选择把记忆操作的值存储在cookie中,遇到了某些页面可以获取有些页面获取不到,查阅了一番资料发现cookie也是有路径权限的。cookie默认路径:当前访问的servlet父路径。例如:我在http://localhost:8080/myProject/a/b/c/test.html页面设置了一个cookie,我在myProject/a/b/c...原创 2018-08-10 16:59:58 · 4115 阅读 · 0 评论 -
java 分页工具类+Mybatis拦截SQL实现分页
转载!一个比较好的分页!/** * 对Page<E>结果进行包装 * <p/> * 新增分页的多项属性,主要参考:http://bbs.youkuaiyun.com/topics/360010907 * @version 3.3.0 * @since 3.2.2 * 项目地址 : http://git.oschina.net/free/Mybatis_PageHelp...转载 2018-08-06 09:42:39 · 380 阅读 · 0 评论 -
java jxl实现通用导出excel
包:jxl-2.6.12.jar、commons-beanutils-1.9.3.jarAttributeModel.javapublic class AttributeModel { /** * @param attribute 属性 eg:age * @param name 名称 eg:年龄 * */ public AttributeM...原创 2018-08-09 16:32:19 · 438 阅读 · 0 评论 -
java 使用PropertyUtilsBean将泛型T转换为Map
包名:commons-beanutils-1.9.3.jar类名:org.apache.commons.beanutils.PropertyUtilsBean.PropertyUtilsBean()转换代码:private <T> Map<String, Object> conversionToMap(T bean) throws Exception { ...转载 2018-08-09 16:03:15 · 2999 阅读 · 0 评论 -
mybatis 高级结果映射关联的嵌套查询、一对多查询
这是mybatis的官方例子,基本上看一遍就会了,一定要先去看官方例子,这里介绍的不详细http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#select我自己用的联表查询实体类public class MemberSaleRecordsResult { private String code; pr...原创 2018-11-16 17:01:39 · 1941 阅读 · 1 评论 -
springboot集成rabbitMQ
最近公司两个项目master(主)和affiliate(从)间需要异步通信,主管选用了rabbitMQ,让我去搭建了下。rabbitMQ服务搭建参考链接:https://www.cnblogs.com/5ishare/p/6716142.html下面是affiliate(从)项目接收端,springboot集成rabbit的代码:一、pom.xml<!-- 添加spr...原创 2019-01-04 15:10:34 · 239 阅读 · 0 评论 -
java线程笔记
使用线程的目的1、并行处理,加快程序运行速度java中如何应用线程1、实现Runnable接口2、Thread3、Callable/Future带返回值的线程4、ThreadPool 线程池实际应用1、线程池,不会直接new Thread()线程中断1、thread.interrupteed();线程的几种状态:1.初始(NEW):新创建了一个线程对象,但还没有调用star...原创 2020-02-19 12:16:02 · 223 阅读 · 0 评论 -
虚拟机搭建kafka集群(Center OS 7)
操作系统:center os 7软件:jdk8、zookeepe-3.5.5、kafka2.2.0zookeeper集群部署:https://blog.youkuaiyun.com/DavidSoCool/article/details/96431181kafka下载地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.2.0/kafka_2...原创 2019-08-21 13:28:45 · 808 阅读 · 0 评论 -
springboot + dubbo + zookeeper集群
准备工作:zookeeper集群部署https://blog.youkuaiyun.com/DavidSoCool/article/details/96431181创建一个maven-archetype-quickstart一直next,工程名和Artifactid一样就行了,直接finish项目结构:在新建一个maven-archetype-quickstart,用做接口jar...原创 2019-07-25 16:11:15 · 5543 阅读 · 4 评论 -
虚拟机搭建zookeeper集群服务(Center OS 7)
操作系统:center os 7软件:jdk8、zookeepe-3.5.5jdk安装、关闭防火墙:https://blog.youkuaiyun.com/DavidSoCool/article/details/93491850zookeeper下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.5/...原创 2019-07-23 09:38:59 · 1058 阅读 · 0 评论 -
jenkins部署svn中的springboot项目
环境软件先安装好a、操作系统:center OS 7b、JDK:jdk1.8 (yum命令安装)d、Svn:(yum命令安装)e、Maven:maven3.0.5(yum命令安装)f、Jenkins(yum命令安装),Jenkins启动后插件我选择安装默认的,参考地址:https://www.jianshu.com/p/180fb11a5b96/1、配置‘系统管理 -> 全局...原创 2019-07-03 10:24:34 · 1933 阅读 · 0 评论 -
springboot集成mybatis
工具:idea数据库:mysql1、idea创建一个springboot项目选择Spring Initializr选择web,勾选Spring Web Starter ,next后finish2、在pom.xml添加mybatis和mysql依赖<?xml version="1.0" encoding="UTF-8"?><project xml...原创 2019-07-08 11:00:52 · 213 阅读 · 0 评论 -
idea svn 分支代码同步到主干 图文步骤
编辑器:idea代码管理工具:svn需求:在分支上修改了几个文件,需要同步至主干代码里。1、idea打开主干代码,先同步svn的最新代码。2、如下图,点击VCS->Integrate Project。3、选择svn地址,红框里说了是source2 to source1 所以1是主干的svn地址,也就是当前主干工程地址,2是分支svn地址。4、注意看右下角是不是...原创 2019-05-22 14:36:32 · 2977 阅读 · 0 评论 -
java jxl实现通用导入excel
jdk1.8包:jxl-2.6.12.jar、commons-beanutils-1.9.3.jar1、定义属性模型AttributeModel.javapublic class AttributeModel { /** * @param attribute 属性 eg:age * @param name 名称 eg:年龄 * @param h...原创 2019-03-26 16:31:39 · 756 阅读 · 0 评论 -
单例模式
单例模式必须私有化构造器!必须提供一个对外的公共的静态方法访问实例饿汉式// 饿汉式// 优点:没有线程安全问题// 缺点:提前实例化,暂用内存空间public class HungerSingleton { private HungerSingleton(){}; private static final HungerSingleton instance=...原创 2019-03-14 14:29:46 · 237 阅读 · 0 评论 -
简单工厂、工厂方法和抽象工厂
简单工厂// 汽车类public abstract class Car { public abstract void go();}// 比亚迪汽车public class BYD extends Car { @Override public void go() { System.out.println("BYD gogogo"); }...原创 2019-03-14 13:43:16 · 237 阅读 · 0 评论 -
java 后台返回前端Long类型丢失精度
在项目中遇到Long类型的id需要返回给前端,但是前端接收到后会出现精度丢失。解决方式是在实体类属性上加上注解:包名:jackson-databind-2.2.3.jar、jackson-annotations-2.2.3.jar@JsonSerialize(using=ToStringSerializer.class)private Long id;加上该注解后返回前端的数据...转载 2018-07-25 14:43:15 · 4025 阅读 · 0 评论