JavaWeb Develop
文章平均质量分 77
严厚宗
全面拥抱AIGC
展开
-
异常 try – finally 注意的地方
语句前,会先将返回值ret保存在一个临时变量中,然后才执行finally语句,最后try再返回那个临时变量,finally中对ret的修改不会被返回。try/catch/finally语法中,catch不是必需的,也就是可以只有try/finally,表示不捕获异常,异常自动向上传递,但finally中的代码在异常发生后也执行。所以,一般而言,为避免混淆,应该避免在finally中使用return语句或者抛出异常,如果调用的其他代码可能抛出异常,则应该捕获异常并进行处理。//不管有无异常都执行。转载 2022-09-21 14:08:26 · 592 阅读 · 0 评论 -
高并发场景-Redis解决双写问题&强数据一致性场景思考(三种创新使用方法)
http://note.youdao.com/noteshare?id=ff42f6b4148298d97dc3ef36af963d6f&sub=7A1C2FA465364079A3377E5CA35765E3关于Redis使用的思考-创新Redis缓存加version:方案1、解决双写不一致问题优点:数据库并发性更好;缺点:未解决超卖问题。方案2、缓存加version结合数据库乐观锁对于采用乐观锁场景可以减少数据库读操作;同时解决了双写不一致问题。优点.原创 2021-01-10 13:13:20 · 1085 阅读 · 1 评论 -
Java中的阻塞队列
1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方法:方法\处理方...转载 2018-03-14 00:46:12 · 303 阅读 · 0 评论 -
Dubbo和Eureka
一、SpringCloud和DubboSpringCloud整合了一套较为完整的微服务解决方案框架,而Dubbo只是解决了微服务的几个方面的问题。contentDubboSpringCloud服务注册中心zookeeperSpring Cloud Netflix Eureka服务调用方式RPCREST API服务网关无Spring Cloud Netflix Zuul断路器不完善Spring Cl...转载 2018-03-12 15:14:35 · 18824 阅读 · 2 评论 -
Java面试题分享
20180308 蚂蚁金服研发工程师面试题什么是微服务?如何保证研发质量?如何带团队,让下属对你听从?对安全架构的设计常见的网络攻击方式linux top指令内存相关的参数HashMap的原理以及ConcurrencyHashMap的原理JAVA线程模型,jvm操作原语JVM调优,垃圾收集器选择,CMS与Parrable Old收集器区别常见的线程池?为什么要使用线程池?常见的负载均衡策略与算法滑...原创 2018-03-12 14:05:33 · 390 阅读 · 0 评论 -
MyBatis的SqlBuilder
在MyBatis的映射配置文件中写sql语句有时候很方便,但是对于有大量字段的表结构却不太简单,幸好MyBatis提供的有SqlBuilder工具类,可以生成相应的SQL语句,如下例程:[java] view plaincopypackage com.utils; import org.apache.ibatis.jdbc.SqlBuilder; public class MyBati...转载 2018-03-17 16:53:50 · 4011 阅读 · 0 评论 -
JAVA自动路由
在Spring mvc的开发中,我们可以通过RequestMapping来配,当前方法用于处理哪一个URL的请求.同样我们现在有一个需求,有一个任务调度器,可以按照不同的任务类型路由到不同的任务执行器。其本质就是通过外部参数进行一次路由和Spring mvc做的事情类似。简单看了Spring mvc的实现原理之后,决定使用自定义注解的方式来实现以上功能。自定义TaskHandler注解?12345...原创 2018-03-17 16:23:03 · 3751 阅读 · 0 评论 -
23设计模式汇总
设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式。设计模式的六大原则...转载 2018-03-15 20:09:08 · 222 阅读 · 0 评论 -
设计模式学习之访问者模式
访问者模式,是行为型设计模式之一。访问者模式是一种将数据操作与数据结构分离的设计模式,它可以算是 23 中设计模式中最复杂的一个,但它的使用频率并不是很高,大多数情况下,你并不需要使用访问者模式,但是当你一旦需要使用它时,那你就是需要使用它了。访问者模式的基本想法是,软件系统中拥有一个由许多对象构成的、比较稳定的对象结构,这些对象的类都拥有一个 accept 方法用来接受访问者对象的访问。访问者是...转载 2018-03-15 18:01:06 · 201 阅读 · 0 评论 -
代码整洁之道
“我们就是一群代码猴子,上蹿下跳,自以为领略了编程的真谛。可惜当我们抓着几个酸桃子,得意洋洋坐到树枝上,却对自己造成的混乱熟视无睹。那堆“可以运行”的乱麻程序,就在我们的眼皮底下慢慢腐坏。”——《代码整洁之道》作者 RobertC.Martin,于SD West 2007技术大会 一、系列文章前言 敲完上面这段文字的时候,心里在想,一个刚踏入编程生涯的新人,要经历多少的淬炼,才能领略到Bob大叔...转载 2018-02-28 19:01:39 · 450 阅读 · 0 评论 -
Spring Data Flow
https://zhuanlan.zhihu.com/p/29763252原创 2017-12-14 17:04:52 · 1097 阅读 · 0 评论 -
浅析消息队列 RabbitMQ
什么是rabbitMQrabbitMQ是一款基于AMQP协议的消息中间件,它能够在应用之间提供可靠的消息传输。在易用性,扩展性,高可用性上表现优秀。而且使用消息中间件利于应用之间的解耦,生产者(客户端)无需知道消费者(服务端)的存在。而且两端可以使用不同的语言编写,大大提供了灵活性。rabbitMQ工作原理首先我们得先理解rabbitMQ里的一些基本定义,主要如下:exchange: produc...转载 2018-03-14 10:02:01 · 296 阅读 · 0 评论 -
Ribbon学习
什么是RibbonRibbon是Netflix公司开源的一个负载均衡的项目,它属于上述的第二种,是一个客户端负载均衡器,运行在客户端上。它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TCP客户端的一些行为。 Feign已经默认使用了Ribbon。负载均衡容错多协议(HTTP,TCP,UDP)支持异步和反应模型缓存和批处理RestTemplate和Ribbon相结合Ribbon在Netf...转载 2018-03-20 10:54:22 · 612 阅读 · 0 评论 -
本地缓存使用GuavaCache
最近在项目中需要使用一个产品组件,通过一个产品接口做模糊查询,通过产品id得到产品信息,可是对于产品的编辑和展示用到的地方特别多,即项目中会频繁的调用一个接口。这个问题走了一些弯路,比如在表中增加展示字段,数据返回前调员工接口做转换,或者列表展示时由前端并发处理,最后证明这些办法都不是很好。最后想到了本地缓存。在系统中,一些访问量大但是数据量小、与业务无关的缓存适合采用本地缓存。为什么不采用分...原创 2019-03-22 18:02:49 · 461 阅读 · 0 评论 -
Elasticsearch与solr
Elasticsearch简介*Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。但是Lucene只是一个框架...转载 2019-03-18 14:54:19 · 224 阅读 · 0 评论 -
Java Label的使用
在Java中“{”和“}”组成一个代码块(code block),如我们最常用到的static代码块,而每个代码块都可以用一个Label,Label不是Java中的关键字,而是一个任意的标识符。由于我们一般不怎么用Label,此时难免会有人问:Label到底有什么用呢?大家不要急,且听我慢慢道来。试想一个这样的场景:有一个两重循环,但是当在内层循环中找到了满足的条件,就停止两重循环就退出执行。...转载 2019-03-18 14:52:13 · 13082 阅读 · 0 评论 -
maven helper:解决maven项目中依赖包冲突问题
日常开发中经常会遇到xxx.class 找不到的异常,但是这个类确实存在我们的项目中,就会感觉很离奇,其实这就是包冲突的问题冲突问题比如项目中引用了两个 fastjson.jar的版本,分别为fastjson:1.2.28fastjson:1.2.3我们用到了1.2.28中的某个类, 比如 A类,在版本更新中 1.2.3版本去掉了这个类,然而我们项目中maven 却把1.2.3...转载 2019-03-14 14:57:07 · 345 阅读 · 0 评论 -
java捕获到异常以后,后面的代码还会执行吗?
return会执行的。try{}里面包含可能会出错的代码?如果里面出错了,他回交给catch{}处理,catch可能把这个错误给屏蔽掉(就比如说你牙疼不能吃饭,给给力来个止疼的,不影响你做其他的事情了)。。不影响你之后的代码运行。。但是如果你try{}里面有多行代码第一行,第二行,第三行,如果第二行出错了,第三行是不执行的。如果有finally{}这里里面代码是处理后事的。比如说,你try里...原创 2019-03-14 14:15:45 · 1967 阅读 · 0 评论 -
成为一名Java高级架构师到底需要学习什么?
Java架构师,应该算是一些Java程序员们的一个职业目标了吧。很多码农码了五六年的代码也没能成为架构师。那成为Java架构师要掌握哪些技术呢,总体来说呢,有两方面,一个是基础技术,另一个就是组织能力和提出解决方案能力了。我就跟大家来简要地说说吧。如果你是想成为Java架构师,那么你首先要是一个Java高级攻城狮。也就是说,基础必须牢固,对Java的了解全面而且深入。熟练使用各种框架,并知...转载 2018-07-30 20:56:37 · 457 阅读 · 0 评论 -
怎样成为Java架构师
很多人做java开发2,3年后,都会感觉自己遇到瓶颈。什么都会又什么都不会,如何改变困境,为什么很多人写了7,8年还是一个码农,工作中太多被动是因为不懂底层原理。公司的工作节奏又比较快,难有机会学习架构原理,也没人教,所以这个时候,学习架构原理,扩展思维,对自己以后职业生涯尤为重要。同样公司的两个新人,一个新人一点就通,学东西很快,有的人,学东西很慢,也很痛苦,处处都是新技术。为什么?因为那个...转载 2018-07-30 17:02:20 · 492 阅读 · 0 评论 -
分布式微服务架构体系详解
作者简介李静瑶,2011 年毕业于中南大学,毕业后入职阿里巴巴集团,在职期间主要负责淘宝网营销产品线的研发工作,曾担任试用中心产品线 PM。现就职于赤金信息科技有限公司,担任 CTO 职位。从零搭建基于 Docker 容器技术的微服务分布式企业集群,深度的 DDD 思想践行者。CSDN 博客专家。微服务架构的演变微服务架构的技术体系、社区目前已经越来越成熟。在最初系统架构的搭建,或者当现有架构已到...转载 2018-07-13 19:55:20 · 662 阅读 · 0 评论 -
IO,NIO,AIO介绍
一、看图网上很多IO资料,对新手来说,越看越晕。根据自己的理解,总结对比了一下BIO、NIO、AIO。BIO:线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成。如下图:NIO(reactor模型):线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作,线程开始阻塞,直到操作完成。如下图:AI...原创 2018-07-13 19:51:20 · 1053 阅读 · 0 评论 -
类加载器与双亲委派模型
类加载器加载类的开放性类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因。在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是类加载器。这一动作是放在Java虚拟机外部去实现的,以便让应用程序自己决定如何获取所需的类。虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说根本...转载 2018-07-10 21:54:22 · 271 阅读 · 0 评论 -
Spring Cloud Data Flow
Spring Cloud Data Flow 介绍1.Data flow 是一个用于开发和执行大范围数据处理其模式包括ETL,批量运算和持续运算的统一编程模型和托管服务。2.对于在现代运行环境中可组合的微服务程序来说,spring cloud data flow是一个原生云可编配的服务。 使用spring cloud data flow,开发者可以为像数据抽取,实时分析,和数据导入/导出原创 2017-12-14 17:01:38 · 1557 阅读 · 0 评论 -
Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties
以前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什么大问题,因为都是解析简单的json数据。但是最近学习springboot,要解析一个比较复杂的json数据。就照之前的用gsonformat自动生成实体类,让gson直接解析,本想着一切ok了,可是确报错了,刚开始以为gsonformat生成的类有错误,因为毕竟json数据较为复杂,于是多生成几次,可是还是不原创 2017-12-14 15:47:00 · 686 阅读 · 0 评论 -
freemarker导出PDF
由于本人技术有限本篇导出也是根据网上大家的做出的demo混合而成。有不足的地方请大家指出。好改正,使以后看到的freemarker导出pdf的朋友们能通俗易懂上手。本程序是在maven中实现的所以如果有的朋友是用jar包实现的请注意版本号。Pom文件代码 com.itextpdf.tool xm原创 2017-11-20 16:08:32 · 1023 阅读 · 0 评论 -
消息中间件--ActiveMQ的使用与部署
1 JMS与MQ 1.1 JMSJMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,中文称Java消息服务。JMS是一种与厂商无关的 API,用来访问消息收发系统消息;就像JDBC(Java Database Connec原创 2017-10-30 17:32:10 · 840 阅读 · 0 评论 -
ZooKeeper基本原理和使用
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。转载 2017-10-30 17:48:15 · 405 阅读 · 0 评论 -
SSH项目
做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH。这篇博文主要总结一下如何整合Struts2、Hibernate4.3和Spring4.2。 整合三大框架得先从搭建各部分环境开始,也就是说首先得把spring,hibernate和Struts2的环境搭建好,确保它们没有问题了,再做整合。这篇博文遵从的顺序是:先搭建Spring环境-->然后搭建Hibernate环境-原创 2017-10-22 16:09:59 · 1553 阅读 · 0 评论 -
JAVA性能调优
关于JAVA性能调优: 让Java应用程序运行是一回事,但让他们跑得快就是另外一回事了。在面对对象的环境中,性能问题就像来势凶猛的野兽。但JVM的复杂性将性能调整的复杂程度增加了一个级别。这里Refcard涵盖了JVM internals、class loading(Java8中更新以映射最新的元空间)、垃圾回收、故障诊断、检测、并发性,等等。介绍Java是目前软原创 2017-10-30 15:22:12 · 493 阅读 · 0 评论 -
Nginx在windows环境下常用命令
在windows7 系统中使用ngingx ,我们需要了解一下nginx 的一下基本操作指令,比如:nginx 启动,nginx 停止,重新载入nginx 等常用的指令,本篇文章参考:nginx 开发者文档(nginx 官网)1、nginx启动方式如下截图:注意:建议使用第二种启动nginx 方式,第一种方式会使你的cmd窗口一直处于执行中,不允许其他命令操作。翻译 2017-10-29 21:00:45 · 910 阅读 · 0 评论 -
Dubbo的三种连接方式
一、直连提供者+只订阅开发测试环境下,需要绕过注册中心,直接测试服务提供者,1.在消费方配置【可以两个以上,中间用逗号隔开】。serviceImpl里加个断点,每次访问都会走断点。在管控台本地服务接口最后点击禁用,还是可以正常访问,说明绕过了注册中心。2.在adminstrator账户下建一个dubbo.resolve.properties,默认会读取该文件,原创 2017-10-29 18:06:04 · 7556 阅读 · 0 评论 -
Linux下Zookeeper自启动
直接修改/etc/rc.d/rc.local文件:vim /etc/rc.d/rc.local键入i,进入编辑模式,加入图中标记的内容第一行:jdk安装的路径(根据自己的安装情况设置)export JAVA_HOME=/usr/local/jdk7 第二行:zookeeper的启动命令(根据自己的zookeeper安装目录设置:/usr/local/zoo原创 2017-10-28 18:18:54 · 357 阅读 · 0 评论 -
JDBC learning notes - day01 entry procedures
I. overview of JDBC1.JDBC:SUN provides a set of operating database specificationsThe relationship between 2.JDBC and database: the relation between interface and implementation class原创 2017-08-04 16:40:11 · 369 阅读 · 0 评论 -
How to solve laptop - network status unknown, dependent service or group cannot start
The problem is not complicated:As administrator, start the CMD at the start menu and appear in the DOS windowBreak into SFC/SCANNOW and let the system check againThen break into NETSH WINS原创 2017-08-04 15:54:03 · 294 阅读 · 0 评论 -
使用freeMark作为模板导出pdf
使用freeMark作为模板导出pdfpom引入如下:[html] view plain copyprint?span style="white-space:pre"> span>dependency> groupId>org.xhtmlrenderergroupId> artifac原创 2017-11-20 17:08:49 · 1363 阅读 · 0 评论 -
ftl文件引入css,js
ftl引入css,js>文件结构一览>jar包一览>web.xml关键一句话,就是springmvc的那个servlet,因为要用RESTFul风格,所以拦截/,并且让它去读springMVC来初始化(java /src 根路径)。web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst原创 2017-11-20 18:49:30 · 12959 阅读 · 2 评论 -
freeMarker生成各类文件,含图片
使用freemarker生成word、html时,在图片显示这儿碰了个大钉子,最后总算弄出来了,这里总结一下。 1、生成word:a、使用freemarker生成word文档图片显示需要特殊处理,若是按照常理(使用占位符的形式)替换完成之后显示图片的区域只会出现一堆内容(即你给它赋值的内容)而不是一张图片。b、如何处理:直接从某处复制一张图片放到word中需要显示的区域,然后另存为原创 2017-11-20 19:22:26 · 8050 阅读 · 1 评论 -
MyCat介绍
一、MyCat介绍1、什么是MyCat?简单的说,MyCat就是:一个彻底开源的,面向企业应用开发的“大数据库集群”支持事务、ACID、可以替代Mysql的加强版数据库一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server结合传统数据库和新型分转载 2017-12-12 17:21:10 · 1082 阅读 · 0 评论 -
resultType与resultMap区别
一、概述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值原创 2017-12-12 17:17:49 · 460 阅读 · 0 评论