- 博客(67)
- 收藏
- 关注
原创 数据结构----顺序表应用
1、顺序表逆置/*将顺序表逆置*/void convertList(SeqList *l) { int i; int length = (l->size) / 2; printf("length:【%d】\n", length); printf("l->size:【%d】\n", l->size); DataType temp;//暂放中间值 for (i = 0; i < length; i++) {//相互交换 int len = l->size -.
2022-01-15 12:38:26
563
原创 请假时间计算----开始时间不是17点之后算一天,排除周日和节假日
public String calLeaveDays(Date startTime, Date endTime, Integer vacateType) {// Integer vacateType;//请假类型 4是产假 if (vacateType==null) vacateType=6; int leaveDays = 0; //从startTime开始循环,若该日期不是节假日或者不是周六日则请假天数+1 Date fla
2021-12-30 14:11:59
898
原创 java----多线程下的单例模式
方法一public class Test { private static Test t; public Test() { } private static synchronized Test getTest(){ if (t==null){ return new Test(); } return t; }}特点虽然是多线程安全的,但是每次使用getTest方法都需要进行同步,因此,效
2021-10-27 22:15:04
69
原创 java----观察者模式
观察者模式描述:观察者模式(也称为发布/订阅模式)提供了避免组件之间紧密耦合的另一种方法,它将观察者和被观察的对象分离开。在该模式中,一个对象通过添加一个方法(该方法允许另一个对象,即观察者注册自己)使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者收到消息后所执行的操作与可观察的对象无关,这种模式使得对象可以相互对话,而不必了解原因Java语言与C#语言的事件处理机制就是采用的此种设计模式。类图/*========主题接口=====*/interface
2021-10-26 13:51:34
166
原创 Java----解决src下面的xml文件过滤问题
在pom文件中加上<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes&g
2021-10-14 13:32:47
171
原创 Java----socket通信
服务器端package com.xbc.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * 服务器 */public class Server { public stat
2021-09-29 14:10:41
85
原创 面试难点题解析----截取字符串
题目:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,例如“人ABC”4,应该截为“人AB”,输入“人ABC们DEF”,6,应该输出为“人ABC”而不是“人ABC+们的半个”。解析:在Java语言中,默认使用Unicode编码方式,即每个字符占用两个字节,因此,可以用来存储中文。虽然String是由char所组成的,但是它采用了一种更加灵活的方式来存储,即英文占用一个字符,中文占用两个字符,采用这种存储方式的一个重要作用就是可以减少所需的存储空间
2021-09-25 22:47:38
145
原创 面试难点题解析----请找出文件a与文件b中共同的url
问题:给定a、b两个文件,各存放50亿个url,每个url各占64B,内存限制是4GB,请找出文件a与文件b中共同的url。**如果没有内存的限制,可以首先将文件a中的url全部读入内存,放到HashSet中,接着从文件b中读取url,每读取一个url,就判断这个url在HashSet中是否存在,如果存在,那么这个url就是这两个文件共同的url,否则不是。**由于题目要求内存大小只有4GB,而每个文件的大小为50亿64B=564GB=320GB,远远超出了内存限制,因此,无法一次将所有url读取到内存
2021-09-25 21:14:33
263
原创 面试难点题解析----合并两个有序链表
方法一:递归法具体步骤如下所示:1)比较链表1(head1)和链表2(head2)的第一个结点数据,如果head1.data<head2.data则把结果链表头结点指向链表head1中的第一个结点。2)对剩余的链表head1.next和链表2(head2)再调用同样的方法,比较得到结果链表的第二个结点,添加到合并后列表的后面。3)一直递归调用步骤2),直到两个链表的结点都被加到结果链表中。public class Test { //递归函数 public static Node me
2021-09-25 20:32:30
93
原创 面试难点题解析----两种单例模式的实现方法
两种单例模式的实现方法,并说明这两种方法的优缺点。1、懒汉式public class Test{private static Test t = null;private Test(){} public static Test getInstance(){ if (t==null){ t = new Test(); } return t; } }2、饿汉式public class Test{ private static Test t = new Test();
2021-09-25 17:22:55
102
原创 数据结构----二路归并排序
二路归并排序的基本思想设数组a中存放了n个数据元素,初始时把它们看成是n个长度为1的有序子数组,然后从第一个有序子数组开始,把相邻的有序子数组两两合并,得到[n/2]个长度为2的新的有序子数组(当n为奇数时,最后一个新的有序子数组的长度为1)。对这些新的有序子数组再进行两两归并。如此重复,直到得到一个长度为n的有序数组为止。一次二路归并排序算法的目标是把若干个长度为k的相邻有序子数组从前、向后进行两两归并,得到个数减半的长度为2k的相邻有序子数组。算法设计中要考虑的一个问题是:若元素个数为2k的整数倍,
2021-07-07 11:13:46
15736
1
原创 数据结构----快速排序
快速排序算法的基本思想快速排序是一种二叉树结构的交换排序方法。设数组a中存放了n个数据元素,low为数组的低端下标,high为数组的高端下标,从数组a中任取一个元素(通常取a[low])作为标准,调整数组a中各个元素的位置,使排在标准元素前面元素的关键字均小于标准元素的关键字,排在标准元素后面元素的关键字均大于或等于标准元素的关键字。这样一次过程结束后,一方面将标准元素放在未来排好序的数组中该标准元素应在的位置,另一方面将数组中的元素以标准元素为中心分成了两个子数组,位于标准元素左边子数组中元素的关键字
2021-07-06 19:12:17
1173
原创 数据结构----冒泡排序
冒泡排序的基本思想设数组a中存放了n个数据元素,循环进行n-1趟如下的排序过程:第1趟时,依次比较相邻两个数据元素a[i].key和a[i+1].key(i=0, 1, 2, …, n-2),若为逆序,即a[i].key>a[i+1].key,则交换两个数据元素,否则不交换,这样数值最大的数据元素将被放置在a[n-1]中;第2趟时,数据元素个数减1,即数据元素个数为n-1,操作方法和第1趟的类似,这样整个n个数据元素集合中数值次大的数据元素将被放置在a[n-2]中;当第n-1趟结束时,整个n个数据元
2021-07-06 11:42:44
260
原创 数据结构----堆排序
堆排序思想在直接选择排序中,待排序的数据元素集合构成一个线性结构,要从有n个数据元素的线性结构中选择出一个最小的数据元素需要比较n-1次。如果能把待排序的数据元素集合构成一个完全二叉树结构,则每次选择出一个最大(或最小)的数据元素只需比较完全二叉树的深度次,即lbn次,则排序算法的时间复杂度就是O(nlbn)。这就是堆排序的基本思想。大根堆的定义设数组a中存放了n个数据元素,数组下标从0开始,如果当数组下标2i+1<n时有a[i].key≥a[2i+1].key,当数组下标2i+2<n时有a[i].k
2021-07-05 16:04:21
522
原创 数据结构----选择排序
直接选择排序的基本思想从待排序的数据元素集合中选取关键字最小的数据元素并将它与原始数据元素集合中的第一个数据元素交换位置;然后从不包括第一个位置上数据元素的集合中选取关键字最小的数据元素,并将它与原始数据元素集合中的第二个数据元素交换位置;如此重复,直到数据元素集合中只剩一个数据元素为止。算法设计...
2021-07-05 08:53:25
136
2
原创 数据结构----希尔排序
希尔排序的基本思想把待排序的数据元素分成若干个小组,对同一小组内的数据元素用直接插入法排序;小组的个数逐次减少;当完成了所有数据元素都在一个组内的排序后,排序过程结束。希尔排序又称作缩小增量排序。希尔排序是在分组概念上的直接插入排序,即在不断减少组的个数时把原各小组的数据元素插入到新组中的合适位置上。在讨论直接插入排序算法的时间复杂度时,我们曾指出,原始数据元素集合越接近有序,直接插入排序算法的时间效率越高。这个结论是希尔排序算法能够成立的基础。希尔排序算法把待排序数据元素分成若干小组,在小组内用直接插
2021-06-29 18:48:01
130
1
原创 数据结构----直接插入排序
直接插入排序的基本思想顺序地把待排序的数据元素按其关键字值的大小插入到已排序数据元素子集合的适当位置。子集合的数据元素个数从只有一个数据元素开始,逐次增大,当子集合大小最终和集合大小相同时,排序完毕。设待排序的n个数据元素存放在数组a中,初始时,子集合a[0]已排好序;第一次循环准备把数据元素a[1]插入到已排好序的子集合中,这只需比较a[0].key和a[1].key,若a[0].key≤a[1].key,则说明序列已有序,否则将a[1]插入到a[0]之前,这样子集合的大小增大为2;第二次循环准备把数
2021-06-29 17:37:42
455
原创 数据结构----哈夫曼编码
一、基本概念在一棵二叉树中,我们定义从A结点到B结点所经过的分支序列为从A结点到B结点的路径;定义从A结点到B结点所经过的分支个数为从A结点到B结点的路径长度;定义从二叉树的根结点到二叉树中所有叶结点的路径长度之和为该二叉树的路径长度。如果二叉树中的叶结点都带有权值,则可以把这个定义加以推广。设二叉树有n个带权值的叶结点,定义从二叉树的根结点到二叉树中所有叶结点的路径长度与相应叶结点权值的乘积之和为该二叉树的带权路径长度(WPL),即:式中,wi为第i个叶结点的权值,li为从根结点到第i个叶结点的路径
2021-06-28 17:49:50
3395
原创 数据结构----线索二叉树
线索二叉树在遍历二叉树时都没有把遍历时得到的结点的后继结点信息和前驱结点信息保存下来,因此,不能像操作双向链表那样操作二叉树。当按某种规则遍历二叉树时,保存遍历时得到的结点的后继结点信息和前驱结点信息的最常用的方法是建立线索二叉树。1.线索二叉树的概念和存储结构对二叉链存储结构的二叉树分析可知,在有n个结点的二叉树中必定存在n+1个空链域。我们希望能利用这些空链,建立起相应结点的前驱结点信息和后继结点信息。我们做如下规定:当某结点的左指针为空时,令该指针指向按某种方法遍历二叉树时得到的该结点的前
2021-06-28 16:13:45
246
原创 jdbc----悲观锁的设计
设计两个线程,一个线程对数据设置为悲观锁,并在提交之前暂停,另一个线程去操作同一个数据乐观锁:多个线程对一个数据进行修改,刚开始线程A,B都读到版本是1.0,线程A修改成了1.2,此刻线程B想修改成1.1,再次读的时候发现版本是1.2,直接回滚。悲观锁:对一个数据加了乐观锁(即select后加了for update),其他线程对此数据进行修改时,需要等待前一个线程完成之后才能进行将数据设置为悲观锁package com.Jdbc;import com.utils.JdbcUtils;
2021-05-07 18:44:23
173
原创 jdbc----提取公共类
package com.utils;import java.io.IOException;import java.io.InputStream;import java.sql.*;import java.util.Properties;public class JdbcUtils { private static String driver = null; private static String url = null; private static String u
2021-05-07 17:38:54
168
原创 jdbc----事务处理(三个重点代码)
重点的三个代码1./** 将事务设置为手动提交,即开启了事务 /conn.setAutoCommit(false);2. /* 以上程序执行完成,事务结束 /conn.commit();3. /* 回滚事务 */conn.rollback();package com.Jdbc;import java.sql.*;/** * 事务处理 */public class test08 { public static void main(String[] args) {
2021-05-07 17:11:18
179
原创 jdbc----Statement应用场景
package com.Jdbc;import java.sql.*;import java.util.Scanner;public class test03 { public static void main(String args[] ){ Connection connection = null; Statement statement = null; ResultSet resultSet = null; System
2021-05-07 15:01:29
121
原创 jdbc----实现用户登录(Statement)
package com.Jdbc;import javax.naming.ldap.HasControls;import java.sql.*;import java.util.HashMap;import java.util.Map;import java.util.Scanner;public class test05 { public static void main(String[] args) { //初始化数据,获取登录名和密码 Map &
2021-05-07 13:51:35
174
原创 java----jdbc(利用资源绑定ResourceBundle)
package com.Jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.util.ResourceBundle;//1.注册驱动//2.获取数据库连接//3.获取数据库执行对象//4.执行sql语句//5.返回结果集//6.释放资源public class test04 { public static void main(S
2021-05-07 11:42:16
307
原创 JAVA----JDBC(mysql,Driver,statement)
jdbc连接mysql数据库六步://1.注册驱动//2.获取数据库连接//3.获取数据库执行对象//4.执行sql语句//5.返回结果集(DQL:select)//6.释放资源源码:package com.Jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.util.ResourceBundle;//1.注册驱动//2
2021-05-07 11:02:54
127
原创 人工智能----八数码问题(启发式搜索)
启发式搜索一、 实验目的理解人工智能系统中搜索策略的含义。熟悉盲目搜索和启发式搜索算法的实际应用。结合八数码问题的建模、求解及编程语言的应用,掌握启发式搜索算法的应用。二、 实验原理启发式搜索(Heuristically Search)又称为有信息搜索(Informed Search),它是利用问题拥有的启发信息来引导搜索,达到减少搜索范围、降低问题复杂度的目的。启发式策略可以通过指导搜索向最有希望的方向前进,降低了复杂性。通过删除某些状态及其延伸,启发式算法可以消除组合爆炸,并得到令人能接
2021-04-27 18:11:58
21481
4
原创 数据结构----二叉树(二叉树的基本函数)
头文件/* 二叉树节点结构体 */typedef struct Node{ DataType data; struct Node *leftChild; struct Node *rightChild;}BiTreeNode;/* 初始化*/void Initiate(BiTreeNode **root){ *root=(BiTreeNode*)malloc(sizeof(BiTreeNode)); (*root)->leftChild=NULL; (*root.
2021-04-27 18:05:26
1380
原创 数据结构----回溯算法(迷宫问题)
-回溯算法回溯算法是递归算法的一种特殊形式。回溯算法的基本思想是:对一个包括有很多个结点,每个结点有若干个搜索分支的问题,把原问题分解为对若干个子问题求解的算法;当搜索到某个结点、发现无法再继续搜索下去时,就让搜索过程回溯(即退回)到该结点的前一结点,继续搜索这个结点的其他尚未搜索过的分支;如果发现这个结点也无法再继续搜索下去时,就让搜索过程回溯到这个结点的前一结点继续这样的搜索过程;这样的搜索过程一直进行到搜索到问题的解或搜索完了全部可搜索分支没有解存在为止。由于回溯算法每前进一步,在新的结点上进行的搜
2021-04-14 16:01:14
544
原创 数据结构----递归调用(求最大公约数)
理论公式具体代码#include <stdio.h>/* 递归函数 */ int Gcd(int n,int m){ if(n<0||m<0){ //错误 return -1; } if(m==0){ //递归出口 return n; }else if(m>n){ return Gcd(m,n); }else{ return Gcd(m,n%m); }}/* 循环函数 */ int Gcd2(int n,int.
2021-04-14 15:20:34
459
原创 数据结构----递归算法(倒立三角)
/* 输出倒立三角 */#include <stdio.h>void Display(int n){ int i; for(i=1;i<=n;i++){ printf("%d ",n); } printf("\n"); if(n>0){ Display(n-1); }}void main(void){ Display(5); getch();}
2021-04-13 20:48:38
610
原创 数据结构----递归算法(斐波那契数列)
/* 求第n项斐波那契数列的递归函数*/#include <stdio.h>long Fib(int n){ if(n==0||n==1){ return n; //递归出口 }else{ return Fib(n-1)+Fib(n-2); //递归调用 }}void main(void){ int x; do{ printf("请输入你要求斐波那契数列第几项:"); int n; scanf("%d",&n); x=n; printf("
2021-04-13 20:40:38
396
原创 数据结构----递归算法(汉诺塔)
/* 汉诺塔问题 */#include <stdio.h>void Towers(int n, char A, char B, char C){ if(n==1){ //递归出口 printf("%s%c%s%c\n\n","移动盘 1 从 ", A," 到盘 ",C); return; } //把n-1个盘从A盘借助B盘移动到C盘 Towers(n-1,A,C,B); //把圆盘n从A盘直接移动到C盘 printf("%s%d%s%c%s%c
2021-04-13 20:27:08
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人