自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 内网穿透两种方式

一、内网穿透引入?你是否被以下问题所困扰?我想装个B让其他同学在外网访问我的程序,应该怎么办?接了个小外包,给客户演示Demo没有站点怎么办?做微信、支付宝支付等其他第三方平台的功能,没有外网回调地址,应该怎么办?内网穿透,又叫NAT穿透,是计算机用语,翻译过来就是 你的电脑可以直接被你朋友访问。 通常我们的电脑是无法自己被访问的。因为我们的电脑缺少自己的独立的ip地址。现在ip稀缺,电信运营商已经不会随便分配固定ip给个人。通常实现内网穿透,是通过路由器上端口映射来实现的。但是路由器通常不

2021-05-21 10:43:32 1569

原创 网路编程

文章目录1、今日内容2、什么是网络编程?3、IP地址4、常见的DOS命令5、InetAddress类的使用6、端口号7、协议UDP和TCP的区别(重点)8、基于UDP协议的网络编程9、组播的实现(了解)10、广播的实现11、基于TCP协议实现网络编程12、TCP通讯的原理(1)原理(2)三次握手(3)四次挥手13、TCP的练习14、TCP的练习2代码1代码2代码3代码415、服务端代码问题分析1、今日内容 什么网络编程 网络编程3要素(IP地址,端口号,协议) 使用UDP协议实现网络编程

2020-12-06 22:42:12 175

原创 多线程

