自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PriorityQueue使用及源码探究

使用PriorityQueue,能够对大顶堆,小顶堆进行模拟,是java中很好用的数据结构,而现在我仅仅是会用的水平,打算看一下源码,深入了解一下底层实现(顺便复习一下堆排序doge)PriorityQueue使用介绍,小顶堆或者是大顶堆Java中PriorityQueue实现了Queue接口,不允许放入null元素;其通过堆实现,具体说是通过完全二叉树(complete binary tree)实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值),也就意味着可以通过数组来作为Prior

2021-04-23 15:21:19 207

原创 消息中间件MQ rocketMQ学习笔记

中文文档在此https://github.com/apache/rocketmq/tree/master/docs/cn在什么场景下使用了MQ,为什么要使用MQ我只知道是分布式事务的解决……异步:之前要同步执行的代码可以变成异步;要同步等待的代码会变成异步,可以去做其他的事情解耦:同步变成异步之后,自然就解耦了,producer和consumer分开,producer只负责向broker生产消息,consumer订阅消息,并且处理削峰填谷:这producer如果生产大量的请求直接打向系统,系统也扛

2021-04-14 22:53:06 666 1

原创 面试里出现的一些算法题、情景题

bitmap查找重复元素ip地址转整数

2021-03-31 14:18:59 299

原创 腾讯面试总结

ieg一面问题:(这次是我第一次面试,果然是重在参与了,不过面试官小哥哥基本没问我java相关问题,上来就问会不会c++hhh有点难受)1个人介绍2项目相关3.密码加密机制(盐值+md5),https原理(传证书,传对称密钥),不使用https怎么给后端传加密数据(emmm,这个没想过)4.redis内存淘汰策略(没看,我的)5.微服务调用原理(我回答的feign原理)6.手撕算法……当时我直接蒙了,我思路对了但是大脑直接宕机了……后来面试结束我自己写了一下,写出来了……问的问题是这个htt

2021-03-18 21:25:50 113

原创 springcloud和dubbo

RPC架构1.RPC架构dubbo和springcloud的区别springcloud相比于dubbo来说,提供的功能更加全面一些dubbo要占用更小的流量springcloud的河马多东西都是依赖写springcloud的人的文档提供的约定的

2021-03-18 15:12:31 39

原创 spring创建bean的详细过程

参考:https://www.cnblogs.com/kevin-yuan/p/12157017.htmlbean创建的三步1.通过反射创建 bean 的实例2.填充 bean 里面的属性值,包括 @AutoWired、@Resource、@Value 标记的属性3.执行bean初始化在AbstractAutowireCapableBeanFactory类里面有一个createbean方法,createBean里面真正创建bean的是doCreateBeancreateBeanInstance

2021-03-17 16:23:51 468

原创 tomcat调优(转)

转自:https://www.cnblogs.com/myseries/p/11480203.html1.动静分离静态资源如果让tomcat处理的话tomcat的性能会被损耗很多,所以我们一般都是采用:nginx+tomcat实现动静分离,让 Tomcat 只负责 jsp 文件的解析工作,nginx实现静态资源的访问。(springboot好像没法这样操作)2.线程池调优打开serve.xml配置Executor参数解释name 给执行器(线程池)起一个名字namePrefix 指定线程

2021-03-14 17:04:25 79

原创 mysql存储引擎innodb和myisam

innodb和myisam区别1.myisam是默认表类型不是事务安全的;innod支持事务。2.InnoDB 支持外键,而 MyISAM 不支持。3.myisam支持表级锁(不支持高并发,以读为主);innodb支持行锁(共享锁,排它锁,意向锁),粒度更小,但是在执行不能确定扫描范围的sql语句时,innodb同样会锁全表。4.执行大量select,myisam是最好的选择;执行大量的update和insert最好用innodb。(如果读多,用myisam,如果读写都有很多,用innodb)5.

2021-03-13 16:16:21 133

原创 美团2020校招系统开发方向笔试题整理

