GVKun编程网logo

如何记录软件安装的全过程?(如何记录软件安装的全过程视频)

13

关于如何记录软件安装的全过程?和如何记录软件安装的全过程视频的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于5.linux软件安装的三种方法、Android实现页面跳转的全过程记录、Flu

关于如何记录软件安装的全过程?如何记录软件安装的全过程视频的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于5.linux 软件安装的三种方法、Android实现页面跳转的全过程记录、Flutter构建自定义Widgets的全过程记录、Golang软件安装的详细步骤等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

如何记录软件安装的全过程?(如何记录软件安装的全过程视频)

如何记录软件安装的全过程?(如何记录软件安装的全过程视频)

在linux上有些软件在安装的过程中进行一些配置,请问有什么办法能将这个安装过程详细地自动记录在一个文档上呢?

5.linux 软件安装的三种方法

5.linux 软件安装的三种方法


 
一.linux 操作系统中 软件的分类 以及软件的安装
    vmtools  调用了 perl 语言写的安装脚本去进行内核的升级安装  ./xxxxx 
 
    源码包安装软件:GNU  使用 tar 的压缩工具进行打包压缩, 压缩内容   包括软件的源代码,以及安装脚本文件
 
    优点:跨平台安装  linux unix   更新速度快  可以指定安装位置 以及只等安装软件的部分功能    修改源代码
 
    缺点:安装方法不统一   安装过于繁琐 需要本地软件的支持
 
    封装后的软件包:源码包进行封装  系统的提供商 redhat 的专业封装工具  xxxx.rpm   redhat  package   Manager
    debian   de 后缀   xxxx.deb
 
    优点:安装方便   不需要指定安装路径  并且指定所有文件的存放位置配置
 
    缺点:更新速度慢  不能跨平台装   需要解决软件与软件之间的依赖关系
    
二。源码包安装首先
    1. 解压缩 /usr/src
    2. 进入解压目录 INSTAL 法  README 说明文件
    3. 找到 configure 安装配置脚本并进行运行安装
    ./configure --help  帮助信息
    --prefix = 指定软件的安装路径
    ./configure -- prefix= /usr/local/webserver 指定安装路径以及生成需要编译的 makefile 文件
    4. 对生成出来的 makefile 文件进行编译,成为计算机可以识别的文件
    make
    5. 将编译后生成的文件拷贝到指定目录中 /uer/local/webserver
    make install
    6. 启动服务
    /uer/local/webserver/bin/apachectl start    /  stop
    7. 编辑主页
    /usr/local/webserver/htdocs/index.html
    8. 将虚拟机第一块网卡桥接,点击右上角的电脑选择 system eth0 激活
    ifconfig eth0
    service httpd stop
 
三。安装封装后的软件包:
 
    rpm -qpi rpm 包 查看当前软件包的详细信息
    -q 请求 -p package -i info 信息
 
    rpm -qpl rpm 包 列出该安装包释放的文件有哪些
 
    rpm -qa 列出系统中已安装的 rpm 包
 
    rpm -ivh rpm 包 安装 rpm 包
    -i install -v  显示安装过程 -h 以 #号代替进度条
 
    rpm -ivh vsftpd-2.2.2-11.el6.x86_64.rpm
 
    service vsftpd start
 
    /var/ftp 共享目录
 
    rpm -qf 文件或目录                查看文件或目录属于哪个已经安装的软件包
 
    service vsftpd stop
 
    rpm -e vsftpd  卸载软件
 
    rpm -ql 软件名    查看已经安装的软件产生过哪些文件
 
------------------------------------------------
三.yum 源  软件仓库 中的  软件目录
 
    /etc/yum.repos.d/  保存操作系统 yum 源的备份源文件
    mkdir bak
    mv C* bak
 
    vim xueying.repo
    [xueying]   标签
    name=class5 dvd package 描述
    baseurl=file:/misc/cd 光盘的挂载路径
    gpgcheck=0 拒绝密钥对验证
 
 
    yum install elinks -y 确认安装
    yum remove elinks -y 确认卸载
 
    建立自己的 yum 源
 
    yum install createrepo -y   建立 yum 源依赖关系列表文件
    createrepo -g 光盘路径 /repodate/repomd.xml  /var/mp3repo (下载的 rpm 目录)
    在 rpm 包所在路径生成 repodate 依赖关系文件列表
 
    [xueying]    旧源
    name=zijidingyi de yum
    enabled=0  关闭该源
    baseurl=file:/misc/cd
    gpgcheck=0
 
    [mp3]
    name=mp3play
    baseurl=***************
    gpgcheck=0
    ~             
 
    yum clean all
    配置好 yum 源后安装
    yum install mplayer -y
    mplayer mp3 文件   播放
 
 

