用户接口

如何优雅地根治null值引起的Bug!

对着背影说爱祢 提交于 2019-12-31 16:57:08
本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门: https://mp.weixin.qq.com/s/igMojff-bbmQ6irCGO3mqA 在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。 有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。 此篇文章,总结了几种关于空值的处理手法,希望对读者有帮助。 业务中的空值 场景 存在一个 UserSearchService 用来提供用户查询的功能: public interface UserSearchService{ List<User> listUser(); User get(Integer id); } 问题现场 对于面向对象语言来讲,抽象层级特别的重要。尤其是对接口的抽象,它在设计和开发中占很大的比重,我们在开发时希望尽量面向接口编程。 对于以上描述的接口方法来看,大概可以推断出可能它包含了以下两个含义: listUser() : 查询用户列表 get(Integerid) : 查询单个用户 在所有的开发中

Beta冲刺1

左心房为你撑大大i 提交于 2019-12-31 04:36:56
Task1:团队TSP 团队任务 预估时间 实际时间 完成日期 修改等级答题界面 30 60 12.4 完成等级答题接口 --- --- --- 完善不同等级算法 --- --- --- 前端与后端对接新的等级接口 --- --- --- 修改用户排名界面 --- --- --- 修改用户存储答题成绩 --- --- --- 修改用户信息界面 --- --- --- 前端与后端对接新的获取用户信息接口 --- --- --- 修改获取用户信息接口 30 35 12.4 后端重新部署 --- --- --- Task2:描述项目进展 成员 任务安排 完成情况 郑玉波 修改等级答题界面 完成 吴福强 完善不同等级算法 未完成 张苏涛 修改获取用户信息接口 完成 周文华 修改用户排名界面 未完成 肖文婷 修改用户信息界面 未完成 林志伟 完成等级答题接口 未完成 叶斓浈 博客 --- Task3:目前面临的困难 https的域名服务器搞不到手。 Task4:已取得成果 修改等级答题界面代码 Task5:项目燃尽图 Task6:站立式会议照片 来源: https://www.cnblogs.com/wistaria/p/10067642.html

spring AOP详解三