总体看下来,这套题编程难度不是特别高,有两道题一眼就能看出思路但是笔试简答的问题比较广如果线上某台虚机CPU Load过高,该如何快速排查原因?只介绍思路和涉及的Linux命令即可 。出现原因:Full gc次数的增大、代码中存在Bug(例如死循环、正则的不恰当使用等)都有可能造成cpu load 增高。top查看占用cpu过高的程序jstack查看java占用情况,分析线程状态请简要描述MySQL数据库联合索引的命中规则,可举例说明。这是啥呀……**联合索引:**将多个索引关联在一起,作为

2021-03-12 16:04:50 1274 2

原创 美团2020后台秋招笔试整理

RESTful调用和 RPC调用有什么区别?如果让你设计一个RPC服务治理框架你会设计那些模块?是否了解过Service Mesh,如果了解Service Mesh是用来解决什么问题的?RESTful是一种软件架构风格,用于约束客户端和服务器交互,满足这些约束条件和原则的应用程序或设计就是 RESTful。比如HTTP协议使用同一个URL地址,通过GET,POST,PUT,DELETE等方式实现查询、提交、删除数据。RPC是远程过程调用,是用于解决分布式系统服务间调用的一种方式。RPC采用客户端与服务端模

2021-03-12 10:34:41 483 2

转载 jvm启动参数

111

2021-03-12 09:25:21 69

原创 java复习笔记2

1.Hashmap的线程安全问题比较熟知的就是Hashtable,但是HashTable是直接采用synchronize修饰,效率低在并发包中也提供了一个类:ConcurrentHashMap ,这个类通过分段锁实现线程安全1.7中​ ConcurrentHashMap 底层采⽤ 分段的数组+链表 实现;采用 分段锁(Sagment) 对整个桶数组进⾏了分割分段(Segment),每⼀把锁只锁容器其中⼀部分数据,多线程访问容器⾥不同数据段的数据,就不会存在锁竞争,提⾼并发访问率。1.8中又修改了,底

2021-03-10 16:45:52 66

原创 redis复习笔记

redis特性速度快,完全基于内存,使用C语言实现,单线程模型与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。分布式缓存和本地缓存在程序内部创建的map,set之类的就是本地缓存分布式缓存,就是一些nosql数据库,常用的如memcache redis等本地缓存,轻便快速,但是在程序结束的时候即结束,大缓存容易产生oom,且不同线程之间,缓存内容不同

2021-03-10 11:03:11 84

原创 ssm框架复习笔记

1.ioc控制反转IoC(Inverse of Control:控制反转)是⼀种设计思想,就是 将原本在程序中⼿动创建对象的控制权,交由Spring框架来管理。 IoC 在其他语⾔中也有应⽤,并⾮ Spring 特有。2.依赖注入bean什么时候被创建?Spring 容器启动初始化的时候(所有单例非懒加载的bean)懒加载(lazy-init)的bean 第一次进行getBean的时候在创建bean的过程中要去创建一个对象要去将对象中要注入的属性注入进这个bean中在这里注入属性这个

2021-03-10 09:03:46 160

原创 mysql复习笔记

1.事务:就是commit,一次commit就是一次事务四大特性:原子性,一致性,隔离性,持久性原⼦性: 事务是最⼩的执⾏单位,不允许分割。事务的原⼦性确保动作要么全部完成,要么全不执行一致性: 执⾏事务前后,数据保持⼀致,多个事务对同⼀个数据读取的结果是相同的;隔离性: 并发访问数据库时,⼀个⽤户的事务不被其他事务所⼲扰,各并发事务之间数据库是独⽴的;​ 持久性: ⼀个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发⽣故障也不应该对其有任何影响。​ MySQL的存储引擎InnoDB

2021-03-09 11:10:12 94

原创 git笔记