Android实现页面跳转的全过程记录

Android实现页面跳转的全过程记录

1、启动新Activty

1.1、功能分析

  • App功能
    • 在第一个Activity输入消息
    • 点击第一个Activity的发送按钮
    • 发送消息到第二个Activity
    • 第二个Activity显示收到的消息
  • App结构(2个Activity+2个Layout) :
    • 打开App时,启动CreateMessageActivty
      加载activity_create_message.xml作为布局
    • 用户点击按钮启动ReceiveMessageActivty
      加载activity _receive_message.xml作为布局

1.2、开发视图布局

activity_create_message.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".CreateMessageActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
            android:id="@+id/input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="@string/hint"
            android:inputType="textPersonName"
            android:textSize="30sp"/>

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="onSendMessage"
            android:text="@string/send"
            android:textSize="30sp"
            />

    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

activity _receive_message.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintRight_toRightOf="parent"
    tools:context=".ReceiveMessageActivity">

    <TextView
        android:id="@+id/output"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2nd Activity"
        android:textSize="34sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constr

string.xml

<resources>
    <string name="app_name">Messager</string>
    <string name="send">Send Message</string>
    <string name="hint">Enter a message</string>
    <string name="choser">Send Message via ...</string>
</resources>

1.3、按钮事件响应

CreateMessageActivty类:发送消息

public class CreateMessageActivity extends AppCompatActivity {

    //定义常量,作为消息的key
    public static final String MESSAGE_KEY="szst.it.ping.messager";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_message);
    }

    public void onSendMessage(View Button){
        //获得编辑框引用
        EditText editText = findViewById(R.id.input);
        //取出编辑框文字
        String message = editText.getText().toString();

        //Intent是Android中的信使,新建Intent打开,设置收件Activity为ReceiveMessageActivity
        Intent intent = new Intent(this,ReceiveMessageActivity.class) ;
        //在intent中附加消息
        intent.putExtra(MESSAGE_KEY,message);
        //向Android发出请求
        startActivity(intent);

    }
}

ReceiveMessageActivty类:接收消息

public class ReceiveMessageActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_receive_message);

        //获得intent的引用
        Intent intent = getIntent();

        //根据key取出value
        String message = intent.getStringExtra(CreateMessageActivity.MESSAGE_KEY);

        //获得文本框内容,设置文字
        TextView textView = findViewById(R.id.output);
        textView.setText(message);
    }
}

1.4、测试结果

启动界面

输入消息“123”并点击按钮发送,接收界面如下

 

2、启动其他App

2.1、功能分析

  • App功能
    • 在第一个Activity输入消息
    • 点击第一个Activity的发送按钮
    • 发送消息到其他App
    • 其他App显示收到的消息
  • App结构(1个Activity+1个Layout) :
    • 打开App时,启动CreateMessageActivty
      加载activity_create_message.xml作为布局
    • 用户点击按钮启动选择启动满足条件的App

2.2、开发视图布局

  • activity_create_message.xml
    • 同1.2中的activity_create_message.xml

2.3、按钮事件响应

CreateMessageActivty类:发送消息

public class CreateMessageActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_message);
    }

    public void onSendMessage(View Button){
        //获得编辑框引用
        EditText editText = findViewById(R.id.input);
        //取出编辑框文字
        String message = editText.getText().toString();

        //使用new Intent(Intent.ACTION_SEND)替换new Intent(this, ReceiveMessageActivity.class),不知道其它App中的类名
        Intent intent = new Intent(Intent.ACTION_SEND);
        //设置消息类型为纯文本,系统不会对消息进行处理
        intent.setType("text/plain");
        //向Intent添加附加信息
        intent.putExtra(Intent.EXTRA_TEXT,message);

        //自定义选择对话框
        String chooserTitle = getString(R.string.choser);
        Intent chosenIntent = Intent.createChooser(intent, chooserTitle);

        startActivity(chosenIntent) ;
    }
}

2.4、测试结果

启动界面同1.4

输入消息“123”并点击按钮发送,选择要发送的app(Messaging)

发送附加消息到111

发送成功

总结

到此这篇关于Android实现页面跳的文章就介绍到这了,更多相关Android实现页面跳转内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • Android Studio实现注册页面跳转登录页面的创建
  • Android使用Intent显示实现页面跳转
  • Android使用Intent隐式实现页面跳转
  • Android Intent实现页面跳转的两种方法
  • Android Intent实现页面跳转的方法示例
  • Android 实现页面跳转
  • Android使用Circular Reveal动画让页面跳转更炫酷
  • Android编程中Intent实现页面跳转功能详解
  • Android Activity中使用Intent实现页面跳转与参数传递的方法
  • Android实现页面跳转

