- 博客(65)
- 资源 (1)
- 收藏
- 关注
原创 finally不是一定会执行
在网上看到的帖子,基本上都是说finally一定会执行,开始我也一直是这么认为的。但后来我对这块内容做了测试,也看了一些文章,发现finally不一定会执行!结论finally不一定会执行,只有与finally相应的try代码块得到执行的情况下,finally才会执行!!实例代码下下面的示例代码中,有finally代码块,但结果是finally的代码没有被执行,内容...
2020-04-18 11:01:49 5474 2
原创 数据结构与算法(九)—— 二叉树结构及其实现和应用
4. 霍夫曼树(Huffman Tree)举个例子说明下。现在考试的结果都以百分制来表示学科的成功。但这带来了一个弊端,那就是很容易让学生、家长和老师以分取人,这样就让分数代表了一切。这样也容易间接导致92与95这种分差很接近的学生受到不公平的待遇,这样自然是不公平的。于是在如今提倡素质教育的背景下,很多学科,特别是小学的学科成绩很多改作了优秀、良好、中等、及格和不及格这样的评测结果,...
2020-04-07 21:03:54 2414
原创 数据结构与算法(八)—— 树结构及其实现和应用
注:本篇内容参考了《Java常用算法手册》、《大话数据结构》和《算法导论(第三版)》三本书籍。本人水平有限,文中如有错误或其它不妥之处,欢迎大家指正!1.树的概述树结构的数据在生活中应该见的比较多,像国家的行政机构,一个公司的组织机构等。它们有个共同点,就是都可以表示成一个层次关系,这种层次关系可以抽象为树结构。1.1树的定义树(Tree)是n ()个结点的有...
2020-04-07 17:13:23 4353
原创 数据结构与算法(七)—— 散列表结构及其实现和应用
注:本篇内容参考了《Java常用算法手册》、《大话数据结构》和《Java编程(第四版)》三本书籍。本人水平有限,文中如有错误或其它不妥之处,欢迎大家指正!...
2020-01-06 18:00:13 2889 2
原创 数据结构与算法(六)—— 队列及其实现和应用
注:本篇内容参考了《Java常用算法手册》、《大话数据结构》和《Java编程(第四版)》三本书籍,并参考了在线工具网站中对于队列相关Java类的一些说明。 文中涉及的java以Java 1.8为准。本人水平有限,文中如有错误或其它不妥之处,欢迎大家指正!目录1. 队列1.1 队列定义1.2队列的特点1.3队列的分类1.4. 队列的操作1.4.1 入队列...
2019-12-30 18:36:40 2600
原创 数据结构与算法(三)—— 线性表、顺序表和链表
注:本篇内容参考了《Java常用算法手册》、《大话数据结构》和《算法导论》书籍。本人水平有限,文中如有错误或其它不妥之处,欢迎大家指正!目录1.线性表概念2线性表的存储结构2.1线性表的顺序存储结构2.1.1 定义2.1.2 数组长度与线性表的度度2.1.3 地址计算方法2.1.4 操作2.1.5 Java实现2.1.5 优缺点2.2线...
2019-12-26 18:38:18 1973
原创 数据结构与算法(五)—— 栈及其实现和应用
注:本篇内容参考了《Java常用算法手册》、《大话数据结构》和《Java编程(第四版)》三本书籍。本人水平有限,文中如有错误或其它不妥之处,欢迎大家指正!目录1.栈的概述2.栈的操作2.1入栈(Push)2.2出栈(Pop)2.3返回栈项(Peek)3.进出栈的变化形式3.1 示例3.2规则4. 栈的存储结构及其实现4.1栈的存...
2019-12-16 14:53:01 2543
原创 数据结构与算法(四)—— 数组及Java数组的应用
注:本篇内容参考了《Java编程思想(第四版)》和《Java语言程序设计》两本书书籍。本人水平有限,文中如有错误或其它不妥之处,欢迎大家指正!目录1.数组的概念2.数组的特点3一维数组3.1一维数组的声明3.2 数组的创建3.3数组的初始化3.4 数组的引用4二维数组4.1 二维数组声明和初始化4.2 二维数组区分4.2.1 以...
2019-12-13 15:30:22 737
原创 数据结构与算法(二)—— 算法基础知识与效率度量
注:本篇内容参考了《Java常用算法手册》和《大话数据结构》。本人水平有限,文中如有错误或其它不妥之处,欢迎大家指正!目录1,算法概念及特征1.1概念1.2特征1.3算法的设计要求2 算法分类2.1 按照应用分类2.2 按照确定性分类2.3 按算法的思路分类3 算法相关概念及区别3.1算法和公式的关系3.2 算法和程序的关系3.3 算法...
2019-12-11 15:39:16 1712
原创 数据结构与算法(一)——数据结构基础知识
注:本篇内容参考了《Java常用算法手册》一书。本人水平有限,文中如有错误或其它不妥之处,欢迎大家指正!记得几年前曾学过数据结构和算法,看的是《Java常用算法手册》,当时在武汉也是找了几个书店才买到。学了一段时间觉得书还不错,自己也明白了不少编程的知识。但时间一久,工作中也用的很少,慢慢的就忘记了好多。现在也需要重新学学了,毕竟工作这些年了,至少要必须要掌握一些常用的数据结构。...
2019-12-09 17:30:12 641
原创 集成Swagger的问题(swagger-resources/configuration/ui 404、弹窗等)解决
一、背景 关于swagger的特性功能,用过的人都很清楚,确实也好用。可以参考http://springfox.github.io/springfox/docs/current/。另外关于swagger的使用集成,其实比较简单,网上博客也不少。尤其是SpringBoot出现后,集成更为简单方便。当然有时候也会遇到一些问题,以前集成过几次,都很顺手,但这次却遇到麻烦。二...
2019-04-23 22:07:11 66092 2
原创 关于最近一段时间的想法
关于博客更新有好久没写博客了,原因主要有两个。一是觉得自己水平还不够,怕写错了,误导了别人。如果有哪位发现以往的博客中有错误之处,还请指正!后来每写一文,都会尽量去查阅一些资料以确认自己所述内容的正确性,虽然也不敢保证一定正确,但还是要去求证。二是最近这些时间里,时间比较少,而写技术方面,完成了的博客在我看来是比较耗时的,虽然我想更多的与大家探讨技术与知识,奈何时间确认不多,有些则是总结成了文档,没有放在博客里。另外,最近完成了人生最重要的一件事——结婚成家!我也即将成为爸爸,感觉心态也变得
2021-12-12 20:44:53 320
原创 高性能MySQL(一)——逻辑架构、锁、事务和并发控制
Spring事务Spring事务的实现是通过代理实现的,它实现代理的方式有两种:JDK动态代理和CGLIB。事务实践1,在实际开发中,事务一般写在Service层,涉及到的注解是@Transactional;2,如果可以使用声明式事务,尽量不使用编程式事务,可心减少代码与后期维护;3,假如一个接口I有方法A和方法B,后来有一个类实现了接口I,在实现类中的方法A上标注...
2020-04-08 17:55:17 594
原创 设计模式开篇
注:本篇参考了《Java设计模式》、《设计模式之禅师(第2版)》。目录1. 设计模式介绍1.1 设计模式简介1.2 设计模式历史1.3 设计模式是什么1.4 设计模式的格式1.4.1 模式名称(Pattern Name)1.4.2 问题(Problem)1.4.3 解决方案(Solution)1.4.4 效果(Consequence)2. 设计模式...
2020-02-07 17:25:24 800
原创 Win10安装RocketMQ及可视化控制台console
一、环境 RocketMQ可以在Win10安装。在安装Rocket之前,需要先安装JDK、Maven、Git,然后下载Rocket。二、下载安装2,1下载 先进入以下地址:http://rocketmq.apache.org/docs/quick-start/,如下图: 第一个是源码版,下载地址:http://us.m...
2019-08-30 16:03:57 2539
原创 Redis的持久化——AOF与RDB
一、概述 Redis支持AOF与RDB两种持久化机制。持久化可有效的避免因进程退出而造成的数据丢失问题。持久化可以让用户将自己的数据存储在硬盘上,当重启时,根据持久化的数据即可实现数据恢复。 Redis常用配置说明:https://www.redis.net.cn/tutorial/3504.html。 二、AOF AOF(Ap...
2019-07-30 19:47:28 487
原创 Netty学习(一)——Netty简介与模块
一、Netty简介1.1 简介 Netty是一款异步的、事件驱动的网络应用程序框架,支持快速的开发可维护的高性能的面向协议的服务器和客户端。它是异步又是事件驱动的——它可以以任意顺序响应在任意的时间点产生的事件。 在网络编号领域,Netty是Java的卓越框架,它驾驭了Java高级API的能力,并将其隐藏在一个易于使用的API之后。1.2 Nett...
2019-07-24 17:23:06 542
原创 Java网络编程(一)——基础知识
一、概述 随着互联网的兴起,网络编程不再专家性的研究领域,已经成为了很多开发人员都必须掌握的内容。在开发过程中,网络的程序已然很多。除了经典的应用程序(如电子邮件、浏览器等),不少应用程序都在某种程度上与网络功能有些联系。 Java一开始就为网络应用而进行了设计,目前Java已成为非常适合构建网络应用程序的语言了。因为个人学习和工作的学习,需要学习网...
2019-07-24 17:15:34 572
原创 Java并发基础(十)——线程优势及风险
一、线程的优势 线程可以有效地降低程序的开发和维护等成本,同时提升复杂应用程序的性能。线程能够将大部分的异步工作流转换成串行工作流,因此能更好地模拟人类的工作方式和交互方式。此外,线程还可以降低代码的复杂度,使代码更容易编写、阅读和维护。 在GUI应用程度中,线程可以提高用户界面的响应灵敏度;在服务器应用程序中,可以提升资源利用率以及系统吞吐率。线程还可以简化J...
2019-07-24 02:03:49 252
原创 Java并发基础(九)——线程优先级
一、线程优先级概述 Java中的线程可以有自己的优先级。优先级高的线程在竞争资源时会更有优势,更有可能抢占到资源而优先被执行。当然这也只是一个概率问题,并不是一定就是这样。如果运气不好,那高优先级的线程可能也会抢占资源失败。 由于线程的优先级调度和底层操作系统有密切关系,在各个平台上表现不一,并且这种优先级产生的后果也可能容易预测,无法精准控制。比如一个低优先级...
2019-07-18 16:51:02 301 2
原创 Windows10下Docker安装
一、Docker概述1.1 Docker简述 Docker是一个开源的应用窗口引擎,它让开发者能够打包他们的应用以及依赖包到一个可移植的窗口中,然后发布到任何流行的Linux或Windows机器上,它也可以实现虚拟化。Docker的容器完全使用水箱机制(360杀毒也用到了沙箱机制),这样的话相互之间不会有任何接口,容器性能开销很低。1.2 Docker原理 ...
2019-05-21 15:27:55 663
原创 Spring Boot与Spring Cloud等的版本对应
一、概述 从使用Spring Boot开始,Spring Boot和Spring Cloud在不断的更新中,社区也很是活跃。到2019年,Spring Cloud推出了Greenwich版本,问题也来了——目前正在使用Spring Cloud和欲尝试使用Spring Cloud的人,对版本肯定是关注的,不同版本之间兼容性不一样,对以后的开发带来的效应也很可能不一样。所以我觉得很有...
2019-05-07 01:20:06 3822 1
原创 Java系统异常设计与处理(@ControllerAdvice与AOP实现)
异常是开发过程中必须要处理的一个问题,应用系统不可能不遇到异常。如何处理好系统的异常,有多种方式,也需要更高的水平。因为它不是会用那么简单,需要先做好异常的设计,再进行编码测试,改进等。 因为想把Java系统异常的东西写在一篇文章里,所以内容可能条理不是很清晰,望见凉。一、关于Java异常的知识1.1 Java异常体系 关于Java异...
2019-04-01 16:50:38 7590
原创 Windows下vue环境搭建及第一个项目
一、环境说明系统:Windows;开发工具:IDEA。二、安装nodejs第一步:下载nodejs下载地址:https://nodejs.org/en/,进入后选择下图中红色标记的位置,点击下载。第二步:安装nodejs安装的过程很简单,可以都点击Next。第三步:检查nodejs是否安装成功安装完成后,进入CMD中输入命令node -v,如下图所示。显...
2019-03-20 17:00:07 733
原创 Java WebSocket实现(一)——基础知识
一、概述 之前在工作中,遇到了一种情况:服务端数据变更后,需要实时推送到前端页面,页面的内容更新。最开始考虑使用轮询,但消耗很大,最后还是找到了一种后端向前端主动推送数据的方法。其实,WebSocket允许服务端主动向客户端推送数据,就可以用它来实现,但考虑到项目当时只有一个地方用到,且要求简单,所以便找了较为轻便的解决方案。 有不少网站为了实现数据推送,采用了轮询。 ...
2019-03-13 11:13:04 9836 2
原创 MySQL高级特性——分区表
MySQL从5.0和5.1版本开始引入了很多高级特性,如分区、触发器等。下面学习MySQL的分区表(本人所使用的MySQL版本是5.7)。1 概述 对用户来说,分区表是一个独立的逻辑表,但底层是由多个物理子表组成 。实现分区的代码实际上是对一组底层表的句柄对象(Handler Object)的封闭。对分区表的请求,都会通过句柄对象转化成存储引擎的接口调用...
2019-03-06 16:14:28 607
原创 Java并发基础(八)——线程组(ThreadGroup)与守护线程(Daemon)
线程组(ThreadGroup) 在一个系统中,如果线程数量很多,而且功能分配比较明确,就可以将相同功能的线程放置在同一个线程组里。下面通过示例来说明。public class ThreadGroupName implements Runnable { public static void main(String[] args){ ThreadGr...
2019-02-22 11:58:12 455
原创 Java并发基础(七)——volatile与Java内存模型(JMM)
Java内存模型是围绕着原子性、有序性和可见性来展开的。为了在适当的场合,确保线程间的有序性、可见性和原子性。Java使用了一些特殊的操作或关键字来声明、告诉虚拟机,在这个地方要尤其注意,不能随意变动优化目标指令。关键字volatile就是其中之一。 volatile翻译成中文是“易变的、不稳定的”的意思,这就是它的语义。 当使用关键字volat...
2019-02-21 19:09:39 159 1
原创 Java并发基础(六)——线程的基本操作
这里主要说明常用的线程操作,是我们平常用的比较多的地方。虽然简单,却有一些值得深究的地方。1,新建线程 创建线程的方法有多种,这里就用很普通的方法,直接创建Thread类的一个实例。// 创建线程Thread t = new Thread();// 调用开始方法t.start(); 这里需要注意的是,调用Thread的sta...
2019-02-21 18:11:13 491 1
原创 Git使用与IDEA中操作
一、背景之前使用了多年的SVN,后来中间也用过一段时间的Git。但后面工作中因为打包拉分支等一系列问题,有位同事坚持用Git来替换SVN,就开始实验了,也算是一点实践。二、Git安装安装挺简单的,对于Windows来讲博客也是很多。下载地址:Git。三、使用说明3.1 GUI和命令行区别还是先说下Git GUI Here和Git Bash Here的区别。前者是...
2019-02-21 16:23:11 630
原创 Java并发基础(五)——线程的状态
线程与进程线程是轻量级的进程,是程序执行的最小单位。进程是系统进行资源分配和调度的基本单位。之所以使用多线程去进行并发程序的设计,是因为线程间的切换和调度的成本远远低于进程。下面说明线程的6种状态,但并不说明因Java中线程的方法导致线程状态的变化,会在后面专门具体介绍方法。如果对方法理解掌握了,自然就明白了某个方法的执行会怎样引起线程状态的变化。 线程的状态 NEW(...
2019-01-18 16:01:17 182
原创 Java并发基础(四)——并发与JMM
概述JMM(Java Memery Model),Java内存模型。再切换到并发,并发程序复杂的原因是因为并发程序访问的数据和执行顺序等有复杂的情况。而并发程序中的数据访问与JMM关系密切的,所以这里把并发和JMM联系起来说明。因为程序中的变量自然是与JMM关联的。比如有一个共享变量的值为1,在内存中值为1,线程A读的值为1,如果线程安全没有控制好,线程B修改了该共享变量的值,后面的线程再...
2019-01-17 22:04:13 176
原创 Java并发基础(三)——并行的两个重要定律
概述总的来说,使用并行程序的最重要的目的有两个。一是为了获得更好的性能;二是业务模型的需要,确实需要多个执行实体。这里主要关注程序性能的问题。当将串行程序改造为并发程序,提高了程序的性能,但空间提高了多少?是否真的有提高?还是一个需要研究的问题。目前主要有两个定律对这个问题进行了解答,一个是Amdahl定律,另一个是Gustafson定律。 Amdahl定律Amdahl定律是计...
2019-01-15 22:55:27 341 1
原创 Java并发基础(二)——并发级别
概述根据并发的控制策略,可将并发的级别分为阻塞、无饥饿、无障碍、无锁、无等待五种。 阻塞当前线程是阻塞的,那其它线程在释放资源之前,当前线程是无法继续执行的。当我们使用synchronized关键字或重入锁时,得到的线程就是阻塞的线程。synchronized和重入锁都试图在执行后续代码前,得到临界区的锁,如果得不到,线程就会被挂起等待,直到占有了所需要的资源。 无饥饿...
2019-01-15 21:46:03 316
原创 Java并发基础(一)——常见概念
同步与异步同步(Synchronous):方法调用时,调用者必须等到方法调用并返回结果后,才能继续执行后面的操作。如果没有得到返回就不继续执行,有返回结果了就一个一个顺序的执行,需要等待,根据返回结果协调执行。异步(Asynchronous):方法调用时,调用者不必等待方法返回结果便可继续执行后面的操作,当调用的方法执行后将通知调用者。通知的方式一般有三种:状态、通知、回调。状态:监听...
2019-01-15 11:27:52 323 1
原创 Redis常用操作命令
有时遇到RedisDesktopManager连接不了Redis的情况,因为Redis服务器的安全设置,这也正常。但需要看到redis的数据。假如redis部署在linux上,也知道redis部署所在的IP和端口,那就可以连接了。 对于一些特别常用的命令,如get key、set key value就不说了。连接先进入部署redis的服务器(或者其...
2018-12-28 12:20:21 231
原创 Dubbo管理控制台部署
因为使用dubbo+zookeeper,但在本机安装了zookeeper集群和redis集群后,服务注册和订阅很慢,于是想通过dubbo的管理控制来看下具体的情况。 一、下载dubbo-admindubbo-admin下载地址:https://github.com/apache/incubator-dubbo/tree/2.5.x,我下的是2.5.10版本的。opensesame下...
2018-12-05 19:24:25 227
原创 Zookeeper 查看工具ZooInspector
Zookeeper安装比较方便,在安装一个集群以后,查看数据却比较麻烦。因为电脑配置低,所以只在windows环境下安装了集群。下面介绍Zookeeper的数据查看工具——ZooInspector。 一、下载下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip 二、解压...
2018-12-05 09:51:52 1811 1
原创 Windows下Redis3.x.x集群安装
Redis的集群,是Redis3.0版本正式推出的,有效解决了Redis分布式方面的一些问题。下面安装Redis集群,创建3个实例(低于3个无法创建)。一、下载Redishttps://github.com/MSOpenTech/redis/releases/,我下载的是zip文件。二、安装Redis将文件解压后,因为安装集群,所以再复制5份,分别以端口号命令。从6381到6386(默认...
2018-12-04 14:46:12 169
原创 Windows下Zookeeper伪集群搭建
一、下载下载地址:Apache Zookeeper下载或(https://mirrors.cnnic.cn/apache/zookeeper/),下载Zookeeper安装文件,后缀为.tar.gz。我下载的文件是zookeeper-3.4.13.tar.gz。二、集群安装目录在D盘建立zookeeper目录,将文件解压到此文夹。因为是在windows下安装集群,所以将解压的文件重命名为z...
2018-12-03 17:33:03 481
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人