自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (11)
  • 收藏
  • 关注

原创 Java后端解决跨域问题

在发送请求结果前添加下面代码this.getResponse().setHeader("Access-Control-Allow-Origin", "*");this.getResponse().setHeader("Access-Control-Allow-Methods", "POST, GET,PUT, OPTIONS, DELETE,OPTIONS");this.getResponse().setHeader("Access-Control-Allow-Headers", "Authoriza

2020-07-29 17:24:38 185

原创 Java获取post请求json格式参数(raw)

//this.getRequest()此处需要先获取HttpServletRequest对象拿到输入流BufferedReader br = new BufferedReader(new InputStreamReader(this.getRequest().getInputStream(), "UTF-8"));String line = null;StringBuilder sb = new StringBuilder();while ((line = br.readLine()) != nu.

2020-07-29 17:06:26 5710

原创 Java调用http接口(get、post)

1.示例get请求,参数可以拼接在url上post请求,参数使用json字符串package org.example;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.ByteArrayEntity;

2020-07-29 16:21:17 1206

原创 JVM 5:垃圾回收器-HostSpot的细节实现

垃圾回收器1.三色标记2.三色标记的问题2.1CMS 中的解决方案2.2G1 中的解决方案1.三色标记在三色标记法之前有一个算法叫 Mark-And-Sweep(标记清除)。这个算法会设置一个标志位来记录对象是否被使用。最开始所有的标记位都是 0,如果 发现对象是可达的就会置为 1,一步步下去就会呈现一个类似树状的结果。等标记的步骤完成后,会将未被标记的对象统一清理,再次把所有的标记位 设置成 0 方便下次清理。这个算法最大的问题是 GC 执行期间需要把整个程序完全暂停,不能异步进行 GC 操作。因

2020-07-28 19:35:45 872

原创 Kafka 10:集群与可靠的数据传输

集群与可靠的数据传输1.集群的成员关系2.什么是控制器3.复制-Kafka 的核心3.1replication-factor3.2副本类型3.3工作机制4.处理请求的内部机制4.1生产请求4.2获取请求4.3ISR5.物理存储机制5.1分区分配5.2文件管理5.3文件格式5.4索引5.5超时数据的清理机制6.可靠的数据传递6.1Kafka 提供的可靠性保证和架构上的权衡6.2复制7.Broker 配置对可靠性的影响7.1复制系数7.2不完全的首领选举7.3最少同步副本8.可靠系统里的生产者8.1发送确认8.

2020-07-26 19:43:13 599 1

原创 JVM 4:垃圾回收机制及回收算法

垃圾回收机制及回收算法1.垃圾回收基础知识1.1 GC(垃圾回收)1.2分代回收理论1.3GC 分类2.垃圾回收算法2.1复制算法(Copying)2.2标记-清除算法(Mark-Sweep)2.3标记-整理算法(Mark-Compact)3.JVM 中常见的垃圾回收器3.1Serial/Serial Old3.2Parallel Scavenge(ParallerGC)/Parallel Old3.3ParNew3.4Concurrent Mark Sweep (CMS)3.5Garbage First(

2020-07-25 18:13:07 253

原创 JVM 3:对象及引用

JVM 中的对象及引用1.JVM 中对象的创建过程2.对象的内存分配2.1检查加载2.2分配内存2.3内存空间初始化2.4设置2.5对象初始化3.对象的内存布局4.对象的访问定位4.1句柄4.2直接指针5.判断对象的存活5.1引用计数法5.2可达性分析5.3Class回收5.4Finalize 方法6.各种引用6.1强引用6.2软引用SoftReference6.3弱引用WeakReference6.4虚引用 PhantomReference7.栈上分配8.对象的分配策略8.1对象优先在 Eden 区分配8

2020-07-22 21:57:22 294 1

原创 模板模式

1.模板模式在父类中定义主体流程,封装公共方法,预留钩子方法,由继承的子类实现。2.创建抽象父类Fatherpackage org.example.template;public abstract class Father { //定义业务流程 public void life() { study(); work(); love(); } //公共方法 public void study() {

2020-07-22 16:58:46 109

原创 委托模式

1.委托模式一个对象接收到了请求,但是自己不处理,交给其他的对象处理2.创建接口Companypackage org.example.entrust;public interface Company { void product();}3.创建实现类Mysqlpackage org.example.entrust;public class Mysql implements Company { @Override public void product()

2020-07-22 16:29:10 132

原创 装饰器模式

1.装饰器模式一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。优点:灵活性:装饰器模式将功能切分成一个个独立的装饰器,在运行期可以根据需要动态的添加功能,甚至对添加的新功能进行自由的组合;扩展性:当有新功能要添加的时候,只需要添加新的装饰器实现类,然后通过组合方式添加这个新装饰器,无需修改已有代码,符合开闭原则;与代理模式的区别:装饰器模式偏重对原对象功能的扩展,扩展后的对象仍是是对象本身;然而代理模式偏重

2020-07-22 15:41:28 621

原创 建造者模式(静态内部类)

1.建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。建造者模式类图如下:Product:要创建的复杂对象Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建;ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例;Director:调用具体建造

2020-07-21 16:52:44 858

原创 策略模式

1.定义对一系列算法进行封装并定义一个抽象的接口,通过继承该接口实现具体的算法。策略模式让算法可以独立于使用它的客户而改变。 (使用策略模式可以减少大量的if,else if)缺点:1)客户端必须知道所有的策略类,并自行决定使用哪一个策略类;2)略模式造成很多的策略类。...

2020-07-20 16:38:07 95

原创 代理模式

1.设计模式原则单一职责原则:一个类或者一个接口只负责唯一项职责,尽量设计出功能单一的接口;依赖倒转原则:高层模块不应该依赖低层模块具体实现,解耦高层与低层。既面向接口编程,当实现发生变化时,只需提供新的实现类,不需要修改高层模块代码;开放-封闭原则:程序对外扩展开放,对修改关闭;换句话说,当需求发生变化时,我们可以通过添加新模块来满足新需求,而不是通过修改原来的实现代码来满足新需求;迪米特法则:一个对象应该对其他对象保持最少的了解,尽量降低类与类之间的耦合度;里氏代换原则:所有引用基类(父类)

2020-07-20 15:45:21 388

原创 Kafka 9:分区再均衡

1.再均衡1表示,新增一个消费者3;再均衡2表示,去掉一个消费者3;每次再均衡都会从数据库读取最新的偏移量开始消费2.再均衡监听器消费者在退出和进行分区再均衡之前,会做一些清理工作比如,提交偏移量、关闭文件句柄、数据库连接等。在为消费者分配新分区或移除旧分区时,可以通过消费者 API 执行一些应用程序代码,在调用 subscribe()方法时传进去一个 ConsumerRebalancelistener 实例就可以了。ConsumerRebalancelistener 有两个需要实现的方法。

2020-07-18 21:59:31 756 2

原创 JVM 2:内存区域

JVM 的内存区域1.运行时数据区域2.JAVA 方法的运行与虚拟机栈3.虚拟机栈4.栈帧执行对内存区域的影响5.程序计数器6.本地方法栈7.方法区8.符号引用9.常量池与运行时常量池10.元空间11.堆12.直接内存(堆外内存)1.运行时数据区域运行时数据区的定义:Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。Java 引以为豪的就是它的自动内存管理机制。相比于 C++的手动内存管理、复杂难以理解的指针等,Java 程序写起来就方便的多。所以要深入理解

2020-07-18 19:04:55 217 1

原创 JVM 1:基础知识

一、JVM从编译到执行1.Java 程序的执行过程一个 Java 程序,首先经过 javac 编译成 .class 文件,然后 JVM 将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数。JVM 作为 .class 文件的翻译存在,输入字节码,调用操作系统函数。过程如下:Java 文件->编译器>字节码->JVM->机器码。JVM 全称 Java Virtual Machine,也就是我们耳熟能详的 Java 虚拟机。它能识别 .class

2020-07-18 18:41:40 259

原创 Oracle创建视图

1.登陆管理员用户shz,创建用户jhq,密码password,表空间jhq_tablespacecreate user jhq identified by password default tablespace jhq_tablespace;2.赋权限-创建session,创建view,查询tablegrant create session,create any view,select any table to jhq;3.通过users表,创建视图to_jhq_viewcreate or

2020-07-17 17:04:08 370

原创 Oracle修改查看及修改表空间大小

查看使用情况 SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name FROM dba_free_space GROUP BY tablespace_name; SELECT a.tablespace_name, a.bytes total, b.bytes used, c.bytes free, (b.bytes * 100) / a.bytes "% USED ",

2020-07-17 16:46:33 415

原创 Oracle安装后检查内容,ORA-12541:TNS:no listener错误解决方法

1.关闭防火墙2.windows查看端口netstat -an3.修改oracle监听ip(0.0.0.0:1521),如果显示"127.0.0.1:1521 Listener" 则无法链接oracle,会提示ORA-12541:TNS:no listener错误4.解决方法,修改listener.ora,tnsnames.ora文件内,localhost为计算机名:DESKTOP-2VKHBJ5.telnet 1521检查端口是否工作...

2020-07-17 16:33:43 3257

原创 Oracle数据导出导入

windows导出如果需要导出空表,需要先执行"select ‘alter table ‘||table_name||’ allocate extent;’ from user_tables where num_rows=0;",然后将查询出来的结果运行一遍。1、完全模式:EXP username/password BUFFER=64000 FILE=C:\FULL.DMP FULL=Y如果要执行完全导出,必须具有特殊的权限2、用户模式:EXP username/password BUFFER

2020-07-15 14:10:50 171

原创 Oracle创建用户并赋权限

1.创建表空间CREATE SMALLFILE TABLESPACE username_tablespace DATAFILE ‘F:\app\Administrator\oradata\orcl\ username_tablespace.dbf’ SIZE 1000M AUTOEXTEND ON NEXT 100M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;2.创建用户CREATE USER username PROF

2020-07-15 11:03:03 457

原创 Kafka 8:消费者手动提交偏移量(解决消息丢失与重复消费问题)

1.消费者提交偏移量导致的问题当我们调用 poll 方法的时候,broker 返回的是生产者写入 Kafka 但是还没有被消费者读取过的记录,消费者可以使用 Kafka 来追踪消息在分区里的位 置,我们称之为偏移量。消费者更新自己读取到哪个消息的操作,我们称之为提交。消费者是如何提交偏移量的呢?消费者会往一个叫做_consumer_offset 的特殊主题发送一个消息,里面会包括每个分区的偏移量。发生了再均衡之后, 消费者可能会被分配新的分区,为了能够继续工作,消费者者需要读取每个分区最后一次提交的偏

2020-07-13 22:49:42 6868 4

原创 Kafka 7:自定义分区器

1.分区我们在新增 ProducerRecord 对象中可以看到,ProducerRecord 包含了目标主题,键和值,Kafka 的消息都是一个个的键值对。键可以设置为默认的 null。键的主要用途有两个:一,用来决定消息被写往主题的哪个分区,拥有相同键的消息将被写往同一个分区,二,还可以作为消息的附加消息。如果键值为 null,并且使用默认的分区器,分区器使用轮询算法将消息均衡地分布到各个分区上。如果键不为空,并且使用默认的分区器,Kafka 对键进行散列,然后根据散列值把消息映射到特定 的分

2020-07-12 15:56:07 445

原创 Kafka 6:生产者顺序发送

顺序保证Kafka 可以保证同一个分区里的消息是有序的。也就是说,发送消息时,主题只有且只有一个分区,同时生产者按照一定的顺序发送消息, broker 就 会按照这个顺序把它们写入分区,消费者也会按照同样的顺序读取它们。如果某些场景要求消息是有序的,那么消息是否写入成功也是很关键的,所以不建议把 retires 设为 0(不重试的话消息可能会因为连接关 闭等原因会丢) 。所以还是需要重试,同时把 max.in.flight.request.per.connection 设为 1,这样在生产者尝试发送第一

2020-07-11 21:15:15 747

原创 Kafka 5:生产者发送配置

1.acksacks=0: 生产者在写入消息之前不会等待任 何来自服务器的响应,容易丢消息,但是吞吐量高。acks=1: 只要集群的首领节点收到消息,生产者会收到来自服务器的成功响应。如果消息无法到达首领节点(比如首领节点崩溃,新首领没有选举出 来),生产者会收到一个错误响应,为了避免数据丢失,生产者会重发消息。不过,如果一个没有收到消息的节点成为新首领,消息还是会丢失。默认 使用这个配置。acks=all: 只有当所有参与复制的节点都收到消息,生产者才会收到一个来自服务器的成功响应。延迟高。2.b

2020-07-11 20:57:06 289

原创 Kafka 4:多线程下的生产者

KafkaProducer 的实现是线程安全的,所以我们可以在多线程的环境下,安全的使用 KafkaProducer 的实例。1.创建主题concurrent-test./kafka-topics.sh --zookeeper localhost:2181 --create --topic concurrent-test --replication-factor 1 --partitions 82.添加常量package org.example.config;public class Bu

2020-07-11 20:27:31 2942 1

原创 Kafka 3:生产者异步发送

1.创建生产者KafkaAsyncProducerpackage org.example.async;import org.apache.kafka.clients.producer.*;import org.apache.kafka.common.serialization.StringSerializer;import org.example.config.BusiConst;import java.util.Properties;import java.util.concurrent

2020-07-11 10:30:13 446

原创 Kafka 2:生产者同步发送

1.创建生产者KafkaFutureProducerpackage org.example.sync;import org.apache.kafka.clients.producer.*;import org.apache.kafka.common.serialization.StringSerializer;import org.example.config.BusiConst;import java.util.Properties;import java.util.concurrent

2020-07-09 22:06:30 358

原创 Kafka在Linux环境下的安装教程

1.下载地址http://kafka.apache.org/downloads,这里下载kafka_2.11-2.4.1.tgz2.将文件上传到服务器上,并解压"tar -zxvf kafka_2.11-2.4.1.tgz "3.修改server.properties配置文件,zookeeper的配置文件可以使用默认配置不修改#对外暴露的服务端口,如果外网需要向broker发送消息必须配置advertised.listeners=PLAINTEXT://192.168.42.112:9092

2020-07-09 20:33:20 1353 1

原创 Kafka 1:生产者发送并忘记

1.创建主题"./kafka-topics.sh --zookeeper localhost:2181 --create --topic hello-kafka --replication-factor 1 --partitions 4"主题名hello-kafka,一个副本,4个分区2.创建一个maven工程,引入依赖 <dependencies> <dependency> <groupId>org.apache.kafka</gro

2020-07-08 20:07:46 370

原创 RocketMQ 10:整合springboot

1.创建一个新的springboot工程,引入依赖<?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" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven

2020-07-04 10:35:00 153

原创 RocketMQ 9:事务消息

1.事务消息实现思想RocketMQ 事务消息,是指发送消息事件和其他事件需要同时成功或同失败。比如银行转账, A 银行的某账户要转一万元到 B 银行的某账户。A 银 行发送“B 银行账户增加一万元” 这个消息,要和“从 A 银行账户扣除一万元”这个操作同时成功或者同时失败。RocketMQ 采用两阶段提交的方式实现事务消息,TransactionMQProducer 处理上面情况的流程是,先发一个“准备从 B 银行账户增加一万元”的消息, 发送成功后做从 A 银行账户扣除一万元的操作 ,根据操作

2020-07-02 17:52:25 252

原创 RocketMQ 8:延时消息

1.Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费, 该消息即延时消息。适用场景: 消息生产和消费有时间窗口要求:比如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条延时消息。这条消息将会在 30 分钟以 后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付。 如支付未完成,则关闭订单。如已完成支付则忽略。“1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m

2020-07-01 18:39:55 285

原创 RocketMQ 7:部分顺序消息

1.使用Tag区分同一个Topic下的不同Queue2.创建生产者ProducePartOrder,使用selector选择器控制消息往哪个queue发package org.example.orderMessage.part;import org.apache.rocketmq.client.producer.DefaultMQProducer;import org.apache.rocketmq.client.producer.MessageQueueSelector;import or

2020-07-01 18:18:48 202

原创 RocketMQ 6:全局顺序消息

1.RocketMQ 在默认情况下不保证顺序,要保证全局顺序,需要把 Topic 的读写队列数设置为 1,然后生产者和消费者的并发设置也是 1,不能使用多线程。所以这样的话 高并发,高吞吐量的功能完全用不上。适用于性能要求不高,所有的消息严格按照 FIFO 原则来发布和消费的场景。在mq的bin目录下,执行./mqadmin updateTopic -t AllOrder -c DefaultCluster -r 1 -w 1 -n 127.0.0.1:9876,将AllOrder修改为只有一个que

2020-07-01 17:59:07 1830

原创 RocketMQ 5:消息重试

1.创建消费者RetryConsumer,使用consumer.setMaxReconsumeTimes()方法可以设置重试次数,默认15次,返回ConsumeConcurrentlyStatus.RECONSUME_LATER;package org.example.retry;import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;import org.apache.rocketmq.client.consumer.li

2020-07-01 16:24:02 895

oracle-windows-jdk17

oracle-windows-jdk17

2024-08-05

openjdk11.0.21

openjdk11.0.21 (windows x64)

2023-12-18

dbeaver-ce-23.0.0-x86-64-setup.exe

dbeaver-ce-23.0.0-x86-64-setup.exe

2023-03-16

Advanced-REST-client.zip

3.1.9

2021-09-30

docker-1.7.7z

docker-1.7-rpm

2021-03-04

jdk-11.0.10_windows-x64_bin.zip

OracleJDK11

2021-02-26

NavicatPremium(32,64).rar

NavicatPremium(32,64).rar

2020-08-14

SecureCRT6.61.zip

SecureCRT6.61.zip

2020-08-14

PLSQL+Developer10.0.3.1701.rar

PLSQL+Developer10.0.3.1701.rar

2020-08-14

jdk1.8(linux+windows).rar

jdk1.8(linux+windows).rar

2020-08-14

tomcat8.0.zip

tomcat8.0.zip

2020-08-14

jquery.jqprint-0.3.rar

jquery.jqprint-0.3.rar

2020-08-14

RabbitMQ.rar

rabbitMQ原生编程+Direct交换器+Fanout交换器+Topic交换器+失败通知+发送方确认+备用交换器

2020-05-23

springboot-demo.rar

springboot+整合druid+整合mybatis+配置多数据源+动态数据源切换,图文教程,代码示例

2020-02-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除