- 博客(36)
- 资源 (3)
- 收藏
- 关注
原创 剑指设计模式--单例模式
目录1. 例模式介绍2. 单例模式有八种方式2.1 饿汉式(静态常量)2.1.1 步骤如下2.2.2 代码实现2.2.3 优缺点说明2.2 饿汉式(静态代码块)2.2.1 代码实现2.2.2 优缺点说明2.3 懒汉式(线程不安全)2.3.1 代码实现2.3.2 优缺点说明2.4 懒汉式(线程安全,同步方法)2.4.1 代码实现2.4.2 优缺点说明2.5 懒汉式(线程安全,同步代码块)2.5.1 代码实现2.5.2 优缺点说明.
2020-07-16 22:42:40
219
原创 设计模式之设计模式七大原则
1.设计模式的目的编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好:1) 代码重用性(即:相同功能的代码,不用多次编写)2) 可读性(即:编程规范性,便于其他程序员的阅读和理解)3) 可扩展性(即:当需要增加新的功能时,非常的方便,称为可维护4) 可靠性(即:当我们增加新的功能后,对原来的功能没有影响)5)使程序呈现高内聚,低耦合的特性分析金句:设计模式包含了面向对象的精髓,“懂了 设.
2020-07-06 22:56:15
220
原创 算法其实很简单—马踏棋盘算法(骑士周游)
目录1.马踏棋盘算法介绍和游戏演示2.马踏棋盘游戏代码实现3.骑士周游问题的解决步骤和思路4.代码优化5.代码实现1.马踏棋盘算法介绍和游戏演示1)马踏棋盘算法也被称为骑士周游问题2)将马随机放在国际象棋的8X8棋盘Board[0~ 7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格3) 游戏演示:http://www.4399.com/flash/146267_2.htm2.马踏棋盘游戏代码实.
2020-06-27 18:41:16
2708
原创 算法其实很简单—迪杰斯特拉(Dijkstra)算法
目录1.迪杰斯特拉(Dijkstra)算法介绍2.克鲁斯卡尔最佳实践公交站问题3.迪杰斯特拉(Dijkstra)算法过程4.代码实现1.迪杰斯特拉(Dijkstra)算法介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算-一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广^度优先搜索思想),直到扩展到终点为止。2.克鲁斯卡尔最佳实践公交站问题1)战争时期,胜利乡有7个村庄(A,B,C,D,E,F,G),现在有六个邮差,.
2020-06-27 15:49:16
726
原创 算法其实很简单—弗洛伊德(Floyd)算法
目录1.弗洛伊德(Floyd)算法介绍2.弗洛伊德(Floyd)算法最佳应用-最短路径3.弗洛伊德(Floyd)算法图解分析4.代码实现1.弗洛伊德(Floyd)算法介绍1)和Dijkstra算法一 样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵 奖获得者、斯坦福大学计算机科学系教授罗伯特.弗洛伊德命名2)弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径3)迪杰斯特拉算法用于计算图中某一个顶点到
2020-06-27 12:51:51
23972
2
原创 算法其实很简单—克鲁斯卡尔算法
目录1. 克鲁斯卡尔算法介绍2. 公交站问题2.1 克鲁斯卡尔算法图解2.2 克鲁斯卡尔算法分析2.3 如何判断是否构成回路3. 代码实现1. 克鲁斯卡尔算法介绍1)克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。(最小生成树也可以通过普里姆算法生成,具体可参考算法其实很简单—普利姆算法)2)基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路3)具体做法:首先构造一一个只含n个顶点的森林,然后依权值从小到大从连通网中选
2020-06-18 00:39:40
1644
1
原创 算法其实很简单—普利姆算法
目录1. 普里姆算法介绍2. 修路问题2.1 题目表述2.2 最小生成树2.3 普利姆算法图解3. 代码实现1. 普里姆算法介绍普利姆(Prim)算法求最小生成树,也就是在包含n个顶点的连通图中,找出只有(n-1)条边包含所有n个顶点的连通子图,也就是所谓的极小连通子图 普利姆的算法如下:设G=(V,E)是连通网, T=(U,D)是最小生成树,V,U是顶点集合,E,D是边的集合 若从顶点u开始构造最小生成树,则从集合V中取出顶点u放入集合U中,标记顶点v的visited
2020-06-16 00:27:44
1447
3
原创 算法其实很简单—KMP算法
目录1. KMP算法介绍2. KMP算法最佳应用—字符串匹配问题3. 思路4. 代码实现4.1 KMP算法实现4.2 暴力匹配算法实现1. KMP算法介绍KMP是一个解决模式串在文本串是否出现过,如果出现过,最早出现的位置的经典算法 Knuth-Morris-Pratt字符串查找算法,简称为“KMP算法”,常用于在一个文本串S内查找一个模式串P的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,
2020-06-11 00:38:09
239
2
原创 算法其实很简单—动态规划
1. 动态规划算法介绍动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的算法 动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 与分治不同的是,适用于动态规划求解的问题,经分解得到的子问题往往不是独立的(即下一个子阶段的求解是建立在上一个子阶段的基础上,进行进一步求解)。 动态规划可以通过填表的方式来逐步推进,得到最优解。2.动态规划的最佳实践—背包.
2020-06-09 23:46:22
281
原创 算法其实很简单—分治算法
目录1. 分治算法简单介绍1.1介绍1.2 分治算法可以求解的一些经典问题:2. 分治算法的基本步骤3. 分治算法最佳实践—汉诺塔4. 代码演示1. 分治算法简单介绍1.1介绍分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的问题......知道最后的子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序、归并排序)等等。1.2 分治..
2020-06-05 01:07:50
349
2
原创 算法其实很简单—二分查找算法
目录1. 二分查找基本概念2. 二分查找的思路3.代码实现1. 二分查找基本概念二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 关键: 1.必须采用顺序存储结构。 2.必须按关键字大小有序排列。二分查询的次数,最多不超过2. 二分查找的思路二分查找的思路其实很简单,二分,顾名思义就是一分为二,由于二分法的前提是必须为有序的、顺序存...
2020-06-04 23:27:38
314
原创 算法其实很简单—平衡二叉树的构建
1. 基本概念平衡二叉树的本质其实也是二叉排序树,具体可参考:算法其实很简单—二叉排序树的构建算法其实很简单—二叉排序树的删除平衡二叉树的特点是任意节点的子树的高度差都小于等于1。2. 整体思路平衡二叉树的构建基本分为三种情况,左旋转、右旋转、双旋转1、当根节点的右子树的高度比左子树高度大于1时,即高度相差2以上,则进行左旋转,思路如下图:2、当根节点的左子树的高度比右子树高度大于1时,则进行右旋转:3、如下图,复合右旋转条件,但是右旋转后还不是平衡二..
2020-06-02 23:00:05
2089
原创 算法其实很简单—二叉排序树的删除
关于二叉排序树的基本概念以及迭代构建,可参考上篇:算法其实很简单—二叉排序树的构建 1. 二叉排序树删除节点思路二叉排序树的删除情况比较复杂,大概分为三种情况(以下图为参考):1.2删除只有一个节点直接让root == null1.2. 删除子节点比如上图中的2、5、9、12找到需要删除的节点,targetNode 找到需要删除节点的父节点,parentNode 判断targetNode是parentNode的左子节点还是右子节点 如果是左子节点,则parentN.
2020-06-01 23:26:58
1241
原创 算法其实很简单—二叉排序树的构建
1.什么是二叉排序树二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。二叉排序树特点:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。简单说,就是每个父节点大于当前节点的左子节点,小于当前节点的右子节点。2.构
2020-06-01 00:10:10
2522
原创 JMeter压测数据实时监控
1.InfluxDBInfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。1.1.Influxdb关键特性1)支持类似SQL的查询语法2)提供了Http Api直接访问3)存储超过10亿级别的时间序列数据4)灵活的数据保留策略,可以定义到Database级别(只保留最热的数据)5)内置管理接口和CMD6)飞一般速度的聚...
2020-05-30 21:50:12
1620
原创 算法其实很简单—赫夫曼树的构建
1.赫夫曼树的概念 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。2.构建赫夫曼树的思路首先了解一下以下几个概念:1、路径和路径长度在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。2、结点的权及带...
2020-05-29 00:11:17
432
原创 算法其实很简单 — 堆排序
目录1. 基本概念篇1.1 堆排序1.2大顶堆和小顶堆2. 基本思路与步骤2.1如何构建大顶堆2.2排序过程3. 代码实现1. 基本概念篇1.1 堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。1.2大顶堆和小顶堆大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排.
2020-05-28 00:31:47
213
原创 Java生成JMeter配置文件.jmx以及调用示例
1 Maven 配置jar包 <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_http</artifactId> <version>${jmeter.version}</version> ...
2020-05-26 22:06:17
5201
3
原创 《代码大全》读书笔记
第1章 欢迎进入软件构建的世界1.1 什么是软件构建 构建活动主要是编码与调试,但是还会详细设计、规划构建、单元测试、集成、集成测试等活动。构建有时候也会被认为是“编码(coding)”或“变成(programming)”。编码算不上是最贴切的词,因为他有一种把已经存在的设计机械化的翻译成计算机语言的意味,而构建并不是那么机械化的,需要可观的创造力和判断力。 构建活动中的具体任务:验证有关的基础工作已经完成,因此构建活动可以顺利的进行下去 确定如何测试所有的代码 设计并编写...
2020-05-25 22:08:16
235
1
原创 手把手教你Zookeeper集群搭建
部署前准备本次部署为3台主机集群zookeeper官网下载,本次部署版本为zookeeper-3.4.9 主机jdk安装,本次部署版本为jdk1.8部署过程压缩包解压tar -zxvf zookeeper-3.4.9.tar.gz 修改zookeeper配置文件,在zookeeper-3.4.9/conf/文件夹下,将zoo_sample.cfg复制重命名为zoo.cfg,对应修...
2020-05-07 23:13:56
166
1
原创 PDF转图片乱码问题解决
问题描述1、PDF转图片使用技术:pdfbox(具体代码百度随处可见)2、问题概述:控制台报错,找不到字体,C:\Windows\FONTS\mstmc.ttf10:52:06.162 [main] ERROR org.apache.pdfbox.pdmodel.font.FileSystemFontProvider - Could not load font file: C:\Wi...
2019-12-24 11:15:17
10958
23
原创 spring cloud集成swagger2(监听多个项目)
配置详解1、接口服务工程的pom文件中引入swagger2<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version><...
2019-07-12 23:27:08
10453
12
原创 spring boot集成generator、mybatis
generator配置引入pom引入jdbc、mysql<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><dep...
2019-04-04 16:35:49
152
原创 Dockerfile初体验
Dockerfile简单示例简单记录一下使用Dockerfile创建容器的流程创建Dockerfile文件新建一个空文件夹,新建文件名为Dockerfile文件编写Dockerfile构建镜像注意docker build -t nginx:v2 .最后边有个点,表示当前路径,该指令也可以换做:docker build -t nginx:v2 /...
2019-04-03 09:34:25
105
原创 docker学习总结
docker学习总结核心概念与安装配置什么是dockerDocker架构与内部组件docker有什么优点虚拟机与容器区别应用场景docker安装EPEL扩展包安装Docker安装镜像管理什么是镜像?镜像从哪里来?镜像工作原理?镜像文件存储结构?镜像管理命令容器管理创建容器常用选项命令管理容器数据持久化构建Java环境镜像核心概念与安装配置什么是dockerDocker是一个开源的应用容器引擎...
2019-02-26 16:17:07
615
原创 Linux主机性能监测--nmon的使用
下载:nmon安装包: http://nmon.sourceforge.net/pmwiki.php?n=Site.Download 选择适合自己系统的版本 centos7_x86_64适合的最新nmon版本为: nmon16e_mpginc.tar.gz 3.5MB nmon_analyser工具: https://www.ibm.com/developerworks/commu...
2018-07-10 15:04:10
361
原创 jvm应用程序性能监测工具使用
前言 在实际生产中,我们需要对Java程序进行性能分析,比如Tomcat、jvm等,在这里简单介绍一下。Jconsole使用对于Windows系统来说,只需要安装jdk即可使用该工具。1、 启动:点击C:\Program Files\Java\jdk1.7.0_80\bin\jconsole.exe即可启动,如图:2、 如只监测本机,在本地进程中选择你要监测的程序即可,包括内存、线程、...
2018-06-26 17:09:20
173
原创 Jmeter压测工具使用
前言简单介绍一下JMeter的作用吧:1、 能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。2、完全的可移植性和100% 纯java。3、完全多线程 框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。4、缓存和离线分析/回放测试结果 安装1、 JMeter下载地址http://jmeter.apache.org/download...
2018-06-26 16:51:51
1583
原创 Java基础(可能是面试题哦),答案随时更新
J2SE基础1. 九种基本数据类型的大小,以及他们的封装类。2. Switch能否用string做参数?3. equals与==的区别。4. Object有哪些公用方法?5. Java的四种引用,强弱软虚,用到的场景。6. Hashcode的作用。7. ArrayList、LinkedList、Vector的区别。
2017-11-07 12:53:33
1315
2
原创 webupload flash上传和整合springmvc
1.flash点击按钮没反应最大的可能就是Uploader.swf路径不对,这个问题纠结了我半天2. 整合springmvc,直接上代码2.1 jsp页面引入相关js和css2.2 jsp页面
2017-07-04 17:14:58
843
原创 lucene--索引的创建
public class IndexUtil { private String[] ids = { "1", "2", "3", "4", "5", "6" }; private String[] emails = { "aa@qq.com", "bb@sina.com", "cc@nuc.com", "dd@qq.com", "ee@sina.com", "ff
2017-03-04 23:59:29
303
原创 lucene生成索引相关文件
lucene生成索引相关文件 .fdt和.fdx : 保存store为YES的数据 .fnm : 保存域的信息 .frq : 相同出现的次数,用来做评分和排序的 .nrm : 存储评分信息的 .prx : 存储偏移量 .tii 和 .tis : 索引里面所有内容信息 segments : 版本信息十个文件缺一不可,否则索引无效
2017-03-04 22:50:24
462
原创 关于Java音频播放不循环和暂停、继续播放(非Android)
我使用的是MediaPlayer播放,设置其不循环播放方法为setPlaybackLoop()需要暂停时,只需要设置setPlaybackLoop()为true,使用stop()方法,即可暂停播放继续播放设置setPlaybackLoop()为,paly()就会继续播放,设为false
2016-11-24 15:44:54
5831
5
转载 JFram制作简单音乐播放器
package com.dgit.qtts.main;import java.awt.Container;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import
2016-11-24 09:41:41
601
原创 关于Navicat for mysql无法连接问题
Navicat for mysql几天没有使用Mysql数据库,今天做项目的时候打开Navicat for Mysql的时候,发现连接不上,显示2003错误,截图如下随后开始了问题的解决,各种百度,各种找最终没有解决。://windows/system32/drivers/etc/hosts.txt文件,查看localhost是否指向本机IP地址127.0.0.1,确定正确后开始尝试连接数...
2015-11-14 00:54:09
6109
PdfUtils.java
2020-05-25
Mockplus.pj.zip
2019-12-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人