Framework

Java & Android未捕获异常处理机制

我的未来我决定 提交于 2021-02-20 12:56:23
一、背景 无论是Java还是Android项目,往往都会用到多线程。不管是主线程还是子线程,在运行过程中,都有可能出现未捕获异常。未捕获异常中含有详细的异常信息堆栈,可以很方便的去帮助我们排查问题。 默认情况下,异常信息堆栈都会在输出设备显示,同时,Java & Android为我们提供了未捕获异常的处理接口,使得我们可以去自定义异常的处理,甚至可以改变在异常处理流程上的具体走向,如常见的将异常信息写到本地日志文件,甚至上报服务端等。 在未捕获异常的处理机制上,总体上,Android基本沿用了Java的整套流程,同时,针对Android自身的特点,进行了一些特别的处理,使得在表现上与Java默认的流程会有一些差异。 二、未捕获异常处理流程 2.1 引子 我们先可以思考几个问题: 1,Java子线程中出现了未捕获的异常,是否会导致主进程退出? 2,Android子线程中出现了未捕获的异常,是否会导致App闪退? 3,Android项目中,当未作任何处理时,未捕获异常发生时,Logcat中的异常堆栈信息是如何输出的? 4,Android项目中,可能引入了多个质量监控的三方库,为何三方库之间,甚至与主工程之间都没有冲突? 5,Android中因未捕获异常导致闪退时,如何处理,从而可以将异常信息写到本地日志文件甚至上报服务端? 6,Java & Android对未捕获异常的处理流程有何异同

收藏从未停止!阿里Spring全栈学习宝典2021全新开源

谁说我不能喝 提交于 2021-02-19 15:15:28
Spring 5.0 我们做这行的对于Spring的学习,可以说是一直未停止。前段时间Spring5.0发布,多了很多新功能,这些新功能改变了我们使用该框架的方式。但是 很多铁汁对于Spring 5.0的新增功能并不是很了解,更别说利用这些新功能使用Spring MVC构建应用程序,使用Spring Framework构建并扩展微服务,以及如何开发和部署云应用程序了。 对于Spring,虽然大家在工作中离不开这个框架,但是在简历上却没有太多人敢写精通。如果大家想要深入学习Spring,真正成为一名Spring精通者,那么下面这份Spring全栈宝典大家可一定不要错过! 这份Spring全栈宝典演示了应用程序架构的进化过程——从单体架构到围绕微服务构建的架构。此外,还介绍来SpringBoot的高级功能,并通过强大的实例演示这些功能。 由于文档有358页篇幅限制不能全部为大家展示出来,需要的朋友帮忙点zan+zhaun发,关注我之后直接添加小助理vx:bjmsb2020 即可获取免费下载方式! Spring全栈宝典 目录总览 向Spring Framework 5.0进化&依赖注入 使用Spring MVC 构建Web应用程序 向微服务和云原生应用程序进化 使用Spring Boot构建微服务 扩展微服务 Spring Boot的高级功能 Spring Data Spring

Django rest framework(1)----认证

和自甴很熟 提交于 2021-02-19 11:03:04
目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Django rest framework(4)----版本 Django rest framework(5)----解析器 Django rest framework(6)----序列化 Django rest framework(7)----分页 一、基础 1.1.安装 两种方式: github pip直接安装 pip install djangorestframework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework源码中到处都是基于CBV和面向对象的封装 (1)面向对象封装的两大特性 把同一类方法封装到类中 将数据封装到对象中 (2)CBV 基于反射实现根据请求方式不同,执行不同的方法 原理:url-->view方法-->dispatch方法(反射执行其它方法:GET/POST/PUT/DELETE等等) 二、简单实例 2.1.settings 先创建一个project和一个app(我这里命名为API) 首先要在settings的app中添加 INSTALLED_APPS = [

Django REST framework视图

孤街醉人 提交于 2021-02-19 08:11:05
Django REST framework视图 学习序列化的时候发现有大量的冗余代码,所以我们要使用Django REST framework里的视图减少我们的代码 DRF中的request 在Django REST Framework中内置的Request类扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等。 比如,区别于Django中的request从request.GET中获取URL参数,从request.POST中取某些情况下的POST数据。 在APIView中封装的request,就实现了请求数据的解析: 对于GET请求的参数我们通过request.query_params来获取。 对于POST请求、PUT请求的数据我们通过request.data来获取。 学习序列化时的部分 from rest_framework.views import APIView from rest_framework.response import Response from .models import * from django.shortcuts import HttpResponse from django.core import serializers from rest_framework import serializers class

Android面试题集:以前烂大街的四大组件-Activity,面试重提这些知识点你还记得吗?

风流意气都作罢 提交于 2021-02-18 23:15:16
前言 虽然有很多面试的文章里都有这些题目,但是我每次在看的时候,总是会觉得有些分散,复习的时候还要重新去找到对应的文章,所以我就想着自己来整理一下,并且把题目给分一下类型;自己整理可以帮助我复习的同时还可以巩固一遍;这次主要是4大组件相关,后续我会继续整理,觉得有帮助的可以点个赞。 接下来是关于Activity的面试题了: 描述一下Activity 生命周期? onCreate() Activity第-次被创建的时候调用,一些初始化操作可以在这里完成。 onStart() 这个方法在Activity 由不可见变为可见的时候调用。 onResume() 这个方法在Activity 准备好和用户进行交互的时候调用。此时的Acivity一定位于返回栈的栈顶,并且处于运行状态。 onPause() 这个方法在系统准备去启动或者恢复另-个Activity的时候调用。 onStop() 这个方法在Activity 完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity 是一个对话框式的Activity,那么onPause()方法会得到执行,而onStop()方法并不会执行。 onDestroy() 这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。 onRestart

Django Rest framework 之 节流

元气小坏坏 提交于 2021-02-18 18:31:22
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) django rest framework 之 版本(四) django rest framework 之 解析器(五) django rest framework 之 序列化(六) django rest framework 之 分页(七) django rest framework 之 视图(八) 一、节流 1、简介 节流又叫限流,限制访问。就是通常一个用户在多次请求一个页面,或者点击一个链接的时候,前几次点击是没有问题的,但是一旦连续几次之后,就会出现 访问受限,离下一次访问还有50秒 等的字样,在<code>django rest framework</code> 中有一个专门的组件来做限制访问。 2、思路 一旦一个用户向资源发送请求,那么根据用户的身份就有两种情况,匿名用户和认证用户。那么根据用户的身份怎么做限制访问?就是要找到用户的唯一标识。 匿名用户:对于匿名用户,唯一能用来标识的只有 请求的IP 。 认证用户:认证用户的用户名,或者用户ID等。 用户标识的问题解决了,假设设置的是每分钟只能访问5次,也就是5次/min。当用户发送请求,可以拿到用户的唯一标识

