swing207短任务

Java-Study 基础环境搭建。 阅读详情

文件复制

package my;

import java.io.File;

public class Test
{

	public static void main(String[] args)
	{
		// Win10下,不能在根目录下直接创建文件
		File srcFile = new File("/Users/ding/Desktop/11.zip");
		File dstFile = new File("/Users/ding/Desktop/2.zip");
		try
		{
			MyFileUtils.copyFile(srcFile, dstFile);
		} catch (Exception e)
		{
			e.printStackTrace();
		}

		System.out.println("完成");
	}

}
package my;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class MyFileUtils
{
	public static void copyFile(File srcFile, File dstFile) throws Exception
	{
		InputStream inputStream = null;
		OutputStream outputStream = null;
		try {
			inputStream = new FileInputStream(srcFile);
			outputStream = new FileOutputStream(dstFile);
			byte[] buf = new byte[8192]; // 每次最多读取8KB
			while(true)
			{
				int n = inputStream.read(buf); // 从源文件读取数据
				if(n <= 0) break; // 已经读完
				outputStream.write(buf,  0,  n); // 写入到目标文件
			}
		}
		finally {
			// 出异常时,确保所有的文件句柄被关闭
			try { inputStream.close();}catch(Exception e) {}
			try { outputStream.close();} catch(Exception e) {}
		}
	}
}

短任务

在这里插入图片描述

package my;

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Swing2
{
	private static void createGUI()
	{
		// JFrame指一个窗口,构造方法的参数为窗口标题
		// 语法:因为MyFrame是JFrame的子类,所以可以这么写
		JFrame frame = new MyFrame("Swing Demo");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 设置窗口的其他参数,如窗口大小
		frame.setSize(500, 300);
		
		// 显示窗口
		frame.setVisible(true);
		
		
	}
	
	public static void main(String[] args)
	{
		// 此段代码间接地调用了 createGUI(),具体原理在 Swing高级篇 里讲解
		// 初学者先照抄此代码框架即可
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run()
			{
				createGUI();
			}
		});

	}
}
package my;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class MyFrame extends JFrame
{
	JButton okButton = new JButton("开始");
	WaitDialog waitDialog = null;
	
	public MyFrame(String title)
	{
		super(title);

		// Content Pane
		JPanel root = new JPanel();
		this.setContentPane(root);
		root.setLayout(new FlowLayout());

		root.add(okButton);
		
		okButton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e)
			{				
				onMouseClicked();				
			}			
		});
	}

	// 按钮点击事件处理
	private void onMouseClicked()
	{			
		// 创建任务
		// 注意:在Win10下不允许直接在根目录下创建文件,所以建一个子目录来测试
		File srcFile = new File("/Users/ding/Desktop/11.zip");
		File dstFile = new File("/Users/ding/Desktop/22.zip");
		ShortTask th = new ShortTask();
		th.execute(srcFile, dstFile);	

		// 提示等待对话框
		waitDialog = new WaitDialog(this);
		waitDialog.exec();
	}
	
	private class ShortTask extends Thread
	{
		private File srcFile, dstFile;
			
		// 传入参数,并启动线程
		public void execute(File srcFile, File dstFile)
		{
			this.srcFile = srcFile;
			this.dstFile = dstFile;
			start(); // 启动线程
		}
		
		@Override
		public void run()
		{
			// 处理任务
			try {
				doInBackground();
			}catch(Exception e)
			{
				e.printStackTrace();
			}
			
			// 歇息 片刻
			try { sleep(100); }catch(Exception e) {}
			
			// 显示结果 ( 更新 UI )
			SwingUtilities.invokeLater( ()->{
				done();
			});
		}
		
		// 处理任务
		protected void doInBackground() throws Exception
		{
			MyFileUtils.copyFile(srcFile, dstFile);
		}
		
		// 任务完成后,更新界面显示
		protected void done()
		{
			// 关闭对话框
			if(waitDialog!=null)
			{
				waitDialog.setVisible(false);
				waitDialog = null;
			}
		}
	}
	
	
}
package my;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class MyFileUtils
{
	public static void copyFile(File srcFile, File dstFile) throws Exception
	{
		InputStream inputStream = null;
		OutputStream outputStream = null;
		try {
			inputStream = new FileInputStream(srcFile);
			outputStream = new FileOutputStream(dstFile);
			byte[] buf = new byte[8192]; // 每次最多读取8KB
			while(true)
			{
				int n = inputStream.read(buf); // 从源文件读取数据
				if(n <= 0) break; // 已经读完
				outputStream.write(buf,  0,  n); // 写入到目标文件
			}
		}
		finally {
			// 出异常时,确保所有的文件句柄被关闭
			try { inputStream.close();}catch(Exception e) {}
			try { outputStream.close();} catch(Exception e) {}
		}
	}
}

