自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 InnoDB的AUTO_INCREMENT处理

本文翻译自MySQL官方手册,对InnoDB的AUTO_INCREMENT处理作了介绍。

2024-04-23 01:04:51 971

原创 对InnoDB引擎中Doublewrite作用的理解

doublewrite(两次写)技术解决了InnoDB存储引擎的数据页没写完整导致的数据损坏问题。本文尝试说明为何redo log不能解决该问题,以及为何doublewrite技术可以解决该问题。

2024-04-21 22:55:43 281

原创 Redis持久化 - 应用篇

与传统数据库不同,Redis把所有数据存储在内存中,虽然存储在内存中提升了Redis服务的性能,但内存中的所有数据在系统断电之后就会丢失,为此Redis提供了RDB、AOF、RDB-AOF混合等多种持久化功能。当然,用户也可以关闭持久化功能,让服务器处于无持久化的状态。

2024-02-29 18:20:43 833

原创 InnoDB锁介绍

本文主要介绍MySQL InnoDB引擎中的各种锁策略和锁类别,并针对记录锁做演示以便于理解。

2024-02-28 17:46:22 710

原创 从业务应用开发者的角度优化MySQL性能

MySQL的性能优化包括操作系统和硬件优化、MySQL服务配置优化、合理的表结构设计和索引设计、查询优化等等,其中业务应用开发者能做的主要在表结构、索引、查询三个方面,以下对这三个方面的优化思路做简单介绍。

2024-02-23 23:25:04 689 1

原创 如何使用Kafka可靠地发送消息-《Kafka权威指南(第二版)》阅读笔记

可靠性是系统而不是某个独立组件的一个属性,所以,在讨论Kafka的可靠性保证时,需要从系统的整体出发。说到可靠性,那些与Kafka集成的系统与Kafka本身一样重要。正因为可靠性是系统层面的概念,所以它不只是某个个体的事情。Kafka管理员、Linux系统管理员、网络和存储管理员,以及应用程序开发者,所有人必须协同作战才能构建出一个可靠的系统。

2023-02-26 17:55:54 516 2

原创 《Kafka权威指南(第二版)》内容摘要

《Kafka权威指南(第二版)》部分内容摘要

2023-02-26 17:50:05 509

原创 cnpm : 无法加载文件 C:\Users\azhao\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本 问题解决

cnpm作为npm在国内的镜像,安装模块的速度要快上很多。在安装好cnpm并执行cnpm -v时,提示如下错误:解决方案如下:1.打开Windows PowerShell,以管理员身份运行;2.输入命令set-ExecutionPolicy RemoteSigned更改执行策略3.出现提示时,输入Y执行完成后,回到命令行重新执行npm -v,已经可以正常执行了。...

2022-04-16 12:04:49 476

原创 MySQL死锁分析

结合InnoDB行锁类型和实现,触发死锁,解析死锁日志以及分析死锁产生过程

2022-03-06 23:04:16 999

原创 关于MySql中explain结果filtered的理解

帮忙理解filtered值的含义以及如何评估一个filtered值的好坏

2021-12-28 21:17:03 41894 2

原创 《领域驱动设计》笔记

# 领域驱动设计## 第一部分:运用领域模型### 第一章 消化知识* 有效建模的要素 * 模型和实现的绑定 * 建立了一种基于模型的预言 * 开发一个蕴含丰富知识的模型 * 提炼模型 * 头脑风暴和实验* 知识消化 * 研发人员和领域专家一起参与领域知识的消化,不断重塑模型,最终获得一组适用于所有细节的抽象概念* 持续学习 * 高效的团队需要有意识地积累知识,并持续学习。对于开发人员来说,这意味着既要完善技术知识,也要培养一般的领域建模技巧...

2021-02-28 22:55:32 170

转载 Push dev to origin/dev was rejected by remote

最近在 push 代码到 github 时,IDEA报错Push rejected: Push to origin/master was rejected在网友找了一圈,发现都不是想要的答案于是在命令行敲了一遍 git push,报错信息如下remote: error: GH007: Your push would publish a private email address....

2020-02-29 23:13:23 15695 1

原创 java.lang.RuntimeException: Can't start redis server. Check logs for details.

今天在做应用的单元测试时,遇到一个使用embedded-redis的问题,记录如下:在启动单元测试时,本地的redisServer启动失败,异常栈信息如下:java.lang.RuntimeException: Can't start redis server. Check logs for details. at redis.embedded.AbstractRedisInsta...

2019-06-27 22:10:45 5641 2

原创 Bridge(桥接)模式

一、目的将抽象部分与它的实现部分分离,使它们都可以独立地变化。二、背景现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系:我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维度上新增一个具体...

2019-06-15 00:15:55 6926

原创 Adapter(适配器)模式

