![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java开发工程师
文章平均质量分 67
完猛
我们用代码创造世界,不能用代码支配世界
展开
-
javaIO模型概念深入挖掘
javaIO模型BIO模型(Bkicj-lo 同步阻塞IO) 一个线程处理一个请求,其他线程阻塞在哪 io流操作中accept()和read()方法会阻塞在哪 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求的服务器端就需要启动一个线程进行处理, 如果这个连接不做任何事情造成不必要的线程开销。 需要开启多个线程,线程的切换和等待都带来非常大的开销 适用场景:解决客户端数量比较小,并且固定的架构,这种方式对服务器资源要求比较高...原创 2021-03-29 10:40:28 · 229 阅读 · 2 评论 -
redis深入挖掘笔记
为什么要用NOsql大数据一般的数据库无法进行分析处理了。数据量太大,一个机器放不下数据的索引(B+Tree),一个机器内存也放不下访问量(读写混合),一个服务器承受不了发展过程:优化数据结构和索引-》文件缓存(IO)-》Memcached(缓存)Nosql的4大分类KV键值对:redis文档型数据库: MongoDb(基于分布式文件存储的数据库,处理大量的文档)、ConthDB MongoDb是一个介于关系型数据库和...原创 2021-03-27 14:07:19 · 160 阅读 · 1 评论 -
微服务架构SpringCloud alibaba笔记
前置技术设计点:java8、maven、github、Nginx、RabbitMq、Spring boot 等等。。微服务架构是一种架构模式,它提倡将单一的应用程序划分成一组小的服务,服务之间互相协调,配合。微服务需要完成下面技术:服务注册发现 服务调用 服务熔断 负载均衡 服务降级服务消息队列 配置中心管理 服务网关 服务监控 全链路追踪 自动化构建部署 服务定时任务调度操作Spring Boot2.X版和Spring C...原创 2021-03-26 09:12:25 · 197 阅读 · 2 评论 -
Spring 笔记
Spring 创建Bean创建的步骤Spring中bean的生命周期:class:java中的class类。实例化:通过class的构造方法,去反射无参构造方法实例化,如果多个构造方法,推断构造方法。可以在构造方法上加上@Autowired注解来告诉Spring用这个。如果只有一个有参数构造方法。那么他会通过参数的类型,去单例池中找。如果找到多个再根据名字去查找其中的一个。自动入参。如果没找到对应的参数入参会报错。如果存在多个有参的构造方法,也会报错没办吧实例化对象。实例化过原创 2021-03-22 09:45:10 · 95 阅读 · 0 评论 -
synchronized锁的作用,原理(笔记)
反编译命令: javap -p -v ***.classsynchronized可以保证原子性保证可见性保证有序性可重入特性synchronized不可中断特性当线程拿到锁之后 还没有释放该锁过程中,是不可以被主线程打断的,因为钥匙还没有还回去当现在还在等待钥匙的时候,也是无法被主线程打断的。同步代码块:指令monitorenter当指令执行到这里的时候,程序会尝试去获取monitor,有可能获取到,有可能获取不到阻塞在这里。monitor是一把锁,C++对象monito..原创 2021-03-09 10:34:51 · 570 阅读 · 0 评论 -
设计模式笔记(工厂模式)
简单工厂模式简单工厂模式是属于创建型模式,是工厂模式的一种,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。定义一个创建对象的类,由这个类来封装实例化对象的行为;方法工厂模式和简单工程模式结构一样,不同点在与工程类为多个方法,每个方法代表创建不同的类。应用代码如果要创建对象,直接使用该工程类,调用对应的方法创建对应的对象出来即可。抽象工厂模式是一个超级工厂模式,简单的理解为创建工厂的工厂模式。抽象工厂模式包含了方法工厂模式的思想,所以下面代码就采用抽象工.原创 2021-02-04 18:16:10 · 118 阅读 · 0 评论 -
JVM笔记(JVM内存调优常用命令)
-Xmx指定java程序的最大堆内存, 使用java -Xmx5000M -version判断当前系统能分配的最大堆内存-Xms指定最小堆内存, 通常设置成跟最大堆内存一样,减少GC-Xmn设置年轻代大小。整个堆大小=年轻代大小 + 年老代大小。所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。-Xss指定线程的最大栈空间, 此参数决定了java函数调用的深度, 值越大调用深度越深, 若值太小则容易出栈溢出错误(StackOverf原创 2021-01-15 16:35:19 · 208 阅读 · 0 评论 -
JVM笔记(垃圾回收器)
垃圾回收器算法:常见的垃圾回收器stop-the-world (暂停整个程序,简称STW)1、Serial (单线程工作的年轻代) 作用于年轻代 串行回收在程序运行过程中,内存满了以后,触发GC, 先STW以后然后单线程一个个标记清除,程序继续运行2、ps (多线程工作的年轻代) 作用于年轻代 并行回收 不可以配合CMS在程序运行过程中,内存满了以后,触发GC, 先STW以后然后多线程一个个标记清除,程序继续运行3、ParNew (多线程工作的新...原创 2021-01-13 17:45:43 · 139 阅读 · 0 评论 -
hashMap的使用和分析
1、背景面试当中我们肯定会被问到集合,那集合当中hashMap被问到的概率是非常高的。这也是我们开发当中经常用到的集合类型,下面我就简单的对这个集合做了总结。主要是对这个集合的使用进行操作。然后对他具体是实现进行了简单的总结2、hashMap的使用就直接上代码吧,如下: /** * 1、输出是无序的 * 2、可以为key值NULL,value也可以为NUll * 3、可以存对象但是遍历的时候需要判断类型,否则会异常 */ public原创 2020-06-04 19:34:01 · 229 阅读 · 0 评论 -
HashSet的特性测试和使用
1、背景下面我开始整理一系列集合篇,因为以前都是在整理一些框架啊,中间件什么的,其实对于基础我的功底还不够扎实,所以需要从新认真复习和整理一下,后面会将set,map,list这些集合都一律整理出来,仅限于我自己知道的整理。直接代码HashSetpackage com.wanmeng.ststpps.test;import java.util.HashSet;import java.util.Iterator;import java.util.Set;/** * 集合调试类 .原创 2020-06-02 22:51:08 · 244 阅读 · 0 评论 -
Spring MVC 使用和分析流程
一、工作流程1、用户发送的所有请求都到DispatcherServlet2、DispatcherServlet 收到请求后调用HandlerMapping去找到具体要请求的那个地方,就是解析用户发送的URL,你是要到啥地方去的,然后再告诉回DispatcherServlet3、DispatcherServlet 知道了具体是什么地方的时候,去调用对于的处理器HandlerAdapter4、HandlerAdapter就直接找我们自己写的controller,执行完后返回一个ModelAndVie..原创 2020-05-22 08:10:02 · 155 阅读 · 0 评论 -
js导出table表格到excel表格中
1、背景首先呢,这次是我最近在写个需求,前面我有提到过导出excel用java代码导出,但是这样写代码比较繁琐,而且如果带有很复杂的格式要求,看着就脑仁疼。所以我就想到了在前端直接导出来。下面开始2、步骤首先我呢做了很多百度细节,有非常多的,我大概总结了一些在前端导出我遇到的问题。首先你会遇到兼容性的问题。然后就是安全性问题,还有文档打开的时候会有明显提升文件缺失或者损坏。还有就是如果...原创 2019-12-08 00:33:39 · 721 阅读 · 0 评论 -
swagger项目集成步骤
1、背景 目前大部分微服务都采用前后端分离的形式进行开发。这样做的好处在于工作细分,但是对开发后端的开发人员来说,和前端对接的时候,接口文档的撰写可谓是件非常头疼的事情了。Sping当然也考虑到这件事,所以swagger就出来了。下面可以看整合swagger是具体步骤。2、步骤第一点、jar包导入。这当然是必不可少的。 <dependency> ...原创 2019-04-25 15:11:00 · 1695 阅读 · 0 评论 -
jenkins工作空间目录更换
1、背景前面有讲到过安装jenkins自动化部署。https://blog.csdn.net/miwanmeng/article/details/86536918。但是这里面有个问题。就是直接启动jenkins会造成工作空间是在root目录下自动生成一个隐藏文件夹 ./jenkins 这个文件夹有可能吧磁盘撑爆或者不好操作之类。所以我们安装之前一般是需要指定一个其他位置的。2、步骤首先...原创 2019-04-24 10:22:13 · 4161 阅读 · 0 评论 -
JPA字段验证注解
注解 说明 @AssertFalse 验证注解的元素值是false @AssertTrue 验证注解的元素值是true @DecimalMax(value=x) 验证注解的元素值小于等于@ DecimalMax指定的value值 @DecimalMin(value=x) 验证注解的元素值小于等于@ DecimalMin指定的value值 @Digi...原创 2019-04-17 10:01:24 · 3288 阅读 · 0 评论 -
jenkins的安装和使用
1、背景jenkins是一个自动化策略部署工具。在一些大型的项目中,经常因为部署项目而耗时耗力。每次一个微服务部署就需要对一个服务器重新操作,并且操作繁琐。如果要从新部署正一套集群服务,那工作量可想而知。大型的集群服务在本地根本无法部署成功,只有在测试环境搭建好一套完整的系统。如果某一个模块对代码修改之后上传,那要对服务进行重新部署,我们不可能手动的一个个去操作服务器,那么jenkins这时候...原创 2019-01-21 10:56:39 · 334 阅读 · 0 评论 -
Spring boot 过滤器和拦截器
1、背景咋一看过滤器和拦截器好像作用是一样的,但是如果我们仔细对这两个东西进行分析就可以得出结论。首先过滤器是对类级别进行阻挡。而拦截器是对方法级别进行阻挡。他们两个的应用角度也有所不同。过滤器的作用可以是使请求进入后台之前,我们做一些相应的处理,比如编码集转换,登录校验等等。而拦截器就比较灵活了,它可以拦下每个方法,这样他不仅仅是可以做登录校验,还可以做方法的日志打印,或者每一层之间切一个面...原创 2018-12-19 10:16:00 · 330 阅读 · 0 评论 -
IDEA远程调试Spring boot 项目步骤
1、背景目前大部分项目都是基于微服务集群的部署,所以在我们本地电脑中越来越难搭建起以一整套完整的本地服务,所以我们借助的是在测试环境发布之后,然后调试代码开发,所以学会远程调试代码就显得十分重要了。2、调试步骤。首先我们将项目打包起来,上传到服务器,并且用下面命令启动 我的 jar包名字叫做 test.jarjava -jar -Xdebug -Xrunjdwp:transp...原创 2018-12-27 15:22:04 · 4708 阅读 · 4 评论 -
session通过redis如何共享
1、背景最近博主在做微服务的子模块,遇到下面情景问题,服务A和 服务B 都是后台API接口服务,通过负载均衡进行发布在两台linux服务器上面,前端页面通过nginx调用这两个服务,就产生了下面问题。页面第一次请求访问服务A,然后在和A服务做了登录请求并且和A创建了会话session。然后在不可控的情况下,下一个接口调到了服务B,这时候页面和服务B没有会话session,导致被判定为未登录...原创 2018-12-10 15:57:59 · 416 阅读 · 1 评论 -
程序员的面试开始
2018年3月14日,正式整点上班的第一天,作为一个新人的程序猿,加入公司,不知道是开始还是结束,学校学习的内容还没有用上,虽然自认为学习了很多知识,代码也完全写得出来,但是,刚加入一个公司的开始,无法证明自己的能力,只能够开始一个人到处逛博客,给自己充点电,免得以后真的让我写的时候我已经荒废多年了。刚开始第一天上班的感受,其实什么都没有,看看公司资料,了解下公司项目,看看开发过程,...原创 2018-03-14 11:03:00 · 216 阅读 · 0 评论 -
EL表达式时间显示方法
这里EL表达式时间显示默认肯定不是我们中国人想要的样子,所以我们需要对他进行修改,具体修改方式如下:1、导入标签库<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%&g原创 2018-04-10 18:06:55 · 3211 阅读 · 1 评论 -
jquery的Ajax和AjaxForm的快速上手使用
这里主要介绍的是jquery的异步请求方式和form表单请求的返回内容:1.ajax示例代码 $.ajax({ url:"${pageContext.request.contextPath}/user.action",//请求的地址 type:"post",//请求方式 data:{ //请求内容,以键值对的形式发送 cmd:"and", ...原创 2018-04-12 11:01:37 · 175 阅读 · 0 评论 -
Spring Boot初体验
第一次接触到Spring Boot项目的话确实会感觉有点神奇。下面我来说下我的接触过程首先创建Spring Boot项目:两种方式,一在网络上进行创建,然后再下载下来,再打开开发工具导入,第二种的话使用软件IDEA,直接在项目工程中可以创建,这里我使用的是第二种,选择Spring Initializr这个项目然后选默认的地址下一步,这里就会有一些基本的项目信息填写,值得注意的是Artifact这里...原创 2018-04-23 17:45:02 · 217 阅读 · 0 评论 -
关于eclipse打成jar包如何双击运行java程序的问题
当我们写好一个小窗口程序之后,可以通过eclipse软件打成jar包,但是这时候我们会发现,双击jar包的程序是无法运行的,通过命令,java -jar xxx.jar 也无法运行这个小程序,这时候该怎么处理呢?其实我们打包的过程没有问题,生成了jar包,这时候通过压缩软件打开这个包,会发现有一个META-INF文件夹,然后在里面会有一个配置文件MANIFEST.MF。这时候我们用记事本打开配置文...原创 2018-05-22 09:34:46 · 2426 阅读 · 0 评论 -
java程序发送邮件dome
使用java程序发送邮件,下面jar肯定少不了我这里提供的下载地址为:https://download.csdn.net/download/miwanmeng/10431482把jar包下载后导入需要发送邮件的项目当中。我这里使用的dome是QQ邮箱发送邮件的形式,这里需要说一下几点:transport.connect("xxxxx@qq.com", "xxxxx");下面是我的代码domepub...原创 2018-05-24 17:59:52 · 636 阅读 · 0 评论 -
sso单点登录
关于单点登录的问题,大家想必在项目中,或者出去面试中肯定是或多或少碰到过类似的问题,下面我分析概括的是理论知识不进行代码的实现有需要。java中单系统实现单点登录的原来如下:1、用户首先登录时,发送用户名和密码,进入系统,系统进行验证。2、验证用户是否正确如果不正确回到登录页面,如果正确,创建一个会话,并且存放一个ID值发送给用户。3、用户页面拿到ID后一般情况下是存到cookie...原创 2018-06-07 17:27:22 · 223 阅读 · 0 评论 -
Spring Data JPA的使用和分析
1、背景 关于Spring Data JPA的简介其实官网有很全面的解释,大家没事可以去官网看看,我这里要说的时候,jpa这东西的原理其实和jdbc说起来有点相似,这里说到jdbc我们都知道数据库厂商为了使自己的数据可以被其他语言使用,所以他们就自己开发了一套一套的jar包,所以他们自己开发的数据库会对应开发出对应java语言的jar包提供连接方式,这样就造成了一个问题啊,每种不同的数据,的...原创 2018-07-03 17:58:45 · 268 阅读 · 0 评论 -
牛逼程序员眼中的单例模式
作者:孤独烟,来自:http://rjzheng.cnblogs.com/引言其实写这篇文章之前,我犹豫了一下,毕竟单例大家都知道,写这么一篇文章会不会让人觉得老掉牙。后来想想,就当一种记录吧。先来一副漫画吧,如下图所示ok,我们回顾下小灰的遭遇,上述漫画所提出的那些问题主要有以下三点:为什么静态内部类的单例模式是最推荐的?如何在反射的情况下保证单例?如何在反序列化中保证单例?针对上述三个问题有了...转载 2018-07-06 17:10:22 · 209 阅读 · 0 评论 -
IDEA集成git和使用步骤
一、IDEA集成git方法 首先idea集成git我们需要先下载一个小软件,git bash 地址:https://git-scm.com/downloads 。下载好了之后直接下一步下一步傻瓜试安装。安装好后回在你指定的文件夹下有个git文件夹,文件结构如下:当然如果你对git命令比较熟悉,用这个软件就可以实现所有的git操作了。下面我们来集成进IDEA开发工具。打开I...原创 2018-07-20 11:26:29 · 108433 阅读 · 12 评论 -
java用POI和JXLS对Excel的导入导出
本文介绍的poi和jxls我同样我们是需要jar包的,jar包我这里直接提供一个maven的配置如下<dependency> <groupId>org.jxls</groupId> <artifactId>jxls-poi</artifactId> <version>1.0.9</version&...原创 2018-08-10 10:21:44 · 6311 阅读 · 2 评论 -
如何简单的在linux上安装jdk并配置环境变量
这篇文章是为了给我一会自己安装的时候方便使用的,所以内容很简单,平时在wendows系统上安装很容易,但是换到linux系统上面就蒙圈了。一、下载jdk文件我这提供的是官方的地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。如果你已经下载好了之后就可以...原创 2018-08-14 17:25:51 · 33969 阅读 · 10 评论 -
如何在linux上安装使用nginx
一、nginx背景 nginx是一款HTTP的服务器,是基于c语言开发的高性能的服务器。能够实现反向代理和负载均衡的功能,反向代理:简单的说就是将一个域名转换成另外一个域名,或者是将某个位置的静态资源转换为可以提供域名访问的功能。负载均衡:就是同样的服务,在不同的地方启动,nginx自动分配访问什么服务器,以减少服务器压力。二、nginx在linux上的环境准备安装之前我们需要检查一...原创 2018-08-24 10:39:00 · 446 阅读 · 0 评论 -
maven打包的时候,如何修改pom.xml配置文件
一、背景 现在我们大部分的项目都是基于maven来进行构建的,比如现在主流的Spring boot项目,全程都是基于maven进行搭建,那么我们在对maven项目开发完成之后,准备上线需要对项目进行打包的时候,有时候经常遇到主函数找不到?或者是开发环境的和测试环境的配置文件还在包里面没有去除。那么我们这里主要介绍Spring boot项目如何打包合理化的问题。二、关于主函数找不到打包完...原创 2018-09-29 17:50:56 · 7878 阅读 · 0 评论 -
pgsql数据库的坑点记录
一、背景pgsql数据库呢我也是第一次用,由于公司项目需要使用这个数据库对项目进行开发,所以我这里记录一下我第一次使用这个库的所有坑点,有几个坑点让我项目几乎重构一遍。所以也是写该文章提醒小白使用前的主要事项,我这里的坑点肯定是有办法解决的,最近还没有仔细在网上查找方案。二、情况问题1、id自增没有mysql那么简单就可以进行设置,这里我要说的是这个库对id自增这块做的有点类似于ora...原创 2018-10-23 11:10:21 · 3728 阅读 · 5 评论 -
Spring boot+mybatis+jsp完整整合步骤
1、背景本人主要专攻方向为后台java服务的,有时候会有一些很小型的项目内容,但是这时候我需要自己开发前端页面,技术载没办法扩宽,虽然Spring boot不再推荐支持jsp但还是有办法对他进行重新整合进去的。所以我闲着没事的时候我就对我的全面开发过程准备中进行了整合一个自己专门使用的框架。2、创建Spring boot项目这里我们创建Spring boot项目前面有说到怎么创建,ht...原创 2018-11-13 17:52:53 · 1287 阅读 · 0 评论 -
solr整理分析
solr整理分析solr是什么?答:它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。solr的作用答:主要用于对其他存储系统中已有的一些数据做分析,查询,然后显示结果。当然它也可以直接存储数据,但是这不是它的强项。solr应用场景需要搜索的地方:如商品、书籍。。。对于存储在文件中的日志 可以导入到solr...原创 2018-03-13 12:53:47 · 239 阅读 · 1 评论