package my;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Rectangle;

import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.EtchedBorder;

/* 提示等待对话框
 * 
 * 无标题栏 setUndecorated(true)
 * 
 * 对话框里没有任何关闭按钮,所以用户不能手工关闭,只能等待操作结束
 * 
 */
public class WaitDialog extends JDialog
{
	public JLabel display = new JLabel("请等待...");
	
	public WaitDialog(JFrame owner)
	{
		super(owner, "", true);
		
		// 去掉标题栏
		this.setUndecorated(true);
		
		// 布局
		JPanel root = new JPanel();
		this.setContentPane(root);
		root.setLayout(new BorderLayout());
		
		// 背景
		root.setOpaque(true);
		root.setBackground(new Color(0xF4F4F4));
		root.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
		
		// 文字提示
		display.setHorizontalAlignment(SwingConstants.CENTER);
		root.add(display, BorderLayout.CENTER);
		
		// 设置大小
		this.setSize(200, 80);
	}

	public void exec()
	{
		// 相对owner居中显示
		Rectangle frmRect = this.getOwner().getBounds();
		int width = this.getWidth();
		int height = this.getHeight();
		int x = frmRect.x + (frmRect.width - width) / 2;
		int y = frmRect.y + (frmRect.height - height) / 2;
		this.setBounds(x, y, width, height);

		// 显示窗口 ( 阻塞 ,直接对话框窗口被关闭)
		this.setVisible(true);
	}
}

Af封装

在这里插入图片描述

package my;

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Swing2
{
	private static void createGUI()
	{
		// JFrame指一个窗口,构造方法的参数为窗口标题
		// 语法:因为MyFrame是JFrame的子类,所以可以这么写
		JFrame frame = new MyFrame("Swing Demo");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 设置窗口的其他参数,如窗口大小
		frame.setSize(500, 300);
		
		// 显示窗口
		frame.setVisible(true);
		
		
	}
	
	public static void main(String[] args)
	{
		// 此段代码间接地调用了 createGUI(),具体原理在 Swing高级篇 里讲解
		// 初学者先照抄此代码框架即可
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run()
			{
				createGUI();
			}
		});

	}
}

package my;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

import af.swing.thread.AfShortTask;


public class MyFrame extends JFrame
{
	JButton okButton = new JButton("开始");
	WaitDialog waitDialog = null;
	
	public MyFrame(String title)
	{
		super(title);

		// Content Pane
		JPanel root = new JPanel();
		this.setContentPane(root);
		root.setLayout(new FlowLayout());

		root.add(okButton);
		
		okButton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e)
			{				
				onMouseClicked();				
			}			
		});
	}

	// 按钮点击事件处理
	private void onMouseClicked()
	{			
		// 创建任务
		// 注意:在Win10下不允许直接在根目录下创建文件,所以建一个子目录来测试
		File srcFile = new File("/Users/ding/Desktop/11.zip");
		File dstFile = new File("/Users/ding/Desktop/33.zip");
		CopyTask th = new CopyTask();
		th.execute(srcFile, dstFile);	

		// 提示等待对话框
		waitDialog = new WaitDialog(this);
		waitDialog.exec();
	}
	
	private class CopyTask extends AfShortTask
	{
		@Override
		protected void doInBackground() throws Exception
		{
			// this.args 是一个数组,保存了execute()传进来的参数
			File srcFile = (File)this.args[0];
			File dstFile = (File)this.args[1];
			MyFileUtils.copyFile(srcFile, dstFile);
		}

		@Override
		protected void done()
		{
			// 关闭对话框
			if(waitDialog!=null)
			{
				waitDialog.setVisible(false);
				waitDialog = null;
			}
		}
		
	}
	
	
}
package my;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class MyFileUtils
{
	public static void copyFile(File srcFile, File dstFile) throws Exception
	{
		InputStream inputStream = null;
		OutputStream outputStream = null;
		try {
			inputStream = new FileInputStream(srcFile);
			outputStream = new FileOutputStream(dstFile);
			byte[] buf = new byte[8192]; // 每次最多读取8KB
			while(true)
			{
				int n = inputStream.read(buf); // 从源文件读取数据
				if(n <= 0) break; // 已经读完
				outputStream.write(buf,  0,  n); // 写入到目标文件
			}
		}
		finally {
			// 出异常时,确保所有的文件句柄被关闭
			try { inputStream.close();}catch(Exception e) {}
			try { outputStream.close();} catch(Exception e) {}
		}
	}
}