使用git创建本地仓库首先设置自己的用户名和密码,这样在提交的时候就能看到是谁提交的git config --global user.name “XXX”git congif --global user.email "XXXXXX"在对应的文件夹下面进行初始化:git init然后是将需要添加到本地git仓库的文件添加进来:git add 文件名,全部需要添加就是git add .最后是提交,提交了,就是实际上在本地做了一次版本更新git commit -m “commits” -m 确实可

2021-03-07 16:18:15 113

原创 Spring一些笔记

src:源码包开始的路径,称为类路径的开始。所有源码包里的东西都会被合并放在类路径下。例如:新建一个源码包放配置文件,叫/conf,把配置文件放到conf文件夹下,但是所有的配置文件最后都会和src中的东西合并,放在bin文件夹下普通java项目类路径:/bin/javaweb类路径:/WEB_INF/classes2)ApplicationContext(ioc容器)共有两个实现类ClassPathXmlApplicationContextFileSystemXmlApplication.

2021-03-07 10:47:49 30

原创 ssm项目day4笔记

1.mapper.xml里面resultMap,resultType,parameterType,parameterMap介绍待添加2.mapper接口里面方法参数上的注解@Param待添加3.ajax同步异步ajax函数里面的代码和ajax函数后面的代码,不在同一个线程中执行,是异步的。如果要修改为同步,要在ajax函数体里加“async”:false这个东西...

2021-03-07 10:46:47 52

原创 ssm项目day9笔记

1.在mapper.xml里面的mysql方法中将生成的主键返回到实体类参数中useGeneratedKeys=“true” keyProperty=“id”2.支付宝开放平台 沙箱环境的试用0.登录并完善个人信息1.利用开发助手生成公私钥3.内网穿透在非生产环境中(开发,测试服务器),一般是在内网。如果调用外网接口,外网之后要重新给我们发请求的情况,怎么让外网能够找到内网中的东西需要借助内网穿透工具()...

2021-03-07 10:43:11 99

原创 ssm项目day6

1.tomcat具体报错在localhost log中,不要傻傻的看server log找具体的报错信息!!!!这个是serverlog这个是localhost log2.互联网项目挑战高可扩,高性能,高并发3.方法的远程调用模块之间方法通过网络请求调用。意义:1.实现分布式架构 2.让我们能够调用第三方接口4.SOA:面向服务的架构在整个系统中,把相同的功能抽取出来作为一个服务,供系统中其他模块调用。服务消费者:调用服务的服务提供者:被调用服务的5.微服务独立的 可部署的小型服

2021-03-07 10:42:36 92

原创 ssm项目day5

1.spring权限控制框架:SpringSecurity2.spring通过注解@Configuration,实现注解配置类(更像springboot)

2021-03-07 10:42:08 110

原创 leetcode回溯刷题整理

回溯就是已经没什么别的办法了,回溯=暴力搜索,它相当于构建了一颗超大的树,然后每个叶子节点都是一种可能性,如果可能性符合条件,就要回溯函数:1.剪枝+如果到达最终状态,处理结果2.元素进入与回退比如说下面那个题,组合,给了一个k,k不确定,那就没法写for循环,只能回溯回溯算法效率:就是拼谁剪枝剪得好,谁边界条件限制的好第77题. 组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。思路:回溯达到最终状态:那就是放元素的队列长度为k剪枝:要达到不重复,需要在函数

2021-03-05 19:00:23 120

原创 leetcode二叉树整理2

