首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Troubleshooting 专题 - 问正确问题 得到正确答案

很多公司中,IT、数据中心、业务系统一出故障,会有很多人被叫到作战室(就是一个为了解决该问题,而把所有相关人员集中在一起一个会议室), 但是对于这个问题他们是否可以修复, 是否他们应该负有责任, 经常没有线索...只有很多日志信息和高级别的告警并不会给你与这个问题根因真正相关答案. 为了远离这种场景, 真正「证据」应该是什么? 你应该问什么问题? 是一个用户抱怨还是所有用户都受影响?...如果虚拟机(如:VMware, EC2...)或你容器(Docker)或你中间件或你应用运行时(如:tomcat)没有正确 size, 或者和其他虚拟机及容器存在资源争用也可能引起性能问题....是应用服务器问题么? 因为不正确配置或错误部署, 应用服务器也可能是性能问题原因. 正确资源池(线程, 数据源等)大小, 安全配置或日志参数都会影响性能....总结 How What Who Why 有了这些问题答案, 你可以消除作战室, 迅速定位问题根源, 优化并找到解决方案.

40040

日志中记录Java异常信息正确姿势

遇到问题 今天遇到一个线上BUG,执行表单提交时失败,但是从程序日志中看不到任何异常信息。...)); 日志中看不到任何信息,说明e.getMessage()返回值为空字符串。...原因分析 先来看一下Java中异常类图: ? Throwable是Java中所有异常信息顶级父类,其中成员变量detailMessage就是调用e.getMessage()返回值。...所以,程序日志中不要单纯使用getMessage()方法获取异常信息(返回值为空时,不利于问题排查)。...正确做法 Java开发中,常用日志框架及组件通常是:slf4j,log4j和logback,他们关系可以描述为:slf4j提供了统一日志API,将具体日志实现交给log4j与logback。

2.5K40
您找到你想要的搜索结果了吗?
是的
没有找到

网站底部版权信息正确拼写格式

简单来说说,标准格式应该是: Copyright+[dates]+[author/owner] *Copyright+[日期]+[作者/拥有者] 有些网站著作权声明中还会在著作权拥有者之后加一个后缀“...All Rights Reserved 某些国家曾经是必须,但是现在在大多数国家,都不是法律上必须有的字样。...All Rights Reserved.”是不规范。 有些网站著作权声明中,“初次公开发表年份”后会同时注明另外一个年份日期,如:Copyright 1996-2017 XXX....我国现行《著作权法》是参照《伯尔尼公约》制定,而根据公约规定,著作权是作品产生后自动获得、无需声明或注册才能取得。 因此,对于是否使用著作权标识 ©,并没有严格规定。...所以如何正确书写这几行声明,也并不是件可以随便忽略事。 参见下面几个常见拼写格式: ©1995-2004 Macromedia, Inc.

13.7K11

TF虚拟网络流量排错:正确时刻使用正确工具

即使是Tungsten Fabric集群内部,按理说,我们故障排除环节第一步,也会进行某种流量嗅探或流量识别。 那么……和传统物理网络有什么不同呢?...从概念上讲,没有什么不同……但是,实践当中,事情会更复杂一些。我们所说复杂,并不是指难以理解无从下手。所谓复杂,是指有更多变数起作用,但这并不一定意味着故障排除会非常难。..., Flags:, QOS:-1, S(nh):20, Stats:4/392, SPort 65513, TTL 0, Sinfo 192.168.200.4) 到目前为止,我们只看到了控制面信息...这是第一次确认流量真的虚拟机之间流动。 我们有2个流,因为每个流都是单向。 这个输出有这么多信息!流量是流动,因为Action被设置为F,也就是转发。...一句话,正确层面上使用正确工具~ ---- 作者:Umberto Manferdini 译者:TF编译组 原文链接: https://iosonounrouter.wordpress.com/2020

71420

关于Golang过滤敏感信息正确姿势

原文作者:ipfans 今天正好看到一篇关于敏感信息过滤文章,这算做一个interface实际应用一些举例和应用。...例子中介绍了一种比较常见使用场景:使用JSON保存数据时对诸如用户密码等信息进行保护时候应该做事情。...,这样,当使用json.Unmarshal等方法时,就可以规避掉在日志或者JSON接口之类方法中输出敏感信息Password。...实际上,我个人认为非常合适方法是,我们可以特定某个特殊类型Sensitivity,对于敏感信息统一采用这个类型予以保护。这样也方便我们后续添加新保护方式。...我们结合第一个方法中json.Unmarshaler一起使用时,那么就是一个比较完整敏感信息过滤方案了。

1.7K20

【译】正确线程上观察

基本逻辑,但是Observable链和操作符究竟运行在哪个线程,仍然会有许多困惑。...首先,让我们梳理清晰,RxJava中.subsribeOn( )和.observeOn( )区别: .subsribeOn( )操作符可以改变Observable应该在哪个调度器上执行任务。...调用 .subscribeOn( ) 尽管代码片段主线程中,但是整个代码块将运行在.subscribeOn( )定义线程上: Observable.just(1,2,3) .subscribeOn...调用 .observeOn( ) 如果你代码片段主线程中,默认情况下Observable创建是.subscribeOn( )定义线程上,但是,调用.observeOn( )之后,余下代码将会执行在....subscribe(); 因为thread1逻辑将会覆盖thread2,所以Observable创建和.subscribe( )逻辑处理都将运行在thread1中。