package my;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Rectangle;

import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.EtchedBorder;

/* 提示等待对话框
 * 
 * 无标题栏 setUndecorated(true)
 * 
 * 对话框里没有任何关闭按钮,所以用户不能手工关闭,只能等待操作结束
 * 
 */
public class WaitDialog extends JDialog
{
	public JLabel display = new JLabel("请等待...");
	
	public WaitDialog(JFrame owner)
	{
		super(owner, "", true);
		
		// 去掉标题栏
		this.setUndecorated(true);
		
		// 布局
		JPanel root = new JPanel();
		this.setContentPane(root);
		root.setLayout(new BorderLayout());
		
		// 背景
		root.setOpaque(true);
		root.setBackground(new Color(0xF4F4F4));
		root.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
		
		// 文字提示
		display.setHorizontalAlignment(SwingConstants.CENTER);
		root.add(display, BorderLayout.CENTER);
		
		// 设置大小
		this.setSize(200, 80);
	}

	public void exec()
	{
		// 相对owner居中显示
		Rectangle frmRect = this.getOwner().getBounds();
		int width = this.getWidth();
		int height = this.getHeight();
		int x = frmRect.x + (frmRect.width - width) / 2;
		int y = frmRect.y + (frmRect.height - height) / 2;
		this.setBounds(x, y, width, height);

		// 显示窗口 ( 阻塞 ,直接对话框窗口被关闭)
		this.setVisible(true);
	}
}

package af.swing.thread;

import javax.swing.SwingUtilities;


public abstract class AfShortTask extends Thread
{
	// 参数列表
	public Object[] args;
	// 任务出错信息
	public Exception err;
	
	// 传入参数,并启动线程
	// 参考本节课网盘内的文档:《省略号参数语法》
	public void execute(Object...args)
	{
		this.args = args; // 记录参数到this.args
		start(); // 启动线程
	}

	@Override
	public void run()
	{
		// 处理任务
		try
		{
			doInBackground();
		} catch (Exception e)
		{
			this.err = e;
			System.out.println("** AfShortTask: " + e.getMessage());
		}

		// 歇息 片刻
		try
		{
			sleep(100);
		} catch (Exception e)
		{
		}

		// 显示结果 ( 更新 UI )
		SwingUtilities.invokeLater(() -> {
			done( );
		});
	}

	// 处理任务
	protected abstract void doInBackground() throws Exception;

	// 任务完成后 
	// 如果this.err != null则说明doInBackground()里出错了
	protected abstract void done();

}

SwingWorker封装

package my;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;


public class MyFrame extends JFrame
{
	JButton okButton = new JButton("开始");
	WaitDialog waitDialog = null;
	
	public MyFrame(String title)
	{
		super(title);

		// Content Pane
		JPanel root = new JPanel();
		this.setContentPane(root);
		root.setLayout(new FlowLayout());

		root.add(okButton);
		
		okButton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e)
			{				
				onMouseClicked();				
			}			
		});
	}

	// 按钮点击事件处理
	private void onMouseClicked()
	{			
		// 创建任务
		// 注意:在Win10下不允许直接在根目录下创建文件,所以建一个子目录来测试
		File srcFile = new File("c:/example/a1.rar");
		File dstFile = new File("c:/example/a2.rar");		
		CopyTask th = new CopyTask(srcFile, dstFile);
		th.execute();	

		// 提示等待对话框
		waitDialog = new WaitDialog(this);
		waitDialog.exec();
	}
	
	private class CopyTask extends SwingWorker
	{
		File srcFile, dstFile;
		
		public CopyTask(File srcFile, File dstFile)
		{
			this.srcFile = srcFile;
			this.dstFile = dstFile;
		}

		@Override
		protected Object doInBackground() throws Exception
		{
			// this.args 是一个数组,保存了execute()传进来的参数
			MyFileUtils.copyFile(srcFile, dstFile);
			return null;
		}

		@Override
		protected void done()
		{
			// 关闭对话框
			if(waitDialog!=null)
			{
				waitDialog.setVisible(false);
				waitDialog = null;
			}
		}
		
	}
	
	
}
【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构02 ① Firecracker 为每个 microVM 提供极简设备模型:virtio-net, virtio-blk, serial console。:① BB84:Alice 随机选择基矢(+ 或 ×)发送单光子,Bob 随机测量基矢,比对后保留一致位的子集作为原始密钥。:密度 1 EB/mm³;:① Parquet 文件:行组(Row Group)→ 列块(Column Chunk)→ 页(Page)。 阅读详情

