自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Rust环境配置

修改Rust的安装位置。

2024-07-16 10:10:50 391

原创 设置系统代理

set HTTP_PROXY=http://127.0.0.1:10808set HTTPS_PROXY=http://127.0.0.1:10808

2024-07-16 10:09:27 279

原创 Go环境配置

输入查看对应go环境环境配置步骤:go的高版本就不再使用gopath了,使用gomodule来管理项目,设置。

2024-07-16 10:06:08 226

原创 创建Web站点的欢迎页面

创建Web站点的欢迎页面什么是一个web站点的欢迎页面?对于一个webapp来说,我们是可以设置它的欢迎页面的。设置了欢迎页面之后,当你访问这个webapp的时候,或者访问这个web站点的时候,没有指定任何“资源路径”,这个时候会默认访问你的欢迎页面。我们一般的访问方式是:http://localhost:8080/Study/index.html 这种方式是指定了要访问的就是index.html资源。如果我们访问的方式是:http://localhost:8080/St

2021-11-25 21:50:52 1525

原创 ServletContext接口的学习

ServletContext接口的学习ServletContext是什么?ServletContext是接口,是Servlet规范中的一员。ServletContext是谁实现的?Tomcat服务器(WEB服务器)实现了ServletContext接口。public class org.apache.catalina.core.ApplicationContextFacade implements ServletContext {}ServletContext对象是谁创建的?在什么

2021-11-21 13:51:33 545

原创 ServletConfig接口的学习

ServletConfig接口的学习ServletConfig是什么?ServletConfig是一个接口。(jakarta.servlet.Servlet是一个接口。)Servlet对象的配置信息对象。谁去实现了这个接口呢? WEB服务器实现了public class org.apache.catalina.core.StandardWrapperFacade implements ServletConfig {}结论:Tomcat服务器实现了ServletConfig接口。思考:如

2021-11-19 21:50:54 559 1

原创 适配器设计模式改造Servlet(GenericServlet)

适配器设计模式改造Servlet我们编写一个Servlet类直接实现Servlet接口有什么缺点?我们只需要service方法,其他方法大部分情况下是不需要使用的。代码很丑陋。适配器设计模式Adapter手机直接插到220V的电压上,手机直接就报废了。怎么办?可以找一个充电器。这个充电器就是一个适配器。手机连接适配器。适配器连接220V的电压。这样问题就解决了。编写一个GenericServlet类,这个类是一个抽象类,其中有一个抽象方法service。GenericSer

2021-11-18 22:06:00 814

原创 Git的学习

Git的学习Git中所有的配置文件其实都保存在本地,查看配置git config -l 或者 git config --list查看不同级别的配置文件git config --system --list #查看系统的configgit config --global --list #查看当前用户(global)配置Git\etc\gitconfig:Git安装目录下的gitconfig --system系统级家目录下的.gitconfig 只适用于当前登录用户的配置 --global全局的设

2021-11-17 21:51:18 606

原创 第一个Servlet开发

第一个Servlet开发第一步:在webapps目录下新建一个目录,起名crm(这个crm就是webapp的名字)。当然,也可以是其它项目,比如银行项目,可以创建一个目录bank,办公系统可以创建一个oa。注意:crm就是这个webapp的根第二步:在webapp的根下新建一个目录:WEB-INF注意:这个目录的名字是Servlet规范中规定的,必须全部大写,必须一模一样。必须的必须。第三步:在WEB-INF目录下新建一个目录:classes注意:这个目录的名字必须是全部小写的clas

2021-10-30 22:01:26 307

原创 部署第一个WebApp项目

部署第一个WebApp项目第一步:找到CATALINA_HOME\webapps目录因为所有的webapp要放到webapps目录下。第二步:在CATALINA_HOME\webapps目录下新建一个子目录,起名:oa这个目录名oa就是你这个webapp的名字。第三步:在oa目录下新建资源文件,例如:index.html编写index.html文件的内容。第四步:启动Tomcat服务器第五步:打开浏览器,在浏览器地址栏上输入这样的URL:http://12

2021-10-30 22:00:43 462

原创 模拟Servlet的本质

模拟Servlet的本质不需要再编写main方法,main方法在Tomcat服务器中,Tomcat服务器启动就是main方法执行。编写一个Servlet类实现Servlet接口,实现service()方法将Servlet类和请求路径绑定在一起,编写web.xml文件模拟代码import java.util.*;import java.io.*;/* * Servlet接口是Servlet规范中核心的接口 该接口的调用者和实现者 */// 服务器端的小java程序,javaweb程序员负

2021-10-30 22:00:05 85

原创 Tomcat的学习

