自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (2)
  • 收藏
  • 关注

原创 【Redis】基于zset实现滑动窗口

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import java.util.concurrent.TimeUnit;/** * 根据时间滑动窗口计数 * @author haoyang */@Comp.

2021-04-04 22:23:30 972 4

原创 【Java】IDEA性能优化 更换为Openj9加快运行速度、减少内存占用

实测idea在使用openj9的情况下,即使不优化jvm参数也比idea自带的jdk占内存要低不少openj9:下载链接选择win64.zip,开始下载下载完成后,解压并替换掉IDEA安装目录下的jbr文件夹解压后试试能否打开你的IDEA,不能打开的话可能是一些plugin不兼容的问题。...

2021-02-28 00:02:44 1867 1

原创 【Java】JMX Notification

一、发送通知熟系观察者模式、活着写过Android或用过消息队列的应该都比较熟悉一个场景,就是当数据变化时,变化方通知所有的订阅方。JMX里就提供了这样的消息订阅、通知机制。二、示例创建OperationMBean接口:public interface OperationMBean { void setVal(int v); int getVal();}创建Operation实现OperationMBean接口:public class Operation extends

2020-08-02 21:25:11 265

原创 【Java】JMX MBean

一、什么是MBeanMBean是managed beans的缩写,意思就是被管理的Java对象。JMX中定义了四种MBean,分别是:standard MBeansdynamic MBeansopen MBeansmodel MBeansMBean里封装着受监控对象的数据和操作。一个完整的MBean包含MBean接口及其实现。二、示例示例为standard MBeans。MBean由接口和其实现组成。接口与实现的命名非常严格,接口名必须以MBean结尾。比如接口名为HelloMbe

2020-08-02 20:41:07 584

原创 【Java】JMX入门

什么是JMX?Oracle java文档:什么是JMX?JConsoleJConsole提供了监控JVM的功能,以及查看MBan的功能JvisualvmOracle版jdk特有的监控JVM的工具,比JConsole少了点功能,如查看MBean

2020-08-02 20:05:44 156

原创 【MySQL】回表 索引下推

一、回表众所周知使用innodb的表可以存在多个二级索引,但只能有一个主键索引。这聚集索引满足下列要求:当存在主键,索引值就是主键当主键不存在,但存在唯一索引,那么索引值就是该唯一索引当既不存在主键,也不存在唯一索引,那么就自动生成rowid所谓索引值主键索引索引值存储在b+树的叶子节点上,同时他还带着对应的行数据。而二级索引索引值带的数据则是主键索引的索引值。假设你的主键索引值...

2020-05-03 23:03:29 499

原创 【Java】Zuul不拦截Cookie

配置文件里设置如下zuul: # 转发request不清空header sensitiveHeaders:空值

2020-04-18 17:18:40 384

转载 【MySQL】MySQL8.0 根据ibd文件恢复表数据

一、要先知道表结构上一篇链接:ibd文件恢复表结构知道表结构后,对应的在MySQL中新建一个库名、表名、结构一摸一样的。二、弃用新建表的ibd文件弃用ibd文件后,数据库中的ibd文件会被删除。ALTER TABLE 库名.表名 DISCARD TABLESPACE;三、替换ibd文件将要恢复的ibd文件复制到MySQL数据目录下的数据库对应的文件夹里。四、恢复ibd文件必须加上...

2020-03-19 11:47:30 6977 2

原创 【MySQL】MySQL8.0 ibd2sdi 根据ibd文件恢复表结构

ibd文件在8之前InnoDB存储表的结构和数据时,分别存储在frm文件和ibd文件。而在8的时候全都存到了ibd文件里。。。。。。如果你把mysql搞崩了…比如我手贱把preformance_shcema表删了…相信这回帮到你。ibd2sdiOracle 将frm文件的信息及更多信息移动到叫做序列化字典信息(Serialized Dictionary Information,SDI),S...

2020-03-18 21:58:09 6959 2

原创 【Java】Maven Profile管理Spring cloud多环境配置

一、前言一般环境分为三种:开发环境、测试环境、部署环境。举个简单的例子,当完成开发,向服务器部署时,就要更改项目配置文件里的内容。这对于小的单体项目来说尚可接受,但对于微服务这样的项目可是麻烦死了。有没有一种可以一键切换开发环境的按钮二、Spring Boot ProfileSpring Boot已经提供了配置管理的功能,如下:spring: profiles: active:...

2020-03-12 17:31:40 958

原创 【Java】GC 垃圾收集器