404.左叶子之和思路:找左叶子,怎么判断一个节点是左叶子?当前节点的左孩子如果没有左孩子和右孩子,那么这个节点左孩子就是左叶子因此,只需要遍历二叉树即可,在遍历到中节点的时候,要进行的操作是,判断中节点的左孩子是否为左叶子我在这题中用的是层次遍历class Solution { public int sumOfLeftLeaves(TreeNode root) { Deque<TreeNode> deque = new LinkedList<>();

2021-03-05 14:54:56 147 1

原创 leetcode二叉树整理1

那说到二叉树,肯定先说到的就是前中后序遍历下面这个是一个简单的二叉树节点定义/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int

2021-03-04 17:00:27 89

原创 leetcode栈和队列刷题整理

题解均为java在写栈和队列的题之前,先介绍一下Deque这个接口 ,该接口需要双向链表数据接口来实现,在它的源码注释中,写明了该双向链表的常用的一些方法。这里面的所有添加,移除,和获取的方法大家可以看到都是双份的,为什么?这就涉及到操作失败的问题,一旦操作失败,第一列和第三列的方法会抛出异常,而第二列和第四列的方法会返回特殊值,这就是不同。offerFirst(e) 在链表头插入元素eofferLast(e) 在链表尾插入元素epollFirst 移除链表头首元素e,并返回pollLa

2021-03-02 19:12:00 201

原创 java复习笔记1

1.抽象类和接口的异同相同:都不能被实例化;都可以定义抽象方法,子类必须实现这些抽象方法不同:1.抽象类只能被单继承,接口可以多继承2.抽象类里面可以声明成员变量,接口只能是public static final的静态常量3.抽象类中可以包含普通方法,接口只能是public abstract修饰抽象方法4.抽象类可以由构造方法,接口中不能有构造方法抽象类:既想约束子类具有共同的行为(但不再乎其如何实现),又想拥有缺省的方法,又能拥有实例变量接口:需要该类实现这些方法,但是不在乎其如何实现;实

2021-03-02 18:39:47 86

原创 操作系统复习

1.进程与线程的区别进程:是资源分配的最小单位,是程序的执行过程,一个进程可以有多个线程,多个线程共享进程的堆和方法区资源,但每个线程又有属于自己的本地方法栈、虚拟机栈、程序计数器线程:是任务调度和执行的最小单位,线程间可能存在相互影响,执行开销较小,不利于资源的管理和保护,线程间是共享进程中的资源的2.进程间通信(IPC)见https://www.jianshu.com/p/c1015f5ffa741)匿名管道pipe半双工,只能用于父子进程或者兄弟进程之间,对于管道两边的进程来说,是一种特殊

2021-03-01 17:00:37 58

原创 计网复习

1.OSI七层与TCP/IP五层模型七层:多了表示层与会话层五层:物理层,数据链路层,网络层,传输层,应用层2.TCP可靠传输的保证方式,拥塞控制的原理3.从在浏览器中输入URL地址,到展示页面,一共经历了什么DNS解析、TCP连接、发送HTTP请求、服务器处理请求并返回HTTP报文、浏览器渲染、结束4.HTTP1.0、1.1、2.01.0在请求结束之后会立刻断开连接1.1在请求结束知乎也不会立刻断开,而是默认使用长连接,避免了连接建立和释放的开销2.0的传输格式为二进制格式,引入了帧的概

2021-03-01 16:13:03 77

原创 javaIO流笔记

流的分类字符流更适合处理文本数据(16bit就是一个char),非文本数据字节流

2021-03-01 15:26:48 168 2

原创 java多线程笔记

程序进程线程的基本概念程序:为了完成任务,用某种语言编写的一组指令的集合,这个基本不会问进程:程序的一次执行过程,或者正在运行的一个程序,有它自身的产生、存在和消亡的过程。进程可进一步细化为线程,是一个程序内部的一条执行路径,一个进程可以由多个线程。一个进程内的多个线程共享相同的内存单元和地址空间,因此他们可以访问相同的变量和对象(所以多线程会带来数据的安全隐患)下面一个java虚拟机的内部构造,在内存区域,方法区和堆是所有线程共有的,程序计数器,虚拟机栈和本地方法栈是每个线程独有的单核cpu

2021-02-27 15:54:40 85

原创 leetcode字符串刷题整理

使用的语言是java题目344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”] 输出:[“h”,“a”

2021-02-24 19:39:04 114

原创 java注解笔记

注解(Annotation)注解概述SE中常见的**@Override,@Deprecated**都是注解如何去自定义Annotation自定义的注解,必须配合上反射才有意义(所以说注解也叫标记确实没错)(使用反射获取注解,获取到注解之后,再根据注解中的内容,去做相应操作)元注解@Retention修饰Annotation的生命周期所以自定义的注解需要@Retention(Policy.RUNTIME) 保留到虚拟机运行中,使得反射能够获取到@Target这个也是用来修饰Annot

2021-02-24 18:27:18 58

原创 java枚举类笔记

1.枚举类Enum自定义枚举类(不使用enum关键字)import org.junit.Test;public class EnumTest { @Test public void test(){ Season season = Season.AUTUMN; System.out.println(season); }}//自定义枚举类class Season{ public final String seasonName;

2021-02-24 15:35:00 68

原创 java8新特性笔记

1.Lambda表达式其实这个东西我一律是归为奇淫巧技里面的,不是必须用的时候,我是不会拿出来用的,我认为这个对代码的可读性还是有一些影响的。先来两个例子import org.junit.Test;import java.util.Comparator;public class LambdaTest { @Test public void test1(){ Runnable r1 = new Runnable() { public

2021-02-24 14:47:01 101

原创 leetcode哈希表刷题整理

使用的语言是java第242题. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。思路:这个题可以定义一个26长度的数组,首先用来统计s的字母出现个数(出现一个字母,对应位++),然后跟t中出现字母作比较(出现一个字母,对应位–),最后看数组是否位上全为0即可,我是把这两个字符串排序后比较……,其实是用的库函数,偷懒了class Solution { public boolean isAnagram(String s, String t) {

2021-02-23 18:44:30 135

原创 java动态代理笔记

我其实觉得反射的内容不太重要,也不是不太重要,但是动态代理才是重中之重,之后学spring原理的时候要用到,AOP面向切面编程的原理,就是动态代理,所以回来补课了代理模式:使用代理将对象包装起来,用该代理对象取代原始对象首先是一个静态代理的例子import org.junit.Test;interface ClothFactory{ void productCloth();}//代理类class ProxyClothFactory implements ClothFactory{

2021-02-23 15:43:05 63 1

原创 leetcode链表刷题整理

题解均为javaleetcode第203题:移除链表元素删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5这个题主要的一个问题是如果头结点的值是给定值的话,怎么处理?因此,要引入一个虚拟的头结点,去保存这个链表的信息,然后再return的时候,把这个虚拟头结点去掉,java有自动垃圾回收,不用像c++一样,我们要去释放掉删除节点的内存,嘻嘻

2021-02-22 20:07:50 166

原创 leetcode数组刷题整理

题解均为javaleetcode35:搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0很简单的思路,就是二分法,具体我就不说了,要注意的点只有一个 int m

2021-02-22 19:14:53 106

原创 java反射笔记

在类加载完成后,通过反射来拿取这个类的完整的结构信息通过反射,可以完整地获取一个类,包括该类的内部的各种信息java.lang.Class :这个对象就是代表了一个加载后的类,使用这个对象,获取一个你需要的类的信息Class clazz = Xxx.class;clazz.getConstructor getMethod getParamter等等对java.lang.Class的理解:每一个运行时类,就是一个Class实例不使用反射,无法使用类内部的一些私有方法通过反射可以调用(setAc

2021-02-22 17:14:29 83

原创 jvm简介笔记

高级语言并不能直接在计算机上运行,而是通过解释之后,才能被机器所识别和运行。java的跨平台性:在一个地方写完之后,到哪都能用,所有的JVM都遵循一个规范很多类java的语言,都可以通过编译成字节码文件,在JVM平台上运行,JVM(跨语言的平台)jvm字节码:常见的就是java的.class文件,实际上,jvm并不会对不同语言的字节码文件有不同的区分,因此,叫jvm字节码可能更加合适一点。在java平台上,多语言混合编程正在成为主流,通过特定领域的语言去解决特定问题,是当前应对日趋复杂的项目需求

2021-02-22 10:11:03 56 2

空空如也

空空如也

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

TA关注的人

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