自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go111 module、goproxy以及结合Goland使用

go moudles:简单点说,go moudles就是golang的包依赖管理。在之前,依赖管理一直使go语言被诟病,go语言从1.11开始支持使用go moudles,从1.13开始强推go moudles。因此,使用go moudles的前提为go语言版本为1.11+

2022-03-26 15:46:16 5289

原创 dom4j使用:使用dom4j解析xml

使用dom4j解析xml实现效果实现实现效果使用dom4j,实现将一个books.xml,解析为book类的对象:1、xml文档2、book类的信息3、转化后的情况实现1、导入dom4j的相关jar包,以及用于单元测试的相关jar包2、xml文档的内容:<?xml version="1.0" encoding="UTF-8"?><books> <book sn="SN12341232"> <name>辟邪剑谱

2021-08-18 22:36:48 375

原创 jQuery实现图片跟随

jQuery实现图片跟随实现效果代码实现效果要实现的功能:* 鼠标进来,显示大图片;* 鼠标出去,隐藏大图片;* 鼠标在大图片里边动,大图片跟着动。代码<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" co

2021-08-17 20:47:45 282

原创 使用jQuery实现展示列表的全展示与精简展示(包含文字加亮的实现)

使用jQuery实现展示列表的全展示与精简展示实现效果代码实现效果(1)列表的全部展示(此时,可以对部分强调内容实现 加亮)(2)列表的精简展示(实现对于部分列表内容的展示)代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.or

2021-08-17 18:15:26 930

原创 使用jQuery实现动态添加和删除行(表格)的操作

使用jQuery实现动态添加和删除行实现效果代码实现效果代码<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Untitled Doc

2021-08-17 14:07:36 2188 1

原创 使用iquery实现全选、全不选、反选功能

实现全选、全不选、反选实现效果代码实现效果代码<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert

2021-08-13 17:50:44 204

原创 使用DOM的方法和属性,实现简单的单击事件

使用DOM的方法和属性,实现简单的单击事件实现的效果代码实现的效果使用DOM的常用的属性,例如childNodes、previousSibling、innerhtml、innerText等;以及DOM的常用方法,例如getelementbyid、getelementbyname、getelementbytagname等,来实现对于下面情景的 单击事件的功能实现。代码实现的完整代码如下:<!DOCTYPE html><html><head><meta

2021-08-12 16:32:49 341

原创 剑指 Offer 04. 二维数组中的查找

题目在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给

2021-06-09 20:58:30 105

原创 查找算法之三:斐波那契查找(黄金分割法)

斐波那契查找思路分析代码实现思路分析FibonacciSearch(也叫黄金分割法)的思路分析:==>实际上,这也是一个基于二分查找(也就是折半查找)的查找算法。只是在计算mid 的值时,加入了斐波那契数列的性质在里边:1、由于斐波那契数列中,后一个元素与前一个元素之比,接近于0.618的黄金分割比例,该查找算法就借助斐波那契数列来帮助每一次mid的确认【mid取的是:无限接近于黄金分割点的位置的坐标】2、因为斐波那契数列的迭代公式为:f(k) = f(k-1) + f(k-2);所以

2021-06-09 18:01:17 458

原创 查找算法之二:插值查找

插值查找思路分析代码实现思路分析插值查找是基于二分查找进行的优化,基本思路与二分查找的一致,只是在进行划分时mid的确定不同:==>插值查找采取的是一种 自适应mid的计算方法:mid = left + (right - left) * (findval - arr[left])/(arr[right] - arr[left])含义:根据findVal 与 arr[left]的差值,在arr[right] - arr[left]中所占据的比例,来确定findVal在待查找序列中可能对应的

2021-06-09 16:32:40 238

原创 查找算法之一:二分查找(递归实现)

二分查找的递归实现思路分析代码实现思路分析1、确定该序列的中间的下标mid:mid = (left + right)/2;2、让需要查找的数findVal 与 arr[mid]进行比较:(1)findVal > midVal,则进行向右递归,查找findVal;递归的边界条件是:mid+1,right(2)findVal < midVal,则进行向左递归,查找findVal;递归的边界条件是:left,mid-1(3)findVal == midVal,则表明找到了待查找的f

