自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HTTP协议和Fiddler

HTTP概念HTTP请求HTTP响应Fiddler概念HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议.HTTP 往往是基于传输层的 TCP 协议实现的. (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP实现)HTTP请求请求的格式:首行:方法类型 URL 版本号请求头:键值对的存储方式,每个键值对占一行,键和值用冒号空格分割空行:用来分割请求头和请求正文。请求正文:此内容是可选项HTTP响应响应格式:

2022-02-25 19:09:57 2284 19

原创 浅谈线程池

线程池线程池的使用场景线程池的好处线程池的创建线程池的七个参数拒绝策略(四种)举例线程池的使用场景在方法中直接new一个线程,当如果频繁的调用这个方法,那么就会创建很多线程,这样不仅会消耗系统资源,还会降低系统的稳定性,极其容易搞崩服务器。所以就需要用到线程池。线程池的好处1.响应速度的提高(任务不需要等待线程的创建,可以直接执行)2.系统资源消耗降低(重复利用已经创建的线程)3.线程的可管理性(使用线程池进行统一分配,调优和监控)线程池的创建这是几个java自带的功能线程池,已经封装好的,

2022-02-09 15:48:50 507 11

原创 二叉树进阶题------二叉树的构建及遍历;二叉搜索树转换成排序双向链表;二叉树创建字符串

一.二叉树的构建及遍历二.二叉树搜索树转换成排序双向链表思路代码三.二叉树创建字符串一.二叉树的构建及遍历二.二叉树搜索树转换成排序双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表(要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继)思路首先我们知道二叉搜索树的一个特点,左子树所有节点小于根节点,根节点小于右子树所有节点。这一题的突破口就是,中序遍历,其中序遍历是一个有序数组。递归解

2022-02-07 15:43:36 212 10

原创 MySQL 事务

事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。事务的四大特性(ACID)原子性(Atomicity):一个事物是一个不可分割的单位,要么全都执行,要么都不执行;一致性(Consistency):事务执行前后,数据处于合法的状态;持久性(Isolation):事务执行完后,数据的修改是持久的,不会因为其他操作或故障而对其产生影响;隔离性(Durability):多个事务并发执行的,事务之间不互相干扰。假如事物的一个操作整体(动作A,B),动作A,执行完了,动作B,执行

2022-01-01 13:33:22 2648 20

原创 堆排序;快速排序;归并排序