Tomcat的学习启动Tomcat在bin目录下有一个文件startup.bat文件通过它来进行启动Tomcat服务器。通过分析startup.bat文件可以得出执行这命令,实际上是执行catalina.bat这个文件。在catalina.bat文件中有一行配置:set MAINCLASS=org.apache.catalina.startup.Bootstrap(这个类就是main方法所在的类)Tomcat服务器是JAVA语言写的,既然是JAVA写的,那么启动Tomcat服务器就是执行main方法

2021-10-30 21:55:34 356

原创 Python虚拟环境的学习

Python虚拟环境的学习一下是使用virtualenv的方式安装虚拟环境pip3 install virtualenv创建虚拟环境输入命令:virtualenv 环境名如果有多个python版本,可以通过命令:virtualenv -p python路径 环境名,来创建虚拟环境进入环境下的Script文件夹下:输入命令执行脚本:source activate接下来可以在该虚拟环境下做自己的事,例如:安装Django2.0版本可以pip install django==2.0退出虚拟环境

2021-08-17 14:32:48 56

原创 MySQL的悲观锁和乐观锁

MySQL的悲观锁和乐观锁悲观锁:这个事务不结束,就无法解除对该事务的锁定,别的程序(线程)就无法对该数据库的行级数据进行修改。乐观锁:拥有一个版本号。

2021-08-13 11:27:28 75

原创 JDBC的事务机制

