自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

【欢迎关注公众号:冬瓜白】

掉不尽的底子玩不尽的味,

  • 博客(17)
  • 资源 (2)
  • 收藏
  • 关注

原创 用最简单的方式理解同步和异步、阻塞与非阻塞

同步和异步、阻塞与非阻塞是耳熟能详的几个名词,但是却很难真正理解其含义,虽然也有很多资料以生活中的事例来进行了说明,但还是有一种模糊不清的感觉,其实很多解释都对,但是所站的角度不一样。这个问题也咨询了一些业界大佬,查阅了一些经典书籍,最终总结如下:阻塞与非阻塞是一种编程模型;而同步和异步是线程模型;同步和异步、阻塞与非阻塞是不一样的,不能混淆。同步和异步的区别在于任务执行方和任务发起方是否在同一线程或者进程;同步指任务的发起方和执行方在同一个线程中完成;异步是一种常见的提升吞吐的手段,指任务的发起方和

2020-06-29 16:29:36 497 2

原创 用 Java 代码实现负载均衡的五种常见算法

在几年前,负载均衡还是“高端玩家”的游戏,我这种小白还难以触及,现在“负载均衡”已经有点看似烂大街的趋势了。提起负载均衡,首先要理解负载均衡到底是想解决什么样的问题,维基百科有这么一段描述:主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题。在现在的互联网系统中,为了避免出现单点问题,最常见的做法就是将系统部署到多台机器上,也就是集群。但是这样会出现两个问题:如何让机器均衡或者相对均衡的接收到到流量;当集群的某个节点宕机,让流量不会打到这个节点

2020-06-27 23:53:30 3646 1

转载 关于 SQL 中 ON DUPLICATE KEY UPDATE 的使用

语法如下:INSERT INTO table1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;假设table1表中的主键或unique索引是a字段的话,当执行上面sql时候,如果数据库table1表中已存在a=1的记录则更新这条记录的c字段的值为原来值+1,ON DUPLICATE KEY UPDATE 语法的目的是为了解决当表中UNIQUE索引或者primary key(主键)出现重复时,就会执行update操作,返回值2,如果没有出现.

2020-06-22 14:39:14 543

转载 Spring Boot 获取启动端口号