快速排序算法堆排序快速排序递归非递归归并排序递归非递归堆排序时间复杂度:0(N*log(N))空间复杂度:0(1)稳定性:不稳定private static void heapSort(int[] arr) { //建堆 crearHeap(arr); for (int i = 0; i < arr.length-1; i++) { int heapSize=arr.length-i; swap(arr,he

2021-12-29 21:08:22 1074 16

原创 HashMap的put()方法的再理解

一.创建这个相信大家也都知道怎么使用。今天就深入理解一下这里的底层原理。首先HashMap在java中,创建出来是一个数组,然后数组上存放的元素是一个链表。二.put()进入底层源码看一下。HashMap,在添加第一个元素的时候创建一个默认2的幂的数组。也就是16,这个参数也可以你自己设置。但是一定是2的幂,假如new HashMap(30),那么只会创建一个32大小的数组。计算出元素的hashcode,放到指定位置,看数组中是否有元素,无元素直接放到数组元素上,有元素的话则进行(jdk

2021-12-25 17:21:42 1483 17

原创 Java练习题 07

1. 以下哪些方法是Object类中的方法正确答案: A B C D 你的答案: B C D (错误)A.clone()B.toString()C.wait()D.finalize()2. 类之间存在以下几种常见的关系:正确答案: A B C 你的答案: C D (错误)A.“USES-A”关系B.“HAS-A”关系C.“IS-A”关系D.“INHERIT-A”关系解释:USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码

2021-12-20 17:12:44 427 18

原创 数组中数字出现的次数

这里就把这一类出现过的问题统一解决一下数组中数字出现的次数I.一个整型数组nums中,其他数出现两次,只有一个数出现了一次。思路代码II.一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。思路代码III.在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。思路代码I.一个整型数组nums中,其他数出现两次,只有一个数出现了一次。思路相对简单,我们直接可以想到用异或的方式解决。因为我们知道a^a=0a^0=a所以可以达到很好的去重效果。代码public i

2021-12-05 11:56:01 692 7

原创 二叉树进阶题------前序遍历和中序遍历构造二叉树;中序遍历和后序遍历构造二叉树

根据前中后遍历数组构建二叉树一.根据一棵树的前序遍历与中序遍历构造二叉树思路代码二.根据一棵树的中序遍历与后序遍历构造二叉树思路代码一.根据一棵树的前序遍历与中序遍历构造二叉树输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。思路首先我们可以知道通过前序遍历和中序遍历,就可以知道整个二叉树的结构了。代码private int index=0; public TreeNode buildTree(int[] pr

2021-12-03 13:14:49 775 4

原创 二叉树进阶题------最近公共祖先

最近公共祖先思路代码二叉树进阶题给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。(最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”)p 和 q 均存在于给定的二叉树中。思路自上而下的深度遍历DFS。理解下面这个图,然后看代码注释。代码 public TreeNode lowestCommonAncestor(TreeNode root, TreeNode

2021-12-01 20:00:17 520 7

原创 二叉树 基础题解

二叉树基础题一.相同的树思路代码二.另一棵树的子树思路代码三.二叉树的最大深度思路代码四.平衡二叉树思路代码五.对称二叉树思路代码这些问题都有一个类TreeNode。 public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val,

2021-11-13 17:17:56 727 7

原创 二叉树的遍历(递归+迭代)

二叉树的遍历一.前序遍历思路代码递归迭代二.中序遍历思路代码递归迭代三.后序遍历思路代码递归迭代四.层序遍历思路代码递归迭代一.前序遍历思路代码递归public static void preOrder(Node root){ if(root==null){ return; } System.out.print(root.val+" "); preOrder(root.left); preOrd

2021-10-02 17:26:52 547 9

原创 回文链表;相交链表;合并两个有序链表(递归+迭代);

链表典型例题一.相交链表问题思路代码第一种思路第二种思路二.合并两个有序链表问题思路代码迭代递归三.回文链表问题思路代码一.相交链表问题两个单链表的头节点 A 和 B ,找出并返回两个单链表相交的第一个节点。(如果没有交点,返回 null)思路第一种简单思路(好理解,代码写的相对多):先遍历A,B 然后记录下A,B的长度之差len。让相对长的链表先走 len 步,那么A,B此时就都在统一起跑线上了。再统一向后走,步调一致,然后判断是否存在相交点。第二种思路(代码相对简单好理解):如下图如果相

2021-08-25 19:06:50 311 10

原创 返回中间节点;返回倒数k节点;判断是否为环形链表(返回入环第一个节点)

今天我们使用典型的快慢指针解决这几个典型问题快慢指针典型例题一.返回中间节点问题思路代码二.返回倒数k节点问题思路代码三.判断是否有环形链表问题思路代码如果要返回其环的第一个节点问题思路代码一.返回中间节点问题给定一个头结点为 head 的非空单链表,返回链表的中间结点。(如果有两个中间结点,则返回第二个中间节点)思路这里我们设置两个指针,slow和fast,一个走一步,一个走两步,等fast走完链表,那么slow就在中间节点。这里比较简单也好想,我就不画图了。一些小细节,我也在代码里解释到了

2021-08-22 17:35:50 462 14

原创 翻转链表 (无傀儡节点,递归+迭代)

反转链表问题思路代码迭代递归问题给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。如 1->3->5->7->9,翻转之后:9->7->5->3->1思路因为不是数组结构,不能使用双指针,从两头向中遍历翻转(error);所以我们只能通过改变next域的方向来翻转。代码解释都在注释中。迭代public ListNode reverseList(ListNode head) { //为链表空,直接返回

2021-08-18 13:36:37 881 5

原创 Java练习题 06

**01.**在java中,无论在何处调用,使用静态属性必须以类名做前缀。正确答案: B 你的答案: B (正确)A.正确B.错误1.如果是本类使用,可以直接就用静态变量名。2.如果是其他类使用,可以使用类名来调用,也可以创建一个实例对象来调用。3.如果静态变量所在的类是静态类,那么不管在本类里或者在其他外部类,都可以直接使用静态变量名。

2021-08-17 23:55:02 304

原创 移除链表元素(无傀儡节点,递归+迭代)

移除链表元素问题思路代码问题一个单链表(无傀儡节点/头结点),删除指定的所有元素。如 :1->3->5->7->5->9 删除5之后;变为:1->3->7->9思路可以用递归,但是空间复杂度高。所以使用迭代。遍历一次链表便删除所有指定节点。使用两个两个指针 cur 和 prve 。基本删除思路如图片所示。还要考虑一些细节,没有判断头结点是否删除。所有写到代码注释里面了。代码如果代码没懂,多画图理解一下就会明白。public Li

2021-08-15 14:49:55 543 3

原创 重载误区!!!可以不在一个类中!!!

今天纠正一个重载(Overload)误区。 定义代码演示注意事项定义网上很多资料介绍重载的定义都是:1.发生在同一个类中,2.方法名必须完全相同3.参数列表必须不同。首先这里有极大的误区,重载发生在一个类中,这是错误的,可以不发生在一个类中。来自oracle官网文档的定义:第一段翻译:如果一个类的两个方法(无论是在同一个类中声明的,还是都由一个类继承的,还是一个声明后继承的)具有相同的名称,但签名不是覆盖等效的,那么该方法名被称为重载。代码演示平常的重载:下面展示一些 内联代码片

2021-08-02 20:55:46 2480 3

原创 负数的位移(右移)

这里只是针对 右移。(左移对负数,正数 的影响不大,都只需要右边补0即可。)首先 我们看到的数,都是以二进制的形式在计算机下操作的。并且位运算符的操作对象是补码。正数: 原码=反码=补码负数: 原码 ----> 反码 (取反) ---->补码 (+1)如整型 int a =10;0000 0000 0000 0000 0000 0000 0000 1010 (这个是原码)因为是正数,所以可以直接操作进行位移。以负数进行演示:计算结果:1000 0000 000

2021-07-27 20:10:03 4873 3

原创 Java入门第一个程序,以及一些建议

当时给一个初学者解决问题,我觉得突然想写这篇文章,给初学者提供一些建议。编辑,编译,运行配置环境变量的检验编辑编译运行写第一个程序,拿典型的例子来说,就是我们的HellowWorld。配置环境变量的检验首先需要需要JDK,目前推荐初学者使用1.8版本(JDK8),安装与配置环境变量,网上基本都有教程,按着来就可以了。使用java 和javac ,这两个命令就可以验证你环境变量是否配置成功。编辑创建一个记事本,(千万不要一上手就是各种集成环境下写代码,不要使用eclipse,IDEA等)

2021-07-11 13:52:10 204 1

原创 Java练习题 05

1. 下面关于JAVA的垃圾回收机制,正确的是( )正确答案: B 你的答案: B (正确)A.当调用“System.gc()”来强制回收时,系统会立即回收垃圾B.垃圾回收不能确定具体的回收时间C.程序可明确地标识某个局部变量的引用不再被使用D.程序可以显式地立即释放对象占有的内存java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建

2021-07-11 12:33:44 1736 1

原创 深入了解一些字符串函数,内存函数

我们知道c语言中是没有字符串类型的,字符串通常放在常量字符串中 或者 字符数组中。char s1[]="abc"; //结尾有'\0' ; 字符串常量适用于那些对它不做修改的字符串函数char s2[]={'a','b','c'}; //结尾没有'\0'当使用一些库函数的时候,如果我们能了解它们的内部,那么我们便一定可以熟练掌握运用它们。1.strlen()求字符串长度函数.#include <string.h>#include <stdio.h>vo

2021-06-10 22:57:26 668 2

原创 汉诺塔 (Tower of Hanoi)java实现

汉诺塔是典型的递归题的代表,今天就用java语言来实现。首先,我们是得知道规则,大圆盘必须在小圆盘下面,一次只能一个圆盘。这样我们就可以构思了。思路:以三个圆盘为例这样就实现了。。代码实现:public class Hanoi { //从site1移到site2 public static void move(char site1,char site2){ System.out.print(site1+" ->"+site2+" "); }

2021-05-28 18:34:47 1301 3

原创 深入C语言中数据的存储

深度剖析数据在内存中的存储

2021-05-25 23:47:01 616 10

原创 Java练习题 04

1. 下面关于volatile的功能说法正确的是哪个正确答案: B C 你的答案: B C (正确)A.原子性B.有序性C.可见性D.持久性synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性volatile到底做了什么:1.禁止了指令重排2.保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量值,这个新值对其他线程是立即可见的3.不保证原子性(线程不安全)synchronized关键字和volatile关键

2021-05-16 14:23:23 979

原创 简单扫雷 游戏 (C语言实现)

今天实现一个简单的游戏,扫雷,依然使用数组知识,通过c语言实现。依然建议,写一个程序,要先想好,再下手,很多事情也是这个道理。首先看一下扫雷的思维导图:理想的棋盘所以到这我们应该有大致的思路了需要三个文件game.h 存放函数声明,头文件,宏定义game.c 实现扫雷的函数功能test.c 测试游戏二话不说,直接上代码game.h 的代码#pragma once//头文件#include <stdio.h>#include <stdlib.h&

2021-05-04 17:37:12 1170 6

原创 简单三子棋 游戏 (C语言实现)

实现一个三子棋:需要三个文件test.c 测试游戏game.c 游戏的实现game.h 相关游戏函数的声明,符号声明,头文件第一部分 (game.h)游戏功能函数的的声明头文件#pragma once//头文件的包含#include <stdio.h>#include <stdlib.h>#include <time.h>//符号的定义#define ROW 3#define COL 3//函数的声明//初始化棋盘

2021-04-25 20:39:10 456 5

原创 Java练习题 03

1.三个基本元素:1.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可

2021-04-02 00:13:28 533

原创 Java练习题 02

1. 以下JAVA程序代码的输出是public static void main(String args[]) {System.out.println(14^3);}正确答案: B 你的答案: A (错误)A.2744B.13C.17D.11按位或 |按位且 &按位取反 ~按位异或 ^逻辑与 &&逻辑或 ||非 !左移<<:补0,相当于乘以2右移>>:补符号位,相当于除以2无符号右移>>

2021-03-01 16:20:25 950 1

原创 Java练习题 01

记录一些题1.以下哪种方式实现的单例是线程安全的?正确答案: A B C D 你的答案: A B C D (正确)A.枚举B.静态内部类C.双检锁模式D.饿汉式解释:1.饿汉式(线程安全,调用效率高,但是不能延时加载); 2.懒汉式(线程安全,调用效率不高,但是能延时加载(synchronized 和 volatile 保证懒汉式单例模式的线程安全)); 3.Double CheckLock实现单例:DCL也就是双重锁判断机制(由于JVM底层模型原因,偶尔会出问题,不建议使用); 4.静态

2021-02-21 16:10:01 444 3

原创 MySQL 忘记密码

最近在数据库端遇到的一个问题,对于忘记密码确实很无奈;查了很多资料许多都没有用;千万不要尝试删除数据库,这会很麻烦的;忘记MySQL数据库密码就进不去数据库,也就无法修改密码,解决方法如下:1:打开cmd命令符,先关闭正在运行的数据库,输入如下命令:net stop mysql2:打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址3:输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。注意输入此命令之后命令行就无法操作

2020-11-26 19:26:39 10322

原创 Java 单例模式

定义:确保一个类只有一个实例,并提供该实例的全局访问点。好处:有些实例,全局只需要一个就够了,使用单例模式就可以避免一个全局使用的类,频繁的创建与销毁,耗费系统资源。第一种:饿汉模式(线程安全)public class Single2 {private static Single2 instance = new Single2();private Single2(){ System.out.println("Single2: " + System.nanoTime());}publ

2020-10-30 15:48:25 2209 4

原创 酒店管理系统代码.java

发布一个酒店管理系统代码一个酒店管理系统要做到的基础操作有哪些?1.房间状态的查询2.预定入住3.退房package com.lh1029.hotel;public class Room { //房间编号 private String id;

2020-09-20 23:29:18 5123 1

原创 属性选择器 CSS

属性选择器:[attribute] 选择器用于选取带有指定属性的元素。[attribute=value]选择器用于选择带有指定值属性的元素<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>LH的代码</title> <style> [class="Y"]{ background-colo

2020-08-29 19:59:08 358

原创 了解相对路径与绝对路径

今天聊一聊相对路径,与绝对路径的问题。相对路径(Relative Path):硬盘中,指某个文件的路径和别的文件的路径关系,通常从别的文件位置开始到目标文件的位置。绝对路径(Absolute Path):文件在硬盘中真正存在的绝对位置,通常是从盘符开始的路径,直接到达目标位置。为什么相对路径用的多?因为绝对路径不利于搜索引擎表现,相对路径在搜索引擎中表现良好,所以一般使用相对路径较多!如何表示相对路径和绝对路径?首先需要我们知道,之前Unix与Linux系统使用 “/” 来分割路径,Windo

2020-08-11 16:56:50 698

原创 图片合成器.c

*****************************************************/ *** 图片合成器 *** /#include <stdio.h>#include <stdlib.h>int main (void){ FILE *f_pic, *f_file, *f_finish; char ch,pic_name[20], file_name[20], finish_name[20]; printf("输入需要合成的图片和文件名称\

2020-07-30 14:07:38 359 1

原创 文件操作 c

文件使用方式含义r只读,为输入打开一个文本文件w只写,为输出打开一个文本文件a追加,向文本文件尾增加数据rb只读,为输入打开一个二进制文件wb只写,为输出打开一个二进制文件ab追加,向二进制文件尾增加数据r+读写,为读取或写入打开一个文本文件w+读写,为读取或写入建立一个新的文本文件a+读写,从文件中读取或写入数据rb+读写,为读或写打开一个二进制文件wb+读写,为读或写建立一个新的二进制文件ab+...

2020-07-17 18:41:20 970

原创 位运算 取指定位与大小写字母转换应用

概念:位运算是指按二进制进行的运算。

2020-06-04 12:35:25 611 2

空空如也

空空如也

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

TA关注的人

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