自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 手写区块链原型

链表定义区块链blockchaineddemo官方网站//用链表去定义区块链public class MyBlock { private String prehash=null; private int count=0; Block b=null; public void addblock(String data) { b=new Block(data); String hash=str2sha256(data, "sha-256"); //使用散列算法sha-256,得到新加入

2021-09-09 09:50:31 195

原创 数据结构与算法 概念

数据结构与算法 概念数据结构算法时间复杂度数据结构数据:对客观事物的符号表示,所有能输入到计算机中并被计算机程序处理的符号的总称数据元素:数据的基本单位,通常作为一个整体进行考虑和处理数据项:一个数据元素可由若干个数据项组成数据对象:性质相同的数据元素的集合,是数据的一个子集数据结构:相互之间存在一种或多种特定关系的数据元素的集合,关注的是数据元素之间的关系关系逻辑关系/逻辑结构1 :1表栈队列散列1 :n树二叉树二叉搜索树平衡二叉树B 树m :n

2021-09-03 22:22:19 133

原创 抽象数据类型

概念表 List【接口,实现了】:由数据元素 A1、A2、A3…An,N 个元素构成的序列(有序集合),数据元素之间有前驱后继的关系,大小为0的特殊表称为空表表的实现可增长数组的实现:数组一旦创建就不可变,固定容量,内存空间连续,支持索引访问Vector:线程安全,可以指定增量因子,默认为原来的2倍ArrayList :线程不安全,不可指定增量因子,默认为原来的1.5倍双链表的实现:需要时才分配空间,内存空间不连续,不容易索引访问LinkedList对比 ArrayLis

2021-09-03 21:58:09 897

原创 常见的排序算法

