自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Consul 配置持久化

当我们在consul的key-value中配置了几个字段访问后的结果:刚刚设置的key-value值便消失不见了此时就要进行 consul 持久化配置.

2024-03-13 17:16:28 901

原创 consul的安装与运行

到Consul官网下载适合版本的Consul。

2024-03-11 11:03:43 284

原创 【Java】JVM 相关的简单介绍(JVM、GC)

1. JVMJVM 的出现是为了实现跨平台一个 JVM 中包含这几个主要部分类加载器 执行引擎(解释执行字节码) 动态内存管理1.1 JVM 中的内存区域划分JVM 中内存来自于操作系统,JVM启动后就会从操作系统申请一大块内存,再针对这个内存划分出一些区域2.2 GC 要回收哪些内存堆 主要回收这里方法区 GC 需要回收方法区的内容!但是方法区空间小,数据失去作用的概率低栈...

2020-12-08 17:57:13 195

原创 Java 面向对象编程——多态

向上转型父类引用子类对象叫向上转型。class Animal{ public String name; public Animal(String name){ this.name = name; } public void eat(){ System.out.println(this.name + "正在吃"); ...

2020-10-15 15:43:01 183

原创 【MySQL】分组操作 group by

group by 把的得到的结果集按照一定的规则分组(可能分成很多个组)构造一个表显示每个岗位的平均工资查看一下都有什么岗位构造组这个操作后会将岗位相同的记录分组到同一个组当中显示每个组的平均工资有了 group by 后就把 role 相同的记录放到同一组当中,avg 就是针对每个组来求平均值havinggroup by 中也可以结合一些条件对数据进行进一步的筛选,不是使用 where 而是 having查找所用平均工资高于...

2020-09-12 22:40:15 353

原创 【MySQL】数据库的约束(主键、外键)

约束:数据库真对数据进行一系列的校验,如果发现插入的数据不符合约束中描述的校验规则,就会插入失败1.约束类型NOT NULL 指示某列不能存储 NULL 值 UNIQUE 保证某列的每行必须有唯一的值 DEFAULT 规定没有给列赋值时的默认值 PRIMARY KEY NOT NULL 和 UNIQUE 的结合,确保某列(或多个列的结合)有唯一标识,有助于更容易快速地找到表中的一个特定数据 FOREIGN KEY 保证一个表中的数据匹配另一个表..

2020-09-12 18:28:51 330

原创 【MySQL】数据库的查询操作

1. 查询表中的所有数据select * from [表名];2. 查询表一行中 N 个列数据的和select [列名1] + [列名2] + ... + [列名n] from [表名];3. 给查询出来的列取一个别名select [列名] as from [表名];4. 查询出来的列进行去重select distinct [列名] from exam_result [表名];去重查找,得到的结果表的行数和原来的可能是不一样的,select 得..

2020-09-06 15:52:18 7907

原创 【操作系统】TCP/IP 协议的三次握手和四次挥手

1. TCP/IP 五层模型应用层、传输层、网络层、数据链路层、物理层如果把整个模型看做是一次网购我们可以这样理解各个层面的作用应用层应用程序直接打交道的协议(实际开发中涉及最多的部分,甚至需要自己设计应用层协议)HTTP就是在应用层上的协议【它就可以看做是一个购物平台,通过这个平台的一些规定和要求,使得卖家和买家之间可以进行交易】传输层负责端到端之间的传输(只关注起点和终点)TCP 协议和 UDP 协议就是在传输层上的协议【就相当于卖家只关注收件人的地址,只需要考.

2020-09-03 17:43:23 411

原创 【Java笔试题】用栈实现队列

使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); /...

2020-09-02 16:42:04 118

原创 用队列实现栈

使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的...

2020-09-02 16:23:49 229

原创 【Java笔试题】有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5:输入: ...

2020-09-02 15:02:24 282

原创 【Java笔试题】杨辉三角

给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pascals-triangle著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解...

2020-08-26 16:10:55 135

原创 【Java】数据结构之泛型

泛型的引入背景:为了能够写一个类/方法就能同时支持多种不同类型的对象所谓的泛型,其实就是从语法层面上对 Object 进行了一个简单的包装,编译过程帮我们自动加上一些编译器的类型检查,自动帮我们完成一些类型转换工作举个例子:定义一个泛型类package com.Test0825;/** * Create with IntelliJ IDEA * Description: * User:Zyt * Date:2020-08-25 */public class SeqL.

2020-08-25 16:34:20 240

原创 【Java】青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-.

2020-08-24 03:16:08 437

原创 【Java】线程安全问题

线程安全问题运行下面代码public static void main(String[] args) throws InterruptedException { Counter counter = new Counter(); Thread t1 = new Thread(){ @Override public void run(){ for (int i = 0; i < .

2020-08-21 21:13:27 203

原创 【Java】顺序表和链表的区别

主要从内存空间和插入删除操作两方面考虑顺序表:优点:顺序表空间连续,支持随机访问;缺点:中间或前面部分的插入删除操作时间复杂度 O(N) 增容的代价比较大(方便查找,不方便插入和删除)链表:优点:任意位置插入删除的时间复杂度为 O(1) 没有增容问题,插入一个开辟一个空间缺点:以节点为单位存储,不支持随机访问(不方便查找,方便插入删除)...

2020-08-21 16:46:02 220

原创 【Java】合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:1->2->4, 1->3->4输出:1->1->2->3->4->4

2020-08-21 16:38:16 300

原创 【Java笔试题】160. 相交链表

编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 .

2020-08-21 15:54:41 146

原创 【Java笔试题】142. 环形链表 II

给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2...

2020-08-21 14:57:54 168

原创 【Java笔试题】回环链表

给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:输入:head = ..

2020-08-21 11:24:52 403

原创 【Java】链表的回文结构

题目描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true解题思路1、先找到链表的中间节点,定义一个 fast 节点和 slow 节点,先让 fast 走两步,然后 slow 和 fast 同时走,当 fast.next 为 null 的时候,slow 就是中间.

2020-08-21 10:54:31 211

原创 【Java】博客管理系统的实现

一、分析需求【先只实现核心内容】注册新用户 登录已有用户 展示博客列表(每一项包含了文章的标题、作者)【点击标题及刽跳转到文章详情页】 文章详情页中,可以看到文章的标题、作者、文章内容,其他评论功能、分类功能等先不考虑 发布新的博客(不考虑富文本编辑-> 嵌入图片、嵌入视频、嵌入代码等) 删除自己的博客二、创建项目 maven app可以参考创建 maven 项目来创建好 maven 项目要注意的是 pom.xml 中需要添加的依赖有两个,一个是 servlet API .

2020-08-20 22:14:08 877

原创 Java 中的插入排序和希尔排序

先把整个数组分成若干数组,分成的组数称为 gap ,初始 gap = 3,同组中的相邻元素下标之差就是 gap针对每个数组分别进行过插排,针对每个分组分别插排之后,虽然此时没有彻底完成最终排序,数组的有序性整体还是提高了,再对 gap = 2 进行插排,重复进行分组插排此时仍然没有差地完成排序,但是有序性又进一步提高了最后再针对 gap =1 进行插排,此时一定能完成最终的...

2020-08-17 23:37:00 76

原创 【Java】删除列表中的重复节点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路先定义一个新的头节点 newHead 做为标志位,再定义一个 tmp 节点负责构造的新链表。然后再定义一个 cur 节点用来遍历原链表。当 cur 不为空时,进入循环,在cur != cur.next 时,让 tmp = cur ,也就是将这个 cur 节点添加到新的头节点.

2020-08-11 23:05:50 363

原创 【Java】链表分割

编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。思路:假想两个线段一左一右,定义一个指针 cur,循环遍历这个链表,对于比 x 大的数以尾插法的方式放入左边线段,剩下的以尾插法的方式放入右边的线段,需要定义bs be 为左边线段的头和尾,as ae 为右边线段的头和尾,最后只需要把 两个线段连起来,be.next = as.next.

2020-08-11 17:25:28 296

原创 【Java】链表中倒数第 K 个节点

输入一个链表,输出该链表中倒数第k个结点。思路:先定义两个指针,快引用 fast 和慢引用 slow,让 fast 先走 k-1 步,当 fast.next 为空的时候 slow 就是倒数第 k 个节点看图说明一下/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public ..

2020-08-11 16:28:58 160

原创 【Java操作系统】线程的中断、等待和休眠

1.中断一个线程结束可能有两种情况:已经把任务执行完了 任务执行了一半,被强制结束1.1 第一种方式 public void run() { while (!isQuit){ System.out.println("我在进行转账"); try { Thread.sleep(500);

2020-08-07 15:51:27 529

原创 【操作系统】线程状态

线程状态作用:辅助线程进行调度通过代码来显示一下各种线程状态public class ThreadDemo1 { public static void main(String[] args) { for (Thread.State state : Thread.State.values()){ System.out.println(state); } }}Java 中线程的状态是通过一个 enum 来表示.

2020-08-07 15:51:06 581 2

原创 【测试开发】selenium的介绍和selenium IDE使用

selenium工具集selenium:免费、开源、轻量级、支持多语言(Java、C#、Python、Ruby……)、支持多平台(web端多种浏览器:Chrome、IE、Firefox、Safari、Opera……)、支持分布式(多个脚本分散到不同的机器上执行)selenium 是一个工具集,selenium1、selenium2、selenium3selenium1:selenium RC,selenium IDE(录制自动化测试脚本),selenium GRID(分布式)selenium

2020-08-06 19:05:55 447

原创 【测试开发】自动化测试的介绍

selenium 是一个工具集,selenium1、selenium2、selenium3一、自动化测试工具介绍jmeter:性能测试工具,可以进行接口测试 loadrunner:性能测试工具 soupui、postman:接口测试 appium:APP 自动化测试工具(IOS/Android) selenium:免费、开源、轻量级、支持多语言(Java、C#、Python、Ruby……)、支持多平台(web端多种浏览器:Chrome、IE、Firefox、Safari、Opera……)、支

2020-08-06 15:36:59 306

原创 【Java操作系统】线程中的 Thread 的常见类和方法

1. Thread 的常见构造方法方法 说明 Thread() 创建线程对象 Thread(Runnable target) 使用 Runnable 对象创建线程对象 Thread(String name) 创建线程对象并命名 Thread(Runnable target,String name) 使用 Runnable 对象创建线程对象,并命名 Thread(ThreadGroup g

2020-08-05 16:14:11 277

原创 【Java操作系统】线程的介绍和创建方法

线程(thread)如果把线程想象成是一个工厂,线程就是若干个流水线:线程其实是包含在进程中的 一个进程中可能会有多个线程 每个线程都有一段自己要执行的逻辑(指令),每个线程都是一个独立的“执行流” 同一个进程中的很多线程之间,是共享了一些资源所谓的“线程”可以理解成一种轻量级“进程”,也是一种实现并发编程的方式,创建一个线程比创建一个进程成本低,销毁一个线程,比销毁一个进程成本低。成本低的原因是,新创建一个线程,不需要给这个线程分配很多新的资源,大部分资源都是和原来线程共享的,如果新创

2020-08-05 13:47:57 305

原创 如何用 JConsole 来观察线程

在运行 JConsole 之前先保证自己的进程代码正在运行中并且没有运行结束,如果代码很快就执行结束了,可以在进程内部加一个死循环例如下面代码:public class Test0804 { static class Mythread extends Thread { @Override public void run() { System.out.println("Hello ,I am a thread!");

2020-08-04 22:06:56 539

原创 线程池中的一些常见参数

介绍一些线程池中的一些常见的参数理解这几个参数,把进程比喻成一个工厂1.corePoolSize:工厂中正式员工的数量2.maximumSize:工程中临时工的数量3.keepAliveTime + unit:临时工允许的空闲时间4.workQueue:工厂接到的订单5.theradFactory:工厂的 HR,负责招人6.handler:表示如果工厂忙不过来该怎么办(任务队列满了)直接异常 交给新加任务的线程来处理 丢弃队列中最老的任务 丢弃新来的任务...

2020-08-03 20:23:58 177

原创 锁策略

1. 锁策略1.1 乐观锁 vs 悲观锁乐观锁:世界大概率是和平的,多个线程竞争一把锁的概率会很低悲观锁:世界大概率是出问题的,多个线程竞争一把锁的概率会很高,恢复出更多的成本来进行锁冲突的处理两种想法没有优劣之分,要根据具体场景来进行使用1.2 读写锁把加锁操作分成了两种:读锁、写锁读锁和读锁之间是没有互斥的(不存在锁竞争),读锁和写锁、写锁和写锁之间才进行互斥如果某个场景下“一写多读”,使用读写锁效率就很高只进行读数据,若果多个线程同时读取一个数据,不会造成线程不安全

2020-08-03 19:54:46 145

原创 【Java笔试题】链表的中间节点

给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.ne...

2020-08-02 22:41:35 121

原创 【Java笔试题】反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof著作权归领扣网络所有。商业转载请联系官方授权..

2020-08-02 22:12:28 211

原创 【Java】链表的基本操作

链表主要是为了弥补一些顺序表的缺点:顺序表的插入删除操作时间复杂度为 O(N) 增容需要申请新空间,拷贝数据,释放旧空间,会有不小的消耗 增容一般都是成2倍增长,会浪费一定的空间为了解决以上问题引入了链表结构,能够做到随用随取链表的概念链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。用图来简单描述一下链表不带头节点的单向非循环链表链表是由节点组成的,每一个节点都是一个 Node 对象,带头节点单向不循环链表...

2020-08-02 22:07:38 1615

原创 【Java】顺序表的操作

顺序表概念:顺序表是一段物理地址连续的存储单元一次存储数据元素的线性结构,一般来说用数组存储。在数组上完成数据的增删改查。静态顺序表适用于确定知道需要存多少数据的场景,顺序表底层是一个数据,但是顺序表本事是一种数据结构。特性能知道放了几个元素 不能跳着放用图形表示如下图顺序表的增删改查操作首先构造一个顺序表public class MyArrayList { public int[] elem;//数组 public int usedSize;//有效的

2020-07-28 18:43:08 296

原创 【Linux】Vim 的基础操作

Vim 不仅仅是一个编辑器,也是一种“文本编辑思想”,是一个地位一直很稳固的经典操作风格大量依赖快捷键,几乎不用鼠标,带来的好处是高效,但是上手难。 扩展能力强,背后支持一系列的编程语言,对 Vim 进行各种花式改造,可以自行 DIY这里不作深入介绍,只介绍一些基本的简单操作Vim 的基本操作1. 打开文件先创建一个文件通过 vim 操作打开文件vim file可以看到如下界面打开文件后不能直接编辑,当进入 Vim 的时候默认是 Normal 模式,这个时.

2020-07-26 20:15:16 70

空空如也

空空如也

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

TA关注的人

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