Attach a long running process to another terminal

Linux终端三层结构解析:Terminal、Shell与Command的本质区别 Linux终端并非单一黑窗口,而是由终端模拟器(Terminal)、命令解释器(Shell)和可执行命令(Command)构成的三层协作体系。Terminal负责输入输出渲染,Shell承担语法解析与环境调度,Command才是实际执行任务的程序实体。理解这三层职责边界,能从根本上解释为何‘command not found’、‘Permission denied’或‘initramfs’卡顿等故障频发——问题往往不在命令本身,而在某一层的配置错位或兼容缺失。尤其在国产Linux发行版、WSL及嵌入式安卓环 阅读详情

步骤:

1.启动一个process, 如top,按CTRL-Z 将target process 放入background task

2. resume the process in background: bg 

3. disown top

4. open an session

5. reptyr pidoftarget




参考:

https://blog.nelhage.com/2011/01/reptyr-attach-a-running-process-to-a-new-terminal/

Claude Code Agent View:终端级AI任务调度工作流 AI编程代理(Agent)是现代开发者协同大模型执行自动化任务的核心范式,其本质是将代码生成、测试、审查等操作封装为可调度、可监控、可中断的轻量服务。Claude Code 通过 Agent view 实现了基于终端的全屏任务仪表盘,依托 supervisor 进程守护、Git worktree 文件隔离与 Haiku 模型实时摘要三大技术支柱,兼顾安全性、确定性与低侵入性。相比 GUI 或 Web 方案,它天然契合 Shell 自动化生态,支持 CI/CD 集成、权限分级与模型按需切换,适用于 PR 审查 阅读详情

相关推荐

Frida逆向工程智能开发环境搭建:VSCode集成与代码补全配置

逆向工程是分析软件内部机制、进行安全审计与漏洞挖掘的核心技术,其原理在于通过静态与动态分析相结合的方式,深入理解程序行为。动态分析技术允许在程序运行时实时监控与修改其执行流程,极大提升了分析效率与深度,在移动安全、协议分析等领域具有重要技术价值。Frida作为当前主流的动态插桩框架,凭借其强大的注入与Hook能力,已成为逆向工程师和安全研究员的必备工具。然而,其开发体验常因Python控制端与JavaScript脚本端的割裂而受到影响,导致编码效率低下。本文聚焦于解决这一痛点,通过配置VSCode集成开发环

weixin_34221773的博客 322

命令行登录mysql报Segmentation fault故障解决

对mysql8.0.21源码进行make,在链接时遇到错误,少了ncurses库,后来就装了该库,再次make成功。于是将mysqld启动,再用mysql -u root -p连接,输好密码回车后mysql客户端发生Segmentation fault。

linhao19841211_2的专栏 4036

Linux进程后台运行终极指南:从nohup到systemd服务化部署

在Linux系统管理与运维中,进程管理与后台运行是核心基础技能。其原理涉及进程组、会话与控制终端的关联机制,当终端关闭时,系统会向关联进程发送SIGHUP信号导致其终止。掌握让程序脱离终端控制的技术,对于实现服务持续运行、自动化任务执行具有重要工程价值,广泛应用于服务器运维、数据分析、Web服务部署等场景。本文将深入解析nohup、screen/tmux会话管理以及systemd服务化等方案,其中screen/tmux作为终端多路复用器,能实现会话持久化与重连,而systemd服务则是生产环境部署的标准化方

weixin_30740581的博客 356

Debugging a Running Process

原文链接:http://msdn.microsoft.com/en-us/library/windows/desktop/ms679301%28v=vs.85%29.aspx 本文链接: To debug a process that is already running, the debugger should use DebugActiveProcess with the process

当蝴蝶在南半球拍了两下翅膀,它就会稍微飞高一些。 1430

macOS Node.js开发环境搭建:Homebrew、Xcode命令行工具与终端配置全解析