相关推荐

【管理科学】第六十六篇 企业供应链体系岗位深度策略05

资源限制:歌尔可优化振膜和磁路,THD 1.2%,灵敏度102dB/mW,频响30Hz~19kHz,单价1.2美元。方案一:全部Knowles。年成本2,000万美元。方案二:全部歌尔(当前)。年成本1,120.56万美元,节省879.44万。方案三:歌尔升级版。THD 1.2%,投诉率0.3%;灵敏度102dB,退货率0.2%;频响30Hz~19kHz,退货率0.15%。投诉 = 1,000万×0.3%×0.07 = 0.21万。退货 = 1,000万×0.35%×15 = 52.5万。年成本 = 1,0

weixin_49199313的博客 506

Java学习指南(Swing高级篇)

☆ Java程序员居家旅行必备课程 ☆Java学习指南系列的第4篇,介绍基于Java Swing的的高级应用技术。本篇的前一篇是Swing入门篇。Swing系列教程分为两篇:(1) Swing入门篇 (2) Swing高级篇。本篇内容至少包含:- 高级绘制技术,包含线型、渐变色、文本的精确绘制- 不规则形状及图表的绘制- 工作线程与界面线程的原理- 短任务、长任务、定时任务的应用举例- 弹出式窗口 Popup的使用方法- 短消息提示 Toaster 的设计与使用- 事件处理机制,鼠标键盘事件处理,以及一个基于键盘操作的“推箱子”游戏 - 多行文本的显示- 图片操作:缩放、剪裁、旋转、镜像,以及一个屏幕截图程序的实例- 管理型应用界面的框架- 向导型应用界面的框架- 文档型应用界面的框架- 拖放支持 Drag & Drop,一个可拖拽排序的列表,以及一个拼图游戏的实现* 课程特色 *轻快 - 采用小章节教学,学起来轻松实用 - 以实际工程需要出发来设计课程有趣 - 穿插大量特效实例,增加趣味性和学员的成就感专业 - 课程中采用的代码库,就是经过良好封装的成熟的库本篇穿插多个实例,通过实例,综合运用多种技术,使学员对项目的构建有所有认识。

【信息科学与工程学】信息工程领域——第三十六篇 电路电子06 电路设计01

问题的数学分析及组合数学分析(涵盖材料科学、材料力学、数学物理、电路/电气/电机/电子/控制科学/控制论、微电子/电路系统架构、半导体器件物理、几何学/拓扑学/代数学/数论/离散数学/泛函分析/复变函数和时变函数/数理逻辑/运筹学、数学物理、数学华为、计算机系统架构设计、通信科学、信息科学、光科学、电科学、热科学、力学科学、网络科学 、复杂系统、其他学科知识)③LED驱动、PD接收、跨阻放大、带通滤波、ADC、数字处理;③三电极体系(工作、对、参比)、恒电位电路、电流-电压转换、低通滤波;

weixin_49199313的博客 335

短任务一般框架

