自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

V_Axis的博客

工作一年,只在onenote和有道云上记录,现在要把积累的东西放到博客上,以后的积累也都在此。各位技术大牛多多交流~

  • 博客(27)
  • 收藏
  • 关注

原创 扫盲Zookeeper

ZooKeeper首先申明一下 定位:分布式协调服务。 装逼一点的解释分布式协调服务就是: 在分布式系统中共享配置,协调锁资源,提供命名服务。装完逼就跑,真TM刺激……ZooKeeperZookeeper数据模型Znode存了什么?Zookeeper一致性Zookeeper数据模型很像数据结构中的树,也很像文件系统的目录。如下图: ...

2020-06-01 10:45:42 231

原创 JD:数据库开发规范之MySQL篇

一、基础规范必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间数据表、数据字段必须加入中文注释解读:N年后谁知道这个r1,r2,r3字段是干嘛的禁止使用存储过程、视图、触发器、Event解读:高并发大数据的互联网业务,架构设计思路是“解放数据库C...

2020-04-10 14:53:08 408

原创 MsgPack的浅浅理解

前言记得18年3月刚刚入职的时候,企业邮箱收到的第一个事故报告就是说在bean中添加字段没有加在字段序的最后导致线上出问题,我只是知其然不知其所以然。于是趁着过年没有紧急任务,查阅一些资料充充电。MsgPack是何方神圣直接看官方的解释吧,说的挺明白的:MessagePack is an efficient binary serialization format. It lets you...

2019-02-03 15:28:15 10728 2

原创 Java8新特性Stream使用心得之:allMatch

首先描述碰到的业务场景:给其他部门提供的接口提供的查询参数(类型)由一个变成多个(Integer变为List),且类型字段只能为1、2、3、4四种情况。毋庸置疑,入参一定是要校验的,有什么优雅的办法校验此种业务情况呢?核心目的:校验参数,只有1、2、3、4四种类型为合理入参。校验代码:boolean result = typeList().stream().allMatch(type -&...

2019-02-02 11:33:53 2489

原创 Java8新特性Stream使用心得之:groupingBy与partitioningBy

业务开发过程中,经常会需要将集合中的数据进行聚合操作。比如:取出订单集合中有效订单的数据、按照订单类型做分组等等。以前的处理方式会遍历这个集合然后通过业务判断做处理,虽然可用,但远不够高效且笨拙。为什么需要StreamStream是Java8的一大亮点,是对集合对象(Collection)功能的增强,进行聚合操作、批量数据操作。同时借助于Lambda表达式,提高编程效率和可读性。此外,Stre...

2019-01-16 19:03:37 4163 1

原创 springBoot项目配置热部署

最近在整一个前后端分离的练手项目,后端是springBoot,前端是Vue+axios。在过程中每次修改后端代码后都要重新启动,收集一番资料后,发现springBoot已经提供了方便快捷的解决方案,亲测可行。正文如下(以idea为例)第一步:在pom.xml中添加如下依赖<dependency> <groupId>org.springframework...

2018-07-05 12:00:47 1487

原创 学习笔记-分布式缓存

分布式系统a) 基本术语i. 进程与线程:不再赘述 ii. 并发:系统只有1个CPU,单位时间内对于资源的方位; iii. 锁:用于保护临界区,应用于多线程中。 1. 避免锁争用的几种策略:分拆锁、分离锁、避免共享变量缓存、使用并发容器如Amino、使用Immutable数据和ThreadLocal数据; 2. ConcurrentHashMap的实现...

2018-06-07 23:38:11 385

原创 线程之间的通信

通过几个面试题来了解线程之间的通信。 问题清单:如何让两个线程依次执行?如何让两个线程按照指定方式有序交叉运行?四个线程 A B C D,其中 D 要等到 A B C 全执行完毕后才执行,而且 A B C 是同步运行的。三个线程各自准备,等到三个线程都准备好后,再一起执行某个任务。子线程完成某件任务后,把得到的结果回传给主线程。两个线程依次执行? 假设有两个线程,一个是线程...

2018-02-28 16:21:53 2195

原创 SQL优化的十条建议

SQL优化1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ‘%parm1%’—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下: a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样在调用后台程序

2018-01-16 11:26:54 395

原创 一次完整的网络请求过程

从地址栏输入http://www.gaxis.cn这个URL之后,直到我的个人主页加载完成,中间到底发生了什么呢? 大概经历了以下过程: 1. 分析域名(gaxis) 2. TCP三次握手(嘿,我能连你吗?/完全OjbK啊。/那我连了啊。) 3. 建立TCP连接 4. 浏览器发起HTTP请求 5. 服务器响应请求(哇兄弟你找我了,我收拾一下给你的数据和应答码——这里可以展开讲服

2018-01-05 16:44:52 6242 1

原创 学习笔记:分析MyBatis框架-架构与映射

参考文献:《深入分析Java Web技术内幕》 - 第15章一、MyBatis框架的层次结构1.1 主要职责:根据JDBC规范建立与数据库的连接;通过反射打通Java对象与数据库参数交互之间相互转化的关系;1.2 处理方式: 典型的交互式框架。先期准备好交互的必要条件,然后构建一个交互环境,在交互环境中划分成会话,每次会话都有一个环境。环境OK之后,就做好交换数据就妥了。1.3 主要

2017-12-26 13:47:41 451

原创 学习笔记:volatile关键字总结

volatile、Java内存模型、JMM(Java Memory Model)

2017-12-21 17:10:24 600

原创 学习笔记:Java I/O的工作机制

Java I/O 工作机制;NIO工作原理;NIO demo代码分析