流过昼夜 提交于 2019-12-29 14:30:57
CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截的结束拦截所有父类方法的调用,并顺势织入横切逻辑。我们采用CGLib技术可以编写一个可以为任何类创建织入横切逻辑代理对象的代理创建器,下面看一个使用CGLib代理技术实现横切的一个例子: 1.CglibProxy.java package spring.aop.demo2; import java.lang.reflect.Method; import spring.aop.demo1.PerformanceMonitor; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; public class CglibProxy implements MethodInterceptor { // private static CglibProxy proxy = new CglibProxy(); private Enhancer enhancer = new Enhancer(); public Object getProxy(Class clazz) { enhancer.setSuperclass(clazz);//

开发流程

好久不见. 提交于 2019-12-28 07:07:21
  一个完整的开发流程应该有这四步:分析->设计->编码->测试。很多开发团队往往只有编码这边,弱化了其他步骤,他们拿到需求就开始写代码, 写着写着发现有问题,要么是遇到一个难点解决不了,要么是发现要返回修改以前写过的代码, 要么是发现有大量的重复代码,又不知道怎么封装,只能将错就错。做好了分析和设计编码时就不会有这么多问题, 做好了测试产品bug就少,产品质量才高。 下面我分别详细讲解一下这四步。 分析   分析的时候,我们要分析需求和难点。   分析需求的方法是做需求陈述处理,前面我提到过, 要区分做什么和怎么做,把这两部分独立出来,做什么是固定不变的, 而怎么做可能会经常变。我们再熟悉一下举的那个例子:我们要做一个成员列表(如图1-44),产品经理告诉我们要按姓名拼音排序。 图1-44 成员列表的例子   我们有时候不能直接听产品经理的,如果真写死成按姓名拼音排序就没有可扩展性了,比如某一天产品经理又告诉你需要把VIP会员提前,那么你只能再去修改排序的程序。这个需求始终不变的是排序,按姓名拼音只是排序的一种方法,我们在设计数据库时应该把排序字段设置为数字而不是拼音,再写一个拼音转换为数字的算法即可,这样在后面排序规则变化,比如VIP会员要提前,只是修改对应用户数据库的排序字段数值即可,不用大改程序。   我们可以用xmind做需求分析,

javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

醉酒当歌 提交于 2019-12-27 15:08:43
一、Servlet+JSP+JavaBean开发模式(MVC)介绍   Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。   这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML、Xpath、Servlet、jsp的知识点都串联起来。 二、创建MVC架构的Web项目   在MyEclipse中新创建一个webmvcframework项目,导入项目所需要的开发包(jar包),创建项目所需要的包,在java开发中,架构的层次是以包的形式体现出来的 项目所需要的开发包(jar包) 序号 开发包名称 描述 1 dom4j-1.6.1.jar dom4j用于操作XML文件 2 jaxen-1.1-beta-6.jar 用于解析XPath表达式 3 commons-beanutils-1.8.0.jar 工具类,用于处理bean对象 4 commons-logging.jar commons-beanutils-1.8.0.jar 的依赖jar包 5 jstl.jar

C#编写简单的聊天程序

风流意气都作罢 提交于 2019-12-27 04:52:55
C#编写简单的聊天程序 引言 这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友提供一点参考。文章大体分为四个部分:程序的分析与设计、C#网络编程基础(篇外篇)、聊天程序的实现模式、程序实现。 程序的分析与设计 1.明确程序功能 如果大家现在已经参加了工作,你的经理或者老板告诉你,“小王,我需要你开发一个聊天程序”。那么接下来该怎么做呢?你是不是在脑子里有个雏形,然后就直接打开VS2005开始设计窗体,编写代码了呢?在开始之前,我们首先需要进行软件的分析与设计。就拿本例来说,如果只有这么一句话“一个聊天程序”,恐怕现在大家对这个“聊天程序”的概念就很模糊,它可以是像QQ那样的非常复杂的一个程序,也可以是很简单的聊天程序;它可能只有在对方在线的时候才可以进行聊天,也可能进行留言;它可能每次将消息只能发往一个人,也可能允许发往多个人。它还可能有一些高级功能,比如向对方传送文件等。所以我们首先需要进行分析,而不是一上手就开始做,而分析的第一步,就是搞清楚程序的功能是什么,它能够做些什么。在这一步, 我们的任务是了解程序需要做什么,而不是如何去做。 了解程序需要做什么,我们可以从两方面入手,接下来我们分别讨论。 1.1请求客户提供更详细信息 我们可以做的第一件事就是请求客户提供更加详细的信息

第06组 Alpha冲刺(5/6)

女生的网名这么多〃 提交于 2019-12-27 00:26:30
队名: 拾光组 组长博客链接 作业博客链接 团队项目情况 燃尽图(组内共享) 组长:宋奕 过去两天完成了哪些任务 主要完成了个人中心模块的接口设计 完善后端的信息处理 GitHub签入记录 接下来的计划 完成个人主页模块 还剩下哪些任务 完成个人主页接口设计 燃尽图组内共享 遇到了哪些困难 如何更好地存储数据? 有哪些收获和疑问 查阅了相关存储的资料,学习编写接口文档。 如何友好交互前后端? 组员1:杨晋南 过去两天完成了哪些任务 完成了移动端Android用户个人中心模块基本UI界面 进一步完成了移动端Android部分界面间逻辑代码 完成用户个人中心模块接口的对接 接下来的计划 完成个人主页模块UI的实现 完成个人主页模块接口对接 还剩下哪些任务 完成个人主页的接口对接与逻辑代码、UI界面完善 燃尽图组内共享 遇到了哪些困难 个人中心点击切换多页面的实现 有哪些收获和疑问 学习了Android个人中心界面实现的基本知识,学习有关接口对接的教程 组长什么时候女装打代码? 组员2:刘晓翔 过去两天完成了哪些任务 完成了移动端iOS用户个人中心模块基本UI界面 继续完成移动端iOS部分界面间逻辑代码 完成用户个人中心模块接口的对接 完善联系模块 接下来的计划 完成个人主页模块UI的实现 完成个人主页的接口对接与逻辑代码、UI界面完善 还剩下哪些任务 个人主页设计与逻辑代码

Android监听ScrollView的滚动事件

旧街凉风 提交于 2019-12-26 21:19:19
一种可供用户滚动的层次结构布局容器,允许显示比实际多的内容。ScrollView是一种FrameLayout,意味需要在其上放置有自己滚动内容的子元素。子元素可以是一个复杂的对象的布局管理器。通常用的子元素是垂直方向的LinearLayout,显示在最上层的垂直方向可以让用户滚动的箭头。 有时候我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部。可惜的是SDK并没有相应的方法,不过倒是提供了一个 onScrollChanged方法,显然这个方法是不能被外界调用的,因此就需要把它暴露出去,方便使用。解决方式就是写一个接口。 protected void onScrollChanged(int x, int y, int oldx, int oldy) 1、编写一个接口 public abstract interface OnScrollChangedListener { public abstract void onScrollChanged(int top, int oldTop); } 2、然后重写ScrollView类的onScrollChanged方法,给它提供上面写的回调接口。 public class ObservableScrollView extends ScrollView { private

单片机的组成以及分类和指标

喜你入骨 提交于 2019-12-26 12:32:26
单片机的组成 单片机又称单片微控制器,它把一个计算机系统集成到一块芯片上,主要包括微处理器(CPU)、存储器(随机访问存储器RAM、只读存储器ROM)和各种输入/输出接口(包括定时器/计数器、并行I/O接口、串行口、A/D转换器以及脉冲宽度调制(PWM)等,如图1-1所示。 ▲图1-1 单片机组成框图 程序存储器(ROM) ROM用来存放用户程序,分为EPROM、Mask ROM、OTP ROM和Flash ROM等。 EPROM型存储器编程(把程序代码通过一种算法写入程序存储器的操作)后,其内容可用紫外线擦除,用户可反复使用,故特别适用于开发阶段,但EPROM型单片机价格很高。 Mask ROM型单片机价格最低,适用于批量生产。由于Mask ROM型单片机的代码只能由生产厂商在制造芯片时写入,故用户更改程序代码十分不便,在产品未成熟时选用此型单片机风险较高。 OTP ROM型(一次可编程)单片机价格介于EPROM和MaskROM型单片机之间,它允许用户对其编程,但只能写入一次。 Flash ROM型单片机可采用电擦除的方法修改其内容,允许用户使用编程工具或在系统中快速修改程序代码,且可反复使用,故一推出就受到广大用户的欢迎。Flash ROM型单片机既可用于开发阶段,也可用于批量生产,随着制造工艺的改进,价格不断下降,使用越来越普遍,已成为现代单片机的发展趋势。 中央处理器

springboot快速集成swagger

岁酱吖の 提交于 2019-12-25 18:34:31
今天技术总监说:小明,我们本次3.0改造,使用swagger2.0作为前后端分离的接口规范,它可以一键生成前后端的API,一劳永逸……小明:??? Spring Boot 框架是目前非常流行的微服务框架,我们很多情况下使用它来提供 Rest API,而对于 Rest API 来说很重要的一部分内容就是文档,Swagger 为我们提供了一套通过代码和注解自动生成文档的方法,这一点对于保证 API 文档的及时性将有很大的帮助。本文将使用 Swagger 2 规范的 Springfox 实现来了解如何在 Spring Boot 项目中使用 Swagger,主要包含了如何使用 Swagger 自动生成文档、使用 Swagger 文档以及 Swagger 相关的一些高级配置和注解。 Swagger 简介 Swagger 是一套基于 OpenAPI 规范构建的开源工具,可以帮助我们设计、构建、记录以及使用 Rest API。Swagger 主要包含了以下三个部分: Swagger Editor:基于浏览器的编辑器,我们可以使用它编写我们 OpenAPI 规范。 Swagger UI:它会将我们编写的 OpenAPI 规范呈现为交互式的 API 文档,后文我将使用浏览器来查看并且操作我们的 Rest API。 Swagger Codegen:它可以通过为 OpenAPI(以前称为 Swagger