文章目录一、多线程第一天1、今日内容2、并发和并行3、进程和线程4、多线程的实现方式(1)方式一 :多线程的第一种实现方式(2)方式二:多线程的第二种实现方式(3)方式三:多线程的第三种实现方式(4)三种创建线程方法的对比5、Thread类中的成员方法(1)获取和设置线程的名称(2)线程休眠的方法(重点掌握)6、线程的优先级(了解)7、守护线程8、线程安全问题(1)基于同步代码块的锁机制来解决线程安全问题(2)同步方法和静态同步方法的锁对象(3)StringBulider和StringBuffer的区别(4

2020-12-06 22:30:05 168

原创 LINUX

文章目录一、 初识Linux1、 操作系统2、 Linux发展历程3、 Linux简介(1) 什么是 Linux(2) Linux的特点4、 Linux和Unix区别5、 Linux和Windows区别6、 Linux发行商和常见发行版7、 Linux 应用领域8、 Linux之CentOS9、 总结二、系统与设置命令1、 学习命令的原因2、 Linux 用户和用户组管理(1) Linux账号管理① 添加用户② 用户口令(密码)③ 修改用户④ 删除用户(2) Linux用户组① 增加用户组② 修改用户组③

2020-12-06 21:59:25 686

原创 JAVAWEB

文章目录一、 企业开发简介1、 JavaEE规范2、 Web概述3、 系统结构(1) 系统结构简介(2) C/S结构(3) B/S结构(4) 两种结构的区别及优略二、 Tomcat1、 Tomcat介绍(1) 关于服务器(2) Tomcat下载与安装(3) Tomcat各版本所需支持(4) Tomcat目录结构详解(5) webapp项目部署2、 Tomcat基本使用(1) Tomcat启动和停止及问题分析解决① 启动和停止② 启动问题(2) IDEA集成Tomcat服务器(3) Linux系统安装Tomc

2020-12-06 21:22:28 216

原创 黑马多线程

一、多线程第一天1、今日内容 相关的概念(进程,线程,并发,并行) 创建线程的方式 控制线程的方法 线程安全问题 死锁 生产者消费者模型2、并发和并行并行:在同一时刻,有多个指令在多个CPU上**同时**执行。并发:在同一时刻,有多个指令在单个CPU上**交替**执行。比如吃馒头:① 现在存在2个馒头,如果有两个人同时进行食用,这个现象就是并行;② 如果一个人需要同时食用这2个馒头(两个馒头轮流食用),这个现象就是并发;3、进程和线程进程:正在运行的应用

2020-11-18 23:49:21 832

原创 JavaSE-Git-v11.2-1-第1天[Git的使用(命令)]

1.Git的简介与安装Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.在企业开发中经常存在以下问题需要解决:代码备份问题(如果开发机上的代码丢失无法找回)版本控制问题(如果某个版本有缺陷无法回滚到正常版本)协同工作问题(多个开发者操作同一份代码 容易造成代码冲突问题)责任追溯问题(代码出现问题无法找到编写代码的人)**Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 **2.Git常用命令1.初始化Git

2020-11-15 18:17:27 115

原创 MySQL触发器

触发器1.1 介绍触发器:是指与表结构有关的数据库对象,指在insert、update、delete之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的特性:可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。使用别名old 和 new 来引用触发器中发生变化的记录。触发器类型new和old的使用insert型触发器new表示将要或者已经新增的数据update型触发器old表示修改之前的数据,new表示将要或者已经修改后的数据delete型

2020-11-11 23:13:12 173

原创 MySQL存储过程专题

MySQL存储过程0.环境说明:软件版本mysql5.6HeidiSQL1.使用说明​ 存储过程时数据库的一个重要的对象,可以封装SQL语句集,可以用来完成一些较复杂的业务逻辑,并且可以入参出参(类似于java中的方法的书写)。创建时会预先编译后保存,用户后续的调用都不需要再次编译。// 把editUser类比成一个存储过程public void editUser(User user,String username){ String a = "nih

2020-11-07 21:33:51 654

原创 01【熟悉】Shiro

一、【熟悉】Shiro概述1、什么是shiroApache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web 集成、缓存等。2、为什么要学shiro(1)既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。(2)shiro使用广泛,shiro可以运行在we

2020-11-05 23:23:22 208 2

原创 08【掌握】ssm+shrio前后端分离的使用方法

一、什么是前后端分离 后端只给前端提供数据接口 接文档的说明【以登陆为例】接口名:用户登陆接口地址: http://127.0.0.1:8080/login/login.action参数说明参数名参数说明要求Username登陆名必填pwd登录密码必填返回示例{ “code”:200, “msg”:”登陆成功”}复制项目创建ResultObjpackage com.sxt.utils;public enum ResultObj {

2020-11-05 23:03:12 139

原创 07【掌握】ssm+shiro+Realm实现集成

【掌握】ssm+shiro+Realm实现集成准备数据库数据结构张三 -user:query user:add user:update user:delete李四 —》user:query user:add user:update王五-----》user:query user:export搭建ssm的环境创建项目修改pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.

2020-11-04 00:49:14 88

原创 06【掌握】散列算法+凭证配置

一、散列算法散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法有MD5,SHA等。一般进行散列时最好提供一个salt(盐),比如使用MD5加密后的结果:e10adc3949ba59abbe56e057f20f883e使用MD5加密并加盐后的结果:19a45a53e8924a742f77183b8878a5fb使用MD5加密加盐并散列两次后的结果:b4f48723743cc5bfa7c1716296703ce1简单的可以破解出来https://cm

2020-11-03 20:04:46 226

原创 04自定义Realm实现授权

文章目录1、复制03_shiro_Authentication_realm项目2、创建ActiverUser3、创建RoleService、RoleServiceImpl4、创建PermissionService、PermissionServiceImpl5、修改UserRealm6、修改TestAuthenticationApp1、复制03_shiro_Authentication_realm项目2、创建ActiverUserpublic class ActiverUser { privat

2020-11-03 16:25:48 102

原创 05【掌握】自定义Realm实现认证

自定义Realm实现认证Shiro默认使用自带的IniRealm,IniRealm从ini配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义realm。一、Realm接口最基础的是Realm接口,CachingRealm负责缓存处理,AuthenticationRealm负责认证,AuthorizingRealm负责授权,通常自定义的realm继承AuthorizingRealm二、实现步骤1、创建项目2、创建Userpackage com.sxt.dom

2020-11-03 10:14:28 168

原创 三、日志框架

文章目录一、日志框架二、SLF4j使用1、如何在系统中使用SLF4j2、遗留问题三、SpringBoot日志关系四、日志使用;1、默认配置2、指定配置五、切换日志框架一、日志框架小张;开发一个大型系统;​ 1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件?​ 2、框架来记录系统的一些运行时信息;日志框架 ; zhanglogging.jar;​ 3、高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar?

2020-11-02 17:46:37 102

原创 spring相关注解说明

文章目录项目目录实体类启动器配置类依赖项目目录实体类@Data //直接生成get、set、toString、hashcode方法@AllArgsConstructor //生成所有参数的构造器@NoArgsConstructor //生成无参构造器public class User { private Integer id; private String name; private String address;}@Data //直接生

2020-11-01 22:33:05 116

原创 抽象工厂模式

文章目录一、抽象工厂模式的主要角色如下二、抽象工厂模式的结构图三、应用场景一、抽象工厂模式的主要角色如下(1)抽象工厂:提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。(Abstract Factory)(2)具体工厂:主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。(Concrete Factory)(3)抽象产品:定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。(Product)(4)具体产品:实现了抽象产

2020-10-28 17:05:48 100

原创 单例模式

1. 实现思路①构造器私有化(不能被实例化)。②定义一个该类的私有静态成员变量(保存这个唯一的实例)。③定义一个静态公开的getInstance方法,返回该类的实例。2.代码实现单例模式作用:是保证在 Java 应用程序中,一个类 Class 只有一个实例存在。第一种形式: 饿汉式,多线程安全描述:定义一个类,它的构造函数为 private 的,它有一个 static 的 private 的该类变量,在类初始化时实例话,通过一个 public 的 getInstance 方法获取对它的引用,继

2020-10-28 13:51:33 87

原创 适配器模式

一、适配器模式基本介绍二、类适配器//被适配的类public class Voltage220V { //输出220V电压 public int output220V(){ int src = 220; System.out.println("电压="+src+"V"); return src; }}//被适配接口public interface IVoltage5V { public int outpu

2020-10-28 13:46:17 68

原创 代理模式

一、代理模式1、代理(Proxy)模式为一个对象提供一个替身,以控制对该对象的访问。即通过代理对象访问目标对象,好处是:限制、增强或修改目标对象的功能。2、被代理对象可以是:远程对象,创建开销大的对象或者需要安全控制的对象。3、代理的不同形式静态代理,动态代理(jdk代理 / 接口代理)、Cglib代理(可以在内存动态的创建对象,而不需要实现接口,他是属于动态代理的范畴)。4、示意图二、静态代理1、静态代理静态代理在使用时,需要定义接口或者父类,被代理的对象与代理对象一起实现相同的接口

2020-10-28 00:35:22 63

原创 设计模式基础

一、开闭原则含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。作用:(1)对软件测试的影响:软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常运行。(2)可以提高代码的可复用性:粒度越小,被复用的可能性就越大;在面向对象的程序设计中,根据原子和抽象编程可以提高代码的可复用性。(3)可以提高软件的可维护性:遵守开闭原则的软件,其稳定性高和延续性强,从而易于扩展和维护。二、里氏替换原则里

2020-10-26 22:01:39 253

原创 springmvc面试题

springMVC和struts2的区别有哪些?(1)springmvc的入口是一个servlet即前端控制器(DispatchServlet)。而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。(2)springmvc是基于方法开发,请求参数传递到方法的形参,可以设计为单例或多例。struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。(3)springmvc通过参数解析器将request请求的内容解析,并给方法形参赋值,将数据和

2020-10-15 19:41:40 323

原创 JVM

1、JVM垃圾处理方法(1)复制算法(新生代)该算法的核心是将可用内存按容量划分为大小相等的两块, 每次只用其中一块, 当这一块的内存用完, 就将还存活的对象(非垃圾)复制到另外一块上面, 然后把已使用过的内存空间一次清理掉。优点:不用考虑碎片问题,方法简单高效。缺点:内存浪费严重。现代商用VM的新生代均采用复制算法,但由于新生代中的98%的对象都是生存周期极短的,因此并不需完全按照1∶1的比例划分新生代空间,而是将新生代划分为一块较大的Eden区和两块较小的Survivor区(HotSpot默认

2020-10-09 18:36:08 94

原创 设计模式

文章目录一、单例模式二、一、单例模式1. 实现思路①构造器私有化(不能被实例化)。②定义一个该类的私有静态成员变量(保存这个唯一的实例)。③定义一个静态公开的getInstance方法,返回该类的实例。2. 应用场景(1)某个类只需要生成一个对象的时候。(2)当对象需要被共享的场景。(数据库连接池,web中的配置对象)(3)当某个类需要频繁实例化,而创建的对象又频繁被销毁的时候。(多线程中的线程池,网络连接池)二、...

2020-10-04 22:51:52 76

转载 面试题:类的加载

  程序员看似光鲜的就业前景面前,逃不过的是层层的面试,想要进前沿的大公司没有个五六七八面,是不可能滴!而找工作的首个关卡就是笔试,想要获得高薪工作的小伙伴,先刷一波面试题吧!  类加载过程主要包含加载、验证、准备、解析、初始化、使用、卸载七个方面,下面一一阐述。一、加载  在加载阶段,虚拟机主要完成三件事:  1.通过一个类的全限定名来获取定义此类的二进制字节流。  2.将这个字节流所代表的静态存储结构转化为方法区域的运行时数据结构。  3.在Java堆中生成一个代表这个类的java.lan

2020-09-25 21:16:08 99

原创 Spring面试题

1、简述:对spring框架的理解?Spring是一个轻量级的开源框架,大量使用了IOC和AOP。IOC(就是控制反转):将类的创建和依赖关系写在配置文件里面,使用依赖注入方式注入到相应的类里使用,将创建对象的权利交给工厂。AOP(面向切面编程):将程序重复的代码抽取出来,使用动态代理的技术,在不修改源码的基础上,对已有的方法进行增强,提高了复用性。...

2020-09-23 22:06:17 133

原创 软件工程

一、软件工程基础知识1、软件工程概念答案: ①软件工程采用工程的概念、原理、技术和方法来开发与维护软件。②把管理技术和最好的技术方法结合起来以低成本开发出高质量的软件。③并有效的维护它。2、什么是软件生命周期?3个阶段?8个过程?软件生命周期: 是指软件的产生到报废的过程。三个阶段八个过程软件定义阶段①问题定义,②可行性研究,③需求分析软件开发阶段④总体设计,⑤详细设计,⑥编码和测试,⑦综合测试软件维护阶段⑧软件维护阶段3、简述软件危机?产生原因?软件

2020-09-23 20:43:08 1258 1

原创 MySQL

Q:SQL 的 select 语句完整的执行顺序?1、from 子句组装来自不同数据源的数据;2、where 子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用 having 子句筛选分组;6、计算所有的表达式;7、select的字段;8、使用 order by 对结果集进行排序。Q:左连接和右连接的区别?外连接左连接(左外连接):以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配的数据则显示相应字段

2020-09-23 15:21:39 78

原创 牛客用友201803

1、Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。在Java中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。2、有关线程的哪些叙述是对的DCBA. 一旦一个线程被创建,它就立即开始运行。 (错误)B. 使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。C. 当一个线程因为抢先机制而停止运行,它可能被放在可运行队列的前面。D. 一个线程可能因为不同的原因停止并进入就绪状态。3、下

2020-09-22 21:27:10 131

原创 牛客用友201802

1. Switch语句中,可以是哪些类型的数据?jdk1.7之前byte、short、int、charjdk1.7之后加入Stringjava8,switch支持10种类型基本类型:byte char short int包装类 :Byte,Short,Character,Integer String enum2. 线程安全的mapHashTable、SynchronizedMap、ConcurrentHashMapHashtable的方法都是synchrnized修饰的线程安全,Concur

2020-09-21 19:24:24 257

转载 XML解析——Java中XML的四种解析方式

文章目录XML概述XML的解析方式分为四种一、DOM解析二、SAX解析三、JDOM解析四、DOM4J解析XML概述XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。XML的解析方式分为四种1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只

2020-09-20 22:46:43 131

原创 JAVAWEB

文章目录1、Servlet的生命周期?2、post和get的区别?3、forward 和 redirect 区别?、JSP九大内置对象?、四个作用域对象?、过滤器生命周期方法1、Servlet的生命周期?servlet 被实例化后,调用 init 方法。请求到达时,运行 service()方法,调用 doGet()、doPost()等方法。当服务器决定将实例销毁时调用 destroy()方法。init():第一次请求资源的时候,执行且只执行一次 init 方法。service():第二次往后,执

2020-09-15 22:55:45 119

原创 JAVAWEB【08】Filter&Listener

今日内容 1. Filter:过滤器 2. Listener:监听器一、Filter:过滤器1. 概念:生活中的过滤器:净水器,空气净化器,土匪、web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。过滤器的作用:一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤…2. 快速入门:2.1. 步骤:1.定义一个类,实现接口Filter2.复写方法3.配置拦截路径web.xml注解2.2. 代码:@WebFilter("/

2020-09-15 11:26:48 83

原创 JAVAWEB【02】 HTTP

一、HTTP:1、概念:Hyper Text Transfer Protocol 超文本传输协议(1)传输协议:定义了,客户端和服务器端通信时,发送数据的格式。(2)特点基于TCP/IP的高级协议默认端口号:80基于请求/响应模型的:一次请求对应一次响应无状态的:每次请求之间相互独立,不能交互数据(3) 历史版本:1.0:每一次请求响应都会建立新的连接1.1:复用连接2、请求信息3、请求方式:HTTP协议有7中请求方式,常用的有2种GET:1. 请求参数在请求

2020-09-13 01:02:04 56

原创 JAVAEWB【07】综合练习笔记

今日内容1. 综合练习 1. 简单功能 1. 列表查询 2. 登录 3. 添加 4. 删除 5. 修改 2. 复杂功能 1. 删除选中 2. 分页查询 * 好处: 1. 减轻服务器内存的开销 2. 提升用户体验 3. 复杂条件查询2. 登录1. 调整页面,加入验证码功能2. 代码实现...

2020-09-12 00:41:13 83

原创 JAVAWEB【06】EL&JSTL笔记

今日内容1. JSP: 1. 指令 2. 注释 3. 内置对象2. MVC开发模式3. EL表达式4. JSTL标签5. 三层架构JSP:1. 指令 * 作用:用于配置JSP页面,导入资源文件 * 格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %> * 分类: 1. page : 配置JSP页面的 * contentType:等同于response.setContentType() 1. 设置响应体的mime类型以

2020-09-12 00:40:37 143

原创 JAVAWEB【05】Cookie&Session笔记

今日内容1. 会话技术 1. Cookie 2. Session2. JSP:入门学习会话技术1. 会话:一次会话中包含多次请求和响应。 * 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止2. 功能:在一次会话的范围内的多次请求间,共享数据3. 方式: 1. 客户端会话技术:Cookie 2. 服务器端会话技术:SessionCookie:1. 概念:客户端会话技术,将数据保存到客户端2. 快速入门: * 使用步骤: 1. 创建Cookie对

2020-09-12 00:40:05 194

原创 JAVAWEB【04】Response

今日内容1. HTTP协议:响应消息2. Response对象3. ServletContext对象HTTP协议:1. 请求消息:客户端发送给服务器端的数据 * 数据格式: 1. 请求行 2. 请求头 3. 请求空行 4. 请求体2. 响应消息:服务器端发送给客户端的数据 * 数据格式: 1. 响应行 1. 组成:协议/版本 响应状态码 状态码描述 2. 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。 1. 状态码都是3位数字

2020-09-12 00:39:36 143

原创 JAVAWEB【03】Request

今日内容:1. Servlet2. HTTP协议3. RequestHTTP:* 概念:Hyper Text Transfer Protocol 超文本传输协议 * 传输协议:定义了,客户端和服务器端通信时,发送数据的格式 * 特点: 1. 基于TCP/IP的高级协议 2. 默认端口号:80 3. 基于请求/响应模型的:一次请求对应一次响应 4. 无状态的:每次请求之间相互独立,不能交互数据 * 历史版本: * 1.0:每一次请求响应都会建立新的连接 * 1.1:

2020-09-12 00:01:59 735

空空如也

空空如也

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

TA关注的人

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