- 博客(257)
- 资源 (7)
- 收藏
- 关注
原创 探秘Java类加载
Java是一门面向对象的编程语言。面向对象以抽象为基础,有封装、继承、多态三大特性。宇宙万物,经过抽象,均可归入相应的种类。不同种类之间,有着相对井然的分别。Java中的类,便是基于现实世界中的类别抽象出来的。类本身表示一类事物,是对这类事物共性的抽象与封装。类封装了一类事物的属性和方法。类与类之间,有着不同的层级。以生物界中的分类为例,遵循“界门纲目科属种”的级别体系,人...
2019-01-04 09:05:13 451
原创 SpringBoot集成mybatis时idea控制台中文乱码问题解决
SpringBoot集成mybatis时idea控制条中文乱码问题处理
2023-10-25 17:08:43 549 2
原创 Linux创建软链接导致文件无法下载的问题处理
在一个SpringBoot项目里,如果把下载的文件存到 /usr/local/tomcat/webapps/ROOT/WEB-INF/uploadfiles里,这时若下载该链接目录里的文件时,可能会找不到文件。通过上述方式,可以判断文件路径是普通路径还是链接路径,从而顺利下载文件。Linux里可以创建软链接,如同Windows系统的快捷方式。ln -s 源文件 链接目录。
2022-09-23 17:08:29 1293 1
原创 MySQL存储过程与函数浅析
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用时不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。MySQL存储函数(简称MySQL函数),是一种控制流程函数,属于数据库语言。——百度百科一、存储过程在普通模式下获...
2019-03-28 10:38:47 416
原创 JavaScript深入解读
JavaScript是运行在浏览器上的脚本语言。我们平时看到丰富多彩的网页,这要在很大程度上归功于JavaScript。引子 学点儿历史JavaScript在编程语言的阵营里也是老资格了。它诞生于1995年,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。由于Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为J...
2019-01-04 09:05:03 415
原创 CentOS基本操作
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着...
2019-01-04 09:04:54 346
原创 CentOS7上部署Tomcat和MySQL
一、安装tomcatTomcat 的安装依赖 JDK,在安装 Tomcat 之前需要先安装 Java JDK。输入命令 java -version,如果显示 JDK 版本,证明已经安装了 JDK。JDK安装好后,接下来下载并解压tomcat安装包。配置端口号,进入 tomcat 的 conf 目录下,修改 server.xml 文件,可以修改端口,默认 8080。启动 to...
2019-01-04 09:04:41 1099
原创 码云的初步使用
码云(gitee.com)是开源中国推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管。目前已有超过 300 万的开发者选择码云。在日常开发中,码云可以有效促进团队协作,提升工作效率。这里简要阐述码云的使用方法。一、下载安装Git我们在这里选择的是客户端安装版,地址:https://git-scm.com/download/win。在浏览器地址栏里复制粘贴ht...
2019-01-03 08:56:36 2180
原创 MySQL安装与初步操作
MySQL是一款出色的中小型关系数据库,做Java Web开发时,要做到数据持久化存储,选择一款数据库软件自然必不可少。 由于MySQL社区版开元免费,功能比较强大,在此以MySQL为例,演示MySQL软件的安装与初步使用。 首先,根据您的电脑操作系统版本,下载相应版本的MySQL。下载地址:https://dev.mysql.com/downloads/mysql/5.6.htm...
2019-01-03 08:56:24 234
原创 自定义消息队列
传统的网通通信,一般是请求---响应式,以TCP模式为例,在高并发情况下,往往伴随大量的客户端Sokcet请求,服务器要不断处理来自客户端的请求,ServerSocket要不断产生新的子线程去响应客户端的请求,会给服务器带来很大的访问压力。 在这种情况下,消息队列可谓为我们提供了一种新的思路。队列是数据结构中的一种线性表,队列中存储的元素遵守FIFO(First In First Out...
2019-01-03 08:56:07 671
原创 用Executors工具类创建线程池
多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重用线程,线程创建的开销就被分摊到了多个任务上了,而且由于在请求到达时线程已经存在,所以消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使应用程序响应更快。另外,通过适当地调整线程池中的线程数目可...
2019-01-03 08:55:58 492
原创 Java中的BlockingQueue队列
BlockingQueue位于JDK5新增的concurrent包中,它很好地解决了多线程中,如何高效安全地“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。 阻塞队列,顾名思义,它首先它是一个队列,在数据结构中,队列是一种线性表。 我们通过一个共享的队列,可以使得数据由队列的一端输入,从另外一端输出。常用的队列主要有以下两种:...
2019-01-03 08:55:34 1024
原创 Restful对于URL的简化
REST是英文representational state transfer(表象性状态转变)或者表述性状态转移,它是web服务的一种架构风格。使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标准,是一种思想。 Rest架构的主要原则: 网络上的所有事物都被抽象为资源; 每个资源都有...
2019-01-03 08:55:22 234
原创 RocketMQ消息队列使用
RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给Apache基金会,并于2016年11月成为 Apache 孵化项目。 中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。中间件技术所提供的互操作性,推动了分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序,它包括web服务...
2019-01-03 08:55:11 7034
原创 SVN简介
SVN是一款版本控制工具。相对于GitHub而言,SVN在使用上更为简化些。SVN 和GitHub的联系与区别如下: (1)基本操作大致相同; (2)SVN没有本地库,GIT有本地库; (3)SVN提交代码时只需一次提交(远程库),GitHub需要两次提交(本地库一次,远程库一次); (4)GitHub适用于分布式开发,SVN使用于集中式开发; (5)就操作难易程度而言,S...
2019-01-03 08:54:59 1380
原创 GitHub安装与使用
GitHub是一个基于git的代码托管平台,付费用户可以建私人仓库,一般的免费用户只能使用公共仓库,也就是代码要公开。 Github 由Chris Wanstrath, PJ Hyett 与Tom Preston-Werner三位开发者在2008年4月创办,主要提供基于git的版本托管服务。 GitHub对于程序员的帮助如下图所示: 一.GitHub下载与安装 要想...
2019-01-03 08:54:44 589
原创 Java注解中的元注解
Java注解中的四个元注解分别是:@Target,@Retention,@Documented,@Inherited。 元注解是java API提供的,是专门用来定义注解的注解,其作用分别如下: (1)@Target 表示该注解用于什么地方,可能的值在枚举类 ElemenetType 中,包括: ElemenetType.CONSTRUCTOR-------...
2019-01-03 08:54:30 395
原创 MongoDB的安装与使用
MongoDB是一款NoSql数据库。NoSql数据库叫非关系型数据库,NoSql的全名Not only sql。是为了解决高并发、高可用、高可扩展,以及大数据存储等一系列问题而产生的数据库解决方案。NoSql,它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。 NoSql数据库又分为多种,如键值(Key-Value)存储数据库(如redis),列存储数据库(如HBase),文...
2019-01-02 08:51:27 268
原创 SAXParser解析XML文件
我在之前的一篇文《用dom4j操作xml文件》里曾介绍了XML文件,以及用dom4j操作xml文件。其实,java有个扩展包(javax.xml)里也提供了解析xml的方法。我接下来通过案例予以介绍。 首先,定义xml文件内的元素规则(user.xsd):<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w...
2019-01-02 08:51:16 511
原创 详述Java对象创建
Java是一门面向对象的语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(克隆、反序列化)就是一个new关键字而已,但是虚拟机层面上却不是如此。我们看一下在虚拟机层面上创建对象的步骤: (1)虚拟机遇到一条new指令,首先去检查这个指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。如果没有,那么必须先执行...
2019-01-02 08:51:05 142
原创 Java代码优化总结
代码优化是一个很重要的课题。一般来说,代码优化的目标主要有两个,一个是减小代码的体积,另一个是提高代码运行的效率。 代码优化的细节有很多,此处列举部分: 1、尽量指定类、方法的final修饰符。 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。 为类指定final修饰...
2019-01-02 08:50:50 214
原创 CAS实现单点登录
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。 SSO的实现机制是: 当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统...
2019-01-02 08:50:36 674
原创 Dubbo使用
【注:本文参考《Dubbo入门---搭建一个最简单的Demo框架》,感谢原创作者的知识探索与奉献】 一.Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 1.单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能(如下单支付等)都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的 数据访问框架(ORM) ...
2019-01-02 08:50:23 7408 2
原创 SpringMVC 返回JSON数据的配置
spring-mvc-config.xml(文件名称请视具体情况而定)配置文件:<!-- 启动Springmvc注解驱动 --> <mvc:annotation-driven> <!-- 返回json 方法一 需要导入 fastjson.jar包 --> <mvc:annotation-driven> <mv...
2019-01-02 08:50:07 668
原创 JVM内存分配及GC详述
在阐述JVM的内存区域之前,先来看下计算机的存储单位。从小到大依次为Bit,Byte,KB,MB,GB,TB。相邻的单位相差2的10次方。 计算机运行中的存储元件主要分为寄存器(位于CPU)和内存,寄存器和内存之间通过地址总线连接。地址总线的宽度影响了物理地址的索引范围,因为总线宽度决定了处理器一次可以从寄存器或内存中获取多少个Bit,同时也决定了处理器最大可以寻址的地址空间。 这...
2019-01-02 08:49:54 1132
原创 深入理解ThreadLocal
JDK 1.2的版本中就提供了java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是专属于某个Thread的局部变量集。 上面提到“ThreadLocal为解决多线程程序的并发问题提供了一种新的思路”,那么,我们就先来看下多线程并发...
2019-01-02 08:49:42 134
原创 Java的Timer定时器
Timer主要用于Java线程里指定时间或周期运行任务,它是线程安全的,但不提供实时性(real-time)保证。 上面提到了守护线程的概念。 Java分为两种线程:用户线程和守护线程。 所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程...
2019-01-02 08:49:31 12798
原创 https与http的区别
HTTP(Hypertext transfer protocol,超文本传输协议)是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。简单来说,HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HT...
2019-01-01 09:35:44 1313 2
原创 SpringBoot微服务
在企业级软件的架构模型上,我们主要讨论下SOA与微服务架构。 SOA的全称是Service-Oriented Architecture,可译为“面向服务的架构”,它是一个组件模型,将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种...
2019-01-01 09:35:27 16116
原创 Java的BIO,NIO与AIO
Java中的IO操作可谓常见。在Java的IO体系中,常有些名词容易让人困惑不解。为此,先通俗地介绍下这些名词。 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 什么是异步阻塞? 8 什么是异步非阻塞? 我们先来弄明白什么是同步,异步,阻塞,非阻塞,只有这几个概念理解...
2019-01-01 09:35:14 1441
原创 Java常量池
一.相关知识 1.何为常量 第一种常量:是一个值,我们将这个值本身称为常量。比如:整型常量:1024实型常量:1.024字符常量:'g' 'c' 'w'字符串常量:"gcw"逻辑常量:true false 例如,我们可以将数字1024称为一个int类型的常量。 第二种常量:不可变的变量,我们也称为常量。被关键字final修饰的变量,其值就不可以改变。可能...
2019-01-01 09:34:55 243
原创 Java中的值传递与引用传递
1.基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。 基本类型的变量保存原始值,即它代表的值就是数值本身;而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的空间里。 Java的内存空间主要包括5部分:栈区,堆区,静态变...
2019-01-01 09:34:39 296
原创 面向对象三大特征及代码优化七大原则
面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 一.面向对象的三大基本特性 1.封装 封装,就是把客观事物封装成抽象的类,并且...
2019-01-01 09:34:23 643 1
原创 Java并发编程的4个同步辅助类
我在《JDK1.5引入的concurrent并发包》中,曾经介绍过CountDownLatch、CyclicBarrier两个类,还给出了CountDownLatch的演示案例。这里再系统总结下Java并发编程中的4个类CountDownLatch、CyclicBarrier、Semaphore、Phaser。 1.CountDownLatch CountDownLatch可以理解...
2019-01-01 09:34:09 306
原创 JDK8的新特性
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 应该说,相对于Java7,Java8 新增了很多特性,我们主要讨论以下几个: 1.Lambda表达式。 Lambda 表达...
2019-01-01 09:33:07 829
原创 JDK1.5引入的concurrent并发包
并发是伴随着多核处理器的诞生而产生的,为了充分利用硬件资源,诞生了多线程技术。但是多线程又存在资源竞争的问题,引发了同步和互斥,并带来线程安全的问题。于是,从jdk1.5开始,引入了concurrent包来解决这些问题。 java.util.concurrent 包是专为 Java并发编程而设计的包。在Java中,当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将...
2019-01-01 09:32:28 582
原创 Java跨域问题的处理
1,JavaScript由于安全性方面的考虑,不允许页面跨域调用其他页面的对象,那么问题来了,什么是跨域问题? 答:这是由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策略。那么什么是同源呢?所谓的同源是指三个方面“相同”: (1)域名相同 (2)协议相同 (3)端口相同 上述三个方面均相同属于同源,JavaScript默认在同源范围内才允...
2019-01-01 09:32:11 2153
原创 Java集合里的一些“坑”
这里主要谈下Java集合在使用中容易被忽略、又容易出现的两个“坑”,一个是集合与数组互相转换,另一个是集合遍历删除。主要通过代码演示。 一.集合与数组互相转换中的“坑” //Test1.javapackage com.itszt.test0419;import java.util.ArrayList;import java.util.Arrays;import java...
2018-12-31 08:37:24 182
原创 制作一棵zTree
我们在做web项目时,常会用到一些树形菜单。在此,我们利用ztree实现树形菜单的效果。zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 的最大优点。 接下来,我演示一棵简单的ztree,效果如下所示: 案例架构如下: 其中,测试文件index.html内容如下:<!DOCTYPE htm...
2018-12-31 08:37:07 270
原创 Struts2使用
Struts2是一个基于MVC设计模式的Web应用框架。在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦...
2018-12-31 08:36:52 227
MVC框架(含源码与jar包)
2019-01-17
baweiMVC.jar—web层框架
2019-01-11
完整的SSM练习案例
2018-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人