自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java线程池(Thread pool)

程池优势1降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的销毁2提高系统响应速度,当有任务到达时,无需等待新线程的创建便能立即执行3方便线程并发数的管控,线程若是无限制的创建,不仅会额外销毁大量系统资源,更是占用过多资源导致系统阻塞或内存不4足等状况,从而降低系统的稳定性。线程池能有效管控线程,统一分配、调优,提供资源使用率5更强大的功能,线程池提供了定时,定期及可控线程数等功能的线程池,使用方便简单线程池执行流程1. 如果在线程池中的线程数量没有达到核心的线程数量, 这时.

2021-06-13 10:38:52 1127 1

原创 单例模式(Singleton Pattern)

一种设计模式:单例模式设计模式:一类完成常见操作的代码模板。单例模式:整个应用的运行过程中,一些类的对象,只需要一个就够了比较典型的单例对象关于配置相干的对象controller / servive / servlet如何写单例对象通过构造方法,但是实例化对象的权限要收回(把构造方法声明称private)静态属性将引用指向的对象返还实例化对象饿汉模式 ,类加载中就完成实例化(提前实例化好的对象,可能整个应用期间,用不上,造成内存的浪费)// 饿汉public class Sing

2021-06-09 16:09:56 97

原创 多线程里的关键字听说了吗? Volatile vs Synchronized

Volatile只能保证操作的内存可见性和有序性,不能保证对变量的操作是原子性的。作用:非常局限的场景下,可以保证原子性保证变量的内存可见性,被Volatile修饰的变量,每次读,必须从主内存同步;每次写,必须附带写回主内存 (最重要的作用-90%)非常局限的场景下,可以保护代码重排引起的问题Synchronized :可以保证原子性、可见性和有序性。每个 Java 对象都有一个关联的 monitor,使用synchronized 时 JVM 会根据使用环境找到对象的 monitor,根据

2021-06-08 17:33:42 124

原创 进程和线程上课听懂了吗?没搞明白?还不进来学!

进程:操作系统(OS)分配资源的最小单位,OS调度的单位之一线程:OS调度的最小单位(独立调度的基本单位)进程和线程的关系:一个进程有多个线程(至少有一个线程),一个线程只能属于一个进程。资源分配给进程,同一进程的所有线程共享该进程的所有资源线程在执行过程中,需要协作同步,不同进程的线程间要利用消息通信的办法实现同步处理机分给线程,真正正在处理机上运行的是线程线程是指进程内的一个执行单元,也是进程内的可调度实体进程与线程的区别:调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

2021-06-08 12:58:41 201 5

原创 每日一题 5-15

