java
文章平均质量分 67
王火火
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JPA 中对象 set 属性时自动保存
jpa实体类托管会自动set保存原创 2022-11-29 13:38:34 · 1033 阅读 · 0 评论 -
JPA 自动映射到DTO 且 dto中字段驼峰命名
service @Transactional(readOnly = true) public List<ReferralStatisticsDTO> getStatistics(Map<String, Object> params) {// String startDate = (String) params.get("start_date");// String endDate = (String) params.get("end_date原创 2021-12-01 14:45:00 · 1440 阅读 · 0 评论 -
基于Redisson实现Redis分布式锁
基于Redisson实现Redis分布式锁 https://riemann.blog.youkuaiyun.com/article/details/104763755@Controllerpublic class RedisLockController { private static final Logger LOGGER = LoggerFactory.getLogger(RedisLockController.class); @Resource private RedissonCl原创 2021-08-26 14:44:26 · 425 阅读 · 0 评论 -
使用Lombok并在类中添加注释@builder,建造者模式
最近在看别人的项目时,我发现会有这样一种写法。借助外部工具使用建造者模式从使用的角度看,我觉得它很好用,代码也很好看。事实上,我们都把逻辑写到domain类中,这需要时间来写。我的第一印象是,一定有一种方法可以通过一次点击就生成这样一个通用的东西,所以我把目标瞄准了Lombok。当然,如果我们使用Lombok并在类中添加注释@builder,我们就可以使用builder模式的代码了,这非常方便。b6c3b3fe545f2c81015c6d428b9b519d.png我想了一下现在的IDEA那么原创 2021-08-26 09:48:46 · 429 阅读 · 0 评论 -
淘宝并发架构历程
奇迹每天都在发生,等你而来1、概述本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。2、基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。1)什么是分布式?系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的T..原创 2021-06-18 14:42:27 · 490 阅读 · 0 评论 -
VMWare linux 网络配置
1、VMWare 中三种网络配置(1)、桥连接:Linux 可以和其它的系统通信。但是可能造成 ip 冲突。(2)、NAT:网络地址转换方式:Linux 可以访问外网,不会造成 ip 冲突。(3)、主机模式:你的 Linux 是一个独立的主机,不能访问外网。2、进行CentOS网络配置:约定:将 Linux 中 ip 固定为 192.168.100.101(1)、打开本地连接,开启 Internet 连接共享。(2)、配置虚拟网卡网络信息(VMnet8)【设为固定 ip,原创 2021-06-10 13:39:12 · 1506 阅读 · 0 评论 -
Windows环境下4种RocketMQ 集群搭建
1.单Master模式这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。具体部署参考另一篇文章 Windows环境下单机安装RocketMQ2.多Master模式一个集群无Slave,全是Master,例如2个Master或者3个Master,这种模式的优缺点如下:优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异原创 2021-06-03 16:55:49 · 711 阅读 · 0 评论 -
Windows环境下安装RocketMQ
一.预备环境1.系统Windows2. 环境JDK1.8、Maven、Git二. RocketMQ部署1.下载1.1地址:http://rocketmq.apache.org/release_notes/release-notes-4.3.0/1.2选择‘Binary’进行下载1.3解压已下载工程2. 配置2.1 系统环境变量配置变量名:ROCKETMQ_HOME变量值:MQ解压路径\MQ文件夹名eg、ROCKETMQ_HOME=D:\dev\rocketmq-all...原创 2021-06-02 18:05:17 · 415 阅读 · 2 评论 -
淘宝高并发架构发展史
奇迹每天都在发生,等你而来1、概述本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。2、基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。1)什么是分布式?系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部原创 2021-06-02 16:35:45 · 395 阅读 · 0 评论 -
微服务搭建三:nacos服务注册
在这里我们将注册进三个服务: 一个订单微服务,两个支付微服务,并且订单微服务通过ribbon调用支付微服务实现负载均衡,下一步将使用gateway网关三个maven依赖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" ...原创 2021-06-02 10:04:33 · 333 阅读 · 3 评论 -
微服务搭建二:nacos源码编译打包
1. 从github下载nacos的源码https://github.com/alibaba/nacos.git2. 在命令行执行 :如果是windows不要在power shell上执行mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U3. 生成的jar包在nacos\distribution\target目录下4. 解压上面的包,进入bin目录启动命令:startup.cmd -m standa...原创 2021-06-01 13:58:20 · 1427 阅读 · 0 评论 -
微服务搭建一:nacos使用源码搭建服务端
nacos服务器搭建搭建方式是使用源码打包进行构建,代码我是从码云上面拉取的,下载会比较快-链接:https://gitee.com/mirrors/Nacos?_from=gitee_search,下载完只需要运行consule模块,就好了,但是直接运行会报错.原因是nacos默认启动是集群模式,集群模式是需要加载数据库配置,还有一个启动模式是单机模式,只要在idea启动的Vm options 加上一个参数就好了,-Dnacos.standalone=true再次启动就好了,控制台原创 2021-06-01 13:30:20 · 723 阅读 · 0 评论 -
Apache Camel快速入门(下)
3-5、Service与生命周期在Apache Camel中有一个比Endpoint、Component、CamelContext等元素更基础的概念元素:Service。Camel官方文档中对Service的解释是:Camel uses a simple lifecycle interface called Service which has a single start() and stop() method.Various classes implement Service such as原创 2021-04-30 15:22:00 · 2408 阅读 · 0 评论 -
Apache Camel快速入门(中)
3-3、Processor 处理器Camel中另一个重要的元素是Processor处理器,它用于接收从控制端点、路由选择条件又或者另一个处理器的Exchange中传来的消息信息,并进行处理。Camel核心包和各个Plugin组件都提供了很多Processor的实现,开发人员也可以通过实现org.apache.camel.Processor接口自定义处理器(后者是通常做法)。既然是做编码,那么我们自然可以在自定义的Processor处理器中做很多事情。这些事情可能包括处理业务逻辑、建立数据库连接去做业原创 2021-04-26 17:09:48 · 2780 阅读 · 0 评论 -
Apache Camel快速入门 上
1、本专题主旨1-1、关于技术组件 在这个专题中,我们介绍了相当数量技术组件:Flume、Kafka、ActiveMQ、Rabbitmq、Zookeeper、Thrift 、Netty、DUBBO等等,还包括本文要进行介绍的Apache Camel。有的技术组件讲得比较深入,有的技术组件则是点到为止。于是一些读者朋友发来信息向我提到,这个专题的文章感觉就像一个技术名词的大杂烩,并不清楚作者的想要通过这个专题表达什么思想。提出这个质疑的朋友不在少数,所以我觉得有必要进行一个统一的说明。这个专题的名.原创 2021-04-22 16:35:34 · 4406 阅读 · 1 评论 -
JPA 中 @DynamicInsert 和 @DynamicUpdate 的使用方法
@DynamicInsert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句中,默认false。比如希望数据库插入日期或时间戳字段时,在对象字段为空定的情况下,表字段能自动填写当前的sysdate。@DynamicUpdate属性:设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false。比如只想更新某个属性,但是却把整个.原创 2021-03-04 11:02:25 · 1106 阅读 · 2 评论 -
Java多线程 以7种方式让主线程等待子线程结束
一、while循环对于“主线程如何获取子线程总运行时间”的问题,最开始想到的是使用while循环进行轮询:Thread t = new Thread(() -> { //子线程进行字符串连接操作 int num = 1000; String s = ""; for (int i = 0; i < num; i++) { s += "Java"; } System.out.println("t Over");});//开始计时原创 2020-12-07 16:11:04 · 552 阅读 · 1 评论 -
Java 线程资源限制 java.util.concurrent.semaphore
什么是Semphorejava.util.concurrent.Semaphore 类是一个计数信号量。计数信号量由一个指定数量的 “许可” 初始化。每调用一次 acquire(),一个许可会被调用线程取走。每调用一次 release(),一个许可会被返还给信号量。因此,在没有任何 release() 调用时,最多有 N 个线程能够通过 acquire() 方法,N 是该信号量初始化时的许可的指定数量。这些许可只是一个简单的计数器。主要常用方法acquire()public void acquire转载 2020-11-27 17:08:29 · 404 阅读 · 0 评论 -
java 开启一个新线程处理 , 分线程调起主线程方法
开启一个新线程: Thread thread = new Thread(new Runnable() { public void run() { WebSocketImpl.DEBUG = false; int port = 8561; // 端口 WsServer s = new WsServer(port); s.start();...原创 2020-07-15 11:11:10 · 525 阅读 · 0 评论 -
使用cmd webservice wsdl网址生成客户端代码
1.必须安装jdk环境2.打开cmd3. 尝试使用wsimport命令命令参数说明:-d:生成客户端执行类的class文件的存放目录(默认存放在C:\Users\Administrator\)包含.java和.class文件-s:生成客户端执行类的源文件的存放目录(默认存放在C:\Users\Administrator\)只包含.java文件-p:定义生成类的包名...转载 2020-03-04 09:17:24 · 477 阅读 · 0 评论 -
swagger配置 及 踩坑 @Api参数postion无效 解决接口排序问题
添加maven依赖<!-- 集成swagger2 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version>&...原创 2020-01-09 15:09:57 · 11059 阅读 · 2 评论 -
Swagger2 非全局、无需重复输入的Head参数(Token)配置
优化方案如下:通过Swagger2的securitySchemes配置全局参数:如下列代码所示,securitySchemes的ApiKey中增加一个名为“Authorization”,type为“header”的参数。private List<ApiKey> securitySchemes() { return newArrayList( ...原创 2020-01-09 10:18:00 · 1464 阅读 · 1 评论 -
Swagger2 整合springboot 2.X
swagger是什么?随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、先后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更好的书写API文档的框架。swagger优点?完全实现了前后端交互的实时性,可以随时对更改的接口...原创 2020-01-09 00:07:12 · 369 阅读 · 0 评论 -
Windows中redis的下载及安装、设置
除了原文的东西还有自己遇到的一些问题,这里记录一下。一、下载:下载地址:https://github.com/MicrosoftArchive/redis/releases根据系统下载的版本:以(64位为例)下载后一般解压到根目录下:如(E:\Redis-x64-3.2.100)二、安装:打开cmd命令窗口,使用命令进行安装和注册redis到window服务...原创 2020-01-08 13:45:08 · 360 阅读 · 0 评论 -
各种stream操作:从集合中获取符合条件的元素
java8stream操作:从集合中获取符合条件的元素 List<Student> students = new ArrayList<>(); students.add(new Student(1,"张三",90)); students.add(new Student(2,"李四",60)); students....原创 2020-01-07 18:32:58 · 4100 阅读 · 0 评论 -
用IDEA生成javadoc文档 javadoc注释规范
1用IDEA生成javadoc文档打开相应的选项面板设置-encoding是java代码编码,-charset是对生成文档所用的编码。-windowtitle就是对应html的<title>标签 1 -encoding UTF-8-charset UTF-8-windowtitle"test" 结果...原创 2020-01-07 06:38:48 · 3422 阅读 · 0 评论 -
spring-boot-devtools 实现热部署
1.devtools spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。2.项目搭建 本文是采用IDEA搭建的Spring Boot应用,通过spring-boot-devtools配置,可以支持修改java文件会自动重启程序,一些资源无需触发...原创 2020-01-01 22:54:54 · 331 阅读 · 0 评论 -
自定义注解之编译时注解(RetentionPolicy.CLASS)(三)—— 常用接口介绍
前面介绍了关于编译时注解的使用方式,这里再补充一个关于注解处理器开发中的一些常用类、接口的使用方式和概念。Element和TypeMirror我觉得这两个是开发注解处理器最重要的两个概念,理解这两个的概念和使用是非常有必要的。这两个都是接口,先来看一下Element的定义:/*** 表示一个程序元素,比如包、类或者方法,有如下几种子接口:* ExecutableEleme...转载 2020-01-01 11:43:03 · 515 阅读 · 0 评论 -
自定义注解之编译时注解(RetentionPolicy.CLASS)(二)——JavaPoet
在使用编译时注解时,需要在编译期间对注解进行处理,在这里我们没办法影响程序的运行逻辑,但我们可以进行一些需处理,比如生成一些功能性代码来辅助程序的开发,最常见的是生成.java 源文件,并在程序中可以调用到生成的文件。这样我们就可以用注解来帮助我们处理一些固定逻辑的重复性代码(如butterknife),提高开发的效率。通过注解处理器来生成.java源文件基本上都会使用javapoet这...转载 2020-01-01 11:24:52 · 399 阅读 · 0 评论 -
自定义注解之编译时注解(RetentionPolicy.CLASS)(一)
Java注解基础概念总结自定义注解之编译时注解(RetentionPolicy.CLASS)(一)自定义注解之编译时注解(RetentionPolicy.CLASS)(二)——JavaPoet自定义注解之编译时注解(RetentionPolicy.CLASS)(三)—— 常用接口介绍说到编译时注解(RetentionPolicy.CLASS)都要和注解处理器(Annotation ...转载 2019-12-31 15:12:18 · 540 阅读 · 0 评论 -
使用JavaBean 、Map作为参数对比
创建10,000,000个bean,耗时:7138ms,内存占用634m创建10,000,000个map,CPU,内存满了,最后Java heap space,没有结果。(数据大体上是这样)在创建对象数量不多的情况下,map比bean在速度上占优势,超过5000,map已不占优势,但差距不大。随着数量的增加,javabean优势越来越明显。JavaBean只是在创建的时候耗时略长...原创 2019-12-31 15:01:11 · 1537 阅读 · 0 评论 -
Java 数组如何转成List集合
String[] array = {"a","b","c"};参考stackoverflow总结如下几种写法:1.使用原生方式,拆分数组,添加到ListList<String> resultList = new ArrayList<>(array.length);for (String s : array) { resultList.add(...原创 2019-12-30 13:24:59 · 385 阅读 · 0 评论 -
SpringBoot CORS方式实现跨域
前言什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 。 跨域资源访问是经常会遇到的场景,当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源便会发起一个跨域 HTTP 请求。出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求。vCORS方式实现跨域跨域的方式有很多种, 今天主要介绍CORS(网络通信...转载 2019-12-30 11:03:57 · 289 阅读 · 0 评论 -
不止于springboot、cloud整合的学习记录进度(流水账;更新中)
????注:本文仅仅是作者记录进度的,基于springboot搭建基础框架,有什么好建议请评论里留言。1、建立好目录2、配置连接池Druid,Druid的web监控 sql访问速度3、配置连接mysql数据库,设置项目启动端口和encoding编码4、配置拦截器 用基础功能,对项目日志记录、生成log文件。5、配置 父 实体类。lombok引用 创建人和修改人动态获取...原创 2019-11-12 16:10:41 · 953 阅读 · 0 评论 -
json处理 net.sf.json
使用net.sf.json需要导入的包<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib --><dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib&l...原创 2019-12-20 09:56:56 · 583 阅读 · 0 评论 -
JPA批量操作及性能比对
假设需要批量插入10000条实体数据至数据库。如下是各个操作方法及耗时环境Spring boot1、JDBC(JdbcTemplate)pom.xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter...转载 2019-11-28 11:49:04 · 1421 阅读 · 0 评论 -
线程安全实体管理器助手,EntityManager对象
import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;public class EntityManagerHelper { private static final EntityManage...原创 2019-11-25 11:53:33 · 838 阅读 · 0 评论 -
java8 双冒号
public class MyTest { public static void printValur(String str){ System.out.println("print value : "+str); } public static void main(String[] args) { ...原创 2019-11-25 10:17:07 · 184 阅读 · 0 评论 -
Spring MVC之@ControllerAdvice
对于@ControllerAdvice,我们比较熟知的用法是结合@ExceptionHandler用于全局异常的处理,但其作用不仅限于此。ControllerAdvice拆分开来就是Controller Advice,关于Advice,前面我们讲解Spring Aop时讲到,其是用于封装一个切面所有属性的,包括切入点和需要织入的切面逻辑。这里ContrllerAdvice也可以...转载 2019-11-24 09:30:06 · 329 阅读 · 0 评论 -
利用动态反射将map对应字段转化为Bean对象字段
很多情况下,map对应的属性字段需要转化为model类的属性字段,前几天工作中需要将四五十个对应字段转化为bean对象的字段,如果单纯的考get/set进行重复代码的封装,太枯燥又繁琐,现使用动态反射的方式对所有字段进行批量转化。但前提是两者的字段名得保持一致才行。/*** 将Map对象通过反射机制转换成Bean对象** @param mapResult 存放数...转载 2019-11-14 09:15:43 · 585 阅读 · 0 评论
分享