- 博客(19)
- 收藏
- 关注
原创 kotlin增加静态扩展函数
比方说要为String增加一个cmpByLength方法,并且希望是静态的,可以创建一个StringEx.kt文件,里面这么写:fun String.Companion.cmpByLength(a: String,b: String): Boolean { return a.length>b.length}然后就可以在任意地方调用String.cmpByLength方法了。为什么能这样做?String源码:public class String : Comparable<
2021-11-15 19:55:04 2975
原创 《第一行代码》第三版p548~549ViewModel数据封装详细解析
在第一行代码第三版LiveData最后一块中读到的处理数据封装的方法,之前读过一遍没搞懂,现在思路清晰了,感觉能理解了,以下是个人见解首先,这段代码val counter: LiveData<Int> get() = _counter是看懂这一整个代码的第一个关键,书中没有提到kotlin中getter和setter的概念,因为kotlin为变量提供了默认实现,而如果需要覆盖掉原来的getter,那么就需要进行手动实现,也就是在变量下方写上get() = ...,请注意,
2021-10-03 17:22:56 255
原创 PAT (Advanced Level) Practice 1088 Rational Arithmetic (20 分)
题目不贴了,主要是坑点写写吧首先是最不应该的,Inf打成了inf,害我两个测试点一直没过;其次就是在判断分子和分母是否小于0时,不能使用num*den<0或者num<0||den<0,这样会溢出或者疏忽情况,而要使用num<0&&den>0||num>0&&den<0,因为分子分母同时为负数时,就是正数;还有就是变量类型一定要是long long,否则会溢出。这道题本质上就是1081的拓展,其实实现起来不怎么困难,主要是细节问
2021-10-03 11:07:12 118
原创 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/util/ByteArrayBuffer解决方案
解决方法:在AndroidManifest.xml的中加入以下代码:<uses-library android:name="org.apache.http.legacy" android:required="false"/>原因:org.apache.http.util.ByteArrayBuffer随版本更新而废弃,如果需要引入这个类,则需要引入org.apache.http.legacy这个包,看名字就知道这个包是专门存放以前的类或者废弃的类。网上我看了一下android:requir
2021-09-16 15:38:13 883
原创 cursor的使用方法以及浅层原理
SQLiteDataBase db;Cursor cursor = db.query(参数);if(cursor.moveToFirst){ do{ val param = cursor.getString(cursor.getColumnIndex("param")); }while(cursor.moveToNext)}cursor.close()首先需要通过query方法查找所需要的数据,query方法会返回一个Cursor对象,需要通过moveToFirst方法来判断是否数据
2021-09-01 20:19:51 1594
原创 Broadcast的一些注意事项
动态注册和静态注册的区别1.动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低2.动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器静态注册是常驻型 ,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行3.在同一个优先级下,谁先启动的快,谁将先接收到广播注册广播的两种方式:动态注册,静态注册动态注册registerReceiver(receiver,
2021-08-31 21:34:06 167
原创 Fragment的简单用法
之前老是容易忘掉Fragment里面怎么findview,干脆写一篇博客,以后忘了回来再看getSupportFragmentManagerReturn the FragmentManager for interacting with fragments associated with this activity.返回 FragmentManager 以与与此Activity关联的Fragment进行交互。addToBackStackAdd this transaction to the b
2021-08-30 21:57:43 137
原创 pat advance 1072 Gas Station (30 分) 玄学2,3测试点
题目就不贴了,下面是ac的代码,搞不明白为什么将初始化的位置从后面换到前面就过了,如果有一样问题的,可以参考一下,虽然我也不知道为什么 (其实不用存vector< node >直接设置几个变量迭代也可以,那样更省时间)#include<iostream>#include<string.h>#include<vector>#include<algorithm>#define inf 0x3f3f3f3f#define maxn 1100
2021-08-30 11:03:50 230
原创 对于Activity的一些理解
为什么onCreate方法叫做回调方法?回调方法就是不需要你去调用的方法,当达到条件的时候系统会去自动调用的方法,activity是由android系统管理的当activity创建的时候系统就会主动去调用这个activity的oncreate方法生命状态Active/Running:Activity处于活动状态,此时Activity处于栈顶,是可见状态,可与用户进行交互。Paused:当Activity失去焦点时,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时,
2021-08-28 15:15:16 171
转载 对于Context的一些理解
context含义有语境,上下文,背景,环境等等。 Context是维持Android程序中各组件能够正常工作的一个核心功能类。Context官方注释Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to applicati.
2021-08-27 16:15:39 587
原创 关于kotlin泛型中的协变和逆变的个人理解
2021.8.26带有主观性,理性观看,客观评价WARNING:本文章适合了解一点协变和逆变但又不完全懂的人看一看泛型协变:如果定义了一个MyClass< T >的泛型类,其中A是B的子类型,同时MyClass< A >又是MyClass< B >的子类型,那么就可以称MyClass在T这个泛型上是协变的错误写法:open class Dad()class Son(): Dad()class Generics<out T> { pri
2021-08-26 19:56:41 191
原创 科学计数法模板
纯模拟需要考虑的太多了,不如背板子~~科学计数法计算逻辑:1、找小数点位置。2、找某数第一个不为0数字的位置。3、将第一个不为0数字后的数字加入temp(有效数字)4、第二点减第一点为指数值5、判断指数和有效数字是否相等即可。...
2021-08-19 09:41:13 125
原创 网站的搭建
前期准备工作如果是学生,那么最好先去做一下学生认证,三年服务器只要三百多,阿里云腾讯云都可以。知识储备最好学到JavaWeb之后,有一定的计算机基础知识。域名注册在阿里云或者腾讯云搜索自己喜欢的域名,并进行购买。购买服务器这一步是必须的。域名必须至少需要一个服务器才可以进行备案。一般来说选购一个轻量级应用服务器就足够新手前期的试验了。网站备案根据国家相关部门规定,在中国大陆境内提供服务的网站都必须先进行 ICP 备案,备案成功并获取通信管理局下发的 ICP 备案号后才能开通访问。因此
2021-07-28 16:26:20 154
原创 Dijkstra算法理解
Dijkstra算法这个算法最通俗的解释就是单源最短路径算法,展开来讲,就是从图中一个点到其他点的最短路径(好像是废话)Dijkstra算法的核心就是贪心,首先把各个点与起点的距离记录在一个dis数组(起初除了起点,其他的点的最段距离都是不确定的,所以需要一个vis数组来判断这个点是否是距离起点的最短路径点)中,从dis数组中找到最短的那个点,且这个点肯定是目前距离起点最近的(这个想不明白的看看图就知道了),然后以这个点为”中转站“,判断比较从中转站到别的点是否距离更短,如果更短,那就更新dis数组,如
2021-07-25 11:14:52 405 2
原创 远程桌面连接出现身份验证错误。要求的函数不受支持。这可能是由于CredSSP加密数据库修正。
远程连接出现报错windows更新的问题。请通读后再进行操作!!!一般情况下,电脑上是有gpedit.msc的,命令行直接打开就行了,没有请跳至2.1.有gpedit.mscwin+r,然后输入gpedit.msc,直接打开然后按照这个路径(计算机设置->管理模板->系统->凭据分配->加密数据库修正),找到加密数据库修正。按照图示修改点击确定即可如果这个方法没有效果,则使用下面的注册表修改方法。2.无gpedit.msc直接在regedit中修改win+
2021-06-27 16:10:08 9532 3
原创 关于tomcat10和Jakarta的兼容问题
关于tomcat10和Jakarta的兼容问题本人花了将近四个小时排雷,从tomcat自身再到Java再到idea,我试过了所有的版本,运行初始Web项目点击Hello的超链接时都将会得到的是结果仅仅是因为tomcat10中使用的包名改了,Jakarta.servlet和javax.servlet它不一样!所以在选择Java版本时,需要选择JakartaEE9版本,这样才兼容。如下:...
2021-05-03 21:53:42 8435 9
原创 链表的基本操作codeup
最近闲的没事,在codeup上随便找了一题做了做,差点没把我送走,虽然是个基础题,但数据处理太麻烦了,要想好一会(对我这种链表小白来说),脑阔疼。有一个小难点就是头插法,我找了很多资料,但都看不懂,直到遇到了这张图片,豁然开朗。百度的一个比较好的解释:头插法:反复让当前生成新的结点指向头结点的next,然后头结点的next又反过来指向当前生成的新结点,反复如此头插法就像是在插队一样,即每次生成一个新结点都是插到第一个结点的位置。这道题如果用C++还容易超时,建议加上如下代码,关闭流同步加速!st
2021-02-03 15:00:46 142
原创 重排链表
重排链表 (25分)给定一个单链表 L1 →L2 →⋯→Ln−1 →Ln ,请编写程序将链表重新排列为Ln →L1 →Ln−1 →L2 →⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (≤10 5 )。结点的地址是5位非负整数,NULL地址用−1表示。接下来有N行,每行格式为:Address Data Next其中A
2021-02-01 07:51:46 313
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人