2021-06-09 15:54:32 12574 3

原创 计算机网络原理复习(一)------概述

第一章 概述1.1 网络知识概述1.2 互联网概述1.3 互联网的组成1.1 网络知识概述1、三大网络:指的是:电信网络、有线电视网络、计算机网络。“三网融合”:把上述三种网络融合成一种网络,就能够提供所有的上述服务。2、互联网的两个基本特点:连通性和共享;计算机网络最基本的功能:资源共享、通信(数据交换)。3、区分Internet 和 internet:(1)Internet:是具体的互联网。(2)internet:是抽象的概念。(互连网)1.2 互联网概述1、区分计算机网络 和 互连

2021-06-08 23:41:50 1154 1

原创 剑指 Offer 03. 数组中重复的数字

问题找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000分析使用hashmap来对映射关系进行存储=>要存储该数字,以及该数字在数组中出现的次数=>考虑使用集合hashmap,通过key-v

2021-06-08 17:28:20 61 1

原创 剑指 Offer 50. 第一个只出现一次的字符

问题在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = “abaccdeff”返回 “b”s = “”返回 " "限制:0 <= s 的长度 <= 50000分析使用哈希表(HashMap)来存储要求的是:字符串中,第一个只出现一次的字符=>对字符串进行遍历,统计其中的各个字符出现的次数,最后确认第一个只出现一次的字符,即可。因为统计的时候,对容器的要求:既要确定该字符是什么,又要可以记录该字符出现的次数

2021-06-08 15:04:08 81 1

原创 剑指 Offer 35. 复杂链表的复制

题目

2021-06-04 20:42:17 104

原创 剑指 Offer 52. 两个链表的第一个公共节点

题目输入两个链表,找出它们的第一个公共节点。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。思路因为单链表的每个节点都只有一个next域。那么在两个单链表存在公共节点的情况下,在两个链表的第一个公共节点之后,后面的所有节点就都是重合的,不可能再出现分叉。利用两个辅助栈当两个单链表存在公共节点的情况下,从它们的公共尾节点开始向前遍历,最后一个相同的节点,就是它

2021-06-03 21:23:38 110

原创 八大排序算法之七:基数排序

算法思想思想:通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。=>将所有的待比较数值统一为同样的数位长度,数位较短的数前面补0。然后,从最低位开始,依次进行排序(每一位进行一次,一共有多少位,就进行多少次排序)。基数排序的实现思路:用于排序过程的“桶”假设用于排序的数均为正整数,那么在这里设置桶的个数为10。又因为每个桶,实际上也是一个一维数组。所以,定义一个二维数组,来实现排序过程中对于“桶”的要求:int[][] bucket = new int[10

2021-06-03 17:06:51 205

原创 八大排序算法之六:快速排序(以中轴值作为排序基准)

算法思想快速排序是对冒泡排序的一种改进:通过一趟排序,将要排序的数据分割成独立的2部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到整个数据变成有序序列。快排(以中轴数作为基准)的实现:对序列进行处理的操作,目的是:依据选择的基准(这里采用的是中轴值pivot),将序列切分称为两个子序列(因为是依照值进行切分的,所以两个子序列大小不一定相等)具体的实现方式:① 定义两个指针l、r,其中,l的初值为lef

2021-06-03 16:02:52 3897 2

原创 八大排序算法之五:归并排序

算法思想归并的思想归并排序(merge-sort)是利用归并的思想实现的排序算法,该方法采用经典的分治(divide-and-conquer)策略:分治法将问题分(divide)成一些小的问题,然后递归求解。而治(conquer)的阶段则将分的阶段得到的各答案“修补”在一起。=>即:分而治之。实现要点归并算法的实现,分为两个过程:分、合“分”的过程:=>也就是实现递归调用的过程。1)确定递归的终止条件:left >= right只有待划分序列的左侧索引 left ,小于

