handler

Android 第十二课——UI ProgressBar

与世无争的帅哥 提交于 2019-12-05 01:56:39
Android UI 图: 7 ProgressBar 进度条视图,这种视图有两种方式展示,一种是不知道什么时候可以结束的旋转视图展示,例如我们web后台请求是根本不知道后台什么时候可以返回数据;一种是进度条展示,类似于下载,这种明确知道共有多少数据,已经获取到了多少数据的进度条展示。 1)旋转图标: 注意:当请求完成是应该隐藏图标,任务开始时显示图标。 通过设置 ProgressBar 的 Visibility 属性为 View.GONE (值 8)来隐藏它。INVISIBLE 和 GONE 常量的区别在于 INVISIBLE 常量只是隐藏 ProgressBar(ProgressBar 仍旧在活动中占据空间)。GONE 常量则从活动中移除 ProgressBar 视图,它不再占据任何空间。View.VISIBLE自然就是显示的意思。只有这三个值,而且是与其他组件通用属性,在xml中使用标签:android:visibility layout.xml 代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android

异常模块

旧城冷巷雨未停 提交于 2019-12-05 01:43:10
异常模块(重点) 重写异常模块目的是记录异常信息(项目上线) 1、在settings的drf配置中配置EXCEPTION_HANDLER,指向自定义的exception_handler函数 2、drf出现异常了,都会回调exception_handler函数,携带 异常对象和异常相关信息内容, 在exception_handler函数完成异常信息的返回以及异常信息的logging日志 核心:异常信息都需要被logging记录,所以需要自定义;drf只处理客户端异常,服务器异常需要手动处理,统一处理结果 用法 主要是用来记录系统的错误,方便进行修改,特别重要,出现异常就要进行记录。 重写异常 配置settings.py REST_FRAMEWORK = { # 异常 # 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',#系统异常 'EXCEPTION_HANDLER': 'api.utils.exception_handler',#重写异常 } #测试 from rest_framework.response import Response def exception_handler(exc, condent): print(exc) print(condent) return Response({ 'msg

Golang必备技巧:接口型函数

落花浮王杯 提交于 2019-12-05 01:36:03
接口型函数,指的是用函数实现接口,这样在调用的时候就会非常简便,我称这种函数,为接口型函数,这种方式适用于只有一个函数的接口。 我们以迭代一个map为例,演示这一技巧,这种方式有点类似于groovy中Map的each方法一样,也是Gradle里each闭包。 原始接口实现 type Handler interface { Do(k, v interface {}) } func Each(m map [ interface {}] interface {}, h Handler) { if m != nil && len (m) > 0 { for k, v := range m { h.Do(k, v) } } } 首先定义一个Handler接口,只有一个Do方法,接收k,v两个参数,这就是一个接口了,我们后面会实现他,具体做什么由我们的实现决定。 然后我们定义了一个Each函数,这个函数的功能,就是迭代传递过来的map参数,然后把map的每个key和value值传递给Handler的Do方法,去做具体的事情,可以是输出,也可以是计算,具体由这个Handler的实现来决定,这也是面向接口编程。 现在我们就以新学期开学,大家自我介绍为例,演示使用我们刚刚定义的Each方法和Handler接口。这里我们假设有三个学生,分别为:张三,李四和王五,他们每个人都要介绍自己的名字和年龄。

golang type关键字使用

霸气de小男生 提交于 2019-12-05 01:34:50
type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef。搞清楚type的使用,就容易理解go语言中的核心概念struct、interface、函数等的使用。以下我用例子代码总结描述,请特别留意代码中的注释。 //1、定义结构体 //结构体定义 type person struct { name string //注意后面不能有逗号 age int } func main() { //结构体初始化 p := person{ name: "taozs" , //注意后面要加逗号 age: 18 , //或者下面的}提到这儿来可以省略逗号 } fmt.Println(p.name) } //初始化字段不一定要全部指定,比如下面也是可以的,name默认取长度为0的空字符串 p := person{ age: 18 , } //2、类型等价定义,相当于类型重命名 type name string name类型与string等价 例子: type name string func main() { var myname name = "taozs" //其实就是字符串类型 l := []byte(myname) //字符串转字节数组 fmt.Println(len(l)) //字节长度 } 不过,要注意的是,type绝不只是用于定义一系列的别名

onBackPressed to kill a handler within an activity - Android

心已入冬 提交于 2019-12-05 01:16:16
As you can see, I have this PlayLesson_01 activity which displays images and audio at the same time. This activity has two handlers, one to control images and audio, while the other one will finish the lesson and goes back to previous activity (Lessons Menu). Goal : Click on hard Back button to go back to previous activity and stop playing images and audio. Problem : When I click on hard "Back" I'm able to go back to the previous activity, but the audio is still playing.I'm not able to stop or kill the handler that launched within the activity. Question : How can I kill or stop those handlers

DRF简单配置使用和源码解析

北城余情 提交于 2019-12-05 01:07:19
什么是DRF? Django REST framework的简写,主要是因为前后端分离出现的,主要用来写API,为前端提供数据接口。 为啥要有DRF? 我们知道即使不用DRF这个工具我们一样能够写出满足RESTful规范的接口,但是为了提高效率我们选择使用DRF作为工具提高开发效率,因为它不仅能够快速的帮我们设计出符合规范的接口,还提供了权限,认证等强大的功能。 DRF安装 pip intsall djangorestframework DRF的使用 导入模块,让类继承APIView from rest_framework.views import APIView class Book(APIView): pass APIView APIView是DRF的核心,DRF所有的组件都是通过APIView分发的 源码部分其实和CBV的源码类似,可以参考https://www.cnblogs.com/zx125/p/11891794.html 源码解析 和之前的源码分析一样,路由匹配那个as_view一定返回的是个函数,只是这个as_view调用的是APIView的 APIView的as_view粗看就是去除csrf验证,其实不然 @classmethod #这个cls就是CBV的C类对象,参数为空 def as_view(cls, **initkwargs):

Add response header to every handler without repeating the same line

别等时光非礼了梦想. 提交于 2019-12-05 01:06:49
问题 I am writing a small website and for every page, I am putting a server name to its header: func httpSignUp(rw http.ResponseWriter, req *http.Request) { rw.Header().Set("Server", SERVER_NAME) } I am wondering if there's a way that I can set http.ResponseWriter's default server name, so I don't have to use the same line over and over? 回答1: Create a wrapper to set the header: func wrap(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) ( w.Header(

go语言中type的几种使用

倖福魔咒の 提交于 2019-12-05 00:58:10
type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef。搞清楚type的使用,就容易理解go语言中的核心概念struct、interface、函数等的使用。以下我用例子代码总结描述,请特别留意代码中的注释。 1、定义结构体 //结构体定义 type person struct { name string //注意后面不能有逗号 age int } func main() { //结构体初始化 p := person{ name: “taozs", //注意后面要加逗号 age: 18, //或者下面的}提到这儿来可以省略逗号 } fmt.Println(p.name) } //初始化字段不一定要全部指定,比如下面也是可以的,name默认取长度为0的空字符串 p := person{ age: 18, } 2、类型等价定义,相当于类型重命名 type name string name类型与string等价 例子: type name string func main() { var myname name = "taozs" //其实就是字符串类型 l := []byte(myname) //字符串转字节数组 fmt.Println(len(l)) //字节长度 } 不过,要注意的是,type绝不只是用于定义一系列的别名。

Django-rest Framework(三)

喜欢而已 提交于 2019-12-05 00:38:25
今天看了drf的五个组件的源码,可读性还是很高的,只是读组件的时候要注意的是 大部分的组件都是由dispatch分发出去的,所以看源码的时候一定要抓住dispatch这条主线,一步一步看下去 一. drf的请求模块(重点) drf的request是在wsgi的request的基础上进行再次封装 **wsgi的request作为drf的request一个属性:_request(下面附源码解释)** #源码: #在rest-framework 的views.py文件中 def dispatch(self, request, *args, **kwargs): """ `.dispatch()` is pretty much the same as Django's regular dispatch, but with extra hooks for startup, finalize, and exception handling. """ self.args = args self.kwargs = kwargs # 在下面这行代码中 django原来的request传入 self.initialize_request 这个方法 request = self.initialize_request(request, *args, **kwargs) #self.initialize

Android获取外网IP地址

与世无争的帅哥 提交于 2019-12-04 22:41:12
通过访问 http://ip.chinaz.com/ 查询到本地外网IP,查询网页源代码拿到 http://ip.chinaz.com/getip.aspx ,发现返回的是json,直接用HttpURLConnection请求,解析返回的数据,拿到外网IP。 import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import com.google.gson.Gson; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.Scanner; public class MainActivity extends