自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 博客目录

个人学习笔记声明:以下笔记均为个人理解,目的是为了以后重新回顾可以快速理解,其中参考了一些别人的理论和资料,但是并不能代表笔记里面的内容与词汇意思同官方意思完全一致,可能存在理解偏差甚至错误理解。欢迎指出错误或者有歧义之处,谢谢理解。并发编程系列java线程状态并发编程问题java内存模型volatile关键字详解synchronized的作用及实现原理读书收获设计模式体会...

2019-10-22 11:44:57 132

原创 红黑树简要

红黑树简要红黑树性质红黑树插入插入节点N为根节点插入节点N的父节点为黑色节点插入节点N的父节点为红,且叔节点也是红色插入节点N的为父节点的左子节点,父节点为红,且叔节点是叶子节点(左左)插入节点N的为父节点的右子节点,父节点为红,且叔节点是叶子节点(左右)右右和右左两种情况,其实就是P节点为G节点的右孩子,处理方法和左左、左右几乎一样,只是旋转不同,偷懒不画。红黑树删除红黑树性质节点是红色或黑色。根是黑色。所有叶子都是黑色(叶子是NIL节点)。每个红色节点必须有两个黑色的子节点。(从每个叶子到根

2021-08-09 15:34:15 225

原创 基于IDEA2020.1的JAVA代码提示插件开发例子

基于IDEA2020.1的JAVA代码提示插件开发例子之前因为项目组有自己的代码规范,为了约束平时的开发规范,于是基于2019.1.3版本开发了一个代码提示的插件。但是在把IDEA切换到2020.1版本的时候,却发现疯狂报错,但是网上关于IDEA插件开发的相关文章还是不够多,只能自己解决。于是根据官方的SDK文档,使用Gradle重新构建了一下项目,把代码拉了过来。下文会根据2020.1版本简单...

2020-05-05 17:38:02 5414 5

原创 一次排除线上for循环引起的游戏卡顿问题过程

某年某月某日,正在公司划着水,吃着火锅唱着歌的时候,测试大佬突然反馈,外网玩家投诉说游戏卡出翔了!!!于是放下手中的筷子。。啊不是手机,淡定的登录了监控后台看了看,发现一切正常,不就垃圾回收次数变多了点嘛,cpu又还没到百分之一百,内存也还没到顶呢,怎么可能卡,一定是玩家无理取闹,测试瞎几把乱反馈。刚想骂回去怎么可能卡,想着我的GM账号好久没登录去虐玩家了,顺便上去看看吧,一顿操作猛如虎之后,顺利...

2019-10-24 15:12:43 739

原创 Johnson-Trotter(JT)算法生成排列

对于生成{1,……,n}的所有n!个排列的问题,我们可以利用减治法,该问题的规模减一就是要生成所有(n-1)!个排列。假设这个小问题已经解决了,我们可以把n插入到n-1个元素的每一种排列中的n可能的位置中去,来得到较大规模大问题的一个解。按照这种方式生成的所有排列都是独一无二的,并且他们的总数应该是n(n-1)!=n!。这样,我们都得到了{1,……,n}的所有排列。 Johnso...

2019-10-23 14:26:45 2242

原创 利用官方git svn插件迁移svn仓库

简单介绍利用官方git svn插件迁移svn仓库简介git svn是一个把代码从svn仓库迁移到git仓库的工具,官方的使用文档参考Git - 迁移到Git,本文中对几个具体的步骤进行提炼。svn迁移到git步骤1.构建user.txtuser.txt是一个把svn用户和git用户关联起来的文档,如果svn用户少的话,可以直接手填,例如:svn_user = git_user <g...

2019-10-22 11:41:01 771

原创 Spring源码及其原理简析(未完成待续)

Spring源码及其原理简析(待续)Spring的初始化(以ClassPathXmlApplicationContext为例)在使用ClassPathXmlApplicationContext的时候,ClassPathXmlApplicationContext最终调用的构建方法如下:public ClassPathXmlApplicationContext( String[] confi...

2019-10-22 11:35:08 103

原创 设计模式简单总结

设计模式简单总结(参考:Head Fisrt 设计模式)策略模式策略模式定义了算法族,分别封装起来,让他们之间可以相互替换。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w3zcFevm-1571715079827)(image/design_pattern/stratgy_pattern.jpg)]观察者模式(监听器模式)在对象之间定义一对多的依赖(注意...

2019-10-22 11:31:36 179

原创 设计模式体会(Head First 设计模式)

Head First 设计模式收获找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混淆到一起。这个说起来很简单,但是实施起来会比较难。或者换种方法说,可能一开始设计的时候,一些代码是不需要独立出来的,但是随着时间的流失和业务的优化修改,这部分代码的扩展导致系统越来越臃肿,越来越难以修改。例如书中例子,鸭子会飞,但是万一需求增加了,增加了一个模型鸭子,模型鸭子继承了鸭子父类...

2019-10-22 11:30:37 168

原创 Synchronized作用以及实现原理

Synchronized作用以及实现原理Synchronized基本原理Synchronized是java提供的一个关键字,其作用是保证程序在执行的时候,有且只有一个线程同时在同步代码块里面执行。其实现的根本依据是JMM的先行发生原则中的管程锁定规则:一个unlock操作先行发生于后面对同一个锁的lock操作。Synchronized的三种实现方式修饰静态方法代码及其字节码:publ...

2019-10-22 11:28:57 400

原创 volatile关键字详解

volatilevolatile作用简述volatile是java自带的关键字,其作用是通过防止指令重排和缓存一致性协议,保证多线程并发下的可见性问题。指令重排是指,在不影响代码执行的最终结果前提下,为了最大化cpu利用率以及性能,将代码乱序执行。volatile实现的原理解决缓存一致性确切来讲,volatile并不能保证缓存一致性,缓存一致性是通过硬件层面的缓存一致性协议保证的,例如M...

2019-10-22 11:22:35 1830 1

原创 JAVA内存模型

JMM(Java Memory Model),JAVA内存模型1. 定义及其目的JMM是用来屏蔽掉不同的硬件和操作系统中,内存的访问差异,以实现java程序在不同的平台下达到一致性的访问结果(参考自深入理解java虚拟机)。它的主要目的是定义程序中,各个变量的访问规则,即在虚拟机中将变量存储到内存和内存去除变量这样的底层操作(此处的变量不包括局部变量和方法参数,因为二者是线程私有的)。JMM规...

2019-10-22 11:16:11 116

原创 并发编程问题

并发编程问题及其解决方案,JMM概念及作用并发编程问题线程的安全性问题一般表现为三方面,分别为可见性,原子性和有序性。可见性是指,线程对变量的修改,其新的结果是否可以马上被其他线程所看见;原子性是指,某一系列的操作,要么全部成功执行,要么执行失败,不存在部分执行,部分未执行的情况。有序性是指,程序实际运行顺序,和程序定义的运行顺序一致。如果程序中有违反这三种情况出现,则有可能导致线程安全问题,...

2019-10-22 11:13:47 109

原创 Java线程状态

Java线程状态(非操作系统线程状态)java线程状态分为六种,分别是NEW,RUNNABLE,BLOCKED,WAITING,TIME_WAITING和TERMINATED,六种状态可以从Thread$State类看到具体的描述信息,个人理解的各种状态解释如下:NEW新建状态,源码中解释为Thread state for a thread which has not yet started...

2019-10-22 11:06:17 121

空空如也

空空如也

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

TA关注的人

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