自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(208)
  • 资源 (2)
  • 收藏
  • 关注

原创 Tracing Analysis Solution

【代码】Tracing Analysis Solution。

2022-09-05 17:25:31 529 2

原创 全链路监控方案

本文只是结合公司内部实现方案,对全链路监控方案层面抛砖引玉,不会做深入探讨。全链路监控含义:针对微服务进行qps、错误率、错误量、线程池监控或者mysql慢查询的等进行监控和上报,便于全链路追踪和问题查询。实现整体思路都是进行服务拦截、指标上报,利用traceId和spanId的原理进行调用链路绘制。其中常用的两种实现方案,也是笔者公司用的两种方案分别是基于java agent的skywalking,基于aop大理进行功能增强。方案一:skywalking大家可以自行搜下相应介绍,大致原理是:利

2022-04-04 17:02:17 1782

原创 线下多环境隔离实现简介

背景线下环境隔离分为两个方面:1.dev和test环境:物理隔离;2.test环境或者dev环境中,基准环境(稳定)或迭代环境(跟着项目走的环境);1方式采用机器隔离需要机器成本比较大;2是本次文章讨论的场景:采用方式是逻辑隔离,可以节省大量的机器成本,并且不会影响基准环境增加了项目稳定性。技术方案采用的方案是标签方案,通过header或者参数中传递特定参数例如env="testProject1"则所有微服务中的consumer端在调用server端时,通过服务注册和发现在进行路由的时候可以

2022-04-04 16:34:50 2577

原创 网关从0到1设计

背景每个公司接口都有有一些通用的设置用来保护公司接口安全、统计监控或统一功能性设置。如下图所示就是网关的用作。网关设计一般而言网关分为两个micro service:一个是运营后台配置界面,一个为核心转发层;产品上理解调研了阿里、腾讯等公司发现大同小异。下面就笔者所在公司的网关来说明下如何从0到1实现一个网关。整体架构设计如下:因为网关是性能敏感形应用,所以要求转发曾配置中心的读取使用内存型存储例如apollo、redis,其中携程提供的apollo可以用长轮询的方式和应用服务保持长连接

2022-04-04 15:54:48 1076

原创 问答机器人开放平台设计开发

背景公司内部类似钉钉的通讯软件有提供机器人的两种能力:outgoing、incoming。这两种基本能力都是以公司机器人的角度来分类的:incoming是机器人作为主体可以向群里成员发送的信息;outgoing是机器人可以接受到输入参数来调用指定接口,这个能力是和机器人进行交互的基础。利用机器人问答的场景可以用于处理运营客服群或者技术客服群等。问题机器人的对话是基于markdown格式来进行传参和展示的。基本每个业务方都需要有一定的技术答疑量例如:笔者开始在公司业务组负责某个业务相关每天的面临产品和

2022-04-04 14:59:40 266

原创 通过Jconsole和Mbeans两种方式获取Tomcat核心线程参数

首先配置jmx参数(以下配置为不用密码登录的):-Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.rmi.port=8004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false接下来可以自主选择Jconsole来获取tomcat核心参数,其中本地进程,在本地启动tomca

2021-08-09 15:21:33 430 1

转载 Java 8 新特性Option<T>

