- 博客(58)
- 资源 (16)
- 收藏
- 关注
原创 7_本地方法栈
本地方法栈Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。 如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么Java虚拟机将会抛出一个outofMemoryE
2021-08-02 17:35:23
86
原创 6_本地方法接口
本地方法接口什么是本地方法简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "c" 告知c++编译器去调用一个c的函数。"A native method is a Java method whose implementation is provided by non-jav
2021-08-02 17:15:43
80
原创 5_虚拟机栈
虚拟机栈虚拟机栈概述由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。有不少Java开发人员一提到Java内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有Java堆(heap)和Java战(stack)?为什么?首先栈是运行时的单位,而堆是存储的单位栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。 堆解决的是数据存储的问题,即数
2021-08-02 17:09:43
133
原创 4_程序计数器
程序计数器介绍JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。在JVM规范中,.
2021-08-02 17:01:58
198
原创 3_运行时数据区概述及线程
前言本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区也就是大厨做饭,我们把大厨后面的东西(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎,将通过准备的东西进行制作成精美的菜品内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,...
2021-08-02 16:58:32
92
原创 2_类加载子系统
类加载子系统概述完整图如下如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?类加载器 执行引擎类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(..
2021-08-02 16:51:54
116
原创 1_内存与垃圾回收篇
JVM与Java体系结构前言作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM!想解决线上JVM GC问题,但却无从下手。 新项目上线,对各种JVM参数设置一脸茫然,直接默认吧然后就JJ了 每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优VM参数,如何解决GC、OOM等问题,一脸懵逼。大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对.
2021-08-02 13:39:18
230
原创 自定义注解实现限流
一、创建注解RateLimiterpackage com.niwodai.mobile.bi.web.controller.limit;import java.lang.annotation.*;//专门用来限定某个自定义注解能够被应用在哪些Java元素上面的@Target(value = {ElementType.METHOD})//如果一个注解被定义为RetentionPolicy.RUNTIME,那么这个注解可以在运行期的加载阶段被加载到Class对象中。那么在程序运行阶段,我们可以
2021-08-02 10:26:44
494
原创 Elasticsearch面试题(四)
62-面试题为什么要使用 Elasticsearch?系统中的数据, 随着业务的发展,时间的推移, 将会非常多, 而业务中往往采用模糊查询进行数据的搜索, 而模糊查询会导致查询引擎放弃索引,导致系统查询数据时都是全表扫描,在百万级别的数据库中,查询效率是非常低下的,而我们使用 ES 做一个全文索引,将经常查询的系统功能的某些字段,比如说电商系统的商品表中商品名,描述、价格还有 id 这些字段我们放入 ES 索引库里,可以提高查询速度。Elasticsearch 的 master 选举流程?E
2021-07-29 22:17:00
229
原创 Elasticsearch优化(三)
56-优化-硬件选择Elasticsearch 的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件…/config/elasticsearch.yml中配置,如下:## Path to directory where to store the data (separate multiple locations by comma):#path.data: /path/to/data## Path to log files:#path.lo
2021-07-29 22:06:04
167
原创 Elasticsearch集成(二)
49-框架集成-SpringData-整体介绍Spring Data是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce框架和云计算数据服务。Spring Data可以极大的简化JPA(Elasticsearch…)的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD 外,还包括如分页、排序等一些常用的功能。Spring Data 的官网Spring Data 常用的功能模块如下:S
2021-07-29 21:48:37
287
原创 2021-07-12 日常SQL笔记
DROP TABLE IF EXISTS t_presto_query_event; CREATE TABLE "presto"."t_presto_query_event" ( "id" int8 NOT NULL DEFAULT nextval('t_presto_query_event_id_seq'::regclass), "query_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, "transaction..
2021-07-12 15:30:16
312
原创 springMVC请求流程详解
SpringMVC框架是一个基于请求驱动的Web框架,并且使用了‘前端控制器’模型来进行设计,再根据‘请求映射规则’分发给相应的页面控制器进行处理。(一)整体流程具体步骤:1、 首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对...
2021-07-12 11:14:59
762
原创 数据建模模块设计文档
一、模型表表结构设计如下:DROP TABLE IF EXISTS t_mode_table;CREATE TABLE t_mode_table( id int8 NOT NULL, db_name VARCHAR(32) NOT NULL, table_name VARCHAR(32) NOT NULL, table_comment VARCHAR(32) NOT NULL, table_ddl VARCHAR(32), subject_id V
2021-07-08 14:27:14
534
原创 Spring循环依赖debug源码图
Spring解决循环依赖过程:调用doGetBean()方法,想要获取beanA,于是调用getSingleton()方法从缓存中查找beanA在getSingleton()方法中,从一级缓存中查找,没有,返回nulldoGetBean()方法中获取到的beanA为null,于是走对应的处理逻辑,调用getSingleton()的重载方法(参数为ObjectFactory的)在getSingleton()方法中,先将beanA_name添加到一个集合中,用于标记该bean正在创建中。然后回调匿名内
2021-07-04 00:14:10
99
原创 实时同步抽数ETL---Shell脚本
#!/bin/bashexport LNAG=zh_CN.UTF-8# 补数逻辑,pg => hdfs# -- --schema <name>connect=$1username=$2password=$3hdfs_path=$4query_condition=$5alias_time=$6tablename=$7queue=$8hdfs_path_tmp=${hdfs_path}_tmpquery_condition="${query_condition}
2021-05-01 11:03:25
1141
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