2021-06-03 09:20:37 108

原创 剑指 Offer 25. 合并两个排序的链表

题目输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * L

2021-06-01 18:52:27 70

原创 八大排序算法之四:希尔(shell)排序----直接插入排序的改进

算法思想:希尔排序的实现思想:希尔排序,也可以称为:缩小增量排序。实际上,就是在直接插入排序的基础上进行优化,对于要进行插入排序的数组,先进行了分组,通过实现分组内的插入排序,让每一组数现在本组内实现有序。然后,通过缩小增量gap(也叫步长)将分组数逐渐减小。=> 因为前面已经实现了:各个分组内的数有序,所以,即使分组的方法改变导致新形成的分组中的数有变化,但是新的分组中的数已经比最初的时候有序了。=> 对于新的分组内的数,进行插入排序。······=> 最终,当gap=

2021-06-01 16:23:24 209

原创 八大排序算法之三:直接插入排序

算法思想直接插入排序的思想:将数组理解为两个列表:有序列表、无序列表有序列表的最初状态,只包含数组中的第一个元素无序列表的最初状态,包含arr[0]之外的其他所有数组元素按照数组的索引递增的顺序,逐渐将无序列表中的元素加入到有序列表中=>外层循环for(int i=1;i<arr.length;i++)对于要进行插入的元素arr[i],进行如下操作:1)暂存arr[i]为insertVal,2)逆向遍历有序列表,直到找到 第一个值小于insertVal的元素,那么,inse

2021-06-01 16:10:00 87

原创 八大排序算法之二:简单选择排序

算法思路选择排序的实现思想:假定实现的是:从小到大的排序在每趟排序中,设置两个变量:min、minIndex。对于n个数据,需要进行n-1趟排序。每趟排序,最终确定一个在本趟排序中最小的数,放在minIndex的位置上(实现只有这两个位置的 交换操作)对于第i趟排序,是从第i+1个数据开始,向后遍历,确定该趟排序中最小的数据并使用min保留其值、minIndex保留它的数组索引值,最终:arr[i]与arr[minIndex]进行交换。算法实现 public static void sel

2021-06-01 15:56:49 90

原创 八大排序算法之一:冒泡排序

算法思路冒泡排序的主要思想:类似于水的泡泡一样,假设是按照从小到大排列,那么,每排一趟,在数组的末尾就有一个大数的位置被确定了。 并且,在每一趟排序的过程中,都只是只能交换相邻的两个元素要点如下:对于n个元素的排序,要进行n-1趟对于第i趟排序,j的限制条件为:j<length-1-i个,因为每一次排序针对第j个数,实际上比较的是第j和第j+1个数的大小关于冒泡的简单优化:* 设置一个flag标志,初始值为false,如果在一趟排序的过程中,进行了“交换相邻元素”的操作,就将该标志的值

2021-06-01 10:24:32 59

原创 剑指 Offer 06. 从尾到头打印链表

问题输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */问

2021-06-01 09:26:42 49

原创 剑指 Offer 18. 删除链表的节点

题目给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后

2021-05-31 17:03:06 58

原创 迷宫回溯问题

回溯算法的经典问题之一:迷宫问题问题说明:解题思路:代码实现:问题说明:左上角为入口,右下角为出口。设置小球寻找路径的策略为:下=>右=>上=>左。编写代码,输出小球寻找到的走出迷宫的路径。解题思路:迷宫回溯问题的解题主要分为两部分:首先需要在main()中,设置迷宫的形状:通过一个二维数组来实现迷宫的存储对于二维数组中的每一个元素arr[i][j],通过设置该元素的值(0、1、2、3),可以表示该元素对应的迷宫中的位置的情况:1:该位置存在挡板,不可以走;

2021-05-30 21:44:22 261

原创 回溯法经典案例:8皇后问题----用一维数组来实现