写过 Java 程序的同学,一般都遇到过 NullPointerException :) —— 为了不抛出这个异常,我们便会写如下的代码: User user = getUserById(id);if (user != null) {String username = user.getUsername();System.out.println("Username is: " +...

2018-09-09 10:55:45 12346 1

转载 Java transient关键字使用小记import java.io.Externalizable; import java.io.File; import java.io.FileInputStr

       哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~好了,废话不多说,下面开始:1. transient的作用及使用方法      我们都知道一个对象只要实现了Serilizable接口,这个...

2018-09-09 10:54:26 589

转载 tinyint

int(M) 在 integer 数据类型中,M 表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。...

2018-09-09 10:50:58 240

转载 java.lang.NoSuchMethodError

1 原因在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误。本质上说是 JVM 找不到某个类的特定方法,也就是说 JVM 加载了错误版本的类。说白了,就是 JVM 找不到真正想要调用的方法啦!出现该错误的情形主要有以下两个种:导入了不匹配的包版本; 开发环境和运行环境不一致。2 解决方法查看“External Libra...

2018-09-09 10:49:47 371

转载 git stash 用法

今天在看一个bug,之前一个分支的版本是正常的,在新的分支上上加了很多日志没找到原因,希望回溯到之前的版本,确定下从哪个提交引入的问题,但是还不想把现在的修改提交,也不希望在Git上看到当前修改的版本(带有大量日志和调试信息)。因此呢,查查Git有没有提供类似功能,就找到了git stash的命令。综合下网上的介绍和资料,git stash(git储藏)可用于以下情形:发现有一个类是多余的...

2018-09-09 10:48:02 306

转载 mybatis中的#和$的区别

mybatis中的#和$的区别1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".  2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果

2017-08-21 11:53:33 455 2

原创 并发编程の锁

本节包含三个知识点:1.多线程多个锁2.对象锁同步3.对象锁异步多个线程多个锁:多个线程,每个线程都可以拿到自己指定的锁,分别获得锁之后,执行synchronized方法体的内容。注意点:关键字synchronized取得的是对象锁,而不是一把代码(方法)当作锁,所以,如果两个对象当作锁,线程获得的是两个不同的锁,他们互不影响。只有一种情况是相同的锁,即静态方法上加sync

2017-06-30 16:59:07 338 2

原创 并发编程の线程安全

线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或者方法)就是线程安全的。synchronized:可以在任意对象及方法上加锁,而加锁的这段代码成为“互斥区”或临界区。这里要注意:当多个线程访问Thread的run方法是,以排队的方式进行处理(这里排队是按照CPU分配的先后顺序而定的),一个线程想要执行synchronized修饰的

2017-06-30 16:29:28 346 1

转载 Java方法的可变参数类型

原文:Java方法的可变参数类型许多Java新人在看到下面的这段代码的时候,都会问一个问题:dealArray方法里那三个小点点是什么啊?[java] view plaincopypublic class TestVarArgus {      public static void dealArray(int...

2017-05-25 17:59:50 454 1

转载 eclipse安装插件的几种方式

前段时间Google转向了IDEA,貌似有些动摇了Eclipse作为Java领域IDE龙头老大的位置,为此引起了Eclipse粉丝和IDEA粉丝的集体骂战。类似这种骂战向来都不绝于耳,貌似程序员的都比较多,可能大家都是搞技术出身,都很自信。其实我觉得不需要也没必要去辩论,使用什么去开发通常都是取决于外在的客观环境,而不是取决于主观因素。       言归正传,Eclipse魅力之一就是支持

2017-05-23 10:56:59 5539

转载 dubbo配置详解

原文链接:http://www.cnblogs.com/chanshuyi/p/5144288.htmlDUBBO 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是阿里巴巴 SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo采用全spring配置

2017-05-12 21:00:14 456 1

转载 tomcat配置文件详解

元素名属性解释serverport指定一个端口,这个端口负责监听关闭tomcat 的请求shutdown指定向端口发送的命令字符串servicename指定service 的名字Connector ( 表示客户端和service之间的连

2017-05-12 20:49:14 355

转载 linux常用命令

Linux简介及Ubuntu安装常见指令系统管理命令打包压缩相关命令关机/重启机器Linux管道Linux软件包管理vim使用用户及用户组管理文件权限管理 大牛笔记-www.weixuehao.com来自:http://www.weixuehao.com/archives/25Linux简介及Ubunt

2017-05-12 20:43:50 427 2

转载 spring的传播机制(场景)

对于SQL事务的概念以及ACID性质,可以参见我的另一篇博文 http://kingj.iteye.com/admin/blogs/1675011spring的管理的事务可以分为如下2类:逻辑事务   在spring中定义的事务通常指逻辑事务,提供比物理事务更抽象,方便的事务配置管理,但也基于物理事务物理事务  特定于数据库的事务spring中支持一下2中事务声明方式编程式事务

2017-05-12 18:31:46 816 1

转载 数据库索引详解

强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向

2017-05-12 18:25:00 290

转载 Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结

java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。导致OutOfMemoryError异常的常见原因有以下几种:内存中加载的数据量过于庞大,如一次从数据库取出过多数据;集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;代码中存在死循环或循环产生过多重复

2017-05-12 18:08:15 348

转载 Dubbo框架结合Zookeeper注册中心使用

【参考文章】http://www.cnblogs.com/Javame/p/3632473.html  (灰常感谢这篇启蒙文章!!) 【文章有错,修改见删除线处。。】 一、基本概念 【Dubbo】Dubbo是一个来源于阿里巴巴的分布式服务框架,本质上是一个服务调用的东西,主要在分布式场景中使用。它是以服务者/消息者的模式在dubbo上注册的。

2017-05-11 11:29:53 1137

转载 HashMap实现与哈希冲突,与HashTable的区别

对于 Map ,最直观就是理解就是键值对,映射,key-value 形式。一个映射不能包含重复的键,一个键只能有一个值。平常我们使用的时候,最常用的无非就是 HashMap。HashMap 实现了 Map 接口,允许使用 null 值 和 null 键,并且不保证映射顺序。HashMap 有两个参数影响性能:初始容量:表示哈希表在其容量自动增加之前可以达到多满的一种尺度

2017-05-10 16:58:23 773

转载 请求跨越问题三个解决方案

一.什么算跨域我们先回顾一下域名地址的组成: http://www.baidu.com:80/script/ajax.js 其中http://(协议号) www(子域名) google(主域名) 80(端口) script/ajax.js (请求的地址) 当协议、子域名、主域名、端口号中任意一各不相同时,都算不同的“域”。不同的域之间相互请求资源,就叫“跨域”。

2017-05-10 16:45:54 1125

转载 Spring Boot 监控和管理生产环境

spring-boot-actuator模块提供了一个监控和管理生产环境的模块,可以使用http、jmx、ssh、telnet等拉管理和监控应用。审计(Auditing)、健康(health)、数据采集(metrics gathering)会自动加入到应用里面。首先,写一个最基本的spring boot项目。 基于Maven的项目添加‘starter’依赖:

2017-05-09 12:41:50 1689

转载 springboot常用注解总结

@RestController和@RequestMapping注解4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解。4.0之前的版本,spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet。使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestControl

2017-05-09 12:24:06 1474

转载 Hashtable 和 ConcurrentHashMap

相同点: Hashtable 和 ConcurrentHashMap都是线程安全的,可以在多线程环境中运行; key跟value都不能是null区别: 两者主要是性能上的差异,Hashtable的所有操作都会锁住整个对象,虽然能够保证线程安全,但是性能较差; ConcurrentHashMap内部使用Segment数组,每个Segment类似于Hashtable,在“写”线程或者部分特殊的“读

2017-05-09 12:21:54 195

转载 Java NIO与IO

当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。Java NIO和IO的主要区别下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO                NIO面向流  

2017-05-09 12:20:24 273

转载 jvm类的加载详解

1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加载器并不需要等到某个类被“首次主动使

2017-05-09 12:19:05 257

转载 各种排序算法的分析及java实现

排序一直以来都是让我很头疼的事,以前上《数据结构》打酱油去了,整个学期下来才勉强能写出个冒泡排序。由于要找工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下。  排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。  内排序可以分为以下几

2017-05-03 15:30:07 295

原创 Class"X" is public, should be declared in a file named "X.java"

如图所示,当类名和文件名不一致的时候就会出现这样的问题.这时只要把文件的名字改成和类名相同就好了.问题很低级,但是有时候猛一看可能不知所云.

2017-04-24 15:28:23 46351 6

原创 三分钟学会git bash命令行

背景:公司开始从svn转变成git.但是很多程序猿的观念很难转变.在一开始我和大多数一样就直接想绕过去这个问题,直接利用idea的可视化git,但是出现冲突等问题的时候如果不明白git的执行的本质很难解决问题.而且说实话,看着大家敲着命令行很高大上的感觉呀.๑乛◡乛๑,废话说了一大堆,现在进入正题:使用:一定要注意一个前提,在所有的操作之前一定要在.git的路径下1.首先右键选择git

2017-03-23 14:50:28 2485 2

原创 yml文件list的嵌套的写法

springboot+mybatis的分页的时候用到了,配置yml中的mapper接口,但是因为是list的形式,所以必须用到list写法:只要加-就可以了,例如:mapper:    mappers:        - com.zjrealtech.qcs.quality_control.dao.base.QualityAnalysisDao

2017-02-20 20:09:04 10482 2

原创 前后台时间类型传输

背景:本公司是前后端分离的开发,前端传输的时间实际上是字符串类型,例如:2017-02-15.然后我在后台接受的时候用Date接受,报错说类型不一致.分析:时间和字符串类型虽然在前后端可以隐士的转化,但是,因为后端的时间默认的是标准格式,所以导致报错如下;解决方案:只要在后端属性上面加一个注解:@DateTimeFormat把时间的格式统一一下就可以了.

2017-02-20 19:56:35 8607 6

原创 url请求后端实体接收

背景:在get请求中写一个拥有最多14个参数的url请求.这个是总的需求.目前我们公司是前后端分离的,所以前端根据不同的页面选项传给我1到14个参数.问题:接收我负责后端,不可能用@requestParam 接收14次,于是就想着定义一个实体dto来接.这时候问题就出现了.我首先定义了一个实体,然后用@requestParam去接受,总是报错,说找不到对应的参数....解决:后来把@r

2017-02-20 19:47:45 1913 1

原创 java.lang.IllegalStateException

在这篇博客中文件上传发现文件大小根据不能进行手动限制始终是1m.只要一上传大于1m的图片就会报错:{"error_response":{"code":0,"msg":"Unknown error","sub_code":"0","sub_msg":"org.springframework.web.multipart.MultipartException: Could not parse m

2017-02-07 16:33:44 1457

原创 四种思路java.lang.ClassCastException:org.apache.catalina.connector.RequestFacade cannot be cast....

在文件上传的时候遇到这个bug,然后,各种调查,综合各种查和加上自己的经验,下面总结一下比较完整的几个思路.接思路一:直替换参数为需要的request,因为public interface MultipartHttpServletRequest extends HttpServletRequest, MultipartRequest,上一篇文章在开始,大家可能注意到和大多数博客

2017-01-22 17:51:01 20054

原创 SpringBoot文件上传

技术背景:springboot+maven+restful服务首先分成三部分:1.引入maven依赖包,主要是io和upload两个依赖,上代码: org.springframework spring-beans org.apache.tomcat.emb

2017-01-22 17:29:19 2464

原创 Status Code:405 Method Not Allowed

场景:前端调用方法的时候,调不通,并且报错信息为405因为我们公司前后端分离开发,于是前端就来找我说我写的接口有问题?于是我就在这里的postman中测试发现没问题啊.然后我好好看了一下报错信息:request不支持get方法,然后就上网查了一下405错误一般引起的原因就是post和get方法调错了.也就是说,我提供的接口是post方法的请求,但是前端调用的时候是用get方法调

2017-01-16 15:39:06 19454 2

java设计模式

资源共享

2017-03-26

计算机网络原理

资源共享,

2017-03-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除