Android 平台应用软件开发(学习中)

这篇具有很好参考价值的文章主要介绍了Android 平台应用软件开发(学习中)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android 中的五种布局

1,LinearLayout(线性布局),RelativeLayout(相对布局),FrameLayout(帧布局),AbsoluteLayout(绝对布局),TableLayout(表格布局)。
2,线性布局中的控件属性说明
①android:background,设置UI控件的背景,其值可以是资源文件夹中的图片或者是颜色的十六进制值。
②android:orientation,该属性是线性布局的特有属性,用来指定线性布局的方向,vertical表示垂直线性布局,horizontal表示水平线性布局
③android:layout_width:设置UI控件的宽度,match_parent的含义是设置UI控件的宽度充满父窗体,wrap_content的含义是设置UI控件的宽度随内容的大小变化
④android:id,该属性为UI控件设置一个名字,在源代码程序中可以通过R.id名字的形式来获取这个控件实体
⑤android:src,用来设置图片控件ImmageView的前景图片
⑥android:text,设置UI控件上面显示的文字内容。
android:textSize,设置控件中文字的大小。最好用sp为单位,控件宽度和高度多采用dip做单位
⑦android:textColor,设置字体的颜色,采用八位十六进制数格式为该属性设置值。
⑧android:gravity,设置控件在父容器中的对齐方式,其值可以是水平居中,垂直居中,靠左,靠右
3,相对布局控件属性说明
①android:layout_alignParentBottom,设置UI控件贴紧父元素底部,如需要与父元素的底部对齐,将其值设为true,否则为false。
②android:layout_alignParentRight,设置UI控件紧贴父元素的右边,其值设置同上属性
③android:layout_centerHorizontal,设置控件在相对布局中水平居中
④android:layout_centerInParent,设置父控件相对于父元素完全居中
⑤android:layout_alignParentLeft,设置控件贴紧父元素的左边缘
⑥android:layout_alignParentTop,设置控件贴紧父元素的上边缘
以上属性值均为true或false
android:layout_below,设置控件在某元素的下方
android:layout_above,设置控件在某元素的上方
android:layout_toRightOf,设置控件在某元素的右边
android:layout_alignTop,设置控件本元素的上边缘和某元素大的上边缘对齐
以上属性的属性值必须为其他控件的id引用名。
4,帧布局中控件属性说明
android:layout_gravity,该属性用于设置当前控件在父元素中的对齐方式,若其值为center_vertical,表示当前控件在父元素中垂直居中,若其值为center_horizontal表示当前控件在父元素中水平居中,若两个值并列使用,则表示控件对父元素既垂直居中有水平居中。
android:layout_gravity=‘center_vertical|center_horizontal’
②android:visibility,设置控件的可见性,该属性有三个值,visible,gone,invisible.visible代表控件可见,invisible代表控件不可见,但占据布局位置,gone带代表不可见也而且不占据布局位置。

Android 中的UI控件

1,开发中的常用基础控件包括TextView,Button,EditText,ImageView,RadioBuutton,CheckBox,ProgressBar。
2,文本控件TextView
Android 平台应用软件开发(学习中)
3,编辑框控件EditText
Android 平台应用软件开发(学习中)
4,按钮控件Button
继承自aandroid.widget.TextView类,位于android.widget包中。它常用的子类有CheckBox,RadioButton,ToggleButton.
其常用属性为android:click 设置当按钮点击时执行的方法名
5,图片控件ImageView
Android 平台应用软件开发(学习中)
6,单选按钮RadioButton
一般在RadioGroup中声明,用于提供两个或多个互斥选项,即在一组按钮中只能选择一个。要监听单选按钮状态的更改,需要给他所在的RadioGroup添加setOnCheckChangeListener()监听器。
Android 平台应用软件开发(学习中)
7,进度条控件ProgressBar
一般在应用程序中用来显示用户某个耗时操作的进度百分比
Android 平台应用软件开发(学习中)
8,高级控件
常用的几个高级控件都直接或间接地继承了android.view.ViewGroup类。常用地高级控件主要包括ListView,GridView,Spinner,AutoCompleteTextView,ExpandableListView,Gallery等。
9,高级控件案例ListView控件是以列表地形式显示资源,Spinner是以下拉列表地形式显示数据资源,Grid View、是以网格地形式显示数据资源。
①用户单击控件条目事件。为控件加载setOnTremClickListener监听,重写onItemClick()方法
②用户长按事件。为控件加载setOnItemLongClickListener监听,重写onItemLongClick()方法。

