- 博客(93)
- 收藏
- 关注
原创 Java进阶篇设计模式之七 ----- 享元模式和代理模式
在上一篇中我们学习了结构型模式的组合模式和过滤器模式。本篇则来学习下结构型模式最后的两个模式, 享元模式和代理模式。
2024-10-26 18:06:38
612
原创 Java进阶篇设计模式之六 ----- 组合模式和过滤器模式
在上一篇中我们学习了结构型模式的外观模式和装饰器模式。本篇则来学习下组合模式和过滤器模式。
2024-10-26 17:51:37
716
原创 Java进阶篇设计模式之五-----外观模式和装饰器模式
在上一篇中我们学习了结构型模式的适配器模式和桥接模式。本篇则来学习下结构型模式的外观模式和装饰器模式。
2024-10-26 02:35:05
938
原创 Java进阶篇设计模式之四 -----适配器模式和桥接模式
在上一篇中我们学习了创建型模式的建造者模式和原型模式。本篇则来学习下结构型模式的适配器模式和桥接模式。
2024-10-26 01:36:13
1110
原创 Java进阶篇设计模式之三 ----- 建造者模式和原型模式
在上一篇中我们学习了工厂模式,介绍了简单工厂模式、工厂方法和抽象工厂模式。本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式。建造者模式是属于创建型模式。建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。简单的来说就是将一个复杂的东西抽离出来,对外提供一个简单的调用,可以在同样的构建过程创建不同的表示。和工厂模式很相似,不过相比而言更加注重组件的装配。这里用一个示例来进行说明。
2024-10-26 01:21:21
399
原创 Java进阶篇设计模式之二 ----- 工厂模式
在上一篇中我们学习了单例模式,介绍了单例模式创建的几种方法以及最优的方法。本篇则介绍设计模式中的工厂模式,主要分为简单工厂模式、工厂方法和抽象工厂模式。
2024-10-26 01:13:16
1164
原创 Java进阶篇设计模式之一 ----- 单例模式
在刚学编程没多久就听说过设计模式的大名,不过由于当时还是个彻彻底底的菜鸟,并没有去触碰。直到在开始工作中对简单的业务代码较为熟悉之后,才正式的接触设计模式。当时最早接触的设计模式是工厂模式,不过本文讲的是单例模式,这里就留着下篇文章中在讲解。至于为什么先讲解单例模式?那是因为单例模式是设计模式中最简单的...。凡事总有个先后顺序,所以就先易后难了。好了,废话不多说了,开始进入正片。说明:这里说了的简介就是真的 “简介”。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。
2024-10-26 01:03:23
987
原创 Java Date类 日期、毫秒、天数之间的各种转换
1,将毫秒转换为日期import java.text.SimpleDateFormat;import java.util.Calendar;public class demo1 { /** * @param args */ public static void main(String[] args) { // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); long nowTime =
2020-06-06 14:21:03
1294
原创 使用jvisualvm远程监控服务器jvm步骤详解
1、前言开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(...
2020-03-29 09:53:56
2360
原创 Java生产环境下性能监控与调优详解完整学习笔记
本文主要内容包含 JVM的参数类型 jinfo & jps(参数和进程查看) jstat(类加载、垃圾收集、JIT 编译) jmap+MAT(内存溢出) jstack(线程、死循环、死锁) JVisualVM(本地和远程可视化监控) 使用 BTrace 进行拦截调试 Tomcat 性能监控与调优 Ng...
2020-03-29 09:53:11
661
转载 JAVA中的值传递和引用传递
首先,不要纠结于 Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。更何况,要想知道Java到底是传值还是传引用,起码你要先知道传值和传引用的准确含义吧?可是如果你已经知道了这两个名字的准确含义,那么你自己就能判断Java到底是传值还是传引用。这就好像用大学的名词来解释高中的题目...
2020-03-29 09:52:25
286
原创 《Java生产环境下性能监控与调优》课程的参考文档链接
课程《Java生产环境下性能监控与调优》第二章jdk8工具集https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.htmlTroubleshootinghttps://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/jpsh...
2020-03-07 21:34:53
326
原创 zookeeper源码下载和导入到IDEA
一、到github上下载源码,地址为:https://github.com/apache/zookeeper二、因为zookeeper是ant构建的所以下载ant,地址为:https://ant.apache.org/bindownload.cgi三、配置ant环境变量,与配置jdk一样,打开cmd输入 ant -version 出现下图,表示安装配置成功。四、使用命令在解压后的zo...
2020-02-10 15:44:07
1647
转载 如何减少接口响应时间
我们在开发过程中,当然是希望自己项目接口的响应时间越短越好,至少我看着自己开发出来的代码,都是毫秒级的响应,会有一种自豪感;那么我们项目做了哪些优化,和大家分享分享。优化代码先从小处着手,代码写的好坏,直接影响到接口的响应速度;当然这里也不可能展开详谈每一行代码怎么写,主要还是说一下措施: 代码规范:我经常会以自己的标准去衡量其他开发人员代码的好坏,虽然我也不是什么大牛,但毕竟做了十...
2019-11-27 18:17:39
768
原创 Maven总结
一、前言现在的Java项目中,Maven随处可见。Maven的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案,如果你搞不懂Maven,那么一个多模块的项目足以让你头疼,依赖冲突就会让你不知所措,甚至搞不清楚项目是如何运行起来的...回想一下,当你新到一家公司,安装完JDK后就会安装配置Maven,很大可能性你需要修改settings.xml文件,比如你会...
2019-11-27 18:13:54
235
原创 减少接口的响应时间
我们在开发过程中,当然是希望自己项目接口的响应时间越短越好,至少我看着自己开发出来的代码,都是毫秒级的响应,会有一种自豪感;那么我们项目做了哪些优化,和大家分享分享。优化代码先从小处着手,代码写的好坏,直接影响到接口的响应速度;当然这里也不可能展开详谈每一行代码怎么写,主要还是说一下措施: 代码规范:我经常会以自己的标准去衡量其他开发人员代码的好坏,虽然我也不是什么大牛,但毕竟做了十...
2019-11-21 17:36:32
369
原创 Rides或者Zookeeper实现分布式锁
一、常规锁会造成什么情况? 二、分布式锁怎么去处理? 三、分布式锁的实现有哪些? 四、在Zookeeper中如何加锁? 首先,分布式锁和我们平常讲到的锁原理基本一样,目的就是确保在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。在一个进程中,也就是一个jvm或者说应用中,我们很容易去处理控制,在jdk java.util并发包中已经为我们...
2019-11-21 16:26:48
363
转载 SpringBoot使用MockMvc进行单元测试
★MockMvc- SpringMVC单元测试的独立测试:一、简介为何使用MockMvc?对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,所以为了可以对Controller进行测试,我们引入了MockMVC。...
2019-11-21 14:59:49
575
原创 Java开发中使用枚举自定义异常
异常枚举类:public enum ErrorCodeEnum { SYS_ERROR("SYS_ERROR", "系统错误,请重试"), UNKNOWN_ERROR("UNKNOWN_SYS_ERROR", "未知的系统异常"), SERVICE_INVOKE_FAIL("SERVICE_INVOKE_FAIL", "服务调用失败"), ILLEGAL_AR...
2019-11-21 14:48:32
1294
原创 StringBoot--自定义处理器拦截器(HandlerInterceptorAdapter)实现登录校验
在后台接口开发中会有一类接口是需要做登录校验的,类似于生成订单,查看自己的订单列表等接口,都需要先判断用户是否登录.虽然可以在接口中进行判断,但是会让代码冗余,所以决定用自定义拦截器+自定义注解来完成这个功能自定义拦截器可以实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类,HandlerInterceptorAdapter适配器是对Han...
2019-11-19 17:22:10
1090
原创 SpringBoot实现HandlerMethodArgumentResolver(自定义参数解析器)
对Controller层请求参数进行处理自定义注解@Documented @Target({ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface CommonParams { String[] params() default {}; }自定义参数解析器...
2019-11-15 19:01:25
1960
转载 List加载因子和扩容因子
原文转自http://www.cnblogs.com/xiezie/p/5511840.html这里要讨论这些常用的默认初始容量和扩容的原因是:当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。加载因子的系数小于等于1,意指 即当 元素个数 超过...
2019-11-12 16:04:48
553
原创 jvm内存模型总结
对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。JVM内存结构由上图可以清楚的看到JVM的内存空间分为3大部分:堆内存 方法区 栈内存其中栈内存可以再细分为java虚拟机栈和本地方法栈,堆内存可以划分为新生代和老年代,新生代中还可以再次划分为Eden区、From ...
2019-10-29 09:39:56
280
原创 SpringMvc的设计模式
目录一.组件介绍二.Spring MVC执行流程三.简洁版本一.组件介绍DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。HandlAdapter:通过扩展...
2019-08-08 11:35:17
1597
原创 子线程运行执行10次后,主线程再运行5次,这样交替运行三遍
public class ThreadTest { public static void main(String[] args) { Bussiness bussiness = new Bussiness(); new Thread(new Runnable() { @Override public void...
2019-08-05 17:09:56
670
原创 使用两个队列模拟堆栈结构
队列a和bpublic class ArrayTest { public static void main(String[] args) { //array(); queueTest(); } //使用两个队列模拟堆栈结构 public static void queueTest(){ Queue<Stri...
2019-08-05 15:50:44
363
原创 统计重复元素出现次数(字符串和数组)
一、字符串:public class 重复元素计数 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println(""); String str = sc.nextLine(); HashMap<Character, Integer...
2019-08-05 15:04:26
1382
原创 实现HashMap的排序
已知一个HashMap<Integer, User>集合, User有name (String) 和 age (int) 属性,请写一个方法实现对HashMap的排序功能,该方法接受HashMap<Integer, User>为形参,返回类型为HashMap<Integer, User>,要求对HashMap中的User的age倒序进行排序,排序时key==va...
2019-08-05 12:59:50
340
原创 斐波那契数列(JAVA实现)
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现...
2019-08-01 11:45:31
1500
2
原创 逆向工程中报错invalid解决方案
错误原因:编译时没有编译xml映射文件解决方案:在pom中加入以下配置 <!--可以将xml文件也编译--> <build> <resources> <resource> <directory>src/main/java</direct...
2019-07-17 13:14:21
475
原创 连接redis连接超时redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutEx
报错原因:linux的防火墙挡住了6379端口解决方法:一、关闭防火墙1、使用命令:systemctl status firewalld.service 查看防火墙状态2、执行后可以看到绿色字样标注的“active(running)”,说明防火墙是开启状态3、使用命令:systemctl stop firewalld.service 关闭运行的防火墙4、关闭...
2019-07-16 12:10:42
1376
原创 centos7安装redis时遇到的问题总结及安装步骤
目录一、问题总结1、通过wget下载的rpm文件解压时显示不是压缩类型文件(gzip:stdin:not in gzip format),试了多种方法没有解决,最后直接从redis官网上下载,可能是通过wget下载的源文件就有问题2、 进入解压后的文件夹使用make命令编译时报错gcc:未找到命令错误,或者显示CC adlist.o /bin/sh: cc: 未找到命令二、安装步骤...
2019-07-14 16:13:25
1002
原创 linux(CentOs7)普通用户变超级用户使用su root 后不能输入密码
误区:不是不能输入密码,只是为了安全起见输入的密码不回显开始用的linux 中自己设置的用户名和密码正确的用户名为root密码为自己安装linux是第一次设置的密码...
2019-07-11 14:22:18
9008
3
转载 The POM for org.csource:fastdfs-client-java:jar:1.27-RELEASE is missing
报错原因为本地的maven仓库中没有fastdfs的jar包地址解决方法:1,首先去我的github上下载下来fastdfs的压缩包直接下载地址:https://github.com/wangwei216/fastdfs-client-java-master然后直接解压出来2,使用cmd命令行 使用cd命令走到到你自己下载到的目录下,然后使用mvn clean install...
2019-07-02 20:40:57
4029
原创 作用自定义的servlet开发模板,提升开发效率
一、示例在使用组件方式新建的servlet中,按ctrl+a全选然后输入serv然后alt+/自动补全二、servlet模板package ${enclosing_package};import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpSe...
2019-06-29 11:18:21
303
原创 ssm整合时的配置文件
一、web.xml1、配置监听器,用来扫描classpath:applicationContext-*.xml下面的各类配置文件<!-- 配置Spring的配置文件 去加载spring的配置文件 --> <listener> <!-- 默认是去WEB-INF下找 applicationContext.xml配置文件--> <li...
2019-06-28 21:02:55
416
原创 idea创建Javaweb工程Servlet时报错Error:(7, 53) java: 程序包javax.servlet.http不存在
缺少指定的环境:解决方法:一、选择project structure二、添加依赖三、选择Library 四、点击add select添加五、在dependencies中打勾选中然后应用更改...
2019-06-27 16:50:12
3802
原创 activiti部署报错 resource '*‘.bpmn'not found
错误:在网上找了一天的问题也没有找到解决方案最后还是通过自己找到解决的办法点击项目build path->configure build path点击source,将included与excluded都romove掉变成All各None再次运行结果正常打印,虽然不明白原理但好在解决了问题。...
2019-06-24 11:34:51
3596
2
原创 maven下文件夹变成灰黑色解决方案
选中src/test/java右键BuildPath->ConfigureBuildPath选择Source双击Containstestsource:yes之后其会变成Containstestsource:no然后apply将变灰文件夹都操作:选中src/test/java右键BuildPath->ConfigureBuildPath选择Sour...
2019-06-20 10:54:30
2852
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人