排序算法1、冒泡排序思想实现时间复杂度2、选择排序思想实现时间复杂度3、插入排序思想实现时间复杂度4、快速排序思想实现时间复杂度5、归并排序思想实现时间复杂度1、冒泡排序思想遍历数组,对当前尚未排好序的范围内的全部数,从前往后对相邻的两个数依次进行比较和调整,较大的数往后沉,较小的数往前冒,每一趟遍历,都会沉下一个最大的数,已沉下的数无需再参与比较,所以每一轮比较的次数也逐渐减少。实现public class Demo { public static void main(String[] a

2021-09-03 21:03:00 114

原创 前后端分离+部署到阿里云

前后端分离小demo + 部署到阿里云前言前端编写后端编写数据库部署到阿里云最终效果前言前端 Vue CLI 组件化开发,所需插件 vuex、axios、router后端 Spring Boot 工程核心:前端80访问后端9000,后端访问数据库3306小demo 功能简介:有导航栏可以切换,首页和关于页面是默认有的,备忘录是我新增的,备忘录页面的数据来自后端,后端访问数据库获得的,可以新增备忘录数据,可以删除备忘录中的数据,与后端数据库进行数据交互。前端编写1、新建一个 vue 工程,

2021-08-31 22:50:02 1420

原创 JWT 会话管理

JSON Web TokenJWT 结构生成密钥生成 token ,解析 tokenpostman 测试登录时生成 token解析tokenJWT 结构头部:解密算法、令牌类型直接 base64 编码负载:数据直接 base64 编码签名:验证令牌是否有效将前两部分拼接之后,加密处理,再base64编码所以令牌的结构为:头部.负载.签名官网 可解析令牌,如果签名【第三部分】无效是无法获得令牌的内容的注意的是,负载的数据虽然是经过base64编码,但也不能存放

2021-08-29 22:44:31 326

原创 JSP 简介

JSP什么是 JSP执行流程JSP 生命周期JSP 作用域区分 war 和 jar什么是 JSP服务端模板引擎,在HTML中嵌入 Java 代码,运行在服务端执行流程第一次访问时,JSP —转换—> Java —编译—> class ,服务端运行生成一个静态 HTML 发送给浏览器JSP 生命周期第一次访问时,tomcat 转化器 把 JSP 转换成 Java 文件Java 编译成了 class类加载实例化,创建一个实例执行 _jspinit执行 _jspservice

2021-08-29 22:02:36 71

原创 Spring Security

Spring SecuritySpring Security 核心部门认证与授权的联系和区别认证认证的4种方式授权会话管理会话管理技术cookiesessionsession 与 cookie 的关系与区别Spring Security 核心部门认证:登录、用户认证授权:对资源的访问控制、基于角色实现安全:内置了实现主流的加密算法会话管理:多个请求响应之间的业务流程切换【基于cookie、session】认证与授权的联系和区别认证是识别用户身份是否合法,授权是给已经通过认证的用户访问权限,

2021-08-29 21:56:58 172

原创 配置 Spring Boot 工程中支持 JSP

配置Spring Boot 支持 JSPJSP运行原理配置过程1、新建工程,选择的 Packing 方式是 War2、勾选Spring Web、Spring Boot DevTools 即可3、在pom.xml 添加 tomcat 依赖4、在 application.properties 配置文件中设置视图相关的5、在 webapp 下新建 /WEB-INF/jsp 目录结构6、在 jsp 文件夹中新建一个 index.jsp 文件,随便写点东西看看效果7、写个控制器8、启动项目,访问 http://127

2021-08-25 10:29:26 205

原创 基于JPA实现多表连接查询

基于 JPA 显示城市信息一、JPAJPA 定义二、任务实战1.项目结构2.项目配置信息3.实体4.映射5.控制器6.UI三、效果图一、JPAJPA 定义Java 持久化 APIJava 官方定义的 ORM 规范,只是一套规范,并没有提供底层的实现(基于抽象工厂设计模式,将定义与实现解耦),Hibernate 、TopLink 都是 JPA 的提供商,它们实现了 JPA 规范JPA 基于注解的方式实现了 实体类 到 关系表 之间的映射@Entity@Table@Id@Column@O

2021-08-21 21:58:37 6853 1

原创 前后端数据交互

简单实现前后端数据交互功能要求主要涉及框架后端新建项目新建数据库编写实体类编写映射类编写控制器前端headbody1.用户接口 UI2. JS 交互运行测试总结功能要求简单实现 员工信息 从 后端 服务器 数据库 加载 并 动态渲染 在Web端,以及Web端新增 员工信息 发送给 后端服务器 传入 数据库 中**主要涉及框架BootstrapVueajaxSpring Boot后端新建项目首先新建一个 Spring Starter Project 工程,勾选以下 4 个依赖整个项

2021-08-17 21:38:37 5114 2

原创 设计模式之观察者模式

观察者模式一级目录二级目录三级目录一级目录二级目录三级目录MVVM 是 基于观察者模式 设计的,那么具体是如何实现呢?观察者模式 又称为 订阅/发布模式M - V - VM:M 指 model,数据模型 - 被观察者(主题/发布方)V 指 view ,视图层 - 观察者(主题的订阅者)...

2021-08-17 08:31:22 172

原创 Java 三种代理模式

代理模式一、静态代理二、动态代理三、cglib代理一、静态代理​所谓 静态 就是程序运行 前 就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。缺陷:​需要为每一个被代理的类和方法都要重写一份。​代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,要为每一种方法都进行代理,在程序规模稍大时就无法胜任了,如果 接口增加一个方法,除了所以实现类需要实现这个方法外,所有代理类也需要实现此方法。目标对象(被代理的类)// 目标对象public class Life i

2021-08-16 09:42:07 184

原创 简单实现 IoC

IoC 控制反转

2021-08-15 21:49:06 104

原创 简单实现 AOP

AOP 面向切面编程

2021-08-15 21:48:03 164

原创 设计模式之单例模式

设计模式一、单例模式1.1 饿汉式1.2 懒汉式1.2.1 多线程不安全1.2.2 同步锁:锁方法1.2.3 同步锁:锁代码段1.2.4 双重检查锁1.3 基于静态内部类一、单例模式1.1 饿汉式无须考虑多个线程同时访问的问题;调用速度和反应时间优于懒汉式单例;资源利用效率不及懒汉式单例;系统加载时间可能会比较长。// 饿汉式public class EagerSingleton { // 类加载时,就创建对象(进行资源分配) private static EagerSingleto

2021-08-15 21:43:08 69

原创 Spring

Spring 相关学习笔记Ⅰ一、Spring1.1 Spring 包含1.1.1 Spring FrameWork 4个基本模块1.1.2 Spring FrameWork 的两个重要点① IoC 控制反转② AOP 面向切面编程1.2 Java EE 发展1.2.1 Java EE 不足1.2.2 社区 繁荣发展二、Spring Boot2.1 Spring Boot 概述2.2 Spring & Spring Boot三、Spring Cloud四、整合 MyBatisORM 对象关系映射 -

2021-08-15 20:36:56 130

原创 集合框架

1.集合与数据的对比集合是 Java API 所提供的一系列类,可以用于动态存放多个对象.集合与数组的不同在于:集合是大小可变的序列 ,而且元素类型可以不受限定 ,只要是引用类型.集合中不能放基本数据类型,但可以放基本数据类型的包装类.集合类全部支持泛型,是一种数据安全的用法....

2021-05-15 18:50:47 108

原创 实现 MyArrayList 类

模拟ArrayList类实现public class MyArrayList{ //实际元素的数目 private int size=0; //底层数组 private Object[] elementData; /* * 无参构造器 * 初始化一个长度为10的对象数组 */ public MyArrayList() { elementData=new Object[10]; } /* * 有参构造器 * 初始化一个长度为i

2021-05-15 18:16:39 360

原创 可变字符串

概念String 可以使用+运算符来联接字符串 但+会产生一个新的 String 实例 对象的生成需要内存空间与时间,不断产生 String 新实例是一个没有效率的行为 所以 如果一个字符串需要反复改变其内容[变更其版本] 使用 String 类是不可取的;在 Java 中提供了两个可变字符序列对象:StringBuffer 可变字符串[线程安全][效率低]StringBuilder 可变字符串[线程不安全][效率高][一般在单线程情况下 选用]StringBuffer类StringBuffe

2021-05-12 17:08:38 272

原创 代码块

代码块public class Test2{ public static void main(String[] args){ new TestA().fun(); } }class TestA{ public TestA{ System.out.println("3.构造器..."); } {//代码块 System.out.println("2.代码块..."); } static {//静态代码块 System.out.println("1.静态代码块...");

2021-05-12 16:44:30 38

原创 内部类

内部类1.成员内部类概念:一个类的内部出现了另一个类的定义[所谓内部类就是在一个类内部进行其他类结构的嵌套操作]public class Test{ public static void main(String[] args) { A a=new A(); a.fun2(); A.B b=new A().new B(); b.fun1(); }}class A { private int x=11; static int z=300; //静态成员变量

2021-05-12 16:32:33 48

原创 抽象类和接口的使用场景分析

抽象类与接口的区别1.语法方面的区别抽象类可以有构造方法,接口中不能有构造方法抽象类中可以有普通成员变量,接口中没有普通成员变量抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法抽象类中的抽象方法的访问类型可以是 public,protected 和默认类型;但接口中的抽象方法只能是 public 类型的[默认为:public abstract]抽象类中可以包含静态方法,接口中不能包含静态方法[包括静态块]抽象类和接口中都可以包含静

2021-05-12 15:05:28 545 1

原创 数组的常用算法

1.查询数组元素分析:先指定需要查找的元素 再 循环整个数组;当数组元素和需要查找的元素匹配时,记录对应的下标 [ 预先定义变量index让它的值为-1(可以保证当元素没有 发生匹配时,index记录的下标值为 数组在非法下标取值,表示没有找到) ] int index=-1; int[] array= {11,22,33,44,55}; Scanner s=new Scanner(System.in); System.out.println("输入要查找的元素: "); int

2021-05-12 13:58:22 687

原创 递归调用

递归概念方法在运行过程中 自己调用自己[或通过其他方法调用自己] 的过程demo-1有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2 个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?/*** * getAge(int n) - 获取第n个同学的年龄 * @param n - 第几个人 * @return - 年龄 */ public

2021-05-12 13:12:30 68

原创 数据的存储

数据存储1.如何存储缓存:CPU GPU – 容量小,存储时间短(计算时存储)内存:内存条 – 程序运行时存储外存:硬盘 U盘 光盘 – 容量大,存储时间长2.二进制每一个0或者1表示的是电路的通断每一个0或者1叫做二进制的位[bit比特位]在分配内存的时候不能一个位一个位的分配,至少每次分配8个位(一个字节byte),字节是计算机最小的有意义的存储单位.十进制的正整数–>二进制: 不断除2,取余数,再将余数倒过来byte a=59 ---> 00111011二

2021-03-08 08:15:27 143

原创 面向对象

面向对象的三大特征小结1.什么是封装?为什么需要封装?将一个数据和行为装在一个类中,对外提供访问接口;使用访问限定符来对类,属性和方法的可访问范围进行限定,然后再根据需要对外提供访问接口;public //公共的 随处可访问的protected //受保护的 同包中的类及其子类可访问 default //缺省的 在同包的类可访问 private //私有的 本类中可访问1、 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种

2021-03-07 22:20:58 45

原创 自定义数据结构之数组

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、用来存放字符串?二、使用步骤1.引入库2.读入数据总结前言模拟Java中的ArrayList数据结构自定义长度可变数组写了三个版本:1.存放字符串2.使用泛型3.优化的自定义长度可变数组一、用来存放字符串?在这里插入代码片示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimpo

2021-01-24 14:52:44 251

原创 浅谈数组

TOC前言数组:类型相同的一组数据一、为什么需要数组?eg:保存一个人的成绩 int score=100;若保存一个班所有人的成绩,这时就需要用到数组;二、数组的定义1.只声明,未初始化int[] a;int a[];2.数组的初始化初始化的时候指定数组的长度,其内容由系统确定int[] a=new int[5];内容根据数据类型来确定:整数byte short int long 默认是0浮点数float double 默认是0

2021-01-24 13:59:54 174

原创 网络通信

网络通信TCP客户端服务端UDP客户端FLowchart流程图导出与导入导出导入TCP传输控制协议,面向连接的,可靠的,消耗较多的网络资源。面向连接:在通信之前,设备之间一定要建立一个逻辑上的连接,所有的数据传输必须基于这个连接可靠性:在数据传输的过程中,会不断的检测数据的正确性;三次握手:重传机制,顺序检测机制,超时处理机制;四次挥手类似于打电话客户端首先发起连接的叫做客户端1.编写客户端,创建一个客户端套接字对象如果能创建成功,说明已经连接上Socket socket = new S

2021-01-19 16:30:34 95

空空如也

空空如也

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

TA关注的人

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