- 博客(175)
- 资源 (9)
- 收藏
- 关注
原创 Git学习笔记
配置user信息配置user.namegit config --global user.name 'your_name'配置user.emailgit config --global user.email 'your_email'查看所有配置信息,缺省等同于localgit config --local -l 只对某个仓库有效git config --global -l 对当前用户所有仓库有效git config --system -l对系统所有登录的用户有效git
2020-07-05 23:48:20
456
1
原创 RecyclerView实现竖向无限循环滚动的列表
通过重写LinearLayoutManager实现直接使用该LayoutManger即可package com.example.testrecy.testimport android.util.Logimport android.view.Viewimport android.view.ViewGroupimport androidx.recyclerview.widget.RecyclerViewimport androidx.recyclerview.widget.RecyclerVie
2020-06-28 00:11:06
3094
原创 Fragment中拦截onBackPressed()返回事件
由于Fragment中没有onBackPress事件,所以需要在Activity中收到onBackPress回调时去执行Fragment中相应的操作,再根据Fragment中返回的结果判断是否回退。创建一个接口interface IOnBackPressed { fun onBackPressed(): Boolean}让需要处理onBackPress事件的Fragment实现该接口class TestFragment : Fragment(), IOnBackPressed {
2020-06-13 20:57:08
3897
3
原创 Fragment中监听和拦截点击MotionEvent事件
由于Fragment中没有dispatchTouchEvent()方法和OnTouchEvent()方法对事件进行分发和处理,所以如果想要在Fragment中拦截点击事件的话可以这样做:override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) view.setOnTouchListener { v, e
2020-06-13 20:33:23
3750
原创 Kotlin学习笔记(七):特殊的符号
一、反引号反引号:`` Kotlin中可以用反引号解决关键字冲突问题。将一个不合法的字符变为合法字符,这种情况一般可以用在一个Kotlin方法不希望被Java调用时使用,因为Java语言层面上不支持反引号这种语法。fun `1234`(){ println("1234")}fun ` `(){ println(" ")}fun ` `(){ p...
2020-02-06 22:01:54
827
1
原创 Kotlin学习笔记(六):Kotlin中常见的操作符
一、元素操作符contains:判断是否有指定元素。elementAt:返回对应的元素,越界会抛IndexOutOfBoundsException。firstOrNull:返回符合条件的第一个元素,没有返回null。lastOrNull:返回符合条件的最后一个元素,没有返回null。indexOf:返回指定元素的下标,没有返回-1。二、判断类any:判断集合中是否有满足条件的元...
2020-02-06 20:33:38
3586
1
原创 Kotlin学习笔记(五):Kotlin中的高级特性
一、解构Kotlin中使用operator关键字修饰函数,并且函数名只能为component1、component2、component3…,这样可以将一个函数标记为重载一个操作符或者实现一个约定。通过将该类实例赋值给一组变量,Kotlin可以直接将对应函数的值按照component1、component2、component3…的顺序赋值给该组变量,这个过程就叫"解构"。class Use...
2020-02-06 19:57:57
2893
1
原创 Kotlin学习笔记(四):Kotlin中的类与对象
一、简介Kotlin中使用关键字class 声明类,后面紧跟类名 。Kotlin中的类默认是public final的,所以如果不需要类为final的时候,需要使用open关键字修饰类,如果没有声明父类。则父类默认为Any类。//定义一个空类open class Animalinterface Run//继承类或接口时,使用 : 隔开,父类和接口间使用 , 隔开class Dog ...
2020-02-05 12:31:53
1719
1
原创 Kotlin学习笔记(三):Kotlin中的函数
一、函数的特性语法函数的几种声明形式 //普通声明形式 fun sayHello(str: String){ print(str) } //允许参数有默认值,可用于方法重载 fun printName(str: String = "Irving"){ print(str) } //函数体只有一行代码时 fun printlnName(str: Str...
2020-02-03 17:19:05
1961
1
原创 Android中给BottomSheetDialog设置最大高度(含沉浸式)
BottomSheetDialog没有提供设置最大高度的Api,所以需要我们自己手动去改变最大高度,我这里通过继承BottomSheetDialog重写oncreate()来实现。我这里用的是最新的androidx,需要导入Material Componentsdependencies{ ... implementation group: 'com.google.android.mat...
2019-11-23 21:33:49
6937
原创 Android中使用Shape标签给BottomSheetDialog(其他View同理)设置圆角以及透明背景
一、drawable文件下创建shape文件<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!-- rectangle表示为矩形 --> <!-- 填充的颜色 --> <s...
2019-11-23 20:57:37
1276
原创 Android中getDimension,getDimensionPixelOffset和getDimensionPixelSize 区别
一、getDimension获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘 返回float二、getDimensionPixelOffset获取某个dimen的值,如果是dp或sp的单位,将其乘以density,如果是px,则不乘 返回int三、getDimensionPixelSize不管写的是dp还是sp还是px,都会乘以denstiy...
2019-11-22 10:47:28
1077
原创 Android中动态改变布局中控件的位置
一、以控件在RelativeLayout中为例,其他布局中也是一样的,可以通过修改控件的magin属性来改变控件的位置。// 需要注意的是,此时构造参数中的两个属性为控件的宽和高(px),而不是父布局的宽和高。RelativeLayout.LayoutParams layoutparams = new RelativeLayout.LayoutParams(100,100);layoutp...
2019-11-20 07:45:22
5532
原创 Android-将dp或sp值转为webView中可能用的px(CSS中的px)
将值除以设备的密度即可。float value = getResources().getDimensPixelSize(R.dimen.xxx) / getResources().getDisplayMetrics().density;
2019-11-13 19:08:56
862
原创 Android中md文件和html文件加载drawable或asset文件夹下的图片或其他文件
md文件中加载图片的格式 asset文件夹下:  drawable文件夹下: html文件中加载图片的格式 asset文件夹下: <img src='file:///android_a...
2019-11-04 17:22:04
1541
原创 Kotlin学习笔记(二):Kotlin与Java代码的区别与互调
一、主函数// java中的主函数public static void main(String[] args){ }//kotlin中的主函数fun main(args: Array[String]){}二、Kotlin与Java交互的语法变化Kotlin中的方法可以不需要写在类中,可以直接写在文件中,然后在Java代码中可以通过Kotlin文件名加上Kt后缀,然后直...
2019-09-14 21:36:11
361
原创 Kotlin学习笔记(一):基础语法
一、定义变量/** * 使用var声明一个变量,格式为 * var 变量名: 变量类型 = 变量值* 分号可以省略,如果变量的类型编辑器可以确定的话分号以及分号后的变量类型可以省略。* var 变量名 = 变量值* kotlin每一句结尾不需要添加分号*/var age: Int = 18/** * 使用val声明一个变量,格式与使用var声明一个变量完全相同,不同的是val声...
2019-09-14 21:25:25
206
原创 Android学习笔记(十三):ContentProvider
概述 ContentProvider作为安卓四大组件之一,它的作用是为不同的应用之间数据共享,提供统一的接口。我们知道安卓系统中应用内部的数据是对外隔离的,要想让其它应用能使用自己的数据(例如通讯录),这个时候就用到了ContentProvider。 ContentProvider实际上...
2019-08-29 16:21:57
278
原创 线程、程序与进程的基本概念以及它们之间的关系
线程线程与进程非常类似,但是线程是比进程更小的执行单位。一个进程在运行过程中可以产生多个线程,同类的多个线程可以共享同一片内存地址和一组系统资源,所以操作系统对线程的创建,以及线程的各种状态的切换,负担都比进程小得多,因此线程也被称为轻量级进程。程序程序是指含有数据和指令的文件,可以被存储的文件系统或其他可移动的存储设备中,也就是说程序是静态的代码。进程进程就是程序的一次执行过程,是系统...
2019-08-14 21:56:58
562
原创 String内部实现从JDK8中的char[]数组变为JDK9中的byte[]数组有什么好处
答: 使用byte数组可以减少一半的内存,byte使用一个字节来存储一个char字符,char使用两个字节来存储char字符。只有当一个char字符大小超过0xFF时,才会将byte数组变为原来的两倍,用两个字节存储一个char字符。...
2019-08-13 22:55:25
7118
原创 Android 学习笔记(十二):安卓中的事件分发机制
一、事件分发的对象是谁答:点击事件(Touch事件)定义当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件。Touch事件的相关细节(发生触摸的位置。时间等)被封装成MotionEvent对象事件类型(4种)事件类型具体动作MotionEvent.ACTION_DOWN按下View(所有事件的起点)MotionEvent.A...
2019-08-13 22:45:55
260
2
原创 Android 学习笔记(十一):ListView和RecycleView的学习
ListViewListView是一个列表控件,需要搭配Adapter使用。通过自定义一个Adapter,继承自BaseAdapter,然后在adapter中完成数据的绑定,最后通过ListVIew.setAdapter()方法将listView和adapter绑定起来。ListView可以添加表头和表尾,addHeaderView(View v):添加headView(表头),括号中的参...
2019-08-13 22:44:25
317
原创 Android 学习笔记(十一):广播和广播接收器的学习
思维导图广播接收器• 广播(Broadcast)是在组件之间传播数据的一种机制,这些组件可以位于不同的进程中,起到进程间通信的作用。• 广播接收器(BroadcastReceiver) 是对发送出来的 Broadcast 进行过滤、接受和响应的组件。标准广播• 完全的异步执行的广播,发出广播后所有的广播接收器几乎会在同一时间接收到这条广播,没有先后顺序。效率比较高,且无...
2019-08-13 22:43:18
358
原创 Android 学习笔记(十):Service的生命周期与实现方式
startService的生命周期以及实现方式可以通过一个简单的音乐播放器来测试startService的生命周期MainActivity中放三个按钮,分别代表播放,暂停,停止将这三个按钮分别绑定监听器,播放按钮监听器中开启服务并播放歌曲,停止按钮停止服务并停止播放,暂停按钮暂停播放。播放事件中使用startService(Intent intent)方法开启服务,停止事件中会调...
2019-08-13 22:41:02
297
原创 Android 学习笔记(九):Activity的生命周期分析和常用控件的使用
一、分析Activity的生命周期变化使用右滑手势(返回键)退出应用时,先后进入onPause(),onStop(),onDestroy()三个状态,应用被摧毁。然后进入应用时先后进入onCreate(),onStart(),onResume()三个状态。应用重新进入运行状态。在记录的时候屏幕熄灭,先后进入onPause(),onStop(),Activity进入后台停止运行重新点亮屏后,先...
2019-08-13 22:27:31
265
原创 Android 学习笔记(八):ListView
ListView简单的填充数据ListView相当于一个容器,里面的所有的数据类型一致,通过将ListView绑定一个Adapter,Adapter可以自己创建,要实现BaseAdapter接口,重写相应的方法,然后在Adapter中的getView方法()获取到视图。进行布局填充时先要创建一个布局填充器LayoutInflater,可以通过Content.getSystemService(C...
2019-08-13 22:22:11
161
原创 Android 学习笔记(七):Activity的跳转和生命周期
Activity间如何传递数据通过intent传递数据//intent中可以有两个参数,表示从第一个参数(Activity)跳转到第二个参数(Activity)Intent intent = new Intent(a,b);//通过键值对的方式存数据到intent中,intent.putxxx(a,b);//通过intent传数据到另一个activitystartActivity(i...
2019-08-13 22:21:31
230
原创 Android 学习笔记(六):基础回顾
打开手机开发者模式打开设置 -> 关于手机 -> 点击七次版本号(Build Time)进入开发者模式退出,搜开发者模式,打开开发者模式,选择usb调试完成后,即可通过as连接进行调试安卓四种点击事件四种点击事件的实现安卓五种布局模式五种布局模式Android Studio日志工具Logcat简单使用日志工具Logcat简单使用签名打包和发布Build下选择Gen...
2019-08-13 22:19:31
136
原创 Java虚拟机的运行时数据区
Java虚拟机运行时数据区一、程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、异常、跳转、线程切换都需要依赖这个计数器来完成。 如果正在执行的是...
2019-07-08 15:55:57
183
原创 RabbitMQ的四种交换机模式
一、RabbitMQ的简单介绍RabbitMQ作为一个消息队列,它负责提供一个通用的消息发送和接收平台,并且保证消息在传输过程中的安全可靠。消息(Message)由Client(客户端)发送,RabbitMQ接收到消息之后通过交换机转发到对应的队列上面。Worker会从队列中获取未被读取的数据处理。二、RabbitMQ的四种交换机直连交换机:Direct exchange扇形交换机:...
2019-06-29 22:27:38
12167
10
原创 解决Jmeter压测异常率过高的问题
今天在使用本地(Windows)Jmeter对远程服务器进行压力测试的时候,发现异常率非常的高,但是项目中日志没有报错误,然后观察TCP链接数排除了服务端的嫌疑,发现随着压测的进行,TCP连接数越来越少。打开日志输出发现报了大量的以下错误:java.net.BindException: Address already in use: connect百度后,原因为:Windows 提供给 T...
2019-06-25 17:54:18
20622
7
原创 将springboot项目部署到阿里云服务器上需要注意的地方
将springboot部署到阿里云服务器上可以参考这篇博客将springboot项目部署到阿里云服务器上部署完成启动后,发现通过本地浏览器无法访问(安全组中80端口已经打开),怀疑是防火墙的原因,于是在服务器上打开了80端口,然后就可以访问了,之前把防火墙关了所以一直没有这种问题,把防火墙启动后需要手动打开相应的端口。命令:firewall-cmd --zone=public --add-...
2019-06-24 23:01:53
2225
1
原创 FTP连接阿里云服务器时遇到的坑
一、今天使用FTP连接阿里云服务器时,一开始一直报拒绝连接错误,通过XShell连接服务器成功,说明IP和密码没有错误,然后安全组已经打开了20/21端口,经过一番检查后,发现原来是阿里云服务器没有按照ftp服务,然后第一步先安装ftp服务,可以参考以下网址下载安装ftp服务二、安装成功后,发现出现新的问题了,建立连接出现了530 Login incorrect无法登录问题解决530 Lo...
2019-06-24 21:56:42
5579
原创 SELECT LAST_INSERT_ID()总是返回1或者0
今天在做项目的时候使用到了SELECT LAST_INSERT_ID(),发现每次返回的结果都是1,我原来的sql语句比较长,下面用个事例演示一下。@Insert("INSERT INTO student(name,phone,address)VALUES(#{name},#{phone},#{address})")@SelectKey(keyProperty = "id", keyColum...
2019-06-24 09:42:03
6534
4
原创 使用HttpServletResponse的addCookie添加cookie失败
今天做自己的小项目时发现了一个问题,使用HttpServletResponse的addCookie添加cookie失败,经过一番检查发现了问题所在,记录一下 Cookie cookie = new Cookie(COOKIE_NAME_TOKEN,token); cookie.setMaxAge(time);//最大有效时间 cookie.setPath("/"...
2019-06-21 20:51:34
6847
原创 解决Tomcat项目404错误,DEBUG o.s.web.servlet.DispatcherServlet - Completed 404 NOT_FOUND
今天在创建了一个简单的ssm项目时,使用tomcat启动后,通过url访问jsp文件一直报404错误,在内部controller中可以通过快捷键crtl+鼠标左键定位到相应的jsp文件,但是运行后通过url访问不到The origin server did not find a current representation for the target resource or is not wi...
2019-06-13 19:12:46
14424
原创 Android 学习笔记(五):安卓自带日志工具的使用
简单介绍Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志。Log.v()。用于打印哪些最为琐碎的、意义最小的日志信息。对应级别为verbose,是Android日志里面级别最低的一种。Log.d()。用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比verbose高一级。Log.i...
2019-05-23 22:50:46
1087
WinScp中文版下载
2019-01-04
mysql-connector-java-5.1.46版本,
2018-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人