自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shake_shark_pp

新晋冒牌程序媛的努力之路!

  • 博客(92)
  • 资源 (1)
  • 收藏
  • 关注

原创 javaweb 02 http maven

HTTP基础HTTP(超文本传输协议)简单的请求-响应协议,通常运行在TCP之上文本:html,字符串超文本:图片,音乐,视频,定位,地图…默认端口:80Https:安全的默认端口:443两个时代http1.0HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接http2.0HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源Http请求客户端 – 发请求request – 服务器百度:Requ

2020-07-07 12:01:12 164

原创 javaweb 01静态web 动态web web服务器 tomcat

javaweb基本概念前言web开发web:网页静态webhtml,css提供给所有人看的数据始终不会发生变化动态web几乎所有的网站提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同技术栈:servlet/JSP, ASP, PHP在java中,动态web资源开发的技术统称为javawebweb应用程序web应用程序:可以提供浏览器访问的程序a.html b.html 多个web资源,这些web资源可以被外界访问,对

2020-07-06 11:03:02 2126

原创 javascript 07 jquery

jQueryjQuery库:里面存在大量的JavaScript函数jQuery cdn 链接获取jQuerycdn链接<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>D

2020-06-29 13:10:22 168

原创 JavaScript 06 操作表单 提交表单

操作表单表单是什么 form DOM树文本框 text下拉框 select单选框 radio多选框checkbox隐藏域 hidden密码框 password表单的目的:提交信息<form action="post"> <p> <span>username: </span><input type="text" id="username"></p><!--多选框的值,就是定义好的-->

2020-06-29 05:47:54 151

原创 JavaScript 05 操作DOM对象 增删改查

操作DOM对象DOM:文档对象类型浏览器网页就是一个DOM树形结构更新DOM节点遍历DOM节点:得到DOM节点删除一个DOM节点添加一个新的节点得到DOM节点要操作一个DOM节点,就必须先获得他<div id = "father"> <h1>title 1 </h1> <p id = "p1">p1</p> <p class = "p2">p2</p></div><sc

2020-06-28 07:34:21 145

原创 JavaScript 04 内部对象 date json ajax 面向对象编程 操作BOM对象

内部对象标准对象typeof '123'"string"typeof 123"number"typeof true"boolean"typeof NaN"number"typeof []"object"typeof {}"object"typeof Math.abs"function"typeof undefined"undefined"Datenow.getDay();5now.getMonth();5now.getDate();26now.getT

2020-06-28 05:58:07 109

原创 JavaScript 03 函数定义 局部变量 全局变量 方法

