自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 关于笔记本WLAN被禁用解决方法

1.打开设置2.输入设备管理器打开3.找到网络适配器4.找到有黄色感叹号5.右击启用(没有这个就点击卸载,然后重启就行了)

2022-07-09 09:57:52 6041 1

原创 spring源码之RootBeanDefinition合并Bean

spring启动过程中,当bean已经被扫描到spring容器里面时,他会执行refresh()方法,在该方法中会执行finishBeanFactoryInitialization(beanFactory);来实例化所有非懒加载的单例bean,该方法中核心就是执行beanFactory.preInstantiateSingletons();实例化非懒加载的单例Bean,下面就是该方法的源码:public void preInstantiateSingletons() throws B...

2022-04-22 10:05:27 453

原创 Linux基本命令操作

一、文件管理1.touch a.tx t创建文件,如果存在则修改创建时间touch a{1..10}.txt 创建10个文件stat a.txt 查看文件详细属性2.vim a.txt: 如果存在则进入编辑,不存在新键一个临时文件。vim a.txt +5 直接进入文件第五行位置i :进入编辑模式:wq!:强制退出保存3.echo "aa"显示aa字符串,echo "aa">a.txt 以覆盖形式写入a.txt,echo "aa">>将字符串aa写入文件尾。

2022-04-12 12:21:10 1160

原创 16.二叉树各种遍历之递归&&迭代

static class TreeNode{ int val; TreeNode left; TreeNode right; public TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; }..

2022-04-09 11:45:26 533

原创 15.三角形的最大周长

给定由一些正数(代表长度)组成的数组 A ,返回由其中三个长度组成的、面积不为零的三角形的最大周长。 如果不能形成任何面积不为零的三角形,返回 0 。 public static void main(String[] args) { int[]arr=new int[]{9,7,5,2,4,3,8,1}; System.out.println(triangleLength(arr)); } private static int triangleLen

2022-04-09 11:01:48 152

原创 14.求最大连续递增序列