一、新生代1. Serial(单线程、 复制算法)只会使用一个 CPU 或一条线程去完成垃圾收集工作,并且在进行垃圾收集的同时,必须暂停其他所有的工作线程,直到垃圾收集结束。虽然在收集垃圾过程中需要暂停所有其他的工作线程,但是它简单高效,对于限定单个 CPU 环境来说,没有线程交互的开销,可以获得最高的单线程垃圾收集效率,因此 Serial垃圾收集器依然是 java 虚拟机运行在 Cli...

2020-03-07 15:05:34 211

原创 【垃圾回收算法与实现读书笔记】分代垃圾回收

一、分代分代垃圾回收(Generational GC)在对象中导入了“年龄”的概念,通过优先回收容易成为垃圾的对象,提高垃圾回收的效率。年龄:经历过一次 GC 后活下来的对象年龄加1。新生代、老年代把刚生成的对象称为新生代对象,到达一定年龄的对象则称为老年代对象。二、Ungar的分代垃圾回收David Ungar 研究出来的把 GC 复制算法和分代垃圾回收这两者组合运用的方...

2020-03-06 14:28:18 256

原创 【垃圾回收算法与实现读书笔记】标记-压缩算法(标记-整理算法)

标记-压缩算法GC 标记 - 压缩算法(Mark Compact GC)是将 GC 标记 - 清除算法与 GC 复制算法相结合的产物。一、Lisp2算法标记阶段与标记-清除算法一样,压缩阶段就是让有用的对象覆盖掉没用的对象,这比复制算法好,不用牺牲半个堆空间。完成该算法实现,至少要遍历3次堆:找到有用的对象前面没用的对象移动指针移动对象。优点:可有效利用堆缺点:遍历...

2020-03-06 13:26:52 329

原创 【垃圾回收算法与实现读书笔记】复制算法

一、复制算法GC 复制算法(Copying GC)是 Marvin L. Minsky 在 1963 年研究出来的算法。说得简单点,就是只把某个空间里的活动对象复制到其他空间,把原空间里的所有对象都回收掉。这是一个相当大胆的算法。在此,我们将复制活动对象的原空间称为 From 空间,将粘贴活动对象的新空间称为 To 空间。优点:优秀的吞吐量可实现告诉分配不会发生碎片化与缓存...

2020-03-06 12:56:10 179

原创 【垃圾回收算法与实现读书笔记】引用计数法 延迟引用计数法 Sticky引用计数法

1. 引用计数算法引用计数法中引入了一个概念,那就是“计数器”。计数器表示的是对象的人气指数,也就是有多少程序引用了这个对象(被引用数)。计数器是无符号的整数,用于计数器的位数根据算法和实现而有所不同。被引用的对象不仅自己计数器要加1,其自己包含的引用的对象的计数器也要加1。2.延迟引用计数法引用计数法的缺点就是计数器值的增减处理繁重。这里就引入了延迟引用计数法,延迟就是先不计数...

2020-03-05 21:26:26 467

原创 【垃圾回收算法与实现读书笔记】为什么标记-清除算法与写时复制技术不兼容?

1.标记阶段为堆里的所有活动对象打上标记2.清除阶段遍历整个堆,回收没有打上标记的对象3.写时复制技术就是多个进程共用一段内存时,其中任意一个进程都不能直接重写共享内存。因为从其他程序访问时,会发生数据不一致的情况。在重写时,要复制自己私有空间的数据,对这个私有空间进行重写。复制后只访问这个私有空间,不访问共享内存。像这样,因为这门技术是“在写入时进行复制”的,所以才被称为写时复制技术...

2020-03-05 20:09:07 229

原创 【数据结构】红黑树(Red Black Tree)

前言以前在了解HashMap时得知JDK8的HashMap是用红黑树实现的,而且网上还流传着手写红黑树的梗,数据结构课上也没交过这个,于是就学学吧。一、为什么要用红黑树因为相较于普通的二叉搜索树,红黑树具有平衡性。这与AVL树相似,在增加或删除元素后可能会出现旋转的操作。但是相较于AVL树严格的约束(左右子树的高度之差的绝对值最多为1),红黑树的平衡约束更为宽松,其旋转操作的时间复杂度为O...

2020-02-28 20:22:16 526

原创 【数据结构】B树(B Tree)

一、定义B树是一个平衡的多路搜索树,每个节点可以存储多个元素。二、性质对于m阶B树(m>2),设其任意节点存储元素的个数为x,那么:对于根节点:1 <= x <= m-1对于非根节点:ceil(m/2) - 1 <= x <= m-1如果有子节点,子节点个数为 y = x+1,根节点子节点个数:2 <= y <= m非根节点子...

2020-02-28 12:24:52 990

原创 【RabbitMQ】RabbitMQ如何使用Protobuf

