Andriod开发
Android Studio
Google将JDK、Android SDK都集成了,Android官方网就可以下载最新的开发工具:下载 Android Studio
创建Android项目
New Project
-Phone and Tablet
-Empty Activity

Minimum SDK
:设置项目最低能兼容的Android版本
Google将JDK、Android SDK都集成了,Android官方网就可以下载最新的开发工具:下载 Android Studio
New Project
- Phone and Tablet
- Empty Activity
Minimum SDK
:设置项目最低能兼容的Android版本Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测分析),Anaconda致力于简化包管理和部署。Anaconda的包使用软件包管理系统Conda进行管理。
Anaconda3默认包含Python 3.7,但是用户可以创建虚拟环境来使用任意版本的Python包。
conda --version
conda config --show
conda update conda
conda update Anaconda
Conda允许创建相互隔离的虚拟环境(Virtual Environment),这些环境各自包含属于自己的文件、包以及他们的依存关系,并且不会相互干扰。
创建虚拟环境
conda create -n env_name python=3.8
不指定python版本时,自动创建基于最新python版本的虚拟环境。
创建虚拟环境时,安装必要的包
conda create -n env_name numpy matplotlib python=3.8
列举虚拟环境
conda env list
所显示的列表中,前面带星号*
的表示当前活动环境。
激活虚拟环境
conda activate env_name
退出虚拟环境
conda deactivate
,回到base
删除虚拟环境、虚拟环境中的包
conda remove --name env_name --all
conda remove --name env_name package_name
导出环境
conda env export --name myenv > myenv.yml
还原环境
conda env create -f myenv.yml
查询包的安装情况。
conda list
conda list pkgname*
查询当前Anaconda repository中是否有想要安装的包
conda search package_name
安装、更新、卸载包
conda install package_name
conda update package_name
conda uninstall package_name
清理缓存
conda clean -p
删除没有用的包 –packagesconda clean -t
删除tar打包 –tarballsconda clean -y -all
删除所有的安装包及cache(索引缓存、锁定文件、未使用过的包和tar包)由于conda的库不如pip的库丰富,有时候可能迫不得已要使用pip安装。只有在conda install搞不定时才使用pip intall。
参考:
设置 Docker的 apt
仓库
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
下载安装Docker的安装包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
查看docker版本,确认是否成功安装。
❯ docker -v
Docker version 27.1.1, build 6312585
参考Anaconda官网文档Docker — Anaconda documentation
# 拉取镜像
docker pull continuumio/miniconda3:24.5.0-0
# 启动容器
docker run -it --name=miniconda continuumio/miniconda3:24.5.0-0 bash
# 进入容器后,查看默认安装的Python版本
(base) root@8fead34bd870:/# python --version
Python 3.12.4
wsl2和windows11共用显卡驱动,因此我们只需安装cudatoolkit和cudnn。以后windows显卡驱动正常更新即可。
windows下nvidia-smi
命令查看显卡驱动,以及支持的 CUDA 的最高版本,CUDA Version
指的是可驱动的最高版本。
nvidia-smi
Fri Aug 9 23:04:30 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 531.79 Driver Version: 531.79 CUDA Version: 12.1 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3060 Ti WDDM | 00000000:01:00.0 On | N/A |
| 0% 49C P8 10W / 225W| 885MiB / 8192MiB | 3% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 3008 C+G C:\Program Files\Typora\Typora.exe N/A |
| 0 N/A N/A 3372 C+G ...ekyb3d8bbwe\PhoneExperienceHost.exe N/A |
| 0 N/A N/A 7852 C+G ...nt.CBS_cw5n1h2txyewy\SearchHost.exe N/A |
| 0 N/A N/A 9944 C+G ...CBS_cw5n1h2txyewy\TextInputHost.exe N/A |
| 0 N/A N/A 11300 C+G ...les\Microsoft OneDrive\OneDrive.exe N/A |
| 0 N/A N/A 11628 C+G ...t.LockApp_cw5n1h2txyewy\LockApp.exe N/A |
| 0 N/A N/A 11632 C+G ...5n1h2txyewy\ShellExperienceHost.exe N/A |
| 0 N/A N/A 14872 C+G C:\Windows\explorer.exe N/A |
| 0 N/A N/A 15800 C+G ...2txyewy\StartMenuExperienceHost.exe N/A |
| 0 N/A N/A 16008 C+G ...siveControlPanel\SystemSettings.exe N/A |
| 0 N/A N/A 16976 C+G ...64__v826wp6bftszj\TranslucentTB.exe N/A |
| 0 N/A N/A 20136 C+G ...42.0_x64__8wekyb3d8bbwe\GameBar.exe N/A |
| 0 N/A N/A 21440 C+G ...ram Files (x86)\Anycast\Anycast.exe N/A |
| 0 N/A N/A 21848 C+G ...crosoft\Edge\Application\msedge.exe N/A |
| 0 N/A N/A 22204 C+G ...tionsPlus\logioptionsplus_agent.exe N/A |
| 0 N/A N/A 27108 C+G ...voice\logioptionsplus_logivoice.exe N/A |
+---------------------------------------------------------------------------------------+
根据可驱动的最高版本直接去官网下载对应版本:https://developer.nvidia.com/cuda-toolkit-archive
执行官网提供的安装命令:
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda
conda create -n pytorch python=3.10
conda active pytorch
根据官网确定环境配置,得到相应的安装命令:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
基于 WSL2 和 Docker 的深度学习环境指北 - duanyll
pytorch/pytorch:2.4.0-cuda12.1-cudnn9-devel
若想要使用pycharm连接docker容器,容器端口号必须指定为22,因为SFTP默认使用22端口。
docker run -it –gpus all -p 8077:22 pytorch/pytorch:2.4.0-cuda12.1-cudnn9-devel
进入容器,用which python
查看,为/opt/conda/bin/python
,可知默认使用conda来管理环境和package。
sudo apt purge openssh-server # wsl2 自带的好像 sshd 不完整,先删除掉
apt update
apt -y upgrade
apt install -y vim openssh-server
service ssh start
service ssh status
设置root密码和配置文件
passwd root
vim /etc/ssh/sshd_config
添加如下内容
#启用公钥私钥配对认证方式
PubkeyAuthentication yes
#公钥文件路径(和上面生成的文件同)
AuthorizedKeysFile .ssh/authorized_keys
#root能使用ssh登录
PermitRootLogin yes
重启ssh
service ssh restart
【详细教程】pycharm使用docker容器开发_pycharm docker-CSDN博客
不知道为什么连不上,只能正常连接子系统和docker。
修复 WSL2 镜像网络模式下无法连接 Docker 的问题 - sulinehk blog - 专注于计算机科学与软件工程的技术博客
可能是添加了这个配置才好的。
直接运行项目中的jupyter notebook内容,会报错:
Running as root is not recommended. Use --allow-root to bypass.
在容器中执行:
jupyter server --generate-config
# 自动生成默认配置
Writing default config to: /root/.jupyter/jupyter_server_config.py
# 在如下文件中添加 c.ServerApp.allow_root = True
vim /root/.jupyter/jupyter_server_config.py
Matplotlib 是 Python 的绘图库。
conda install -y matplotlib
Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。
Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。
Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。
使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名plt:
import matplotlib.pyplot as plt
一些常用的 pyplot 函数:
plot()
:用于绘制线图和散点图scatter()
:用于绘制散点图bar()
:用于绘制垂直条形图和水平条形图hist()
:用于绘制直方图pie()
:用于绘制饼图imshow()
:用于绘制图像subplots()
:用于创建子图事务机制遵循ACID原则:
Atomicity
原子性:事务是一个原子操作,由一系列操作组成。事务的原子性确保所有操作要么完成,要么完全不起作用(完整性)。Consistency
一致性:事务执行前后,系统必须确保它所建模的业务处于一致的状态。例如转账,无论事务是否成功,转账者和收款人的总额应该不变。Isolation
隔离性:并发操作相同的数据时,各事务之间相互独立。(但难免会存在冲突)Durability
持久性:一旦事务完成,它对数据的改变是持久的,即使数据库发生故障也不影响持久性。只有保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障(A、I、D是手段,C是目的)。
JLI_Launch
函数以OPENJDK8源码GitHub - openjdk/jdk at jdk8-b120为例,虚拟机的启动入口在jdk/src/share/bin/java.c
的JLI_Launch
函数,整个流程分为:
JavaMain
方法发起HTTP请求调用,控制台报错:
org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:322) ~[spring-webmvc-6.1.10.jar:6.1.10]
任何接口,如果只包含一个抽象方法,它就是一个函数式接口。对于函数式接口,可以通过Lambda表达式来创建该接口的对象
Runnable就是一个函数式接口。
@Transactional
的事务注解。spring事务的依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
public class Test {
public void testTransaction() {
int a = 0;
int b = 1;
TransactionConsumer transactionConsumer = () -> {
insertDataA(a);
updateDataB(b);
};
transactionConsumer.doInTransaction();
}
private void updateDataB(int b) {
}
private void insertDataA(int a) {
}
}
@FunctionalInterface
public interface TransactionConsumer {
@Transactional
void doInTransaction();
}
Lombok 项目其实就是一个 java 库,它可以自动插入到编辑器和构建工具中,增强 java 的性能。以后你 只需要一些简单的注解,就可以再也不用在类中反复去写 getter、equals 等方法,让代码变得简介,不用过多地去关注相应的方法。属性修改时,也简化了维护这些属性所生成的 get、set 方法。
使用方式:
IDEA 下载 Lombok 插件
项目中导入 Lombok 的 jar 包
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>