函数定义函数public 返回值类型 方法名(){ return 返回值;}定义方式一绝对值函数function abs(x){ if(x>=0){ return x; }else{ return -x; }}一旦执行到return 代表函数结束,返回结果如果没有执行 return,函数执行完也会返回结果,结果就是undefined定义方式二var abs = function(x){ if(x>=0){ return x

2020-06-27 07:27:27 305

原创 javascript 02 数据类型 数组 对象 流程控制 map set iterator

数据类型数组可以包含任意的数据类型var arr = [1,2,3,4,5,6]长度: arr.length元素可变、长度可变给 arr.length 赋值,数组的大小就会发生变化如果赋值过小,元素会丢失可以通过下标进行取值和赋值indexOf 通过元素获得下标索引arr = [1,2,3,4,'df']arr.indexOf(2)> 1字符串的“1”和数字1是不同的slice() 截取数组的一部分,返回一个新的数组,类似String的substrin

2020-06-26 13:27:43 105

原创 数据结构与算法 27 马踏棋盘 骑士周游 贪心算法优化

马踏棋盘代码实现思想实际上是图的深度优先搜索(回溯)创建棋盘 chessBoard,是一个二维数组将当前位置设置为已经访问,然后根据当前位置,计算马儿还能走那些位置,并放入到一个集合中(ArrayList),最多有8个位置。每走一步,就 step+1遍历ArrayList中存放的所有位置,看看哪个可以走通;如果走通,则继续;走不通,就回溯判断马是否完成了任务 step 和应该走的步数(整个棋盘的格数-1)比较,如果没有达到数量,则表示没有完成任务,将整个棋盘置0注意:马不同的走法会得到不同

2020-06-25 13:01:51 303

原创 javascript 01 基础语法 字符串 数据类型

javascript概述JavaScript是一门世界上最流行的脚本语言ECMAScript可以理解为是JavaScript的一个标准,latest version:es6;但是大部分浏览器还只停留在支持es5代码。开发环境与线上环境版本不一致。标签可以放在head中或body的尾部引入JavaScript内部标签<script> //...</script>外部引入abc.js//...​ test.html

2020-06-25 02:35:46 93

原创 数据结构与算法 26 弗洛伊德算法

弗洛伊德(Floyd)算法用于寻找给定的加权图中各个顶点间的最短路径,时间复杂度较高:立方阶,将每个顶点都看作是出发点,求到其它点的最短距离狄杰斯特拉算法是计算图中某一个顶点到其它顶点的最短路径,选定被访问顶点算法思路设置顶点vi到顶点vk的最短路径已知Lik,顶点vk到vj的最短路径已知为Lkj,顶点vi到vj的路径为Lij,则vi到vj的最短路径为:min((Lik+Lkj),Lij),vk的取值为图中所有顶点,则可获得vi到vj的最短路径至于vi到vk的最短路径Lik或者vk

2020-06-24 09:16:30 211

原创 数据结构与算法 25 狄杰斯特拉算法 dijkstra

迪杰斯特拉算法Dijkstra算法:用于计算一个节点到其它节点的最短路径,主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),知道扩展到终点为止应用:最短路径问题七个村庄(A,B,C,D,E,F,G)现在有六个邮差,从G点出发,需要分别把邮件分别送到A,B,C,D,E,F六个村庄,计算G村庄到其它各个村庄的最短距离dijkstra算法过程设置出发点为v,顶点集合V{v1,v2,vi…},v到V中各顶点的距离构成距离集合Dis,Dis{d1,d2,di…},Dis集合记录着v到图中各顶点的距

2020-06-24 04:23:07 436

原创 数据结构与算法 24 普里姆算法 修路问题 克鲁斯卡尔算法 kruskal 公交站问题

普里姆算法修路问题,给定村庄和距离,求将所有村庄联通,并且总的修建公路总里程最短?最小生成树最小生成树 Minimun Cost Spanning Tree给定一个带权的无向连通图,如何选取一颗生成树,使树上所有边上权的总和为最小,就叫最小生成树N个顶点,一定有 N-1 条边包含全部顶点N-1 条边都在图中求最小生成树的算法主要是普里姆算法和克鲁斯卡尔算法普里姆算法思路普里姆(prim)算法求最小生成树,也就是在包含 n 个顶点的连通图中,找出只有(n-1)条边包含所有 n 个顶

2020-06-23 11:56:07 353

原创 数据结构与算法 23 贪心算法

贪心算法集合覆盖问题:选择最少的广播台,让所有的地区都可以接受到信号贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择,从而希望能够导致结果是最好或最优的算法贪心算法得到的结果不一定是最优的,但都是相对金丝猴最优解的结果集合覆盖如何找出覆盖所有地区的广播台的集合?使用穷举法实现,列出每个可能的广播台的集合,这时称为幂集。假设有n个广播台,则广播台的组合共有 2^n-1个,假设每秒可以计算10个子集广播台数量n子集总数2^n需要的时间5323.2s

2020-06-22 12:58:29 98

原创 数据结构与算法 22 十大算法 分治算法 汉诺塔问题 动态规划 背包问题 字符串匹配 暴力匹配 kmp算法

分治算法divide and conquer将复杂问题分为两个或多个相同或相似的子问题,再把子问题分成更小的子问题,直到最后的子问题可以简单的直接求解,原问题的解即子问题的解的合并。应用:快速排序、归并排序、傅立叶变换、汉诺塔基本步骤:分治算法在每一层递归上都有三个步骤分解:将原问题分解为若干个规模较小,互相独立,与原问题形式相同的子问题解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题合并:将各个子问题的解合并为原问题的解汉诺塔问题如果有一个盘,A - C如果

2020-06-22 06:36:20 241

原创 数据结构与算法 21 图结构 深度优先遍历 广度优先遍历

图概念顶点 vertex边 edge路径无向图:顶点之间的连接没有方向有向图:顶点之间的连接有方向带权图:边带有权值,也叫网图的表示方法二维数组表示(邻接矩阵);链表表示(邻接表)邻接矩阵:表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,矩阵是row和col表示的1…n个点邻接表:邻接矩阵需要为每个顶点都分配n个边的空间,其实有很多边都是不存在的,会造成空间的一定损失邻接表的实现只关心存在的边,不关系不存在的边,因此没有空间浪费,邻接表由数组+链表组成代码实现

2020-06-21 09:59:47 146

原创 数据结构与算法 20 多路查找树 多叉树 B树 B+树 B*树

多路查找树二叉树的问题分析二叉树需要加载到内存,如果节点较多,会存在一下午问题:构建二叉树时,需要多次机械能 i/o 操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响节点海量,也会造成二叉树的高度很大,会降低操作速度多叉树如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway tree)多叉树通过重新组织节点,减少树的高度,能对二叉树进行优化B 树通过重新组织节点,降低树的高度,并且减少 i/o 读写次数来提升效率。文件系