Flutter构建自定义Widgets的全过程记录

Flutter构建自定义Widgets的全过程记录

一.组合widget实现

1.android和flutter自定义控件对比

Android中,一般会继承View或已经存在的某个控件,然后覆盖draw方法来实现自定义View。在Flutter中,一个自定义widget通常是通过组合其它widget来实现的,而不是继承。下面看看如何构建持有一个label的CustomButton。这是通过将Text与RaisedButton组合来实现的,而不是继承RaisedButton并重写其绘制方法实现,eg :custombuttontest.dart

import ''package:flutter/material.dart'';
 
class CustomButtonTest extends StatelessWidget{
  final String textStr;
  CustomButtonTest(this.textStr);
 
  @override
  Widget build(BuildContext context) {
    return RaisedButton(
      onPressed: (){},
      child: Text(
        textStr,
        textAlign: TextAlign.center,
      )
    );
  }
 
}

上面定义好组件之后,可直接在调用build的方法中现实,eg :

@override
  Widget build(BuildContext context) {
    return new Center(
      child: new CustomButton("Custom Button"),
    );
  }
}

二.通过自定义CustomPainter实现widgets

1.CustomPainter主要属性介绍,和Android开发中的自定义View类似,Flutter中的绘制也是依靠Canvas和Paint来实现的

1).Canvas //画布,为开发者提供了点、线、矩形、圆形、嵌套矩形等绘制方法。

2).Paint //画笔,可以设置抗锯齿,画笔颜色,粗细,填充模式等属性,绘制时可以定义多个画笔以满足不同的绘制需求。eg:

Paint _paint = new Paint()
..color = Colors.red // 画笔颜色 
..strokeCap = StrokeCap.round //画笔笔触类型,包括(1.round-画笔笔触呈半圆形轮廓开始和结束;2.butt-笔触开始和结束边缘平坦,没有外延;3.square-笔触开始和结束边缘平坦,向外延伸长度为画笔宽度的一半)
..isAntiAlias = true //是否启动抗锯齿
..style=PaintingStyle.fill //绘画风格,默认为填充,有fill和stroke两种
..blendMode=BlendMode.exclusion //颜色混合模式
..colorFilter=ColorFilter.mode(Colors.blueAccent, BlendMode.exclusion)//颜色渲染模式
..maskFilter=MaskFilter.blur(BlurStyle.inner, 3.0)//模糊遮罩效果
..filterQuality=FilterQuality.high//颜色渲染模式的质量
..strokeWidth = 15.0;//画笔的宽度复制代码

3).Offset //坐标,可以用来表示某个点在画布中的坐标位置。

4).Rect //矩形,在图形的绘制中,一般都是分区域绘制的,这个区域一般都是一个矩形,在绘制中通常使用Rect来存储绘制的位置信息。

5).坐标系 //在Flutter中,坐标系原点(0,0)位于左上角,X轴向右变大,Y轴向下变大。

2.painting.dart中的主要方法,eg:

void drawRect(Rect rect, Paint paint) {...} //画矩形
void drawLine(Offset p1, Offset p2, Paint paint) {...} //画线
void drawPoints(PointMode pointMode, List<Offset> points, Paint paint) {...} //画点
void drawCircle(Offset c, double radius, Paint paint) {...} //画圆
void drawArc(Rect rect, double startAngle, double sweepAngle, bool useCenter, Paint paint) {...} //画圆弧

三.饼状图piechart.dart代码展示

import ''dart:math'';
import ''package:flutter/material.dart'';
 
class PieChartTest extends StatelessWidget{
  const PieChartTest({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text(''pie chart''),
      ),
      body:Container(
        alignment: Alignment.center,
        child: CustomPaint(
          size: const Size(300, 300),
          painter: PieChartPainter(),
        ),
      )
    );
  }
}
 
class PieChartPainter extends CustomPainter{
 
  Paint getColoredPaint(Color color){
    Paint paint=Paint();
    paint.color=color;
    return paint;
  }
 
