自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(453)
  • 资源 (4)
  • 收藏
  • 关注

原创 JAVA设计模式总结之23种设计模式

一、设计模式概述(1)什么是设计模式设计模式(Design pattern) 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。(2)设计模式的三个分类创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。结构型模式:把类或对象结合在一起形成一个更大的结构。行为型模式:类和对象如何交互,及划分责任和算法。(3)各分类中模式的关键点单例模式:某个类只能有一个实例,提供一个全局的访问点。简单工厂:一个工厂类根据传入的参量决定创建出那一种产品类的实例。工厂方法:

2020-11-23 22:50:58 249

原创 极客时间_算法训练营(代码实现汇总)

对极客大学算法训练营的题目做一个分类,方便后续查看。第01课丨数据结构与算法总览数据结构脑图文档:链接:数据结构脑图 和 算法脑图.note算法脑图自己画的脑图:(感觉有些凌乱,之后会逐步进行补充,完善,整理)链接:数据结构和算法脑图.note其中的一些分支,之前有画一些小型分类的脑图:数据结构基础脑图:数据结构基础脑图.note树 的 脑图:树的脑图.note排序算法脑图:排序算法脑图.note第02课丨训练准备和复杂度分析•如何理解算法时间复杂度的表示法第03课丨数

2020-10-23 10:58:35 3930 10

原创 JavaWeb基础知识综合总结

JavaWeb基础知识综合总结基础加强1. Junit单元测试2. 反射:框架设计的灵魂3. 注解MySQLJDBCHTML和CSSJavaScriptBootStrapXMLTomcatServlet和HTTP请求协议Request和ResponseCookie和SessionJSP,EL和JSTLFilter和ListenerJqueryAjax和JSONRedisMaven基础基础加强1. Junit单元测试测试分类:黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。白盒测

2020-08-20 10:50:34 549

原创 算法——十大排序算法(java版本实现)

