12 2019 档案
摘要:作者:LittleMagic 出处: 注意System.currentTimeMillis()潜在的性能问题来源:简书 System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。但实际上在并发调用或者特
阅读全文
摘要:出处: mybatis一级缓存二级缓存 一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因
阅读全文
摘要:基本前提知识: 一:Object/wait(), notify(), notifyAll() 1:wait() 方法暂停当前线程,并立即释放对象锁; 2:notify()/notifyAll() 方法唤醒其他等待该对象锁的线程,并在执行完同步代码块中的后续步骤后,释放对象锁 3:notify()和n
阅读全文
摘要:出处: 这么写参数校验(validator)就不会被劝退了~ 很痛苦遇到大量的参数进行校验,在业务中还要抛出异常或者 不断的返回异常时的校验信息,在代码中相当冗长, 充满了if-else这种校验代码,今天我们就来学习spring的javax.validation 注解式参数校验. 为什么要用vali
阅读全文
摘要:出处: SpringMVC参数绑定,这篇就够了! [Spring MVC] - SpringMVC的各种参数绑定方式 SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的
阅读全文
摘要:出处: 深入理解 Java 虚拟机-如何利用 VisualVM 对高并发项目进行性能分析 前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到一些分析的工具,因为一般使用IDEA,而VisualVM对于IDEA也不错,所以就选择VisualVM来分析JVM性能,这篇文章
阅读全文
摘要:出处: https://mp.weixin.qq.com/s/IfUFuwn8dsvMIhTS3V01FA 相关文章: JVM 垃圾回收原理 对于JVM的垃圾收集(GC),这是一个作为Java开发者必须了解的内容,那么,我们需要去了解哪些内容呢,其实,GC主要是解决下面的三个问题: 哪些内存需要回收
阅读全文
摘要:出处: Java 内存区域透彻分析 Java8内存模型—永久代(PermGen)和元空间(Metaspace) 这篇文章主要介绍Java内存区域,也是作为Java虚拟机的一些最基本的知识,理解了这些知识之后,才能更好的进行Jvm调优或者更加深入的学习,本来这些知识是晦涩难懂的,所以希望能够讲解的透彻
阅读全文
摘要:出处: https://www.cnblogs.com/hunrry/p/9183209.html https://www.cnblogs.com/protected/p/6652188.html 这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚。后来终于找到了
阅读全文
摘要:出处: 链接:https://www.jianshu.com/p/a1cd61fa22da ThreadLocal原理回顾 ThreadLocal的原理:每个Thread内部维护着一个ThreadLocalMap,它是一个Map。这个映射表的Key是一个弱引用,其实就是ThreadLocal本身,V
阅读全文
摘要:出处: http://www.jianshu.com/p/cd705f88cf2a 1、内存溢出和内存泄漏的区别 内存溢出 (Out Of Memory):是指程序在申请内存时,没有足够的内存空间供其使用,出现Out Of Memory。 内存泄露 (Memory Leak):是指程序在申请内存后,
阅读全文
摘要:出处: https://mp.weixin.qq.com/s/8j8YTcr2qhVActLGzOqe7Q https://blog.csdn.net/h2604396739/article/details/91441248 先分析一道面试题 JVM 堆内存溢出后,其他线程是否可继续工作? 答:这道
阅读全文
摘要:资料出处: http://www.sohu.com/a/329564560_700886 https://www.cnblogs.com/nuccch/p/10903162.html 前言 Linux系统下如何kill掉一个后台Java进程,相信童鞋们都知道如何操作。首先使用ps命令查找该Java进
阅读全文
摘要:1:测试某个测试溢出,修改堆内存大小 鼠标右键程序 在run as里面的run configuration 里 设置:
阅读全文
摘要:在Java中通常有两种线程:用户线程和守护线程(也被称为服务线程)通过Thread.setDaemon(false)设置为用户线程通过Thread.setDaemon(true)设置为守护线程线程属性的设置要在线程启动之前,否则会报IllegalThreadStateException异常如果不设置
阅读全文
摘要:出处: 一文看懂java io系统 学习java IO系统,重点是学会IO模型,了解了各种IO模型之后就可以更好的理解java IO Java IO 是一套Java用来读写数据(输入和输出)的API。大部分程序都要处理一些输入,并由输入产生一些输出。Java为此提供了java.io包 java中io
阅读全文
摘要:出处: java包装类的缓存机制 java 包装类的缓存机制,是在Java 5中引入的一个有助于节省内存、提高性能的功能,只有在自动装箱时有效 Integer包装类 举个栗子: 这段代码输出的结果为true 使用自动装箱将基本类型转为封装类对象这个过程其实底层实现是调用封装类的valueOf方法:
阅读全文
摘要:出处: 让我们聊一聊分布式事务 分布式事务一致性协议2pc和3pc 一个复杂的系统往往都是从一个小而简的系统发展衍化而来,为了满足日益增长的业务需求,不断的增加系统的复杂度,从单体架构逐步发展为分布式架构,而分布式系统架构的设计主要关注:高性能,高可用,高拓展 分布式事务 高可用是指系统无中断的执行
阅读全文
摘要:一:atomikos 二:阿里分布式事务框架 GTS
阅读全文
摘要:一:内部类 1:什么是内部类? 大部分时候,类被定义成一个独立的程序单元。在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类(有些地方也叫做嵌套类),包含内部类的类也被称为外部类(有些地方也叫做宿主类) 我们先创建一个基本的内部类结构: 2:内部类的划分 内部类
阅读全文
摘要:出处: MySQL优化 - 性能分析与查询优化 优化应贯穿整个产品开发周期中,比如编写复杂SQL时查看执行计划,安装MySQL服务器时尽量合理配置(见过太多完全使用默认配置安装的情况),根据应用负载选择合理的硬件配置等。 1、性能分析 性能分析包含多方面:CPU、Memory、磁盘/网络IO、MyS
阅读全文
摘要:出处: 《今天面试了吗》-Redis Redis是什么 面试官:你先来说下redis是什么吧 我:(这不就是总结下redis的定义和特点嘛)Redis是C语言开发的一个开源的(遵从BSD协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种NoSQL(no
阅读全文
摘要:出处: 分享一些JVM常见的面试题 前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大部分内容参照自这一篇文章,有一些自己补充的,也算是重新学习一下
阅读全文
摘要:你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 首先需要考虑到:更新数据库或者更新缓存都有可能失败,在这种前提下分析业务带来的影响。 一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求
阅读全文
摘要:出处: User space 与 Kernel space (整理)用户空间_内核空间以及内存映射 学习 Linux 时,经常可以看到两个词:User space(用户空间)和 Kernel space(内核空间)。 简单说,Kernel space 是 Linux 内核的运行空间,User spa
阅读全文
摘要:个人觉得安全措施大体来看主要在两个方面,一方面就是如何保证数据在传输过程中的安全性,另一个方面是数据已经到达服务器端,服务器端如何识别数据,如何不被攻击;下面具体看看都有哪些安全措施。 1.数据加密 我们知道数据在传输过程中是很容易被抓包的,如果直接传输比如通过 http 协议,那么用户传输的数据可
阅读全文
摘要:Jstack是什么? jstack是java虚拟机自带的一种堆栈跟踪工具。 功能: jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长
阅读全文
摘要:@Component与@Bean的区别 @Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。 @Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。 两者的目的是
阅读全文
摘要:出处: https://www.cnblogs.com/kubidemanong/p/10475024.html 前言 天各一方的两台计算机是如何通信的呢?在成千上万的计算机中,为什么一台计算机能够准确着寻找到另外一台计算机,并且把数据发送给它呢? 可能很多人都听说过网络通信的 5 层模型,但是可能
阅读全文
摘要:出处: git入门:概念、原理、使用 git和Github 概念 Git 版本控制工具(命令)。 git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。git是个工具,在linux里面也就类似gcc这样的工具一样,是一个shell命令。git是Linus Torva
阅读全文
摘要:出处: Git使用教程 一、Git是什么? Git是目前世界上最先进的分布式版本控制系统。 工作原理 / 流程: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 二:SVN与Git的最主要的区别? Linus一直痛恨
阅读全文
摘要:一:Git安装教程(windows) 下载地址:https://git-scm.com/downloads 安装教程可以上网看:例如这个: Git安装教程(windows) 安装完成之后windows开始菜单出现:Git/Git bash/Git GUI/Git CMD 代表安装成功 二:Git和码
阅读全文
摘要:1. 常见概念在合理应用缓存前,需要了解缓存领域里相关的几个常用术语: 1)缓存命中:表示数据能够从缓存中获取,不需要回源; 2)Cache miss:表示没有命中缓存,如果缓存内存中还有内存空间的话,会将数据加入到缓存中; 3)存储成本:当没有命中缓存时,回源获取后会将数据放置到存储中,整个将数据
阅读全文
摘要:出处:https://zhuanlan.zhihu.com/p/46353221 熟悉Redis的人都知道,它是单线程的。因此在使用一些时间复杂度为O(N)的命令时要非常谨慎。可能一不小心就会阻塞进程,导致Redis出现卡顿。 有时,我们需要针对符合条件的一部分命令进行操作,比如删除以test_开头
阅读全文
摘要:出处:redis4.0之基于LFU的热点key发现机制 前言 业务中存在访问热点是在所难免的,redis也会遇到这个问题,然而如何发现热点key一直困扰着许多用户,redis4.0为我们带来了许多新特性,其中便包括基于LFU的热点key发现机制。 Least Frequently Used Leas
阅读全文
摘要:出处: HTTPS原理看了很多,这个是最清晰的! https://mp.weixin.qq.com/s/hf8CeMl7-m-PvbRn251OYA 大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA 证书等。 但对于以下灵魂三拷问可能
阅读全文
摘要:出处: 你还在从零搭建项目 ? 前言 在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为“第0个迭代”要做的事情。但是,当项目运行了一段时间之后再来反观,我总会发现一些不足的地方,要么测试分类没有分好,要么基本的编码架子没有考虑周全
阅读全文
摘要:出处: 不了解布隆过滤器?一文给你整的明明白白 海量数据处理以及缓存穿透这两个场景让我认识了布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它! 下面我们将分为几个方面来介绍
阅读全文
摘要:redis是什么: Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain s
阅读全文
摘要:一、什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 Tips:最好不要在主库上数据库备份,大型活动前取消这样的计划。 磁盘IO:磁盘IO性能突然下降、大量消耗磁盘性能的计划任务。解决:更快磁盘设备、调整计划任务、做好磁盘维护。 1.3 网卡流量:如何避免无法连接数据
阅读全文
摘要:出处: 如果你这样回答“什么是线程安全”,面试官都会对你刮目相看 不是线程的安全 面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。切记望文生义。同理,“线程安全”也不是指线程的安全,而是
阅读全文
摘要:出处: 重要的接口需要做哪些检查 在软件开发中有一些接口需要做特殊的检查,以防黑客使用这些接口的漏洞来攻击我们的系统,给公司造成损失。 0x01:用户注册接口 一、每一个完整的软件系统都有一套完善用户体系,注册接口至少存在以下风险点: 存在被机器人进行批量注册、产生大量僵尸用户 恶意注册 存在被机器
阅读全文
摘要:出处:数据库分库分表思路 一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查
阅读全文