1,ListView使用ArrayAdapter适配器
public class MyListView extends Activity{
String[] strs =new String[] {"first", "second", "third", "fourth","fifth"//定义一个String数组用来显示ListView的内容
private ListView lv;
@Override
publicvoid onCreate(Bundle savedInstanceState)}
super.onCreate(savedlnstanceState);
setContent View(R.layout.main);
//得到ListView对象的引用
lv = (ListView) findViewBy!d(R.id.Iv);
//为ListView设置Adapter来绑定数据
lv. set Adapter(ne w Array AdapterString>(this,
android.R.layout.simple 一list一item j,strs));
}
}

Android 中的交互与菜单

1,Toast提示框的创建
只需要调用Toast类的静态方法makeText即可创建默认格式的Toast提示框。makeText()方法包含三个参数,第一个参数指定上下文环境,一般使用getApplicationContext()方法获取当前程序的上下文,第二个参数是弹出的提示框中显示的提示文本,第三个参数是Toast提示框显示的时间,0,代表短时间,1代表长时间。
例:Toast.makeText(getApplicationContext(),“文本”,0).show();
//设置显示的位置,该方法有三个参数,第一个参数是显示的位置,第二个参数是距离该位置的x方向的。
toast.setGravity(Gravity.LEFT,20,30); toast.show();

2.带图片的Toast

