![](https://img-blog.csdnimg.cn/20210404165217724.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA
文章平均质量分 50
以Java为基础的框架文章
黑卡米
这个作者很懒,什么都没留下…
展开
-
golang和Java的RSA加解密互通
RSA加解密Java和GO互通原创 2022-11-04 11:40:52 · 1535 阅读 · 0 评论 -
MismatchedInlineShardingAlgorithmExpressionAndColumnException
shardingSphere原创 2022-09-17 21:04:47 · 598 阅读 · 0 评论 -
Redis储存对象和JSON字符串哪个快?
结果在工作中常有用到redis,今天好奇测试了下在序列化存储对象快,还是JSON字符串的存储方式快。先说结果,在多次使用1000次循环储存对象的测试中,储存对象比JSON要快5%左右。使用环境Java代码引用如下Jar包<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifac原创 2022-03-08 23:04:24 · 2494 阅读 · 0 评论 -
RoketMQ:create mapped file failed, server is busy or broke
起因在成功启动nameServ 和 Broker以后发送消息报错:create mapped file failed, server is busy or broke解决检查JDK的版本,特别是多个JDK的版本,要保证你使用的JDK版本环境变量里的第一个。原创 2022-02-21 12:43:36 · 2338 阅读 · 0 评论 -
MyBatis+:Failed to load driver class oracle.jdbc.driver.OracleDriver in either of HikariConfig class
介绍今天引入MyBatisPlus做多数据源访问Oracle数据库时出错。解决在pom.xml项目里添加这个依赖后,问题解决。 com.oracle.database.nls orai18n 21.1.0.0原创 2021-10-22 11:42:33 · 1570 阅读 · 0 评论 -
Docker安装Nacos使用自定义MySQL
注意如果你使用自定义数据库, 第一次启动Nacos前需要手动初始化 数据库脚本 .下载1. 下载Nacosgit clone --depth 1 https://github.com/nacos-group/nacos-docker.gitcd nacos-docker2. 修改网络3.1 创建Nacos默认的网络 example_default ,将MySQL容器的网络连接过来。docker network create example_defaultdocker network co原创 2021-10-10 20:20:20 · 1267 阅读 · 2 评论 -
CentOS开机启动jar服务
介绍公司自建服务器,有一天突然断电了,服务手动重启相当麻烦,写了一套开机启动jar服务脚本。配置1.创建开机启动文件在 /etc/systemd/system 创建 javatest.service ,内容如下 [Unit]Description=Medicine Java Service[Service]User=root# 选择在哪个目录进行工作WorkingDirectory=/home/software/jars# 执行的命令ExecStart=java -jar dj-原创 2021-06-16 17:44:00 · 625 阅读 · 0 评论 -
SprintBoot Junit 5 测试Demo
/** * 使用junit 5 测试项目的接口可用性 * * @author jianghao */@DisplayName("接口联调验收单")@SpringBootTest@TestMethodOrder(MethodOrderer.OrderAnnotation.class)public class AcceptanceTest { /** * 在每一个 @Test 之前执行一次,使用 ServletRequestAttributes 将头信息参数代入原创 2021-06-02 08:52:54 · 344 阅读 · 3 评论 -
SpringBoot框架使用restTemplate带头信息和Body去下载文件
介绍使用spring框架的restTemplate去下载文件,可以带头信息和json报文内容。示例import org.springframework.boot.web.client.RestTemplateBuilder;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpMethod;import org.springframework.http.MediaType;import o原创 2021-05-13 19:42:00 · 680 阅读 · 0 评论 -
Alibaba Sentinel流量控制的使用(一)
介绍Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保障微服务的稳定性。一个资源可以使用多个控制规则。控制规则流量使用场景:当你想限制某个方法或一段代码的访问数量、线程并发数量时使用。public static void main(String[] args) throws InterruptedException { // 配置规则. initFlowRules(); while (true)原创 2021-04-22 22:57:15 · 291 阅读 · 0 评论 -
Nacos部署及集群使用(二)
Nacos集群采用Raft选举算法构建就集群,至少三台服务器才能组合为有效的集群。如果嫌麻烦也可以单机启动,见上一章。集群启动1.在xxx/nacos/config目录下复制出示例文件,如下cp cluster.conf.example cluster.conf2.配置MySQL数据库,执行nacos-mysql.sql文件完成建表工作3.在application.propertis文件里配置MySQL连接信息4.打开cluster.conf文件,添加集群的ip和端口ip1:8848i原创 2021-04-04 22:02:13 · 387 阅读 · 0 评论 -
Nacos部署及单机使用(一)
介绍提供服务发现、可以灰度发布和一键回滚配置文件,DNS服务等。Nacos Client每5秒会发送心跳包到Nacos Server,Server没有此Client就会被注册,有的话就会更新健康状态。Nacos单机文件目录文件目录作用bin保存启用/关闭 Nacos Server 脚本confNacos Server 配置目录dataNacos数据目录logs日志目录targetNacos Jar包存放目录Docker启动nacosgi原创 2021-04-04 15:58:07 · 1044 阅读 · 0 评论 -
CentOS系统上安装redis和参数设置
介绍当一台机器部署多台服务,就需要严格的控制每个服务的内存大小,某个服务占用太多内存而导致系统崩溃,所以限制Redis所使用的缓存。安装下载并编译$ wget https://download.redis.io/releases/redis-6.2.1.tar.gz$ tar xzf redis-6.2.1.tar.gz$ cd redis-6.2.1$ make异常情况1.使用make命令提示:-bash: make: command not found,运行如下命令yum -y i原创 2021-03-23 18:47:44 · 226 阅读 · 0 评论 -
CentOS上安装Oracle JDK 8
安装JDK1.去官网下载jdk 82.当前目录安装jdkyum install jdk-xxx-linux-x64.rpm -y配置Java环境不是特殊原因需要JAVA_HOME的话可以不配置,rpm安装包一样可以执行java命令,试下java -version你就知道。1.查看Java安装路径按照下面的命令执行,最后一个命令会获得jdk的安装目录which javals -lrt /usr/bin/javals -lrt /etc/alternatives/java2.编辑环境vi原创 2021-03-13 09:43:36 · 292 阅读 · 0 评论 -
SpringBoot Logback的使用
介绍springboot引入logback jar以后,自动的会在资源根目录找logback.xml 或 logback-spring.xml文件。标签定义configuration属性作用scan当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为truescanPeriod设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。debug当此属性设置为true原创 2021-01-27 20:58:15 · 353 阅读 · 0 评论 -
SpringBoot自定义注解
@Aspect 标注类可以使用切面@Pointcut:标注方法的执行点,不需要在方法体内编写实际代码。@Around:由你来控制什么时候执行目标方法@AfterReturning:在目标方法没有异常退出时执行@Before:在目标方法之前执行@AfterThrowing:在目标方法异常退出时候执行@After: 目标方法不管是抛出异常或者正常退出都会执行/** * execution 匹配在方法执行时触发,例:execution(方法修饰符_可选 返回类型 方法名原创 2021-01-18 14:26:50 · 253 阅读 · 0 评论 -
ThreadPoolExecutor参数详解
为什么要使用ThreadPoolExecutor?线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。另外使用Executors直接去创建,允许的请求或创建的队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。参数详解public ThreadPoolExecutor(int corePoolSize,原创 2021-01-13 15:12:13 · 1141 阅读 · 1 评论 -
JVM:Java Virtual Machine Model结构(有图)
介绍本文主要解说1.8版本内存结构和回收机制,以及如何优化。名词解释1.程序计数器记录正在执行的虚拟机字节码的地址;2.虚拟机栈方法执行的内存区,每个方法执行时会在虚拟机栈中创建栈帧;3.本地方法栈虚拟机的Native方法执行的内存区;4.Java堆+元空间对象分配内存的区域;5.方法区存放类信息、常量、静态变量、编译器编译后的代码等数据;常量池:存放编译器生成的各种字面量和符号引用,是方法区的一部分。Java Client和Server JVM区别Java HotSpot S原创 2021-01-09 15:37:22 · 309 阅读 · 1 评论 -
Spring Cloud Sleuth和Zipkin的使用
介绍本文使用Sleuth和Zipkin进行分布式链路追踪,docker搭建了一个查看链路数据平台。环境配置1.运行docker命令docker run -d -p 9411:9411 openzipkin/zipkin如果使用mysql就需要用docker-compose来构建version: '2'services: zipkin: image: openzipkin/zipkin container_name: zipkin environment:原创 2020-12-29 21:33:50 · 336 阅读 · 0 评论 -
Redis:Can‘t connect to master: redis://127.0.0.1:7002 with slot ranges: [[10923-16383]]
介绍在使用redis做集群的时候,启动SpringBoot遇到的问题。2020-12-21 16:22:03.294 ERROR 2192 --- [isson-netty-2-8] o.r.cluster.ClusterConnectionManager : Can't connect to master: redis://127.0.0.1:7003 with slot ranges: [[5461-10922]]2020-12-21 16:22:03.294 ERROR 2192 ---原创 2020-12-21 16:22:54 · 7500 阅读 · 0 评论 -
MySQL优化指南
介绍本文帮助你从系统到使用去优化MySQL。字段设计1.保证业务的前题下,数据库字段设置为最小的类型。除了varchar和char以外,字段类型定义的储存空间。举个例子,你使用int类型就会占用4个字节的储存空间,int(2)只是限制数字的最大值是两位。2.MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝。三大范式设计第一范式(原子性):一个字段不能有两个意思,比如地址要把省市区拆分原创 2020-12-18 10:41:08 · 100 阅读 · 0 评论 -
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received
问题使用mybatis查询数据库的时候报错。com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at com.mysql.cj.jdb原创 2020-12-16 21:22:24 · 585 阅读 · 0 评论 -
Kafka的详细介绍和使用(有图)
介绍本文详细阐述了kafka的基本概念,以及使用SpringBoot去创建接受kafka的消息。基于docker和ZooKeeper构建了Kafka的使用环境。基本概念kakfa与zookeeper的关系?所有Broker的管理,broker 会向 zookeeper 发送心跳请求来上报自己的状态。体现在zookeeper上会有一个专门用来Broker服务器列表记录的点,节点路径为/brokers/idszookeeper 保存了 topic 相关配置,例如 topic 列表、每个 topic原创 2020-12-15 11:41:46 · 1219 阅读 · 0 评论 -
10分钟Dubbo与ZooKeeper的联使用
介绍Dubbo是一个应用的远程调用服务,还提供了统计服务的次数和调用时间,对接第三方的注册中心。本文将结合Dubbo与ZooKeeper两个框架来实现一个简单的调用过程和详细配置的讲解。使用在使用Dubbo之前请确保ZooKeeper的zkServer和zkCli已经启用了。—稍后补充流程图api配置独立的api项目模块,用于服务者实现,消费者引用此接口去调用。public interface DemoService { String sayHello(String name);原创 2020-12-10 21:28:37 · 1290 阅读 · 0 评论 -
10分钟了解ZooKeeper的使用
介绍ZooKeeper是用于分布式高性能协调服务的应用程序。它在一个简单的界面中公开了常见的服务,例如命名,配置管理,同步和组服务。您可以现成使用它来实现共识,组管理,领导者选举和状态协议。注意事项配置的服务器必须是奇数的,例:3台、5台设置好Java堆的大小,如果机器内存有4G就设置3G,因为系统缓存也需要内存,最好实际测试下,否则后果很严重…配置找到安装后ZooKeeper的conf路径,创建一个zoo.cfg文件,配置如下tickTimeZooKeeper使用的基本时间单位(毫秒)原创 2020-12-02 17:01:32 · 175 阅读 · 0 评论 -
5分钟了解Actuator的使用
介绍在你发布系统到生产环境时,SpringBoot 提供了一些额外的特征帮助你监控、管理你的应用。开始首先添加依赖到自己的工程<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <原创 2020-12-01 18:07:12 · 1776 阅读 · 0 评论 -
5分钟了解FeignClient的使用
介绍Feign是一个声明式的伪Http客户端,只需要创建一个接口并注解。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。使用下面的代码主要是为了让大家理解使用。先定义一个注册在Eureka上的Server,application.name是HelloServer。@SpringBootApplication@EnableDiscoveryClient@RestControllerpublic class HelloServerApplication {原创 2020-12-01 11:53:05 · 3898 阅读 · 1 评论 -
10分钟了解Druid的使用
介绍Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池、监控、防SQL注入和日志等用途的Filter。(吐槽下官网的文档实在太乱了,国外的开源项目文档真的好太多了)使用1.使用yml进行主从服务器的配置,若还有可以slave-one、slave-two继续加。也可以用java bean配置,这里不再列举。# 数据源配置spring: datasource: type: com.alibaba.druid原创 2020-12-01 10:38:27 · 1304 阅读 · 0 评论 -
10分钟了解Eureka
介绍Eureka Server之间可以相互注册,就算其中一个挂掉了也不会影响系统的运行。而系统中的其他微服务,使用eureka client连接到eureka server并维持心跳连接。这样系统的维护人员就可以通过eureka server来监控系统中各个微服务是否正常运行。Eureka包含两个组件:Eureka Server和Eureka Client。架构图流程图server配置配置服务,可以多创建几个,只是端口不一样而已server: port: 8761spring:原创 2020-11-25 16:11:28 · 237 阅读 · 0 评论 -
8分钟了解Ribbon的使用
介绍Ribbon是一个客户端负载均衡器,通过一定的逻辑选择服务。高级功能可以根据客户端划分的区域来建立联系以减少延迟。基础组件IRule决定使用哪个一个服务器去提供服务。实现类描述RandomRule随机选择已经有的serverBestAvailableRule选择并发请求最少的serverRoundRobinRule轮询RetryRule传入一个IRule,当IRule失败的时候重试一次ClientConfigEnabledRoundRobin原创 2020-11-24 09:33:52 · 694 阅读 · 0 评论 -
5分钟了解SpringCloud Gateway的使用
介绍通过Gateway可以统一的为所有微服务进行鉴权、日志、限流等操作。在没gateway类似的框架之前,你需要在每个微服务里放安全、日志、限流的代码。Route(路由)由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果Predicate(断言)为真,则路由匹配,匹配举例:/info 。Predicate(断言)用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。Filter(过滤器)用它修改请求和响应。uri断言匹配后,跳转哪个URI,例:http://原创 2020-11-19 16:35:41 · 347 阅读 · 0 评论 -
5分钟了解SpringSecurity的使用
介绍必须在Java 8或者更高的环境。SpringSecurity储存的密码都是加密后的,就算被泄漏黑客也不会知道原密码是什么。Github示例:sample代码配置添加maven的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId>原创 2020-11-16 17:55:49 · 176 阅读 · 0 评论 -
在IDEA下安装VisualVM Launcher
安装IDEA插件在Plugins里安装VisualVM Launcher插件如果不行用下面的地址下载安装https://plugins.jetbrains.com/plugin/7115-visualvm-launcher/versionsVisualVM Launcher客户端https://visualvm.github.io/download.html使用IDEA插件和客户端都安装好以后,直接运行,运行时会让你选择客户端文件,选中【VisualVM Launcher客户端】bin目录原创 2020-11-11 12:19:35 · 972 阅读 · 0 评论 -
Java Stream性能测试
public class StreamPerformance { public static void main(String[] args) { Random random = new Random(); List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10000000; i++) { list.add(random.next原创 2020-11-02 15:55:50 · 459 阅读 · 0 评论 -
java.net.SocketException
第1个异常是java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat –an命令,可以看到一个Listending状态的端口。只需要找一个没有被转载 2014-07-30 16:15:53 · 1222 阅读 · 1 评论 -
Java运算符详解& >> <<
&/** * 111二进制是:1101111 * 11 二进制是:1011 * ---11的二进制不够的补0,补完之后是0001011--- * 对比1101111和0001011的结果是0001011,去掉前面的3个0就是1011,然后转十进制是11 */ System.out.println(111&11);原创 2014-06-20 18:27:12 · 977 阅读 · 0 评论 -
com.google.gson.stream.MalformedJsonException的解决办法
关于Gson解析的异常,我花费两个小时才调试出来。如果你程序出现以下的异常,有两种可能性:‘1. 找到一个JSON格式的验证工具,这个网上很多大家可以百度下2.你的JSON格式验证没有问题,却一直报这个解析错误,请确定你在IO流读取的时候没有多读取空格com.google.gson.JsonSyntaxException: com.google.gson.stream.Malfor原创 2013-10-18 10:41:25 · 69772 阅读 · 13 评论