2020-06-21 04:18:52 150

原创 数据结构与算法 19 平衡二叉树 左旋转 右旋转 双旋转

平衡二叉树AVL树BST存在的问题:如果给数列 {1,2,3,4,5,6} 构建二叉树,左子树全部为空,从形式上看,更像是一个单链表,插入速度没有影响,查询速度明显降低。解决方案:平衡二叉树平衡二叉树也称为平衡二叉搜索树(self-balancing binary search tree),又被称为 AVL 树,可以保证查询效率较高特点:它是一颗空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸

2020-06-21 01:43:07 225

原创 数据结构与算法 18 二叉排序树 创建、变量、删除

二叉排序树Binary Search Tree对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大如果有相同的值,可以将该节点放在左子节点或右子节点二叉排序树的创建和遍历中序遍历二叉排序树package tree.binarysearchtree;public class BinarySearchTreeDemo01 { public static void main(String[] args) { int[] arr

2020-06-20 09:47:14 111

原创 数据结构与算法 17 赫夫曼编码 数据解压 文件压缩 文件解压

赫夫曼编码数据解压byte[] --> Stringpackage tree.huffmancode;import java.util.*;public class HuffmanCodeDemo { public static void main(String[] args) { String content = "i like like like java do you like a java"; byte[] contentBytes = c

2020-06-20 03:41:31 190

原创 数据结构与算法 16 赫夫曼树 赫夫曼编码 数据压缩

赫夫曼树给定n个权值作为n个叶子节点,构造一颗二叉树,若该树的带权路径长度 weighted path length达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)哈夫曼树是带权路径长度最短的树,权值较大的节点离根较近若规定根节点的层数为1,则从跟节点到第L层节点的路径长度为L-1节点的带权路径长度:从根节点到该节点之间的路径长度与该节点的权的乘积树的带权路径长度(WPL):所有叶子节点的带权路径长度之和,WPL最小的就是赫夫曼树创建思路从

2020-06-19 10:47:19 263

原创 数据结构与算法 15 顺序存储二叉树 线索化二叉树 堆排序

顺序存储二叉树二叉树的节点以数组的方式存放顺序二叉树通常只考了完全二叉树第 n 个元素的左子节点为 2*n+1第 n 个元素的右子节点为 2*n+2第 n 个元素的父节点为 (n-1)/ 2 (向下取整)n:表示二叉树中的第几个元素(按0开始编号)package search;import java.util.ArrayList;public class ArrayBinaryTree { public static void main(String[] args) {

2020-06-19 02:10:29 166

原创 数据结构与算法 14 二叉树查找指定节点

二叉树查找指定的节点前序查找思路先判断当前节点的 id 是否等于要查找的如果相等,则返回当前节点定义一个节点变量存储结果,用于返回如果不等,则判断当前节点的左子节点是否为空,如果不为空,则递归前序查找如果左递归前序查找,找到节点,则返回,否则继续判断,当前节点的右子节点是否为空,如果不为空,则继续向右递归前 序查找// preorder traverse search // return Node if find, or return null public HeroNod

2020-06-18 02:21:01 877

原创 数据结构与算法 13 二叉树的遍历 前序遍历 中序遍历 后序遍历

树结构数据存储结构数组存储下标访问,速度快,有序数组可以使用二分查找等算法加快查找速度检索具体的值,或者按一定顺序插入值会整体移动,效率较低插入元素:数组需要扩容,每次在底层都需要创建新的数组,要将原来的数据拷贝到新的数据并插入新的数据链式存储插入、删除效率较高(不需要拷贝整个数组)数据查询效率较低,需要从头开始遍历树存储能够提高数据存储、读取的效率比如利用二叉排序树,既可以保证数据的检索速度,也可以保证数据的插入、删除、修改速度二叉树

2020-06-17 13:56:56 146

原创 java多线程06 线程协作 线程通信(管程法,信号灯法) 线程池

线程协作生产者消费者模式线程通信方法名作用wait()表示线程一直等待,直到其他线程通知,与sleep不同,会释放锁wait(long timeout)指定等待的毫秒数notify()唤醒一个处于等待状态的线程notifyAll()唤醒同一个对象上所有调用 wait() 方法的线程,优先级别高的线程优先调度注意:均是 Object 类的方法,都只能在同步方法或者同步代码块中使用,否则会抛出异常 IllegalMonitorStateException

2020-06-17 10:41:21 205

原创 数据结构与算法 12 哈希表 增删改查操作

哈希表(散列)哈希表:不使用数据库;节省内存;速度快 — 存储、查找数据根据键值码值直接进行访问的数据结构,通过把关键码值映射到表中一个位置来访问记录,以加快查找到速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表查找数据:java 程序 — 缓存层(1. 缓存产品 redis、memcache;2.自己写:哈希表:数组+链表/数组+二叉树)— 数据库将常用的数据从数据库加载到哈希表中,可以有多级缓存,提升查找效率问题要求:当新员工来报道,将其信息(id、年龄、性别、名字)加入,当输

2020-06-17 07:10:39 542

原创 数据结构与算法 11 查找算法 线性查找 二分查找 插值查找 斐波那契(黄金分割点)查找

查找算法常用查找算法顺序(线性)查找二分查找/折半查找 (需要是有序数组)递归/非递归插值查找斐波那契查找/黄金分割点查找线性查找package search;import java.util.ArrayList;public class SequenceSearch { public static void main(String[] args) { int arr[] = {1,5,3,6,9,2,3,-1}; ArrayList re

2020-06-17 01:58:59 233

原创 java多线程 05 线程同步方法 CopyOnWriteArrayList 死锁 lock锁 synchronized

线程同步并发:多个线程操作同一个资源线程同步 – 等待机制形成条件:队列|锁机制 synchronized解决线程安全性同步方法synchronized 关键字 包括两种用法:synchronized 方法和 synchronized 块synchronized 方法控制对“对象”的访问,每个对象对应一把锁,每个 synchronized 方法都必须获得调用该方法的对象的锁才能执行,否则线程会堵塞,方法一旦执行,就独占该锁,直到该方法返回才释放锁,后面被阻塞的线程才能获得这个锁,继续执行若

2020-06-16 11:38:15 279

原创 java多线程 04线程状态观测 线程优先级 守护线程

线程状态观测NEW:尚未启动的线程处于此状态RUNNABLE:在 java 虚拟机中执行的线程处于此状态BLOCKED:被阻塞等待监视器锁定的线程处于此状态WAITING:正在等待另一个线程执行特定动作的线程处于此状态TIMED_WAITING:正在等待另一个线程执行动作达到指定等待时间的线程处于此状态TERMINATED:已退出的线程处于此状态package basic;public class TestState { public static void main(Str

2020-06-16 05:49:32 118

原创 数据结构与算法 10 排序算法 快速排序 基数排序 归并排序

排序算法快速排序对冒泡法的改进时间复杂度:O(nlogn)基本思想:通过一趟排序将要排序的数据分割成两个独立的部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行package sort;import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int[] arr = {

2020-06-16 03:41:46 201

原创 java 多线程 03 线程状态 线程方法 线程停止 线程休眠 线程礼让

线程状态new 新生状态Thread t = new Thread()线程对象一旦创建就进入到新生状态就绪状态当调用 start() 方法,线程立即进入就绪状态,但不意味着立即调度执行;(调度进入运行状态)阻塞状态当调用 sleep,wait 或同步锁定时,线程进入阻塞状态,就是代码不往下执行,阻塞事件解除后,重新进入就绪状态,等待 cpu 调度执行运行状态进入运行状态,线程才真正执行线程体的代码块dead 死亡状态线程中断或者结束,一旦进入死亡状态,就不能再次启

2020-06-15 10:10:41 150

原创 java多线程 02 静态代理 lambda表达式

静态代理真实对象(目标对象)和代理对象要实现同一个接口代理对象要代理真实角色好处:代理对象可以做很多真实对象做不了的事情 真实对象专注做自己的事情package basic;public class StaticProxy { public static void main(String[] args) { You you = new You(); new Thread(()-> System.out.println("i love you")).

2020-06-15 07:55:28 102

原创 数据结构与算法 09 排序算法 时间复杂度 冒泡排序 希尔排序 插入排序 选择排序

排序算法分类内部排序:将需要处理的数据加载到内存中进行排序;插入排序:直接插入排序 希尔排序选择排序:简单选择排序 堆排序交换排序:冒泡排序 快速排序归并排序基数排序 - 桶排序升级版外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序(内存与外存结合)算法的时间复杂度事后统计:程序运行的时间;需要运行程序、依赖于计算机的硬件、软件等环境因素事前估算的方法:分析算法的时间复杂度时间频度时间频度:一个算法花费的时间与算法的执行次数成正比例,一个算法

2020-06-15 06:31:19 333 1

原创 数据结构与算法 08 递归 迷宫问题 八皇后问题

递归 recursion递归调用规则:当程序执行到一个方法时,就会开辟一个独立的空间(栈)每个空间的数据(局部变量)是独立的调用自身方法,向上继续开辟空间自顶向下进行执行package recursion;public class Demo00 { public static void main(String[] args) { test(4); } public static void test(int n){ if(n>2

2020-06-14 07:32:44 171

原创 java多线程 - 01 多线程的创建 Thread Runnable Callable

多线程 multithreading多线程:多条执行路径,主线程和子线程并行交替执行程序:指令和数据的有序集合,本身是没有任何运行的含义,是一个静态的概念进程 process:执行程序的一次执行过程,是一个动态的概念。是系统资源分配的单位通常一个进程中可以包含若干个线程,一个进程至少有一个线程,线程是CPU调度和执行的单位核心概念线程是独立的执行路径在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,垃圾回收(gc)线程main() 称为主线程,为程序的入口,用于执行整个程

2020-06-14 02:55:27 87

原创 网络编程基础知识 02 - udp 消息发送与接收 网络资源下载

TOMCAT服务端自定义 STomcat 服务器 S客户端自定义 C浏览器 BUDP发消息:不用连接,需要知道对方的地址发送消息package net.internet;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;// don't need connect server

2020-06-12 10:01:05 93

原创 网络编程基础知识 - 01 IP 端口TCP UDP 客户端 服务器端通讯文件传输

网络编程目的:数据交换,通信定位网络上的一台主机(端口)javaweb:网络编程 B/S网络编程:TCP/IP C/S如何实现网络的通信?通信双方的地址:ip,端口号规则:网络通信的协议 http,ftp,tcp,udp…IPip地址: InetAddress唯一定义一台网络上的计算机127.0.0.1:本机 localhostip地址的分类ip地址分类 ipv4/ipv6ipv4:127.0.0.1 四个字节组成 0-255 42亿个ipv6: 128位

2020-06-10 03:26:58 150

原创 数据结构与算法java - 07 中缀表达式 前缀表达式 后缀表达式 逆波兰表达式 逆波兰计算器 中缀表达式转为逆波兰表达式

前缀表达式Prefix expression 波兰表达式,运算符都位于操作数之前从右向左扫描表达式,遇到数字时,将数字压入堆栈;遇到运算符时,弹出栈顶的两个数,用运算符对他们做相应的计算(栈顶元素和次顶元素),并将结果入栈,重复上述过程直到表达式的最左端举例:(3+4)×5-6 prefix expression: -×+3456从右向左扫描,将 6,5,4,3 压入栈遇到 + 弹出 3、4,计算 3+4 得到7,将 7 入栈接下来是 ×,弹出 7、5,计算 7 × 5,将 3

2020-06-09 07:14:16 317 2

原创 数据结构与算法java - 06 栈的实现 中缀表达式的综合计算器实现 问题分析与解决

栈 stack先入后出 FILO-FIRST IN LAST OUT 有序列表限制线性表中的元素的插入和删除只能在线性表的同一端进行。允许插入和删除的一端,为变化的一端,称为栈顶 top,另一端为固定的一端,称为栈底 bottom最先放入栈中的元素在栈底,最后放入的在栈顶删除元素,最后放入的元素最先被删除,最先放入的元素最后被删除出栈:pop入栈:push应用场景子程序的调用处理递归调用表达式的转换(中缀转后缀)二叉树的遍历图形的深度优先搜索 depth -

2020-06-09 02:41:51 201 1

原创 Java高级语言 - GUI 04 swing 窗口 面板 弹窗 按钮 单选框 复选框

Swing窗口 面板 Jframepackage com.swing.jframe;import javax.swing.*;import java.awt.*;public class JFrameDemo01 { public static void main(String[] args) { new MyJFrame2().init(); }}class MyJFrame2 extends JFrame{ public void init(){

2020-06-08 07:56:08 330 2

实验案例一关联规则.rar

数据挖掘 关联规则 spss modeler

2020-06-07

空空如也

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

TA关注的人

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