- 博客(23)
- 收藏
- 关注
原创 关于缓存一致性的思考?
在应用程序中通常应用层和数据库层是分开的,我们几乎所有的应用数据都来自于数据库,数据库同时提供读和写的服务。在现代应用体系,微服务化将应用程序模块细分,同时软件设计中也提供了读写分离的概念。我们在...
2022-03-18 13:58:37
559
原创 MySQL
MySQL基础知识mysql读写过程读1 查看缓存中是否存在id,2 如果有 则从内存中访问,否则要访问磁盘,3 并将索引数据存入内存,利用索引来访问数据,4 对于数据也会检查数据是否存在于内存,5 如果没有则访问磁盘获取数据,读入内存。6 返回结果给用户。写1 先写undo log2 在内存更新数据3 记录变更到redo log,prepare4 写入binlog5 redo log 第二阶段,commit6 返回给client如果有slave第4步之后
2022-02-27 18:14:51
385
原创 Redis
Redis数据结构/命令String特性长度最大为512m使用mset mget减少网络通讯次数key键的设置规则命名格式<>:<>:<>……命令SET key value [EX seconds] [PX milliseconds] [NX 必须不存在|XX 必须存在]Set 不加过期时间重新设置后 失效时间失效SETEXSET VALUE EXSETNXSET VALUE NXPSETE
2022-02-26 16:45:01
602
原创 mybatis-spring工作原理及常用crud实现
基于jdk 动态代理实现 依赖注入 只有当被使用时才会触发bean实例化注入spring项目中 在初始化bean时直接将原始的mapper类型bean注册为 MapperFactoryBean MapperProxy/MybatisMapperProxy核心1: org.apache.ibatis.builder.xml.XMLConfigBuilder读取mybatis配置文件信息-数据库以及类型映射 将配置信息转换为内部org.apache.ibatis.session.Configurati
2021-08-14 11:11:08
144
原创 Spring的一些用法
Java中常用注解:注意:以下两个注解属于Java@PostConstruct@PreDestroy接下来我们用一段代码演示这两个注解在Spring中的执行顺序创建一个springboot项目一、创建一个bean:package com.futuretrip.demo.springdemo;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;impor
2021-08-05 11:06:02
163
原创 zookeeper启动加载-源码阅读
最近正在整理毕业一年来学到的东西,学艺不精还望各位大佬及时给予帮助,让我能在这条路上越走越远!!从源码了解zookeeper server端的启动zookeeper版本为从GitHub拉取的最新源码1.启动脚本从zkServer.sh中我们可以获取到server端的启动入口类QuorumPeerMainorg.apache.zookeeper.server.ZooKeeperServerMain 单机启动org.apache.zookeeper.server.quorum.QuorumPe
2021-08-05 09:23:44
143
原创 Java线程池
1. 什么是线程池?在Java当中,线程池是一个提供线程管理的容器,提供线程的创建,任务的保存以及线程数量的控制,对无法处理的任务的异常处理2. 为什么要引入线程池?Java虚拟机在创建销毁一条线程时需要付出较大的机器代价,需要调用操作系统为新的线程申请/回收资源。在此之前我们知道每一条线程在虚拟机当中都有自己的程序计数器/虚拟机栈(本地方法栈)。如果无限制的新建线程,会造成大量的虚拟机内存资源占用,因此需要通过限制创建线程的数量保证内存可用。限制可创建的线程数量后,新的任务无法被执行,因此需要数据结
2021-07-26 17:40:49
109
原创 hadoop全家桶部署手册hadoop-solr-ranger-atlas-hive-hbase...
atlas是什么?atlas使用场景?atlas安装?环境要求组件要求安装方式启动方式参数说明
2021-06-18 11:57:31
656
原创 hive创建表失败
具体操作如下:cd hive/bin./hivecreate table user ( eid int, name string, age int ) ;出现的错误信息:NoViableAltException(334@[212:1: tableName : (db= identifier DOT tab= identifier -> ^( TOK_TABNAME $db $tab) |tab= identifier -> ^( TOK_TABNAME $tab) );])
2021-05-24 12:03:40
1993
1
原创 Java虚拟机(四)
Java虚拟(二)上一章我们讲了Java虚拟机的类加载,仅仅只是将我们需要用到的类读取到了虚拟机当中,准确的说是“类加载子系统”当中,接下来我们来探索之后的变化。在面试当中常常会闻到类加载相关的问题。老生常谈 7个步骤:加载、验证、准备、解析、初始化、使用、卸载第一步已经说过了,验证:防止动态获取生成的字节码数据流有问题文件格式验证1. 是否以魔数开头2. 主次版本号是否在当前Java虚拟机接受范围之内3. 常量池的常量中是否有不被支持的常量类型4. 指向常量的各种索引值是否有误
2021-04-15 17:18:10
179
原创 应用的并发问题解决思路
系统设计杂谈:硬件:网络内存CPU软件编码多线程锁的使用,单体应用或是分布式应用,是否使用分布式锁?使用redis、zookeeper还是数据库?使用synchronized还是reentrantlook?.线程池的使用线程池大小的考虑,应用为IO密集型还是计算密集型,计算密集型应用应该减少线程数量,大小为硬件支持的线程数量,避免频繁切换线程,提高cpu利用率;io密集型应该考虑增加线程数量设计模式提高应用可拓展与安全性,应该采用合适的设计模式,
2021-04-09 09:06:41
268
原创 Java虚拟机(三)
Java虚拟机(二)在正式了解类加载之前我觉得很有必要先去了解运行时数据区,毕竟我们是个正常人,学习这件事有个章程,按照逻辑去理解总比死记硬背来的踏实。那么我们就先了解了解运行时数据区:Java虚拟机中将运行时数据区大致分为 堆、非堆(方法区)、虚拟机栈、本地方法栈、程序计数器五个模块。其中 堆和非堆(方法区)区域是线程共有的,所有的正常运行的线程都可以访问并修改其中可见的数据。寄存器、虚拟机栈以及本地方法栈是随着线程的创建而创建的。每一个pc寄存器当中都存放着当前线程将要执行的下一条指令的位置,虚
2021-03-05 12:36:18
86
原创 Java虚拟机(二)
Java虚拟机(一)虚拟机创建-启动-类加载-运行-类卸载-虚拟机销毁上一章节我们大致看了虚拟机的组成,本节将讲述虚拟机的类加载;首先我们需要知道什么是虚拟机的类加载?Java程序是依赖于Java虚拟机运行的,因此要想让我们的应用程序跑起来,必须先把我们写的程序放进虚拟机里边。应用程序运行时始终获取的都是我们虚拟机内部的数据信息,我们加载的类可以是本地文件,可以是来自于网络,也可以是在运行过程中生成的。因为所有的数据信息都可以以二进制数据的方式保存,因此,我们可以通过各种各样的方式去获取需要加载的
2021-01-05 00:33:49
242
3
原创 web应用,http请求501错误问题记录
环境:tomcat-9.0.40错误:501排查思路:搜索引擎查询结果无望,然后 lsof -i:8090发现端口已经被启动,能够被访问,停掉应用后 发现端口还有连接,于是删掉占用8090 端口 的进程,重新启动后访问正常可能是前一天晚上进程意外结束 端口没有关闭疑问:端口已经占用为何 tomcat还能够启动,idea都已经关闭但是启用的端口却没有随之关闭...
2021-01-04 14:02:14
1419
原创 Java虚拟机(一)
对Java虚拟机的了解?什么是Java虚拟机?我所理解的jvm就是一个虚拟的计算机,他是运行在操作系统之上,能够为Java编写的程序提供必要的运行时环境,管理虚拟机的内存使用。我们在启动一个Java虚拟机的同时,类加载器子系统会将我们需要的必要的字节码信息加载到虚拟机内存当中,同时也会加载一些jvm默认的配置信息,与此同时Java虚拟机会判断我们启动虚拟机时指定的jvm参数是否合理,根据参数启动相应的垃圾回收机制等。虚拟机在启动的时候可能会是zookeeper启动脚本那样指定一个启动类,调用主方法,也
2020-12-28 10:46:58
221
2
原创 许久没有面试了,臆想一次面试希望能快点找到工作。
没有过面试经验-最近待业中 假想一次面试,试试自己能说出来多少东西?面试官:你好,请做一下自我介绍我:你好,我叫**,今年24岁,2019年毕业到现在差不多有两年的工作经历,在这两年期间在一家公司做过三个项目,项目中主要用到的技术栈有Spring,Springboot,zookeeper,个人主要使用Java作为日常的编程语言,因此对于jvm,基本的数据结构有一定的了解,能够在日常工作中熟练使用。面试官:那你谈谈你对jvm的理解我:我所理解的jvm就是一个虚拟的计算机,他是运行在操作系统之上,能够为
2020-11-25 15:29:36
142
原创 zookeeper节点ACL授权admin权限-问题记录
zookeeper 节点授权:当我们取消节点的admin权限时,使用普通用户无法对节点进行重新授权[zk: localhost:2181(CONNECTED) 2] getAcl /testAuthentication is not valid : /test[zk: localhost:2181(CONNECTED) 3] addauth digest fc:P@ssw0rd132[zk: localhost:2181(CONNECTED) 4] getAcl /test'digest,'su
2020-11-12 22:00:35
2474
原创 zookeeper命令行界面设置值
zookeeper的set命令 空格set /test “hello world”在实际的使用中我们可能会在节点中存储一些更复杂的数据 比如xml结构的数据。这些文档中大量包含 空格符号,因此我们可以使用 来替换;将数据中的空格全文替换为 就可以了;这种用法仅限于了解,请勿滥用,生产环境,安全第一。设计好系统,写出好的代码才是康庄大道。...
2020-09-01 13:13:12
802
原创 在项目上做开发时Apollo客户端获取配置信息报错,我只是个小白网上,也找不到答案,只好自己一点点看下去了
错误:Error creating bean with name ‘entity’: Injection of autowireddependencies failed; nested exception is java.lang.IllegalArgumentException: key can’t be empty现在我们在本地环境试试会不会出现同样的问题,代码如下:相关配置:apollo-client版本 1.5app.id=prometheusapollo.meta=http:
2020-06-06 15:15:58
2032
原创 从hello开始学java
从实践中学习-JVM从Hello World开始使用IDE写我们的第一个程序运行过程类加载机制加载连接验证准备解析初始化类加载器双亲委派从Hello World开始最近在复习java知识,但是效果不是很理想,单纯的去记忆一些东西感觉没有那种特别的感觉,所以想通过写博客记录的方式帮助自己加深印象。今天我们就从一个Demo开始开启我们的java之旅,请各位朋友多多指教。使用IDE写我们的第一个程...
2020-04-19 14:14:19
317
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人