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

编码习惯之异常处理

对于大型IT系统,最怕事情第一是系统出现了异常不知道,等问题闹大了用户投诉了才知道出问题了。第二就是出了问题之后无法找到出错原因。针对这2个问题,说说我们项目组是怎么样规定异常处理。...公司业务流程非常复杂,和周边系统一堆集成,一堆后台队列任务,任何一部都可能出问题。 举几个今年真实案例: 1 某系统销户无法成功,最后定位发现前段时间ldap密码修改没有更新 2....针对这些功能,在流程上当然可以采取相对策略来保证,但从开发角度来说,任何规定都无法保证一定不会发生错误,老虎也有打盹时候,只相信代码。 贴一段非常常见代码,大家觉得这段代码有没有问题? ?...空判断大部分时候不需要,你如果写了空判断,你就必须测试为空和不为空二种场景,要么就不要写空判断。 强调,有些空判断是要,如:参数是用户输入情况下。...大家不要理解为不能加空判断,大家见仁见智吧。反正是这样写代码发现效果很好,很少花时间在调试代码和改bug上,更加不会出现前台返回成功,后台有异常什么也没有做场景。

82690

初学者学Java常遇到问题,都给你回答了!

公开小本本内容 “程序员们当然可以考虑到这点,他们会这样做,将你输入密码进行「加密」存到小本本「数据库」中。无论是谁,拿到加密后密码,都不能「反推」你原始输入密码。” ?...理解 学习Java能干什么?...但总的来说是因人而异,有的人理解能力就是好,看书就很快就学会了。 知识点太多,学完忘,记不住 要明确是,我们写代码不是背书,不是让你将所有的API给记下来。...学了这项技术,能解决什么问题如果理解为什么要学习某项技术,就去学用法和API。认为如果隔一阵子不用,的确是会忘记。 比如说,如何你连“为什么要用多线程”你都无法用通俗的话来解释清楚。...如果你不知道学习某项技术是干嘛用,那先不要学 如果你不知道学习某项技术是干嘛用,那先不要学 如果你不知道学习某项技术是干嘛用,那先不要学 重点东西可以写笔记记录下来(这个也是因人而异,身边大佬很多也不写笔记

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

程序员你为什么这么累【续】:编码习惯之异常处理

第二就是出了问题之后无法找到出错原因。针对这2个问题,说说我们项目组是怎么样规定异常处理。...举几个今年真实案例: 1 某系统销户无法成功,最后定位发现前段时间ldap密码修改没有更新 某个流程失败,最后发现集成系统新增加了NAS盘,防火墙不通无法访问导致报错。...针对这些功能,在流程上当然可以采取相对策略来保证,但从开发角度来说,任何规定都无法保证一定不会发生错误,老虎也有打盹时候,只相信代码。 贴一段非常常见代码,大家觉得这段代码有没有问题? ?...空判断大部分时候不需要,你如果写了空判断,你就必须测试为空和不为空二种场景,要么就不要写空判断。 强调,有些空判断是要,如:参数是用户输入情况下。...大家不要理解为不能加空判断,大家见仁见智吧。反正是这样写代码发现效果很好,很少花时间在调试代码和改bug上,更加不会出现前台返回成功,后台有异常什么也没有做场景。

792110

那你讲一下并发可达性分析

你要抓住面试官把话语权交给你宝贵机会,接着说啊,你得支棱起来: 因为引用计数法算法是这样:在对象中添加一个引用计数器,每当一个地方引用它时,计数器加一;当引用失效时,计数器值减一;任何时刻计数器为零对象就是不可能再被使用...你刚刚谈到了可达性分析算法,那如果在该算法中被判定不可达对象,是不是一定会被回收呢? 谈谈你熟悉垃圾回收器和他们工作过程? ..........在可达性分析扫描过程中,如果只有垃圾回收线程在工作,那肯定不会有任何问题。 但是垃圾回收器和用户线程同时运行呢?这个时候就有点意思了。...这里借助《深入理解Java虚拟机(第三版)》示例,但是第三版示例描述写不是特别容易理解尽我所能描述清楚一些,下面会结合动图,分析标记三种情况: 正常标记 我们先看一下一次正常标记过程...其实也不是很有资格给你们修改简历,也不是一个技术很牛逼的人,只是把知道分享出来了而已,不仅能让巩固知识,还是倒逼我进行知识输入,在此之外还能对你有一点点帮助,那就是文章全部价值所在。

99431

06 | XSS:当你“被发送”了一条微博时,到底发生了什么?

而且这个过程中没有任何过滤措施,如果黑客想要对这个过程发起攻击,他会输入下面这行代码: alert('xss'); 黑客输入这段字符后,网页会弹出一个告警框...但是,目前更流行其实是前后端分离,这样网页代码不会受服务端影响。那么,这样是不是安全了呢? 显然不是的。尽管服务端无法改变网页代码,但网页本身 JavaScript 仍然可以改变。...比如:鼠标的轨迹、键盘输入信息等。也就是说,你输入账号名和密码,都可以被 JavaScript 记录下来,从而被黑客获取到。...另外,即使某个存在 XSS 漏洞页面不具备任何输入框,黑客还可以通过修改 DOM,伪造一个登录框,来诱导用户在本不需要登录页面,去输入自己用户名和密码。...实际上并不是这么简单,我们还是通过搜索这个例子来看。在用户点击“搜索”按钮之后,如果我们马上对他输入内容进行验证,这样就会产生两个问题。 你将无法保存用户原始输入信息。

59620

审阅“史上”最烂代码

非常确定,很大一部分用户会在社交网络、电子邮件服务、银行账户等服务中使用相同用户名和密码,想象一下,别人可以在没有任何障碍下就可以拿到你账户和密码,这得有多可怕。...如果你有存储此类登陆信息需求,那么使用 cookie 确实是最常见解决方案,这没有什么问题!...如果该数据库中拥有数百万个用户怎么办? 还有前面已经说过了,在这里再提一下,为什么作者不对数据库中明文密码进行哈希处理? 让我们接着看一下authenticateUser函数返回值。...所以,这个网站到底是怎么确定是谁?也许它只是通过用户名 / 密码身份验证显示一些私人内容,所以它没有展示任何个人数据。总之,没有人知道代码为什么会这么写。...大家不要误会,每天都会在 Google 上进行搜索,但比起仅仅复制和粘贴代码来实现功能,理解代码工作原理——比如理解如何设置 Cookie,实际上更为重要。如果由于某种原因整个进程中断了怎么办?

60930

用天工AI 一小时做好一个网站,真的炸裂!(附详细教程)

向朋友咨询了下有没有特别好用AI 工具,推荐各种工具都有,其中天工AI得到大力举荐,用过之后,真香警告。 网站开发,也是用天工AI来完成。 顺便也把整个过程给记录下来。...同样也是一次出了正确结果,并没有让反复调试。 版本3 第二个版本已经大致符合需求,但是还有一些小问题,比如:内容输入框太小、文字内容没有使用中文、二维码展示区不明显。...针对这些问题,进行了第三次优化,使用描述信息如下: 在以上代码中进行优化,具体要求有: 按钮和提示信息,使用中文 左侧输入框,改用 textarea 右侧二维码显示区添加一个边框,即使没有生成二维码...第一张: 第二张: 第三张: 如果不知道怎么添加图标,还是使用编程助手来协助完成。 下面就是添加图标后显示效果,之前图片是一个默认地球,修改之后显示AI帮忙成成图标了。...AI搜索是天工AI去年8月推出重磅功能,天工AI也是中国第一家推出AI搜索厂家,利用最先进自然语言处理技术和深度学习算法,深度理解用户搜索意图,从而返回更相关、更准确搜索结果。

17410

交互设计中“所见即所得”原则

个人更加偏爱产品A处理模式,因为当用户都没有上传图片时,给用户展示“智能填写”按钮是没有任何意义,这里“智能填写”虽然可见但是不可得,用户也不能点击。...我们无法直接告诉用户,你是因为风险等级过高导致无法领取,因为用户风险等级过高是因为开通了某项业务。当时开通时候,我们并未告知开通后会被判定为高风险用户。...所以为了不必要麻烦,最好办法就是进行判断前置,如果判断用户为高风险用户那么直接不展示该优惠券。...举个例子,用户输入登录密码时候,其触点是输入框。...当用户密码输入错误时候,我们可以通过抖动输入方式告知用户输入错误,这里抖动是现实生活中“摇头”映射,我们都知道摇头代表着否定意思,用户不用看到弹框上密码错误”几个字也能明白密码输错了。

1.6K30

mysql数据库忘记密码怎么办

大家好,是架构君,一个会写代码吟诗架构师。今天说一说mysql数据库忘记密码怎么办[linux数据库忘记密码怎么办],希望能够帮助大家进步!!!...忘记MySQL数据库密码就进不去数据库,也就无法修改密码,解决方法如下:   1:打开cmd命令符,先关闭正在运行数据库,输入如下命令:   2:打开mysql.exe和mysqld.exe所在文件夹...,复制路径地址 3:输入命令 mysqld --skip-grant-tables 回车,此时跳过了mysql用户验证。...注意输入此命令之后命令行无法操作了,此时可以再打开一个新dos窗口进入到mysqlbin目录下。...其中mysql库就是保存用户地方,输入 use mysql; 选择mysql数据库。

11.5K20

如何正确完善拆解一款App?

能分析出产品目标人群定位是谁,记录下来,因为深入分析任何一款产品之前,你都要清楚知道它是给谁用,这样你才能根据后续功能、流程、页面逻辑等信息推算出这款产品设计是否符合这个人群要求。...举个例子:我们用信用卡付款时候需要输入各种信息,姓名、手机号、银行卡号、卡验证码等,第二次、第三次去付款,如果每次都要这样输入就会很麻烦,所以有些浏览器会有记录信息作用,只要你输入姓名,就可以选择之前填写过信息...情坏这个环节其实很少有 App 能做到,因为确实不好做,如果你在某个产品里能发现,说明这是一款有感情产品。 有时候,我会被一些 App 设计所打动,从整体到细节过渡,好像触及了心里某根弦。...遇到这类产品,你要做是去感悟,从中理解到什么,并记录下来,写下你感受。如果你接到类似的需求,你会怎么做?如果也要求你加入情怀,你能把它化为自己然后复用么?好好想想。...要是不符合,说明这个创新是失败,因为它并不能达到用户需求。而如果符合,恭喜你,你知识框架有了新记录点。 对待创意,要有一颗同理心,自问我们确实很难做到创新。那你和别人差距在哪里呢?

98780

和 lvgo 一起学设计模式(六)结构型之代理模式

嗯,想是的,这样肯定是个很正常学习过程。但是对于一些你暂时无法使用东西,你如何去掌握它呢?认为应该抛开表象去了解本质,通过本质类比去掌握那些暂时无法使用东西。...而我希望这个设计模式系列是去应用化,就是单纯把设计模式思想记录下来理解设计模式该如此。...不要纠结每种模式具体实现,把它们抽象出来,你能够清楚描述每种模式是为了解决什么问题而存在时候,已经掌握它了,就可以把它用在任何当你需要时候。...完整代码获取关注公众号:星尘一个朋友 回复 “源码” 为了在深入理解一下代理模式,选择使用 mybatis 代理模式实现原理伪代码。...如果之前有了解过 mybatis 代理模式,这里应该不难理解。 下面再看一个简单例子,当然用图说明可能会更容易 请忽略图中示意具体内容,只是借图表达代理意义,控制对象访问。

27630

宝塔面板phpMyAdmin未授权访问漏洞是个低级错误吗?

经过实际查看互联网上案例和询问使用了宝塔面板朋友,发现在7.4.2以前版本中没有pma这个目录,并且phpmyadmin默认情况下认证方法是需要输入账号密码。...比较粗暴,直接判断目录/www/server/phpmyadmin/pma是否存在,如果存在直接删掉。所以,我们虽然恢复了系统版本代码,但删掉pma已经不在了,我们还需要恢复一下这个目录。...#如果是静态文件 return send_file(filename) 代码太长,我们不展开分析,只写出来部分。...对于用户来说,感受到体验就是,不再需要输入任何Mysql密码即可使用phpmyadmin了。 这的确给用户使用带来了更好体验。...如果一个未认证用户,直接访问http://ip:8888/phpmyadmin/index.php呢?会被直接重定向到登录页面: ? 如果仅仅是这样,这个过程是不存在漏洞

1.4K40

防治运营商HTTP劫持终极技术手段

近年来,运营商HTTP劫持非但没有收敛,反而变本加厉,玩出了新花样:比如通过HTTP劫持进行密码截获活动;比如下载软件被替换情况;比如劫持进行返利(当然返利不是返给你)情况。   ...TCP连接为HTTP协议,之后可以抢在网站服务器返回数据之前发送HTTP协议302代码进行下载软件劫持,浏览器收到302代码后就会跳转到错误软件下载地址下载软件了,随后网站服务器真正数据到达后反而会被丢弃...旁路设备中检测HTTP协议模块通常比较简单,一般只会检测TCP连接建立后第一个数据包,如果其是一个完整HTTP协议才会被标记;如果并非是一个完整HTTP协议,由于无法得到足够多劫持信息,所以并不会被标记为...这个软件是个开源软件,代码在: https://github.com/lehui99/ahjs5s 。如果发现有什么问题,欢迎在Github上提Issue。...如果有更新,也会第一时间更新到Github上。

2K40

为什么说Go错误处理是最棒

如果你研究一下用Go编写Github上任何项目,几乎可以保证你会比代码库中任何其他项目更频繁地看到这些代码行: if err !...= nil、记录错误外,我们不会对错误进行任何处理!我们可能会遇到数据损坏或无法智能处理其他无法预料问题,或者重试函数调用,取消进一步程序流,或者在最坏情况下关闭程序。...这篇来自2005年微软工程博客博文至今仍然有效,即: 意思不是说异常不好。观点是,异常太难了,不够聪明,无法处理它们。...使用这种错误链接可以fmt.Errorf("something went wrong: %w", err)轻松地构建很棒错误消息,这些错误消息可以根据您定义准确地告诉您出了什么问题。...= nil,这是您可能会输入内容。不认为这是正面还是负面的。它可以完成工作,易于理解,并且可以使程序员在程序失败时执行正确操作,其余取决于您。

54020

HTTP协议下保证密码不被获取更健壮方式

这样做是无法保证用户账户安全,因为稍微懂一点编程知识的人就可以通过你发送http请求知道了你密码,小白又说了,密码加密了,它拿到也是加密后密码,它不知道原始密码它是无法从登录页面登录...原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6009648.html 新浪微博:intsmaze刘洋洋哥     但是小白啊,你有没有想过,有时候仅仅知道你加密后密文够了...如果用户可以查看数据库,那么他可以观察到自己密码和别人密码加密后结果都是一样,那么,别人用和自己就是同一个密码,这样,就可以利用别人身份登录了。那么我们以前加密方法是否对这种行为失效了呢?...小黑说:你说这些都懂,来告诉你最终方案吧:在用户输入完账号后,后台ajax发送用户账号到服务器,这个时候服务器为该账号生成一个随机数验证码,响应给前端登录页面。     ...QQ 在登陆时,对用户输入密码加密JS代码为: function getEncryption(password, uin, vcode, isMd5) { var str1 =

1.5K20

【实测】用chatGPT来完整走一次测试流程吧,看看它到底相当于我们什么等级工程师?

我们先别管写是否高级和完整,先来看看这段代码: selenium自动化脚本启动和收尾没太大问题; 然后验证了用户密码输入框是否存在,如果不存在报错了; 然后用一个错误用户密码 登录了一次,验证提示语是否正确...然后来点评一下这段代码: 优点:gpt写代码没有语法问题,直接扫描出来了页面中几个关键元素定位;代码注释还不错; 缺点:其中正确用户名、密码、主页、主页用户名展示,主页退出按钮等都是gpt...擅自揣测且没有提前说明,如果给不懂脚本的人来看是会被忽悠住;用例脚本太少了,和上面一大堆用例完全不是一起来;用例没有引入什么标准框架,较落后;selenium定位写法比较落后,最新版本中这种写法是会报错...然后再次提高询问水准,看看其代码程度: 代码比较多,截取一些关键点和新部分吧: import unittest from selenium import webdriver from selenium.webdriver.common.keys...而po模式影子仍然存在; 缺点:多线程运用没有进行系统封装,存在较大风险和局限;用例内容结构比较单一,之前复杂的如测试浏览器记住用户密码无法参与到这个并发中;线程是按照用例作为基本单位,对需要前后文关联多用例是无法实现

28810

对.NET三层结构理解

下面所学简单介绍对三层结构理解。 一:表现层 表现层主要是对从业务逻辑层里面调用得到数据进行显示,不进行任何加工。...三:数据表现层 该层里面应业务逻辑层请求去处理与数据库之间交互,不对数据做任何业务上加工。捕获数据库交互式出现异常,抛出或记录下来。...比如用户想登陆系统,在表现层输入用户名和密码,表现层会收集相关数据传递给业务逻辑层,业务逻辑层将数据经过一些处理和封装之后传递给数据访问层,数据访问层此时执行相应数据库操作,并将结果返回上一层。...可以说这三层之间松耦合,互不干扰,之间联系仅仅通过各自提供接口来访问,哪一层出了问题就去找哪一层去解决。同时层内部各个类之间也是“松耦合”,如果还互相调用和依赖就会比较复杂,会有“臭虫”出现。...注:以上是对.NET三层结构理解,不当之处请见谅。学习三层结构最好方法就是去研究微软PetShop4.0,这东西挺经典,也挺值得去研究

27310

一个奇怪登录需求

这个类将负责用户密码校验工作,具体在 authenticate 方法里边,这个方法本来特别长,这里只把和本文相关代码列出来: @Override public Authentication authenticate...BadCredentialsException 异常,BadCredentialsException 异常从字面理解就是密码输入错误异常。...当我们登录时候,首先由局部 ProviderManager 出场进行用户密码校验工作,如果校验成功,那么用户登录成功了,如果校验失败,则会调用局部 ProviderManager parent...所管理 DaoAuthenticationProvider 没做任何特殊处理,那么局部 ProviderManager 中抛出来 UsernameNotFoundException 异常最终还是会被隐藏...就不写代码了,感兴趣小伙伴可以去试试。

36320

j123jt聊天板大型wp

hint已经写成这样了,觉得很好理解,这题就是弱口令,所谓弱口令就是一个用户使用习惯,仔细想想其实很多人都和我有相同弱口令习惯,所以这里密码其实不难猜。...所谓业务逻辑漏洞,就是说在书写代码时候产生代码漏洞,而是逻辑层判断,这里hint也很清楚了,问题所在就是没有在注册时候做用户唯一性检查。...,仔细观察可以知道,在要求用户输入密码判定成功后直接跳到了修改页面,但修改页面并没有做任何用户验证,导致可以修改任意用户密码,这里为了降低难度,参数通过get方式传输了。...20秒修改一次密码脚本,不知道有没有人因为这个原因无法登陆,如果有可以自己再尝试下。...,如果使用iframe,我们可以调用任意位置js执行,只可惜在出题时候没考虑到iframe标签不同源问题,导致这里其实无法盗取cookie,所以后台获取flag方式改为只要执行js即可… j123jt

29430

每天一道面试题——登录

案例1: 有效用户名和有效密码 有效用户名和无效密码 无效用户名和无效密码 无效用户名和用小密码 用户输入特殊字符或超过长度限制字符串 密码输入特殊字符或超过长度限制字符串 .........这几种回答,从面试经历来看,都是很常见回答。也许大家从语气中能看出来,每种回答都是存在一些问题,那么都有什么问题呢?...听到第一个例子中回答后,常会反问求职者三个问题: 为什么要测试无效用户情况? “用户输入特殊字符或超过长度限制字符串”这个测试点,为什么要在登录功能上测试?...再来说第二个问题,验证“用户输入特殊字符或超过长度限制字符串”, 是否是注册时测试点? 如果把它作为登录测试点,是否会让面试官觉得求职者连最基本测试技能都不扎实?甚至理解需求都存在障碍?...比如我会说用户密码验证上需要参考需求和代码实现,比如代码实现上是先验证用户名是否存在,若存在则继续验证密码....通过这样小技巧,可以让我们回答更接地气,突出我们更有实际测试经验,更关注需求而非想当然去做测试

68130
领券