一、定义将一个的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。二、背景有时,为复用而设计的工具类不能被复用的原因恰恰是因为它的接口和专业领域现有的接口不匹配。如果遇到了接口无法兼容的问题,我们可以改掉工具类的接口使之适应于现有的接口,但前提是你拥有修改工具类的权限;即使你拥有的修改工具类源代码的权限,我们仅仅为了一个应用就...

2019-06-03 22:39:08 406

原创 设计模式

最近在重构现有系统的代码,其中有不少地方都用到了设计模式。虽然之前也看过一些设计模式相关的书籍,但总感记忆模糊,因此最近又重温了GOF的23种设计模式。GOF把设计模式分为三大类,分别是创建性模式、结构型模式和行为模式。接下来一段时间我将一一对这些模式做整理和学习,并分享在博客中。一、创建型模式Abstract Factory(抽象工厂)模式 Builder(生成器)模式 Fact...

2019-06-03 22:36:20 113

原创 FullGC触发条件和解读GC日志

前几天在做功能压测时发现应用在启动时出现了4次Full GC,并且当时还没有开始压测,当时排查了很长时间,最终发现是犯了一个低级错误,本想配置-Xss256k的,结果把-XX:MetaspaceSize配置成了256k。o(╥﹏╥)o本着不在同一块儿石头上绊倒两次的原则,又系统了学习了一下Full GC的触发条件和如何查看GC日志。简单来说有如下几种情况会触发gc1.调用System....

2019-04-21 18:40:20 9753 2

原创 Spring Boot功能简介及简单的应用搭建(附带源码)

Spring Boot是一个用于简化Spring应用搭建和开发的框架,它提供了四个主要特性,能够改动开发Spring应用程序的方式:1.Spring Boot Starter:它将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中;Spring Boot Starter的实现原理不复杂,主要是利用Maven和Gradle的依赖传递方案...

2019-03-24 21:28:12 240

原创 如何更好对系统进行测试

TDD(测试驱动开发)的三项法则: 在编好失败单元测试之前,不要编写任何产品代码。 只要有一个单元测试失败了,就不要再写测试代码;无法通过编译也是一种失败情况。 产品代码恰好能够让当前失败的单元测试成功通过即可,不要多写。 测试代码的一个问题是必须隔离出待测试的代码。如果一个函数调用了其他函数,单独测试它通常会比较困难。为了编写测试,你必须找出将这个函数和其他函数解耦...

2019-03-21 23:20:25 2268

原创 限流算法

常见的限流算法有:令牌桶、漏捅。计数器也可以用来进行粗暴限流实现。1.令牌桶算法:是一个存放固定容量令牌的桶,按照固定速度往桶里添加令牌。令牌桶算法的描述如下。 假设限流2r/s,则按照500毫秒的固定速率往桶中添加令牌; 桶中最多存放b个令牌,当桶满时,新添加的令牌被丢弃或拒绝; 当一个n个字节大小的数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上。 ...

2019-03-21 23:13:18 121

原创 volatile变量使用姿势

Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。在访问volatile变量时不会执行加...

2019-03-21 23:11:37 209

原创 如何合理设置Java线程池大小

《Java并发编程实战》一书中,Brian Goetz和合著者们为线程池大小的优化提供了不少中肯的建议。这非常重要,如果线程池中线程的数量过多,最终它们会竞争稀缺的处理器和内存资源,浪费大量的时间在上下文切换上。反之,如果线程的数目过少,正如你的应用所面临的情况,处理器的一些核可能就无法充分利用。Brian Goetz建议,线程池大小与处理器的利用率之比可以使用下面的公式进行估算:Nt...

2019-03-21 23:07:57 1348

原创 /bin/bash^M: bad interpreter: No such file or directory

错误原因之一可能是你的脚本文件是DOS格式的。我们需要先查看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的vi filename:set ff?接下来可以看到dos或unix的字样;如果是dos格式, 用set ff=unix把它强制为unix格式的,然后存盘退出,再运行。

2017-02-06 12:27:17 385

原创 Linux下的压缩命令

压缩文件:tar -zcv -f filename.tar.gz 要被压缩的文件或目录查看解压文件:tar -ztv -f filename.tar.gz解压文件:tar -zxv -f filename.tar.gz -C 要解压的目录

2017-01-08 23:36:39 307

原创 Linux的df命令

简单介绍了Linux中df命令的用法。

2017-01-04 13:17:33 666

原创 利用redis实现的分布式锁

假设一个场景:在分布式系统中,通常会遇到多个服务器处理同一个业务的场景,我们需要利用某种机制避免并发问题。Java语言中,我们可以通过锁的方式避免单个服务的多线程并发问题,而分布式系统中的并发问题用Java的锁机制是很难解决的。分布式锁也有类似地“首先获取锁, 然后执行操作,最后释放锁”的动作,为了解决分布式系统的并发问题,我们可以使用redis实现一个跨机器的分布式锁。下面先看r

2016-09-15 23:33:11 8374 2

