Java基础补充-2
集合
ArrayList
适合元素个数不确定,且要增删查改的场景
ArrayList < E > : 约束类型
ArrayList常用方法
20230309-1
Object类常用方法
toString() 默认返回的是地址。可以重写输出功能
equals() 默认比较地址。可以重写比较规则
例如:
1234567891011121314151617181920public class Student { String name; int age; @Override public String toString() { return "Student name is " + name + ", age is " + age; } @Override public boolean equals(Object obj) { // 判断o是不是学生类型 if(obj instanceof...
生产者消费者问题-管程法
管程法-生产者消费者问题
可参见:Java多线程笔记-2
| Whiskey&Cola (whiskeycola.cn)
在此为二次解释
管程法
先得有一个缓冲区,这个缓冲区容量有限
缓冲区定义存入,取出功能函数
分别定义生产者、消费者类
主程序,创建缓冲区,缓冲区当作参数,传入生产者消费者类的定义,创建线程
创建产品
12345678class Product{ final String name = "laptop"; int id; public Product(int id) { this.id = id; }}
创建缓冲区
12345678910111213141516171819202122232425262728293031323334353637383940414243444546class Buffer{ final int bufferSize = 10; // 创建一个容器,此容器可放10个产品 ...
Java字符串
JAVA字符串
String是不可变字符串的原因
String变量每次的修改其实都是产生并指向了新的字符串对象。
原来的字符串没有变,所以称为不可变字符。
创建方式
方式一:
1String name = "allen";
方式二:通过String类的构造器创建对象。
public String() 创建空白字符串,几乎不用
public String(String original)
根据传入的字符串,创建字符对象, 几乎不用
public String(char[] chs) 根据字符数组创建
public String(byte[] chs) 根据字节数组创建
区别
以 ”“
方式给出的字符串对象,在字符串常量池中存储,相同的内容只存储一份。
通过new构造的对象,每new一次都会产生一个新的对象,放在堆内存中。
String 常用 API
字符串比较
推荐使用 “equals”...
《C++ Primer 第五版》学习笔记
《C++ Primer 第五版》学习笔记
以下为 Chapter1、Chapter2
C++是如何工作的
源文件-> 编译器-> 链接-> 可执行程序
每一个源文件在编译后都会生成.obj文件
,通过链接就可以将所有obj文件生成一个可执行文件。
例如#include <iostream>,#符号后面跟的都是预处理语句。
预处理语句是在实际编译之前处理。
#include
实际上就是寻找一个文件,将此文件内容拷贝到现在文件中,这就是
头文件
项目中的每个cpp文件都会被编译,但头文件不会被编译。编译器会给每个cpp文件生成对应的obj文件,链接器将他们合并成一个exe文件。
C++编译器是如何工作的
预处理阶段编译器会遍历所有的预处理语句并对其处理,常用的预处理语句有include
if ifdef pragma。
.obj文件是二进制的机器码,如果我们想查看对应的汇编代码,可以在VS的项目属性里,C/C++
--> Output File --> Assembler Output
-->...
Java常用类
Java常用类
内部类分类
成员内部类
静态内部类
局部内部类
匿名内部类
内部类概念
概念:在一个类的内部再定义一个完整的类。
特点:
编译之后可生成独立的字节码
内部类可以直接访问外部类的私有成员,而不破坏封装。
可以为外部类提供必要内部功能组件
12345678910// 身体public class Body { private String name; // 头部 class Header{ public void show(){ System.out.println(name); // 可以访问外部类的私有成员 } }}
成员内部类
在类的内部定义,与实例变量、实例方法同级别的类。
外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象。
Outer outer = new Outer();
Outer.Inner inner = outer.new...
Docker使用经验
Docker使用经验
官方教程:https://docker.easydoc.net
用法
先写Dockerfile
生成镜像,docker build -t {镜像名:version} {包含Dockerfile的路径}
运行docker,docker run -it {镜像名:version}
在之前docker基础上生成新的镜像,
docker commit {容器id} {新镜像名:version}
打包,docker save -o name.tar {镜像名:version}
读取镜像包,docker load --input {镜像名.tar}
常用指令
删除镜像,docker rmi -f {镜像名}
查看正在运行容器,docker ps
查看镜像,docker images
分配GPU,docker run -it --gpus all...
Git学习笔记
Git 学习笔记
援引Git...
QT打包技巧
QT编译打包技巧
1. QT编译
编译时不能有中文路径
2. QT打包
单独创建一个文件夹,将编译好的exe文件拷贝出来
用qt的命令行,cd到考出来的文件夹
使用windeployqt命令打包,即windeployqt 文件名.exe
JUC并发编程
1. 什么是JUC
java.util 工具包
java.util.concurrent.locks
java.util.concurrent
java.util.concurrent.atomic
业务:普通的线程 Thread
Runnable 没有返回值、效率相比 Callable 相对较低
2. 线程和进程
进程:一个程序,QQ.exe Music.exe 程序的集合
线程: 一个进程往往包含多个线程,至少包含一个
java 默认有几个线程? 2个 main 、 GC
Thread、 Runnable、 Callable
Java真的可以开线程吗?
不能,Java只能通过 native 调用底层C++
并发、并行
并发编程:并发、并行
并发(多个线程操作同一个资源)
单核:交替执行
并行(同时执行)
多核:多个线程可以同时执行
1234public static void main(String[] args) { // 获取cpu核数 ...
MySQL学习笔记-Part1
MySQL 学习笔记 Part1
SQL(Structed Query Language)
视频链接:https://www.bilibili.com/video/BV1Xb41177na?p=1
一、准备
1. 下载安装MySQL
MySQL Community
Downloads
在Accounts and Roles界面设置root用户的密码,Connect To Server
界面再次输入密码。
其余全部默认
2. 配置MySQL
点击主界面 + ,新建连接
分别设置连接名称,端口密码,并测试保存。
3. 创建一个数据库
下载链接下SQL Course...