自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 数据结构 - 链表

链表是以节点的方式来存储,属于链式存储,各节点不一定是连续存储的。每个节点包含 存放数值的域 和 指向下一个节点的域 。需要通过循环迭代来访问列表中的某些元素。需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。...

2022-06-03 18:13:39 176 1

原创 数据结构 - 队列

排队,先到先得。队列是一个有序列表,可以用数组或是链表实现遵循先入先出的原则,即先存入队列的数要先取出后存入队列的数要后取出。队列本身是有序列表,因为队列的输出、输入是分别从前后端来处理,因此需要两个变量及分别记录队列前后端的下标,会随着数据输出而改变,而则是随着数据输入而改变,是该队列的最大容量。刚刚的实现方式,数组只使用一次就不能再用了,会造成很大的空间浪费。将数组看成是一个环形的,可以通过取模的方式实现。......

2022-06-02 21:36:15 177

原创 数据结构 - 稀疏数组

比如在编写五子棋的程序中,有存盘退出和继续上盘的功能。如果用二维数组保存,就记录了很多没有意义的数据(没有棋子的地方为0),造成了空间资源的浪费,这时就可以考虑使用稀疏数组。当一个数字中大部分元素为同一个数值时,就可以考虑用稀疏数组来保存。

2022-06-01 19:08:49 168

原创 Java - 注解和反射

什么是注解 Annotation作用:不是程序本身,可以对程序作出解释。这一点和注释comment没什么区别。可以被其他程序读取。比如:编译器等。格式:注解是以@注释名在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")。在哪里使用?可以附加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。内置注解名称包作用@

2022-05-26 20:36:30 130

原创 java - 网络编程TCP/IP

概述TCP:类似于打电话这种,接通后双方开始通话。UDP:类似于发短信这种,一方发送一方接收。计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。网络编程的目的传播交流信息,数据交换,通信。网络编程中方的主要问题如何准确定位到网络上的一台或多台主机找到主机之后如何通信网络通信的要素IP和端口号网络通信协议TCP/IP参考模型IP

2022-05-23 21:35:22 461 1

原创 Java - 多线程

核心概念程序是指令和数据的有序集合,其本身是一个静态的概念;进程是程序的一次执行过程,是系统资源分配的单位,是一个动态的概念;线程是CPU调度和执行的单位,在一个进程中可以包含多个线程。线程是独立执行的路径在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程。main()称之为主线程,为系统的入口,用于执行整个程序。在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为干预的。对同一份资源操作时,会存在资源抢夺的

2022-05-19 20:19:56 111

原创 Java - 静态代理