2017-12-04 16:36:48 347

原创 单例模式的升级之路

单例模式:简单的说,就是一个类只能构建一个对象的设计模式。 创建一个线程安全的单例模式。

2017-11-27 16:10:38 316

原创 ConcurrentHashMap:实现线程安全的HashMap

分析ConcurrentHashMap如何保证线程安全、ConcurrentHashMap的读写过程、Size()过程

2017-11-24 16:57:28 13814 4

原创 HashMap为什么线程不安全?浅析高并发情况下的HashMap

1.Hashmap在插入元素过多的时候需要进行Resize;2.Hashmap扩容时Resize的ReHash步骤,并发的情况下可能会形成链表环;

2017-11-22 16:50:18 13587 1

原创 Java细节与规范:HashMap扩容-ReSize

首先要先了解何时需要进行扩容。 在HashMap的源码中有一个非常重要的常量:static final float DEFAULT_LOAD_FACTOR = 0.75f;//负载因子明确几个变量: Capactity: Hashmap的当前长度(2的n次幂); LoadFActor: 负载因子,默认为0.75f; 在每次put之后,会有下面这个判断:if (++size

2017-11-20 17:25:09 1919

原创 HashMap原理分析

HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 此外,在java编程语言中,最基本的结构就是两种:数组、模拟指针(引用)。所有的数据结构都可以用这两个基本结构来构造。 HashMap底层就是一个数组结构,数组中的每一项又是一个链表。新来的Entry节点插入链表时,使用的是“头插法”。使用“头插法”的原因是hashmap的作者认为“后插入的Entry被查找的可能性更大”。

2017-11-15 14:46:53 1459 2

转载 通俗解释悲观锁与乐观锁

转自作者:刘欣旺财和小强生活在一个网上商城的系统中, 是一对儿线程好基友。 星期一刚上班,旺财接到领导电话说,要把一个商品的库存减少20, 旺财不敢怠慢,赶快把库存取出来一看,哦,现在有1000个。与此同时,小强也接到电话说要把同一商品的库存减少30, 他一看,哦,现在有1000个。旺财计算出最新的库存值980, 保存!小强也计算出最新的库存值970, 保存 ! 旺财的数据被小强覆盖了!领导一看,

2017-11-14 17:22:42 883 1

原创 Java细节与规范:ArrayList为何建议赋予默认值及其扩容机制

集合是编程中使用最广泛的类之一,理论上来说是可以无限变大的容器,但是容器变得非常大的时候,初始容量就会非常重要,以下为原因。 ArrayList的扩容机制是比较消耗资源的,首先先看ArrayList的扩容机制源码:public boolean add(E e) { ensureCapacity(size + 1); elementData[size

2017-10-18 12:49:25 765

原创 SXSSFWork、SXSSFSheet使用总结

近期发现做的excel导出功能会导致内存溢出(推测),于是采用了SXSSFWork控制内存中存放的条数,搞了一个礼拜,碰到了许多问题,通过问题也对POI中的SXSSFWork有了深入的了解。在此做个总结。先上两个官方文档 官网POI中的介绍与实例 SXSSFWorkbook的API文档使用时注意一下几点: 1、SXSSF是限制滑动窗口中的行的访问来实现低内存的占用,注意是限制的是访问; 2、

2017-10-18 12:29:16 13276

原创 SXSSFSheet调用createRow报错,并且调用getLastRowNum一直为0的问题

SXSSFSheet的调用getLastRowNum一直为0,createRow抛出异常

2017-10-11 19:31:03 10384 2

原创 编号的后6位是固定的6位数,新增一条自动+1,高位补0的实现

项目中遇到一个业务情况,编号递增且是6位整数。代码自动生成,具体的实现方法如下: public static String maxRuleCode(String code) { String maxcode = “”; if(code == null){ maxcode = “QRC000001”; } else {

2017-09-21 13:43:04 1163

原创 记第一次使用线程池管理多线程

线程池多线程导出excel代码优化

2017-09-14 15:01:56 655

原创 学习笔记 - 数据结构

一、常用的数据结构(1)线性数据结构:元素之间一般存在元素之间存在一对一关系,是最常用的一类数据结构,典型的有:数组、栈、队列和线性表(2)树形结构:结点间具有层次关系,每一层的一个结点能且只能和上一层的一个结点相关,但同时可以和下一层的多个结点相关,称为“一对多”关系,常见类型有:树、堆(3)图形结构:在图形结构中,允许多个结点之间相关,称为“多对多”关系1、线性数据结构

2017-09-14 10:23:32 301

原创 学习笔记:GC-垃圾收集器

如何判断对象是否存活?1、引用计数算法理解:给对象中添加一个引用计数器,每当有地方引用时,计数器加1;引用失效时,计数器减1;所以任何时刻计数器为0额对象就是不可能再被使用的。但是,Java虚拟机没有选用引用计数算法管理内存,主要是因为很难解决对象之间相互循环引用的问题。因为互相引用着对方,导致他们的引用计数都不为0。2、可达性分析算法Java、C#等语

2017-08-17 13:35:26 258

原创 JVM-学习笔记

一、JVM体系结构JVM的结构由4部分组成:1、类加载器:JVM启动时将.class文件加载到JVM中;2、执行引擎:执行.class文件的字节码指令,等同于机器上的CPU;3、内存区(运行时数据区):等同于机器上各种功能的寄存器或PC指针的记录器等;4、本地方法调用:调用C/C++实现本地方法的代码返回结果;类加载器:Class

2017-08-17 13:34:07 344

空空如也

空空如也

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

TA关注的人

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