Java学习
文章平均质量分 60
技术企鹅
北邮在读;
专精Java后端方向;
偶尔研究视觉和图形学;
base北京;
前JDL后端实习生,现阿里后端实习生;
展开
-
实习笔记 5
实习收获笔记 5整理了业务的一张庞大的表的表关系,由于企业级的数据库往往不是高范式的,所以真正的表关系往往藏在代码里面,花了一段时间去做这件事情,占用了本周主要的时间。读表可以更快更深地去理解业务。学习了更上层的后端开发思想:思考空间、时间,关心机器的性能。深入了ClassLoader,想出了集中应用的方式,比如作为二方、三方库时保护核心代码等等。订阅模式/监听模式应用于缓存内存的同步,业务背景:某些查询频繁的数据会在启动时被全量读取到缓存或内存中,但是仍然会有动态的更改,监听这个变更信息,即使同原创 2021-07-23 17:45:42 · 117 阅读 · 0 评论 -
实习笔记 4 MySQL深入/JVM深入
实习收获笔记 4MySQL1. InnoDB引擎自适应哈希索引与B+树同时作为索引AIO硬盘读写B+树兼顾了查询次数(通常业务场景是4层左右)和内存连贯性,避免系统上的页面转换。2. 优化分库分表:单机单表能力有限,千万级开始考虑划分;垂直划分水平划分;注意主键全局唯一性,Unicode可以保证,但是查询效率不高,可以单独维护服务器分发递增唯一主键。读写分离:原因是优化索引利于读不利于写,数据库本身也有读快写慢的性质,会出现单机上写入影响查询效率的情况;利用主从复制,主写从读。索引:原创 2021-07-20 09:21:57 · 107 阅读 · 0 评论 -
2021.07.19 Leetcode 每日一题 数学法精讲
题目就不细说了,大家可以根据日期去官网索引一下,大概是入参一个List<纯小写String>,返回一个List<List<所有相同字母不同排序的String>>解题破题“所有相同字母的不同排序”是题点,想法是做一个private方法,可以获得一个“指纹”,对于相同字母不同排序的字符串可以返回相同的指纹。维护一个全局的HashMap,用来管理<指纹,List<String>>,优雅完成判同和写入的流程。对于指纹的生成方法,目前主要有两种:原创 2021-07-19 09:24:41 · 118 阅读 · 0 评论 -
浅谈关于AOP的一些东西(Java、Spring向)
浅谈AOP1. 什么是AOPAOP是Aspect Oriented Programming的简称,面向切面编程,和我们熟悉的OOP(面向对象编程)一样,是一种开发约定,更是一种编程思想。在流行的语言之中,几乎没有一种语言是纯粹的面向切片。面向切片,更是对于面向对象编程的一种补充。面向对象编程是Java开发程序员十分熟悉的一种编程范式,用计算机术语来讲,是体现了封装、多态、继承特性,在开发阶段关注共性(class),再在运行时去管理和使用对象(object)。也就是说,如果在纯粹的面向对象思想下,程序工原创 2021-07-17 14:29:38 · 125 阅读 · 0 评论 -
实习笔记 3
实习收获笔记 3学习了Arthas开源Java线上诊断工具,了解其优势和弊端。可以更优雅地显示官方诊断集能显示的内容,比如线程信息、JVM状态等等,并且开销低,相对安全稳定。但是Arthas仍然不推荐用于分析问题,仅可作为临时排查问题的工具,毕竟属于第三方侵入性应用,对线上环境存在一定的威胁,一旦产生问题,后果难以承担。学习了利用火焰图诊断高CPU问题,了解了某案例,关于可以写在循坏外的高耗时调用被写入了循环内,导致日常环境为被检测出来,但在QPS激增时出现问题。一定要敏感高耗时调用的被调用次数(时间原创 2021-07-16 09:00:16 · 80 阅读 · 0 评论 -
并发框架下的“基础类型”——浅析基本类型、ThreadLocal、原子类的线程安全机制
写在前面在接触java-web开发的时候,常常会思考多个会话在调用同一个方法的时候会发生的事情。其实自然而然就会想到学习java时常提到的“线程安全”概念,原子性、顺序性、可见性。但是对于同样是线程安全的变量或者说容器,它们的安全特性是否有区别,换言之,在特定的场景下,即使我们不从性能角度出发思考问题,我们也仍然要使用不同的线程安全类型。正文1. 阅读一段代码public class Main { // 定义一个大数 1M private static final int NUM =原创 2021-05-06 23:18:45 · 236 阅读 · 3 评论 -
我对HashMap家族的一些理解(HashMap、ConcurrentHashMap、HashTable)
写在前面HashMap与ConcurrentHashMap在Java开发中作为k-v容器使用频率颇高,在面试中也常见二者身影,其重要性不言而喻。但如果只是说因为应用频率高所以重要,那么可谓说是低估了这两个类型的地位。HashMap与ConcurrentHashMap之所以重要,更多是因为二者的设计与实现上广泛涉及到了Java核心思想与各类奇技淫巧,能理解透彻这两个类的人自然代码水平不会太差。可以说吃透HashMap和其并发类型,就是精通了Java代码层的增删改查,入门了高并发。阅读本文需具有一定《数原创 2021-04-30 22:55:34 · 214 阅读 · 2 评论 -
浅谈Java中短路运算符与逻辑运算符
1、逻辑运算符(部分)符号名称&&短路与运算符||短路或运算符&与运算符|或运算符对于理工科学习者来说,逻辑运算是较为基础的概念,通常会在大一的离散数学课程中有所了解。在Java以及更多C-Like语言中,&和|会分别表示逻辑运算中的与、或,他们的运算结果与我们在数学书中所学的逻辑运算规则并无差异。但是,在实际编程的过程中,我们反而会更多使用&&和||,甚至不少同学都不了解&、|两个运算符。那么,这原创 2021-01-11 14:52:24 · 854 阅读 · 5 评论 -
浅谈我对堆和栈的理解(JVM)
写在前面近日,本人在参加Java后端面试的时候连续被问到了一个话题,就是“谈一谈你对于堆和栈的理解”。 显然,这个话题并不是一个数据结构的问题。实际上,谈堆和栈的理解,考察的是一个求职者有没有对计算机底层具备深入且举一反三的认识。出色地答出这个问题将会大大提高在面试官心中的印象,从而增大斩获Offer的可能性。此外,重新正确认识内存分配的机理。从是什么到为什么有一个逻辑上的串联,也对于深入调优和算法设计有着很大的帮助。在JVM中,堆和栈是如何被分配的通常来讲,我们可以大致认为:值类型(int,原创 2020-09-17 23:43:06 · 281 阅读 · 0 评论