自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL Double Write Buffer 笔记

double write buffer 是为解决在InnoDB将页从缓存页(脏页)写入磁盘过程中,遇到程序崩溃的解决方案问题的核心就是页从缓存到磁盘的过程,不是原子操作mysql 数据页默认大小 16KB而每次磁盘写入只能4KB参考资料官方文档:Doublewrite Buffer...

2021-12-06 14:17:52 278

原创 区块链Web3j编程: 账户交易(普通交易,裸交易)

因为账户交易这一块内容比较多,分为两部分来讲,承上一篇我们继续关于以太坊账户交易的练习普通交易在以太坊链上有两种交易,1是普通交易,2是裸交易,它们有不同的定义,其中普通交易由以太坊节点进行签名,而裸交易,不要想歪,只是由外部应用进行签名 /** * 普通交易 * @param fromIndex 发送方 * @param toIndex 接收方 * @param price 金额(wei) * @return * @throws I

2021-07-15 22:04:23 3275 2

原创 区块链编程:Web3j账户管理练习

区块链编程:Web3j账户管理练习获取节点上的账号信息配置web3j日志创建钱包根据钱包加载账户信息上一章,我们简单的访问了eth模拟节点的版本信息,算是提前预热,今天我们来实现和节点进行账户信息交互,配置将沿用上一章的配置获取节点上的账号信息package com.block.chain.account;public class App { public static void main(String[] args) throws Exception { Account

2021-05-03 23:36:50 855 6

原创 区块链编程:Java接入Web3j,访问Ganache 节点

最近对区块链很感兴趣,想了解下区块链方面的业务开发,今天让我们开始第一章的练习.首先本地用需要有npm环境安装ganache-clinpm install -g ganache-cli 安装相关环境ganache-cli 启动命令如下图所示,我们已经启动起来了,监听着本地8545端口代码上面是环境搭建,下面我们会通过gradle搭建起我们的项目group = 'com.block.chain'version = '0.0.1'apply plugin: 'java'sourceCo

2021-05-01 22:02:17 2151 3

原创 InteliJ IDEA关于Git版本控制技巧 -- 合并多个Commit

InteliJ IDEA关于Git版本控制技巧合并多个Commit在工作中有很多好用的git工具,但是Idea 编辑器本身就携带了Git 版本控制,本着更专注,更高效的理念,没道理对每天干活用的工具仅仅停留在Pull和Push的阶段.下面让我们学习起来!合并多个Commit在开发过程中我们会在feature中提交很多次 commit,在开发完成后其实没必要把所有的提交记录都 merge 到 master 应该是合并所有commit为一个commit推到 master 上下面是我在master的两个

2021-04-10 13:37:23 491 1

原创 Java 通过注解实现接口输出时数据脱敏

在后台管理中,对于手机号,身份证,姓名这些数据不允许所有人都能看,这时候我们要对相对数据进行脱敏.先声明了一个注解, 通过对相关接口函数进行声明,以及配置需要脱敏的参数类型SecretTypeEnum,默认脱敏手机号/** * 脱敏声明 */@Documented@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface SecretManage { SecretTypeEnum[]

2021-03-08 17:46:13 1051 4

原创 SpringBoot + Lombok 关于日志的应用

最近在工作中遇到了不少问题,日志的真的太重要了!我认为会配置日志,通过日志排查是软件开发工作人的基本能力,下面我们通过Spring Boot + Lombok 搭建服务的日志系统lombok的依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8&

2021-01-19 12:31:05 479

原创 ForkLift 保留FTP连接

国内关于 ForkLift 的使用文档好像很少,之前一直都是用后即扔,mac 机子对ftp工具依赖不高,现在有这个需求了,在使用后发现了个问题 – 关闭ForkLift 后之前的连接记录都需要重新连接,这还是挺麻烦。花了点时间操作了下,发现是可以保留连接记录,下次使用直接点击就行了我们先打开 ForkLift创建一个连接输入完信息后 ,点击 Connect 等一会就可以了好了,现在就可以开始使用基础的FTP 文件传输了,可是我们在退出后,就没了,现在该如何保留呢?右键 FAVORITES.

2021-01-05 23:15:50 945

原创 JVM笔记 - JVM 实现方法调用

JVM笔记 - JVM 实现方法调用Java 虚拟机识别方法的关键在于类名、方法名以及方法描述符(method descriptor)方法描述符,它是由方法的参数类型以及返回类型所构成字节码调用指令invokestatic:用于调用静态方法invokespecial:用于调用私有实例方法、构造器,以及使用 super 关键字调用父类的实例方法或构造器,和所实现接口的默认方法。invokevirtual:用于调用非私有实例方法。invokeinterface:用于调用接口方法。

2020-12-23 11:10:15 253

原创 JVM笔记 -方法内联

在编译过程中遇到方法调用时,将目标方法的方法体 / 代码块纳入编译范围之中,并取代原方法调用的优化手段,是JVM 最重要的编译器优化,没有之一。optimize beforestatic class A{ int value; final int get(){ return value; }}public void foo(){ y = b.get(); // do stuff.. z = b.get(); sum = y +

2020-12-22 13:51:50 141

原创 请求参数转换为枚举类型

在之前我们写了一篇 实体类通过配置实现实体类枚举类型的转换,提高了代码的可读性 链接地址今天我想要把请求的参数,转换为枚举类型,如下图案例代码所示/** * @author F * curl example: * curl -X GET localhost:9999/type?type=1 */@RestControllerpublic class EnumConvertController { @GetMapping("/type") public String typ

2020-12-18 11:42:04 1961

原创 MyBatisPlus实现实体类注入枚举类型字段

为了加强实体类中,特殊字段类型的可读性和省去数据类型的转换,我们今天尝试把Int类型,例如状态这种整型字段换做枚举, 下面是旧代码@Data@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)@TableName("gdt_targeting")@ApiModel(value="Targeting对象", description="定向数据")public class Targeting extends BaseEntity

2020-11-23 20:17:06 1971 3

原创 LeetCode: 零钱兑换,个人理解

今天在LeetCode上练了下零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1ps:可以认为每种硬币的数量是无限的这个属于完全背包类型问题,我们可以通过动态规划,去解决该问题动态规划的定义我就不重复了. 下面我直接贴出答案int [] coins = {3, 5};public int coinChange(int[] coins, int amount) { int

2020-11-06 17:15:16 254 1

原创 Spring Boot集成 Spring Integration : 基础路由器

如果没有浏览过之前的文章,请先浏览消息与通道的案例, 下面在 ESB 中提供了多种类型路由器消息数据类型 / PayloadTypeRouter元数据值 / HeaderValueRouter表达式 / ExpressionCustomized Route下面我会提供一个根据元数据筛选实现的路由@Configurationpublic class RouteConfig { @Bean public IntegrationFlow routeIntegrationFlow() {

2020-10-28 10:13:41 939 1

原创 Spring Boot集成 Spring Integration : 消息与通道(Message, Channel)的创建以及消息发送

最近本人在了解了企业服务总线,并且学了相关的框架 Spring Integration,发现网上大多是Spring 集成没有Spring Boot的方式,因此记录一下Maven 依赖<?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:schem

2020-10-27 14:41:35 3269 1

原创 Mybatis Plus @DS注解不起效, 事务导致其失效

上周遇到了一个@DS 动态切换数据库无效的BUG /** * 商品上下架处理 * @param id 实物商品id * @param isPublished 上架 or 下架 {@link com.zzjr.common.enums.common.YesOrNo} * @return */ @Transactional(rollbackFor = RuntimeException.class) @Override public Bo

2020-10-26 18:21:24 9123 1

原创 MySQL 使用分区表小结

公司用数据库时,部分表涉及到了分区表的概念,赶紧学习一下分区表是根据某种方式进行分区,逻辑上依然是一张表创建分区表首先我们要创建一张范围分区表,根据id进行分区(不推荐,最好是根据时间)CREATE TABLE employees ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, fname VARCHAR(25) NOT NULL, lname VARCHAR(25) NOT NULL, store_id INT NOT

2020-10-10 15:48:43 370

原创 使用 TortiseGit 合并分支

TortoiseGit 用法推入到 master ,加粗的是命令checkout mastergit pull 拉取下最新代码git sync​show log切换分支摘录需要合并的提交continue 继续如果有冲突可以点击abort回退或者commit继续提交如果提交之后没有问题 ,点击push就可以了然后就可以切换到开发环境看看你的 master 分支的git 历史记录了。我本人是更推荐使用 PR 的,但公司内部的 GitL

2020-09-27 20:12:55 307 1

原创 玩花 PostMan: 请求登陆接口后自动配置全局Token

每当我们登陆一次,都需要手动去更改其他接口的 token信息,不得不说这是很麻烦又枯燥的事情。今天我们学一下如何通过全局变量加上一些小技巧实现 全局可用 token我们的 Token是放在 Headers 的Authentication里,现在我们要设置一个全局 token 变量值先不用管,是动态的,根据登陆接口获取分别是获取Authentication的值然后放到全局环境中最后是在控制台打印var token = pm.response.headers.get('Authentic

2020-09-18 01:18:40 355

原创 Spring Mvc 拦截器不起作用的问题 - 同时使用了WebMvcConfigurer和WebMvcConfigurationSupport导致

今天在

2020-09-17 15:12:59 1469 2

原创 Kafka Error Handler / Spring Boot 接入Kafka关于消费端的错误处理

学了最基础的 Kafka 消息的发送和消费,现在我们进一步学习,当遇见错误信息时,该如何处理,下面是 Spring for kafka 的一句话,告诉我们 Spring Boot 做错误处理有多简单If you are using Spring Boot, you simply need to add the error handler as a @Bean and boot will add it to the auto-configured factory.配置文件server: port

2020-09-04 01:09:48 5607

原创 Spring Boot 接入Kafka 消息发送和消费案例

最近换了新公司,关于消息队列都是用的 Apache Kafka,今天学了个基础的使用,分享一下pom.xml依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependen

2020-09-03 15:52:37 464

原创 BeanUtils.copyProperties和BeanUtil.copyProperties的 使用实践

最近涉及到了在 copyProperties 遇见了一些问题,从Dto 到 Vo的拷贝出现了问题(参数名相同,类型不一致)使用BeanUtils 实现属性拷贝,在类型不同时,会忽略 target 对象相同命名参数的,而 Hutool 提供的BeanUtil则不会忽略下面是我的测试代码import cn.hutool.core.bean.BeanUtil;import org.junit.Test;import org.springframework.beans.BeanUtils;publi

2020-08-31 16:23:13 2899

原创 Mac 终端连接远程服务器无法使用 rz 下载本地文件解决方法 ** waiting to receive.**B0100000023be50

最近手上只有一台 Mac 笔记本操作服务器都是通过终端,今天想将本地文件上传到服务器,部署静态资源发现 rz 命令不行。。[root@wallhole ~]# rz** waiting to receive.**B0100000023be50一直等到与服务器断开都保持这个状态。我习惯了在Windows上用XShell。。服务器也没安装FTP,那咋搞 如果不想下载其他传输文件 可以试试 Mac 提供的 scp 命令192:Downloads mac$ scp qdweb.zip [email protected]

2020-08-05 23:17:19 1599

原创 解决 Mac上 Jetbrains Idea 不能编辑的情况,非 IdeaVim组件问题

今天莫名其妙新建了个类,就无法写代码了,还以为键盘坏了,发现用中文键盘依然可以打字,网上有两种解决方案Idea Vim 组件导致的问题修改系统时间 博客链接我查了下,我的不是组件导致的,出于偷懒的原因我也不想修改系统时间。尝试了下 File -> Invalidate Caches / Restart… 重新启动了 Idea 解决了我的键盘无法在Idea 编辑的问题(普通的退出是没有用的)...

2020-07-21 00:56:47 391 3

原创 MySQL 5.7 关于 JSON 类型的子集Key/Value获取方法分享

MySQL 5.7 开始支持存储JSON类型的数据,今天遇到了一个问题,获取JSON子集里的 KEY 时出现的{ "createActivity": { "content": "这是我第一篇动态", "agreeCount": 0, "shareCount": 0, "againstCount": 0, "commentCount": 0 }}下面我们想获取 Key 为 content 的值mysql提供了获取key的函数 json_extract(json字段, $.ke

2020-07-17 22:01:57 2053

原创 通过 Graal VM 提供的 Ideal Graph Visualizer 学习IR

这是GraalVM 提供的 IGV 工具,可以对比一下 Openjdk 提供的 IGV,我之前的博客也有,可读性天差地别配置 IGV首先是下载 Graal VM 提供的 IGV , 请点击这里修改配置文件 idealgraphvisualizer\etc\idealgraphvisualizer.conf,配置一下JDK,必须要有 graal 编译器的 JDK然后你就可以打开idealgraphvisualizer/bin/idealgraphvisualizer.exe啦igv 请不要

2020-06-23 17:49:09 833 2

原创 使用 Ideal Graph Visualizer 了解 IR 图

首先请到官网下载 - 链接修改配置文件请配置 JDK6 的路径,其他版本的 JDK 无法打开 IGV(我尝试了jdk8和11都开不了)参考openjdk:igv

2020-06-23 11:45:06 872

原创 JVM笔记:Java 方法内联(Method Inlining) - 编译器优化技术

在编译过程中遇到方法调用时,将目标方法的方法体纳入编译范围之中,并取代原方法调用的优化手段,最重要的编译器优化,没有之一。optimize beforestatic class A{ int value; final int get(){ return value; }}public void foo(){ y = b.get(); // do stuff.. z = b.get(); sum = y + z;}opti

2020-06-21 18:14:23 1180

原创 收藏的Java资源

下面是我收藏的一些 JVM 博客,希望能帮助到你编译IBM:深入浅出编译器

2020-06-21 17:54:57 175

原创 Java 接入讯飞语音听写Speech to Text(STT)功能

根据官方提供的 WebIATWS 工具扩展修改,接入了讯飞的语音听写(STT)服务讯飞认证配置public class XFAuthorityConfig { public static final String hostUrl = "https://iat-api.xfyun.cn/v2/iat"; public static final String apiKey = "xxxx"; public static final String apiSecret = "xxx";

2020-06-17 12:37:34 1427 2

原创 Java 10的语法糖 var

The identifier var is not a keyword;;instead it is a reserved type name.var 不是关键字,通过下面代码就可以看出public void var(){ var var = 1;}在Java 10中出现了 var 变量,可以存储任意类型局部变量void test(){ var index = 1; var array = new ArrayList<>(16); var map = n.

2020-06-03 16:46:59 246

原创 JVM笔记 - Java 内存模型 / JMM 内存可见性

这是第三篇 JVM 笔记 对JAVA 内存模型的内存可见性的学习,欢迎纠正Java内存模型描述了多线程代码中哪些行为是合法的,以及线程如何通过内存进行交互 - 为了让应用程序能够免于数据竞争的干扰,Java 5 引入了明确定义的 Java 内存模型重排序int a = 1;int b = 2;int c = a+b;上面这段代码没什么特别的,但在底层执行的顺序不一定是这样执行,可能先执行 b=2,之后执行 a=1;上面的这段代码数据没有数据依赖,重排序不会出现问题int c=0;vo

2020-06-02 16:06:48 280

原创 JVM笔记 - JVM GC 和 内存分配

这是我第二篇关于JVM的笔记JVM中的垃圾回收,如有不妥,欢迎纠正什么对象是可以回收的垃圾回收,那么我们要明白什么对象是会被JVM判断是可以回收的对象,下面有两个常用的算法引用计数法(reference counting)通过对每个对象添加一个引用计数器,统计对象的引用个数,为0则代表可以回收优点就是出现较早,实现简单,效率高;但也有比较明显的问题:无法回收相互引用的对象,会造成内存泄漏,所以很多jvm gc都不会采用这种算法class A{ B b;}class B{ A a;}

2020-05-27 22:10:23 188

原创 JVM笔记 - Java 虚拟机关于 Synchronized 实现以及锁实现的总结

本文是我在阅读 《深入理解Java虚拟机-第三版》和 极客时间 郑宇迪对于JVM的剖析后做的总结,如有不妥,不明白的地方,欢迎斧正下面是一张比较经典的 Java 虚拟机锁实现流程图,不了解JVM的具体锁实现可能会不太明白字节码上的实现声明 synchronized 代码块时,编译而成的字节码将包含 monitorenter 和 monitorexit 指令,一般会包含一个monitorenter和多个monitorexit,确保在函数所有的出口都能释放锁sycnchronized 声明函数时,会在

2020-05-21 14:18:27 269

原创 Nacos注册Dubbo(2.7.x)以及namespace配置

Spring Cloud 提供 RestTemplate 和 FeignClient 方式完成服务间调用,好的微服务架构服务调用应该遵循 对外REST,对内RPC这个原则,为什么选择用RPC,在下面列出了RPC和REST不同之处RPCREST耦合性强耦合松散耦合信息协议二进制文本XML,JSON通讯协议TCP(传输层)HTTP/HTTP2(应用层)性能高低于RPC解决方案Dubbo,TarsSpring MVC开发者友好二进制不可读

2020-05-15 09:01:42 4779 5

原创 配置Nacos 线上测试开发环境隔离,解决不在同一局域网内调用问题

naocs 默认注册的ip是服务器所在局域网 IP ,在测试环境都要关闭线上的服务,防止调用时的负载均衡(172.26.225.161的消费服务访问192.168.16.56下的用户服务),这也太Low了,更何况线上服务总不能测试新功能去关闭主要是用 Spring Boot Profile + Nacos namespaceNamespaces创建一个测试环境复制 Namespace id在你的项目中配置, application.yml 配置如下spring: cloud: n

2020-05-09 11:56:26 4825

翻译 Java 字节码入门

ByteCodeJava虚拟机数据类型The data types defined by the JVM are:Primitive types:Numeric types:byte (8-bit 2’s complement)short (16-bit 2’s complement)int (32-bit 2’s complement)long (64-bit 2’s co...

2020-04-26 15:52:27 202

原创 解决k8s 1.18.0版本 replicas被弃用问题以及暴露k8s的pods 服务

执行命令kubectl run nginx --image=nginx --replicas=2 --port=80 会反馈Flag --replicas has been deprecated, has no effect and will be removed in the future. 并且只创建一个nginx 容器实例在K8S v1.18.0以后,–replicas已弃用 ,推荐用 ...

2020-04-22 11:53:17 6039 2

原创 交错校验法 / interleaving

交错校验是用于应对网络突发错误,对比特流进行更好的保护的通用技术,核心就是改变计算校验位的次序,不以数据位的发送的次序计算校验位没有交错的传输: NNNN EEEE TTTT 遇见突发错误,接收方接收到的信息: NNNN EEXE TXXT 每组代表一个 4 比特、其中有1 比特的纠错码字,EEEE 中有一个改变的比特,这个比特可以被纠错。到那时代码字 TTT...

2020-04-20 16:11:23 964

asmtools.jar

你好,这是asmtools.jar工具,用于修改编译后.class文件,欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用欢迎使用

2020-01-03

空空如也

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

TA关注的人

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