随笔分类 -  Java

深入探究java
摘要:sequence 基于雪花算法的增强版ID生成器 解决了时间回拨的问题 无需手动指定workId, 微服务环境自适应 可配置化 快速开始 依赖引入 <dependency> <groupId>io.github.mocreates</groupId> <artifactId>uid-generato 阅读全文
posted @ 2022-10-17 08:47 陈其苗 阅读(1152) 评论(2) 推荐(1)
摘要:@Configuration简介 用于标识一个类为配置类,与xml配置效果类似 用法简介 上面的例子应该是@Configuration最普遍一种使用场景了,在@Configuration class下面配置@Bean method,用于想Spring Ioc容器注入bean.但其实我们把AppCon 阅读全文
posted @ 2019-11-17 16:46 陈其苗 阅读(4055) 评论(2) 推荐(1)
摘要:如何在Idea中编译构建Spring Framework 5.x 1. 安装配置Gradle 2. 下载源码:git clone https://github.com/spring projects/spring framework.git 3. 按照工程下 文件的提示进行操作 markdown T 阅读全文
posted @ 2019-11-02 02:37 陈其苗 阅读(4520) 评论(0) 推荐(1)
摘要:什么叫双因子认证? 通俗的讲,一般的认证方式都是用户名/密码的方式,也就是只有密码这一个因子来作认证,双因子无非是增加一个因子,增强认证的安全性。 常见解决方案 短信方式 邮件方式 电话语音方式 TOTP解决方案 前三种方案,其实都大同小异。Server端通过某种算法生成一段随机密码,通过短信、邮件 阅读全文
posted @ 2019-09-01 17:56 陈其苗 阅读(9016) 评论(0) 推荐(0)
摘要:概念 什么是循环引用? 故名思义,多个对象形成环路。 有哪几种循环引用? 在Spring中存在如下几种循环引用,一一举例分析一下 注入循环引用( `注解注入`) 构造器循环引用 工厂构造循环引用(与构造器循环引用类似) Spring如何解决 提前暴露一个 类型的工厂对象,通过这种方式Spring解决 阅读全文
posted @ 2019-06-28 21:52 陈其苗 阅读(6511) 评论(1) 推荐(2)
摘要:分布式系统接口幂等性 1.幂等性定义 1.1 数学定义 在数学里,幂等有两种主要的定义:- 在某二元运算下,幂等元素是指被自己重复运算(或对于函数是为复合)的结果等于它自己的元素。例如,乘法下唯一两个幂等实数为0和1。即 s *s = s- 某一元运算为幂等的时,其作用在任一元素两次后会和其作用一次 阅读全文
posted @ 2019-04-01 14:39 陈其苗 阅读(1248) 评论(1) 推荐(1)
摘要:用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。目前只支持Linux。原因是Mac、Windows的ps命令不支持列出进程的线程id,更多信息参见#33,欢迎提供解法。 PS,如何操作可以参 阅读全文
posted @ 2019-03-06 16:15 陈其苗 阅读(2973) 评论(0) 推荐(0)
摘要:前言 测试环境JDK1.8 常量池可以存放引用,也可以存放常量 String.intern()分析 判断这个常量是否存在于常量池。 如果存在 判断存在内容是引用还是常量, 如果是引用, 返回引用地址指向堆空间对象, 如果是常量, 直接返回常量池常量 如果不存在, 将当前对象引用复制到常量池,并且返回 阅读全文
posted @ 2019-02-22 16:00 陈其苗 阅读(331) 评论(0) 推荐(0)
摘要:提起spring事务,就会让人联想起四大基本特征,五个隔离级别,七大传播特性。相信大多数人都知道这些东西,但是知道是一回事情,能用好真的是另一回事了。在使用Spring事务的时候,我曾遇到过几个比较严肃的问题,在这里我做一个自我总结。 问题一、 propagation.NESTED和propagat 阅读全文
posted @ 2017-11-01 09:30 陈其苗 阅读(1233) 评论(0) 推荐(0)
摘要:事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并发执行的事物之间互不干扰 4.持久性:一个事物一旦提交,它对数据库的改变就是永久的 五个隔离级别 1 阅读全文
posted @ 2017-10-31 20:15 陈其苗 阅读(9371) 评论(0) 推荐(1)
摘要:一、前言 volatile的关键词的使用在JVM内存模型中已是老生常谈了,这篇文章主要结合自己对可见性的一些认识和一些直观的例子来谈谈volatile。文章正文大致分为三部分,首先会介绍一下happen-before,接着讲解volatile的一些使用场景,最后会附上一些例子来论证使用与不使用vol 阅读全文
posted @ 2017-08-24 00:29 陈其苗 阅读(2627) 评论(4) 推荐(0)
摘要:1.引言 最近接触到一个APP流量分析的项目,类似于友盟。涉及到几个C端(客户端)高并发的接口,这几个接口主要用于C端数据的提交。在没有任何缓冲的情况下,一个接口涉及到5张表的提交。压测的结果很不理想,原因有以下几点: 1.业务上处理原始数据,封装数据库对象,需要时间 2.服务与RDS的多张表进行交 阅读全文
posted @ 2017-08-01 20:01 陈其苗 阅读(3816) 评论(0) 推荐(2)
摘要:最近开始接触了分布式的一些东西,这里给自己作一个学习笔记。 这里只是做一个运行demo,具体的理论知识就不在这里阐述了。 1.zookeeper的安装与启动 下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper 下载完成之后,解压,进入到"conf" 阅读全文
posted @ 2017-03-24 14:46 陈其苗 阅读(12693) 评论(3) 推荐(1)
摘要:引言: 之前一篇文章梳理了String的不变性原则,还提到了一段源码中注释"avoid getfield opcode",当时通过查阅资料发现,这是为了防止 getfield(获取指定类的实例域,并将其值压入到栈顶)这个操作码的执行,这篇文章想从字节码的角度去分析一下。 先看一段代码吧 执行 jav 阅读全文
posted @ 2016-12-04 15:31 陈其苗 阅读(1370) 评论(0) 推荐(1)
摘要:在所有编程语言领域,我想字符串应该是地球上最常用的表达手段了吧。 在java的世界里,String是作为类出现的,核心的一个域就是一个char数组,内部就是通过维护一个不可变的char数组,来向外部输出的。 这是jdk一段String类定义,首先类是final,表明类不可被继承;核心域是privat 阅读全文
posted @ 2016-12-03 00:18 陈其苗 阅读(3324) 评论(4) 推荐(1)
摘要:think in java , effective java 这两本书一直都在java的生态圈中经久不衰。本来想着先翻过 think in java 这本大山,但是读到一半就放弃了。过长的篇幅,让人难以忍受,再大的兴趣,也被过多繁琐的文字所磨灭了,但是不可否认里面涵盖了许许多多经典的java知识,可 阅读全文
posted @ 2016-11-22 16:07 陈其苗 阅读(21472) 评论(7) 推荐(0)
摘要:eclipse maven update error 解决方法 本来真不想写这篇博文的,但是eclipse和maven真的是太操蛋了,动不动就出了一些乱七八糟的问题,记录一下。希望公司能早日切换到idea. 1. 从eclipse删除这个项目,但不要从磁盘删除; 2. 关闭eclipse; 3. 删 阅读全文
posted @ 2016-11-08 16:03 陈其苗 阅读(2476) 评论(0) 推荐(0)
摘要:引言: nosql 的兴起和革命,在我看来已经开始逐渐影响到了传统的sql的地位,但是仅仅是影响而已,取代是不太可能的。 正文: 两年前,一个偶然的机会开始接触到 nosql ( mongodb )。用来作数据挖掘的存储容器,第一次接触到nosql,真的被它惊艳到了。鄙人受到传统的SQL的思维定势, 阅读全文
posted @ 2016-09-26 21:53 陈其苗 阅读(1619) 评论(2) 推荐(4)
摘要:无意间翻看之间的代码,发现了一段难以理解的代码。 bs是由一段字符串经过MD5加密后,输出的byte数组。我起初难以理解为什么在接下来的循环中要将bs[i]&oxFF再复制给int类型呢? bs[i]是8位二进制,0xFF转化成8位二进制就是11111111,那么bs[i]&0xFF不是还是bs[i 阅读全文
posted @ 2016-05-25 16:06 陈其苗 阅读(92120) 评论(24) 推荐(45)
摘要:随着互联网的蓬勃发展,越来越多的互联网企业面临着用户量膨胀而带来的并发安全问题。本文着重介绍了在java并发中常见的几种锁机制。 1.偏向锁 偏向锁是JDK1.6提出来的一种锁优化的机制。其核心的思想是,如果程序没有竞争,则取消之前已经取得锁的线程同步操作。也就是说,若某一锁被线程获取后,便进入偏向 阅读全文
posted @ 2016-05-23 16:30 陈其苗 阅读(27333) 评论(1) 推荐(4)