自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 JVM调优常用参数和命令行工具汇总

所有的JVM实现都必须实现这些参数的功能,而且向后兼容。

2023-05-20 10:10:16 376

原创 diamond原理

diamond

2022-06-28 11:03:37 926

原创 guava缓存

guava原理

2022-06-28 01:22:30 4801

原创 后端开发面试题---数据库篇

幻读是什么,数据库如何处理幻读,如何解决幻读?幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。innodb引擎使用行级锁和间隙锁解决了幻读问题,也称为Next-Key Locking............

2022-06-21 16:36:05 537

原创 IO、netty面试

一.java IO模型1.BIO 同步并阻塞编程模型:1.服务器端启动一个serverSocket2.客户端启动Socket对服务器进行通信,默认情况下服务器端需要对每个客户建立一个线程与之通信3.客户端发出请求后,先咨询服务器舒服有线程响应,如果没有则会等待,或者被拒绝4.如果有响应,客户端线程会等待请求结束后,再继续执行2.NIO 同步非阻塞3.AIO ............

2022-06-21 13:26:10 81

原创 后端开发面试题汇总

面对对象3大特性:封装,继承,多态封装1、概念:  将类的某些信息(属性)隐藏在类的内部,不允许外部对象去直接访问,而是通过该类提供的方法去访问该信息(属性)。2、好处:a.只能通过规定的方法访问数据b.隐藏类的实例细节,方便修改和实现3、封装的实现步骤①修改属性的可见性——设为private②创建getter/setter方法,用于属性的读写③在getter/setter方法中加入属性控制语句,对属性值的合法性进行判断public class Person {

2022-06-16 15:35:21 229

原创 leetcode刷题总结

双指针题解

2022-06-15 15:52:35 89

原创 ddd学习

ddd架构思考的思考

2022-06-15 00:54:42 263

原创 java回调函数

回调函数概念:程序A在程序中预留一个接口,程序B可以通过实现该接口,写入自己的逻辑,程序A在执行过程中会调用其接口的实现B的逻辑。通俗例子:小明做作业,其中有道题目不会做,打电话告诉小红,让小红做好后主动发给自己。其中有道不会做的题目可以理解为一个回调函数,小红通过实现该函数可以去完成这道题目,小明只需要获取该回调函数的结果即可获得该题的答案。代码实现public class A { IcallBack icallBack; public void setCallB

2021-11-20 11:16:34 366

原创 java8-Optional.ofNullable

Optional.ofNullable /** * Returns an {@code Optional} describing the specified value, if non-null, * otherwise returns an empty {@code Optional}. * * @param <T> the class of the value * @param value the possibly-null v

2021-07-05 17:59:41 461

原创 git学习

设置邮箱、用户名:git config --system (基本不用,给整个计算机一次性设置)git config --global (推荐,给当前用户一次性设置)git config --local (

2021-07-05 17:55:16 432

原创 git学习2

git怎么合并远程分支一共就五步:1、把代码clone到本地仓库 git clonehttps://github.com/573734817pc/shop.git2、在本地创建dev分支并与远程dev分支对应 git checkout -b dev origin/dev3、切换到master分支 git checkout master4、本地的dev合并到mast...

2021-07-05 17:54:21 62

原创 b树和b+树的区别

b树,多路平衡查找树一个M阶的b树具有如下几个特征:任意非叶节点最多只有M个儿子,且M>2根节点的儿子个数为[2, M]除根节点以外的非叶节点的儿子数为[M/2,M] 向上取整非叶节点的关键是个数= 儿子数-1所有叶子节点位于同一层k个关键字把节点拆成k+1段,分别指向k+1个儿子,同时满足查找树的大小关系b+树有n棵子树的非叶子结点中含有n个关键字(b树是n-1个),这些关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b树是每个关键字都保存数据)。 所有

2021-05-09 21:20:09 323 1

原创 java类加载

实现自定义类加载器1.继承classloader类2.实现findclass方法破坏双亲委派机制复制classloader的loadclass代码,删除部分双亲委派代码,判断所要加载的类是否是我们想要打破双亲委派机制加载的类,如果是直接调用findclass加载,如果不是使用双亲委派机制去加载。...

2021-05-09 11:55:54 52

原创 jvm相关面试

虚拟机遇到一条new指令,首先检查常量池是否已经加载相应的类,如果没有必须先指向相应的类加载。类加载过程:加载:1.通过类的全限定名来获取此类的二进制字节流。2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3.在内存中生成一个代表这个类的java.lang.class对象,作为方法区这个类的各种数据的访问入口。验证:验证是连接阶段的第一步,这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不回危害虚拟机自身的安全。1.文件格

2021-05-08 21:08:08 135 1

原创 Redis面试

Redis面试Redis内存淘汰策略内存淘汰策略发生在redis内存占满的情况下Redis中共有下面八种内存淘汰策略:volatile-lru:设置了过期时间的key使用LRU算法淘汰allkeys-lru:所有key使用LRU算法淘汰volatile-lfu:设置了过期时间的key使用LFU算法淘汰allkeys-lfu:所有key使用LFU算法淘汰volatile-random:设置了过期时间的key使用随机淘汰allkeys-random:所有key使用随机淘汰volatile-t

2021-04-08 18:15:15 61

原创 redis数据类型及其底层实现

redis数据类型string list set sorted set hashredis数据结构组成在redis中数据都是key-valuekey值为字符串,而value值则是由redis底层的redisObject结构来表示的typedef struct redisObject{//类型unsigned type:4;//编......

2021-03-25 19:04:00 533

原创 ThreadLocal源码分析

简介:ThreadLocal,线程变量,是一个以ThreadLocal对象为键,任意对象为值的存储结构,这个结构对每个线程是相互独立的。彼此之间不会相互影响。//使用public class ThreadLocalTest { ThreadLocal<String> local = new ThreadLocal<>(); public static void main(String[] args) throws InterruptedException {

2021-01-21 18:01:57 89

原创 并发编程的分类

执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序。重排序的类型:1.编译器优化的重排序。编译器在不改变程序语义的情况下,可以重新安排语句的执行顺序。2.指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行,如果不存在数据依赖,处理器可以改变语句对应的机器指令执行顺序。3.内存系统的重排序。现代的处理器都使用写缓冲区临时保存向内存写入的数据。写缓冲区仅对它所属的处理器可见。这会使得内存操作存在重排序的问题。如:内存中 a = 0, b = 0处理器一执行:a =

2021-01-21 10:58:38 67

原创 分布式一致性算法

1.CAP理论一个分布式系统不可能同时满足一致性(Consistency),可用性(Availability),和分区容错性(Partition tolerance),最多只能同时满足两个。一致性:数据在多个副本之间是否能够保持一致的特性。可用性:系统提供的服务必须一直处于可用的状态。分区容错性:遇到网络分区故障(比如分布式系统中整个分区由于故障被分割成两个或多个不同分区,彼此无法互相通信),仍然需要能够保证对外提供满足一致性和可用性的服务。一致性模型弱一致性: 最终一致...

2020-12-21 19:35:31 300

原创 并查集java实现

并查集定义并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。借鉴一个看到的故事江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就形成了一个一个的帮派,通过两两之间的朋友关

2020-11-06 13:30:04 288

原创 常用linux命令

查看端口对应进程netstat -anp |grep 8080lsof -I:8080查看xxx服务ps -ef |grep xxx后台运行jarnohup java -jar xxxx >/dev/null 2> &1 &打tar包Tar -zcvf 压缩文件路径 要压缩路径解压 tar -zxvf 文件名查看日志常用...

2020-04-23 15:56:06 111

原创 开发机与本地互传文件方法

小文件采用rz/sz即可大文件:从开发机下载文件:在文件目录下 :python -m SimpleHTTPServer 8088(端口自由选择)访问:hostname:8088 即可下载当前文件上传文件到开发机开发机监听:nc -l 8180 > file.tgzMAC发送:nc -w 1hostname8180 < file.tgz...

2020-03-23 17:13:23 1364

原创 windows安装python3.7环境无法执行pip3命令

首先在pythonmiglhang中 python -m ensurepip 创建出pip3.exe在Scripts路径下命令行 pip3 install XXX库即可

2020-01-11 12:28:25 1481

原创 oom

JVM发生OOM的原因及解决办法整理1. Java堆空间造成原因1、无法在 Java 堆中分配对象。2、吞吐量增加。3、应用程序无意中保存了对象引用,对象无法被 GC 回收。4、应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时 finalizer 线程的处理能力无法跟上结束队列...

2019-12-27 18:43:58 238

原创 redis总结

1、redis是目前公认的速度最快的基于内存的键值对数据库,但redis的缺点也非常明显,仅提供最基本的hash set, list, sorted set等基于数据类型,不分表,没有schema,没有索引,没有外键,缺少int/date等基本数据类型,多条件查询需要通过集合内联(sinter,zinterstore)和连接间接实现,操作不便,开发效率低,可维护性不佳; 因此一般不将其视为完整的数......

2019-12-27 18:42:07 136

原创 mapreduce

mapreduce程序5个阶段inputmapshufflereduceoutputshuffle过程实现的功能分区: 决定当前的key交给那个reduce进行处理 相同的key,必须由同一个reduce进行处理 默认情况下:根据key的hash值 对reduce个数取余分组: 将相同k...

2019-11-03 17:19:59 84

原创 hive学习

hive创建表hive (default)> create table if not exists ods.stu1( > id int, > name string, > sex string, > age int, &g...

2019-11-01 15:37:44 543

原创 637. 二叉树的层平均值

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入: 3 / \ 9 20 / \ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意:节点值的范围在32位有符号整数范围内。/** * Definitio...

2019-10-29 00:44:04 104

原创 java类加载

类加载起源Java文件从编码完成到执行,主要是两个过程 编译和运行编译:我们写好的Java文件通过javac命令编译成字节码文件,也即.class文件运行:把字节码文件交给虚拟机(jvm)执行类加载概念类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并解析生成对应class对象的过程。举个通俗点的例子来说,JVM在执行某段代码时,遇到了class A...

2019-10-15 20:06:23 116

原创 107. 二叉树的层次遍历 II

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { pub...

2019-09-19 16:29:29 88

原创 429. N叉树的层序遍历

给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个3叉树:返回其层序遍历:[ [1], [3,2,4], [5,6]]说明:树的深度不会超过1000。树的节点总数不会超过5000。/*// Definition for a Node.class Node { publ...

2019-09-17 19:37:16 66

原创 java Serializable

什么是序列化(serializable)Serializable接口是启用其序列化功能的接口。实现java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能序列化或者逆序列化。序列化:就是把对象转化成字节。反序列化:把字节数据转换成对象。应用场景1、将对象通过网络传输例如:在微服务系统中或给第三方提供接口调用时,使用rpc进行调用,一般会把对象转化成...

2019-09-17 17:03:33 362

原创 669. 修剪二叉搜索树

给定一个二叉搜索树,同时给定最小边界L和最大边界R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例 1:输入: 1 / \ 0 2 L = 1 R = 2输出: 1 \ 2示例 2:输入: ...

2019-09-16 14:18:28 75

原创 108. 将有序数组转换为二叉搜索树

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10...

2019-09-16 11:15:14 69

原创 mysql 子查询里面不能有limit

这样的语句是不能执行的select username,header_url from user where id in(select id from discuss_post limit 0,10 );但是,只要可以在进行包装一层则可以运行如:select username,header_url from user where id in(select t.id from(selec...

2019-09-14 00:04:57 341

原创 ElasticSearch入门学习

简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。安装ElasticSearc...

2019-09-09 11:06:44 283

原创 数据库锁和事务隔离级别

数据库事务锁创建表account create table account(id int not null auto_increment,name varchar(255) default null,balance int default null,primary key(id))engine=InnoDB DEFAULT CHARSET=utf8;insert into...

2019-09-05 11:31:38 192 1

原创 idea导入moudle

右键项目名选择Open Module Settings点击+选择 Import Module

2019-09-02 19:53:55 230

原创 java线程池详解

技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因。比如大家所熟悉的...

2019-08-01 17:23:38 90

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除