- 博客(40)
- 收藏
- 关注
原创 Kotlin杂记之泛型和委托
前言本文是对《第一行代码》第三版第8章Kotlin部分的笔记Kotlin泛型和委托一、泛型定义一个泛型类:class MyClass<T> { fun method(param: T) : T { return param }}定义一个泛型方法:class MyClass{ fun <T> method(param: T): T { return param }}为泛型指定上界class MyClass { fun <T : Numb
2021-01-26 20:38:06 170
原创 Android广播机制
Android广播机制Android广播机制简介Android中的广播主要分为2种类型:标准广播和有序广播标准广播是一种完全异步执行的广播,在广播发出之后,所有的BroadcastReceiver几乎会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序。这种广播的效率会比较高,但同时意味着它是无法被截断的。有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个BroadcastReceiver能够收到这条广播消息,当这个BroadcastReceiver中的逻辑执行完毕后,广播才
2021-01-24 17:57:14 456 1
原创 Kotlin杂记之扩展函数和运算符重载
前言该文是《第一行代码》第三版第5章Kotlin部分的笔记,方便记忆以及日后复习扩展函数和运算符重载一、扩展函数(一)什么是扩展函数?扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。(二)语法结构定义扩展函数的语法结构:fun ClassName.methodName(param1: Int, param2: Int) : Int { return 0}相比于定义一个普通函数,定义扩展函数只需要在函数名的前面加上一个ClassName.的语法结构
2021-01-24 12:48:09 178
原创 kotlin杂记之延迟初始化和密封类
前言该博客是《第三行代码》第三版第4章Kotlin部分的笔记,方便记忆和复习Kotlin延迟初始化和密封类一、对变量延迟初始化如果类中存在很多全局变量实例,为了保证它们能够满足Kotlin的空指针检查语法标准,就必须做许多的非空判断才行,即使我们可以确保它不为空。class Test { private var adapter: MsgAdapter? = null override fun onCreate() { ··· adapter = MsgAdapter(msgList)
2021-01-22 20:20:08 252 1
原创 Kotlin杂记之标准函数和静态方法
前言该博客是《第一行代码》第三版第3章关于Kotlin部分的笔记Kotlin标准函数和静态方法一、标准函数with、run和apply(一)withwith函数接收2个参数:第一个参数可以是任意的对象,第二个参数是一个Lambda表达式。with函数会在Lambda表达式中提供第一个对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回。示例代码如下:val result = with(obj) { // 这里是obj的上下文 "value" //with函数的返回值}
2021-01-21 21:00:58 127
原创 kotlin杂记(一)
前言该内容是对《第一行代码》第3版kotlin基础知识的总结kotlin基础知识一、变量和函数(一)变量val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应java中的final变量。var(variable的简写)用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值,对应java中的非final变量。kotlin拥有类型推导机制fun main() { val a = 10 println("a = " + a)}
2021-01-20 20:58:05 155 1
原创 Activity的生命周期和启动模式
Activity的生命周期和启动模式前言本文是《Android开发艺术探索》的笔记大纲,方便日后复习和记忆。Activity典型情况下的生命周期onCreate:表示Activity正在被创建,这是生命周期的第一个方法。在这个方法中,我们可以做一些初始化工作,比如调用setContentView去加载界面布局资源、初始化Activity所需数据等。onRestart:表示Activity正在被重新启动。一般情况下,当当前Activity从不可见变为可见状态时,onRestart就会被调用。这种
2021-01-19 14:51:46 222
原创 appium处理弹窗
对https://www.cnblogs.com/kaola8023/p/10908491.html进行补充 public void permission(AppiumDriver driver) { for (int i=0; i <= 10; i++) { if (driver.getPageSource().contains("允许") || driver.getPageSource().contains("禁止")|| driver.getPageSource().contains
2020-10-24 17:21:49 1324
原创 adb常用命令
获取包名和界面名包名:决定程序的唯一性界面名:一个界面名,对应一个界面adb shell dumpsys window windows | grep mLastOpeningApp发送文件到手机adb push 电脑的文件路径 手机的文件夹路径从手机中拉取文件adb pull 手机的文件路径 电脑的文件夹路径获取app启动时间adb shell am start -W 包名/.activity获取手机日志adb logcat其他命令adb install 路径/xx.
2020-09-11 21:51:24 99
原创 java线程池之四种拒绝策略
java线程池的四种拒绝策略ThreadPoolExcutor中有四个内部类实现了线程池的拒绝策略。当然我们也可以自己定义,这里讲解一下这四个已经实现的拒绝策略。什么情况下会拒绝新的任务在什么情况下,线程池会拒绝新提交的任务呢。在ThreadPoolExcutor的构造方法中,有这几个参数,参数的意义请参考:https://baijiahao.baidu.com/s?id=1637828094805085849&wfr=spider&for=pc当maximumPoolSize和
2020-07-30 21:06:18 1202
原创 flutter 对provider进行简单的二次封装
前言封装的目的,在于减少项目对第三方库的依赖,如果项目要更改第三方框架,如果项目对第三方库依赖较深,改起来就很麻烦,因此,这里我们对provider进行一次简单的二次封装。ChangeNotifyProviderimport 'package:flutter/material.dart';import 'package:provider/provider.dart';class ProviderWidget<T extends ChangeNotifier> extends Stat
2020-07-28 10:20:33 928
原创 flutter 对dio进行简单的二次封装
前言在项目中,我们往往要对第三方框架进行二次封装,目的在于减小项目对第三方框架的依赖,当第三方框架出现不兼容或者严重bug以至于我们需要更换第三方框架时,我们只需要在封装的地方更改第三方框架,而不需要在整个项目中进行更改。下面我们封装对dio进行简单的二次封装代码import 'dart:ffi';import 'package:dio/dio.dart';import 'package:flutter/material.dart';typedef onSuccess(dynamic da
2020-07-27 15:53:06 747
原创 java之构造者模式demo
关于构造者模式,可以参考https://www.jianshu.com/p/f36dbec7adb4示例public class Student { private String ID; private String name; private int age; private String sex; public Student(Builder builder) { this.ID = builder.ID; this.n
2020-07-23 10:39:14 202
原创 flutter实现一个自定义的LoadingDialog
实现一个LoadingDialog基础知识系统弹窗的基本使用flutter中使用弹窗应该用flutter提供的showDialog方法 void _showAlertDialog() async { var res = await showDialog( context: context, child: AlertDialog( title: Text('测试'), content: Text('这是一个测试窗口'),
2020-07-21 14:26:59 835
原创 dart关于Named optional parameters can‘t start with an underscore的解决方法
在dart中,私有变量的写法是用下划线_区分的,但在构造函数的可选参数中,确实不允许下划线的出现,如:class LoadingDialog{ final _valueColor; LoadingDialog(this._valueColor);}这段代码将会出现Named optional parameters can’t start with an underscore。解决方案一如果变量不是用final修饰,如:class LoadingDialog{ Color _valueC
2020-07-21 10:02:36 1941
原创 使用jpa的注解@query进行分页查询
前言最近一些复杂的查询,就只能通过自己写sql语句来实现了,然后看了网上很多篇文章@query怎么实现分类,写得很麻烦的那种,而且尝试后很多都行不通,下面给出一种简便的方法。分页查询 @Query( value = "SELECT * FROM tb_article WHERE article_name LIKE :keywords OR article_summary LIKE :keywords OR article_content LIKE :keywords",
2020-07-20 17:24:50 3514 1
转载 解决Flutter使用 Scaffold + Tabbar + TabbarView保存页面状态问题
Flutter切换tab后默认不会保留tab状态 ,Flutter中为了节约内存不会保存widget的状态,widget都是临时变量。当我们使用TabBar,TabBarView是我们就会发现,切换tab,initState又会被调用一次。为了让tab一直保存在内存中不被销毁。在需要保持页面状态的子页State中,继承AutomaticKeepAliveClientMixin并重写wantKeepAlive为true即可。class FirstState extends State<FirstVie
2020-07-18 22:12:50 397
原创 flutter杂记之时间格式化
flutter时间格式化引入intlpubspec.yamlintl: ^0.16.1代码如下:import 'package:intl/intl.dart';class TimeFormat { static final formatStr = "yyyy-MM-dd"; static final formatter = new DateFormat(formatStr); static String millionsTimeToStr(int millionsTime)
2020-07-18 16:02:22 737
原创 github下载的几种加速方法
github下载的几种加速方法很多时候,我们从github上下载或克隆项目,都是10几kb/s,如果是小项目还好,大项目这样子下载基本失败,下面介绍两种加速的方法通过码云首先在github上找到想要下载的项目然后打开码云(没有账号需要注册一个)成功导入后:在这里克隆项目速度就会很快:通过cdn加速在项目地址的github.com后面添加cnpmjs.org即可测试速度:...
2020-07-12 08:45:50 2180
原创 spring secruity实现jwt
jwtjwt(jSON Web Token)相关知识自行百度什么是 JWT – JSON WEB TOKENjwt官网spring secruity实现jwt步骤导入jwt实现框架重写
2020-06-30 22:32:55 260
原创 spring secruity使用json登录和返回json数据
spring secruity使用json登录和返回json数据步骤重写UsernamePasswordFillter配置websecruityconfig登录错误、异常、没有访问权限等时返回json数据重写UsernamePasswordFillter我们需要在UsernamePasswordFillter中获取到用户提交的json数据。public class CustomAuthenticationFilter extends UsernamePasswordAuthenticati
2020-06-29 10:05:40 421
原创 Gradle 切换阿里云仓库
适用于IDEA和Android Studio maven{ url 'http://maven.aliyun.com/nexus/content/groups/public' }
2020-06-24 11:35:44 867
原创 解决Gradle sync failed: java.lang.AssertionError
适用于Android Studio和IDEAFile > Invalidate Caches/Restart
2020-06-24 11:23:22 1016 1
原创 java获取用户输入
java获取用户输入:import java.util.Scanner;public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = null; System.out.println("请输入任意字符:"); str = scanner.nextLine()
2020-06-20 14:19:32 684
原创 spring data jpa和hibernate使用utf-8创建表
spring data jpa和hibernate使用utf-8创建表hibernate 和 spring data jpa都是使用的latin编码为默认的数据库编码,为了不出现乱码的情况,我们最好将它改为utf-8编码首先创建一个类并继承MySQL5Dialect,代码如下:public class MyDialect extends MySQL5Dialect { @Override public String getTableTypeString() { re
2020-06-15 14:04:36 975
原创 springboot 没法扫描到repository的问题
题目描述spring boot启动后报这个错误(数据库框架spring data jpa)Description:A component required a bean of type 'me.zhongmin.zero.dao.UserRepository' that could not be found.Action:Consider defining a bean of type 'me.zhongmin.zero.dao.UserRepository' in your config
2020-06-14 00:34:24 2201
原创 Vue之v-model的使用
Vue之v-model的使用个人博客https://www.boycharse.topVue系列上一篇:05-Vue的条件判断和循环遍历下一篇:暂无v-model的使用如何获取用户在表单中输入的数据呢?比如下面这样子的一个场景:<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="w
2020-06-13 21:01:41 415
原创 Webpack入门
webpackWebpack 是一个开源的前端打包工具。Webpack 提供了前端开发缺乏的模块化开发方式,将各种静态资源视为模块,并从它生成优化过的代码。Webpack可以从终端、或是更改 webpack.config.js 来设置各项功能。要使用 Webpack 前须先安装 Node.js。Webpack 其中一个特性是使用加载器来将资源转化成模块。开发者可以自定义加载器的顺序、格式来因应项目的需求。webpack的安装及简单使用安装nodejs百度搜索nodejs由于网速原因,我们可以
2020-06-12 00:43:25 258
转载 VScode生成.vue模板
VScode生成.vue模板安装Vscode(略,直接到官网安装即可)配置模板windows:文件->首选项->用户片段新建全局代码片段点击新建全局代码片段,然后为文件取名为vue.json粘贴模板{ // Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add com
2020-06-11 21:44:30 138
原创 使用IDEA创建spring boot项目
使用IDEA创建spring boot打开IDEA点击Create New Project选择spring initializr,然后点击next填好相应的信息。接着,选择想要的模块:选择好项目的位置等待项目构建完成即可编写第一个spring boot项目创建一个IndexController对象,输入一下代码import org.springframework.web.bind.annotation.RequestMapping;import org.springfra
2020-06-11 16:40:58 161
原创 css background-image自适应
background-size:100%,100%;background-repeat:no-repeat;
2020-06-11 10:42:15 526
原创 Vue的条件判断和循环遍历
Vue的条件判断和循环遍历个人博客https://www.boycharse.topVue系列上一篇:04-v-on的使用下一篇:暂无条件判断v-if的使用v-if的使用非常简单,首先,我们来看一下下面这段代码<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=dev
2020-06-07 18:33:05 1583
原创 Vue之v-on的使用
v-on的使用个人博客https://www.boycharse.topVue系列上一篇:03-Vue的动态绑定属性下一篇:暂未更新v-on的使用在第一篇,Vue的初体验中,我们已经使用过v-on来为元素添加点击事件了,下面我们将较为详细的来了解它。基础使用下面我们演示给一个button绑定点击事件:<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" />
2020-06-05 00:32:32 329
原创 Vue之动态绑定属性
动态绑定属性个人博客https://www.boycharse.topVue系列上一篇:02-Vue的插值操作下一篇:暂未更新Vue动态绑定属性动态绑定首先,我们来看看我们平时给一个a标签添加一个href属性是怎么做的。<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="widt
2020-06-03 19:56:00 1316
原创 Vue之插值操作
插值操作个人博客https://www.boycharse.topVue系列01-Vue的初体验Vue的插值操作什么是插值操作我们紧接上一篇的例子:在网页的显示中,vue中的message插入到了{{message}}中,这就是我们所说的插值操作。Mustache插值这种插值操作我们已经见过了,几乎是最常用的一种,也就是用{{}}来进行插值。{{}}中是一个变量时{{}}中的可以是一个变量,如:{{message}}中的message是data中的message变量。{{}}
2020-06-03 12:08:52 1891
原创 Vue之Vue的初体验
Vue的初体验个人博客https://www.boycharse.topVue系列等待更新前言这个系列的博客是按照我学习vue的顺序来写的。视频教程是b站上coderwhy的vue教程。VueVue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂
2020-06-02 20:40:16 186
原创 解决前端使用ajax跨域问题
前言从android到前端开发的几天,有一些地方不是很习惯,其中,一个比较特别的就是前端浏览器限制跨域访问,所以会出现用ajax在本地访问服务器时,出现Access to XMLHttpRequest at ‘https://wanandroid.com/article/listproject/0/json’ from origin ‘null’ has been blocked by CORS...
2020-04-28 18:26:24 994
原创 服务器上宝塔linux面板的搭建以及typecho博客的搭建
宝塔linux面板的搭建以及typecho博客的搭建本文是给我这种小白和其他小白看的,请大佬绕道,勿喷,有什么错误,还望指出引言买了一台服务器以后,很多初学者(包括我在内,我也是初学者)对linux不是非常熟悉(毕竟我们也不是学运维的,一些基本的操作还是会的,但遇到一些非常棘手的问题就显得很无力了),所以,装个宝塔linux面板对我们这种小白来说是比较友好的,省去很多踩坑而花的时间。今天重置...
2020-03-16 18:28:38 1628
原创 爬虫学习之requests库学习笔记
requests库的安装在命令行输入命令: pip install requestsrequests库的七个主要方法方法说明requests.request()构造一个请求,是下面6个请求的基础requests.get()获取HTML网页的主要方法,对应于HTTP的GETrequests.head()获取HTML网页的头部,对应于HTTP的HEAD...
2020-02-20 19:11:33 204
原创 python学习笔记一
python学习笔记之组合数据类型一、 集合类型集合的定义与数学中集合的定义相同使用{},或者set()函数例如:a = {1, ‘abc’, (a, b, c)}表示一个含有三个元素的集合,三个元素分别是:整数1,字符串abc,以及元祖数据类型(a , b, c)2. 集合常用的方法add():如果集合中没有该元素,则将该元素添加至集合中。discard():如果集合中有这...
2020-02-16 19:42:42 307
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人