原创 maven的pom文件报错: must be "pom" but is "jar"

解决一个maven项目的pom文件报错问题

2016-09-11 17:55:07 31408 3

原创 Cannot use Jedis when in Multi. Please use Transation or reset jedis state.

使用jedis的transaction时,执行如下代码会报异常:Jedis conn = new Jedis("localhost");conn.select(0);Transaction trans = conn.multi();conn.hdel("count:" + counter, pair.getKey() + "");trans.exec();异常如下:

2016-08-30 23:27:58 6930

原创 Java类加载器介绍

本文介绍类加载器概念,类加载器的分类,类加载器加载类的机制,最后实现一个自定义类加载器。

2016-05-09 23:27:49 6556 1

原创 Java的类加载步骤

1、Java虚拟机(JVM)和类的关系在Java中,启动某个Java程序时,会启动一个JVM进程,无论Java程序多么复杂,是单线程还是多线程,它们都是在JVM进程中运行的。在不同的JVM中运行的同一个类是不同的,两个JVM进程之间并不会共享数据,所有的JVM内存共享都是指同一个JVM内存共享。public class JVMTest { public static void m

2016-05-05 17:57:19 785

原创 使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面

使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面?解决办法:tomcat配置中,On frame deactivation属性选择Update classes and resources即可。

2016-05-04 22:56:05 38749 10

原创 Strnig str = new String("123");究竟创建了几个String对象?

今天在面试的时候被问到标题上的问题,今天回来看了Java API中关于String对应构造方法的文档描述,如下:初始化一个新创建的,和参数的字符序列相同的String对象,换句话说,新创建的String对象是传入的String类型参数的副本。由于String对象是不可变的,因此除非需要一个显式的字符串对象副本,否则无需使用该构造方法。通过new String(String original

2016-05-03 21:50:58 1802

原创 Struts2中加载国际化资源文件的顺序

详细介绍了在Action类中和JSP中使用国际化资源文件加载消息时,根据key查找消息的顺序。

2015-11-28 22:55:35 2161

原创 JavaScript中创建对象的几种方式

一、工厂模式创建对象function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayHello = function(){ alert("Hello,my name is " + this.name + " and i am " + t

2015-08-26 22:31:40 522

原创 Oracle数据库实例间的连接—link

工作中使用的是Oracle数据库。今天在工作中遇到正式库的表数据缺失的问题,这些缺失的数据需要从另外一个数据库实例的表中获取数据来补全,但是由于是两个数据库实例之间的数据迁移,之前没有遇到过,刚好最近又在学习Oracle数据库,于是便在网上学习了一些方式,其中的一种方式便是,利用数据库实例的连接来实现不同数据库实例中的数据迁移。现总结如下:当前我的Oracle数据库上只有一个数据库实例即O

2015-07-15 22:33:48 3197

原创 Oracle未选定行的问题

在Oracle10g的SQL*Plus中输入select table_name from all_tables where owner='scott';查询某个用户下有多少表的时候,按下回车键会报未选定行的问题。原因是大小写输入不正确,改为select table_name from all_tables where owner='SCOTT';即可。

2015-07-11 23:01:36 25013 2

转载 常用SQL语句

查看当前用户的缺省表空间  SQL>select username,default_tablespace from user_users;  查看当前用户的角色  SQL>select * from user_role_privs;  查看当前用户的系统权限和表级权限  SQL>select * from user_sys_privs;  SQL>s

2015-07-11 22:45:47 440

原创 JavaScript的原型问题

在JavaScript中,我们创建的每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途则是包含可以由特定类型的所有实例所共享的属性和方法。如下面的例子。function Apple(){}Apple.prototype.name = "阿克苏";Apple.prototype.color = "red";Apple.prototype.sa

2015-06-06 16:18:35 782

原创 JavaScript中对象的创建方式

面向对象的语言有一个标志,那就是都有类的概念,通过类可以创建任意多个具有相同属性和方法的对象。在JavaScript中,没有类的概念,因此JavaScript中的对象和基于类的语言中的对象也是不同的。在JavaScript中,对象是“无序属性的集合,其属性可以包含基本值、对象或者函数”。对象本质是值,就是一组没有特定顺序的值。其中值可以是数据,也可以是函数。每个对象都是基于一个引用类型

2015-06-06 13:52:25 1085

原创 Spring异常:org.xml.sax.SAXParseException: cvc-complex-type.2.4.c

本人使用的spring版本是spring-framework-4.0.0,在配置文件中使用util:property-path标签时,在配置文件的beans标签中添加xmlns:util="http://www.springframework.org/schema/util"字符片段以后运行程序,发现报如下错误:Exception in thread "main" org.springfr

2015-05-03 18:27:44 3705

RocketMQ实战与原理解析

RocketMQ实战与原理解析,系统介绍RocketMQ的使用姿势以及实现原理。

2019-04-05

空空如也

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

TA关注的人

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