Android : Kotlin 基础 入门

 1.Kotlin 基础 入门

   1.kotlin你好世界

fun main(args: Array<String>) {println("Hello, Kotlin!")
}

2.kotlin变量与输出

fun main() {val name = "Kotlin"println("Hello, $name!")
}

10.kotlin 区间 

fun main() {//区间 1..100  1到100var arr = 1 .. 100;var res:Int = 0;//遍历for (num in arr){res +=num;}println("1加到100的结果是:$res")//区间 1 - 99   等于1 到 99var i = 1 until 100;
//    for (num in i){
//        println("num---:$num")
//    }//区间  跳过3个数据var data = 1 .. 100;
//    for (num in data step 3){
//        println("num---:$num")
//    }//倒序var data2 = data.reversed()for (num in data2){println("num---:$num")}//长度println("i长度"+i.count())println("长度"+data.count())for(num in 1 .. 5){println(num)}
}

163

1

21.kotlin 函数 和函数表达式

package org.examplefun main() {//1.println(sum(5,6));//2.println(getsum(6,6));//3.var i = {x:Int,y:Int -> x+y};println(i(5,5));//4.var sum2:(Int,Int) -> Int = {x,y -> x+y};println(sum2(8,9))}fun sum(x:Int,y:Int):Int{return  x+ y;
}fun getsum(x:Int,y:Int):Int = x+ y;

22.kotlin默认参数和具名参数

package org.example
val PI =3.1415926f;//常量
fun main() {//圆的周长 2π*半径   var sum2:(Int,Int) -> Int = {x,y -> x+y};var getCircumference:(Float,Float) -> Float ={Pi,radius -> 2 * Pi*radius}println( getCircumference(3.1415926f,6.0f));println(getArea(5.0f,5.0f))println(getVolume(3.1415926f,5.0f,5.0f));//具名参数println(getVolume2(radius=5.0f,high=5.0f));}//长方形面积 长乘宽
fun getArea(c:Float,k:Float):Float{return  c * k;
}//圆柱体的体积 π * 半径*半径*高
fun getVolume(pi:Float,radius:Float,high:Float): Float = pi * radius *radius * high;// 默认参数
fun getVolume2(pi:Float = PI,radius:Float,high:Float): Float{return   pi * radius *radius * high;
}

23.kotlin字符串和数字之间的转换

package org.examplefun main() {var i = "100";var k = 100;var aa = "a3";//    println( i == k);   //Operator '==' cannot be applied to 'String' and 'Int'var j = i.toInt();println( j == k);   //trueprintln(k.toString().equals(i));      //trueaa.toInt(); //java.lang.NumberFormatException: For input string: "a3"
}

24.Kotlin人机交互

package org.examplefun main() {println("请输入第一个数:")var numA = readLine();println("请输入第二个数:")var numB = readLine();println("两数之和是:${numA!!.toInt() + numB!!.toInt()}")
}

25.Kotlin异常处理

package org.examplefun main() {println("请输入第一个数:")var numA = readLine();println("请输入第二个数:")var numB = readLine();try {println("两数之和是:${numA!!.toInt() + numB!!.toInt()}")}catch (e:Exception){println("异常信息")println(e.message);}}

26.Kontlin递归

package org.exampleimport java.math.BigIntegerfun main() {//递归延时 阶乘// 1  , 2: 2 *1,   3: 3*2*1, 4: 4*3*2*1; 5: 5*4*3*2*1println(fact(3));        //6println(factBG(BigInteger("40")));//815915283247897734345611269596115894272000000000}
fun fact(num:Int):Int{if(num == 1)return 1 else return num * fact(num -1);
}
//一个很大的数 BigInteger extends Number
fun factBG(num:BigInteger):BigInteger{if(num == BigInteger.ONE)return BigInteger.ONE else return num * factBG(num -BigInteger.ONE);
}

27.Kotlin尾递归优化

package org.examplefun main() {//递归 累加//1:1   2: 2+1, 3: 3+2+1,   4:4+3+2+1
//    println(allAdd((1000000)))  //java.lang.StackOverflowError 栈溢出println("最后结果是:"+allAdd(1000000,0));    //结果是1784293664}
//1.
//fun allAdd(num:Int):Int{
//    println("我只能抗住次 ${num} 计算");    //我只能抗住次 992039 计算
//    if (num == 1) return 1 else return  num + allAdd(num-1);
//}//2.尾递归优化 tailrec
tailrec fun allAdd(num:Int,res:Int):Int{println("我计算了${num} 次 ,结果是${res}");  if (num == 0) return 1 else return  allAdd(num-1,res+num);
}

28.Kotlin面向对象

package org.example//定义学生类
class Student(var name:String,var age:Int);fun main(args: Array<String>) {var st = Student("张三",25);println("名字:${st.name}");println("名字:${st.age}");
}

29.kotlin静态属性和动态行为

package org.example//定义学生类
class Student(var name:String,var age:Int){//方法1fun getPhone(){println("我的名字是${name} 手机号123456789");}//方法2带参数fun setPhone(numb:String){println("我的名字是${name} 设置的手机号${numb}");}}fun main(args: Array<String>) {var st = Student("张三",25);println("名字:${st.name}");println("名字:${st.age}");st.getPhone();st.setPhone("987654321");}

30.kotlin面向对象实战-封装

package org.example//定义学生类
class Student(var name:String,var age:Int){var money = 999;//方法1fun getPhone(){println("我的名字是${name} 手机号123456789");}//方法2带参数fun setPhone(numb:String){println("我的名字是${name} 设置的手机号${numb}");}//私有化 封装private fun geMoney(){println("我的余额是:${money}");}}fun main(args: Array<String>) {var st = Student("张三",25);println("名字:${st.name}");println("名字:${st.age}");st.getPhone();st.setPhone("987654321");//外部用不了
//    st.geMoney();//Cannot access 'geMoney': it is private in 'Student'}

31.kotlin面向对象-继承(open和override)

package org.example/*** 父类   open*/
open class Fathor{open var chact:String ="性格类向";//允许子类重写方法 加上 openopen fun action(){println("公共场合喜欢大声喧哗")}
}/*** 子类 继承父类  open*/
class Son:Fathor(){//子类重新父类的变量override var chact:String ="性格外向";//子类重新父类的方法override fun action(){println("儿子很乖,在公共场合很有礼貌")}}fun main() {//继承父类 拥有父类的所有属性var son1 = Son();println("儿子的性格 : ${son1.chact}");son1.action();}

32.kotlin抽象类和继承

package org.example/*** 抽象类* abstract*/
abstract class Human(var name:String){//抽象方法abstract fun eat();
}/*** 继承抽象类 必须实现抽象类中的方法*/
class Man(name: String) :Human(name){override fun eat() {println("${name} 大口大口的吃 哇哇哇");}}/*** 继承抽象类 必须实现抽象类中的方法*/
class WoMan(name: String) :Human(name){override fun eat() {println("${name} 小口小口的吃");}}fun main() {//调用抽象类方法var manHuman = Man("大胖子");manHuman.eat()var womanHuman = WoMan("小姑凉");womanHuman.eat()}

33.kotlin面向对象-多态

package org.example/*** 抽象类* abstract*/
abstract class Human(var name:String){//抽象方法abstract fun eat();abstract fun pee();
}/*** 继承抽象类 必须实现抽象类中的方法*/
class Man(name: String) :Human(name){override fun eat() {println("${name} 大口大口的吃 哇哇哇");}override fun pee(){println("${name} 站着尿尿");}}/*** 继承抽象类 必须实现抽象类中的方法*/
class WoMan(name: String) :Human(name){override fun eat() {println("${name} 小口小口的吃");}override fun pee(){println("${name} 蹲着尿尿");}}fun main() {//调用抽象类方法var manHuman = Man("大胖子");manHuman.eat();var womanHuman = WoMan("小姑凉");womanHuman.eat()var people1 =  Man("张三");var people2 =  WoMan("李四");var people3 =  Man("王五");var people4 =  WoMan("王麻子");//list 集合var peopleList =  listOf(people1,people2,people3,people4);for (d in peopleList ){//多态d.pee();}}

34.kotlin面向对象-抽象类和接口

package org.example/*** 接口 是事物的能力* 抽象类 是事物的本质* */
interface IMan {fun sex(){println("interface 20");};fun age();//接口中的抽象方法abstract fun ab();}//实现接口中的方法  或者 改成抽象类 abstract class
abstract class Man1:IMan{fun dat(){println("abstract 18");}//实现抽方法override fun ab() {println("abstract ab()");}
}//写个类实现抽象方法
class shix : Man1(){//重写override fun age() {println(" override shix  18");}}//实现接口中的方法  或者 改成抽象类 abstract class
class Man2:IMan{override fun age() {println("重写接口IMan中的age方法");}override fun ab() {TODO("Not yet implemented")}//调用接中IMan的方法override fun sex() {super.sex()}
}// 写一个抽象类
abstract class Human3{//抽象方法abstract fun eat();
}/*** 接口 是事物的能力* 抽象类 是事物的本质* */
//Man8 类继承抽象类 重新抽象方法 抽象类要带括号 ()
//Man8 又继承接口 ,也要重新接口中的方法
class Man8:Human3(),IMan{//重写抽象类中的方法override fun eat() {println("Man8 重写抽象类中的方法eat()");}//重写接口中的方法override fun age() {println("Man8中的eat()");}//重写接口中的方法override fun ab() {TODO("Not yet implemented")}
}class Man9:Human3(){override fun eat() {println("Man9中的eat()");}}fun main() {//    interface 20
//    abstract ab()
//    override shix  18var man = shix();man.sex();  //调接口中的方法man.ab();man.age();println("------------");var ma2 = Man2();ma2.sex();ma2.age();//    interface 20
//    重写接口IMan中的age方法var man3 = Man8();man3.eat();man3.age()var man4 = Man9();man4.eat();var house = listOf<Human3>(man3,man4);for (p in house){if (p is Man8){p.eat();}}}

35.kotlin面向对象-代理和委托 by

*** kotlin面向对象-代理和委托  by 代理*  object  表示 单例* */
//定义接口
interface Wuqiku{//接口 武器方法fun wuqi();
}//狙击手重写接口中的方法
// by 代理  有了步兵的武器   Bubing() 方法会被 回创建两次
class jujishou : Wuqiku by Bubing(){override fun wuqi() {println("我是狙击手 要拿巴雷特");Bubing().wuqi();}
}//2.单例 object 狙击手重写接口中的方法
// by 代理  有了步兵的武器  优化 设置了object 只会创建一次
class jujishou2 : Wuqiku by Bubing2{override fun wuqi() {println("我是狙击手 要拿巴雷特");Bubing2.wuqi();}
}//步兵重写接口中的方法
class Bubing : Wuqiku{override fun wuqi() {println("我是步兵 要拿AK47");}
}//2.单例 object 步兵重写接口中的方法
object Bubing2 : Wuqiku{override fun wuqi() {println("我是步兵 要拿AK47");}
}fun main(){//设置了 by  有AK 和 巴雷特var j = jujishou();j.wuqi();var b = Bubing();b.wuqi();//比较var c = Bubing();println(b == c); //false//objectvar bb = Bubing2;var cc = Bubing2;println(bb == cc); //true}

36.kotlin面向对象-枚举 enum

/*** 枚举 enum* */
enum class Week{星期一,星期二,星期三,星期四,星期五,星期六,星期日
}fun main() {println(Week.星期一);println(Week.星期二);//枚举索引 0println(Week.星期一.ordinal);
}

37.kotlin面向对象-印章类 Sealed class


/*** Sealed class 在意的 class 的类型*  子类有限的class* enum 枚举 在意的是数据* */
sealed class Human{fun sayHello(){println("hello");}class Man():Human();class WoMan():Human();}fun main() {//不能被实例化
//    var human = Human();var a:Human = Human.Man();var b:Human = Human.WoMan();var c:Human = Human.WoMan();//集合var datalist = listOf(a,b,c);for (d in datalist){if (d is Human.WoMan){d.sayHello();}}
}

2.kotlin函数式编程入门

/**forEach()方法 接收的是一个函数** public inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit {*     for (element in this) action(element)* }* */
//函数 变 参数
var print = fun (p:String):Unit{println(p);
}
fun main() {//不限定
//    var data = listOf("小二","王五",123,213.0F);//listOf<String> 限定集合类型为Stringvar names = listOf<String>("小二","张三","李四","王五",);//遍历集合names.forEach( print);//2.for (a in names){println(a);}//3.names.forEach {a -> println(a);}//4. 里面有个it 变量names.forEach {println(it);}
}

1.kotlin图片处理

import java.awt.image.BufferedImage
import java.io.File
import javax.imageio.ImageIOfun main() {
//    imge1();
//    imge2();
//    imge3();image4();
}fun imge1(){//内存中创建一个宽高为100的图片var image = BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);//x y  设置颜色                红 绿 蓝 0x00ff00image.setRGB(0,0, 0xff0000);// 把图片写到文件中 图片格式,图片名字ImageIO.write(image,"bmp", File("logo.bmp"));
}fun imge2(){//内存中创建一个宽高为100的图片var image = BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);//x y  设置颜色                红 绿 蓝 0x00ff00var x = 0 .. 99;for(a in x){//一行红的image.setRGB(a,0, 0xff0000);}for(a in x){//一行绿的image.setRGB(a,1, 0x00ff00);}for(a in x){//一行蓝的image.setRGB(a,2, 0x0000ff);}// 把图片写到文件中 图片格式,图片名字ImageIO.write(image,"bmp", File("logo2.bmp"));
}fun imge3(){//内存中创建一个宽高为100的图片var image = BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);//x y  设置颜色                红 绿 蓝 0x00ff00var x = 0 .. 99;var y = 0 .. 99;for(a in x){for (b in y){//循环生成了一张红色图片image.setRGB(a,b, 0xff0000);}}// 把图片写到文件中 图片格式,图片名字ImageIO.write(image,"bmp", File("logo3.bmp"));
}/*** public inline fun <T> T.apply(block: T.() -> Unit): T {*     contract {*         callsInPlace(block, InvocationKind.EXACTLY_ONCE)*     }*     block()*     return this* }* */
fun image4(){//内存中创建一个宽高为100的图片var image = BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);// 设置颜色                红 绿 蓝 0x00ff00var w = 0 .. 99;    //宽度var h = 0 .. 99;    //高度image.apply {for (i in w){for(j in h){setRGB(i,j,0x00ff00);}}}// 把图片写到文件中 图片格式,图片名字ImageIO.write(image,"bmp", File("logo4.bmp"));}

2.Kotlin高阶函数实战(传统函数演示)

/*** Kotlin 的 data class 是一种特殊类型的类,它主要用于简化对象表示和序列化。一个 data class 自动生成以下几种方法:* equals()* hashCode()* toString()* copy()* 它还自动生成 getters 和 setters。** */
data class Student(var name:String,var age:Int,var sex:String,var clazz:String)//数据
var data = listOf<Student>(Student("张三",18,"男","java"),Student("李四",20,"女","php"),Student("王五",18,"男","php"),Student("周芷若",25,"女","java"),Student("张三丰",18,"男","android"),Student("小二",21,"女","android"),Student("鲁班",18,"男","android"),
);//查找男的方法
fun getMan(str:String){//用于保存查找出来的数据var slStudent = ArrayList<Student>();//筛选for (a in data){if(a.sex == str){slStudent.add(a);}}//遍历for(stu in slStudent){println("名字:${stu.name} 年龄:${stu.age} 性别:${stu.sex} 班级: ${stu.clazz}");}
}fun main() {//用于保存查找出来的数据var slStudent = ArrayList<Student>();//筛选for (a in data){if(a.clazz == "php"){slStudent.add(a);}}//遍历for(stu in slStudent){println("名字:${stu.name} 年龄:${stu.age} 性别:${stu.sex} 班级: ${stu.clazz}");}//调用封装的方法getMan("男");
}

3.kotlin高阶函数实战(map,filter,groupBy,minBy,maxBy,find,any)

/*** Kotlin 的 data class 是一种特殊类型的类,它主要用于简化对象表示和序列化。一个 data class 自动生成以下几种方法:* equals()* hashCode()* toString()* copy()* 它还自动生成 getters 和 setters。** */
data class Student(var name:String,var age:Int,var sex:String,var clazz:String)//数据
var data = listOf<Student>(Student("张三",18,"男","java"),Student("李四",20,"女","php"),Student("王五",18,"男","php"),Student("周芷若",25,"女","java"),Student("张三丰",18,"男","android"),Student("小二",21,"女","android"),Student("鲁班",18,"男","android"),
);fun main() {//最大年龄 maxByprintln(data.maxBy { it.age })//最小年龄 mixByprintln(data.minBy { it.age })// filter 过滤println(data.filter { (it.age <20) and (it.sex == "男") })//map 把某个属性映射成新的集合var mapdata = data.map { "${it.age} : ${it.name}" }println(mapdata);//any Boolean 校验println(data.any { it.age == 20 })//count 统计println(data.count { it.age == 20 })//find 查找一条符合记录了数据println(data.find { it.age < 20 })//groupBy 分组//{java=[Student(name=张三, age=18, sex=男, clazz=java), Student(name=周芷若, age=25, sex=女, clazz=java)], php=[Student(name=李四, age=20, sex=女, clazz=php), Student(name=王五, age=18, sex=男, clazz=php)], android=[Student(name=张三丰, age=18, sex=男, clazz=android), Student(name=小二, age=21, sex=女, clazz=android), Student(name=鲁班, age=18, sex=男, clazz=android)]}var res = data.groupBy { it.clazz }println(res)// 按班级分组后 获取 key 为 java 的数据data.groupBy { it.clazz }.get("java")?.forEach { println(it) }}

4.kotlin高阶函数实战-自定义DSL入门


/*** Kotlin 的 data class 是一种特殊类型的类,它主要用于简化对象表示和序列化。一个 data class 自动生成以下几种方法:* equals()* hashCode()* toString()* copy()* 它还自动生成 getters 和 setters。** */
data class Student(var name:String,var age:Int,var sex:String,var clazz:String)//数据
var data = listOf<Student>(Student("张三",18,"男","java"),Student("李四",20,"女","php"),Student("王五",18,"男","php"),Student("周芷若",25,"女","java"),Student("张三丰",18,"男","android"),Student("小二",21,"女","android"),Student("鲁班",18,"男","android"),
);/**DSL 入门* 在 Kotlin 中,infix fun 是用于定义接受两个参数的函数的一种语法形式。* 它允许你将函数作为前缀操作符来调用,而不需要显式地使用括号。** 需要注意的是,infix fun 只适用于单参数(只有一个参数声明)的函数。* 如果函数有多个参数,你需要使用常规的函数声明语法,并在调用时使用括号来传递参数。* */
infix fun List<Student>.按年龄查找学生(age:Int){filter { it.age == age }.forEach { println(it) }
}infix fun List<Student>.查找学生年龄小于(age:Int){filter { it.age < age }.forEach (::println)
}fun main() {//DSL入门data 按年龄查找学生 20data 查找学生年龄小于 20}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM调优排错专题

JVM调优排错专题 1 打开MAT报错 1 打开MAT报错 下载了linux版本的 MAT 软件&#xff0c;1.15.0版本。 下载地址&#xff1a;https://eclipse.dev/mat/downloads.php 运行时报错了。 错误截图 报错日志 wittasus:/usr/develop/mat$ ./MemoryAnalyzer Unrecognized option:…

基于核心素养高中物理“深度学习”策略及其教学研究课题论证设计方案

目录 一、课题的提出及意义 二、课题的核心概念及其界定

基于Java SSM框架实现宠物医院信息管理系统项目【项目源码】

基于java的SSM框架实现宠物医院信息管理系统演示 java简介 Java语言是在二十世纪末由Sun公司发布的&#xff0c;而且公开源代码&#xff0c;这一优点吸引了许多世界各地优秀的编程爱好者&#xff0c;也使得他们开发出当时一款又一款经典好玩的小游戏。Java语言是纯面向对象语言…

Kafka 安装与部署

目录 Kafka 下载 &#xff08;1&#xff09;将 kafka_2.11-2.4.1.tgz 上传至 /opt/software/ &#xff08;2&#xff09;解压安装包至 /opt/module/ [huweihadoop101 ~]$ cd /opt/software/ [huweihadoop101 software]$ tar -zxvf kafka_2.11-2.4.1.tgz -C ../module/&#…

基础算法(5):滑动窗口

1.何为滑动窗口&#xff1f; 滑动窗口其实也是一种算法&#xff0c;主要有两类&#xff1a;一类是固定窗口&#xff0c;一类是可变窗口。固定的窗口只需要一个变量记录&#xff0c;而可变窗口需要两个变量。 2.固定窗口 就像上面这个图一样。两个相邻的长度为4的红色窗口&…

JavaSE 泛型

目录 1 泛型类的定义1.1 为什么需要泛型1.2 泛型的概念1.3 泛型的分类 2 泛型类2.1 泛型类的定义2.2 泛型类的例子2.3 泛型类的实例化2.3.1 实例化语法2.3.2 裸类型(Raw Type) 2.4 泛型类的定义-类型边界2.5 泛型类的使用-通配符(Wildcards)2.5.1 基本概念2.5.2 通配符-上界2.5…

HTML_有哪些字体样式及使用

文章目录 &#x1f431;‍&#x1f409;一、字体样式的基本概念&#xff1a;&#x1f431;‍&#x1f409;二、css字体样式属性有&#xff1a;&#x1f923;1、设置字体类型&#xff08;font-family&#xff09;&#x1f923;2、设置字体大小&#xff08;font-size&#xff09;…

【lesson19】MySQL内置函数(2)数学函数和其它函数

文章目录 数学函数函数使用 其它函数函数使用 数学函数 函数使用 其它函数 函数使用 user() 查询当前用户 database()显示当前正在使用的数据库 password()函数&#xff0c;MySQL数据库使用该函数对用户加密 md5(str)对一个字符串进行md5摘要&#xff0c;摘要后得到一个32…

VueStu02-创建一个Vue实例

一、核心步骤 1.准备容器 准备一个盒子div。 2.引包 从官网引包&#xff0c;有开发版本和生产版本之分。 3.创建Vue实例 创建一个Vue实例&#xff0c;new Vue()。 4.指定配置项 指定配置项&#xff0c;用于渲染数据 。 el&#xff1a;指定挂载点。知道自己将来要管理的是…

Axure的交互以及情形的介绍

一. 交互 1.1 交互概述 通俗来讲就是&#xff0c;谁用了什么方法做了什么事情&#xff0c;主体"谁"对应的就是axure中的元件&#xff0c;"什么方法"对应的就是交互事件&#xff0c;比如单击事件、双击事件&#xff0c;"什么事情"对应的就是交互…

Temu、Shein、OZON测评自养号,IP和指纹浏览器的优缺点分析

随着全球电子商务的飞速发展&#xff0c;跨境电商环境展现出巨大的潜力和机遇。然而&#xff0c;跨境卖家们也面临着更激烈的竞争、更严格的规定和更高的运营成本等挑战。为了在这个环境中脱颖而出&#xff0c;一些卖家尝试使用自动脚本程序进行浏览和下单。然而&#xff0c;这…

JAVA分库分表

1.1为什么需要分库分表 随着平台的发展&#xff0c;平台的数据会越来越多。当表中的数据量过多时&#xff0c;数据库的性能会下降严重&#xff0c;很有可能会把系统给拖垮。类似于分而治之的思想&#xff0c;将大的问题拆分成小的问题&#xff0c;从而提高效率。通过将数据分散…

3分钟让你学会axios在vue项目中的基本用法(建议收藏)

目录 Axios Axios简介 一、axios是干啥的 二、安装使用 三、Axios请求方式 1、axios可以请求的方法&#xff1a; 2、get请求 3、post请求 4、put和patch请求 5、delete请求 6、并发请求 四、Axios实例 1、创建axios实例 2、axios全局配置 3、axios实例配置 4、…

CTF命令执行部分总结

&#x1f60b;大家好&#xff0c;我是YAy_17&#xff0c;是一枚爱好网安的小白&#xff0c;正在自学ing。 本人水平有限&#xff0c;欢迎各位大佬指点&#xff0c;一起学习&#x1f497;&#xff0c;一起进步⭐️。 ⭐️此后如竟没有炬火&#xff0c;我便是唯一的光。⭐️ 关于…

矩阵式键盘实现的电子密码锁

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit P14P1^4; //将P14位定义为P1.4引脚 sbit P15P1^5; //将P15位定义为P1.5引脚 sbit P16P1^6; //将P16位定义为P1.6引脚 sbit P17P1^7; //将P17位定义为P1.7引脚 sbit soundP3^7; //将so…

[AutoSar]基础部分 RTE 01 介绍

目录 关键词平台说明一、什么是RTE二、RTE的主要功能 关键词 嵌入式、C语言、autosar、EcuM、wakeup、flex 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0c;C编译器HighTec (GCC) 一、什么是RTE RTE&#xff08;Run-Time Environment&…

【python】进阶--->并发编程之线程(二)

一、线程的生命周期 新建 : 创建线程经过初始化,进入就绪状态 就绪 : 等待操作系统调度,调度后进入运行状态运行 阻塞 : 暂停运行,解除阻塞后进入就绪等待重新调度 消亡 : 线程执行完毕或者异常终止 可能有3种情况从运行到阻塞 : 同步 : 线程中获取同步锁,但是资源已经被其他…

【mysql】 mysql什么情况下不走索引,会发生索引失效?

使用函数或表达式进行查询有时候,在查询条件中使用函数或表达式可能导致索引失效。让我们看一个例子: SELECT * FROM users WHERE UPPER(name) = JOHN;在这个查询中,我们使用了UPPER函数将name列的值转换为大写,并与字符串JOHN进行比较。由于函数UPPER的存在,MySQL无法直…

【C语言】6-6 数组循环右移 分数 20

6-6 数组循环右移 分数 20 全屏浏览题目 切换布局 作者 张泳 单位 浙大城市学院 本题要求实现一个对数组进行循环右移的简单函数&#xff1a;一个数组a中存有n&#xff08;>0&#xff09;个整数&#xff0c;将每个整数循环向右移m&#xff08;≥0&#xff09;个位置&…

css中定位方式

一、静态定位&#xff08;static&#xff09;&#xff1a; 元素的默认定位方式&#xff0c;元素按照正常文档流排列。 left、top、right、bottom等属性对该元素无效&#xff0c;不会受到定位属性的影响。 二、相对定位&#xff08;relative&#xff09;&#xff1a; 通过设…