自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

原创 Leetcode701. 二叉搜索树中的插入操作(insert-into-a-binary-search-tree)

二叉搜索树中的插入操作给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。例如,给定二叉搜索树: 4 / \ 2 7 / \1 3和 插入的值: 5你可以返回这个二叉搜索树: 4 / \ 2 7 / \ /1 3 5

2020-09-30 19:58:18 417

转载 JDK动态代理和CGLib动态代理简单演示

JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期间创建接口的代理实例。一、首先我们进行JDK动态代理的演示。现在我们有一个简单的业务接口Saying,如下:package testAOP;public interface Saying {public void sayHello(String name); public void talking(String name);}一个简单的实现类SayingImpl,如下:package testAOP;public

2020-09-30 16:14:55 79

转载 146. LRU缓存机制(lru-cache)——LinkedHashMap实现版超简单

146. LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。进

2020-09-30 10:36:43 372

转载 idea搜索快捷键

Ctrl+N按名字搜索类相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件;Ctrl+Shift+N按文件名搜索文件Ctrl+H查看类的继承关系选中Deque类,如图按Ctrl+H,显示如图。Alt+F7查找类或方法在哪被使用相当于eclipse的ctrl+shif+H,但是速度快得多。Ctrl+F/Ctrl+Shift+F按照文本的内容查找相当于eclipse的ctrl+H,速度优势更加明显。其中Ctrl+F是在本页查找,Ctrl+Shift+F是全局查

2020-09-30 10:05:11 300

原创 java并发编程——Fork-Join并行执行任务框架应用

Fork-Join并行执行任务框架应用例子1我们都知道,快排有2个步骤:第1步,拿数组的第1个元素,把元素划分成2半,左边的比该元素小,右边的比该元素大;第2步,对左右的2个子数组,分别排序。可以看出,这里左右2个子数组,可以相互独立的,并行计算。因此可以利用ForkJoin框架, 代码如下://定义一个Task,基础自RecursiveAction,实现其compute方法class SortTask extends RecursiveAction { final long[] ar

2020-09-29 22:45:27 182

原创 java并发编程——Fork-Join并行执行任务框架原理

文章目录Fork-Join原理任务类型CPU密集型(CPU-bound)IO密集型(I/O bound)CPU密集型 vs IO密集型Fork-Join框架定义和特性工作窃取算法工作原理ForkJoinPoolWorkQueueForkJoinWorkThreadForkJoinTaskfork 方法join 方法ForkJoin原理图Fork-Join原理任务类型CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是

2020-09-29 22:09:10 465

原创 java二叉树前中序非递归统一的写法

前序 //前序 public static List<Integer> preOrder(TreeNode root){ List<Integer> list = new ArrayList(); Stack<TreeNode> stack = new Stack(); TreeNode cur = root; while(cur!=null || !stack.isEmpty()){

2020-09-29 10:50:39 101

原创 Error:Kotlin: warnings found and -Werror specified错误

Error:Kotlin: warnings found and -Werror specified错误编译Spring5.2.0源码

2020-09-28 19:21:45 2005 3

原创 linux 高级命令awk

文章目录linux 高级命令awk小例子awk语法基本用法linux 高级命令awkAWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。我们用ls -l默认会输出一些文件权限,用户名,文件大小等但有时候,我们要求格式输出怎么办呢,这时,就要用到awk命令。小例子$ ls -ltotal 1395200-rw-r-

2020-09-26 23:39:47 461

原创 linux关机命令halt详细解释,请用halt -p或init 0来关机

halt指令用来关闭系统,然后再通知内核是停止、重启、还是关闭电源。必要参数具体说明如下:-d 不在wtmp中记录-f 强制关机或者重启,不调用shutdown-h 让硬件保持standby的状态-i 关闭系统前先关闭网络系统-n 不执行sync-p halt后执行poweroff-w 在wtmp中记录,不关闭系统有的客户直接halt,运行后服务器并没关闭电源,只是将系统关闭了,服务器还是在运行中!请加上-p参数用halt -p来关闭系统和关闭服务器电源!!!!也可以用init命令:

2020-09-26 15:31:22 5920

原创 什么是缓存雪崩、缓存穿透、缓存击穿以及解决方案

文章目录什么是缓存雪崩、缓存穿透、缓存击穿以及解决方案缓存雪崩事前:事中:事后:缓存穿透缓存击穿小总结参考什么是缓存雪崩、缓存穿透、缓存击穿以及解决方案redis是面试中经常问到的,题目也非常多。缓存雪崩、缓存穿透、缓存击穿比较有代表性,这里记录一下。缓存雪崩缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。解决方案在做电商项目的时候,一般是采取不同分类商品,缓存不同周期。在同一分类中的商品,加上一个随机因子。这样能尽可能分散缓存过期时间,而且,热门类