给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。 public static void main(String[] args) { int[]arr=new int[]{9,4,5,6,1,7,2,3,4,5}; System.out.println(findLength(arr)); } private static int findLength(int[] arr) { int sta...

2022-04-09 10:48:56 300

原创 13.求二叉树最大最小深度

TreeNode node8=new TreeNode(8,null,null); TreeNode node7=new TreeNode(7,null,null); TreeNode node6=new TreeNode(6,node7,null); TreeNode node5=new TreeNode(5,null,null); TreeNode node4=new TreeNode(4,null,node8); Tr..

2022-04-09 10:47:52 475

原创 12.子数组最大平均数

给一个整数数组,找出平均数最大且长度为 k 的下标连续的子数组,并输出该最大平均数。 public static void main(String[] args) { int[]arr=new int[]{7,5,2,4,1,6,9,3}; System.out.println(maxAverage(arr,3)); } private static double maxAverage(int[] arr, int k) { ...

2022-04-09 10:08:52 253

原创 11.合并两个有序数组

两个有序整数数组 num1 和 num2,将 num2 合并到 num1 中,使 num1 成为一个有序数组。 public static void main(String[] args) { int []num1=new int[]{1,3,5,7,9,0,0,0,0}; int []num2=new int[]{2,4,6,8}; mergeArr(num1,5,num2,4); System.out.println(Arrays.t

2022-04-09 09:55:44 576

原创 10.排列硬币

总共有 n 枚硬币,将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。给定一个数字 n,找出可形成完整阶梯行的总行数。 public static void main(String[] args) {// System.out.println(arrangeCoins(15)); System.out.println(arrangeCoins(21)); } //迭代 private static int arran...

2022-04-09 08:54:52 97

原创 9.环形链表

package com.spj.algorithm;/* *@program:架构师 *@Author:peng *@Time:2022/4/9 8:36 * */public class _9_CycleLink { static class ListNode { int val; ListNode next; public ListNode(int val, ListNode next) { thi...

2022-04-09 08:43:41 396

原创 8.斐波那契数列优化

8.斐波那契数列优化 public static void main(String[] args) { System.out.println(fib2(6)); } //原始递归 private static int fib(int n) { if (n==1)return 1; if (n==0)return 0; return fib(n-1)+fib(n-2); } //优化

2022-04-09 08:35:38 220

原创 7.两数之和

给定一个整数数组 ,从数组中找出两个数满足相加之和等于目标数 target 。package com.spj.algorithm;import java.util.Arrays;import java.util.HashMap;import java.util.Map;/* *@program:架构师 *@Author:peng *@Time:2022/4/8 14:02 * */public class _7_towSum { public static void

2022-04-08 14:26:43 223

原创 6.三个数的最大乘积

一个整型数组 arr,在数组中找出由三个数字组成的最大乘积,并输出这个乘积。 public static void main(String[] args) { int []arr=new int[]{-10,-7,3,6,9,1,5}; System.out.println(getMax(arr)); } private static int getMax(int[] arr) { Arrays.sort(arr);

2022-04-08 13:51:57 218

原创 5.x的平方根

在不使用 sqrt(x) 函数的情况下,得到 x的平方根的整数部分 public static void main(String[] args) { System.out.println(binarySearch(10)); } private static int binarySearch(int x) { int low=0,height=x,mid = -1; while (low<=height){

2022-04-08 13:42:08 114

原创 4.删除数组中的重复项

一个数组 nums ,原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。public static void main(String[] args) { int[]arr=new int[]{9,4,6,2,2,4,1,5}; Arrays.sort(arr); System.out.println(deleteRepeat(arr)); } private static int deleteRepeat(

2022-04-08 13:28:31 378

原创 3.中心索引下标

数组中某一个下标,左右两边的元素之和相等,该下标即为中心索引 public static void main(String[] args) { int index=midIndex(new int[]{1,7,3,6,5,6}); System.out.println(index); } static int sum(int []arr){ int sum=0; for (int i = 0; i < arr

2022-04-07 18:47:45 201

原创 2.统计素数个数

public class _2_countPrimes { public static void main(String[] args) { System.out.println(countPrimes(100)); } static int countPrimes(int x){ int count=0; for (int i = 2; i < x; i++) { count+=isPrime(i)?1.

2022-04-07 18:33:29 235

原创 1.链表反转

一、迭代 public static ListNode iterate(ListNode head){ ListNode next,curr=head,prev=null; while (curr!=null){ next=curr.next; curr.next=prev; prev=curr; curr=next; } return pre

2022-04-07 18:26:46 383

原创 Java并发编程synchronized详解

1

2022-03-31 00:59:12 429

原创 Java并发编程CAS与Atomic原子类

1

2022-03-29 09:41:36 524

原创 Java线程创建过程

1.使用new Thread()创建一个线程,然后调用start()方法进行java层面的线程启动;2.调用本地方法start0(),去调用jvm中的JVM_StartThread方法进行线程创建和启动;3.调用new JavaThread进行线程的创建,并根据不同的操作系统平台调用对应的os::create_thread方法进行线程创建;4.新创建的线程状态为Initialized,调用wait()方j法进行等待,等到被唤醒才继续执行thread->run();;5.调用Thread::..

2022-03-29 01:00:23 1143

原创 Java线程生命周期

一、操作系统层面 在操作系统中线程生命周期可以分为五种状态。分别是:初始状态、可运行状态、运行状态、休眠状态和终止状态。二、Java层面 但是在Java中,线程的生命周期有六种状态,分别是:新键NEW,就绪RUNNABLE、阻塞BLOCKED、等待WAITING、超时等待TIMED_WAITING、终止Terminated。Java中将操作系统中断休眠状态分为了三种状态,也就是:BLOCKED、WAITING、TIMED_WAITING。只要 Java 线程处于这三...

2022-03-29 00:28:17 4936 1

原创 Java并发中的sleep、yield、join、stop方法

一、sleep方法 1.调用 sleep 会让当前线程从 Running 进入TIMED_WAITING状态,但是不会释放对象锁 2.其它线程可以使用 interrupt 方法打断正在睡眠的线程,这时 sleep 方法会抛出InterruptedException,并且会清除中断标志 ,此时要在finally代码块中重新设置中断标志位hread.currentThread().interrupt();3.sleep当传入参数为0时,和yield一样可...

2022-03-29 00:05:04 743

原创 Java线程间通信&&进程间通信

一、进程间通信的方式 1. 管道和有名管道:管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 2. 信号(signal):用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。 3. 消息队列(message queue):消息队列是消息的链接表。比如生产者-消费者模式就用到该方式,生产者可以向队列中写东西,消费者从中拿取东西。...

2022-03-28 23:38:42 953

原创 关于Java并发中的进程、线程、协程、管程及其联系区别

一、进程程序是由指令和数据构成的,而指令要运行就要加载到CPU中,数据要读写就要将数据加载到内存中。进程就是用来加载指令,管理内存和io的,操作系统会以进程为单位,分配系统资源(时间片,内存等),就是说,进程是资源分配的最小单位。二、线程线程存在于进程中,是进程中的实体,也可以称为轻量级进程,是CPU调度执行的最小单位。两者间的区别与联系: 1.进程是相互独立的,线程存在于进程中。 2.进程内有共...

2022-03-28 22:32:21 1181

原创 关于MySQL索引设计原则

1.一般等到主体业务功能开发完毕,把涉及到该表相关sql都要拿出来分析之后再建立索引。 2、联合索引尽量覆盖条件 让每一个联合索引都尽量去包含sql语句里的where、order by、group by的字段,还要确保这些联合索引的字段顺序尽量满足sql查询的最左前缀原则。3、不要在值比较少的字段上建立索引 比如一张表有几百万行记录,其中有性别字段, 其值只有男或女, 如果对这种字段建立索引的话,索引树里只包含男女两种值,没法进行快速的二分查找,用索引就没有太大的意义。 一般建立索引,

2022-03-28 00:22:04 290

原创 MySQL文件排序

filesort文件排序可分为单路排序和双路排序: 单路排序:是一次性取出满足条件行的所有字段,然后在sort buffer中进行排序。如下面代码是先从索引name先找到name='jack'的主键id,然后根据该id取出所有字段值,然后放入sort_buffer中,然后重复上述过程,直到全部拿完,最后在sort_buffer中按照position排序。双路排序:是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行 ID,然后在 sort buffer中...

2022-03-28 00:08:58 1235

原创 MySQL何时使用索引详解

现有如下表及表中数据:其中有联合索引`idx_name_age_position` (`name`,`age`,`position`)CREATE TABLE `employees` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(

2022-03-27 23:40:02 3104

原创 MySQL之Explain工具的使用及部分优化

1.Explain工具可以帮助我们观看mysql语句的执行情况,只需要在执行语句前面加explain就行现使用如下三张表,film表建立了name索引,film_actor建立联合索引`idx_film_actor_id` (`film_id`,`actor_id`):CREATE TABLE `actor` ( `id` int NOT NULL, `name` varchar(45) DEFAULT NULL, `update_time` datetime DEFAULT NULL

2022-03-27 22:36:34 677

原创 JMM内存模型&上下文切换

并行:指在同一时刻,有多条指令在多个处理器上同时执行。并发:同一时刻只能有一条指令执行。解决多线程同步,互斥、分工。并发三大特性:1.有序性:程序执行的顺序按照代码的先后顺序执行。2.原子性:一个或多个操作,要么全部执行且在执行过程中不被任何因素打断,要么全部不执行。3.可见性:当一个线程修改了共享变量的值,其他线程能够看到修改的值。 JMM内存模型线...

2022-03-26 16:20:15 320

原创 spring源码bean创建过程

spring中getBean有三种传参数的方式,根据不同的传参进入到对应的方法中,这三个方法最终都会进入doGetBean()方法中,也就是创建bean.UserService userService = (UserService) applicationContext.getBean("userService");//UserService userService = (UserService) applicationContext.getBean("&userService");...

2022-03-26 15:03:08 822

原创 spring源码doScan()扫描过程

spring源码bean扫描过程

2022-03-24 00:27:33 1055

原创 Mysql使用B+Tree作为存储结构常见问题

Mysql性能优化

2022-03-19 00:29:36 194

原创 java并发编程之保持可见性的方法

线程可见性

2022-03-19 00:04:40 955

原创 图的边集

public class Edge<T>implement Comparable<Edge>{ private T start;//起点 private T end;//终点 private int distance; public Edge(T start,T end,int distance){ this.start=start; this.end=en...

2020-03-01 10:54:38 1454

原创 图八连通检测

public class Main{private static char[][]data= { "*@@*@".toCharArray(), "**@*@".toCharArray(), "****@".toCharArray(), "@@@*@".toCharArray(), "@@**@".toCharArray() }; private static i...

2020-03-01 10:43:05 202

原创 图_四连通检测

public class Main{ public boolean check(char[][]graph,int[][]lable,int[]points){ int x1=points[0]; int y1=points[1]; int x2=points[2]; int y2=points[3]; if(x1==x2&&y1==y2)retur...

2020-03-01 10:28:27 191

原创 求两节点的公共祖先

public class Main(){ private static int getLCA(TreeNode root,TreeNode x,TreeNode y){ if(root.equals(x)&&root.equals(y))return root; boolean x_on_left=cover(root.left,x); boolean y_on_ri...

2020-03-01 10:09:00 275

原创 求二叉树某节点后继循环求解

递归相当与隐式的栈public class Main{ public int getSucc(TreeNode<Integer>root,int p){ if(root==null)return -1; Stack<TreeNode>stack=new Stack(); TreeNode<Integer>curr=root; boolean ...

2020-03-01 09:42:03 105

spring源码bean扫描过程

spring源码bean生命周期doScan扫描过程图

2022-03-24

空空如也

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

TA关注的人

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