//定义一个Toast的对象
Toast toast=Toast.makeText(getApplicationContext(), ”图片 toast", 0);
//定义一个ImageView的对象,构造的时候需要上下文作为参数
ImageView imageView=new ImageView(MainActivity.this);
"设置ImageView的源
image View.setImageResource(R.drawable.ic」auncher);
//获取当前的Toast对象的View并转换为线性布局
LinearLayout layout=(LinearLayout) toast.getView();
//ImageView添加到线性布局中
layout.addView(imageView);
"显示Toast
toast.show();

3,常用的设置对话框的方法
setTitle:为对话框设置标题
setIcon:为对话框设置图标
setMessage:为对话框设置内容
setView:为对话框设置自定义样式
setItem:设置对话框要显示一个list,一般用于显示几个命令
setMultiChoiceItems:用来设置对话框显示一系列的复选框
setNeutralBuutton:普通按钮
setPositibeButton:一般用作确定按钮
setNegativeButton:一般用作取消按钮
setCancelable:设置是否模态,如果为模态,用户必须进行操作
creat:创建对话框
show:显示对话框

5.2.2 创建对话框的关键代码

1.警告对话框
//创建对话框的对象
AlertDialog.Builder builder=new Builder(context);
//设置对话框的标题
builder.setTitle(“提示”);
//设置对话框的内容
builder.setMessage(“是否要退出”);
//设置一个确定按钮, 并使用匿名内部类的方式创建点击事件
builder.setPositiveButton(“确定”,new DialogInterface.OnClickListener(O{
public void onClick(DialogInterface dialog, int which){
//弹出 一个点击确定的提示框
Toast.makeText(getApplicationContext), “点击确定”,0).show();
}
});
//设置 一个取消按钮, 并使用匿名内部类的方式创建点击事件
builder.setNegativeButton(“取消”, new DialogInterface.OnClickListenerO {
public void onClick(DialogInterface dialog, int which){
//弹出一个点击取消的提示信息
Toast.makeText(getApplicationContext(),“点击取消” ,1).showO;
1
});
//创建对话框并通过showO方法使其显示出来
builder.create().show();
2. 进度对话框
//创建 一个进度对话框的对象
ProgressDialog pdd=new ProgressDialog(this);
//设置进度对话框的进度条为水平方向的对话框
pdd.setProgressStyle(ProgressDialog.STYLE_ HORIZONTAL);
//设置对话框的信息
pdd.setMessage(“正在下载。。。请稍候”);
//设置对话框的标题
pdd.setTitle(“下载中”);
//设置对话框中进度条的最大值
pdd.setMax(100); (用货
//设置当前的进度
pdd.setProgress(40);
//显示进度对话框
pdd.show);
3. 日期选择对话框
//创建一个日历对象获取当前的日期
Calendar c=Calendar.getInstanceO);
//获取日期中的年
int y=c.get(Calendar.YEAR);
11获取日期中的月
int m=c.get(Calendar.MONTH);
//获取日期中的天
int d=c.get(Calendar.DAY_OF_MONTH);
/*定义一个日期选择对话框DatePickerDialog, 构造方法需要五个参数,第一个参数是上下文
环境, 第二个参数是日期变动的回调函数, 就是当对话框中的日期改变时所执行的函数, 第三个是
参数是默认显示的年, 第四个参数是默认显示的月, 第五个参数是默认显示的天

DatePickerDialog da=new DatePickerDialog(this,null,y,m,d);
//让对话框显示出来 I
请输入名字
da.show);
4.自定义对话框
创建自定义对话框需要自定义的布局文件,如图5-2
所示。
//将布局文件转化View
final View view=View.inflate(this, R.layout.dio, null);
//设置builder显示的View
builder.setView(view);
定义一个确定按钮 图5-2 自定义对话框布局文件
builder.setPositiveButton(“确定”, new DialogInterface. OnClickListenerO

//设置确定按钮的点击方法
public void onClick(DialogInterface dialog, int which){
//获取自定义布局文件中的EditeText
EditText el=(EditText)view.findViewById(R.id.el);
//获取EditText中输入的字符串
String yhm=el.getText().toString();
//弹出一个提示框,显示输入的用户名
Toast.makeText(getApplicationContext(),“输入的用户名是”+yhm,0).show();
}
}};
//创建并且显示对话框
builder.create().show();

示例代码:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".MainActivity"
    android:background="@drawable/sky"
    android:orientation="vertical"
    >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册"
        android:textColor="@color/teal_200"
        android:textSize="25dp"
        android:gravity="center"
        android:textStyle="bold"

        />
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/white"/>



    <LinearLayout
        android:id="@+id/w1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="QQ"
            android:src="@drawable/qq"
            android:textColor="@color/teal_200"
            android:textSize="20sp" />

        <View
            android:layout_width="2dp"
            android:layout_height="match_parent"
            android:background="@color/white"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="97dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="微信"
            android:src="@drawable/weixin"
            android:textColor="@color/teal_200"
            android:textSize="20sp" />

    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/white"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/youxiang">
        </ImageView>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="使用邮箱登录"
            android:textSize="30sp"
            >

        </TextView>

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓      名"
            android:textColor="@color/teal_200"
            android:textSize="20sp">
        </TextView>

        <EditText
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="请输入姓名">
            <requestFocus />

        </EditText>

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="邮      箱"
            android:textColor="@color/teal_200"
            android:textSize="20sp">
        </TextView>

        <EditText
            android:id="@+id/email"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="请输入邮箱">

            <requestFocus />

        </EditText>

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密      码"
            android:textColor="@color/teal_200"
            android:textSize="20sp">
        </TextView>

        <EditText
            android:id="@+id/password_toggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="请输入密码">
            <requestFocus />

        </EditText>

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓      别"
            android:textColor="@color/teal_200"
            android:textSize="20sp">
        </TextView>
        <RadioGroup
            android:layout_marginLeft="30dp"
            android:id="@+id/radioGroup1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <RadioButton
                android:id="@+id/radio_man"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:textColor="@color/teal_200"
                android:text=""/>
            <RadioButton
                android:id="@+id/radio_woman"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/teal_200"
                android:text=""/>
        </RadioGroup>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="爱      好"
            android:textColor="@color/teal_200"
            android:textSize="20sp"/>
        <CheckBox
            android:layout_marginLeft="30dp"
            android:id="@+id/cb_game"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="游戏"/>
        <CheckBox
            android:layout_marginLeft="30dp"
            android:id="@+id/cb_basketball"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="篮球"/>
        <CheckBox
            android:layout_marginLeft="30dp"
            android:id="@+id/cb_music"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="音乐"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </LinearLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="81dp"
        android:gravity="center"
        android:text="提交"
        android:textColor="@color/teal_200"
        android:textSize="25dp"
        android:textStyle="bold"

        />
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/white"/>
</LinearLayout>

②MainActivity.java

package com.example.email;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private MainActivity2 tel;
    private EditText Name;
    private EditText Phone;
    private TextView Show;
    private Button mBtnAdd;
    private Button mBtnQuery;
    private Button mBtnUpdate;
    private Button mBtnDelete;
    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        tel = new MainActivity2(this);
        Name = (EditText) findViewById(R.id.name);

        Phone = (EditText) findViewById(R.id.phone);

        Show = (TextView) findViewById(R.id.show);

        mBtnAdd = (Button) findViewById(R.id.insert);

        mBtnQuery = (Button) findViewById(R.id.query);

        mBtnUpdate = (Button) findViewById(R.id.update);

        mBtnDelete = (Button) findViewById(R.id.delete);

        mBtnAdd.setOnClickListener(this);

        mBtnQuery.setOnClickListener(this);

        mBtnUpdate.setOnClickListener(this);

        mBtnDelete.setOnClickListener(this);



    }



    @Override

    public void onClick(View v) {

        String name;

        String phone;

        SQLiteDatabase db;

        ContentValues values;

        switch (v.getId()) {

            case R.id.insert: //添加数据

                name = Name.getText().toString();

                phone = Phone.getText().toString();

                db = tel.getWritableDatabase();//获取可读写SQLiteDatabse对象

                values = new ContentValues(); // 创建ContentValues对象

                values.put("name", name); // 将数据添加到ContentValues对象

                values.put("phone", phone);

                db.insert("information", null, values);

                Toast.makeText(this, "信息已添加", Toast.LENGTH_SHORT).show();

                db.close();

                break;

            case R.id.query: //查询数据

                db = tel.getReadableDatabase();

                Cursor cursor = db.query("information", null, null, null, null,

                        null, null);

                if (cursor.getCount() == 0) {

                    Show.setText("");

                    Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show();

                } else {

                    cursor.moveToFirst();

                    Show.setText("Name : " + cursor.getString(1) + " ;Tel : " + cursor.getString(2));

                }

                while (cursor.moveToNext()) {

                    Show.append("\n" + "Name : " + cursor.getString(1) + " ;Tel : " + cursor.getString(2));

                }

                cursor.close();

                db.close();

                break;

            case R.id.update: //更新数据

                db = tel.getWritableDatabase();

                values = new ContentValues(); // 要修改的数据

                values.put("phone", phone = Phone.getText().toString());

                db.update("information", values, "name=?",

                        new String[]{Name.getText().toString()}); // 更新并得到行数

                Toast.makeText(this, "信息已修改", Toast.LENGTH_SHORT).show();

                db.close();

                break;

            case R.id.delete: //删除数据

                db = tel.getWritableDatabase();



                name = Name.getText().toString().trim();
                phone = Phone.getText().toString().trim();
                if (name.equals("") || phone.equals("")){ //联系人信息不能为空
                    Toast.makeText(this,"联系人信息删除失败",Toast.LENGTH_SHORT).show();
                }
                else {
                    db.execSQL("delete from information where name=? and phone=?", new Object[]{name, phone});
                    Toast.makeText(this,"联系人信息删除成功",Toast.LENGTH_SHORT).show();
                }
                db.close();
                break;
        }
    }
}

③MainActivity2.java文章来源地址https://www.toymoban.com/news/detail-440373.html

package com.example.email;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class MainActivity2 extends SQLiteOpenHelper {

    public MainActivity2(Context context) {

        super(context, "itcast.db", null, 1);

    }

//当数据库第一次创建的时候执行

    @Override

    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), phone VARCHAR(20))");

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

到了这里,关于Android 平台应用软件开发(学习中)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 易语言软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作

    随着信息技术的不断发展,易语言软件定制开发已成为许多公司的一项重要业务。本文将探讨如何利用易语言承接软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作。 一、易语言概述 易语言是一种简单易学的编程语言,它采用中文编程,让不会英文的初

    2024年02月08日
    浏览(81)
  • 【软件应用开发】小米便签APP维护开发

    本文主要介绍在小米便签APP原有功能的基础上,设计并实现了便签添加图片的功能,从开发过程、运行界面、源代码三个方面进行详细介绍。 本文引用小米便签社区开源版代码:https://github.com/MiCode/Notes 小米便签APP维护开发完整源代码地址:https://download.csdn.net/download/weixin_

    2024年02月02日
    浏览(86)
  • 软件测试/测试开发丨ChatGPT在软件测试领域的应用

    随着互联网技术的迅速发展,软件已经成为现代社会中不可或缺的一部分。而软件测试作为保障软件质量的关键环节,也越来越受到人们的关注。在这个领域,ChatGPT作为一种新型的人工智能技术,正逐渐应用于软件测试领域,为软件测试带来了诸多创新和改进。 在软件测试

    2024年02月14日
    浏览(63)
  • 系统分析师---论软件开发模型及应用

    论题:论软件开发模型及应用 软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发过程包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要任务

    2024年02月04日
    浏览(57)
  • 区块链技术在软件开发中的应用

    如果你是一名软件开发者或者IT从业者,你一定已经听说过区块链技术。区块链是一种基于密码学的分布式账本技术,被广泛应用于数字货币、金融、物联网等领域。但是,除了这些领域之外,区块链技术还可以在软件开发中发挥重要作用。本文将介绍区块链技术在软件开发

    2023年04月27日
    浏览(78)
  • 直播软件app开发:如何开发一个可以免费打扑克的直播应用?

    作为一个技术开发人员,我深知直播软件app开发的重要性。在这个数字化时代,越来越多的人选择使用直播软件来分享自己的生活和与朋友互动。而随着技术的发展,直播软件也不断更新和改进,为用户提供更好的体验和功能。 对于开发者来说,以视频直播app源码为基础进行

    2024年02月16日
    浏览(67)
  • 如何应用项目管理软件进行敏捷开发管理

    敏捷开发(Agile Development)是一种软件开发方法论,强调在不断变化的需求和环境下,通过迭代、协作和自适应的方式来开发软件。敏捷方法的目标是提供更快、更灵活、更高质量的软件交付,以满足客户需求并实现项目成功。 在技术研发团队使用敏捷开发来完成一个迭代时

    2024年02月12日
    浏览(59)
  • 麦芯(MachCore)应用开发教程1 --- 设备软件中间件

    黄国强 2024/1/10 acloud@163.com         对任何公司来说,在短时间内开发一款高质量设备专用软件,是一件不太容易做到的事情。麦芯是笔者发明的一款设备软件中间件产品。麦芯致力于给设备厂商提供一个开发工具和平台,让客户快速高效的开发自己的设备专用软件。麦芯

    2024年01月25日
    浏览(42)
  • 微服务:解放软件开发的神器,引领企业级应用的未来

    目录 1、什么是微服务? 1.1 微服务的定义 1.2 微服务架构的特点 2、微服务的优势 2.1 灵活性和可扩展性 2.2 模块化开发和部署 2.3 高可用性和容错性 2.4 技术栈的多样性 3、微服务的挑战 3.1 分布式系统的复杂性 3.2 服务之间的通信和协调 3.3 数据一致性和事务管理 3.4 性能监控

    2024年02月22日
    浏览(54)
  • 基于ubuntu的STM32嵌入式软件开发(四)——应用软件工程的修改、Makefile及编译脚本的编写

            本文主要介绍基于标准库函数移植的STM32的应用软件工程的修改,主要涉及到文件内容修改、Makefile文件编写、编译脚本编写等内容,其中编译脚本是基于arm-none-eabi-gcc的交叉编译器撰写的。程序亲测可以正常编译,生成.bin和.hex的可烧录镜像文件。 1.首先修改 pr

    2023年04月15日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包