自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiajie的专栏

程序人生的精彩需要坚持不懈地积累!

  • 博客(232)
  • 资源 (11)
  • 收藏
  • 关注

原创 博客摘录「 复杂度应对之道 - COLA应用架构」2023年4月23日

细请参看我另一篇文章领域建模。所以在架构层面我们并没有强制约束要使用DDD,

2023-04-23 17:17:40 135

原创 mysql数据库索引知识一网打尽

问题:1数据库中索引的原理,种类,使用索引的好处和问题是什么?2.解释mysql索引、b树,为啥不用平衡二叉树、红黑树(磁盘和内存的存储方式不同)--滴滴3.Hash索引和B+树索引的区别?为什么不用Hash索引4.索引场景的实现方式有哪些,有哪些区别?5.MySQL的存储引擎有哪些,有哪些区别?6.Innodb使用的是什么方式实现索引,怎么实现的?7.聚簇索引和非聚簇索引的区别?8.为什么用B+树而不用B树?9.主键索引和非主键索引的区别问题1:数据库中索...

2020-09-04 17:01:45 262

原创 快手Java社招面试题解析

快手一面1.要不先做下自我介绍?说一说你最近做的那个项目?然后针对简历提了几个问题2.mysql我看你简历里面说做过mysql的优化,说说你都做过哪些优化或者优化的思路? 数据库的索引了解吗?说一下索引的原理?聚集索引和非聚集索引了解吗? 了解mysql的回表吗? mysql实现分布式锁了解吗?还有没有其他更好的方式?3.事务说一下事务的一些东西? 你对事务的了解有哪些? 说说数据库的乐观锁和悲观锁?4.reidsRedis有哪些持久化方式? 你们在项目中一般怎么做持..

2020-07-31 10:47:05 1553 2

原创 LeetCode189:旋转数组