年终奖 和带权值的最小路径 相似。之前博客写过 第8题public class Bonus { public int getMost(int[][] board) { int row = board.length; int col = board[0].length; for (int i = 1; i <row ; i++) { board [i][0] = board[i-1][0] +board[i][0];

2021-05-19 10:25:43 59

原创 每日一题 5-14

计算字符串的距离import java.util.Scanner;public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()){ String str1 = sc.nextLine(); String str2 = sc.nextLi

2021-05-19 09:46:00 52

原创 每日一题 5-10

递归函数最终会结束,那么这个函数一定?A 使用了局部变量B 有一个分支不调用自身C 使用了全局变量或者使用了一个或多个参数D 没有循环调用解析:B只有一次循环满足某个条件,不调用自己就返回,递归才会一层一层向上返回。那么C呢,想一下,全局变量和参数确实可以用来控制递归的结束与否。该不该选C呢?再仔细看一下题目(说实话,我很讨厌这种文字游戏),“这个函数一定…“,所以,问题集中在,是否是一定会使用这两种方式呢? 显然不是的。除了C中提到的两种情况外,还有如下控制递归的方式:局部静态变量是

2021-05-13 11:31:12 154

原创 每日一题 5-8

题目1:统计每个月兔子的总数思路: 第三个月以后为斐波那契数列import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc= new Scanner(System.in); while (sc.hasNext()){ int n = sc.nextInt(); System.out.p

2021-05-11 10:31:31 73

原创 每日一题 4-29

jre 判断程序是否执行结束的标准是()A 所有的前台线程执行完毕B 所有的后台线程执行完毕C 所有的线程执行完毕D 和以上都无关解析: A题目1:【iNOC产品部–完全数计算】完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。给定函数count(int n),用于计算n以内(

2021-05-11 09:30:21 317

原创 每日一题 4-28

题目1:手套public class Gloves { public int findMinimum(int n, int[] left, int[] right) { int leftSum = 0; int rightSum = 0; int leftMin = Integer.MAX_VALUE; int rightMin = Integer.MAX_VALUE; int sum = 0; fo

2021-05-10 17:31:42 57

原创 每日一题 4-27

在Java中,以下关于方法重载和方法重写描述正确的是?A 方法重载和方法的重写实现的功能相同B 方法重载出现在父子关系中,方法重写是在同一类中C 方法重载的返回值类型必须一致,参数项必须不同D 方法重写的返回值类型必须相同或相容。解析: D重载 : 方法名一致,形参列表不同。无所谓返回值多少,不作为判断依据。重写:两同,两小,一大。 方法名和形参列表相同,子类的返回值类型和异常类型必须是父类对应的类型或者其字类型,子类的访问权限必须大于父类。题目1:计算日期到天数转换import java

2021-05-10 15:51:50 1729

原创 每日一题 5-7

题目1:杨辉三角变形思路: 初始化一个二维数组,根据题中规律计算,最后找出import java.util.Scanner;public class Main { public static int getFirstPlaceEven(int n){ int[][] map = new int[n + 1][2*n]; map[1][1] = 1; for(int i = 2; i <= n; i++){ map[

2021-05-10 11:44:12 46

原创 每日一题 4-26

题目1:参数解析在命令行输入如下命令:xcopy /s c:\ d:\,各个参数如下:参数1:命令字xcopy参数2:字符串/s 参数3:字符串c:参数4: 字符串d:请编写一个参数解析程序,实现将命令行各个参数解析出来。解析规则:1.参数分隔符为空格2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” “d:\”时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\p

2021-05-08 17:25:41 82

原创 每日一题 4-24

以下方法,哪个不是对add方法的重载?public class Test{public void add( int x,int y,int z){}}A public int add(int x,int y,float z){return 0;}B public int add(int x,int y,int z){return 0;}C public void add(int x,int y){}D 以上都不是解析: B**重载:**方法名一致,形参列表不同 。无所谓返回值多少,不作

2021-05-07 18:31:03 297

原创 每日一题 4-23

Linkedlist继承自AbstractSequentialList例题1:思路: 俩节点向上搜索,哪个大先向上走,走完进行比较,如果编号相同,则为最近公共祖先,否则继续进行比较。import java.util.*;public class Solution { public int getLCA(int a, int b) { while(a!=b){ if(a>b){ a /= 2; .

2021-05-02 10:29:22 60

原创 每日一题 4-22

String a属于类的属性和方法所以在堆中。而bc在方法中,b c为局部变量,局部变量不属于任何类或者实例,因此它总是保存在其所在方法的栈内存中。例题1:【Fibonacci数列】Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想.

2021-05-01 10:36:29 67

原创 MySQL表的增删改查(进阶)

1 数据库约束1.1约束类型NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值。PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子

2021-04-28 15:59:32 57

原创 MySQL表的基础增删改查

1.CRUD1.Create多行数据+指定列插入语法: insert table_name(column,column,column) values (value,value,value) , (value,value,value) , (value,value,value) ;2.Retrieve语法:select [ distinct ] * { column ,column ,column } [from table_name]

2021-04-27 16:33:53 57

原创 每日一题 4-21

例题1:import java.util.Scanner;/** * @ClassName Main6 * @Deacription 实际上就是把所有小于等于n的正整数分解成质因数, * 末尾0的个数实际上就是2和5的个数, * 而2的个数明显是很多很多的,所以问题就转化成了5的个数。 * @Date 2021/4/25 10:41 **/public class Main6 { public static void main(String[] args) { ..

2021-04-25 10:57:52 49

原创 每日一题 4-20

A:在Java中,finally块中的代码一定会执行。Java中子类初始化顺序:1.父类(静态变量,静态代码块)2.子类(静态变量,静态代码块)3.父类(实例变量,普通代码块)4.父类(构造函数)5.子类(实例变量,普通代码块)6子类(构造函数)第一题:思路1:这里我们用到了集合ArrayList,当然你也可以使用其他的集合。存放n个数,且都是从0到n-1的数字。因为每次删除的都是当前位置的后面第2个,那么我们就可以这样写:(i+2)%size; 当i==0的时候,我们移除的就是2号.

2021-04-23 22:03:01 69

原创 广度优先搜索 Breadth First Search

一石激起千层浪广度优先搜索模型: bfs( ) { 1.建立起开始步骤,队列初始化 2.遍历队列中的每一种可能,while(队列不为空) { 通过队头元素带出下一步所有的可能,并且依次入队 { 判断当前情况是否达成目标:按照目标要求处理逻辑 } 继续遍历队列中的剩余情况 }}例题1:员工的重要性import ja

2021-04-22 15:06:05 82 1

原创 每日一题 4-17

1 byte[] src,dst; dst=new String (src,”GBK”).getbytes(“UTF-8”) //实现了GBK编码字节流到UTF-8编码字节流的转换:2A:寻找下一个空的位置,存放B:再次使用一个不同的哈希算法计算一次C:使用链表存 (HashMap)第一题:思路 : 通过规律发现如果 [i][j]位置放了蛋糕,则[i+2][j]和[i][j+2] 不能放蛋糕。import java.util.Scanner;public class Main3

2021-04-21 11:23:03 96 1

原创 每日一题 4-16

思路:第一题:思路 : 遍历插入,判断是否为回文。import java.util.Scanner;public class Main { public static boolean isHw(String str){ char[] chars = str.toCharArray(); int left = 0, right = str.length()-1; while (left<right){ .

2021-04-21 09:54:52 62

原创 MySQL数据库基础

1.数据库的操作命令:show databases ; 显示当前有的数据库create database if not exists db_test1 创建db_test1的数据库(如果系统没有 db_test1的数据库,则创建一个名叫 db_test1 的数据库,如果有则不创建)use db_test1 使用db_test1 数据库drop database db_test1 删除db_test1 数据库2.常见数据类型3. 表操作use de_test1 ;

2021-04-19 16:53:19 102

原创 每日一题 4-15

System.arraycopy > clone > Arrays.copyOf > forArrays.copyOf:本质上是调用了System.arraycopy。开销全花在了Math.min函数上了。System.arraycopy:实质上是通过Jvm调用本地方法,及c/c++已经编译成机器码的方法,所以快。题目1:import java.util.Scanner;public class Main4 { public static void main(Stri.

2021-04-19 11:31:46 42

原创 每日一题 4-14

private修饰 所以不能访问在调用子类的构造方法时,会先调用父类的构造方法,当子类的构造方法没有使用"Super"关键字,是默认调用父类的无参的构造方法。 如果父类中包含有参构造方法,没有无惨构造方法,则在子类的构造方法中一定需要出现super,对父类的对象进行初始化。题目1:思路:遍历字符串, 用maxLength记录字符串的长度,用endIndex记录最长字符串的结尾位置,最后进行字符串切割即可。import java.util.Scanner;public class Main {.

2021-04-19 10:41:22 62

原创 深度优先搜索 DepthFirst Search

1. dfs:1 深度优先搜索的关键是解决 -> 目前需要如何做 ,下一步的做法和当前的做法是相同的2 目前需要如何做 -> 一般是尝试每一种可能,遍历循环,对于每一种可能确定之后,继续走下一步,当前的剩余可能等到从下一步回退之后再处理,(深度优先搜索的模型) Dfs (当前这一步的处理逻辑) { 1.判断边界,是否已经一条路走到黑 :向上回退 2.尝试当下的每一种可能 3.确定一种可能后,继续下一步Dfs(下一步) }例题1:员工的重要性

2021-04-17 15:58:13 175 3

原创 每日一题 4-13

题目1:思路: 定义一个计数器和标记符 , 遍历数组,记录比较即可import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNextInt()){int n = sc.nextInt();int [] array = new int [n];for (int i = 0; i

2021-04-16 21:45:36 150

原创 49 把字符串转换成一个整数

把字符串转换成一个整数思路: 先处理符合位,将其保存起来。 再将字符串转为字符数组,通过ASC||检查其中是否有别的字符 。最后从左往右 读取 字符数组中的值public class Main { public int StrToInt(String str) { if (str==""|| str.length()==0) return 0; if ( ( str.charAt(0)=='+' ||str.charAt(0)=='-' )&&am

2021-04-16 21:25:49 78

原创 每日一题 4-12

A :正确B : 克隆接口C:CharBuffer、String、StringBuffer、StringBuilder 实现了此接口D: 排序接口正确答案:d正确答案:c11.5+0.5 = 12 -11.5+0.5 = -11Maht.round 返回值是当前值+0.5向下取整(-0.5 --> 0)正确答案:cmethod1 是 普通方法静态成员变量,静态方法可以直接通过类名或对象名去调用,而非静态方法,应该是通过对象的实例化去调用。思路:贪心思想.

2021-04-16 11:03:49 159 1

原创 Dynamic Programming 动态规划

**思想:**分治思想的延伸,将大问题化解为小问题的分治过程。在处理的过程中,保存这些小问题的处理结果,在后面处理大问题时,可以直接调用**例题1 :输出斐波那契数列的第n项我们通过推导已知 斐波那契数列的规律 f(n) = f(n-1) + f(n-2) f(0) = 0 f(1) = 1动态规划分析:状态转移方程 dp[i+1] = dp[i] + dp[i-1]class Solution { public int fib(int n) { if(n==0){

2021-04-14 11:03:16 84 1

原创 692. 前K个高频单词

思路:先统计各个单词的出现次数将所有单词 + 次数组织成线性结构使用优先队列public class Solution2 { static class WordCount implements Comparable<WordCount> { String word; int count; public WordCount(String word, int count) { this.word = wo.

2021-04-12 20:29:47 105

原创 138. 复制带随机指针的链表

思路1: 复制链表 和 处理random 分开进行 使用Map1.首先复制链表(遍历+尾插)2.使用Map保存映射关系<旧结点 -> 新结点 > + oldRandom 得到 newRandomimport java.util.Comparator;import java.util.Map;import java.util.TreeMap;public class Solution { static class NodeComparator implements ..

2021-04-12 17:49:49 55

原创 哈希表 + HashSet + HashMap

概念:哈希冲突::对于两个数据元素的关键字kik_iki​和 kjk_jkj​(i != j),有kik_iki​ != kjk_jkj​,但有:Hash(kik_iki​) == Hash(kjk_jkj​),即:不同关键字通过相同哈希哈数计算出相同的哈希地址,该种现象称为哈希冲突或哈希碰撞。我们通常准备的哈希表是通用对的,所以往往是无法避免的。同时冲突率和空间浪费相互对应。负载因子调节:散列表的负载因子定义为: 填入表中的元素 / 散列表的长度(数组的长度)Java库限制负载因子的

2021-04-12 11:23:06 133

原创 Map 和 Set

一种用来搜索的数据结构(容器)其搜索的效率与查找的方式有关1.遍历 O(N)2.二分查找为O(log2N)O(log_2N)O(log2​N)Set: Set:一种不允许出现重复元素的集合,是否重复需要用.equals进行判断,同时Set不是线性结构TreeSet: 实现类 -> 搜索树(Balance BST 红黑树)两者的区别 : balance bstTreeSet和Set相比,要求元素类型具备比较的能力(Comparable 和 Comparator )ite

2021-04-09 19:33:32 99

原创 剑指 Offer 36. 二叉搜索树与双向链表

思路:搜索树转化为有序链表, 有序可以理解为运用中序遍历,即 将中序遍历的结果,进行链表的尾插操作public class Solution { private Node head ; private Node last ; public Node treeToDoublyList(Node root) { head = null; last = null; inorder(root); head.left =

2021-04-09 17:17:50 47

原创 二叉搜索树 (Binary Search Tree) BST

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若左子树!=null,则左子树上所有节点的值均 < 根节点的值若右子树!=null,则右子树上所有节点的值均 > 根节点的值查找:...

2021-04-09 14:27:21 178 1

原创 排序算法3(归并)

整体思路:区间内的元素的个数 <=1 , 本次排序结束找到待排序区间的中间位置,把整个区间分为两段分别对左右两个小区间按照相同的方式排序 (归并排序)利用一段额外空间,对两个有序数组进行归并过程import java.util.Arrays;public class MergeSort { /* 不区分最好/平均/最坏情况 时间复杂度: O(n * log(n)) 空间复杂度: O(n) 具备稳定性:具备稳定性 */ pu

2021-04-09 09:06:50 59 1

原创 p65 不用加减乘除做加法

求两数之和,要求不得在函数体内使用 + - * / 四则运算符合思路:通常我们是如何 计算 5 + 71.只做个位相加,不进位 (二进制中, 异或 ^ 效果等于个位相加不进位, 0加0为0,1加0为1 ,1加1为0)2.做进位运算 5+7 进位,进位的值为10 (二进制中,位运算左移相当于进位)3.将前两个结果加起来public class Solution { public int Add(int num1,int num2) { while(num2!=0){

2021-04-08 17:35:51 68 1

原创 p66 构建乘积数组

给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。思路: 先计算下三角的值,然后再计算上三角的值。下三角 计算公式for(int i=1;i<a.lenth;i++){ b[i] = b[i-1]*a[i-1] ;}上三角 计算公式for(int i = a.length-2;i>=

2021-04-08 15:47:07 74

空空如也

空空如也

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

TA关注的人

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