2020-09-26 15:28:08 223

原创 java高级面试题——对于JDK自带的JVM监控和性能分析工具用过哪些?一般你是怎么用的?

对于JDK自带的JVM监控和性能分析工具用过哪些?一般你是怎么用的?可以看看oracle的官网命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。性能分析工具...

2020-09-25 12:52:17 477

原创 java高级面试题——生产环境服务器变慢,诊断思路和性能评估

=====文章目录=====生产环境服务器变慢,诊断思路和性能评估谈谈整机:top命令cpu:vmstat额外内存:free额外磁盘: df磁盘: IO额外网络IO参考生产环境服务器变慢,诊断思路和性能评估谈谈生产环境服务器变慢的原因很多,从整机,CPU,内存,磁盘,网络IO等方面查看,根据具体情况优化。整机:top命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。我们知道判断一个系统的负载可以使用top,uptime等命令去查看,load average它

2020-09-25 12:11:50 492

原创 JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释

jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。HotSpot虚拟机GC算法采用分代收集算法:1、一个人(对象)出来(new 出来)后会在Eden Space(伊甸园)无忧无虑的生活,直到

2020-09-25 08:53:14 414

原创 java基础知识JVM——垃圾回收算法

垃圾回收算法4大垃圾回收算法思想引用计数复制拷贝标记清除标记整理Java语言的一大特点就是可以自动进行垃圾回收处理,无需开发人员过于关注系统资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。一个不合适的垃圾回收方法和策略将会对系统性能造成不良影响。1.引用计数法引用计数法是最经典古老的一种垃圾收集方法,它的实现也很简单:对于一个对象A,只要有任何一个对象引用了A,则A的计数器就加1,当引用失效时,引用计数器就减1.只要对象A的引用计数器的值为0,则对象A

2020-09-24 16:48:05 159

原创 java基础知识JVM——OutOfMemoryError演示之6种OOM