以前解决8皇后问题,使用的都是二维数组,比较麻烦。最近在看数据结构与算法的时候,学习到了用一维数组解决8皇后问题的解法,下面总结一下:8皇后问题在8*8的国际想起上拜访八个皇后,使其不能相互攻击。即:任意2个皇后,都不能处于同一行、同一列、或统一斜线上,问有多少种摆法?分析这种解决方式的实现,依赖于一个一维数组:int[] arr = new int[max];1、该数组用来存储每个皇后所对应的列数即:val = arr[i] ,val就表示第 i 个皇后(从0 开始计数),放置在第 i 行

2021-05-30 12:47:42 707 1

原创 剑指 Offer 24. 反转链表

题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000其中,链表的结构为:/** * Definition for singly-linked list. * public class ListNode { * int val; * L

2021-05-27 19:52:13 94

原创 逆波兰计算器----输入算式,实现整数的四则运算(包含小括号)

在进行计算时,计算机与人不一样。相比较中缀表达式,它采用后缀表达式计算起来要明显方便许多。下面就用 java + 栈 ,实现:对于输入的算式,转化为对应的后缀表达式,并且计算出算式值 的功能:思路梳理处理的主要思路为:1、将输入的expression(中缀表达式)进行转换 => 中缀表达式对应的ArrayList类的list,便于在由中缀表达式转换为后缀表达式的过程中,进行遍历操作:1.1 需要注意的是:* 1) 在转换的过程中,分为两种情况:* 是运算符,直接add到list中;

2021-05-27 15:54:04 256

原创 逆波兰计算器(后缀计算器)的实现------输入后缀表达式

/*对于输入的逆波兰表达式(后缀表达式)操作的原则如下:1、创建一个栈stack的对象,用来存储从后缀表达式中读取到的数2、处理逆波兰表达式:2.1从左至右扫描表达式,如果遇到 数字,就将数字压入堆栈;如果遇到 运算符,就从数栈中pop()出来栈顶元素、次顶元素:num1、num2。进行相应运算,并将运算的结果压入数栈2.2扫描到expression的最右端时,数栈中保存的数,就是最终的结果*//** 处理的思路为:* 1、将expression先转化为对应的list,方便后.

2021-05-26 21:13:33 83

原创 利用TreeSet实现Comparable、Comparator的两种排序方式(自然排序、定制排序)----使用泛型之后的改进

今天看了看 泛型的使用(基于集合),对于之前的题目,进行一下技术更新,实现:在使用泛型的基础上的、利用TreeSet结构、实现Comparable、Comparator的两种排序方式(自然排序、定制排序)的 存储对象到集合中的操作。具体如下:题目:创建5个employee的对象,并把这些对象放入treeset集合中* 分别按照以下两种方式对接中的元素进行排序:1)使employee实现comparable接口,并按照排序(先创建treeset,并且使用add()加入元素,另外再写一个compar

2021-04-26 18:51:45 465

原创 利用TreeSet实现Comparable、Comparator的两种排序方式(自然排序、定制排序)

最近在看Javase中集合的相关内容,其中TreeSet作为Set接口的实现类之一,采用的存储结构是:红黑树。要求为:1)向TreeSet中添加的属性,要求是相同类的对象;2)在每次通过add()向树中插入元素时,需要先通过 比较(comparato()或者compare()),确保树种不插入相同的元素;这里与Set接口的其他实现类不同,因为Set存储的数据:无序、不可重复,所以在调用add()进行插入操作时,是一定要进行大小的比较的,只不过Set接口的其他两个实现类HashSet、LinkedHas

2021-04-24 10:08:26 495

原创 Long valueOf(String s, int radix)、Long valueOf(String s)区别于用法

Long valueOf(String s,int radix) 与 Long valueOf(String s)这两个重载方法,是包装类Long 中的两个static 静态方法,基本的功能都是将参数String s 转换为对应的long型数(实际上是直接转换为Long 类型的数,然后因为自动拆箱的存在,可以直接当做long型数据来使用)。具体的使用细则如下:(1)valueOf(String s,int radix)中文版的API中是下面这么说明的:即:public static Lon

2021-04-17 09:56:17 797

原创 蓝桥杯----16进制转10进制,Java实现

题目:问题描述  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535题解在Java中,各个整数类型byte、short、int、long,其中int占用的存储空间为4字节,也就是32bit。表示的范围是:-2^31到(2 ^31)-1。然而,本道题中,输入的正16进制数的最大值为FFFF FFFF,即8字节,64bit,对应的值为:2^63。

2021-04-17 09:27:12 579

原创 获取两个字符串中最大相同字串(二)

题目:获取两个字符串中最大相同字串,比如:str1 = “abcwerthelloyuiodef”,str2 = “cvhellobnm”提示:将短的那个串,进行长度依次递减的字串与较长的字串进行比较题解:这里分析 两个字符串有多个最大相同子串的情况:(1)看一下,“只有一个最大相同子串的情况”:/** 将短的那个串,进行长度依次递减的字串与较长的字串进行比较 外层循环控制的是:一共可以length-1进行多少次(第一次不进行-1,直接比较)*/ for (int i = 0

2021-04-15 23:22:26 580

原创 获取两个字符串中最大相同字串(一)

题目获取两个字符串中最大相同字串,比如:str1 = “abcwerthelloyuiodef”,str2 = “cvhellobnm”提示:将短的那个串,进行长度依次递减的字串与较长的字串进行比较题解这里先分析 两个字符串只有一个最大相同子串的情况:(1)思路分析:只有一个最大相同最子串的情况下:---->跟找最大公约数的算法类似:先确定str1、str2哪个更短一下, 拿短的去比较深蓝色文字比较的具体情况为:假设有:str1 = “abcwerthelloyuio

2021-04-15 21:26:34 1096

原创 字符串查找----获取一个subStr在mainStr中的出现次数(Java实现)

题目获取一个字符串,在另一个字符串中,出现的次数:例如,ab在abkkcadkabkebfkaabkskab中出现的次数(subStr中不包含重复字符的情况)题解这里解决的是substr中不存在相同字符的情况:*利用string的indexof()的重载来解决:具体的代码实现:import java.util.Scanner;public class Present { public static void main(String[] args) { /* * 本题是简

2021-04-15 20:09:42 184

原创 字符串部分反转

题目:将一个字符串进行反转。将字符串中指定部分进行反转。例如,将abcdefg反转为:abfedcg题解:题目不算难,只是对于String的一个简单应用,但是对于该题目,可以实现一题多解:将主要的功能模块抽离出来,main()只实现对于功能方法的调用即可:public static void main(String[] args) { String str = "abcdefg"; StringDemo stringDemo = new StringDemo(); Str

2021-04-15 19:31:51 806

原创 java如何解决线程安全的问题,有几种方式?并对比几种方式的异同

总述:java利用线程的同步,来解决线程安全问题。主要的方式为两种:sychronized方式,和lock方式。其中synchronized方式,包含同步同步代码块 和 同步方法。synchronized方式包含 同步代码块 (包住操作共享数据的代码)和 同步方法(方法体是操作共享数据的代码块),两个方面:(1)不同:同步监视器:<1>同步代码块:需要显式地声明同步监视器,原则上,任何一个类的对象都可以作为同步监视器,只要满足“多个线程必须共用同一把锁”,即可。简单地(不再另外实

2021-04-15 16:06:50 744 1

开发团队调度系统.zip

这个系统的主要任务是:从已经给定的公司员工的列表中,选择一定数目(设定的是5人)的员工,加入到 软件开发团队中。 其中,公司的员工股分为不同的种类:employee(普通员工)、programmer(程序员)、designer(设计师)、architect(架构师)。 对于要加入 软件开发团队 中的人,除了总人数设置的有限制之外,还要求:最多有3个程序员(programmer),最多有2个设计师(designer),最多有1个架构师(architect),并且不能有普通员工(employee)。 所以,在向 软件开发团队 中添加公司员工的时候,实际上是有诸多限制的。并不是简单地加进去就可以。

2021-04-07

空空如也

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

TA关注的人

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