JDBC的事务机制JDBC的事务机制:JDBC中的事务是自动提交的,什么事自动提交?只要执行任意一条DML语句,则自动提交一次,这是JDBC默认的事务行为。但是在实际的业务中。通常都是N条DML语句共同联合才能完成的,必须保证他们这些DML语句在同一个事务中同时成功或者同时失败。一下程序先验证JDBC的事务是否是自动提交的。import java.sql.*;public class Test { public static void main(String[] args) {

2021-08-13 11:11:11 184

原创 如何SQL注入的问题?

如何SQL注入的问题?只要用户提供的信息不参与SQL语句的编译过程,问题就解决了。即使用户提供的信息中含有SQL语句的关键字,但是没有参与编译,不起作用。要想用户信息不参与SQL语句的编译,那么必须使用java.sql.PreparedStatementPreparedStatement接口继承了java.sql.StatementPreparedStatement是属于预编译的数据库操作对象。PreparedStatement的原理是:预先对SQL语句的框架进行编译,然后再给SQL语句传“值”

2021-08-13 10:54:52 122

原创 JDBC概述

JDBC概述JDBC是什么?Java DataBase Connectivity(Java语言连接数据库)JDBC的本质是什么?JDBC是SUN公司制定的一套接口(interface)java.sql.*; (这个软件包下有很多接口。)接口都有调用者和实现者。面向接口调用、面向接口写实现类,这都属于面向接口编程。接口的实现类被称为驱动,例如MySQL驱动。为什么要面向接口编程?解耦合:降低程序的耦合度,提高程序的扩展力。多态机制就是非常典型的:面向抽象编程。(不要面向具

2021-08-13 10:53:55 78

原创 Java注解

注解注解,或者叫做注释类型,英文单词是:Annotation注解Annotation是一种引用数据类型。编译之后也是生成xxx.class文件。怎么自定义注解呢?语法格式?[修饰符列表] @interface 注解类型名{}注解怎么使用,用在什么地方?默认情况下,注解可以出现在任意位置。第一:注解使用时的语法格式是:@注解类型名第二:注解可以出现在类上、属性上、方法上、变量上等…注解还可以出现在注解类型上。JDK内置了哪些注解呢?java.lang包下的注

2021-08-11 10:14:23 127

原创 反射Constructor类的学习

反射Constructor类的学习常用方法:Constructor<?>[] getDeclaredConstructors() // 返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) // 返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指

2021-08-10 17:21:56 174

原创 反射Method类的学习

反射Method类的学习Java中依靠方法名和参数列表,来区分方法。Method类常用的方法:Method getDeclaredMethods() // 获取所有的方法,其中:包括公共、保护、默认(包)访问和私有方法,返回 Method 对象的一个数组,但不包括继承的方法。Class<?> getReturnType() // 得到Method的返回值类型。Class<?>[] getParameterTypes() // 返回Method的形参,是一个数组Method

2021-08-10 17:21:11 88

原创 反射Field类的学习

反射Field类的学习反射属性FieldField翻译为字段,其实就是属性/成员,每一个属性相当于一个Field对象。Field的常用方法:int getModifiers() // 获取属性的修饰符列表,但是返回的是一个整数,需要使用Modifier类的toString方法进行转化。String getSimpleName() // 返回源代码中给出的底层类的简称。Field[] getDeclaredFields() // 获取所有的FieldField[] getFields() //

2021-08-10 17:20:27 251

原创 可变长度参数

可变长度参数public static void m1(int... args) {} // int... args 这就是可变长度参数语法是:类型… (注意:一定是3个点。)注意:可变长度参数要求的参数个数是:0~N个。可变长度参数在参数列表中必须在最后一个位置上,而且可变长度参数只能有1个。可变长度参数可以当做一个数组来看待代码示例public class Test { public static void main(String[] args) { m1

2021-08-10 17:19:15 370

原创 Java反射机制

反射机制反射机制有什么用?通过java语言中的反射机制可以操作字节码文件。(可以读和修改字节码文件。)通过反射机制可以操作代码片段。(class文件。)可以让程序更加灵活。反射机制的相关类在哪个包下?java.lang.reflect.*;反射机制相关的重要的类有哪些?java.lang.Class:代表整个字节码,代表一个类型,代表整个类。java.lang.reflect.Method:代表字节码中的方法字节码。代表类中的方法。java.lang.reflect.Cons

2021-08-10 17:18:13 59

原创 Java类加载器

类加载器什么是类加载器?专门负责加载类的命令/工具。ClassLoaderJDK中自带了3个类加载器启动类加载器:rt.jar扩展类加载器:ext/*.jar应用类加载器:classpath假设有这样一段代码:String str = "abc"; 代码在开始执行之前,会将所需要类全部加载到JVM当中。通过类加载器加载,看到以上代码类加载器会找String.class文件,找到就加载,那么是怎么进行加载的呢?首先通过“启动类加载器”加载。注意:启动类加载器专门加载

2021-08-10 17:13:15 53

原创 Java路径的学习

Java路径的学习由于以前用的获取文件路径的方式移植性差,在IDEA中默认的当前路径是Project的根。假设这个代码假设离开了IDEA,换到了其它位置,可能当前路径就不是Project的根了,这时这个路径就无效了。以前获取路径的方式:FileReader reader = new FileReader("classinfo.properties");怎么获取一个文件的绝对路径。以下这种方式是通用的。但前提是:文件需要在类路径下。才能用这种方式。什么类路径下?方式在src下的都是类

2021-08-10 17:12:12 88

原创 生产者和消费者模式

Object类中的wait和notify方法。关于Object类中的wait和notify方法。(生产者和消费者模式!)第一:wait和notify方法不是线程对象的方法,是java中任何一个java对象都有的方法,因为这两个方式是Object类中自带的。wait方法和notify方法不是通过线程对象调用,不是这样的:thread.wait(),也不是这样的:thread.notify()…不对。第二:wait()方法作用?Object obj = new Object();obj.wai

2021-08-10 09:59:24 56

原创 线程的定时器

定时器定时器的作用:间隔特定的时间,执行特定的程序。在java中可以采用多种方式实现定时器:可以使用sleep方法,睡眠,设置睡眠时间,没到这个时间点醒来,执行任务。这种方式是最原始的定时器。在java的类库中已经写好了一个定时器:java.util.Timer,可以直接拿来用。Timer类的常用方法:Timer() // 创建一个新计时器。Timer(boolean isDaemon) // 创建一个新计时器,可以指定其相关的线程作为守护程序运行。Timer(String nam

2021-08-10 09:56:47 561 1

原创 线程之守护线程

守护线程java语言中线程分为两大类:一类是:用户线程一类是:守护线程(后台线程)其中具有代表性的就是:垃圾回收线程(守护线程)。守护线程的特点:一般守护线程是一个死循环,所有的用户线程只要结束,守护线程自动结束。注意:主线程main方法是一个用户线程。当用户线程结束,守护线程自动终止。守护线程用在什么地方呢?例如:每天00:00的时候系统数据自动备份。这个需要使用到定时器,并且我们可以将定时器设置为守护线程。一直在那里看着,没到00:00的时候就备份一次。所有的用

2021-08-09 15:46:11 446

原创 线程的死锁

死锁自己实现的死锁的代码千万不要再程序中这样写,这样很难调试。public class Test { public static void main(String[] args) { Object obj1 = new Object(); Object obj2 = new Object(); // myThread1和myThread2两个线程共享obj1,obj2 Thread myThread1 = new MyThrea

2021-08-09 15:44:56 41

原创 线程的调度

线程的调度常见的线程调度模型有哪些?抢占式调度模型:那个线程的优先级比较高,抢到的CPU时间片的概率就高一些/多一些。java采用的就是抢占式调度模型。均分式调度模型:平均分配CPU时间片。每个线程占有的CPU时间片时间长度一样。平均分配,一切平等。有一些编程语言,线程调度模型采用的是这种方式。java中提供了哪些方法是和线程调度有关系的呢?void setPriority(int newPriority) // 设置线程的优先级,是实例方法int getPriori

2021-08-09 15:43:17 182 1

原创 线程生命周期

线程生命周期关于线程对象的生命周期?有五种状态。分别是:新建状态就绪状态运行状态阻塞状态死亡状态

2021-08-09 15:42:18 41

原创 线程同步机制synchronized

线程同步机制synchronized如果有一部分代码必须是线程排队的,不能并发。一个线程把这里的代码全部执行结束之后,另一个线程才能进来。需要使用线程同步机制线程同步机制的语法是:使用同步代码块的方式,这种方式比较灵活。修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;synchronized(线程共享对象){ // 线程同步代码块。}在实例方法上使用synchronized,例如:synchronize

2021-08-09 15:40:45 354

原创 并发的安全问题概述

并发的安全问题概述什么时候数据在多线程并发的环境下会存在安全问题呢?三个条件:条件1:多线程并发。条件2:有共享数据。条件3:共享数据有修改的行为。满足以上3个条件之后,就会存在线程安全问题。怎么解决线程安全问题呢?当多线程并发的环境下,有共享数据,并且这个数据还会被修改,此时就存在线程安全问题,怎么解决这个问题?线程排队执行。(不能并发)。用排队执行解决线程安全问题。这种机制被称为:线程同步机制。专业术语叫做:线程同步,实际上就是线程不能并发了,线程必须排队执行。

2021-08-09 15:39:06 617

原创 创建线程的三种方式

创建线程的两种方式实现线程的第一种方式:编写一个类,直接继承java.lang.Thread,重写run方法。实现线程的第二种方式:编写一个类实现java.lang.Runnable接口。实现run方法。怎么创建线程对象? new就行了。怎么启动线程呢? 调用线程对象的start()方法。注意:第二种方式创建的类不是一个线程类,是一个可运行的类。需要使用Thread类将其转换为一个线程类。注意:亘古不变的道理:方法体当中的代码永远都是自上而下的顺序依次逐行执行的。以下程序的输出结果有这样的特点

2021-08-09 09:42:18 203

原创 多线程的常用方法

多线程的常用方法static Thread currentThread() // 返回对当前正在执行的线程对象的引用。String getName() // 返回该线程的名称。void setName(String name) // 改变线程名称,使之与参数 name 相同。static void sleep(long millis) //静态方法,参数是毫秒,让当前线程进入休眠,进入“阻塞状态”,放弃占有CPU时间片,让给其它线程使用。void interrupt() // 中断线程。void

2021-08-09 09:40:44 116

原创 多线程概述

多线程概述什么是进程?什么是线程?进程是一个应用程序(1个进程是一个软件)。线程是一个进程中的执行场景/执行单元。一个进程可以启动多个线程。对于java程序来说,当在DOS命令窗口中输入:java HelloWorld 回车之后。会先启动JVM,而JVM就是一个进程。JVM再启动一个主线程调用main方法。同时再启动一个垃圾回收线程负责看护,回收垃圾。最起码,现在的java程序中至少有两个线程并发,一个是垃圾回收线程,一个是执行main方法的主线程。进程和线程是什么关系?举个例子

2021-08-09 09:39:39 81

原创 序列化与反序列化

序列化与反序列化Java的接口分为标志接口和普通借口。Serializable接口就是一个标志接口。序列化过程中出现java.io.NotSerializableException;异常,则说明,该类不支持序列化,该类需要实现Serializable接口,这样该类的对象才支持序列化!!!参与序列化和反序列化的对象,必须实现Serializable接口。注意:通过源代码发现,Serializable接口只是一个标志接口:public interface Serializable

2021-08-07 11:37:48 124 1

原创 PrintStream:标准的字节输出流

PrintStream:标准的字节输出流java.io.PrintStream:标准的字节输出流。默认输出到控制台。标准输出流不需要手动close()关闭。标准输出流可以改变输出的方向,向不同的地方进行输出。例如文件中。import java.io.*;public class Test { public static void main(String[] args) throws Exception { // 联合起来写 System.out.printl

2021-08-06 11:29:00 177

原创 File类

File类File类和四大家族没有关系,所以File类不能完成文件的读和写。File对象代表什么?文件和目录路径名的抽象表示形式。C:\Drivers 这是一个File对象C:\Drivers\Readme.txt 也是File对象。一个File对象有可能对应的是目录,也可能是文件。File只是一个路径名的抽象表示形式。File类中常用的方法boolean mkdirs() // 可以创建多重目录吗?boolean mkdir() // 创建此抽象路径名指定的目录。Str

2021-08-06 11:28:02 1556

原创 FileReader与FileWriter

FileReader与FileWriterFileReader文件字符输入流,只能读取普通文本。读取文本内容时,比较方便,快捷。import java.io.*;public class Test { public static void main(String[] args) { FileReader fr = null; try { // 创建文件字符输入流 fr = new FileReader("D:/

2021-08-06 11:26:54 70

空空如也

空空如也

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

TA关注的人

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