- 博客(65)
- 收藏
- 关注
原创 Linux
# 标题# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题# 段落Sit quis irure mollit fugiat ullamco aliqua pariatur magna quis elit Lorem[^Lorem] occaecat ex. Incididunt nulla sit officia officia mollit. Laborum sint do dolor des
2022-11-29 15:06:43
502
1
原创 先序遍历/后序遍历确定树的大致形态
对这棵树的层序遍历很简单,中序遍历可以采用“从你的全世界路过”法进行遍历。我们可以总结出一般规律:为什么先/后/层 + 中序可以唯一确定一棵二叉树呢?因为可以通过先/后/层确定它的根,再通过中序遍历确定它的左右子树,再对它的左右子树进行同样的办法。先序/后序如何画出大致的结点分布情况呢?先通过先序和后序找到它的根(先序遍历的第一个结点和后序遍历的最后一个结点就是它的根),再通过遍历规则(“根 左 右”或者“左 右 根”)分析出它的左右孩子的根,接着通过前序遍历(根 左 右)划分根的左右子树的遍历序列。最后对
2022-07-19 19:52:10
359
原创 翁凯c语言程序设计——为什么第一个 word 没有内容?
问题描述:对于两个字符数组s1[8],s2[8],用scanf往s1,s2都写入8位数据(假设是12345678),我们知道大小为8的字符数组最多存放7位有效字符(最后一位存放’\0’),然后使用printf打印两个字符串s1,s2,为什么第一个字符串没有输出呢?问题代码#include <stdio.h>int main(void){ char s1[8]; char s2[8]; scanf("%s",s1); scanf("%s",s2); printf("%s
2022-05-28 17:32:06
281
2
原创 git —— 常用命令
Git 常用命令一、用户签名1.1. 设置用户标签git config --global user.name 用户名git config --global user.email 邮箱1.2. 查看用户标签git config --global user.namegit config --global user.email签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。二、基本操作2.1. 初始化本地库git init2.
2022-04-13 22:45:34
277
原创 c语言编译器mingw——常用编译命令
通用指令gcc test.c将 test.c 预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.exe。在命令行输入 ./a.exe 执行程序。./表示在当前目录,a.exe 为可执行程序文件名。gcc test.c -o test将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。输入 ./test 执行程序。单独指令gcc -E test.c -o test.i将test.c预处理输出test.i文件。gcc -S te
2022-04-09 21:34:45
2519
原创 上传文件——Javaweb fileUpload
通常情况下,网站一般都会有上传文件和下载文件,下载文件我之前的博客有案例,实现起来不是很复杂,文件上传就比较复杂了。在网络中,文件传送都是以流的形式存在的,这些数据都会携带在http请求体里面,所以按道理说获取了请求的输入流就可以接收流信息并持久化到服务器文件系统上了。按道理来讲是可以实现,不过很复杂,因为表单中的数据都混杂在了一起,不能仅仅通过获取参数来得到文件。使用commons-fileupload和commons-io第三方库在一定程度上可以简化很多操作,但还是较为复杂,不过文件上传的代码复用性
2022-01-08 17:04:32
613
原创 邮件发送——java mail
java mail说白了就是套模板,大框架。框架搭起来后邮件发送的内容就稍微变通一下,就和搭积木一样。依赖的jar包使用项目管理工具创建项目的话对应去搜就行了。纯文本邮件import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.security.GeneralSecurityException;import java.ut
2022-01-08 16:54:44
409
原创 Servlet练习——请求头referer
请求头referer的作用是记录了上一个请求页面的URL,比如第一次我请求了页面A,当我第二次请求页面B的时候,第二次请求的头信息中referer属性的值就是A页面的URL。这个有什么用呢?可以做一个简单的登录拦截验证,就是你必须从我指定的页面才能进入首页,从其他的页面进入或者直接通过URL访问都会被拦截。这个后面主要是通过过滤器来实现,主要目的是为了练习一下这个头信息的用法。servlet代码@WebServlet("/demo12")public class ServletDemo12 exte
2021-12-29 15:20:58
767
原创 Servlet练习——@WebServlet注解的使用
注解简要的复习官方文档:注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。注解有许多用处,主要如下:提供信息给编译器: 编译器可以利用注解来探测错误和警告信息编译阶段时的处理: 软件工具可以用来利用注解信息来生成代码、Html文档或者做其它>相应处理。运行时的处理: 某些注解可以在程序运行的时候接受代码的提取。值得注意的是,注解不是代码本身的一部分。自己的理解:注解和xml这样的配置文件都可以为程序的运
2021-12-28 14:30:39
1536
1
原创 Servlet练习——下载图片
在下载图片这个案例中需要将响应体的mime类型设置为image/png或者image/jpg等,它是通过content-type指定的。什么是mime类型呢?HTTP是媒体独立的,这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的MIME-type内容类型。还需要用到Content-Disposition这个头信息,这个头信息可以请求浏览器要求用户以给定名称的文件把响应保存到磁盘。如果文件名是中文的话,可能会出现乱码问题,一般将字符串转
2021-12-28 13:16:38
614
原创 Servlet练习——ServletContext域属性统计页面访问量
ServletContext意思就是Servlet上下文对象,在一个web容器中只有一个ServletContext对象,这点有点像单例模式(也许它就是用单例模式实现的)。它凌驾于所有Servlet之上,所以可以用它来共享数据和信息,以及Servlet之间的通信。当然,由于它是全局的,所以它也可以用来获取一些全局的资源和信息,比如某个资源的绝对路径(real path)、某个资源的字节流等等。这里主要练习用ServletContext来实现一个简单的访问量统计功能。获取ServletContext对象
2021-12-27 21:41:16
461
原创 Servlet练习——服务器启动就创建Servlet
通常情况下,Servlet只有在首次被访问的时候才会被创建并初始化public class ServletDemo08 extends HttpServlet { @Override public void init() throws ServletException { System.out.println("hello world!"); } @Override public void destroy() { System.out
2021-12-27 20:33:44
607
原创 每日一个CSS——简单又惊艳的登录页面
效果图html代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登录界面</title> <link rel="stylesheet" type="text/css" href="../css/login.css"> <script src="../js/jquery-3.6.0.mi
2021-12-27 19:26:25
1144
原创 Servlet练习——请求的转发
往http请求中写入属性,在请求对象生存期内有效,随着请求的结束资源就会被回收。Servlet代码public class ServletDemo06 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setAttribute("na
2021-12-26 17:47:01
115
原创 Servlet练习——http请求的相关方法
请求报文的格式请求的基本方法 //请求行相关的方法 System.out.println(req.getMethod()); //获取请求的方法 System.out.println(req.getRequestURL()); //获取请求的URL System.out.println(req.getProtocol()); //获取请求的协议和版本 //请求头的相关方法 System.o
2021-12-26 17:16:38
551
原创 Servlet练习——读取复选框的数据
html代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>读取复选框数据</title></head><body> <form action="demo03" method="post" target="_blank"> <label>数学:
2021-12-25 23:25:28
1119
原创 Servlet练习02——读取表单数据
表单的HTML代码(使用post方法)<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>demo02</title></head><body> <h1>get方法</h1> <form action="demo02" method="get">
2021-12-25 22:33:59
778
原创 Servlet练习01——Hello World
第一步:导入Servlet的依赖或者包<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version></dependency>第二步:编写Servlet,扩展HttpServlet,重写部分方法//hell
2021-12-25 19:33:00
366
原创 每日一个CSS——模拟键盘
效果图HTML代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>键盘</title> <link href="../css/keyboard.css" rel="stylesheet" type="text/css"></head><body> <div>
2021-12-25 17:28:05
545
原创 每日一个CSS——导航栏
效果图HTML代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>navigation</title> <link href="../css/nav.css" type="text/css" rel="stylesheet"></head><body> <div
2021-12-24 21:38:43
504
转载 java中的容器添加null的测试
文章来自转载,原文链接:https://www.jianshu.com/p/92d22bc2e2d1昨天写代码的时候需要往容器中添加null,所以主要测试了几个常见的容器能否添加null的情况,如下:public class TestNull { public static void main(String[] args) { //HashMap 允许null-null键值对 Map<String,String> hashMap = ne.
2021-12-18 14:27:06
251
原创 JavaWeb(三)——Servlet基础
Servlet简介Servlet是sun公司提供的一门用于开发动态web资源的技术。Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端,作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。开发一个Servlet程序需要完成两个步骤:编写一个类,实现Serlet接口把开发好java类部署到web服务器中Servlet的运行过程Servlet程序是由WEB服务器调用,web服务器收到客
2021-12-17 21:23:57
1194
原创 JavaWeb(二)——Maven的使用
四、Maven1. 基本介绍Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理,是一个自动化构建工具,即编译-打包-部署-测试四位一体。1.1 Maven的作用1、管理jar包增加第三方jar包(不需要自己下载jar包)管理jar包之间的依赖关系(maven自动关联下载所有依赖的jar包)2、将项目拆分成若干个模块:借助于Maven可以将一个项目拆分成多个工程。1.2 Maven能干的事情清理:删除编译的结果,为重新编译做准备。编译:java->
2021-12-17 20:28:51
772
原创 JavaWeb(一)——JavaWeb介绍、Tomcat服务器、HTTP协议
一、Java Web的基本概念1. Java WebJava Web,是用Java技术来解决web互联网领域相关的技术栈。2. web应用程序Web应用程序是一种可以通过Web访问的应用程序。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。一个Web应用程序是由完成特定任务的各种Web组件(web compon
2021-12-17 00:23:53
677
2
原创 Java常用类——String、StringBuffer、StringBuilder
String类字符串的创建字符串存放在公共的存储池中,字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串和复制的字符串共享相同的字符串。Java的设计者认为共享带来的高效率渊源胜过于提取子串、拼接字符串带来的低效率/*"123"这个字面常量会存储在方法区中的字符串常量池中,栈中的s1会存储这个字面常量的引用。若常量池中已有这个字符串,则直接返回这个字符串的引用*/String s1 = "123";、/*JVM会在常量池中创建一个"abc",在堆创建一个String对象
2021-11-20 22:02:39
449
原创 Java常用类——Math类
在Math类中,包含了各种各样的数学函数和常量。Math类位于java.lang包下,Math类中的方法和字段都是静态的,因此可以使用类名来调用。Math类的构造方法是私有的,也new不出来它的实例对象。不必在数学方法名和常量名前添加前缀“Math”,可以采用静态导入的方式,导入所有的静态方法和静态字段。常用字段//e和π的最接近的近似值public static final double E = 2.7182818284590452354;public static final double
2021-11-20 21:43:35
967
原创 排序——归并排序
归并排序(merge sort)的基本思想:归并排序使用的是分治的思想,分治(devide and conquer),字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。递归的思想在某种程度上来说和分治的思想不谋而合,即函数直接或间接调用自身,把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解。所以说分治
2021-11-15 17:58:21
1048
原创 排序——冒泡排序
冒泡排序(Bubble Sort)的基本思想:冒泡排序是一种简单的交换排序。这种排序算法在排序的过程中,如果按照升序的规则,值大的元素会逐渐往后靠,值小的元素会逐渐往前靠,最重要的是最大的元素一直会交换到数组的末尾。这一过程就如同碳酸饮料中二氧化碳的气泡最终会浮到顶端,所以被称之为“冒泡排序”。冒泡排序也可分为有序区和无序区,冒泡的过程就是无序区中的元素依次互相比较,较大的元素逐渐“浮”到有序区中。对于升序排序,其有序区可以在右,也可以在左,两种方式的原理都是类似的,没有多大差异。对于降序排序,其实也无
2021-11-12 22:53:02
924
原创 IEEE 754浮点数工业标准
数符:浮点数的符号,0表示正数,1表示负数。阶码:浮点数的指数,用移码表示,基数默认为2。尾数:“尾数”又可称之为“精度”,即对表达结果精确程度产生重要影响的数,也就是常说的significant digits,缩写后为significand(有效数,尾数)。用原码表示。浮点数有三种格式:单精度浮点数,双精度浮点数,扩充的单精度浮点数,扩充的多精度浮点数。计算机主要使用3种形式的IEEE 754浮点数。...
2021-11-12 20:03:45
1529
原创 排序——直接选择排序
直接选择排序(Straight Select Sorting)的基本思想:和直接插入排序一样,直接选择排序的思想在日常生活中也很常见。比如需要将学生按身高进行排队,最直接和简单的做法就是将每个同学都比较一下,选出最矮的那一个,排在队伍的最前面,再从剩下的队伍中选出最矮的那一个,直到排序完毕。直接选择排序就是利用了这种思想。直接选择排序也将待排数组分为有序区和无序区,和直接插入排序不同的是初始状态下,有序区为空,无序区为整个数组的元素。直接选择排序从无序区选择最小元素的过程使用的是最简单和基本的顺序查找,
2021-11-12 15:25:26
1074
原创 Java数据库连接——JDBC详述
文章目录JDBC概述IDEA导入jar包JDBC编程六步第一步:注册驱动第一种方式:第二种方式(类加载的方式):第二步:获取数据库连接对象第三步:获取数据库操作对象第四步:执行SQL第五步:处理查询结果集(对于DML语句可以跳过这步)第六步:释放资源完整的编程六步示例通过配置文件获取所需信息的实现方式SQL注入现象SQL注入概述:导致SQL注入的根本原因是什么?SQL注入示例PreparedStatement解决SQL注入问题Statement和PreparedStatement对比Statement的使用
2021-11-12 00:03:29
1489
原创 排序——直接插入排序
直接插入排序(straight insertion sort)的思想:直接插入排序的思想在我们的日常生活中也有体现,比如在我们抓牌的时候,我们手里的牌一般都已经排好序了,新抓上来的牌根据大小将它插入到一个合适的位置,直接插入排序的思想也是类似于此。对于一个待排序的数组,数组分为有序区和无序区,在这里我们假设有序区在数组的左边,无序区在数组的右边,排序的过程就是渐渐将无序区里面的元素加入到有序区里面。有序区的初始状态只有一个元素即数组的第一个元素,无序区的初始状态就是数组剩余的其他元素。无序区待插入的元素
2021-11-10 21:46:49
562
原创 JavaSE——基本的输入与输出
Scanner类Scanner类用于获取“标准输出流”(即控制台)上的输入。Scanner(InputStream in); //用给定的输入流创建Scanner对象String nextLine(); //读取输入的下一行内容(可以获得输入有效字符之前的空白,碰到换行符结束读取。)String next(); //读取输入的下一个单词(会忽略有效输入以前的所有空白,碰到空白结束读取)boolean hasNext(); //检测输入中是否还有其他单词。boolean ha
2021-11-08 19:45:33
267
原创 二分查找算法
二分查找算法对于很多简单的算法,一学就会,一做就废,所以还是得多实践,多动手,实践出真知,practice does make perfect!without further ado,直接切入正题:题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。对于二分法的思路:二分查找又叫折半查找,它要求数组有序,如其名字的含义一样在每一次查找的过程中折半查找可以排除一半的
2021-11-08 13:13:27
66
原创 JavaSE——数组详解
数组的特性Java中的数组有一些令人十分困惑的地方。在Java中,数组是引用数据类型,引用类型的数据被创建时,首先要在栈上给其引用(句柄)分配一块内存,而它的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。而令人困惑之处在于:数组是引用数据类型,那它是不是对象呢?我们从以下几点进行探讨:要判断数组是不是对象,那么首先明确什么是对象,也就是对象的定义。在较高的层面上,对象是根据某个类创建出来的一个实例,表示某类事物中一个具体的个体。对象具有各种属性,并且具有一些特定的行为。而在较低的
2021-11-07 20:51:00
365
原创 JavaSE——集合
集合Collection接口该接口继承了Iterable接口和它的iterator()方法,用于遍历集合元素interface Collection<E> extends Iterable<E>添加元素boolean add(Object obj);boolean addAll(Collection c);移除元素boolean remove(Object obj);boolean removeAll(Collection c); //移除所有与c集合共
2021-11-05 14:16:27
62
原创 JavaSE——泛型详解
泛型概述:引入的原因:一个特殊的栗子:原理:原始类型:结论:泛型的作用:突破泛型约束:泛型的使用:泛型类泛型接口:泛型方法:通配符"?"的使用:概述:泛型,即“参数化的类型”,指将类型定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。引入的原因:引入泛型我觉得最主要的原因是使得程序更为灵活,去掉许多冗余不必要的代码。最直接的例子就是方法重载,比如需要设计一个计算器,仅针对加法运算的方法,我们就需要仅因为参数的类型的差异而需要设计很多重载的方法,这些代码看上去都是很相
2021-11-02 20:23:49
139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人