自定义Converter继承AbstractMessageConverter,代码如下:public class ProtobufMessageConverter extends AbstractMessageConverter { /** * object转换为ProtoBuf, 发送消息 */ @Override public Message c...

2020-02-26 13:21:44 1501

原创 【Netty】Netty如何使用Protobuf

Handler服务端和客户端的Handler继承SimpleChannelInboundHandler,修改泛型为为protobuf里的对象,代码如下:服务端:public class ProtoServerHandler extends SimpleChannelInboundHandler<ProtoMessage.PersonTest> { @Override ...

2020-02-26 13:09:13 360

原创 Protobuf入门

一、安装我在win10端下载的是 protoc-3.11.4-win64.zip,根据平台不同按需下载。下载地址二、IDEA安装Protobuf插件三、编写 proto 文件数据类型对应不同语言的如下:syntax = "proto3"; // PB协议版本import "google/protobuf/any.proto"; // 引用外部的message,可以是本地的,也可...

2020-02-24 15:16:00 375

原创 【算法】最长公共子序列

题目举例解答设长度为N的字符串str1、长度为N的字符串str2设矩阵dp[N][M]dp[0][j] (j∈[0,M])是矩阵第一行,比如例子中的str1[0]=‘1’,拿其去和str2的每一项去匹配,当匹配到str2[1]时有str1[0] == str2[1],而此时将dp[0][1]标为1,dp[0][1…M]都标为1dp[i][0] (i∈[0,N])是矩阵第一列,同步...

2020-02-21 22:23:37 217

原创 【算法】换钱1

题目举例解答假设arr=[5,2,3],aim=15数组arr长度N设数组dp[N][aim]dp[i][0] (i∈[0,N])为数组第一列,表示使用arr[i]的货币换的钱数0时,需要的钱的张数,全部标为0。dp[0][j] (j∈[0,aim])为数组第一行,表示使用arr[0]的货币换钱数j时,需要的钱的张数。arr[0]=5,aim=15,则dp[0][5]=1,dp...

2020-02-21 16:57:27 269

原创 【算法】矩阵的最小路径和

题目给定一个矩阵,从矩阵左上角开始走到右下角,每次只能向下或向右,将路径上的数字求和,求所有路径中路径和最小的。举例给定矩阵:最短路径如下:解答1.假设现在给定1*4的矩阵R:设当前元素距离左上角的距离为dp[0][i],那么矩阵R的dp[0]如下:则最小路径和为182.假设现在给定4*1的矩阵C:设当前元素距离左上角的距离为dp[i][0],那么矩阵R的dp[i][...

2020-02-21 14:27:22 1434

原创 【Java】方法签名 方法描述符

一、方法签名记得学Java se时老师提过。方法签名是由方法的名称和参数类型构成。方法签名的存在是为了在Java语法层面上保证开发者能够正确的命名方法、重载方法。二、方法描述符这个是JVM里的感念。方法描述符是由方法的参数类型以及返回类型所构成。JVM在判定重写时,看的是方法描述符。三、区别Java语法层面,方法签名限制了重载,即一个类中不允许方法名相同,参数类型相同的方法同时出...

2020-02-18 15:18:25 1376

原创 【Java】类加载器 双亲委派是个啥

1、加载JVM需要借助类加载器来完成查找字节流,并且据此创建类的过程。2、启动类加载器(BootstrapClassLoader)启动类加载器是由C++实现的,用于加载jre和jre/lib目录下的核心库(以及由虚拟机参数 -Xbootclasspath 指定的类)2.1 扩展类加载器(ExtentionClassLoader)扩展类加载器的父类加载器是启动类加载器。它负责加载jre ...

2020-02-18 14:31:42 156

原创 【HBase】Phoenix在HBase上创建加盐表

1. 加盐能解决什么问题?数据热点问题2. 创建加盐表CREATE TABLE operator ( id INTEGER PRIMARY KEY, userName VARCHAR, PASSWORD VARCHAR )SALT_BUCKETS = 8;如果只是用 自增id作为rowkey,肯定会造成数据热点的问题,这是使用SALT_BUCKETS添加到sql语句后后。3. ...

2019-12-03 19:20:55 525

原创 【Java】MySQL jdbc连接器中的LRU是如何实现的

1. JDBC中的LRUCache:package com.mysql.cj.util;import java.util.LinkedHashMap;import java.util.Map.Entry;public class LRUCache<K, V> extends LinkedHashMap<K, V> { private static fin...

2019-11-25 21:41:51 188

原创 【算法】摩尔投票法

在LeetCode上刷题,碰见了一个简单的题:给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2首先想到的做法是做类似桶排序那样,开辟一个数组统计各个数字出现的次数。但是这...

2019-10-21 17:23:26 226

原创 【MySQL】datetime精确到毫秒

情景在使用shiro时,使用某时刻的时间戳去做加盐加密,结果发现在密码一致的情况下,用户注册时获得的加密结果和登陆时获得的加密结果不一致。时间戳是使用java Date()对象生成的,能精确到毫秒,例如:Date signTime = new Date();System.out.println(signTime.getTime());输出:1571388449910然后你将其...

2019-10-18 17:14:46 1552 1

原创 【Java】线程共享的JVM内存区域有哪些

1.堆几乎所有对象实例被分配到这里,也是垃圾收集器管理的主要区域。Java堆可以被分为新生代和老生代。进一步划分,则有Eden空间、From Survivor空间、To Survivor空间等。无论如何划分,都是为了更好地回收内存、更快的分配内存。2. 方法区方法区由于存储虚拟机加载的类的信息、常量、静态变量、JIT编译后的代码等。...

2019-10-08 21:55:09 2044

原创 【Java】线程私有的JVM内存区域有哪些

1.程序计数器是当前线程所执行的字节码的行号指示器,字节码解释器工作时通过改变计数器的值来选取下一条需要执行的字节码指令。正在执行 java 方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址) 。如果还是 Native 方法,则为空。2.虚拟机栈每个Java方法执行时都会创建一个栈帧到虚拟机栈中。一个栈帧包括局部变量表,操作栈,动态链接,方法出口等信息。写递归程序出错时时...

2019-10-08 21:39:56 2120

原创 【Docker】Docker上创建CentOS7容器

从拉取Docker hub拉去CentOS7的镜像docker pull centos:7创建并运行容器docker run -d --privileged -ti -p 23330:22 -v /sys/fs/cgroup:/sys/fs/cgroup --name master -h master --net netgroup --ip 172.15.0.2 centos:7 ...

2019-10-07 21:05:48 647

原创 【Hbase】Zookeeper找不到HBase的master或找不到正确的master的IP

情景Java通过Zookeeper连接Hbase时,Zookeeper一直返回的是127.0.0.1给windows端的java,导致java连接不上hbase。zookeeper中的hbase里确实master也会导致连不上。解决将master节点所在的虚拟机,hostname中127.0.0.1 localhost对应关系删掉,然后进入hbase自带的zookeeper:hbase z...

2019-09-25 22:10:57 1850 1

原创 【Java】什么是JIT编译器

一、JIT即时(Just-In-Time,JIT)编译器是 Java 虚拟机的核心。对 JVM 性能影响最大的莫过于编译器,其会有选择的对Java的字节码进行编译执行或解释执行。1.1 热点编译在实际情况下,程序只有一部分代码被经常执行,而程序的性能就取决于这些代码执行的速度。这些关键代码段被称为应用的热点,代码执行得越多就被认为是越热。JVM在面对热点代码时就会对其进行编译,但是如果不是...

2019-09-10 20:33:35 613

原创 【Java并发编程】FutureTask 阻塞等待异步结果

什么是FutureTaskFutureTask类实现了RunnableFuture接口,RunnableFuture继承了Runnable接口和Future接口,而FutureTask实现了RunnableFuture接口。所以FutureTask 既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。怎么用FutureTask由介绍可知,FutureTa...

2019-09-10 10:42:37 1946

原创 【Java】RMI

1. 什么是RMIRMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。2. 代码公共代码先定义一个接口去继承Remote接口,这样RMI可以将实现该接口点的对象向客户端传输:import java.rmi.Remote;import java.rmi.RemoteException;...

2019-09-09 21:18:27 226

原创 【Netty】写个echo服务器与客户端

自定义Handler:handle是用来处理消息的。import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.channel.ChannelFutureListener;import io.netty.channel.ChannelHandler.Sharable;import io.n...

2019-09-09 16:09:40 201

原创 【Java】@Functionallnterface函数式接口

所谓函数时接口,就是只定义了单一抽象方法的接口,如下:@FunctionalInterfacepublic interface ITest { Integer square(int val);}然后在使用时就可以通过lambda表达式对该方法进行实现,代码如下:public class Main { public static void main(String[] ar...

2019-08-27 21:15:01 352

转载 【扩展知识】LRU cache

http://ifeve.com/动手实现一个-lru-cache/

2019-08-13 22:05:14 122

维棠ftp管理器

维棠ftp管理器

2013-12-23

啊哈c----c语言教程3

小学生坐在马桶上都可以读懂的C语言入门教程 官方论坛:aha-C.com

2012-10-04

空空如也

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

TA关注的人

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