思路:1.先把最后一个数字记录下来2.把右边除了最后一个往右移动一位,最后把最后一个记录下来的数字放在位置为0的位置3.以上的方式循环k次public static void rotate(int[] numbers, int k) { k = k % numbers.length; int temp = 0; for (int i = 0; i < k; i++) { temp = numbers[number

2020-07-30 20:45:05 241

原创 面试题2:mysql的行锁

mysql的锁是由具体的存储引擎实现的。InnoDB 支持行锁和事务Mysql有三种级别的锁定:表级锁定、页级锁定、行级锁定

2020-07-14 11:33:46 273

原创 面试题1:Redis的内存淘汰机制

问题引入: 我们知道redis的内存是有限的,但是如果当redis的内存使用超过上限,该如何定制淘汰算法?

2020-06-28 23:28:03 266

原创 maven相关问题4:正确的集成命令-U -B -X -e 等

参考命令:mvn -U clean deploy -Dmaven.test.skip=true -Dmaven.compile.fork=true 不要忘了clean:clean能够保证上一次构建的输出不会影响到本次构建。 使用deploy而不是install:构建的SNAPSHOT输出应当被自动部署到私有Maven仓库供他人使用,这一点在前面已经详细论述。 使用-U...

2020-02-28 10:49:48 1353

原创 maven相关问题3: install package deploy 这三个命令的区别 和常见命令

1. 易混淆的命令maven package:打包到本项目,一般是在项目target目录下。 maven install:打包会安装到本地仓库。 maven deploy:将打包的文件发布到远程仓库(私服),提供其他人员进行下载依赖。==》这个在本地仓库也会生成2.常用命令【1】mvn clean : 清理【2】mvn compile : 编译主程序【3】mvn test-...

2020-02-28 10:42:17 326

原创 maven相关问题 2:maven的生命周期

Maven有三套相互独立的生命周期,分别是:①Clean Lifecycle 在进行真正的构建之前进行一些清理工作。②Default Lifecycle 构建的核心部分,编译、测试、打包、安装、部署等等。③Site Lifecycle 生成项目报告,站点,发布站点。...

2020-02-28 10:27:13 204

原创 maven相关问题(1):maven中依赖的范围

1.依赖的范围①从项目结构角度理解compile和test的区别compile范围依赖对主程序是否有效:有效 对测试程序是否有效:有效 是否参与打包:参与 是否参与部署:参与 典型例子:spring-coretest范围依赖对主程序是否有效:无效 对测试程序是否有效:有效 是否参与打包:不参与 是否参与部署:不参与 典型例子:Junit②从开发和运行这两个阶段理解...

2020-02-27 11:09:10 224

原创 Effective Java 5.避免创建重复的对象

1.重用不可变对象如果对象是不可变的,那么它就始终可以被重用。对于同时提供了静态工厂方法和构造方法的不可变类,通常使用静态工厂方法而不是构造方法,以避免创建不必要的对象,尽管同时提供两种方法的场景不太多。例如静态工厂方法Boolean.valueOf(String)几乎总是优于构造方法Boolean(String),从源码注释中我们也能看到相应的提示信息。2.注意自动装箱问题自Java 1...

2019-05-26 18:29:05 311

原创 Effective Java 4.通过私有构造器强化不可实例化的能力

当创建一个工具类的时候,一般是无需实例化的,类里面都是静态域和静态方法,这种情况下我们尽量保证工具类不能被实例化。可以定义一个私有的构造器,如下:public class Tools { // 不可被实例化的类 private Tools() { throw new AssertionError(); }}添加 throw new Assert...

2019-05-26 17:40:36 220

原创 LeetCode9:回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文...

2019-03-21 21:01:57 259

原创 Leetcode01:两数之和

链接:https://leetcode-cn.com/problems/two-sum/solution/我的提交:暴力解法class Solution { public int[] twoSum(int[] nums, int target) { int[] result = new int[2]; for(int i=0 ;i&lt; nums...

2019-03-11 17:26:21 322

原创 实现一个最基础版的RPC

RPC的实现原理RPC主要是为了解决的两个问题:解决分布式系统中,服务之间的调用问题。 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。还是以计算器Calculator为例,如果实现类CalculatorImpl是放在本地的,那么直接调用即可: 现在系统变成分布式了,CalculatorImpl和调用方不在同一个地址空间,那么就必须要进行远程过程调用:...

2019-02-24 21:49:48 272

转载 日志输出性能优化-缓存、异步

笔者负责的一个集成接口平台的应用,其业务功能并不复杂,但是要重点考虑接口的性能。在进行过异步数据库写入、第三方代码调优、报文解析调优后,基本上已经无可优化性能的代码了。但是在JProfiler的监控里面又发现了logback日志的可优化空间。问题描述:下图中可看出logback的日志输出占了64%的cpu消耗,目标就是优化它!优化方案:1. 这部分写日志的代码写了一些报文数据,确...

2019-02-18 20:46:35 1511

原创 JVM内存溢出时 Dump内存分析

1.JVM参数-XX:+HeapDumpOnOutOfMemoryError 设置堆内存溢出时,保存内存快照参数说明(1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。(2)-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称也就是说当发生OutOfMemoryErro...

2019-02-12 21:01:14 3682

原创 GcLog 日志:GC(Allocation Failure)

日前查看某个程序的日志,发现一直在报GC相关的信息,不确定这样的信息是代表正确还是不正确,所以正好借此机会再复习下GC相关的内容:以其中一行为例来解读下日志信息:[GC (Allocation Failure) [ParNew: 367523K-&gt;1293K(410432K), 0.0023988 secs] 522739K-&gt;156516K(1322496K), 0.00...

2019-01-30 15:44:29 3389

原创 JVM 参数

-X、-XX区别-X:非标准选项以 -X 开头的这些选项是非标准选项,是特定于 Java HotSpot 虚拟机的通用选项,不保证所有 JVM 的实现都支持它们,而且还会发生变化。-X:非标准选项以 -XX 开头的选项是高级选项,高级选项不建议随意使用。这些是开发人员用于调优 Java HotSpot 虚拟机操作的特定区域的选项,这些选项通常具有特定的系统需求,并且可能需要特权访问...

2019-01-29 21:24:21 449

原创 JVM在新版本的改进更新以及相关知识

1.JVM在新版本的改进更新图中可以看到运行时常量池是放在方法区的  1.1对比:    JDK 1.7 及以往的 JDK 版本中,Java 类信息、常量池、静态变量都存储在 Perm(永久代)里。类的元数据和静态变量在类加载的时候分配到 Perm,当类被卸载的时候垃圾收集器从 Perm 处理掉类的元数据和静态变量。当然常量池的东西也会在 Perm 垃圾收集的时候进行处理。    ...

2019-01-29 16:16:05 1275

转载 MQ发送事务消息

MQ事务消息交互流程如下:发送事务消息包含以下两个步骤: 发送半消息及执行本地事务 package com.alibaba.webx.TryHsf.app1;import com.aliyun.openservices.ons.api.Message;import com.aliyun.openservices.ons.api.PropertyKeyConst;impor...

2018-09-18 20:57:25 995

原创 Dubbo源码分析:Dubbo自己实现的IOC

  在创建自适应实例时,都会调用ExtensionLoader的injectExtension方法: @SuppressWarnings("unchecked") private T createAdaptiveExtension() { try { /** * 传入自适应实例注入到ExtensionLoader...

2018-09-16 21:25:12 649

原创 微服务架构下的数据一致性保证(二):可靠事件模式

第一篇分享中讲到实现可靠事件模式的关键在于:可靠事件投递和避免事件重复消费,其中避免事件重复消费需要微服务满足幂等性。那么又该如何实现可靠事件投递?又该如何保证服务满足幂等性?转载本文需注明出处:EAII企业架构创新研究院,违者必究。如需加入微信群参与微课堂、架构设计与讨论直播请直接回复公众号:“EAII企业架构创新研究院”。(微信号:eaworld)· · ·大家好,今天是第二次...

2018-09-07 11:55:33 398

原创 微服务架构下的数据一致性保证(一)

大家好,今天我给大家分享的题目是微服务架构下的数据一致性保证。今天分享第一篇,主要内容包括: 1.传统使用本地事务和分布式事务保证一致性。2.传统分布式事务不是微服务中一致性的最佳选择。3.微服务架构中应满足数据最终一致性原则。4.微服务架构实现最终一致性的三种模式。5.对账是最后的终极防线。一、传统使用本地事务和分布式事务保证一致性 传统单...

2018-09-07 11:54:41 502

转载 微服务架构下的数据一致性保证(三):补偿模式

在微服务架构下,一个典型的业务操作往往由一系列自治的微服务步骤组成,如果某个步骤发生了业务异常(比如支付时账户余额不足等)时就出现了数据不一致。我们采用补偿模式来撤销已经完成的步骤,从而实现最终一致性。  今天分享的还是关于微服务架构下的数据一致性保证的话题,是数据一致性系列分享的第三篇。在第一篇分享中介绍了微服务架构应满足数据最终一致性,并简要介绍了最终一致性的三种模式:可靠...

2018-09-07 11:52:32 920

原创 Dubbo的SPI扩展机制剖析

我们都是知道一个合格的开源框架对于扩展的支持都要是相当弹性的,Dubbo 也不例外。Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。Dubbo的扩展机制是基于SPI思想来实现的,但是并没有采用JDK中原生的SPI机制。1.什么是SPIjava spi的具体约定为:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接...

2018-09-04 23:02:32 499

原创 Buidler建造者模式

1.Builder模式介绍        Builder模式是一种一步一步创建一个复杂对象的设计模式,我认为这种设计模式的精髓就主要有两点:其一,用户使用简单,并且可以在不需要知道内部构建细节的情况下,就可以构建出复杂的对象模型;其二,对于设计者来说,这是一个解耦的过程,这种设计模式可以将构建的过程和具体的表示分离开来。2.Builder模式的使用场景        1.相同的方法,不...

2018-08-26 16:31:11 315

原创 java 异常处理 Throwable Error 和Exception

Java异常类层次结构图什么是异常异常的英文单词是exception,字面翻译就是“意外、例外”的意思,也就是非正常情况。事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误。比如使用空的引用、数组下标越界、内存溢出错误等,这些都是意外的情况,背离我们程序本身的意图。错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误,在编译期间出现的错误有编译器帮助我们一起修正...

2018-08-12 16:03:03 362

原创 匿名内部类

 public class Test { public static void main(String[] args) { //4.匿名内部类 //主要是针对那些不能直接创建对象的抽象类和接口而来的 Student stu=new Student(); System.out.println(stu.getClass())...

2018-08-10 21:21:38 432

原创 Repository模式

最近开发的MVC项目使用了Repository模式。啥是Repository模式?从图看,有一个仓库接口,一个实现了这个仓库接口的基类;然后在使用方,一方面,要声明一个继承于仓库接口的子接口,另一方面,编写一个数据库操作类,继承仓库基类,并实现这个子接口。继承仓库基类容易理解,为啥还要搞一个子接口呢?直接实现仓库接口不就完啦?思考其中原因,应该是为了控制反转,依赖注入,总之一个类对应一个接口就是了...

2018-06-16 11:27:24 7581 1

原创 Netty学习(3): 客户端和服务端的例子

服务端:package com.server;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.Channel;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty....

2018-05-15 21:32:25 561

原创 java的回调机制

简单的解释      你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。...

2018-05-12 16:28:15 388

原创 Netty学习(1):Channel的概念

1. ChannelChannel是Netty的核心概念之一,它是Netty网络通信的主体,由它负责同对端进行网络通信、注册和数据操作等功能。1.1 工作原理如上图所示:一旦用户端连接成功,将新建一个channel同该用户端进行绑定channel从EventLoopGroup获得一个EventLoop,并注册到该EventLoop,channel生命周期内都和该EventLoop在一起(注册时获得...

2018-04-17 16:53:04 1762 2

原创 Netty学习(2): protobuf序列化框架学习

1. protobuf是什么    protobuf是google旗下的产品,用于序列化与反序列化数据结构,但是比xml更小、更快、更简单,而且能跨语言、跨平台。你可以把你的数据按你的要求结构化,然后可以转化成多种数据流,同时其他语言可以通过不同的流转化成自己熟悉的语言的数据格式。如C++语言开发者,定义了一个User数据结构,java开发者可以把此数据流轻易的转化成java环境下的数据结构。  ...

2018-04-14 16:03:23 446

原创 基础知识概念(1):Socket 长连接和短连接的概念

1.短连接连接-&gt;传输数据-&gt;关闭连接    HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束后就中断连接。短连接是指SOCKET建立连接后 ,发送后或接收完数据后,就马上断开连接。2.长连接连接-&gt;传输数据-&gt;保持连接-&gt;传输数据-&gt;....-&gt;关闭连接    长连接指建立SOCKET连接后不管是否使用都保持连接,但安...

2018-03-22 20:33:56 674

转载 Java通过URLClassLoader让程序支持插件扩展

插件(Plugin)是什么不用多说。常用的软件,例如Eclipse、Photoshop、VisualStudio,都支持插件扩展。插件可以动态给软件添加一些功能,也可以随时删除,这样的好处是任何人都可以给这个软件进行功能上的扩展,而不用去改软件本身的代码。为什么使用插件模式 使用插件模式实现某些功能的好处在于能够在不重新编译主程序的情况下,动态为主程序添加一些其他的功能。 插件的存在形式 在Jav...

2018-03-12 16:28:46 603 1

转载 阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了

1.源码分析专题详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美、提高核心竞争力。帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华。知其然,并知其所以然。把知识变成自己的2.分布式架构互联网时代,系统架构如何迎接高并发流量的挑战。而作为技术开发者,如何去应对技术变革带来的技能危机。基于传统架构到分布式架构演变过程所带来的技术变革进行全面深入讲解。在技术深度和技术广度上...

2018-03-12 16:04:37 668

转载 通过netty和Zookeeper实现dubboRPC框架

2018-03-10 13:55:31 1587 1

转载 Git(二):Git分支管理策略

如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control System)。眼下最流行的"版本管理系统",非Git莫属。相比同类软件,Git有很多优点。其中很显著的一点,就是版本的分支(branch)和合并(merge)十分方便。有些传统的版本管理软件,分支操作实际上会生成一份现有代码的物理拷贝,而Git只生成一个指向当前版本(又称"快照")的指针,因

2017-11-07 22:28:29 1646

原创 Git(一):git基本的工作流程

1.git基本的工作流程

2017-11-07 19:43:17 512

CronExpBuilder-1.0(触发器表达式生成器)

Quartz的corn表达式生成器,Quartz的corn表达式生成器

2017-09-28

运行tomcat源码所要添加的jar包

运行tomcat源码所要添加的jar包,导入到下载的tomcat项目中

2016-01-08

redis入门指南第二版pdf

redis入门指南第二版pdf 非常的清晰 非常适合入门者

2015-12-15

springmvc+spring+mybaits 整合jar包(绝对可用)

springmvc+spring+mybaits

2015-04-27

java培训知识-递归

java培训知识-递归,详细描述了,递归算法。

2013-08-28

手机安全卫士工程源代码

android手机安全卫士工程源代码,导入即可运行,高仿金山手机安全卫士。

2013-08-28

系统架构设计师通过几点总结

2011系统架构设计师通过几点总结,个人经验总结,希望可以帮到大家。

2013-08-28

extjs个人理财系统完整项目代码

extjs个人理财系统完整项目代码,调试无误,可以导入直接运行。

2013-08-28

加密文件工具

宏杰加密文件,可用来加密文件,可以加密文件夹,也可以加密文件和磁盘。

2013-08-28

FCKEditor所需要的jar包集合

项目中整合fckeditor,所需要的jar包

2013-08-28

FCKEditor编辑器

不错的编辑器,我自己也用过了,没有错误。

2013-08-28

空空如也

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

TA关注的人

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