Node.js 是基于 V8 引擎的 JavaScript 运行时,其在 macOS 上的稳定运行依赖底层系统工具链的协同。原理上,Node.js 编译原生模块需调用 clang++、libtool 及 Darwin SDK 头文件(如 netinet6/in6.h),而这些由 Xcode 命令行工具提供;Homebrew 则通过沙盒化路径(/opt/homebrew)规避 SIP 与 Notarization 权限限制,替代不安全的 .pkg 安装方式。技术价值在于构建可复现、免 sudo、多版本共存的工

weixin_33843947的博客 548

VS Code终端运行Claude触发多窗口问题根因与修复

CLI工具在Windows终端中的进程启动行为,本质上是控制台应用与GUI环境的边界交互问题。其原理涉及PowerShell命令解析链、Node.js子进程创建机制,以及Windows对CREATE_NO_WINDOW标志的底层响应逻辑。技术价值在于避免GUI上下文误继承导致的资源滥用和体验断裂;典型应用场景包括AI CLI工具(如Claude)、Electron封装型命令行程序,在VS Code集成终端中执行时引发的异常窗口弹出、卡死或雪崩式实例启动。本文聚焦于Windows平台下VS Code + Po

diaogan4202的博客 484

Finding a running process (pid) by name in Linux

From: http://www.insivia.com/Performance/Ideas/finding-a-running-process-pid-by-name-in-linuxWritten by Jordon Mears on November 13, 2006 I have always wondered how you find and kill frozen applicat

Newweapon's Trace 1069

ROS Noetic下Eclipse 2020-09 C++调试实战指南

C++是ROS机器人开发的核心语言,而高效调试依赖于IDE对构建系统、符号解析与多线程GDB的深度支持。Eclipse CDT凭借成熟的外部构建器机制和稳定DSF-GDB集成,在ROS 1(尤其是Noetic)这类基于catkin+GCC 9.3+CMake 3.16的工程中展现出独特优势。相比VS Code等轻量工具,它原生支持多进程/多线程联合调试、信号级断点控制及devel空间头文件精准索引,显著提升callback函数、pluginlib插件及TF时间戳等典型场景的诊断效率。本文聚焦Eclipse

weixin_34033624的博客 478

linux Ubuntu终端快捷键

终端操作快捷键: Tab 自动补全 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 Ctrl+k 删除此处至末尾的所有内容 Ctrl+u 删除此处至开始的所有内容 Ctrl+d 删除当前字符 Ctrl+h 删除当前字符前一个字符 Ctrl+w 删除此处到左边的单词 Ctrl+y 粘贴由 Ctrl+u , Ctrl+d , Ctrl+w 删除的单词 Ctrl+l 相当于clear,...

a1026472254的博客 703

Linux终端作业控制与监控:从前后台管理到会话记录实战

在Linux/Unix系统中,进程管理与终端I/O控制是系统运维和开发的基础能力。其核心原理涉及进程组、会话机制以及信号处理,例如SIGTTOU信号用于管理后台作业的终端输出。掌握这些原理的技术价值在于提升对命令行环境的深度掌控力,实现多任务并行与状态持久化。典型的应用场景包括长时间编译任务管理、远程故障排查过程记录以及自动化部署中的交互处理。通过结合作业控制命令、tmux/screen会话管理以及script/expect等工具,可以构建一个可暂停、可恢复、可记录的工作空间,这正是实现终端键屏监控和操作回

weixin_34332905的博客 378

# 深入拆解 Claude Code (二):从敲下 `claude` 到 REPL 启动

优化策略实现方式效果快速路径分发优先级 if-else 链--version零依赖加载动态导入全部按需加载,最小化启动包Memoized 初始化包装init()确保只执行一次API 预连接省去首次请求的连接时间异步初始化不 await 的异步函数后台并行,不阻塞主流程条件性加载Feature flag + 环境检查个人用户跳过企业功能遥测延迟信任对话后才初始化尊重用户隐私。

u013367305的博客 457

Ubuntu:Terminal终端命令

终端命令的基本形式 command [-options ] parameter1 parameter2 说明:命令中第一个输入的部分绝对是“命令(command)” 或“可执行文件”;按下[Enter]键则表示开始执行这一条命令;如果命令行太长时可以使用反斜杠(\)来转义[Enter] 符号,使命令行连续到下一行;如果有几个要一起执行的命令,各个命令之间可以用分号(;)分开,写好后按[Enter]来一起执行(例如:ls -a;ls -al)。注意:反斜杠后立刻接特殊字符,才能转义。 基本概念 Ubun

tyyua_21的专栏 1762

告别代码丢失!用Git+Gitee管理你的Keil5单片机项目(保姆级图文教程)

本文详细介绍了如何利用Git和Gitee高效管理Keil5单片机项目,解决嵌入式开发中的代码丢失问题。通过精准配置.gitignore文件、设计适合团队的协作流程以及搭建安全备份体系,开发者可以轻松实现版本控制,提升工作效率。特别针对Keil工程的特殊文件类型,提供了实用的过滤规则和操作技巧。

weixin_33686714的博客 470

VS Code 集成 Claude API 的本地可调试工作流搭建指南

大型语言模型(LLM)在代码补全场景中依赖稳定、低延迟的 API 调用链路;其核心原理是通过 HTTP 客户端(如 Anthropic SDK)向远程服务发送结构化消息请求,并受上下文窗口、温度参数与环境变量注入机制共同约束;技术价值在于兼顾开发效率与数据隐私,避免将源码上传至不可信插件;典型应用场景包括 VS Code 本地 AI 编程辅助、企业级代码生成合规落地及 Node.js 工程化调试教学;本文聚焦于构建一个可验证、可断点、可扩展的 Claude API 代理层,覆盖 Node.js 运行时适配、

weixin_34306593的博客 473

自动控制原理之控制系统的数学模型(类比神经网络学习数学模型)

控制系统的数学模型背景建模方法常用的数学模型时域数学模型的建立建立微分方程的步骤复数域模型的建立传递函数的性质系统的典型环节及传递函数比例环节惯性环节积分环节微分环节理想微分环节一阶微分环节二阶微分环节振荡环节延时环节(时滞环节) 背景 数学模型就像是真实世界的写照,它就像一个虚拟的世界,我们可以通过建模的方式了解这个真实世界的运作规律。 这一点很像强化学习,强化学习需要一个供智能体探索、学习的环境,于是,我们通常会事先建立一个虚拟的仿真环境。举个例子,对于人类来说,可能需要经过不断地尝试,甚至是生命的代价

zbp_12138的博客 6577

Qt加载百度地图详细流程(附带报错解决方法)

一篇文章看懂Qt如何加载出百度地图......

qq_60018273的博客 1604

Unity Android log view(Android Debug Bridge)

Android Debug Bridge

蛰伏--当你不够强大时,就不要放弃努力 4156

Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一)

FPGA GTH Transceiver

houzi6320的博客 1万+

Windows Node.js开发环境搭建:nvm-windows分层构建指南

Node.js作为现代前端与全栈开发的核心运行时,其跨平台兼容性在Windows上面临独特挑战。由于Windows缺乏原生Unix工具链支持,事件驱动模型与UAC权限机制、NTFS文件系统、PowerShell执行策略等深度耦合,导致单纯安装Node.js易引发npm权限错误、版本冲突、WSL协同失效等问题。nvm-windows通过用户级路径隔离、免注册表部署和PATH动态切换,提供了符合Windows安全模型的多版本管理方案。它不仅解决Node版本共存问题,更支撑Vue/React/Next.js等框架

weixin_30292843的博客 408

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(下篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1621

BES 平台 SDK之 美格信Dongle 连接

最近项目到了试产阶段,需要用到美格信的Dongel 来测试ANC 相关功能。在此简单介绍下如何连接Dongel 的操作步骤。

谢文浩博客 924

工具Cursor(一)介绍&简单使用&特色

下载安装后使用google账户登录。使用代码库索引后:✅ AI 回答更准确,因为它能基于当前项目的索引库回答问题✅ 文件搜索更快✅ AI 能更好地理解跨文件的关系✅ 重构建议更精准实际效果对比使用代码库索引和不使用代码库索引的主要区别:使用代码库索引时,AI 先搜索了项目中的文件,然后根据文件内容回答AI 能准确指出项目中实现的具体功能和代码不使用代码库索引时,AI 只能从一般角度回答,没有针对项目的具体情况什么是 AI 规则?AI 规则是 Cursor 的一个功能。

w_t_y_y的博客 2699

uniapp - 实现集成调用zebra斑马打印机+打印标签+打印二维码详细实例代码,通过蓝牙连接打印机打印与通过打印机IP和端口两种方式适配斑马打印机(全平台兼容H5、微信小程序、苹果安卓App)

uniapp适配斑马打印机 实现标签打印,uniapp适配斑马打印机实现标签打印,uniapp调用zebra斑马打印机打印标签,uniApp连接传统蓝牙的斑马打印机打印,实现标签打印功能uniapp 蓝牙连接斑马打印机发送zpl指令打印,适配斑马(Zebra)牌打印机,小程序调用蓝牙打印机完整代码,uniapp 打印机wifi链接 蓝牙链接,uniapp斑马打印机,实现二维码标签展示以及打印,APP端连接打印机打印小票和标签,uniapp使用斑马打印中文不出来,打印机连接不上,打印没反应怎么办,打印报错,斑

🏆 前端领域优质创作者 1万+

Linux底层逻辑:从终端到FHS的系统协作契约

Linux不是操作系统软件,而是一套人机协作的工程契约体系。其核心在于终端(TTY)作为字节流信道、Shell作为程序调度中枢、FHS文件系统层级标准作为灾难恢复协议、CLI命令行接口作为安全与效率的刚性载体。理解这些基础概念,才能穿透`ls`、`chmod`、`ps aux`等命令表象,掌握权限模型的三维控制、进程生命周期管理、管道数据流机制等关键技术原理。这种底层思维直接支撑服务器运维、容器编排、日志排查、安全审计等真实工程场景,也是DevOps工程师和SRE构建可复现、可审计、可恢复系统的认知基石。

weixin_30530939的博客 350

YOLOv8剪枝 稀疏训练+slim剪枝测试精度仅掉1.6个点,速度提高10.3fps!

摘要 本文介绍了YOLOv8剪枝方法Slim(Network Slimming),通过L1正则化作用于BN层的缩放因子(γ),自动识别并剪除冗余通道,实现模型轻量化。核心步骤包括:稀疏训练(引入L1正则化)、通道剪枝(按γ阈值裁剪)、微调恢复精度。实验表明,该方法能有效压缩模型大小、减少计算量,且支持通过调整speed_up等超参数控制剪枝强度。移植代码需修改C2F模块以适配剪枝,并配置稀疏训练参数(如reg、sl_epochs)。最终剪枝模型需移除优化器以减小体积,但不支持多卡训练。

FJN110的博客 859

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【保姆级喂饭教程】WinGet介绍、安装、命令及UniGetUI介绍、安装、使用教程

之前看文章看到过使用winget安装软件,一直没有仔细了解过,前段时间看到有教程说可以用winget无魔法安装Claude code,不清楚怎么实现的,正好研究一下。WinGet文档官网WinGet 全称Windows Package Manager(Windows 包管理器),是微软官方推出的 Windows 系统原生命令行软件管理工具。你可以把它理解成「命令行版的微软应用商店。

AlienProgrammer的博客 649

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: Play with lkvm
下一篇: 一站式学习wireshark
Xalloc
博客等级 码龄16年 25粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值