python接口自动化(二十一)--unittest简介(详解)

半世苍凉 提交于 2021-02-18 15:29:42
简介   前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest。熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG,这个招聘的需求上也是经常见到的。python 里面也有单元 测试框架-unittest,相当于是一个 python 版的 junit。python 里面的单元测试框架除了 unittest,还有一个 pytest 框架,这个实际上用的比较少,后面有空再继续介绍和分享。unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测 试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。 学习和了解unittest 1、查看其中文官网: https://docs.python.org/zh-cn/3/library/unittest.html 英文官网: https://docs.python.org/3/library/unittest.html 2、先导入 unittest用 help 函数查看源码解析查看描述: Python unit testing framework, based on Erich Gamma's JUnit and Kent Beck's Smalltalk

Django REST framework

我与影子孤独终老i 提交于 2021-02-18 08:24:03
[TOC] Django REST framework 权限和限制 (你能干什么) 与身份验证和限制一起,权限确定是应该授予还是拒绝访问请求。 在允许任何其他代码继续之前,权限检查始终在视图的最开始运行。权限检查通常使用 request.user 和 request.auth 属性中的身份验证信息来确定是否应允许传入请求。 权限用于授予或拒绝不同类别的用户访问API的不同部分。 最简单的权限类型是允许访问任何经过身份验证的用户,并拒绝访问任何未经身份验证的用户。这对应 IsAuthenticated 于REST框架中的类。 稍微不那么严格的权限样式是允许对经过身份验证的用户进行完全访问,但允许对未经身份验证的用户进行只读访问。这对应 IsAuthenticatedOrReadOnly 于REST框架中的类。 设置权限的方法 可以使用该 DEFAULT_PERMISSION_CLASSES 设置全局设置默认权限策略。例如: REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ) } 如果未指定,则此设置默认允许不受限制的访问: 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions

ASP.NET Core开发之HttpContext

杀马特。学长 韩版系。学妹 提交于 2021-02-18 05:36:03
ASP.NET Core中的HttpContext开发,在ASP.NET开发中我们总是会经常用到HttpContext。 那么在ASP.NET Core中要如何使用HttpContext呢,下面就来具体学习ASP.NET Core HttpContext。 注入HttpContextAccessor ASP.NET Core中提供了一个 IHttpContextAccessor接口,HttpContextAccessor 默认实现了它简化了访问HttpContext。 它必须在程序启动时在IServicesCollection中注册,这样在程序中就能获取到HttpContextAccessor,并用来访问HttpContext。 services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 获取HttpContextAccessor 下面来实际做一个操作,获取 HttpContextAccessor。 新建一个ASP.NET Core Web 应用程序,选择Web 应用程序。 身份验证勾选为不进行身份验证。 然后在HomeController 加入如下代码: public class HomeController : Controller { private IHttpContextAccessor

.NET Core应用的三种部署方式

我只是一个虾纸丫 提交于 2021-02-17 13:57:56
.NET Core应用提供了三种部署方式: FDD FDD:Framework-dependent deployment,框架依赖部署。这种方式针对某个 特定版本的.NET Core 进行发布,只打包应用本身及.NET Core类库之外的第三方依赖项,需要目标系统上已安装相应的.NET Core运行时。使用 dotnet publish 命令时,FDD是.NET Core 2.x的默认发布方式。 除非特殊说明,FDD会使用目标系统上指定.NET Core版本的最新可用.NET Core runtime。 FDE FDE:Framework-dependent executables,框架依赖可执行程序。这种方式针对某个 特定版本的.NET Core及特定平台 进行发布,只打包应用本身及.NET Core类库之外的第三方依赖项,需要目标系统上已安装相应的.NET Core运行时。FED适用于.NET Core 2.2及以上版本,是.NET Core 3.x的默认发布方式。使用 dotnet publish 命令(除.NET Core 3.x之外)以PDE模式发布应用,需指定下面两个参数: -r <RID> 该参数使用 RID 用于指定目标平台 --self-contained false 该参数值为false时,.NET Core SDK会以FDE模式打包应用 SCD SCD