package af.swing.thread; import javax.swing.SwingUtilities; public abstract class AfShortTask extends Thread { // 参数列表 public Object[] args; // 任务出错信息 public Exception err; // 传入参数,并启动线程 // 参考本节课网盘内的文...

weixin_42484191的博客 154

Linux下科大讯飞离线语音识别SDK从下载到实战(附常见问题解决)

本文详细介绍了在Linux系统下,如何从科大讯飞开放平台获取离线语音识别SDK,完成环境准备、编译部署到实战开发的完整流程。文章重点解析了SDK目录结构、语法词典定制、示例代码修改,并针对开发中常见的“词典加载失败”、音频格式、交叉编译及性能优化等问题提供了深度解决方案,助力嵌入式与IoT开发者快速实现稳定可靠的离线命令识别功能。

honey的博客 1241

IMU标定中的Allen方差

Allen方差 Allen方差是IMU标定任务中的常用工具。IMU标定可以分为确定性误差和随机误差,确定性误差包括:scale、bias、misalignment。随机误差则主要是高斯白噪声和bias随机游走。Allen方差主要用于标定随机误差。 Allen方差获取 Allen方差的计算方法如下: 保持IMU静止, 采集N个数据点。 将N个点定长分组,常用的交叠式Allen方差如下(n=3): 对于每个子集,计算均值后,计算相邻两组的方差,得到的时间-方差曲线即为Allen方差。 Alle

realjc的博客 5737

Swing日期时间选择框控件

最近做一个Swing软件,其中要用到日期时间选择器(DateChooser),但是Swing中没有现成的日期时间选择器可用,于是在网上搜索了一下,找了一个比较靠谱的例子,因为任务比较紧,所以没有时间细致地美化,自己修改了几处,增加了一些注释,增加了几个功能(如:增加了确定、取消按钮;添加了取消时JButton的Text恢复选择前的日期时间;增加了得到当前日期时间格式化器等),现在放出来,欢迎有时间

fh09102103的专栏 8196

别再死记硬背了!用这5个Qt Design Studio小项目,彻底玩转核心组件

本文通过5个Qt Design Studio实战项目,帮助开发者深入理解核心组件的协作与应用。从动态登录界面到游戏化任务列表,每个项目都展示了组件属性与交互设计的巧妙结合,让你不再死记硬背,而是真正掌握Qt Design Studio的核心技能。

weixin_29202213的博客 271

Java实现进度条

基于有人问到怎样做进度条,下面给个简单的做法:主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax.swing.SwingWorker) package org.ubird; import java.awt.BorderLayout; import java.awt.Dimension; impo

Alpssoul的博客 1857

CCS软件仿真插件移植避坑指南:从CCS5.5到7.4的完整流程

本文详细介绍了将CCS软件仿真插件从CCS5.5迁移至CCS7.4的完整流程与避坑指南。针对TMS320F28335等C2000系列芯片,重点解析了仿真核心文件、配置数据库、连接定义及驱动文件的移植步骤,并通过两个实战Demo验证了移植后仿真环境的可用性,帮助开发者在无硬件条件下继续高效进行算法验证与调试。

defi6farmer的博客 460

65页PPT全面学习大型汽车集团企业IT信息化(管理架构、应用架构、技术架构)

订单到交付(OTD):借助ERP、MES、LES、SRM、QMS、APS等系统,实现财务与业务一体化、高级排产、生产过程自动化及供应链协同。- 数据标准化:数据标准化是企业信息化建设基石,包括制定统一业务解释和标准、维护管理流程、发布应用等,涉及数据统一定义、分类、编码等内容。- 大数据应用:汽车行业大数据应用涵盖生产、销售、售后等环节,如设备预见性保养、销量预测、质量预警等,提升企业运营效率和决策能力。- 策略明晰:明确C2M管理矩阵,包括供应商、采购、物流、制造、销售、财务等环节的策略。

cdfunlove的博客 1050

计算机程序设计实验报告4答案,程序设计实验报告4

篇2:《网络程序设计》教师实验报告《网络程序设计》教师实验报告 本文关键词:实验,教师,报告,网络程序设计《网络程序设计》教师实验报告 本文简介:《网络程序设计》教师实验报告学院:信息科学与技术学院专业:学期:2013~2014学年第一学期教师:I目录实验1熟悉C#运行环境11.1实验目的11.2实验预习11.3实验任务1实验2结构化程序设计32.1实验目的32.2实验预习32.3实验任务3实验3...

weixin_28898707的博客 1449

[RAM] DRAM 导论:DDR4 | DDR5 | LPDDR5 | GDRR6 | HBM 应运而生

有数据的地方就有存储, 内存是谁都离不开的产品。而动态随机存取存储器(DRAM)作为一种常见的内存。本博客将介绍DRAM的基本概念、工作原理、优缺点以及应用领域等方面。

串起点滴 3920

java linux gui_关于Java:安装Linux桌面/ GUI环境

Android建立在Linux kernel之上,大多数Linux系统使用诸如GNOME,KDE,LXDE等的桌面环境。我已经编译了Linux内核,并使用busybox,arm cross compiler工具链和arm-J2SE构建了最小的根文件系统。目前,我有基本的Command Line Interface。现在,我想使用桌面环境(启用鼠标并处理鼠标或触摸屏输入/事件)。因为我的Java命令...