  @override
  void paint(Canvas canvas, Size size) {
    double wheelSize=min(size.width, size.height)/2;
    double nbElem=8;
    double radius=(2*pi)/nbElem;
    Rect boundingRect=Rect.fromCircle(center: Offset(wheelSize,wheelSize), radius: wheelSize);
    canvas.drawArc(boundingRect, 0, radius, true, getColoredPaint(Colors.orange));
    canvas.drawArc(boundingRect, radius, radius, true, getColoredPaint(Colors.black));
    canvas.drawArc(boundingRect, radius*2, radius, true, getColoredPaint(Colors.green));
    canvas.drawArc(boundingRect, radius*3, radius, true, getColoredPaint(Colors.red));
    canvas.drawArc(boundingRect, radius*4, radius, true, getColoredPaint(Colors.blue));
    canvas.drawArc(boundingRect, radius*5, radius, true, getColoredPaint(Colors.yellow));
    canvas.drawArc(boundingRect, radius*6, radius, true, getColoredPaint(Colors.purple));
    canvas.drawArc(boundingRect, radius*7, radius, true, getColoredPaint(Colors.white));
  }
 
  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate)=>oldDelegate!=this;
}

四.实际效果图,eg:

附:Flutter中父widget调用子widget的方法

一、定义globalKey,注意<>中的是State类。

final _childWidgetKey = GlobalKey();

二、在父页面初始化子widget

ChildPage(key:_receiveKey),

三、

class ChildPage extends StatefulWidget {undefined
ChildPage({Key key}) : super(key: key);
​​​​​​​@override
ChildPageState createState() => ChildPageState();
}

四、在父界面调用子widget中的方法

_childWidgetKey.currentState.onRefresh();

总结

到此这篇关于Flutter构建自定义Widgets的文章就介绍到这了,更多相关Flutter构建自定义Widgets内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • Flutter Widgets粘合剂CustomScrollView NestedScrollView滚动控件
  • Flutter Widgets之标签类控件Chip详解
  • Flutter开发Widgets 之 PageView使用示例
  • Flutter Widgets MediaQuery控件屏幕信息适配

Golang软件安装的详细步骤

Golang软件安装的详细步骤

golang是google开发的一款编程语言,它融合了静态语言和脚本语言的优点,在性能和开发效率上有很大的优势,成为近年来最热门的编程语言之一。如果你想要使用这个语言进行编程,首先就要掌握它的安装方法。在本篇文章中,我们将为您提供golang软件安装的详细步骤。

第一步:下载Golang安装包

首先,您需要在官方网站golang.org上下载Golang软件的安装包。根据您的系统类型,选择相应的版本进行下载。目前,Golang支持多种操作系统,如Windows、Linux、Mac OS等。如果您需要使用Golang进行交叉编译,还可以选择根据不同的体系结构下载不同的安装包。下载完成后,您需要解压缩文件,并将其放在您想要安装的目录下。

第二步:配置环境变量

安装完Golang软件之后,您需要配置环境变量,以便在命令行中可以直接调用Golang命令。在Linux系统下,可以在.bashrc文件中添加以下内容:

立即学习“go语言免费学习笔记(深入)”;

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
登录后复制

这里,GOPATH是您的工作目录,您可以选择自己所需的目录。在Windows系统下,您可以通过以下步骤配置Golang环境变量:

  1. 打开“控制面板”,并进入“系统和安全”选项
  2. 选择“系统”,然后点击“高级系统设置”
  3. 点击“环境变量”按钮
  4. 在“系统变量”中添加GOROOT和GOPATH变量,变量值为安装目录以及您的工作目录
  5. 编辑“Path”变量,添加Golang安装目录下的bin目录以及GOPATH下的bin目录

第三步:检查安装

完成环境变量配置之后,您可以运行命令“go version”来检查Golang是否已经成功安装。如果您看到了当前版本号的输出,那么恭喜您,已经成功安装并配置好了Golang软件。

第四步:安装Golang开发工具

除了安装Golang软件以外,您还需要安装一个适合您编程需求的Golang开发工具。这些工具有很多种,包括GoLand、LiteIDE、Visual Studio、Sublime Text等等。这些开发工具可以帮助您更加高效地编写Golang代码,提高开发效率。

总结

安装Golang软件需要经过下载、解压、配置环境变量等多个步骤,但只要您按照以上步骤执行,就能够很快地完成安装过程。同时,您也需了解Golang开发工具的安装和使用,以便更好地使用该语言进行编程。希望这篇文章对大家有所帮助。

以上就是Golang软件安装的详细步骤的详细内容,更多请关注php中文网其它相关文章!

关于如何记录软件安装的全过程?如何记录软件安装的全过程视频的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于5.linux 软件安装的三种方法、Android实现页面跳转的全过程记录、Flutter构建自定义Widgets的全过程记录、Golang软件安装的详细步骤等相关知识的信息别忘了在本站进行查找喔。

本文标签: