java疯狂讲义 笔记_《疯狂Java讲义》阅读笔记1

2023-11-05

2.2 UML统一建模语言

从粗粒度到细粒度,最常用的UML图:

部署图:从物理处理器和设备的角度画图,其中一个设备中可能包括零个或若干个组件

用例图:表示的是一系列功能,一个用例表示系统的一个功能模块,如登录模块

组件图:多个类共同组成的jar包、war包或可复用的函数库,或DDL文件

类图:表示的是类的结构和它们相互之间的关联(聚合和组合关系)、泛化(继承)、依赖关系(一个类的改动会导致另一个类的改动)

顺序图:表示具体用例的一部分的详细流程,分为垂直维度(时间)和水平维度(消息在对象实例间的发送与接收)

活动图:用于描述用例内部的活动或方法的流程,最大优点是可以并行操作,单支类似于流程图

状态机图:描述某个对象所处的不同状态和状态间的转换信息,其符号集包含5个基本元素:

1-初始状态-实心圆

2-终止状态-内部包含实心圆的圆

3-状态-圆角矩形

4-状态之间的转换-带箭头的线段

5-判断点-空心圆

状态机图擅长表现单个对象的跨用例行为,对于多个对象的交互行为应该采用顺序图

2.3 Java的面向对象特征:

对象的状态-用数据来描述-Java用成员变量来描述

对象的操作(对象的行为)-用来改变对象的状态-Java用方法来描述

对象实现了数据和操作的结合

Java语言不允许直接访问对象,而是通过对对象的引用来操作对象。

上面这句话我认为可以从GC的角度来理解-Java里的对象具有唯一性,每个对象都有一个标识来引用它,如果某个对象失去了标识,这个对象将变成垃圾,只能等着垃圾回收机制来回收它。

3.1 注释和API文档

可读性第一,效率第二

生成API文档的方法:

可以用如下语句生成一个API文档:

javadoc -d apidoc -windowtitle windowtitlename -doctitle doctitlename -header 我的类 *.java

其中,-windowtitle表示文档的窗口标题

-doctitle表示概述页面的标题(只有处于多个包下的源文件生成API文档时,才有概述页面)

header指定一个HTML格式的文本,包含每个页面的页眉

效果:

fd635468c76f

如果想生成包描述文件,可以将上述命令的最后指定的*.java文件改为包名,这样生成的文档中会有一个package.html文件,在其中的

元素中添加描述。

3.2 标识符和关键字

标识符必须以字母、下划线(_)、美元符($)开头,后面除了可以跟上面三种外,还可以跟数字,且这里的字符还可跟中文日文等字符。

Java中区分大小写

Java的所有关键字都是小写的

Java关键字:

fd635468c76f

其中,enum和const是保留字,true、false和null称为直接量(literal)

Java语言是强类型语言,即可以在编译时进行更严格的语法检查,从而减少编程错误。

3.4 基本数据类型

希望系统将整数当long型处理时:在整数后加l或L(推荐),否则如果写以下语句:

long bigV=9999999999999;

系统会报“the literal of type int is out of range”的错误,表明这时还是将数以int型处理了;

如果这里是个没有超出int类型的值,就不报错,因为int类型的值会自动类型转换到long类型。

字符型:

Java中的单引号、双引号和反斜线都有特殊的用途,需要在前面再加一个\

浮点型:

使用float和double都不能很精确地表示一个浮点数,如果要精确保存一个浮点数,用BigDecimal类

浮点类型默认是double类型,在浮点数后加f或F表示float型

三个特殊的浮点数值:

正无穷大:正数除以0,通过Float.POSITIVE_INFINITY或Double.POSITIVE_INFINITY表示

负无穷大:负数除以0,通过Float.NEGATIVE_INFINITY或Double.NEGATIVE_INFINITY表示

非数:0.0除以0.0,通过Float.NaN或Double.NaN表示

所有正无穷大都是相等的

所有负无穷大都是相等的

两个非数之间是不相等的

整数除以0会报错

数值之间可以使用下划线分割,如:

int binV=10_10_10;

3.5 基本类型的类型转换

自动类型转换:

把一个表数范围小的数值或变量直接赋值给另一个表数范围大的变量,否则需要强制类型转换

自动类型转换图如下:

fd635468c76f

强制类型转换:

随机输出"a"~"z":

int x=(int) (Math.random()*26+97);

String res=""+(char)x;

System.out.println(res);

字符串不能直接转换为基本类型,因此使用基本类型的包装类型可以实现把字符串转换成基本类型,例如:

String a="45";

int va=Integer.parseInt(a);

System.out.println(va+2);//输出47

表达式的类型提升:

也按照上图自动类型转换的图来进行转换,右边等级最高,除了byte、char、short将被提升到int类型特殊外,其它会转换成表达式中等级最高的类型

两个整数相除,即使除不尽,也会得到一个整型的值,也是表达式类型严格保持和表达式中最高等级操作数相同的类型的体现。

3.6 直接量

指在程序中通过源代码直接给出的值

能指定直接量的类型:基本类型、字符串类型和null类型

Java支持8种直接量,基本类型除去short型和byte型,再加上String类型和null类型

当程序第一次使用某个字符串直接量时,Java会使用常量池来缓存该字符串直接量,后面用到时会直接使用常量池中的字符串直接量

常量池(constant pool)指的是在编译器被确定,并被保存在已编译的.class文件中的一些数据,它包括关于类、方法、接口中的常量,也包括字符串直接量

(字符串是一个典型的不可变类,所以共享String对象时不会导致混乱,Java会保证每个字符串常量只有一个)

3.7 运算符

除法运算符是截断取整,即直接舍弃小数

求余运算%也需要进行除法运算,所以除数也不能是0,否则也将引发除以0异常,求余运算也会出现非数:0%0.0或0.0%0.0或0.0%0

移位运算:

向右移位a>>33和a>>1的结果一样,如果a是整型,且右边的数大于整型的最大位数32,会先对32求余,之后得到的数才是真正的移位位数。如果a是long类型,则会对64求余

移位运算>>x可以用除以2x计算,<

扩展后的赋值运算符,例如>>=不仅具有更好的性能,而且程序会更健壮

比较运算符:

>、=、<=只支持数值类型,==不管两边的数据类型是否想同,只看值是否相等;

但是基本类型、引用类型和boolean类型的值和变量不能互相比较;

引用类型的两个引用类型之间需要有父子继承关系才可以比较

逻辑运算符:

用于操作两个布尔类型的变量或常量

&&:短路与

&:不短路与

运算符优先级见下表(上一行的优先级大于下一行的):

fd635468c76f

4.2 分支结构

if语句总是优先把包含范围小的条件放在前面处理

switch语句后面的控制表达式的数据类型只能是byte、short、char、int四种整数类型、枚举类型和String类型(JDK 7开始允许)

使用break;和continue;来控制循环的例子:

break的两个对应例子:

如果有标签,结果会是:

outer://这里是一个标签

for(int i=0;i<3;i++) {

for(int j=0;j<3;j++) {

if(i==1&&j==1) {

break outer;//break后加标签名,表明结束标签指定的循环

}

System.out.println("i为:"+i+",j为:"+j);

}

}

//输出结果:

//i为:0,j为:0

//i为:0,j为:1

//i为:0,j为:2

//i为:1,j为:0

如果没有标签,结果会是:

for(int i=0;i<3;i++) {

for(int j=0;j<3;j++) {

if(i==1&&j==1) {

break;

}

System.out.println("i为:"+i+",j为:"+j);

}

}

//结果:

//i为:0,j为:0

//i为:0,j为:1

//i为:0,j为:2

//i为:1,j为:0

//i为:2,j为:0

//i为:2,j为:1

//i为:2,j为:2

continue的两个对应例子:

如果有标签,结果会是:

outer:

for(int i=0;i<3;i++) {

for(int j=0;j<3;j++) {

if(i==1&&j==1) {

continue outer;

}

System.out.println("i为:"+i+",j为:"+j);

}

}

//结果:

//i为:0,j为:0

//i为:0,j为:1

//i为:0,j为:2

//i为:1,j为:0

//i为:2,j为:0

//i为:2,j为:1

//i为:2,j为:2

如果没有标签,结果会是:

for(int i=0;i<3;i++) {

for(int j=0;j<3;j++) {

if(i==1&&j==1) {

continue;

}

System.out.println("i为:"+i+",j为:"+j);

}

}

//i为:0,j为:0

//i为:0,j为:1

//i为:0,j为:2

//i为:1,j为:0

//i为:1,j为:2

//i为:2,j为:0

//i为:2,j为:1

//i为:2,j为:2

4.6 深入数组

数组的初始化过程和在内存中的存放:

在初始化数组后,由于数组是引用类型,所以代码中显式表示出的数组引用的变量存放在栈中(如果该引用变量是局部变量),实际的数值存放在堆中,数组引用的变量指向堆中的数组对象

引用类型数组:数组中的每个变量也是引用,该引用变量存储在堆中,指向堆中的有效的数组内存,实际的变量值

5.1 类和对象

static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。static修饰的成员表明它属于这个类本身,而不属于该类的单个实例。因为通常把static修饰的成员变量和方法也称为类变量、类方法。不使用static修饰的普通方法、成员变量则属于该类的单个实例,而不属于该类。

有时也把static修饰的成员变量和方法称为静态变量和静态方法,把不使用static修饰的成员变量和方法称为非静态变量和非静态方法,静态成员不能直接访问非静态成员。

对象的this引用:

this作为对象的默认引用有两种情形:

math?formula=%5Ctriangleright 在构造器中表示引用该构造器正在初始化的对象

math?formula=%5Ctriangleright 在方法中表示引用调用该方法的对象

注意:是对象的默认引用,而不是类的

对于static修饰的方法而言,可以使用类直接调用该方法,如果在static修饰的方法中使用this关键字,则这个关键字就无法指向合适的对象,所以static修饰的方法中不能使用this引用。

由于static修饰的方法不能访问不使用static修饰的普通成员,因此Java语法规定:静态成员不能直接访问非静态成员。

5.2 方法的参数传递机制

Java的参数传递机制:Java里方法的参数传递机制只有一种:值传递,即将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响。这是因为每个方法都有一个栈区,在一个方法中调用另一个方法,并传递实参,另一个方法中会将这些实参放到自己的栈区并进行操作,原先方法栈区中的值并未发生改变。

引用变量的传递也是值传递,系统会将引用变量(可以理解为指针)在另一个方法的栈区中复制一份,两个栈区中对应引用变量的内容都相同,都是堆中的同一个地址,所以另一个方法中对堆中的实际值作修改后,原方法中的实际值也会发生修改,但这也是值传递,因为引用变量和引用变量的副本对应的是堆中的同一个地址,而与基本类型的变量一样,也是复制了引用变量的副本。

形参个数可变的方法:

在最后一个形参的类型后增加三点(...),如:

public void test(int a,String ... books)

{

for(String tmp:books)

{

System.out.println(tmp);

}

}

可用如下两种形式调用:

test(5,"aaa","bbb");

test(6,new String[] {"aa","bb"});

用数组形参:

public static void test(int a,String[] books) {

for(String tmp:books) {

System.out.println(tmp);

}

}

只能用如下方法来调用:

test(6,new String[] {"aa","bb"});

注意:长度可变的形参只能处于形参列表的最后,且只能有一个长度可变形参

递归方法:一个方法的方法体实现中再次调用了方法本身

递归要向已知方向递归

方法重载:

同一个类中两个或两个以上方法的方法名相同,形参列表不同,则被称为方法重载。(两同一不同)

5.4 隐藏和封装

对类和对象实现良好封装,可以实现以下目的:

隐藏类的实现细节

在方法中加入控制逻辑,限制对成员变量的不合理访问

可进行数据检查,从而有利于保证对象信息的完整性

便于修改,提高代码的可维护性

封装就是把对象的成员变量和实现细节隐藏起来,把控制这些成员变量和实现细节的方法暴露出来进行安全的访问和操作

访问控制符:

fd635468c76f

访问控制符

从图中也可以看出:

对于类中的成员变量、方法或构造器来说:

math?formula=%5Ctriangleright private修饰的只能在当前类的内部使用,适合修饰类内成员变量;

math?formula=%5Ctriangleright 不使用任何访问控制符修饰的可以在当前类和包中被访问,拥有default包访问权限;

math?formula=%5Ctriangleright 使用protected修饰的表示其可以被同一包中的其它类访问,也可以被不同包中的子类访问

math?formula=%5Ctriangleright 使用public修饰的表示其可以被所有类访问。

对于外部类来说:

只能有public和默认(同一个包中的其它类),因为没有所在类的内部和所在类的子类两个范围

在使用javac命令来编译Java文件时,要使用-d选项,这样编译器会根据源文件中所写的包名和类名共同生成相应的文件结构,例如,如果在Main.java文件中写了package test;,用javac -d . Main.java,会先生成对应的包文件夹test,再在test文件夹中生成对应的Main.class文件;反之,如果不使用-d .选项,会忽略源文件中的包名,也不会按照包名所在的路径创建class文件,而是会直接在当前文件夹下创建Main.class文件;如果将Main.java文件直接放在test文件夹中,写成javac test/Main.java也可以在test文件夹中生成Main.class文件。

在使用 java命令运行Main.class文件时,如果运行的是java test.Main,则会正确地找到对应的Main.class文件,如果进入test文件夹后运行java Main,则会报错,找不到Main文件,这是因为虚拟机在装载命令行中所写的test.Main类时,会依次搜索CLASSPATH所指定的系列路径,查找这些路径下是否包含test路径,并在test路径下查找是否包含Main.class文件,即按命令所写的与包层次对应的目录结构去查找class文件。

并且,位于同一个包中的类不必位于相同的目录下,只要让CLASSPATH环境变量里包含这两个路径即可,虚拟机会自动搜索CLASSPATH下的路径,把它们当成同一个包下的类来处理。

项目中建议的.java和.class文件存放结构:

fd635468c76f

Java的包机制需要两方面的保证:

① 源文件里使用package语句指定包名

② class文件必须放在对应的路径下

import语句中的(*)只能代表类,表示导入包下的所有类

Java默认为所有源文件导入java.lang包下的所有类,包括String类,System类

import语句还可以导入类中的单个或所有静态成员变量或方法:import static packagename..classname.staticfieldname或import static packagename..classname.*

import语句和import static语句都是用于减少程序中代码编写量的。

5.5 深入构造器

在一个构造器中调用另一个构造器,用this(形参1,形参2...);来调用,且该语句必须作为构造器执行器的第一条语句

5.6 类的继承

Java的子类不能获得父类的构造器

Java类只能有一个直接父类

重写父类的方法要遵循“两同两小一大”规则:

方法名、形参列表相同

子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等

子类比父类的访问权限更大或相等

方法重载和方法重写的区别?

前者发生在同一个类的多个同名方法之间,后者发生在子类和父类的同名方法之间

math?formula=%5Cspadesuit 使用super调用父类构造器和使用this调用同一个方法中的构造器都需要放在当前构造器的第一行

执行子类构造器时,总会先执行父类构造器一次

5.7 多态

Java引用变量的两个类型:编译时类型和运行时类型,前者是声明变量时使用的类型,后者是实际赋给该变量的对象的类型

多态的定义:相同类型的变量,调用同一个方法时呈现出多种不同的行为特征

对象的实例变量不具备多态性,只有实例方法具有多态性。所以引用变量在转换成子类变量时,需要强制类型转换

在强制类型转换之前用instanceof判断某个引用变量(实例)是否可以转换到对应的类型(是否是后一个类的实例),如下:

if (引用类型A的变量 instanceof 引用类型A,或其父类型或一个接口) {

//相应的操作

}

即前面的变量类型对应的父类和接口都可以作为后面被转换的类型,用instanceof判断后可以让程序更健壮

使用时要注意在编译时,前面的变量的编译类型与后面的类型具有相同类型或父子继承关系时不会引起编译错误

向上转型:把子类对象赋给父类引用变量

5.8 继承与组合

继承:‘

派生子类的条件:子类需要额外增加属性和独有的行为方式

继承表达的是一种“is a”的关系,组合表达的是一种“has a”的关系

5.9 初始化块

初始化块也可以对Java对象进行初始化操作,初始化块只在创建对象时隐式执行,且在执行构造器之前执行,执行时实例变量语句也会执行,如int a=9;也会在创建对象时执行,且也在执行构造器之前执行。创建对象时父类中的初始化块也会和构造器一样被执行。

适用于初始化处理代码对所有对象都相同,且无须接收任何参数的情况

静态初始化块:(类初始化块)

初始化块的修饰符只能是static

系统在类初始化阶段执行静态初始化块

所有的静态初始化块,包括父类的和子类的,先于所有的普通初始化块和构造器执行,且只执行一次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java疯狂讲义 笔记_《疯狂Java讲义》阅读笔记1 的相关文章

  • Laya 实操十七:物理引擎

    物理引擎 export default class test extends Laya Script constructor super Laya Scene3D load res LayaScene SampleScene Convent
  • Python清洗数据具体操作

    数据清洗是指在处理数据之前对数据进行预处理的过程 这个过程通常包括检查数据的完整性 清除数据中的缺失值 异常值和重复值 以及对数据进行格式转换和数据转换等 在 Python 中 可以使用 pandas 库来方便地进行数据清洗 下面是一些常见
  • Android 禁止RecycleView的滑动

    1 问题 使用RecycleView 时 如果数据量很少只有几个 需求不需要它上下左右滑动 在xml配置中加上Android scrollbars none 这只是去掉了滑动bar 但是RecycleView 上下还是能滑动 且有阴影 2
  • 【message:发生错误 Error: D:\微信小程序\second-demo\package.json 对应的 node_modules 不存在】

    微信小程序安装vant weapp报 node module不存在 提示 这里简述项目相关背景 想使用vant weapp写小程序 在安装的时候踩了一些坑 记录一下 1 安装 vant weapp 提示 这里一个一个来描述遇到的问题 我是根
  • 网络驱动程序snull

    由于下次开会要做报告 所以就先把字符设备驱动程序那块搁浅了 先来复习下网络驱动这块 虽然以前看过 学习过网络驱动的相关内容 但是当再次学习这块的时候 仍然有新的收获 或许是时间长不看了 有些东西的印象浅了 或者应了那句话 温故而知新 ok
  • 多线程能有事务吗?

    需求 多线程插入 保证原子性 要么都成功 要么都失败 其中一个线程报错 所有线程回滚 为什么做不了 首先事务的四大特性 ACID 特性都知道吧 面试中张口就来 原子性 Atomicity 一个事务要么全部提交成功 要么全部失败回滚 不能只执
  • SpringFramework核心技术五:面向切面编程(AOP)和代理机制

    AOP与代理 Spring AOP使用JDK动态代理或CGLIB为给定目标对象创建代理 只要有选择 JDK动态代理就是首选 一 代理机制 如果要代理的目标对象实现至少一个接口 则将使用JDK动态代理 目标类型实现的所有接口都将被代理 如果目
  • socket异步编程--libevent的使用

    http www cnblogs com cnspace archive 2011 07 19 2110891 html 这篇文章介绍下libevent在socket异步编程中的应用 在一些对性能要求较高的网络应用程序中 为了防止程序阻塞在
  • Spring Boot集成RocketMq(一看就会)

    目录 1 创建topic 2 新建Spring boot项目 3 导入依赖 4 配置yml文件 5 新建Controller 生产服务 6 新建消费者 7 配置类 定义topic 8 添加消息以及 消费者查看 8 1 调用接口 往Mq中添加
  • 岛屿数量(Java)

    分析 把1当成陆地 0当成海 简单来说只要上下左右如果是1的话就可以看成一个陆地 从示例中也可以很清楚的看懂 思路 用一个和grid大小一样的整型二维数组arr来代表岛屿的生成过程 遍历grid 如果遇到grid i j 1 arr i j
  • 软件生命周期与技术人的职业周期

    话题有点大 但还是忍住想说两句 也算把自己曾经的困惑落在纸上 做个记录 什么是软件的生命周期的 相信你能比我还熟练的罗列出来 从初步规划 到需求分析 再到系统设计 接着系统实现 往下系统测试 跟着发布部署 最后运行维护 中途免不了打些小补丁
  • UART通信原理

    UART 通信格式 串口全称叫做串行接口 通常也叫做 COM 接口 串行接口指的是数据一个一个的顺序传输 通信线路简单 使用两条线即可实现双向通信 一条用于发送 一条用于接收 串口通信距离远 但是速度相对会低 串口是一种很常用的工业接口 I
  • python国内镜像源

    让python pip使用国内镜像 国内源 清华 https pypi tuna tsinghua edu cn simple 阿里云 http mirrors aliyun com pypi simple 中国科技大学 https pyp
  • 有关HC-05蓝牙模块的学习记录

    文章目录 HC 05学习笔记 一 HC 05的基本硬件介绍 二 工作原理 三 使用方法 一 硬件连接 二 软件控制 1 第一个片段 2 第二个片段 四 具体应用 一 信息的传送 二 手机操纵单片机 五 注意事项 一 AT状态 1 第一种方法
  • mysql存储过程之循环(WHILE,REPEAT和LOOP)

    MySQL提供循环语句 允许我们根据条件重复执行一个SQL代码块其中有三个循环语句 WHILE REPEAT和LOOP 我们接下来分别看下 首先是WHILE语句来看下语法 WHILE expression DO statements END
  • 在 C++ STL 中复制的不同方法

    文章目录 1 C STL 中复制的不同方法及实例解析 传送门 gt gt AutoSAR实战系列300讲 糖果Autosar 总目录 1 C STL 中复制的不同方法及实例解析 C STL 中存在各种不同的 copy 它们允许以不同的方式执
  • idea设置控制台为单独的窗口

    如图 点击控制台右上角的齿轮 设置 按钮 然后点击windowed mode就可以分离出来了
  • 推荐一组用过好几年的非常稳定的dns

    通常宽带或路由里 都是未设置dns 自动获取的是本地运营商推荐的dns 那些dns非常非常的不稳定 经常打不开网页或有些图片不显示 甚至更可恶的还有广告劫持 下面推荐一组用过好几年的dns 比较稳定 分享给大家 223 5 5 5 4 2
  • you need to install ‘unbuffer‘ (from package expect or expect-dev)

    在下载完RK3399 Linux SDK后的第一次编译时 报以下错误 you need to install unbuffer from package expect or expect dev log saved on home user

随机推荐

  • Java循环查询数据库优化

    1 static 和 final 的用法 static 的作用从三个方面来谈 分别是静态变量 静态方法 静态类 静态变量 声明为 static 的静态变量实质上就是全局变量 当声明一个对象时 并不产生static 变量的拷贝 而是该类所有实
  • 使用git fetch和git merge手动解决一次pull request冲突

    问题提出 github上的一次 pull request 出现了 conflicts 需要解决合并冲突 冲突的内容主要是新增功能的代码和修改的注释 问题思考 由于之前没有更新分支 同时又提交了分支中的代码 而git不能在不丢失提交的情况下对
  • 自动驾驶和自然语言如何结合?NuPrompt来了!

    点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 gt gt 点击进入 自动驾驶之心 大模型 技术交流群 自动驾驶语言提示 原标题 Language Prompt for Autonomous Driving 论文链接
  • VMware Workstation17下载安装、环境搭建、网络配置最小化安装操作步骤

    一 VMware Workstation17下载安装 1 官网下载 官网网址 https www vmware com cn products workstation pro html 安装Workstation 17 Pro for Wi
  • openssl+http实现https

    openssl详解及实现https openssl详解及实现https OpenSSL 是一个安全套接字层密码库 囊括主要的密码算法 常用的密钥和证书封装管理功能及SSL协议 并提供丰富的应用程序供测试或其它目的使用 秘钥算法和协议 对称加
  • 数据库基础--多表查询

    在数据库查询过程中无法避免的需要从两张表中同时查询数据 此时我们需要用到各式各样的多表查询方式 接下来 简单介绍一下数据库基础的多表查询方式 以便于让大家更好的了解多表查询的过程 多表查询 项目开发中 在进行数据库表结构设计时 会根据业务需
  • 【五一创作】iSH修改hostname(主机名)【美化】【短篇技术类文章】

    最后一次更新 2023 4 30 请勿利用文章内的相关技术从事非法测试 由于传播 利用此文所提供的信息而造成的任何直接或者间接的后果及损失 均由使用者本人负责 作者不为此承担任何责任 文章目录 1 前言 简单 的介绍 2 踩坑 摸索 3 解
  • Arduin调节舵机的思路

    一 先判断舵机能够调节的最大值和最小值 二 让舵机转动能够平滑 三 用二维数组和for循环实现码垛机器人的效果 四 机械臂在指令模式的基础上增加手柄模式 手柄模式可以 通过键盘上字符按键操控舵机机械臂 五 通过蓝牙模块进行蓝牙无线设备连接
  • Python读取mat文件-转csv文件

    这篇教程主要介绍如何使用Python读取mat文件并且转csv文件 一 读取mat文件和转CSV 首先将MATLAB生成的mat文件存储在一个目录下 import pandas as pd import scipy from scipy i
  • 王者荣耀服务器维护七月,《王者荣耀》7.28不停服维护更新攻略教程 7月28日更新公告...

    在王者荣耀的游戏中 7月28日进行了不停服的更新维护 此次更新除了常规的修复以外 还带来了蔷薇珍宝阁活动 接下来就让小编带大家一起来看看详细的内容吧 王者荣耀2021年7月28日全服不停机更新公告 更新时间 7月28日8 30 9 30 更
  • RL 暂态电路与磁能

    前言 RL 电路是一个电阻 R 和 自感线圈 L 组成的 RL 电路 在连接或者接通电源U 的时候 由于自感电动势的作用 电路中的电流不会瞬间改变 而是一个连续的渐变的过程 通常这个时间很短暂 所以被称为暂态过程 正文 看看书上是怎么写的
  • 【iOS】—— APP启动流程

    文章目录 APP启动流程 冷启动和热启动 APP完整的启动流程 1 main函数执行前 系统会做的事 2 main函数执行后 3 首屏渲染完成后 Mach O APP启动流程 冷启动和热启动 冷启动 启动时 App的进程不在系统里 需要开启
  • CSS设置字间距、行间距、首行缩进

    CSS设置字间距 行间距 首行缩进 ps 本人亲测 阿里云2核4G5M的服务器性价比很高 新用户一块多一天 老用户三块多一天 最高可以买三年 感兴趣的可以戳一下 阿里云折扣服务器 字间距 1 text indent设置抬头距离css缩进 即
  • 大数据时代,区块链在数据安全领域有什么样的表现?

    大数据时代之下 一如我们无法抗拒科技进步带来的便捷及欢愉 我们同样也无法避免在享受这一切的过程中留下自己的 数字足迹 正因如此 数据如今已然被纳入企业的战略资源 开始指导决策 成为其提高行业核心竞争力的关键一环 当今的数字化时代 数据可谓是
  • ubuntu18.04安装GPU PyTorch

    转载自这篇文章 安装GPU版本的PyTorch 这里选择用pip进行安装 首先需要安装pip 执行命令sudo apt intall python pip3 该步骤可以跳过 现在建议配置pip虚拟环境 为此我们需要配置virtualenv
  • 一、用 ChatGPT 充当面试官

    目录 一 如何让 ChatGPT 充当面试官 1 1正确使用 1 2 反例 二 模拟面试 2 1 ChatGPT 让我介绍自己 2 2 ChatGPT 提问技术问题 2 2 1 技术问题 2 2 2 下一个问题
  • wifi名称可以有空格吗_但是名称中不能有空格

    Excel表格的每一个单元格都有一个默认的名称 其命名规则是列标加横标 例如A1表示第一列 第一行的单元格 如果要将某单元格重新命名 可以运用以下两种方法 工具 原料 Microsoft Office WPS Office 方法一 1 打开
  • [305]mysql1062错误:Duplicate entry '...' for key 'PRIMARY

    问题解释 Duplicate entry for key PRIMARY 即插入数据时 要插入数据的主键数据 已经存在 不能再重复添加了 例 Duplicate entry 0 for key PRIMARY是指主键为0的数据已经存在 不能
  • Linux常用命令大全(非常全!!!)

    前言 本文特点 授之以渔 了解命令学习方法 用途 不再死记硬背 拒绝漫无目的 准确无误 所有命令执行通过 环境为centos7 拒绝复制粘贴 实用性高 命令多为实际工作中用到的 实例讲解 拒绝纯理论 条理清晰 分类归纳 快速找到想要的命令
  • java疯狂讲义 笔记_《疯狂Java讲义》阅读笔记1

    2 2 UML统一建模语言 从粗粒度到细粒度 最常用的UML图 部署图 从物理处理器和设备的角度画图 其中一个设备中可能包括零个或若干个组件 用例图 表示的是一系列功能 一个用例表示系统的一个功能模块 如登录模块 组件图 多个类共同组成的j