weixin_29341747的博客 602

STM32CubeMX之SDIO+FatFS读写SD卡

“SD卡/TF卡的读写是嵌入式系统中常用的功能。而SD卡的本质是一种flash存储器,通过单片机可以直接读写,但若要被电脑识别,则需要文件系统的支持。本篇文章主要介绍通过单片机的SDIO...

zhang062061的专栏 1898

【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

文章目录2.1 使用VBA进行桌面软件开发2.1.1 VBA开发方式2.1.1 VBA代码的安全性2.2 使用DLL进行桌面软件开发2.2.1 DLL开发方式2.2.2 DLL功能的应用部署2.3 使用Add-in进行桌面软件开发2.4 使用ArcGIS Engine构建独立应用程序 对于桌面GIS应用来说,ArcGIS平台不仅提供了用于开发独立运行的GIS应用软件的二次开发工包ArcGIS Engine,还提供了对ArcGIS Deskop桌面软件进行扩展的开发的话,在开发个具体的GIS 行业应用软件时

智慧空间实验室 6510

5步搞定HybrIK数据配置:从零到一的3D人体姿态估计实战指南

你是否曾想过,如何让计算机像人类一样理解人体的三维姿态?HybrIK作为CVPR 2021提出的混合解析-神经逆运动学解决方案,正在重新定义3D人体姿态估计的边界。本文将带你从零开始,用5个关键步骤完成HybrIK的数据配置,让你轻松驾驭这个强大的3D人体重建工具。 ## 一、HybrIK核心原理:为什么它能超越传统方法? 在深入配置之前,让我们先理解HybrIK的核心优势。传统的3D姿态估计

gitblog_00045的博客 1075

Camera2Demo

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

oschina程序开发

程序开发 102脚本编程语言 36地图相关 7Epub电子图书工具 109UI组件库 16代码生成工具 25SVG开发包 17推荐引擎 3指纹识别 23拼音转换工具包 24蓝牙开发 295GUI开发框架 35Swing开发包 1137常用工具包 247报表/图表制作 207模板引擎 159搜索引擎 48中文分词库 82缓存系统 487网络工具包 10...

weixin_33743880的博客 111

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 295

信创环境下PageOffice文档控件适配与实践

信创适配做到文档控件这一层,拼的已经不是"有没有国产版本",而是同一个功能在两类终端上是否真的等价。等价的标准很具体:同一次点击能得到同样的结果,同一份公文能得到同样的版式,同一个项目不需要维护两套代码。这背后是三件并不轻松的工作:服务端用一套接口同时支撑两类终端,客户端把两种系统与四种芯片的安装包分发清楚,文档内核层由产品侧跟着 WPS 的版本走。浏览器这一层的压力,则被收进了产品自己的窗口里——升级节奏由产品掌握,不再交给运气。

zi_wu_xian的专栏 326

第三篇 第 6 课

前置:第三篇第 1 课(stdx 引入),第二篇第 1 课(std.regex)。环境:仓颉 SDK 1.2.0。本文所有代码与输出均逐行实测。

weixin_41618057的博客 513

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 351

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 532

Java 集合容器高频面试题全解:HashMap 树化阈值、1.7 死循环与 ConcurrentHashMap 演进(2026 招聘 JD 真题复盘)

HashMap 树化阈值 8 的泊松分布依据、退化阈值 6 的防抖设计、JDK 1.7 头插成环死循环的排查与修复、1.8 尾插后为何仍线程不安全、ConcurrentHashMap 放弃分段锁的原因与 ForwardingNode 协作扩容、computeIfAbsent 死锁陷阱、大集合找重复的场景题选型,附三层追问链自测。题目来源为 38 期公开招聘 JD 样本与字节、拼多多、建行、美团、快手公开面经。

蒙眼过河 417

spdlog 同步日志库使用详解

spdlog是一个轻量级 C++ 日志库,支持同步日志、异步日志、多线程日志、日志文件轮转和自定义日志格式。对于嵌入式 Linux 应用开发,我建议先使用。它可以帮我们完成:日志级别过滤。时间戳和线程 ID 输出。日志格式化。终端和文件输出。多线程安全写入。日志文件按大小或时间轮转。我们不需要自己实现互斥锁、文件写入、日志格式化和轮转等底层功能。

zengjiajun2006的博客 1118
上一篇: swing206界面线程与工作线程
下一篇: Swing208长任务
dingpython
博客等级 码龄6年 5粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值