- 博客(184)
- 资源 (11)
- 收藏
- 关注
原创 .net开发:NPOI生成excel文件到磁盘
实际项目中可以指定路径到服务器,把生成的文件存放到服务器指定目录。这里演示,直接mock数据,实际项目中,替换成自己的数据源即可。使用.net工具包NPOI,生成excel文件到本地磁盘。
2024-07-10 11:00:46 311
原创 java日期格式化为json字符串,看这个就够了
java日期格式化为json字符串,看这个就够了。不管是入参还是返参,原理都是一样的。/** * json格式化注解 * 1,pattern是转化成json的格式, * 如果是入参,则把pattern格式的字符串转换成时间对象payTime。 * 如果是返参,则把时间对象payTime转换成pattern格式的字符串。 * * 2,只能处理pattern格式的字符串/只能转化成pattern格式的字符串 * "payTime...
2022-07-26 19:59:05 2282
原创 秒杀系统设计要点总结
秒杀系统设计要点1,前端静态资源缓存,提高页面响应速度,减轻服务器压力。2,微服务独立部署,加入秒杀系统崩溃,避免对其他服务造成影响。3,限流,防止系统崩溃。4,限制用户访问频率。5,把秒杀商品做成令牌,提前预热存放在redis中,秒杀的实质就是竞争redis中的令牌。6,异步生成订单(独立的订单微服务)。7,异步扣减库存(独立的库存微服务)。...
2022-07-01 13:39:59 698
原创 xxl-job实战分享
1,xxl-job如何保证同一时刻,一个分片只被一个节点调度?2,xxl-job-admin启动成功日志Connected to the target VM, address: '127.0.0.1:63157', transport: 'socket' . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ ...
2021-04-02 19:44:20 1564
原创 如果前端可以拉起2个支付页面,后端如何避免重复支付
场景:1,前端可以拉取2个支付页面,这里的支付页面,指的就是支付宝或者微信等第三方渠道的输入密码进行支付的页面。2,后端预支付接口、支付回调接口、退款接口如何设计,才能保证支付的幂等性呢?...
2021-03-23 11:13:06 865
原创 HashMap扩容测试(基于java8进行测试)
结论:初始容量为16的HashMap,当向这个集合中添加第13个键值对时,会触发扩容,扩容后的容量为32package com.cr949.auto.docs.utils;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;/** * @author cr949 * @description HashMap扩容测试 */public class HashMapCapacit.
2021-02-20 16:50:06 524 1
原创 SpringCloudZuul责任链模式实现原理知识点梳理
SpringCloudZuul责任链模式实现原理知识点梳理更多内容,可以参考之前的博文:https://blog.csdn.net/reggergdsg/article/details/99951666
2021-02-20 15:32:04 302
原创 对象深拷贝实践之Zuul对象深拷贝
源码来自zuul-core-1.1.0.jarpackage com.netflix.zuul.util;import java.io.*;/** * Deep copy of an Object. The Object must be Serializable * @author Mikey Cohen * Date: 1/31/12 * Time: 11:54 AM */public class DeepCopy { /** * Returns ...
2021-02-20 15:06:54 136
原创 log4j如何打印日志到控制台【sql语句调试】
mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl如果使用的数据库连接池是Druid,控制台打印sql如下:Creating a new SqlSessionSqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7d4826ce] was not registered for synchr...
2021-01-26 13:41:10 1057
原创 AES加密工具类AesUtils整理
package com.cr949.auto.docs.utils;import lombok.extern.slf4j.Slf4j;import org.springframework.util.Base64Utils;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import.
2021-01-21 09:43:00 3238
原创 RabbitMQ如何查看某个队列的所有消费者【问题排查】
版本:spring-rabbit-1.6.10.RELEASEspring-boot-autoconfigure-1.3.7.RELEASE使用RabbitMQ时,遇到了一个问题,发送消息以后,发现存在多个消费者,并且这个消费者并不是我写的Listener。为了找到这个消费者的IP和端口,我需要查看当前这个队列有哪些消费者。直接访问RabbitMQ管理界面http://localhost:15672,发现一个问题,就是有的消费者并不会显示到这里,并且很多情况下,消费者列表都是空.
2020-12-10 15:22:07 13581
原创 SpringBoot Actuator端点的实现原理【概括整理】
SpringBoot Actuator端点的实现原理【概括整理】版本:spring-boot-actuator-2.2.6.RELEASE概括起来,SpringBoot Actuator的实现原理如下1,Endpoint Bean@Endpoint标注的class是一个bean,是SpringBoot Actuator功能的具体的实现。 比如/actuator/beans端点对应的实现类是BeansEndpoint.class2,注入Endpoint Bean到...
2020-12-03 15:47:39 2600 4
原创 如何把项目打jar包,然后暴露接口给第三方应用提供服务【实战讲解】
如何把项目打jar包,然后暴露接口给第三方应用提供服务【实战讲解】下面这个例子,是我在开源项目CR949中使用到的部分代码,作为讲解,发布到这里。jar包中的controller,如何对外暴露接口。这样一个场景:比如,我去gitee上面,下载一个项目,打成jar包。现在呢,我想把这个jar中的一个接口暴露出来,这样我本地项目启动以后,我就可以直接访问这个接口了。例如我们的项目启动时,可以从控制台日志看到swagger2的/v2/api-docs接口注入到HandlerMapping的过...
2020-12-02 13:53:16 7584 2
原创 Swagger2的/v2/api-docs接口是如何对第三方项目暴露的【实现原理】
Swagger2的/v2/api-docs接口是如何对第三方项目暴露的呢?也就是说jar包中如何暴露接口给第三方应用?答案是:HandlerMappingswagger2实现了自己的HandlerMapping,在实现类PropertySourcedRequestMappingHandlerMapping中,把/v2/api-docs接口保存到了handlerMethods集合。然后提供了访问/v2/api-docs接口的方法lookupHandlerMethod(String urlPath,
2020-12-02 13:17:49 13200
原创 Spring boot注入RestTemplate实例的2种方式
RestTemplate是我们使用的比较多的模板,用来发送http请求。大多数情况下,需要我们自己注入到Spring IOC容器。对于低版本的spring boot,比如spring boot 1.3.7,是不支持RestTemplateBuilder创建RestTemplate实例的。怎么办呢,如下:@Beanpublic RestTemplate restTemplate() { return new RestTemplate();}如果是spring boo...
2020-12-02 09:46:39 4975
原创 spring boot 1.3.7版本和spring boot 2.2.6版本获取端口的2种方式
spring boot 1.3.7版本,直接从environment中获取端口,这种情况下,不管是否修改默认端口,都可以获取到。package com.cr949.auto.docs.config;import com.cr949.auto.docs.constants.Constants;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;...
2020-12-01 15:05:53 377
原创 如何从jdbc中获取数据库建表语句信息(表字段名称/表字段类型/表字段注释信息/表字段长度等等)
* 如何从jdbc中获取数据库建表语句信息(表字段名称/表字段类型/表字段注释信息/表字段长度等等)* 1,表字段名称* 2,表字段类型* 3,表字段注释信息这里介绍3种方式,如下:第一种方式:执行sql语句获取 select * from user_pop_info where 1 = 2第二种方式:执行sql语句获取 show create table user_pop_info第二种方式:直接从jdbc数据库连接Connection实例中获取三种方式获取的数据有一些区...
2020-11-04 11:31:23 4281 2
原创 AOP切面获取参数的一个小技巧
一般来说,我们的参数,都是通过json传递的,那么这个问题就转化成了,从json中获取指定字符串的问题。OK,这个问题就简单了。如下:public static void main(String[] args) { JSONObject jsonObject = JSON.parseObject("{\"timeStamp\":21602756894612,\"status\":0,\"results\":{\"userName\":\"yang20102\",\"userLevel.
2020-10-30 11:47:12 1730
原创 spring boot单元测试
import com.alibaba.fastjson.JSON;import lombok.extern.slf4j.Slf4j;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.Spring.
2020-10-28 17:09:29 273 1
原创 java基础:如何获取Unsafe类的实例
Unsafe类是一个final类,位于rt.jar包下,是sun公司提供的一个工具类。这个类提供了执行native方法的能力,首先,官网不推荐我们直接使用Unsafe,原因如它的名字一样,不安全。为什么不安全呢,因为native方法直接调用操作系统的指令来执行,效率很高,但是不受jvm控制,因此容易出问题。当然,如果你艺高人胆大,建议剑走偏锋!但是我们在源码中,经常能看到Unsafe的身影,那么,如何获取Unsafe实例呢?可以借鉴caffeine的做法。源码如下:publ..
2020-09-25 15:06:54 842
原创 Spring Cloud微服务开发如何在本地进行微服务间的调用
Spring Cloud微服务开发如何在本地进行微服务间的调用实际开发中,我们一般是把微服务之间的调用放到开发环境进行联调,微服务内部的代码,通过swagger接口进行测试。那么,如果我想在本地进行微服务之间的调用,该如何实现呢?思路:1,配置中心使用开发环境的配置,这样保证服务能正常启动。2,eureka使用本地localhost:8xxx/eureka,本地启动的微服务,都注册到这个地址上。spring: profiles: dev cloud: confi.
2020-09-06 16:31:29 3992
原创 阿里Fastjson:搞定json字符串转对象首字母大写的问题/格式化日期显示时间戳的问题
世界之大,无奇不有。虽然java规范明确规定字段名称首字母必须小写。但是实际开发中,总能遇到接口方强行定义成大写的情况。怎么解决呢?使用阿里fastjson即可。
2020-09-06 15:11:28 2865 7
原创 Eureka集群数据同步的设计思路梳理
Eureka集群数据同步包含两层含义:第一层含义:Eureka Client只会向一个Eureka Server注册服务。一个Eureka Client只会向一个Eureka Server注册服务,如果失败,会向其他Eureka Server进行重试,并且Eureka Client发起的注册请求是单条操作,不可能批量操作,具体实现在RetryableEurekaHttpClient.class中。第二层含义:Eureka Server集群之间,通过复制进行数据同步。Eure...
2020-08-25 18:30:04 1668
原创 Eureka源码中isReplication的业务含义是什么
官方注释是这样的:true if this is a replication event from other replica nodes, false otherwise.isReplication = true 代表这个请求是同步请求,指的是Eureka Server集群之间的数据同步。isReplication = false 代表这个请求是注册请求,指的是Eureka Client发起的服务注册请求。EurekaHttpClient.class代表的是Eureka Cli..
2020-08-25 18:19:44 767
原创 Eureka Server集群数据同步源码解析(上)Eureka Client发起数据同步请求
首先搞清楚一个问题:Eureka Server集群数据同步与Eureka Server集群数据备份,是同一个概念吗?很显然,不是一个概念。Eureka Server集群数据同步处理的是Eureka Client发起的数据同步请求。Eureka Server集群数据备份处理的是Eureka Server发起的数据备份请求。Eureka服务的启动类是EurekaBootStrap,这个类在eureka-core-1.4.6-source.jar包下。总体来说,Eureka Server集群数据...
2020-08-25 11:18:52 714
原创 原型模式使用手册,如何正确使用原型模式
原型模式属于创建型设计模式,可以重复的创建对象,并且保证效率。什么意思呢?也就是说,当我们大批量创建对象时,使用原型模式,会更高效。这里隐含1层含义:1,当数据量达到一定规模是,原型模式创建对象的效率高于new对象。真的吗,我们来试试。首先创建2个bean,一个是普通的javabean,一个是实现了Cloneable接口的javabeanpackage com.yangcq.learning.hantang.learning;import lombok.Data;...
2020-08-18 15:16:11 474
原创 使用阿里easyexcel 2.1.6版本遇到问题:NoSuchMethodError org.terracotta.statistics.StatisticsManager.tags
关键报错信息如下:2020-07-06 19:02:32,461 [SimpleAsyncTaskExecutor-2] ERROR cn.xxxxxxx.aaaaaaa.bbbbbbb.service.impl.XxxxxxxxxServiceImpl - [162 - d5db7678adcd8a35 - 9dcc97632c8bee3a] - error com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoSuc.
2020-08-04 17:24:44 4680
原创 spring cloud+mybatis+阿里Druid:如何开启配置multiStatementAllow支持一次执行多条sql
关于如何开启multiStatementAllow,一次执行多条sql,这里结合项目,来说明一下。首先搞清楚,multiStatementAllow配置在哪,其实就是阿里Druid框架中WallConfig.class中的一个属性。源码如下:package com.alibaba.druid.wall;import com.alibaba.druid.util.Utils;import com.alibaba.druid.wall.spi.WallVisitorUtils;...
2020-07-24 19:13:07 8685 2
原创 MQ和ELK,增加了日常排查问题的复杂度
最近遇到一个问题,排查了很久,才解决。这里分享一下思路,遇到问题的思路更重要,有时候,就是看你有没有思路。就怕没有了思路,那样就病急乱投医了。问题描述:
2020-07-13 12:40:38 548
原创 java8 并行流 parallelStream,在8核的机器上,启动了几个线程
java8 并行流 parallelStream,其实就是java集合接口Collection新增的一个方法。default Stream<E> parallelStream() { return StreamSupport.stream(this.spliterator(), true);}parallelStream的存在,使得处理集合多了一种选择。parallelStream的底层实现,并没有多么高大上的技术,而是我们熟知的多线程框架ForkJoin。..
2020-07-13 12:24:24 2895
原创 开发常用小工具类:list集合去重
在平时的项目维护中,我们经常会操作大批量的数据。比如,我需要把某个excel中所有的手机号复制出来,然后去重。对于这样的需求,通过今天分享的这个小工具类,可以轻松搞定。mark一下吧!package com.yangcq.learning.hantang.utils;import lombok.extern.slf4j.Slf4j;import java.util.*;/** * List去重 */@Slf4jpublic class DuplicateRemov.
2020-06-02 15:15:40 509
原创 Spring Cloud环境下多数据源的配置要点(实战)
最近在搭建Spring Cloud新项目,遇到了这个问题,记录一下,以飨读者。关于怎么配置多数据源,这里不再赘述,简单来说,就是配置多个bean,每个bean对应一个数据源。有不懂的读者,可以参考我之前的一篇博客,或者在网上搜素,都可以。如何配置多数据源这篇博客比较老了,用的是xml配置文件。但是万变不离其宗,本质上是一样的,就是注入多个bean到Spring的IOC容器中。在Spring Cloud环境下,我们配置了2个数据源以后,启动项目会报错。报错日志如...
2020-05-25 13:37:35 1434
原创 Slf4j + logback 打印日志的最佳实践
我们抛开业务逻辑,仅仅从日志的角度来考虑日志问题。集合最近对项目的日志优化,总结以下几点最佳实践。Slf4j + logback 打印日志的最佳实践1,日志级别使用不当2,谨慎使用e.printStackTrace()3,使用占位符,而不是字符串拼接4,尽量打印更少的日志5,尽量不要在for循环中log日志下面结合代码,来具体讲解。...
2020-04-03 17:49:44 1778
原创 自己动手,使用Spring Initializr从零开始搭建Spring Cloud项目
新建Project打开IDEA开发工具,File -> New -> Project然后一步步往下设置,然后到这一步,选择Spring CloudOK,继续一路往下,点finish,Spring Cloud项目创建完成。设置编译器版本,选择jdk版本等这里我使用的是JDK 1.8,当前主流的版本。具体操作不再赘述,网上一搜一大...
2020-04-02 17:06:25 2230
原创 java异常信息捕获:为什么不建议使用e.printStackTrace()
考考大家:e.printStackTrace() 会把堆栈异常信息写到哪里:1,磁盘2,内存3,文件这个问题答案不难,但是你搞清楚了以后,就不会再这样打印日志了。--------> 正确答案见下面的留言。毕竟,内存贵啊,富豪才能任性使用。码农使用的时候,要悠着点...至于该如何优雅的打印日志,可以参考我的上一篇博客《Spring Cloud如何优雅打...
2020-03-31 11:10:09 3664 3
原创 Spring Cloud如何优雅打印日志:slf4j+logback
最近在对项目的日志进行优化,主要是如何减少不必要的日志输出,如何优化日志输出的性能,以及当前code中,一些不规范的日志输出代码的优化。基于此,对java日志进行了一个系统的梳理。今天这里,主要分享一个点,干货!具体的理论就不再重复搬运了,大家可以自行搜索脑补。Spring Cloud + Slf4j + Logback 架构打印日志的正确姿势import lombok.ext...
2020-03-30 16:36:21 4422 2
Sumlime text 3 windows版本64位安装文件
2016-06-05
myeclipse破解码自动生成工具
2016-06-05
Mybatis-3完整版源代码java-source-code
2016-01-18
java实现的网页爬虫1.6版本聚焦爬虫抽取网页完整版
2016-01-17
java实现的网页爬虫1.5版本聚焦爬虫抽取网页html
2016-01-16
网页爬虫聚焦爬虫JavaSpider 1.4版本
2016-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人