java
weixin_43935720
这个作者很懒,什么都没留下…
展开
-
错误开线程的方式导致的bug
1、开线程栈溢出2、使用线程池开线程还同时捕获了异常并向上抛出,且线程池设置了主线程执行的拒绝策略,导致投资者端同时调用接口时候随机出现报错,主线程中执行了这个方法并且被dubbo捕获了异常...原创 2021-08-27 17:58:57 · 67 阅读 · 0 评论 -
java 根据html生成pdf 实现透明度
原项目中有在使用flying-saucer库来生成pdf,奈何不支持css3样式,然后遇到一个需求,客户要求设置透明度,然而百度一波,发现rgba 和 Opacity都是css3的,我当即就说这功能做不了。说是说了,做还是得做,面向百度搜索了一波,发现了WKHtmlToPdf程序,于是开始安装环境:centos7 x86_64wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12原创 2021-07-27 18:01:18 · 219 阅读 · 0 评论 -
dubbo 循环调用本服务
服务AB,A调用服务B,B中出现了调用自己,而这次调用也是通过dubbo调用B调用B,讲道理应该使用spring调用本身,而原来也没有问题,只是这次加个dubbo过滤器,导致本服务抛出的自定义异常被dubbo包装了一下无法识别,抛出意料之外的异常...原创 2021-06-28 18:50:35 · 360 阅读 · 0 评论 -
dubbo 过滤器
一、实现filter二、在META-INF下穿件dubbo文件夹创建com.alibaba.dubbo.rpc.Filter文件xxFilter=全前限定名三、在配置文件中配置dubbo.provider.filter=xxFilter或者在过滤器上加@Activate注解原创 2021-06-23 10:23:43 · 199 阅读 · 1 评论 -
对象转json字符串输出到日志
背景想要将一个对象以json的格式输出到日志中处理使用log,info(JSONObject.toJSONString(invokeLog, true));或者log,info(JSONObject.toJSONString(invokeLog, SerializerFeature.PrettyFormat));第一种实际也是调用的第二种。public class InvokeLog { private int id; private String data;}问题原创 2021-06-22 18:55:15 · 1333 阅读 · 2 评论 -
获取方法返回类型
//如果返回值类型为Result,则不再进行处理 System.out.println("getParameterType" + methodParameter.getParameterType() + "," + methodParameter.getParameterType().equals(ResponseData.class)); System.out.println("getGenericParameterType" + methodParameter.getGe原创 2021-06-11 11:11:38 · 482 阅读 · 1 评论 -
mysql中left join on多条件与where的区别
为了测试建立两张表A、B表CREATE TABLE `b` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a_id` int(11) NULL DEFAULT NULL, `is_delete` int(1) NULL DEFAULT NULL, `a_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`原创 2021-05-12 09:27:03 · 53 阅读 · 0 评论 -
mysql中的时间类型与java日期类的接收
mysql中关于时间的类型共有四个datetime,timestamp,date,time;datetime,timestamp比较相似,都是既有日期又有时间,不同的是timestamp 是时间戳,表示从1970/01/01到现在的毫秒数,因此它的范围是大于1970,而datetime则没有这个限制date表示日期,不包含时间,如果我们使用java date类来接收,时间则是00:00:00,没有范围限制time表示时间,不包含日期,如果我们使用java date类来接收,日期则是1970-01原创 2021-03-24 17:54:04 · 3107 阅读 · 0 评论 -
调用同一个类中的异步方法避免其异步注解@Async失效
大家都知道@Async注解是通过aop代理实现的,而我们调用自己类的异步方法时,绕过了aop代理从而导致其异步失效,知道原因后就好解决了,我们可以从spring上下文中取得代理对象,继而调用其异步方法。代码如下:@Servicepublic class HelloService { @Autowired ApplicationContext applicationContext; public String testAsync() throws InterruptedExcep原创 2021-03-22 11:08:49 · 6333 阅读 · 0 评论 -
@Transactional与多线程
今天发现了一段这样的代码,如下@Transactional public void longlongAfter(){ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(4, 4, 0, TimeUnit.SECONDS, new LinkedBlockingDeque<>()); threadPoolExecutor.execute(new Thread(){原创 2021-03-01 15:10:31 · 6801 阅读 · 0 评论 -
使用StringJoiner进行字符串拼接
StringJoiner是java.util包里面的一个类从源码中可以看出来也是使用的StringBuilder实现完成,一、构造方法public StringJoiner(CharSequence delimiter) { this(delimiter, "", ""); } public StringJoiner(CharSequence delimiter, CharSequence prefix,原创 2021-02-22 14:48:35 · 372 阅读 · 3 评论 -
大文件断点续传
public void uploadBySlice(UploadFileReq uploadFileReq) { byte[] bytes = uploadFileReq.getBytes(); if(bytes==null){ throw new ServiceException("请上传文件"); } String base = sysConfig.getStaticArticleAccessPath().sub.原创 2021-02-20 09:27:13 · 85 阅读 · 0 评论 -
使用json处理返回值,过滤不需要的字段
一、引入依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency>``二、方法封装```java/** * * @原创 2021-01-22 13:49:24 · 1248 阅读 · 0 评论 -
List 根据属性分组转 Map
对List数据 分类处理,我们可以使用java8的流操作数据list.stream().collect(Collectors.groupingBy(Class::getType));得到的数据key是 type,业务中想要把type 替换为 其他的字符串 返回给前端。//测试数据List<Student> list = new ArrayList<>(); list.add(new Student(1, "张三三")); list.add(ne原创 2021-01-11 13:25:54 · 749 阅读 · 0 评论 -
springcloud bus总线通知
bus 支持 kafka 和 RabbitMQ。 这里使用RabbitMQ。新建三个模块演示, A 为注册中心,抓取git仓库中的配置文件。BC项目 是客户端模块,从注册中心中获取配置文件信息。A模块配置引入消息中间件的依赖<!-- 消息总线RabbitMQ支持--> <dependency> <groupId>org.springframework.cloud</groupId>原创 2020-11-30 16:32:32 · 127 阅读 · 0 评论 -
springcloud config 的基本使用
为什么需要使用config组件?在分布式部署服务模时,常常一个模块需要部署在多台服务器上,当配置文件需要修改时,需要一台一台修改,较为麻烦,这时可以使用config 解决这个问题,将配置文件抽出。config使用一、 创建config 服务中心新建一个git仓库,用于存放我们的配置文件将需要抽出的配置文件放入git仓库根目录,文件名推荐为{模块名}-{环境}.yml,例如:config-dev.yml新建一个模块,作为配置中心,引入依赖<dependency>原创 2020-11-13 11:26:50 · 83 阅读 · 0 评论 -
springcloud gateway 的基本使用
请求路径映射1.导入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>主启动类配置文件server: port: 8002spring: ap.原创 2020-11-11 17:24:29 · 80 阅读 · 0 评论 -
springcloud hystrix rongduan的基本使用(二) Feign 中的服务降级
利用Feign 组件实现降级处理与controller层的解耦一、 配置文件支持feign: hystrix: enabled: true # 在Feign 中开启hystrix降级二、 编写Feign 接口的实现,处理降级请求@Componentpublic class PaymentFallbackServiceImpl implements PaymentService { public String info_ok() { return "Payme原创 2020-11-10 17:35:23 · 292 阅读 · 0 评论 -
springcloud hystrix 的基本使用(一) 服务降级
首先我们了解到,当服务的并发量过大的时候,接口处理的事件会被延长,因此我们消费端调用这样的接口的时候,难免会超时等,为了不返回500这样的错误,我们需要引入hystrix降级配置服务端 降级引入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hyst原创 2020-11-10 15:57:57 · 88 阅读 · 0 评论 -
springcloud openFeign 组件的基本使用
一、 引入pom 依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>二、 激活注解使用启动类上面加入@EnableFeignClients注解三、 编写ser原创 2020-11-10 10:19:44 · 172 阅读 · 2 评论 -
springcloud ribbon组件的基本使用(一)
首先在我们2.x 版本eureka 依赖中是包含ribbon,所以不需要再重复引入ribbon使用的是 template的形式@Configurationpublic class ApplicationContextConfig { @Bean @LoadBalanced //负载均衡 public RestTemplate getRestTemplate(){ return new RestTemplate(); }}默认使用轮询的方式,如果原创 2020-11-09 20:27:22 · 185 阅读 · 1 评论 -
idea 创建项目环境设置
一、文件编码格式setting->Editor->File Encodings 按照图片设置。二、注解生效激活三、java 编译版本选择四、 文件过滤方便自己记录一下来自https://www.bilibili.com/video/BV18E411x7eT?p=5,侵权删除...原创 2020-10-30 15:24:04 · 233 阅读 · 0 评论 -
spring整合cloud 版本不对应问题
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository -->&原创 2020-10-26 15:59:47 · 148 阅读 · 0 评论 -
springboot中的参数校验
//实体类import javax.validation.constraints.NotNull;import java.io.Serializable;import lombok.Data;@Datapublic class Entity implements Serializable { @NotNull(message = "开户流程id不能为空") private Long id;}============================//@Valid 开启校验原创 2020-10-19 15:23:52 · 78 阅读 · 0 评论 -
mybatis jdbcType=“DATE“ 和 jdbcType=“TIMESTAMP”
当jdbcType="DATE"类型时,返回的时间只有年月日(yyyy-MM-dd)(只有日期, 没有时间)当jdbcType=“TIMESTAMP”的时候,返回的时间是年月日和时分秒(yyyy-MM-dd HH:mm:ss)说道日期,在java 项目中 new Date() 直接可以获取到日期和时间, 但是在原来的qt项目中 日期和时间的划分就更为明确。Date,Time,DateTime,三个类组成。...原创 2020-10-19 10:32:55 · 1088 阅读 · 0 评论 -
mybatis plus自动生成代码
一、导入依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> <dependen原创 2020-10-14 13:13:29 · 102 阅读 · 0 评论 -
@ControllerAdvice注解怎么用?
第一种使用用法,全局变量。@ControllerAdvicepublic class UserAspect { @ModelAttribute() public HashMap<String, Object> mydata(){ HashMap<String, Object> map2 = new HashMap<>(); map2.put("age", 99); map2.put("gender", "原创 2020-09-29 17:29:53 · 157 阅读 · 0 评论 -
为对象的String类型赋值,避免为null。
public class InitObjectUtil { public static void initStringFieldIfNull(Object obj, String target){ Class<?> aClass = obj.getClass(); Field[] declaredFields = aClass.getDeclaredFields(); for (Field declaredField : declared原创 2020-09-28 09:21:20 · 962 阅读 · 0 评论 -
比较两个相同类型的对象的属性是否改变(反射)
工作中碰到的问题,反射解决就好public class CompareDiffUtil<V> { /** * 比较修改前后对象的差异返回map<fieldName, bool> * 属性为对象需要重写equal方法!!! * @param oldObj * @param newObj * @param <T> * @return * @throws IllegalAccessExceptio原创 2020-09-28 09:15:47 · 281 阅读 · 0 评论 -
如何获取类属性的泛型
//创建的一个实体类public class Person { private int age; private Integer age1; private List<Integer> list;}反射过程Class<?> aClass = null; try { //读取到类的class对象 aClass = Class.forName("com.code.Person");原创 2020-08-18 22:28:54 · 738 阅读 · 0 评论 -
sptingboot aop的使用
1,pom.xml导入aop依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 2,编写Controller类@RestControllerpublic c原创 2020-08-18 14:13:44 · 94 阅读 · 0 评论 -
面试题(一)
一、线程的生命周期,线程可不可以重复start开启?二、字节流和字符流的区别,是否可以相互转换?节流没有缓冲区,是直接输出的,而字符流是输出到缓冲区的。因此在输出时,字节流不调用colse()方法时,信息已经输出了,而字符流只有在调用close()方法关闭缓冲区时,信息才输出。要想字符流在未关闭时输出信息,则需要手动调用flush()方法。· 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。· 处理对象不同:字节流能原创 2020-08-17 13:59:31 · 77 阅读 · 0 评论 -
springboot security 整合 mysql
先插一个题外话springboot 整合mybatis的时候死活映射不到xml文件然后点出target 发现xml文件并没有被编译过去,springboot将xml拦截了,在pom文件中加入资源配置即可下面展示一些 内联代码片。<resources> <resource> <directory>src/main/java</directory> <inclu原创 2020-08-11 22:05:34 · 216 阅读 · 0 评论 -
地址是如何命中缓存的?
cache size 64bytescache line size 8bytes寻找一个地址是如何缓存命中的?0x0654 十六进的地址…00011001 010 100 转化为二进制根据后三位( line size 8 = 2^3)决定 offset次三位决定(64/8 = 2^3)决定index直接映射缓存定位到cache中的位置后,查看该行(cache line)的tag(剩余的位数)是否可用,第一次不可用若不可用,访问主内存可用则判断tag是否一致,一致:缓存命中不一致:访原创 2020-07-31 16:56:17 · 238 阅读 · 0 评论 -
带你初步认识Elasticsearch
这里使用docker的方式启动docker pull elasticsearch //拉取esdocker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name es01 5acf0e8da90b //启动es索引文档使用put请求,需要携带json数据索引:website类型:blogid:123DELETE请求 删除文档HEAD请求 &nb原创 2020-07-29 21:06:20 · 133 阅读 · 0 评论 -
消息队列中间件
为什么要始终消息中间件?通过消息服务中间件,提升系统异步通信,扩展解耦能力,当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。消息队列两种形式的目的地:点对点式(队列):一个发送者,多个接收者,但最终只有一个接收者能够接受处理发布订阅式(主题):一个发布者,多个接受者JMS(Java Message Service)JAVA消息服务:基于JVM消息代理规范,ActiveMQ,HornetMQ是它的实现AMQP(Advanced Message Queuing P原创 2020-07-26 16:53:41 · 104 阅读 · 0 评论 -
eclipse中将ssm的动态web项目转为maven项目
1.右键点击项目Configure -> convert to maven project2.删除原src文件(留备份)3.点击项目右键 new -> source folder,依次创建src/main/java,src/main/resourse,src/test/java,src/test/resourse,顺便地在src/main下创建webapp文件夹4.迁移文件,将我们的原src文件直接拖至src/main/java目录下,原本的WebContent下的一些jsp文件等原创 2020-07-11 18:33:24 · 1089 阅读 · 0 评论 -
springboot 配置错误页面不生效
在使用springboot的thymeleaf模板引擎的时候我们可以在templates文件下配置error/404.html 的错误文件,替换404等错误页面,我在2.3.1版本中发现不起效果了。最终我发现,在2.x版本我们需要在配置文件(application.properties)中配置spring.mvc.locale-resolver=fixed...原创 2020-07-07 22:37:40 · 860 阅读 · 1 评论 -
将springboot项目打包启动
一、pom文件增加插件<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>原创 2020-06-29 22:35:24 · 177 阅读 · 0 评论 -
注解@ResponseBody
注解@ResponseBody return int类型出错 注解@ResponseBody可以帮助你将返回的数据转换为json字符串,但是在转int 类型时会发生转换错误,两种解决办法; 1、返回string类型。 2、加gson 的jar包...原创 2018-12-06 14:30:13 · 199 阅读 · 0 评论