public class ConfSerivce implements ApplicationListener<WebServerInitializedEvent>{@Override public void onApplicationEvent(WebServerInitializedEvent event) { try { int port = event.getWebServer().getPort(); .

2020-06-21 17:45:41 849

转载 RestTemplate的异常:Not enough variables available to expand

当使用 RestTemplate 可能会遇到异常:Not enough variables available to expand典型如下:@Autowiredprivate RestTemplate restTemplate;String url = "http://localhost:8080/search?people={\"name\":\"jack\",\"age\":18}";String email = restTemplate.getForObject(url, Stri

2020-06-21 17:44:10 4248

原创 自己动手写分布式任务调度框架

分布式任务调度框架是互联网公司的标配,趁着周末下雨天,自己动手写了一个简版,主要是为了体会其中的原理。框架特点和一些基本功能如下:弹性扩容缩容,理论上可无限扩容,智能负载均衡;Master-Slave 模式,高可用,支持故障转移;调度精度设置;使用简便;其他的比如区分不同项目、任务的动态上下线、任务串行/并行执行、报警重试机制等功能,由于时间原因暂未添加。整个框架设计非常简单:应用在启动后会向注册中心上报任务,调度平台会根据任务生成计划列表,当任务触发后,调度平台会向应用集群下发任务。

2020-06-21 17:41:40 727

原创 小议 MySQL InnoDB 事务隔离 和 MyBatis 一级缓存

相关文章:一次群聊“事件”引发的对 @Transactional 和 MyBatis 的思考昨天跟一个同学探讨了一个问题,虽然是个小问题,但是牵扯的内容还是很多的,这里做一下总结。他的代码简化如下: @Autowired private UserMapper userMapper; @Transactional public void test(){ //此时数据库是没有 name 为 "test..." 的 User Strin

2020-06-17 18:16:12 531 3

原创 小议 Java 类的初始化

根据《Java 虚拟机规范》:The Java Virtual Machine dynamically loads, links and initializes classes and interfaces.即 Java 虚拟机会动态地加载、链接和初始化类和接口。类初始化的定义和 <clinit>() 方法本文主要会讨论类的初始化,那么如何证明类已经被初始化了呢,首先要看什么是类的初始化,根据 Java 虚拟机规范:Initialization of a class or int

2020-06-13 15:06:38 237

原创 Chrome 清除 Cookie 的坑

平时清除 Cookie 直接这么清楚:但是有时候这么清除了会发现仍然没有退出登陆状态,这时候可以进入开发者工具查看是否还有 Cookie,然后再清除:

2020-06-12 12:23:37 751

原创 自己动手写 Java 虚拟机(二)-查找 Class 文件

相关文章:自己动手写 Java 虚拟机(一)-编写命令行工具我们都知道 Java 类加载有这么几个阶段:加载、验证、准备、解析和初始化。本文就是实现加载阶段的查找 class 文件。《自己动手写 Java 虚拟机》前两章其实并未涉及到很多 JVM 相关的知识,主要是在为后面做准备,一些内容书上过于繁琐,不属于主干内容,这里会简写或者忽略。类路径按照搜索的先后顺序,类路径可以 分为以下3个部分:启动类路径(bootstrap classpath)扩展类路径(extension classpa

2020-06-11 17:45:52 331

原创 org.springframework.web.client.HttpClientErrorException$UnprocessableEntity: 422 UNPROCESSABLE EN

今天在使用 RestTemplate 的时候出现了这个异常:[2020-06-10 19:35:10] [kbs_dev] [ERROR] [main] com.mi.info.kbs.service.midun.MidunSupport-add admin to Midun fail..{"users":[{"uid":"1","nickname":"112"}]}org.springframework.web.client.HttpClientErrorException$Unprocess

2020-06-10 19:38:20 2414 1

原创 自己动手写 Java 虚拟机(一)-编写命令行工具

本文是学习《自己动手写 Java 虚拟机》的第一篇学习笔记,将通过对该书的学习,一步一步使用 Java 语言编写 Java 虚拟机(作者使用的是 Go 语言),应该是很穷人版 Java 虚拟机,就是解析 Java 代码,然后编写执行引擎去执行这段代码。跟随作者的脚步,首先基于 Java 实现一个命令行工具。JCommander这里使用 JCommander 实现一个命令行工具(Commons CLI 也可以)。JCommander is a very small Java framework .

2020-06-08 17:21:15 619

原创 用最简单的方式解释 Java 是值传递还是引用传递

相关文章:ThreadLocal 系列之用简单的方式解释 ThreadLocal本文目标:去掉高大上的专有名词,用最简单的方式解释“我这个 Java 方法到底传递的是啥”。背景和其他(可跳过)先用两句“废话”介绍一下背景,本段可直接跳过,昨天一做 C/C++ 好友想学习一下 Java,环境配置好了,IDEA 也装好了,“HelloWorld”也撸出来了。但是在看到《Java 核心技术 卷 Ⅰ》时候对“Java 是值传递还是引用传递”提出了疑问。首先这本书相关的描述过于复杂和啰嗦,反而对本来就带

2020-06-06 23:01:12 305

转载 运行javac编译报错:仅当显式请求注释处理时才接受类名称“xxxxxx”

发生原因:运行javac编译时没有加上扩展名。解决方法:加上.java扩展名重新编译即可,"xxxxxx.java"。

2020-06-06 17:36:41 791

原创 设计模式之工厂方法模式

相关文章:每天学习一点点之设计模式之简单工厂模式在简单工厂模式中,实例化产品对象的具体操作是在工厂类中完成的,在我们事先预知的情况下,可以根据需要去动态创建产品类,但是我们的预知是有限的,一旦客户端发生变化,这时候需要修改工厂类的源代码,不符合‘开闭原则“。工厂方法模式一个很重要的核心就是“将实例的生成交给子类”。在模版设计模式中,是在父类中规定处理流程,具体执行逻辑由子类去实现。在工厂方法模式中就是,父类规定实例的生成方式,但不决定要生成的具体的实例类,具体执行逻辑由子类去实现,也就是说父类扮

2020-06-05 09:49:47 209

原创 对一段代码的性能分析

先看这么一段代码:/** * @author Dongguabai * @Description * @Date 创建于 2020-06-02 23:27 */public class ArrayTest { private static StopWatch sw = new StopWatch("Test"); public static void main(String[] args) throws InterruptedException { Threa

2020-06-04 20:09:30 331

原创 补充:JVM 是如何处理信号的

相关文章从 Java 程序优雅停机到 Linux 信号机制初窥自己动手调试 JDK(CLion)每天学习一点点之 Linux C 编程基础之信号机制(一)本文是对《从 Java 程序优雅停机到 Linux 信号机制初窥》的补充。其实到现在为止,已经发现信号机制没那么复杂,本质是通过 sigaction 函数去注册 Handler。接下来就是在源码中走一遍流程。那么这个流程主要要关注两个,注册和触发(可能在嵌入式领域这两个词描述不太准确),即 Java 程序去注册 Hook(Handl..

2020-06-02 08:36:03 590

skywalking 6.5、6.6、6.6 es7 版本 tar 包

skywalking 6.5、6.6、6.6 es7 版本下载包,官方下载太慢。要注意如果连接 ES 7 记得下载 es7 版本

2021-02-04

IDEA查看Java运行代码的汇编指令工具

IDEA查看Java运行代码的汇编指令工具,将文件导入jre/bin中后,在IDEA中进行相关配置,即可查看汇编指令,具体方法可参看:https://blog.csdn.net/Dongguabai/article/details/82818120

2018-09-22

空空如也

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

TA关注的人

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