十大排序算法冒泡排序传统的冒泡排序优化一:优化二:鸡尾酒排序选择排序插入排序希尔排序快速排序归并排序堆排序计数排序传统的计数排序计数排序优化桶排序基数排序冒泡排序传统的冒泡排序public static void sort(int array[]) { for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - i - 1; j++) { i

2020-07-13 19:42:46 198

原创 Java工程师学习路线(基础知识)(待完善)

Java基础一、Java基本1. Java基础概念和常识java语言特点JVM JDK和JRE(1)JVM(2)JDK和JREJava和C++的区别什么是 Java 程序的主类 应用程序和小程序的主类有何不同?2. Java语法3. 基础数据类型4. 方法(函数)二、Java面向对象1. 类和对象2. 面向对象三大特征3. 修饰符4. 接口和抽象类5. 其他重要知识点三、Java核心技术集合异常反射多线程文件与I/O流Java WebJspServlet一、Java基本1. Java基础概念和常识j

2020-07-02 21:46:51 486 2

原创 java基础-容器专题-Collection-Map

容器目录 容器1.Collection:存储着对象的集合1. Set接口:**集,无序,不可重复**2. List接口:**序列,排列有序,可重复**3. Queue接口2.Map:存储着键-值对的映射表,能够实现key快速查找value3. 泛型4. Collection.sort() 对序列中的元素进行排序5. 代码测试实现学生类课程类Set接口的TestMap接口的TestList接口的Test泛型的TestCollections接口的Test测试1.Collection:存储着对象的集合1.

2020-06-09 20:39:30 274

转载 JIT 即时编译 原理解析及实践

singleDoc# 《JIT 即时编译》

2024-01-07 23:28:38 59

原创 【Redis】Redis数据结构的应用——GEO(“搜索附近”的项目怎么设计)

面向 LBS 应用的 GEO 数据类型在日常生活中,我们越来越依赖搜索** 附近的餐馆、在打车软件上叫车 **,这些都离不开基于位置信息服务(Location-Based Service,LBS)的应用。LBS 应用访问的数据是和人或物关联的一组经纬度信息,而且要能查询相邻的经纬度范围,GEO 就非常适合应用在 LBS 服务的场景中,我们来看一下它的底层结构。GEO 的底层结构一般来说,在设计一个数据类型的底层结构时,我们首先需要知道,要处理的数据有什么访问特点。所以,我们需要先搞清楚位置信息到底是怎么

2022-04-18 15:03:33 567

原创 【数据库】MySQL三大日志:binlog、redo log和undo log

MySQL三大日志——binlog、redo log和undo log日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志。binlogbinlog用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。binlog是mysql的逻辑日志,并

2022-04-18 15:02:37 402

原创 数组按频次排序

链接

2021-09-13 18:50:42 458

原创 字符串的组合问题——返回字符串的所有不重复子序列

题目你有一套字母卡片tiles,卡片上印有一个大写字母,这套卡片里可能有重复的字母。返回这套卡片可能排列的非空字母序列的数目。注意每张卡片只能用一次。提示:1 <= tiles.length <= 7tiles 由大写英文字母组成输入描述:共一行,一个字符串输出描述:共一行,一个整形数字,表示结果。示例:输入:AAB输出:8解释:存在8个满足题意的组合:A 、AA、AB、AAB、ABA、B、BA、BAA题解import java.util.*;public cl

2021-09-11 22:01:47 1187

原创 链表的头插法和尾插法——头插尾插交替插入

private static ListNode dummy = new ListNode(0); //头插法 public static void headInsert(ListNode node){ if (dummy.next == null){ dummy.next = node; return; } ListNode temp = dummy.next; dummy.nex..

2021-09-06 23:47:44 736

原创 找出数组中重复元素最多的数

题目描述:如何找出数组中重复元素最多的数思路:使用Map映射表记录每一个元素出现的次数,然后判断次数大小,进而找出重复次数最多的元素。key表示数组的元素,value表示这个元素在数组中出现的次数。最后对map进行遍历。/** * 使用map(不允许重复的),key是a中元素的值,value是元素出现的次数 * @param a * @return */ private int findMostFrequentInArray(int[] a) { Map<Integer

2021-08-26 09:46:02 2233

原创 判断一个0~n个数中,出现不重复位的数的个数

输入一个n,然后是数组 1~n,n个数中数字不相同的数的个数例如,输入 11,则就判断 1 2 3 4 5 6 7 8 9 10 11,输出 10因为【 1 2 3 4 5 6 7 8 9 10 这些数字每一位都不相同,但是11 有两个1 ,则不count】——输出10public class test_3 { public static int test(String n){ int count = 0; int num = Integer.

2021-08-25 23:35:05 371

原创 通过数组创建单链表——链表删除重复的元素

链表删除重复的元素参考链接:https://blog.csdn.net/feinifi/article/details/94460480控制台输入一组数组,将数组转换成链表,构建链表,将链表中重复的元素删除(1)将当前节点的上一个节点的next指向当前节点的nextpublic LinkNode removeElements(LinkNode head,int val){ //如果头结点是要删除的节点,那么直接跳出循环 //如果头结点是要删除的节点,直接head =

2021-08-24 21:07:56 507

原创 【2021】荣耀22届校招——一面面经

荣耀:(20分钟)自我介绍mysql性能怎么提升一个项目占用资源,占用的是什么资源mysql的索引redis的优点redis的缺点如何实现同步什么是死锁密码加密用的什么方式,对称加密和非对称加密有什么区别内存,硬盘,CPU是什么会不会linux(不会)操作系统除了linux还会什么(windows)项目几个人,代码量多少(一些杂七乱八的问题)...

2021-08-19 21:08:32 682

原创 【2021年】理想汽车校招——二面

理想汽车二面面经【45min】你项目中成长最大的一个环节是什么你的项目是一个BS型,协议走的是HTTP协议吗?你了解什么协议【TCP、UDP、HTTP、DNS】DNS讲一下介绍一下TCP的三次握手,为什么是三次不是两次IO模型,有常见的NIO、BIO,你了解吗一天主机上是否能保证有65535个TCP连接,你觉得能开的最多的连接数是65535吗?【我回答,应该是。面试官回答,这个很有意思,你去了解一下】了解Netty吗?【不会】生产者消费者模型,将当前请求来的时候放到队列里面,然后消费者通

2021-08-19 21:03:59 5695 3

原创 笔试IO输入模板——较难带中括号的输入

应届生笔试模板数组到中括号的输入按括号[[5,2],[4,3],[2,1],[3,2]]进行输入二维数组排序数组到一个中括号的输入 /** * 放置非法的输入符号问题 * 输入的是 [1,2,3,4,5],[5,6,7,8,9] */ private static void IO1() { Scanner sc = new Scanner(System.in); String str = sc.nextLine

2021-08-12 16:49:20 187

原创 输入一个数组构建一颗二叉树,并且找出二叉树两个节点的最近公共祖先

package org.example;/** * Copyright (C), 2019-2021 * author candy_chen * date 2021/8/8 19:05 * * @Classname test * Description: 测试 */import org.junit.Test;import java.util.HashMap;import java.util.HashSet;import java.util.Map;import java.u

2021-08-10 23:33:02 290

原创 手撕LRU——字节常考

package Test03;import java.util.HashMap;/** * @description: LRU缓存结构 * @author: Dream * @date: 2021-07-30 15:03 **/public class LRUCache { private static HashMap<Integer,Node> cache=new HashMap<>(); private int size; private

2021-08-07 18:06:59 135

原创 LeetCode——链表重复元素问题、重排链表

重排链表对一个链表,先找到后半部门的链表将其反转,然后将后半部分插入到前前半部分中,隔一个插入一个。输入: head = [1,2,3,4]输出: [1,4,2,3]输入: head = [1,2,3,4,5]输出: [1,5,2,4,3](1)用双指针找到链表的中点(2)将后半部门利用链表反转,进行反转(3)然后将两个链表交替进行插入两个链表进行交替插入public void merger(ListNode l1,ListNode l2){ ListNode l1_temp;

2021-08-06 23:14:48 564 1

原创 一个带空节点的数组构建二叉树

有一个带空节点的数组,用该数组构建一个二叉树import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;/** * */public class MyBinaryTree { /** * 二叉树节点 */ private static class TreeNode{ int data;

2021-08-04 22:48:00 417

原创 LeetCode - 合并两个有序数组,并去除重复元素

/** * 合并两个有序数组并去重 * 思路是双指针 * 百度面试题 */public int[] merge(int[] nums1, int[] nums2) { List<Integer> list = new ArrayList<>(); int p1 = 0, p2 = 0; int n1 = nums1.length; int n2 = nums2.length; while (p1 < n1 &&

2021-08-02 11:42:58 889

原创 链表的归并排序、链表的快速排序、链表的插入排序

链表的归并排序public class 链表的归并排序 { class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } } public ListNode mergerSort(ListNode head){ if (head == null ||

2021-07-30 13:54:25 81

原创 【归并法排序 】采用二维数组直接拆分一维数组

将一个二维数组直接拆分成一维数组:多路归并算法将二维数组视为k个一维数组,每次取k个数组里面第一个最小的,然后从其中k(有可能小于k)个数选择最小的,并将指向最小元素的那个数据段指针后移直到k个数组都遍历完毕。暴力解法public class Main{ public static void main(String[] args) { int[][] m = { { 1, 23 }, { 2, 3, 4, 5 } }; int[] n; int

2021-07-30 00:33:11 759

原创 【22届秋招提前批】蔚来汽车,测试开发岗位一二三面面经 2021.7.24

蔚来汽车是三面一起面试的,24号下午从两点开始面试,面到了下午五点,面试官也辛苦了,周六还加班,我也一直没敢离开,没喝水一面40分钟,二面一个小时(二面写代码花了30分钟),三面半个小时蔚来一面蔚来二面蔚来三面这是回答【待完善】...

2021-07-25 14:36:39 5921 5

原创 LeetCode - 按照频率将数组升序排序(Java)——比较器的用法

题目给你一个整数数组 nums ,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。示例 1:输入:nums = [1,1,2,2,2,3]输出:[3,1,1,2,2,2]解释:‘3’ 频率为 1,‘1’ 频率为 2,‘2’ 频率为 3 。示例 2:输入:nums = [2,3,1,3,2]输出:[1,3,3,2,2]解释:‘2’ 和 ‘3’ 频率都为 2 ,所以它们之间按照数值本身降序排序。示例 3:输入:nums = [-1,

2021-07-18 23:06:07 463

原创 【大疆“星推官项目”】一面面经——2021.7.13

大疆“星推官项目”一面面经自我介绍研究生的课题为什么不继续做,不拿课题找工作项目的话是几个人做的,Spring MVC是什么意思?能不能没有Model?MVC指的是Model、View、Controller即模型、视图、控制器。View是界面,Controller是业务逻辑。Model是数据库访问有一个View会提交数据给Model进行处理以实现具体的行为,它会先把数据提交给Controller,然后Controller再将数据转发给Model。其中,各Model之间是可以相互调用的, Cont

2021-07-14 16:25:11 311 1

原创 【计算机网络】TCP的流量控制

一、为什么需要流量控制?双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来,这时候接收方只能把处理不过来的数据存在缓存区里(失序的数据包也会被存放在缓存区里)。如果缓存区满了发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,大量的丢包会极大着浪费网络资源,因此,我们需要控制发送方的发送速率,让接收方与发送方处于一种动态平衡才好。对发送方发送速率的控制,我们称之为流量控制。二、如何控制?接收方每次收到数据包,可以在发送确定报文的时候,同

2021-07-14 00:46:13 432

原创 【每日牛客面经】7.8_微店

1. 自我介绍2. 了解ConcurrentHashMap吗?concurrentHashMap的底层数据结构:在JDK1.7时,concurrentHashMap底层是用数组+链表实现的,在JDK1.8时,底层数据结构是用数组+链表+红黑树实现的在实现线程安全方面:concurrentHashMap在JDK1.7时,concurrentHashMap采用的是分段锁的设计方式,对整个桶数组进行分割,设置一个segment,每一把锁只锁容器的一部门数据,多线程访问容器里不同数据端的数据,就不会存在锁

2021-07-08 22:20:49 114

原创 2022秋招-牛客-虾皮-面经及答案

2022秋招-牛客-虾皮-面经及答案JVM字节码文件对象的结构(对象头有啥,对象体有啥…)对象在堆内存的出出布局可分为对象头、实例数据和对齐填充对象头主要包含两部分数据:MarkWord、类型指针。MarkWord 用于存储哈希码(HashCode)、GC分代年龄、锁状态标志位、线程持有的锁、偏向线程ID等信息。类型指针即对象指向他的类元数据指针,如果对象是一个 Java 数组,会有一块用于记录数组长度的数据,实例数据存储代码中所定义的各种类型的字段信息。对齐填充起占位作用。HotSpot 虚拟机要

2021-07-06 20:43:53 430 1

原创 【男朋友日常面试】——一些基础 7.4

面试堆和栈的区别堆和栈的区别主要有五大点,分别是:1、申请方式的不同。栈由系统自动分配,而堆是人为申请开辟;2、申请大小的不同。栈获得的空间较小,而堆获得的空间较大;3、申请效率的不同。栈由系统自动分配,速度较快,而堆一般速度比较慢;4、存储内容的不同。栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数的各个参数进栈,其中静态变量是不入栈的。而堆一般是在头部用一个字节存放堆的大小,堆中的具体内容是人为安排;5、底层不同。栈是连续的空间,而堆是不连续的空间。 我们重点来

2021-07-05 19:24:21 126

原创 LeetCode - 按标签分类刷题(二叉搜索树题解)

LeetBook- 二叉搜索树对LeetBool 二叉搜索树的自我总结以上是LeetCode的二叉搜索树的分类题目,总结起来就是利用二叉搜索树的中序遍历是升序的进行各种变式,其中:二叉搜索树的查找,插入,删除操作(重点关注)搜索操作 是进行循环判断,如果大于根节点,则看右节点;如果小于根节点则看左节点插入操作,以要插入的节点的值大小来决定插入到哪个子树中如果该子树不为空,则问题转化成了将 val 插入到对应子树上。(递归)否则,在此处新建一个以 val 为值的节点,并链接到其父节点 r

2021-07-02 22:53:57 149 1

原创 【牛客每日面经】—— 6.27

猿辅导 服务端一面volatile 是干什么的?在内存层面上是在怎么实现的?使用场景是什么?并发编程中有三大特性:1. 原子性,一个操作或者多个操作,要么全部执行成功,要么全部执行失败。2. 可见性,多个线程共同访问共享变量时,某个线程修改了该变量,其他线程能立即看到修改后的值。3. 有序性,程序执行的顺序按照代码的先后顺序执行。(一)volatile有两个作用:保证变量的可见性,但是不保证原子性防止变量的指令重排序但是synchronized关键字同时保证上面并发的三种特性:因为s

2021-06-27 21:53:02 99 1

原创 LeetCode - 按标签分类刷题(二叉树题解)

LeetBook - 二叉树对LeetBool 二叉树的自我总结以上是LeetCode的二叉树的分类题目,我花一天时间过了一遍,其中路径总和、二叉树的最大深度、对称二叉树——使用递归的方法进行树的遍历二叉树的序列化与反序列化 ——没有掌握,但是看到代码能理解,需要反复复习从中序从中序与后序遍历序列构造二叉树 、从前序与中序遍历序列构造二叉树——使用递归方式容易理解些,但是需要注意左右子树的边界界定...

2021-06-27 13:58:32 93

原创 LeetCode 136 - 数组中只出现一次的数字 (数组中只出现两次的数字)——异或

数组中只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1使用异或进行判断public int singleNumber(int[] nums) { if(nums.length == 0){ return 0; } int ans = 0;

2021-06-24 23:26:55 208

原创 【每天三题】6.21——树

合并二叉树思路:分别考虑左右子树的节点,进行值的相加 public TreeNode mergeTrees (TreeNode t1, TreeNode t2) { // write code here t1.val=t1.val+t2.val; if(t1.left!=null&&t2.left!=null){ mergeTrees(t1.left,t2.left); } else.

2021-06-21 23:39:36 77 2

原创 【每天三题】6.20——路径和

根节点到叶子节点为指定值的路径路径总和剑指 Offer 34. 二叉树中和为某一值的路径——回溯法,DFS给定一个值,计算所有根节点到叶子节点的节点值之和等于sum的路径和剑指offer34题思路和解答是一样的public class Solution { ArrayList<ArrayList<Integer>> res = new ArrayList<>();//用于存储结果 ArrayList<Integer> temp .

2021-06-20 15:45:42 119

原创 【每天三题】day 6.16

参考题解:搜索旋转排序数组——经典二分法合并k个顺序链表:参考1,参考2合并k个顺序链表首先需要怎么合并两个链表,即合并两个链表最大上升子序列类似题:牛客华为计试,合唱队,最长生生子序列上述的题解是采用动态规划,也可以用单调栈的思想+贪心class Solution { public int lengthOfLIS(int[] nums) { if (nums.length <= 0){ return 0; }.

2021-06-16 17:18:10 94

原创 【JVM】JVM垃圾回收机制&&老年代空间担保机制

jvm垃圾回收机制&&老年代空间担保机制JVM的GC回收流程图对先生代和老年代的回收算法进行文字的描述:研究表明,新生代中的对象大都是“朝生夕死”的,即生命周期非常短而且对象活得越久则越难被回收。在发生GC时,需要回收的对象特别多,存活的特别少,因此需要搬移到另一块内存的对象非常少,所以不需要1:1划分内存空间。而是将整个新生代按照8 : 1 : 1的比例划分为三块,最大的称为Eden(伊甸园)区,较小的两块分别称为To Survivor和From Survivor。首次GC时,

2021-06-09 22:32:27 362

Java源码分析:集合-容器.pdf

Java源码分析:集合-容器.pdf

2021-04-02

maven_02_parent.zip

maven工程拆分与聚合的思想 ,把web工程修改成maven拆分与聚合的形式的具体步骤 1. maven工程拆分与聚合的思想 2. 把第二阶段做好的web工程修改成maven拆分与聚合的形式

2020-12-16

ssm_test.zip

SSM框架——详细搭建整合环境SSM框架(Spring+SpringMVC+MyBatis) 服务器开发,分三层 Spring去整合另外两个框架 spring ——> mybatis spring ——> spring mvc 表现层:Spring MVC框架 业务层:Spring框架 持久层:MyBatis框架 选择:配置文件 + 注解的方式

2020-12-16

Linux&Nginx

Linux的安装步骤和资源安装包,linux目录结构介绍,linux常用命令,linux权限命令讲解,vi&vim编辑器,linux常用的网络操作;Nginx的安装和启动,nignx静态网站部署步骤手册,Nginx反向代理与负载均衡

2020-10-23

空空如也

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

TA关注的人

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