OutOfMemoryError演示StackOverflowError栈满会抛出该错误。无限递归就会导致StackOverflowError,是java.lang.Throwable→java.lang.Error→java.lang.VirtualMachineError下的错误。package jvm;public class StackOverflowErrorDemo { public static void main(String[] args) { stack

2020-09-24 15:45:40 382

原创 leetcode合并二叉树

leetcode合并二叉树class Solution { public TreeNode mergeTrees_1(TreeNode t1, TreeNode t2) { if (t1 == null) { return t2; } if (t2 == null) { return t1; } // 先合并根节点 t1.val += t2.val;

2020-09-24 10:37:28 141

原创 java基础知识JVM——强引用、软引用、弱引用与虚引用(含面试题)

=====文章目录=====强引用、软引用、弱引用强引用软引用条件1.创建大对象条件2.配置小的内存的方法代码弱引用WeakHashMap虚引用软引用与弱引用的适用场景其他强引用、软引用、弱引用强引用使用new方法创造出来的对象,默认都是强引用。GC的时候,就算内存不够,抛出OutOfMemoryError也不会回收对象,死了也不回收。详见StrongReferenceDemo。public class StrongReferenceDemo { public static void mai

2020-09-23 23:08:35 169

原创 重置搜索 java并发编程——死锁现象演示与排查

死锁现象演示与排查在IDE工具运行以下代码,发现没有退出,点击DeadLockDemo类,右键,open in Terminal,打开控制台。package thread;import java.util.concurrent.TimeUnit;public class DeadLockDemo { public static void main(String[] args) { String lockA = "lockA"; String lockB =

2020-09-23 14:31:09 108

原创 java并发编程——线程池ThreadPoolExecutor使用

线程池ThreadPoolExecutor使用线程池ThreadPoolExecutor使用package thread;import java.util.concurrent.*;/** * 第四种使用Java多线程的方式,线程池 */public class MyThreadPoolDemo { public static void main(String[] args) { System.out.println("Fixed Thread Pool");

2020-09-22 23:41:53 283

原创 java并发编程——实际生产使用哪一个线程池(线程池ThreadPoolExecutor原理与面试题)

线程池ThreadPoolExecutor概念线程池做的工作主要是控制运行的线程的数量,处理过程中将任务加入队列,然后在线程创建后启动这些任务,如果发生超过了最大数量,超出的数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行.优点他的主要特点为:线程复用、控制最大并发数、管理线程.线程复用:不用一直new新线程,重复利用已经创建的线程来降低线程的创建和销毁开销,节省系统资源。提高响应速度:当任务达到时,不用创建新的线程,直接利用线程池的线程。管理线程:可以控制最大并发数,控制线

2020-09-22 18:22:41 340

原创 java并发编程——生产者消费者模式之阻塞队列版

生产者消费者模式生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。传统版用ReentrantLock实现。package mytest;/** * 共享资源类 */class ShareData {

2020-09-22 14:48:22 209

原创 Synchronized与ReentrantLock区别

文章目录synchronized和lock有什么区别?用新的lock有什么好处?你举例说说1.原始构成2.使用方法3.等待是否可中断4.加锁是否公平5.锁绑定多个条件Condition代码举例synchronizedReentrantLock代码其他synchronized和lock有什么区别?用新的lock有什么好处?你举例说说1.原始构成synchronized是关键字属于JVM层面,monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于moni

2020-09-22 11:22:44 160

原创 CountDownLatch和CyclicBarrier的比较

CountDownLatch和CyclicBarrier的比较CountDownLatch是线程组之间的等待,即一个(或多个)线程等待N个线程完成某件事情之后再执行;而CyclicBarrier则是线程组内的等待,即每个线程相互等待,即N个线程都被拦截之后,然后依次执行。CountDownLatch是减计数方式,而CyclicBarrier是加计数方式。CountDownLatch计数为0无法重置,而CyclicBarrier计数达到初始值,则可以重置。CountDownLatch不可以复用,而C

2020-09-21 17:18:03 120

原创 git设置、查看、取消代理

git设置、查看、取消代理转自git设置、查看、取消代理设置代理:git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'socks5://127.0.0.1:1080'查看代理:git config --global --get http.proxygit config --global --get https.proxy取消代理:git config --gl

2020-09-20 17:48:03 461

原创 5519. 重新排列单词间的空格——双循环法

5519. 重新排列单词间的空格给你一个字符串 text ,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。请你重新排列空格,使每对相邻单词之间的空格数目都 相等 ,并尽可能 最大化 该数目。如果不能重新平均分配所有空格,请 将多余的空格放置在字符串末尾 ,这也意味着返回的字符串应当与原 text 字符串的长度相等。返回 重新排列空格后的字符串 。示例1:输入:text = " this

2020-09-20 13:26:23 204

原创 Java内存模型(JMM)概述

Java内存模型(java-memory-model)转自jenkovJava内存模型指定Java虚拟机如何与计算机的内存(RAM)一起使用。Java虚拟机是整个计算机的模型,因此该模型自然包含一个内存模型-AKA Java内存模型。如果要正确设计行为并发的程序,了解Java内存模型非常重要。Java内存模型指定不同线程如何以及何时看到其他线程写入共享变量的值,以及在必要时如何同步对共享变量的访问。原始的Java内存模型不足,因此Java内存模型在Java 1.5中进行了修订。该版本的Java内存模

2020-09-19 21:59:17 167

原创 c++从入门到精通——指向类成员的指针

指向类成员的指针指向成员变量的指针#include <iostream>#include <string>using namespace std;class A{public: A(int param){ mParam = param; }public: int mParam;};void test(){ A a1(100); A* a2 = new A(200); int* p1 = &a1.mParam; int A::*p2 =

2020-09-19 10:07:27 122

原创 全排列 ll (Permutations II)——回溯算法+dfs

全排列 ll——回溯算法给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]代码package permutations_ii;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Arrays;import java.util.Deque;import java.util.List;

2020-09-18 23:57:50 216

原创 c++从入门到精通——虚函数与纯虚函数

文章目录虚函数与纯虚函数概念普通计数器多态计算器其他虚函数与纯虚函数概念首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。普通计数器普通计数器class Calculator{public: void setv1(int v) { this->val1

2020-09-18 21:04:15 272

原创 c++从入门到精通——虚函数表

目录多态的基本概念静态联编与动态联编虚函数表查看Animal的虚函数表查看cat的虚函数表多态的基本概念多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。多态性(polymorphism)提供接口与具体实现之间的另一层隔离,从而将”what”和”how”分离开来。多态性改善了代码的可读性和组织性,同时也使创建的程序具有可扩展性,项目不仅在最初创建时期可以扩展,而且当项目在需要有新的功能时也能扩展。c++支持编译时多态(静态多态)和运行时多态(动态多态),运算符重载和函数重载就是编译时多

2020-09-18 19:30:23 150

原创 leetcode解数独sudoku-solver——二进制解法

解数独sudoku-solverpackage sudoku_solver;import java.util.ArrayList;import java.util.List;/** * sudoku-solver * */public class Solution { private boolean[][] line = new boolean[9][9];// private boolean[][] column = new boolean[9][9]; pri

2020-09-16 12:11:40 355

原创 deepin快速安装mariadb数据库(mysql可参考)

deepin安装mariadb数据库(mysql可参考)mysql-install安装apt-get install mariadb-server密码mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';Query OK, 0 rows affected (0.08 sec)mysql> alter user 'root'@'%' identified wit

2020-09-11 13:45:49 1526

原创 deepin终端命令行缩短显示路径

1,修改.bashrc文件(用户根目录下)vim 打开.bashrc文件,找到如下(PS1所在的行)这行:将上面这行代码中的小写w改为大写的W,保存退出(wq)2,在终端下执行 source ~/.bashrc。PS1:就是用户平时的提示符。echo $PS1 可以查看PS1变量: \h :主机名字\u :当前用户的账号名称\w :完整的工作目录名称。家目录会以 ~代替\W :利用basename取得工作目录名称,所以只会列出最后一个目录...

2020-09-10 22:51:24 390

原创 mac os苹果操作系统安装docker和oracle 11g

文章目录mac os黑苹果操作系统安装docker和oracle 11g第一步,安装brew工具第二步,安装docker概述第一种安装方式,使用 Homebrew 来安装 Docker第二种安装方式,手动下载安装安装portainer (可选)第三步,拉取oracle 11g镜像数据库文件进入容器内部编辑oracle path变量来配置SID和PATH其他navicat-for-oracle工具Docker run 命令命令大全参考mac os黑苹果操作系统安装docker和oracle 11g第一步,

2020-09-09 17:59:11 844

原创 全排列——回溯算法+dfs

leetcode.46.全排列——回溯算法+dfs给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路回溯法 :一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解的话(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。java代码 publi

2020-09-08 12:35:41 356

原创 C语言——指针的加法

打印一下void test7() { int a[4] = { 1, 2, 3, 4 }; printf("a = %p\n\n", a); int* ptr = (int*)(&a + 1); printf("ptr = %p\n", ptr); printf("ptr+1 = %p\n", ptr+1); printf("ptr+2 = %p\n\n", ptr+2);

2020-09-07 22:42:31 2914

原创 347.前k个高频元素——最小堆的运用

前k个高频元素给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案。

2020-09-07 15:09:02 367

原创 排序算法的时间复杂度,空间复杂度,稳定性总结

排序算法的时间复杂度,空间复杂度,稳定性总结

2020-09-07 12:18:46 133

原创 c语言const关键字

文章目录const关键字Const修饰变量指针中的const使用1.指针是const情况2.所指的值是constConst数组实战例题解答参考const关键字转自——C语言中的const用法const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。Const修饰变量我们可以看到一旦被修饰就不能被赋值改变。指针中的const使用指针是一个变量 指针里面有两

2020-09-05 15:03:44 229

大前端Electron框架

electron-fiddle-0.36.4-win32-x64-setup.exe

2024-09-25

Typst快速入门教程

Typst Version 0.11.1 (May 17, 2024)

2024-09-12

kubebuilder v4.0.0

kubebuilder v4.0.0

2024-06-14

Debian12通过Docker安装mariadb数据库(mysql可参考)

Docker Compose version v2.26.1

2024-04-11

debain11安装code-server以非root用户开机启动

code-server_4.4.0_amd64.deb安装包

2023-09-12

Qt tableWidget删除多行

Qt tableWidget删除多行

2023-09-06

HP1010打印机驱动与教程(含Dot4x64).rar

HP1010打印机驱动与教程(含Dot4x64)

2021-03-16

tomcat8-maven-plugin-3.0-r1655215.jar

解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了

2020-10-26

ventoy-1.0.19-linux.tar.gz

deepin系统u盘启动盘制作工具ventoy-1.0.19-linux.tar.gz。可引导deepin系统,windows系统等。操作看https://blog.csdn.net/e891377/article/details/108258000

2020-08-27

jdk-6u161-linux-x64

jdk-6u161-linux-x64.bin是linux的JDK版本,可以安装在linux系统。

2019-02-16

tensorflow windows版

放入本地运行pip install tensorflow的文件名就可以安装成功了。

2018-11-24

angularjs学习笔记本

angularjs学习笔记本,请参加http://blog.csdn.net/e891377/article/details/50519971

2016-06-04

电子面单系统

所谓电子面单,是指使用不干胶热敏纸按照物流公司的规定要求打印客户收派件信息的面单,在行业内也被称为热敏纸快递标签、经济型面单,二维码面单等。电子面单在国外已经成功运用多年,如联邦快递(FedEx)和国际快递(Ups)。而在国内,京东、当当、易迅、一号店等从自建初期就使用了电子面单。 本资源的电子面单系统可以自动生成条形码。

2016-01-28

queryMobile

压缩包里是手机号码归属地查询的app文件和源码。 getMobileCodeInfo 获得国内手机号码归属地省份、地区和手机卡类型信息 输入参数:mobileCode = 字符串(手机号码,最少前7位数字) userID = 字符串(商业用户ID) 免费用户为空字符串; 返回数据:字符串(手机号码:省份 城市 手机卡类型)。

2014-10-11

空空如也

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

TA关注的人

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