- 博客(39)
- 收藏
- 关注
原创 CentOS7安装Nginx
CentOS7安装Nginx添加Nginx到yum源sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm安装Nginxyum install -y nginx启动Nginxsudo systemctl start nginx.serviceCentOS 7 开机启动Nginxsudo systemctl enable
2021-02-20 15:48:39 156
原创 CentOS7出现的问题
Centos7安装Gitlab13.1.2一、下载安装包二、安装配置必要的依赖项安装防火墙yum install firewalld systemd -y开启防火墙service firewalld start(可能会遇到的问题)重启防火墙时出现Failed to start firewalld.service: Unit is masked - - 线程被锁住了解决:执行命令,即可实现取消服务的锁定# systemctl unmask firewalld启动并查看状
2020-11-30 19:50:10 331
原创 volatile、synchronized和lock区别解析
volatile一、概念 volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。确保本条指令不会因编译器的优化而省略,且要求每次直接读值。volatile,它能够使变量在值发生改变时能尽快地让其他线程知道。二、举个栗子问题来源首先我们要先意识到有这样的现象,编译器为了加快程序运行的速度,对一些变量的写操作会先在寄存器或者是CPU缓存上进行,最后才
2020-11-17 20:57:56 511
原创 Session、Cookie和Token会话管理方式
1、基于服务端session的管理原理:服务端session是用户第一次访问应用时,服务器就会创建的对象,代表用户的一次会话过程,可以用来存放数据。服务器为每一个session都分配一个唯一的sessionid,以保证每个用户都有一个不同的session对象。服务器在创建完session后,会把sessionid通过cookie返回给用户所在的浏览器,这样当用户第二次及以后向服务器发送请求时候,就会通过cookie把sessionid传回给服务器,以便服务器能够根据sessionid找到与该用户对应
2020-11-16 19:38:23 432
原创 Servlet和JSP运行原理和区别
Servlet一、概念 运行在服务端的小程序。可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。二、执行原理当服务器接受到客户端浏览器的请求后,会解析请求 URL 路径,获取访问的 Servlet 的资源路径查找 web.xml文件,是否有对应的<url-pattern>标签体内容如果有,则在找到对应的<
2020-11-16 11:10:55 469
原创 Java重写和重载的区别
重载 重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性)。重载规则:必须具有不同的参数列表; 可以有不同的返回类型;可以有不同的访问修饰符;可以抛出不同的异常。
2020-11-12 15:38:27 113
原创 maven
Maven项目中jar包资源越来越多,jar包的管理越来越繁琐。要为每个项目手动导入所需的jar,需要搜集全部jar --繁琐项目中的jar如果需要版本升级,就需要再重新搜集jar --复杂相同的jar在不同的项目中保存了多份–存储冗余,散乱java项目需要一个统一的便捷的管理方案。Maven是一个基于项目对象模型(POM))的概念的纯java开发的开源的项目管理工具。主要用来管理java项目,进行依赖管理(jar包依赖管理)和项目构建(项目编译、打包、测试、部署)。此外还能分块开发,提高开发
2020-09-16 21:45:57 147
原创 Cookie和Session
状态管理现有问题Http协议是无状态的,不能保存每次提交的信息如果用户发来一个新的请求,服务器无法知道它是是否与上次的请求联系对于那些需要提交数据才能完成的web操作,比如登陆来说,就成问题了概念将浏览器与web服务器之间多次交互当作一个整体来处理,并且将多次交互涉及的数据保存下来。状态管理分类客户状态管理技术:将状态保存在客户端,代表性的是Cookie技术服务器状态管理技术:将状态保存在服务器,代表性的是session技术(服务器传递session时需要使用Cook
2020-09-15 23:48:35 111
原创 EL表达式、JSTL标签库
EL表达式 Expression Language表达语言 【作用】:替换和简化 jsp 页面中 java 代码的编写【注】jsp 默认支持 el 表达式的。如果要忽略 el 表达式 :设置 jsp 中 page 指令中:isELIgnored="true" 忽略当前 jsp 页面中所有的 el 表达式 ; \${表达式} :忽略当前这个 el 表达式一、获取值el表达式只能从作用于对象中获取值语
2020-09-13 16:15:54 148
原创 JSP、九大内置对象和四大作用域
JSP一、什么是JSP指令 用于配置JSP页面,导入资源文件。 格式:<%@指令名 属性名1=属性值1 属性名2=属性值2...%> 三大指令:page、include和taglib(指令在“真身(Java文件)”中不存在,生成“真身”时需要使用指令!在生成的Java文件中,不存在指令信息!)二、page指令<%@ page language
2020-09-13 12:12:00 176
原创 Java之XML
XML:一、常见应用:①数据存储和传输②可以做配置文件③可以充当小型的数据库二、语法:①文档声明 放在XML文档的第一行②元素 必须有且只有一个根元素 一个标签分为开始标签和结束标签③属性④注释⑤CDATA区、特殊字符⑥处理指令(processing instruction)三、解析:①jar包:dom4j-1.6.1.jar②创建S
2020-09-11 01:03:33 181
原创 JDBC、JDBCUtil工具类
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。客户端操作 MySQL 数据库的方式:使用第三方客户端来访问 MySQL:SQLyog、Navicat 等使用 MySQL 自带的命令行客户端方式通过 Java 来访问 MySQL 数据库...
2020-09-05 21:13:30 295
原创 Java之反射
类加载类加载: 类的加载指的是将类的.class 文件中的二进制数据读入到内存中,将其加载运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class 对象,用来封装类在方法区内的数据结构。 最终在堆中创建一个Class对象,并且提供访问Class对象数据结构的接口。一个类加载一次,一个类一个Class
2020-09-05 18:43:40 138
原创 Java类与对象
一、面向对象 面向对象是一种现在最为流行的程序设计方法,面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用。对于面向对象的开发来讲也分为三个过程:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)。二、类与对象 类:是抽象的概念集合,表示的是一个共性的产物,类之中
2020-09-05 01:03:37 171
原创 Iconfont-阿里巴巴矢量图标库使用
里面有好多好多图标,非常好用 连接:https://www.iconfont.cn/如图:搜索icon,搜索自己想要的图标选中自己想要的图标,并加入到购物车(红色的那个)在自己的购物车下载代码在自己的项目中创建fonts文件夹,将下载的压缩包进行解压,然后再里面的所有文件粘贴复制到fonts文件夹。最后再css文件夹中新建一个fonts.css,复制粘贴如下内容:(注意修改url
2020-09-03 09:45:59 868
原创 Java PreparedStatement和Statement
Statement什么是Statement?Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。具体步骤:①首先导入java.sql.*;这个包。②然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn。③然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn.creatStatement(“SQL语句字符串”);Statement 对象用于将
2020-08-24 20:43:01 403
原创 Java爬虫系列(一):我也写在前面
由于兴趣,在网上收集一些爬虫学习视频。打算一边学习一遍写下学习笔记(Java爬虫系列),期间肯定有很多不足的问题,后续会陆陆续续更新更改。希望有兴趣的小伙伴们一起来学习。。。爬虫项目的难点以及解决方案难点:网站采取反爬策略;网站模板定期变动;网站URL抓取失败;网站频繁抓取IP被封;解决方案通过浏览器访问。不同配置文件配置不同网站的规则;数据库存储不同网站的模板。HttpClient默认处理方式;storm实时解析失败日志,将失败URL重新加入抓取库,一般超过3次就放弃。购买代理
2020-08-23 14:17:40 131
原创 利用JDBC完成如下功能:
准备一个properties文件配置数据源信息(驱动、url、user、password )定义JDBCUtil类,在静态块中读取properties文件,定义两个方法:一个负责获取并返回连接对象,一个负责关闭资源定义员工实体类(员工编号、姓名、薪资、部门编号、部门名称,有能力的同学可补充入职日期属性)定义数据层访问接口EmpDAO,接口中定义如下方法:1.查询所有员工2.按照薪资降序查询员工信息3.查询员工总人数4.查询所有张姓员工5.添加员工信息(员工编号、姓名、薪资、部门编号)定义.
2020-08-22 15:00:16 729
原创 Java、数据库之JDBC
JDBC通过Java访问MySQL数据库JDBC 规范定义接口,具体的实现由各大数据库厂商来实现。 JDBC 是 Java 访问数据库的标准规范,真正怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动。所以我们只需要会调用JDBC 接口中的方法即可,数据库驱动由数据库厂商提供。操作步骤导入驱动 jar 包a.复制 jar 到项目的 libs 目录下b.右键–>Add As Library注册驱动Class.forNam
2020-08-22 14:40:45 131
原创 数据库相关知识以及命令语句(二)
存储过程存储过程,带有逻辑的sql语句,之前的sql没有条件判断,没有循环,存储过程带上流程控制语句(if while)。特点:1)执行效率非常快!存储过程是在数据库的服务器端执行的。2)移植性很差!不同数据库的存储过程是不能移植。创建存储过程delimiter $ -- 声明存储过程的结束符$create procedure pro_test()beginsql语句end$-- 执行存储过程call pro_test();触发器当操作了某张表时,希望同时触发一些动作/行为
2020-08-20 20:19:02 250
原创 数据库相关知识以及命令语句(一)
数据库什么是数据库存储数据的仓库,本质上是一个文件系统,还是文件的方式存在服务器的电脑上的。所有的关系型数据库都可以使用通用的SQL语句进行管理DBMS(DataBase Management System)。数据库的组成数据库管理系统:数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性,用户通过数据库管理系统访问数据库中表内的数据。所谓数据库服务
2020-08-20 20:17:53 447
原创 抽象类和接口的区别
抽象类(abstract)在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非
2020-08-14 00:07:44 169 1
原创 Java设计模式之单例模式
单例模式这种模式的意义在于保证一个类只有一个实例,并提供一个访问它的全局访问点,避免重复的创建对象,节省系统资源。单例类只有一个实例单例类必须自己创建自己的实例单例类必须给所有其他的对象提供这一实例设计思路:创建一个类,将其默认构造方法私有化,使外界不能通过new Object来获取对象。同时提供一个对外界获取对象唯一实例方法。public class SingleObject { //创建SingleObject的一个对象 private static SingleObject in
2020-08-12 21:26:44 108
原创 Java网络编程-->文件上传
实现步骤【客户端】输入流,从硬盘读取文件数据到程序中。【客户端】输出流,写出文件数据到服务端。【服务端】输入流,读取文件数据到服务端程序。【服务端】输出流,写出文件数据到服务器硬盘中。文件上传服务端FileUploadServer:package com.gem.demo.day0811;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import
2020-08-12 11:14:40 221
原创 Java线程的通讯(一)
wait:告诉当前线程放弃执行权,并放弃监视器(锁)并进入阻塞状态,直到其他线程持有获得执行权,并持有了相同的监视器(锁)并调用 notify 为止。notify:唤醒持有同一个监视器(锁)中调用 wait 的第一个线程,例如,餐馆有空位置后,等候就餐最久的顾客最先入座。注意:被唤醒的线程是进入了可运行状态。等待 cpu 执行权。notifyAll:唤醒持有同一监视器中调用 wait 的所有的线程。两个线程交替打印奇偶数,通过wait/notify实现:package com.gem.demo..
2020-08-11 20:55:25 114
原创 Java线程 join()方法的理解
join()方法join() 等待这个线程死亡说人话:在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程将早于子线程结束。这时,如果主线程想等子线程执行完成才结束,比如子线程处理一个数据,主线程想要获得这个数据中的值,就要用到join()方法了。方法join()的作用是等待线程对象销毁。join(long millis) 此线程最多等待 millis毫秒。说人话:join方法中如果传入参数,则表示这样的意思:如果A线程中掉用B线程的join(10),则表示A线程会等
2020-08-11 18:34:10 338
原创 Java线程 线程池
线程池如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。线程池:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。Java 里面线程池的顶级接口java.util.concurrent.Executor ,但是严格意义上讲 Executor 并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是 java.util.concurr
2020-08-11 14:22:25 123
原创 Java多线程:run()和start()区别
ThreadJava 使用 java.lang.Thread 类代表线程,所有的线程对象都必须是 Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java 使用线程执行体来代表这段程序流。Java 中通过继承 Thread 类来创建并启动多线程的步骤如下:定义 Thread 类的子类,并重写该类的 run()方法,该 run()方法的方法体就代表了线程需要完成的任务,因此把 run()方法称为线程执行体。创建 Thread 子类的实例,即
2020-08-10 19:02:17 223
原创 Java线程
1、并发和并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一个程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分时交替运行的时间是非常短的。而在多个 CPU 系统中,则这些可以并发执行的程序便可以分配到多个处理器上(CPU),实现多任务并行执行,即利用每个处理器来处理一个可以并发执行的程序,这样多个程序便可以同时执行。目前电脑市
2020-08-10 14:24:35 117
原创 IO流、复制文件
复制文件复制文件即为一般读取一般输出编写。复制文件复制出来的文件为什么是空白?可能是read()方法的参数问题。注意:int read():从此输入流中读取一个字节的数据。int read(byte[] b):从此输入流 b.length最多 b.length字节的数据读 b.length字节数组。复制文件:方法一package com.gem.demo.day0807;import java.io.File;import java.io.FileInputStream;i
2020-08-07 19:47:30 382 2
原创 File文件、Date类
file文件类题目继上一博客3.编写异常类:空异常、年龄低异常、年龄高异常、 工资低异常、工资高异常、身份证非法异常。//Person类package com.gem.demo.day0806;public class Person { private String name; private int age; private double salary; private String id; public Person() { super(); } public Pers
2020-08-07 00:55:32 396
原创 File文件、异常、Date类
file类文件题目1.输入文件的路径,显示文件的详细信息:文件名,大小,最后修改的时间,是否可读可写,是否属于隐藏文件public class Task01 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入文件的路径:"); String str = input.next(); File file = new File(st
2020-08-07 00:50:53 181
原创 String、StringBuilder和StringBuffer常用类
String类:public final class String字符串是不变的。其值在创建后无法更改String str = “abc”;相当于:char data[] = {‘a’, ‘b’, ‘c’};String str = new String(data);StringBuilder类:public final class StringBuilder常用方法:append()//1.字符串转化(压缩) “aabbccdaa” -> “a2b2c2d1a2”
2020-08-01 10:48:59 183
原创 abstract应用之设计模式
工厂模式a、简单工厂设计模式//抽象父类package com.gem.demo.day0729;public abstract class ALittleBit { public abstract String getName();}b、工厂方法设计模式c、抽象工厂模式
2020-07-30 18:46:00 332
原创 JavaScript、前端
call/applycall和apply的作用和区别call/apply// 作用:改变this的指向;// 区别:传参列表不同;// call 需要把实参按照形参的个数传进去// apply 需要传一个arguments//1、 function Person(name, age) { this.name = name; this.age = ...
2020-01-15 14:40:47 120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人