静态代理模式真实对象和代理对象要实现同一个接口,代理对象要代理真实对象的实例代理对象可以做很多真实对象最不了的事,真实对象只要做好自己的事情就好可以将其理解为结婚对象和婚庆公司之间的关系结婚对象事真实对象,只要认真做好结婚这件事。婚庆公司是代理对象,要帮助真实对象筹办婚礼等一系列的事。package com.zls.demo03;public class StaticProxy { public static void main(String[] args) { We

2022-05-18 16:15:44 105

原创 java - Lambda表达式

对于函数式接口,可以通过lambada表达式来装载该接口的对象函数式接口任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口。Lambda表达式与其他实现方法的对比package com.zls.demo02;public class TestLambda01 { //静态内部类 static class Like2 implements ILike{ @Override public void lambda() { .

2022-05-18 15:10:41 90

原创 GUI - Swing

GUI - Swing窗口面板 JFrame实现窗口面板 JFrame实现package com.zlsaxx.lesson4;import javax.swing.*;public class JFrameDemo { //init() 初始化 public void init(){ JFrame frame = new JFrame("这是一个JFrame窗口"); frame.setVisible(true); frame.

2022-05-15 20:15:52 107

原创 AcWing 840. 模拟散列表

#include<iostream>#include<cstring>using namespace std;const int N = 200003, null = 0x3f3f3f3f;int h[N];int find(int x){ //查找到x值应该存放的位置 int k = (x % N + N) % N; while(h[k] != null && h[k] != x){ //如果该位置有人了就向后移一位 .

2022-05-11 19:37:51 211

原创 kotlin - String Int 类型转换

情景如果一个String类型的值为159.0这样的数时,直接.toInt()就会产生报错Error inflating class fragmentCaused by: java.lang.NumberFormatException: For input string: “159.0”解决方式可以中间加一个.toFloat()过渡一下,比如:book.pages = row.getCell(2).toString().toFloat().toInt() //获取单元格...

2022-04-28 21:02:09 5177

原创 NavigationView的使用

情景使用NavigationView实现侧滑菜单,并对里面的值进行相应的修改自动生成这样就可以实现一个侧滑菜单在android studio中选择新建Navigation Drawer Activity项目时会自动生成相关代码具体使用布局文件主界面 activity_main.xml<?xml version="1.0" encoding="utf-8"?><androidx.drawerlayout.widget.DrawerLayout xmlns:android

2022-04-20 14:40:07 3375

原创 checkbox的使用

情景在用户第一次登录时,根据他的选择是否将密码保存在本地,并在下次打开应用时自动填充解决方法使用SharedPreferences本地储存//判断是否为第一次登录val prefs = getSharedPreferences("data",Context.MODE_PRIVATE)val prefsEdit = getSharedPreferences("data",Context.MODE_PRIVATE).edit()val isRemember = prefs.getBoolean(

2022-04-19 20:49:39 488

原创 poi读取xlsx文件

情景在kotlin实现的项目中,要读取bookAssets.xlsx文件中的内容。解决方法引入POI依赖在libs文件中加入要用到的6个.jar包,并在gradle中导入:要用到的包已经放在下面的网盘链接中:链接:https://pan.baidu.com/s/1WKVr2X2JgRfPWo6293RvHw 提取码:zlss导入文件在Device File Explorer中,提前把文件放入到/data/data/包名/files下代码逻辑private fun readExc

2022-04-16 15:01:16 2313

原创 《Android》Chap.13 Jetpack

Jetpack简介Jetpack是一个开发组件工具集,它的主要目的是帮助开发者编写更加简洁的代码,并简化开发过程。另外,它不依赖于任何Android系统版本,拥有很好的向下兼容性。ViewModelViewModel的作用就是可以帮助Activity分担一部分工作,它是专门用于存放与界面相关的数据的。也就是说,只要是界面上能看得到的数据,它的相关变量都应该存放在ViewModel中,而不是Activity中,这样可以在一定程度上减少Activity中的逻辑。另外,ViewModel的生命周期和Act

2022-04-06 15:43:08 2317

原创 Kotlin - 协程技术

2022-03-26 20:32:31 3664

原创 Android - 运行时权限

Android权限机制在Android6.0系统之前,如果安装程序,会在程序提示时改程序需要申请的权限,从而让用于决定是否安装该程序;也可以随时在应用程序管理界面中查看一个程序的权限申请情况。而在Android6.0系统中加入了运行时权限功能,从而更好的保护用户的安全和隐私。用于不需要在安装软件的时候一次性授权所有的申请权限,而是可以在软件使用的过程中再对某一项权限申请进行授权。也不是所有的权限都需要在运行时授权。对于不会直接威胁到用户安全和隐私的权限申请,系统会自动帮用户授权,称为普通权限。在申请

2022-03-23 20:19:33 3226 2

原创 《Android》Chap.11 网络技术

WebView的用法Android中的WebView控件可以实现在应用程序中嵌入一个浏览器,从而展示各种各样的网络首先在activity_main.xml文件中加入WebView控件<WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"/>其次在MainActivity中设置浏览器属性class Mai

2022-03-22 21:50:00 2785

原创 Android - 浅谈handler

Handler是Android中用于帮助将子线程的数据传递给主线程的,同时也可以实现任意两个线程间的数据传输

2022-03-19 21:02:52 1275

原创 《Android》Chap.10 探究Service

Service简介Service是Android中实现程序后台运行的解决方案,适用于执行不需要和用户交互且要求长期运行的任务。Service的运行不依赖任何用户界面当某个进程结束的时候,依赖于该进程的Service也会停止Service并不会自动开启线程Android 多线程编程线程的基本用法继承自Thread的类//定义线程class MyThread : Thread(){ override fun run(){ //具体操作 }}//启动线程MyThread().

2022-03-17 16:37:56 1231 1

原创 Kotlin - 高阶函数的应用

高阶函数非常适用于简化各种API的调用,一些API的原有用法在使用高阶函数简化之后,不管是在易用性还是可读性方面,都可能会有很大的提升。简化SharedPreferences的用法之前学的最原始的向SharedPreferences中存储数据的代码如下://获取SharedPreferences.Editor对象val editor = getSharedPreferences("data",Context.MODE_PRIVATE).edit()editor.putString("name".

2022-02-12 02:51:49 547

原创 《Android》Chap.7 数据持久化

持久化技术简介数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机的情况下,这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的。持久化技术提供了一种机制,可以让数据在瞬时状态和持久状态之间进行转换。文件存储文件存储是Android中最基本的数据存储方式,它不对存储的内容进行任何格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合存储一些简单的文本数据或二进制数据。如果你想使用文件存储的方式来保存一些较为复杂

2022-02-12 01:46:24 1882

原创 Kotlin - 高阶函数

定义高阶函数如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数定义函数类型(String, Int) -> Unit->左侧声明了这个函数类型需要接收的参数类型->右侧声明了这个函数类型返回值类型其中Unit表示没有返回值,相当于java中的void高级函数的语法规则fun example(func: (String, Int) -> Unit){ func("hello",123)}其中example()函

2022-01-20 16:38:18 2386

原创 《Android》Chap.6 广播机制BroadcastReceiver

广播机制简介Android中的每个应用程序都可以对自己感兴趣的⼴播进行注册,这样该程序就只会收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的。Android提供了⼀套完整的API,允许应用程序自由地发送和接收广播。接收广播的方法:BroadcastReceiver分类标准广播:是⼀种完全异步执行的广播,在广播发出之后,所有的BroadcastReceiver几乎会在同⼀时刻收到这条广播消息,因此它们之间没有任何先后顺序可⾔。这种⼴播的效率会比较⾼,但同时也意味着

2022-01-18 18:53:28 1757

原创 《Android》Chap.5 探究Fragment

Fragment介绍为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment (碎片) 功能,它非常类似于Activity,可以像Activity一样包含布局。Fragment是一种可以嵌入在Activity当中的UI片段,可以让程序更合理和充分的利用大屏幕空间。Fragment的使用方式简单用法...

2022-01-12 21:36:45 1474

原创 《Android》Chap.4 UI开发

常用控件的使用方法TextView理论属性含义用法android:id唯一标识符\android:layout_width控件宽度match_parent:让当前控件的大小和父布局的一样; wrap_content:让当前控件的大小正好适配里面的内容;android:layout_height空间高度固定值:单位用dp能保证不同分辨率效果下屏幕显示效果尽量一致(与上栏用法相同)android:gravity文字对齐方式center、top、bot

2021-12-15 21:03:37 2889 2

原创 字符串匹配 - KMP

字符串匹配 - KMP思路:用一个数组来存储模板串(短串)来存储最长公共前后缀子串的长度如ne[i]=j表示,a字符的子串a[1~i]中满足a[1~j]=a[i-j~i]中最长的长度j。伪代码 / 模板:for(int i=2,j=0;i<=n;i++){ while(j&&a[i]!=a[j+1]) j=ne[j]; if(a[i]==a[j+1]) j++; ne[i]=j;} for(int i=1,j

2021-12-07 23:14:15 277

原创 android-目录文件作用

在app目录下build: 主要包含了一些编译时自动生成的文件,只不过比外层的build要更加复杂。libs: 第三方jar包放在这里,放在此目录下的第三方jar包会自动被添加到构建路径中去。androidTest: 用来编写android Test测试用例的,可以对项目进行一些自动化测试。java: 是放置代码的地方res: 项目中使用到的图片、布局、字符串等资源都要存放在这个目录下。drawable: 存放图片layout: 存放布局values: 存放字符串mipmap-xx: .

2021-11-30 20:04:57 176

原创 kotlin-ViewBinding

前言kotlin-android-extensions 被废弃的原因《Kotlin Android Extensions 的未来计划》污染全局命名空间。不能暴露可空性信息。仅支持 Kotlin 代码。ViewBinding的优势不污染命名空间。可以减少获取控件的空指针异常。支持 Java 代码。ViewBinding 能够很方便地使用 DataBinding。基础用法配置文件首先要在 module 的 build.gradle 文件配置开启 ViewBinding:XM

2021-11-30 19:28:26 1079

原创 android-allowBackup属性

allowBackup安全风险描述:Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性值 ,其属性值默认是true。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。Android属性allowBackup安全风险源于adb backup容许

2021-11-27 19:31:26 250 1

原创 kotlin-延迟初始化

Koltin中属性在声明的同时也要求要被初始化,否则会报错:延迟初始化使用的是lateinit关键字,它可以告诉编译器,我会在晚些时候对这个变量进行初始化,这样就不用在一开始的时候给它赋值为null了。补充:lateinit var只能用来修饰类属性,不能用来修饰局部变量,并且只能用来修饰对象,不能用来修饰基本类型 (因为基本类型的属性在类加载后的准备阶段都会被初始化为默认值)。lateinit var的作用也比较简单,就是让编译期在检查时不要因为属性变量未被初始化而报错。Kotlin相信当

2021-11-27 19:21:03 2251

原创 《Android》Chap.3 探究Activity

探究ActivityActivity的基本用法创建和加载布局属性介绍给Activity加载布局在AndroidManifest文件中注册运行程序在Activity中使用Toast补充kotlin特性:运行程序在Activity中使用Menu文件路径main.xml代码效果重写onCreateOptionsMenu()方法重写onOptionsItemSelected()方法运行代码销毁Activity使用Intent显式Intent代码实现隐式Intent代码实现AndroidManifest文件First

2021-11-26 21:13:14 1770 1

原创 《Android》Chap.2 入门Kotlin

入门KotlinHello Kotlin编程之本变量关键词语法规则代码实践数据类型语法规则代码实践声明不可变整型变量声明可变整型变量函数语法规则代码实践返回较大数代码简化程序的逻辑控制if条件语句语法规则代码实践返回较大数(基础版)返回较大数(简化版)返回较大数(精简版)返回较大数(进一步精简版)返回较大数(终极精简版)when条件语句精确匹配语法规则代码实践类型匹配语法规则代码实践不带参用法代码实践字符串判断(补充)语法规则代码实践Hello Kotlinkotlin每一行代码的结尾不需要加分号。

2021-11-19 01:12:05 2108 1

原创 《Android》Chap.1 初识Android

初识AndroidAndroid系统架构四大组件开发环境日志工具Android系统架构Linux运行层:为Android设备的各种硬件提供底层的驱动。系统运行库层:通过C/C++库为Android系统提供主要的特性支持。以及专门为移动设备定制的ART运行环境(5.0系统之后)应用框架层:提供构建应用程序时可能会需要的各种API。应用层:所有安装在手机上的应用程序都在这一层。四大组件Activity:所有Android应用程序的门面。Service:在后台完成用户指定的操作。Broad

2021-11-16 16:05:30 2041

原创 GUI - AWT - 事件监听

Swing 基础事件监听按钮Button 事件监听单个多个输入框 TextField 事件监听补充技巧设置回显字符设置文本框初始化简易计算器事件监听按钮Button 事件监听单个package com.zlsaxx.lesson2;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;impor

2021-09-09 20:05:20 94 1

原创 GUI - AWT基础

AWT基础介绍组件和容器窗口 Frame展示一个窗口代码封装展示多个窗口面板 Panelframe.add(panel)布局管理器流式布局 FlowLayout东西南北中布局 BorderLayout网格布局 GridLayout练习作业介绍AWT中包含了很多的类和接口有各种各样的元素窗口、按钮、文本框,包名:java.awt组件和容器窗口 Frame展示一个窗口package com.zlsaxx.lesson1;import java.awt.*;public class T

2021-09-08 18:32:51 117 2

原创 初识GUI

初识GUI简介图形用户界面编程核心技术不流行的原因学习理由简介图形用户界面编程Graphical User Interface 图形化界面或图形用户接口核心技术AWT:Abstract Window ToolKit,抽象的窗口工具,是Java用于创建用户界面和绘制图形的所有类。Swing:为Java设计的GUI工具包,包括了图形用户界面器件,如:文本框,按钮,分隔窗格和表。不流行的原因界面不美观运行需要 jre环境学习理由写一些自己需要的小工具工作中可能要维护 swing界面

2021-09-08 18:29:38 88

原创 Android前言

之前学习的一些笔记1、安卓开发分为 前端 和 后端xml: 一种(可扩展)标记语言,用于写前端 .xml文件java:一门(面向对象)编程语言,用于写后端 .java文件2、开发工具:Android Studio0)汉化包:resources_cn.jar关闭Android Studio,把它放到 D:\Android Studio\lib 目录 (安装路径)下再重新打开Android Studio 即可PS: 汉化不是太完全,但还是能用的1)新建文件:选择 新建项目选择 Em.

2021-09-03 10:46:56 226 2

原创 Java异常

Java异常异常介绍Exception检查性异常运行时异常例如错误ErrorError 和 Exception的区别:异常处理机制异常处理关键字捕获异常抛出异常异常介绍Exception异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常发生在程序运行期间,它影响了正常的程序执行流程。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable检查性异常最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一

2021-09-02 18:29:25 96 1

原创 Java面向对象编程

Java面向对象编程面向对象编程 OOP类对象类和对象的创建构造方法 (构造器)有参构造和无参构造三大特性封装实现意义继承实现Object类super多态面向对象编程 OOP面向对象编程: Object-Oriented Programming,以类的形式组织代码,以对象的形式组织封装数据从认识论的角度考虑,先有对象后有类。对象是具体的;类是抽象的从代码运行的角度考虑,先有类后有对象。类是对象的模板这里是引用类类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但不能代表某一个具体的事物

2021-09-01 20:28:22 144 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除