49520

Java日期格式化带来年份不正确

,使用"YYYY-MM-dd"格式化出来日期显然是不对,必须使用“yyyy”才能格式化出正确“年”。...然而有意思是:Java中不论是“YYYY”还是“yyyy”都可以用来格式化“年”,且都是合法!那么,它们区别是什么呢?使用过程中该如何选择呢?...根据中华人民共和国国家标准GB/T 7408-2005《数据元和交换格式信息交换日期和时间表示法》中4.3.2.2部分: 即一年中第一个日历星期包括该年第一个星期四,并且日历年最后一个日历星期就是在下一个日历年第一个日历星期之前那个星期...,日历星期数是其该年中顺序。...我程序出错正好是“2021-12-27 00:00:00”之后,所以就能解释为什么被格式化为“2022”年了。

2.3K20

项目中,如何正确使用日志?

一、使用slf4j 使用门面模式日志框架,有利于维护和各个类日志处理方式统一 实现方式统一使用: Logback框架 二、打日志正确方式 1、什么时候应该打日志 当你遇到问题时候,只能通过debug...当你碰到if…else 或者 switch这样分支时,要在分支首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 2、基本格式 必须使用参数化信息方式...如果有Throwable信息,需要记录完成堆栈信息: log.error("获取用户[{}]用户信息时出错",userName,e); 说明:如果进行了抛出异常操作,请不要记录error日志,由最终处理方进行处理...基本概念 系统运行信息 Service方法中对于系统/业务状态变更 主要逻辑中分步骤 外部接口部分 客户端请求参数(REST/WS 调用第三方时调用参数和调用结果 说明 并不是所有的service...调用其他第三方服务时,所有的出参和入参是必须要记录(因为你很难追溯第三方模块发生问题) 4、DEBUG 基本概念 可以填写所有的想知道相关信息(但不代表可以随便写,debug信息要有意义,最好有相关参数

1.9K31

容器里设置GOMAXPROCS正确姿势

GOMAXPROCS 是 Go 提供非常重要一个环境变量。通过设定 GOMAXPROCS,用户可以调整调度器中 Processor(简称P)数量。...所以 P 数量会很大程度上影响 Go Runtime 并发表现。GOMAXPROCS Go 1.5 版本后默认值是机器 CPU 核数 (runtime.NumCPU)。...以 Kubernetes 为代表基于容器虚拟化实现资源管理系统,也支持这样特性,比如下面这个 PodTemplate 容器定义里 limits.cpu = 1000m 就代表给这个容器分配1个核心使用时间...这类技术对 CPU 隔离限制,导致 runtime.NumCPU() 无法正确获取到容器被分配 CPU 资源数。runtime.NumCPU()获取是宿主机核心数。...目前 Go 官方并无好方式来规避容器里获取不到真正可使用核心数这一问题,而 Uber 提出了一种 Workaround 方法,利用 uber-go/automaxprocs 这一个包,可以在运行时根据

3.6K30

Java 代码里正确打日志

实现方式统一使用: Logback框架 打日志正确方式 什么时候应该打日志 当你遇到问题时候,只能通过debug功能来确定问题,你应该考虑打日志,良好系统,是可以通过日志进行问题定为。...当你碰到if…else 或者 switch这样分支时,要在分支首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息方式...和除了业务异常之外所有异常(RuntimeException和Exception) 不应该出现情况: 比如要使用Azure传图片,但是Azure未响应 如果有Throwable信息,需要记录完成堆栈信息...: 基本概念 系统运行信息 Service方法中对于系统/业务状态变更 主要逻辑中分步骤 外部接口部分 客户端请求参数(REST/WS) 调用第三方时调用参数和调用结果 说明 并不是所有的service...调用其他第三方服务时,所有的出参和入参是必须要记录(因为你很难追溯第三方模块发生问题) DEBUG 基本概念 可以填写所有的想知道相关信息(但不代表可以随便写,debug信息要有意义,最好有相关参数

66310

网页|登录注册时如何判断输入信息是否正确

问题描述 当我们很多网站或者APP上面注册时,我们一般会用电话号码或者邮箱来注册,有的人可能输入了不符合规范电话号码或者邮箱系统就会自动提示您输入不是电话号码或者邮箱,那么这是怎么做到呢?...解决方案 当我们一个网站登录或注册时需要我们输入邮箱来进行登录或者注册时,我们输入了不规范邮箱地址就会提示我们相应邮箱地址所缺失东西例如我们一个简单登录页面。 ?...图2.1 页面展示 我们需要在这个页面中输入邮箱和密码进行登录操作,今天我们就简单判断邮箱是否正确就可以了,我们生活中有许许多多邮箱地址,但是我们怎么去判断邮箱地址是否正确呢?...我们会发现邮箱地址都有一个共同之处,那就是在所有的邮箱地址当中都含有“@”符号和“.”这个符号,所以我们判断邮箱地址是否正确时候我们就只需要判断我们所输入邮箱当中是否包含这两个符号就可以了。...结语 我们很多判断原理都是一样,但可能方法会不尽相同,所以只要我们理解了相应原理就会很简单。写代码过程中一定要心细,否则就很容易出错。

1.8K10

Go 语言中,正确使用并发

抢占式调度对于哪些真正并行任务是好,但是当可变状态通过多并发线程共享时,明确多任务合作更招人喜欢 。 尽管合作多任务,你代码仍有可能是复杂,它只是有机会保持可管理下一定复杂性。...那么每个命令之间空间变成无尽空间黑洞,可怕Heisenbugs出现 在过去一年多,尽管Heka上工作(一个高性能数据、日志和指标处理引擎)已大多数使用GO语言开发。...Go亮点之一就是语言本身有一些非常有用并发原语。但是Go并发性能怎么样,需要通过支持本地推理鼓励代码镜头观察。...我们时间循环代码推理起来更加容易了很多.该模式核心是 Heke 设计. 当Heka启动时,它会读取配置文件并且它自己go例程中启动每一个插件....但是有一些需要注意小地方,还有Go争议探测器自由应用程序,你可以编写代码其行为可以预测,甚至抢占式调度门面代码中.

95580

正确事情和把事情做正确

为了可以有效率做事,我们需要做到: 做正确事;(效果) 正确做事;(效率) 把事情做正确: 高效做事系统方法是:选择/方法/工具; 事情选择可以依据“紧急/重要四象限图”,“紧急、...这样你就可以把65%-80%时间花在“重要,但不紧急”事上。 并因此,把焦虑之源,“重要,并且紧急”事情,减少到20%~25%。...但你需要知道什么是“重要但不紧急事情”,这需要和你深度思考有关。 所以,选择是高效第一步。 做事需先设定目标,想清楚自己要结果是什么,然后再采取行动。...只有这样,才能在面对新工作领域和内容时,做到得心应手。 对我们技术工作来说,道理是一样。 你当前做事情是否可以让后面的工作量减少。...如果单纯接受被动安排工作,很难真正自我提升,也很容易陷入到重复和机械化工作中去。 我们需要保持一种持续学习,主动追求,迭代自我态度,这也是《高效能人士》里面提到”积极主动“。

46820

如何正确中断线程?你姿势是否正确

Java停止线程逻辑(协同、通知) Java程序中,我们想要停止一个线程可以通过interrupt方法进行停止。...线程接收到通知之后会根据自身情况判断是否需要停止,它可能会立即停止,也有可能会执行一段时间后停止,也可能根本就不停止。 那么Java为什么要选择这种非强制性线程中断呢?...false,那么我们可以异常中手动再次中断当前线程,那么就可以完全停止线程任务。...总结 上面我们简单介绍了如何正确停止线程,如果在以后面试中被问到这类问题,那么你是不是可以流畅回答面试官了。...run方法中遇到异常,我们是不能直接生吞,一定要做处理,你可以是简单日志记录,也可以中断线程。但就是不能不做任何处理。

60420

CS正确用法

1.目录下建立.htaccess伪静态: RewriteEngine On RewriteRule ^(\w+)\.jpg$ image.php?...p=$1 [L] order deny,allow 这个文件作用是把目录下所有.jpg后缀图片重定向到image.php 2.建立image.php程序: <?...3.上传一个image.jpg 就是用作替换真实图片。 好处 1. 直接插入图片地址写入AFF,不会像iframe那样明显。 2. 可以判断HTTP_REFERER,决定哪些网站定位至AFF。...这个功能同样可以用作防盗链,盗链者复制你图片使用,会被定位到AFF地址,从而实现赚钱。 4. 可以设置图片时间,文件名写成插入时间时时间戳,超出指定时间(比如5天),就自动跳转AFF链接。...这样可以公共论坛发帖前几天内,让别人看不出是AFF,过了几天再跳转到AFF。

42110

如何正确 Android 上使用协程 ?

虽然 Kotlin 发布之初就有了协程,但是直到 2018 年 KotlinConf 大会上,JetBrain 发布了 Kotlin1.3RC,这才带来了稳定版协程。... Android 中,一般是不建议直接使用 GlobalScope 。那么, Android 中应该如何正确使用协程呢?再细分一点,如何直接在 Activity 中使用呢?...使用上是没有任何问题,可以正常弹出 Toast 。但是当你执行这个方法之后,立即按返回键返回上一页面,仍然会弹出 Toast 。...当 LiveData 进入 inactive 状态时,经过一个可配置 timeout 之后会自动取消。如果它在完成之前就取消了,当 LiveData 再次 active 时候会重新运行。...() suspend fun LifecycleOwner.whenStarted() suspend fun LifecycleOwner.whenResumed() 可以指定至少特定生命周期之后再执行挂起函数

2.7K30
领券