AndroidStudio使用入门

AndroidStudio使用入门

  • 1_AndroidStudio activity的基本使用
    • 1.1_MainActivity和activity_main的初识
    • 1.2_Activity的清单文件简介
    • 1.3_几种重要文件的介绍
    • 1.4_基本布局的认识与使用
      • 1.4.1_RelativeLayout(相对布局)
      • 1.4.2_线性布局
  • 2_访问资源的方式
    • 2.1_java访问资源的方式
    • 2.2_xml访问资源的方式
  • 3_控件的使用
    • 3.1_通用属性
    • 3.2_选择器的使用
    • 3.3_TextView的使用
    • 3.4_Button按钮和点击事件的添加
    • 3.5_EditText的使用
    • 3.6_单选框radio button和radio group的使用
    • 3.7_CheckBox的使用
    • 3.8_Toast提示的使用
    • 3.9_AlertDialog的使用
      • 3.9.1_AlertDialog的简单使用
      • 3.9.2_AlertDialog的单选框使用
      • 3.9.3_AlertDialog的自定义界面的使用
    • 3.10_ListView的使用
      • 3.10.1_SimpleAdapter的使用(略)
      • 3.10.2_ArrayAdapter的使用
      • 3.10.3_BaseAdapter的使用(略)
    • 3.11_ContextMenu长按事件
    • 3.12_页面分栏LayoutInflater
  • 4_生命周期与intent的使用
    • 4.1_生命周期
    • 4.2_页面跳转
    • 4.3_intent跳转页面传值
    • 4.4_intent传值自定义类
    • 4.5_回传数据
  • 5_Server服务的使用
  • 6_小问题、小技巧汇总
    • 6.1_去除AppCompatActivity自带标题
    • 6.2_解决不能安装问题
    • 6.3_Toast在新线程中不能正常使用
    • 6.4_按钮透明
    • 6.5_添加gif图片
    • 6.6_自动导包

1_AndroidStudio activity的基本使用

log.v("","");//在控制面板输出内容

1.1_MainActivity和activity_main的初识

  1. 在MainActivity所在文件夹中可以创建任意“?Activity”文件作为后端逻辑代码文件
  2. 同理在activity_main所在文件夹中可以创建任意“activity_?”文件作为前端页面控制代码文件
    注意两个文件名的“?”部分要相互对应

在这里插入图片描述

1.2_Activity的清单文件简介

在这里插入图片描述

1.3_几种重要文件的介绍

  1. Android中的界面是由两个文件组成的 一个是Activity的Java文件 还有一个是xml的布局文件.Java文件都放在java的文件下布局文件全部在res/layout下

  2. layout下的文件都是xml文件

  3. res下的文件不允许有大写字母

  4. manifests文件夹下,AndroidManifest.xml:清单文件。可以配置应用的第一个启动的Activity,注册Activity,修改应用图标及应用名称
    在这里插入图片描述

  5. values自定义变量名
    colors.xml:
    在这里插入图片描述
    strings.xml:
    在此文件中定义变量类似C语言中的#define
    多语言支持方式

  6. drawable文件夹和mipmap文件夹
    一般将APP的icon放在minmap文件夹下,其他图片资源放在drawable文件夹下

1.4_基本布局的认识与使用

基本布局的认识

  1. View:表示为Android视图
    Java文件和xml文件都能编写View
    不管是Java还是xml文件最后都会变成Java文件的视图(其中java编写的视图和java课上学的视图一样,一般开发软件不用java编写视图

  1. ViewGroup:表示为布局(在xml中布局可以嵌套)
    布局控件可以放其它控件常用布局 LinearLayout(线性布局)、RelativeLayout(相对布局)、ConstraintLayout(约束布局)
    如果只有一个子控件,则不需要写orientation属性,有多个必须要写,在新工具不一定
    常用控件 Button(按钮)、TextView(文本)、EditText(输入框)

  1. 根布局需要加代码<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"
    其中xmlns:app只在相对布局中加

1.4.1_RelativeLayout(相对布局)

没有方向性,但是有Z轴,代码在后的Z轴值越大,即可以悬浮必须要参照物
1、布局本身为参照
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘

2、通过id来指定参照物
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
3. 属性值为具体的像素值,如 30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离

1.4.2_线性布局

如果只有一个子控件,则不需要写orientation属性,有多个必须要写,在新工具不一定在线性布局中
空间大小:android:layout_width="" android:layout_height=""
match_parent只会占满剩余的空间 wrap_content适应文本大小 除此之外,还可以写固定数值,单位是dp或dip
layout_weight是权重

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><Buttonandroid:id="@+id/button_alterdialog"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="删除"android:onClick="delete"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="增加"android:onClick="delete"/></LinearLayout>

2_访问资源的方式

2.1_java访问资源的方式

R.resource_type.name//R可以理解为资源中的最高包
Android.R.//官方资源

2.2_xml访问资源的方式

@pakage_name:resource_type/name

3_控件的使用

3.1_通用属性

  1. gravity(对齐方式):center、left、rightbottom
    多个布局方式以"|"分隔

  1. 边距
    内边距:padding
    外边距:margin

  1. 限制文本行数
    android: lines="2" android:ellipsize="end"----超出的部分“。。。”表示

  1. 放置图片(图片存储在mipmap(drawable)文件夹)
    Android:drawable
  2. 背景图片和颜色
    Android:background="@mipmap/drawable_name"(背景图片)
    Android:background=“颜色”

3.2_选择器的使用

3.3_TextView的使用

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16sp"android:textColor="#ffffff" android:padding="10dip" android:background="#cc0000" android:layout_gravity="center" android:text="Android Studio 工具箱"/>

3.4_Button按钮和点击事件的添加

  1. Button继承于TextView

  2. android背景选择器的使用

  3. Button点击事件的添加(最简单的方式,另外两种方式见3.6

java文件下:
MainActivity文件中

public void login(View view){//动作}

res.layout文件夹下activity_main文件中

<Buttonandroid:layout_width="90dp"android:layout_height="70dp"android:text="登录"android:textSize="25dp"android:onClick="login"></Button>

3.5_EditText的使用

基本使用

<EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="提示"android:inputType="datetime"></EditText>

其中inputType是输入类型,输入类型有密码、数字、文本、日期等

如何在后端获取编辑框中的内容

在java文件中

 EditText edit_text1 = findViewById(R.id.id名);edit_text1.getText().toString;

3.6_单选框radio button和radio group的使用

  1. 直接应用:
RadioGroup radioGroup = findViewById(R.id.radiogroup);radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {switch (checkedId){case R.id.radiobutton_man:{Log.i("radiobutton_man","男生");break;}case R.id.radiobutton_woman:{Log.i("radiobutton_woman","女生");break;}}}});

效果:
在这里插入图片描述
2. 继承接口:

public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);RadioGroup radioGroup = findViewById(R.id.radiogroup_1);radioGroup.setOnCheckedChangeListener(this);//this在此使用的多态的属性,表示继承的接口类而不是MainActivity类}@Override//实现接口中的抽象类public void onCheckedChanged(RadioGroup group, int checkedId) {switch (checkedId){case R.id.radiobutton_man:{Log.i("radiobutton_man","男生");break;}case R.id.radiobutton_woman:{Log.i("radiobutton_woman","女生");break;}}}
}

效果:
在这里插入图片描述

3.7_CheckBox的使用

<CheckBoxandroid:id="@+id/chaoxiong"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="超凶"></CheckBox>
CheckBox checkBox = findViewById(R.id.chaoxiong);//获取控件checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {//进行监听@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (isChecked){//如果被选中Log.i("OnCheckedChange",buttonView.toString()+"被选中");}}});

3.8_Toast提示的使用

Toast.makeText(MainActivity.this,"被选中",Toast.LENGTH_LONG).show();

3.9_AlertDialog的使用

3.9.1_AlertDialog的简单使用

        <Buttonandroid:id="@+id/button_alterdialog"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="删除"android:onClick="delete"/>
public void delete(View v){AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("确认").setIcon(R.mipmap.why).setMessage("确定删除吗?").setPositiveButton("确认", new DialogInterface.OnClickListener() {//创建确认选项按钮及其点击事件@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {//创建取消选项按钮及其点击事件@Overridepublic void onClick(DialogInterface dialog, int which) {}});//下面两个千万不能忘记AlertDialog dialog = builder.create();//创建dialog.show();//显示}

效果:
在这里插入图片描述

3.9.2_AlertDialog的单选框使用

<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="选择小周周的午餐"android:onClick="select"></Button>
public void select(View view){AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("馋的流口水了都").setIcon(R.mipmap.greedy).setSingleChoiceItems(new String[]{"奥尔良鸡腿", "菠萝", "冰激凌"}, 0, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "中午吃"+which, Toast.LENGTH_SHORT).show();}});//下面两个千万不能忘记AlertDialog dialog = builder.create();//创建dialog.show();//显示}

效果:
在这里插入图片描述

3.9.3_AlertDialog的自定义界面的使用

<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="打开自定义界面"android:onClick="customView"></Button>
public void customView(View view){AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("新窗口").setView(R.layout.activity_new);//下面两个千万不能忘记AlertDialog dialog = builder.create();//创建dialog.show();//显示};

效果:
在这里插入图片描述

3.10_ListView的使用

在这里插入图片描述

3.10.1_SimpleAdapter的使用(略)

3.10.2_ArrayAdapter的使用

<ListViewandroid:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="match_parent"></ListView>
ListView listView = findViewById(R.id.listview);String[] name = {"菠萝","青皮桔","香蕉","西瓜"};ArrayAdapter arrayAdapter = new ArrayAdapter(newActivity.this,android.R.layout.simple_list_item_1,android.R.id.text1,name);listView.setAdapter(arrayAdapter);

3.10.3_BaseAdapter的使用(略)

3.11_ContextMenu长按事件

在这里插入图片描述
详解请转

3.12_页面分栏LayoutInflater

在这里插入图片描述
代码详情

4_生命周期与intent的使用

4.1_生命周期

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);LogUtils.d(TAG,"onCreate ---> 创建时调用");
}@Override
protected void onRestart() {super.onRestart();LogUtils.d(TAG,"onRestart ---> 重启时调用");
}@Override
protected void onStart() {super.onStart();LogUtils.d(TAG,"onStart ---> 即将可见不可交互时调用");
}@Override
protected void onResume() {super.onResume();LogUtils.d(TAG,"onResume ---> 可见可交互时调用");
}@Override
protected void onPause() {super.onPause();LogUtils.d(TAG,"onPause ---> 即将暂停时调用");
}@Override
protected void onStop() {super.onStop();LogUtils.d(TAG,"onStop ---> 即将停止不可见时调用");
}@Override
protected void onDestroy() {super.onDestroy();LogUtils.d(TAG,"onDestroy ---> 即将销毁时调用");
}

4.2_页面跳转

AndroidManifest.xml代码注意,若要显示某个页面,必须将其在此文件夹中声明

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication"><applicationandroid:allowBackup="true"android:icon="@mipmap/angry"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".newActivity"></activity></application></manifest>
public void windowSkip(View view){//按钮点击事件Intent intent = new Intent();intent.setClass(MainActivity.this,newActivity.class);//从前者跳往后者startActivity(intent);//启动}

4.3_intent跳转页面传值

MainActivity文件:

    public void loginSkip(View view){Intent intent = new Intent();intent.setClass(MainActivity.this,LoginActivity.class);//从前者跳往后者intent.putExtra("name","jiajia");intent.putExtra("sex","男");intent.putExtra("hobby",new String[] {"篮球","乒乓球","羽毛球"});startActivity(intent);//启动}
}

LoginActivity文件:

public class LoginActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);//接收传值Intent intent = getIntent();String name = intent.getStringExtra("name");String sex = intent.getStringExtra("sex");String[] hobbies = intent.getStringArrayExtra("hobby");Log.i("LoginActivity",name+sex+hobbies);//打印}
}

4.4_intent传值自定义类

只要继承了parcelable或者serializable接口就可以进行传值,注意接收的时候需要强行转成此自定义类的类型

4.5_回传数据

回传数据

与无回传数据类似,不同之处在于:

  1. 启动跳转页面的函数需要加上第二个int参数用于标识跳转的页面
startActivityForResult(intent, nubmber);
  1. 当关闭跳转页面的时候需要返回两个参数(一个是判断是否有返回数据的>int类型,一般RESULT_OK=1,RESULT_CANCELED=0,一个是data)
  String uriString = editText.getText().toString();//获取数据Uri data = Uri.parse(uriString)//转换数据类型//设置结果其中Intent()第二个参数类型是Uri//Intent result = new Intent(null, data);setResult(RESULT_OK, result);//设置返回结果,当此页面结束时返回
  1. 原页面接收数据
//重写父类Activity的函数onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data){
//requestCode是启动跳转页面时赋予页面的int类型的number标识符  startActivityForResult(intent, nubmber);
//resultCode是跳转页面返回数据结果时设置的判断是否有结果回传的int参数  setResult(RESULT_OK, result);
super.onActivityResult(requestCode, resultCode, data);switch(requestCode){case number1://如果是页面number1if (resultCode == RESULT_OK){//判断是否回传了数据Uri uriData = data.getData();//获取数据}break;case SUBACTIVITY2:break;}
}

5_Server服务的使用

public class SimpleRandomServiceDemo extends AppCompatActivity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_simple_random_service_demo);Button startButton = (Button)findViewById(R.id.start);Button stopButton = (Button)findViewById(R.id.stop);final Intent serviceIntent = new Intent(this, RandomService.class);startButton.setOnClickListener(new Button.OnClickListener(){public void onClick(View view){startService(serviceIntent);}});stopButton.setOnClickListener(new Button.OnClickListener(){public void onClick(View view){stopService(serviceIntent);}});}
}

public class RandomService extends Service {@Overridepublic void onCreate() {super.onCreate();Toast.makeText(this, "(1) 调用onCreate()",Toast.LENGTH_LONG).show();}@Overridepublic void onStart(Intent intent, int startId) {super.onStart(intent, startId);Toast.makeText(this, "(2) 调用onStart()",Toast.LENGTH_SHORT).show();double randomDouble = Math.random();String msg = "随机数:"+ String.valueOf(randomDouble);Toast.makeText(RandomService.this,msg, Toast.LENGTH_SHORT).show();}@Overridepublic void onDestroy() {super.onDestroy();Toast.makeText(this, "(3) 调用onDestroy()",Toast.LENGTH_SHORT).show();}@Overridepublic IBinder onBind(Intent intent) {return null;}
}
<application
<service android:name=".first.RandomService"></service>
</application>

6_小问题、小技巧汇总

6.1_去除AppCompatActivity自带标题

在这里插入图片描述
进入AndroidManifest.xml文件
在这里插入图片描述
ctrl进入AppTheme改代码如下

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

在这里插入图片描述

6.2_解决不能安装问题

Android studio 打包apk后发给别人,安装失败。

失败原因显示:应用是非正式发布版本,当前设备不支持安装。

在自己手机上也无法安装,之后连接USB进行调试时可以运行,打包成APK安装就会显示下图错误:

在这里插入图片描述

2.原因分析:
造成该问题的原因是Android Studio 3.0会在debug apk的manifest文件application标签里自动添加 android:testOnly="true"属性。该属性导致在IDE中使用Run生成的apk在大部分手机上只能用adb install -t 来安装。

   这种apk在某些手机上甚至安装不了。

3.解决方法:
在gradle.properties 文件中添加如下指令:

android.injected.testOnly=false

6.3_Toast在新线程中不能正常使用

由于主线程会自动初始化loop,所以在主线程不会报错

//在所在线程加
Looper.prepare();//对loop进行初始化,不然toast报异常
Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
Looper.loop();//对loop进行初始化,不然toast报异常

6.4_按钮透明

两大属性介绍:

android:alpha="0" //实现按钮透明化,按钮就不可见了,包括上面的文字
android:background="#00000000"//设置按钮背景,背景透明,但是按钮上的文字仍然可见。也可以把图片设置为背景

6.5_添加gif图片

转自

6.6_自动导包

自动导包方法import

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景?

前言生活中用到的锁&#xff0c;用途都比较简单粗暴&#xff0c;上锁基本是为了防止外人进来、电动车被偷等等。但生活中也不是没有 BUG 的&#xff0c;比如加锁的电动车在「广西 - 窃格瓦拉」面前&#xff0c;锁就是形同虚设&#xff0c;只要他愿意&#xff0c;他就可以轻轻松…

2万字,看完这篇才敢说自己真的懂线程池!

前言 线程池可以说是 Java 进阶必备的知识点了&#xff0c;也是面试中必备的考点&#xff0c;可能不少人看了一些文章后能对线程池工作原理说上一二&#xff0c;但这还远远不够&#xff0c;如果碰到比较有经验的面试官再继续追问&#xff0c;很可能会被吊打&#xff0c;考虑如下…

西南大学校园GIS平台

原文:西南大学校园GIS平台系统架构是B/S,开发语言是C#、silverlight&#xff0c;开发平台是.NET&#xff0c;数据库为sqlserver&#xff0c;这是我读研究生时候自己做的作品&#xff0c;以自己的母校为地图&#xff0c;进行GIS相关的功能分析&#xff0c;核心的模块有&#xff…

Android studio小问题解决

1_代码识别不出来问题 2_项目SDK与本地不匹配 先查看项目的SDK 增加本地SDK

2万字长文包教包会 JVM 内存结构

点击蓝色“Java中文社群”关注我哟加个“星标”&#xff0c;一起成长&#xff0c;做牛逼闪闪的技术人JVM ≠ Japanese Videos Man写这篇的主要原因呢&#xff0c;就是为了能在简历上写个“熟悉JVM底层结构”&#xff0c;另一个原因就是能让读我文章的大家也写上这句话&#xf…

虹软安卓人脸识别初学

1_下载SDK 进入虹软官网&#xff1a; 点击人脸识别SDK 进入开发者中心&#xff08;注册登录&#xff09; 新建应用并添加SDK 输入相应信息&#xff0c;确认 下载sdk 2_run示例代码注意事项 跑不起来的解决方法&#xff08;SDK版本不一致&#xff09; 3_激活并使用

css圆在中心根据宽度缩放_根据CSS中的容器宽度重新缩放字体

css圆在中心根据宽度缩放Introduction: 介绍&#xff1a; Dealing with fonts is a very interesting thing to do as fonts bring out the appearance of your website or a web page so you must choose the ideal fonts for your website or web page that helps in making…

Java中不可或缺的59个小技巧,贼好用!

来源&#xff1a;https://blog.dogchao.cn/?p70《Effective JavaJava》名著&#xff0c;必读。如果能严格遵从本文的原则&#xff0c;以编写API的质量来苛求自己的代码&#xff0c;会大大提升编码素质。以下内容只记录了我自己整理的东西&#xff0c;还是建议读原文。为了聚焦…

第一次使用Sourcetree成功上传gitee记录

第一次使用Sourcetree成功上传gitee记录2_克隆gitee仓库到本地1_设置密钥公钥3_上传本地工作区进而上传到gitee4_最后一步&#xff0c;将文件从本地master提交到gitee5_小问题汇总5.1_git远端打不开5.2_当有多个仓库在使用时设置多个密钥公钥5.3_账户公钥和仓库公钥使用ssh密钥…

SUBSTR函数的使用

http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions181.htm#i87066Substr语法&#xff1a;substr函数返回字符的部分&#xff0c;从postition开始定位&#xff0c;返回可选的字符长度substring_length。substr根据char字符集的字节数来计算长度。substrb则使用位…

坑爹的 Lombok,把我害惨了!

来源&#xff1a;juejin.im/post/6881432532332576781序言去年在项目当中引入了Lombok插件&#xff0c;着实解放了双手&#xff0c;代替了一些重复的简单工作(Getter,Setter,toString等方法的编写)&#xff0c;但是&#xff0c;在使用的过程当中&#xff0c;也发现了一些坑&…

数据结构学习笔记(六)链表算法题

假期结束&#xff0c;看点题目。 第一题 问题 设顺序表用数组A[]表示&#xff0c;表中元素存储在数组下标1~mn的范围内&#xff0c;前m个元素递增有序&#xff0c;后n个元素递增有序&#xff0c;设计一个算法&#xff0c;使得整个顺序表有序。 &#xff08;1&#xff09;给出算…

安卓第一次搭建C/S架构

1_数据库 2_服务端 服务端简单搭建准入门 使用json&#xff0c;导入jar包复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 提取码&#xff1a; 3afj 在项目中建一个文件夹并粘贴进去 json与list的互转&#xff1a; import com.alibaba.fastjson.JSON;import j…

面试官不讲武德,竟然问了我18个JVM问题!

前言GC 对于Java 来说重要性不言而喻&#xff0c;不论是平日里对 JVM 的调优还是面试中的无情轰炸。这篇文章我会以一问一答的方式来展开有关 GC 的内容。本文章所说的 GC 实现没有特殊说明的话&#xff0c;默认指的是 HotSpot 的。我先将十八个问题都列出来&#xff0c;大家可…

2月第3周国内域名商TOP10:爱名网排名升至第八

IDC评述网&#xff08;idcps.com&#xff09;02月26日报道&#xff1a;根据WebHosting.info公布的最新数据显示&#xff0c;在2月第3周&#xff0c;国内域名商域名总量十强总体呈下降趋势。其中&#xff0c;降幅最大的是DNSPod&#xff0c;净减16,762个。另外&#xff0c;中国数…

Android JSON数据与实体类之间的相互转化-------GSON的简单用法

Android JSON数据与实体类之间的相互转化-------GSON的用法1_Gson的导入1.1_方法一&#xff1a;直接导入jar包1.2_方法二&#xff1a;引入依赖2_json形式的字符串互转实体对象2.1_json字符串与单个实体对象互转2.2_json与list互转3_遇到的问题3.1_前后端对象成员变量类型不一致…

5种SpringBoot热部署方式,你用哪种?

来源 | my.oschina.net/ruoli/blog/1590148Spring Boot 中 5 种热部署方式如下&#xff1a;1、模板热部署2、使用调试模式Debug实现热部署3、spring-boot-devtools4、Spring Loaded5、JRebel接下来我们分别来看。1、模板热部署在 Spring Boot 中&#xff0c;模板引擎的页面默认…

ContextMenu长按事件

/* ContextMenu菜单就是长按某一个组件&#xff0c;就会在屏幕的中间弹出ContextMenu&#xff0c;这里设置为长按文本框弹出ContextMenu菜单*/public class MyContextMenu extends AppCompatActivity {/** Called when the activity is first created. */final static int CONT…

熬夜都要看完的 Spring 干货!

在 Java 后端框架繁荣的今天&#xff0c;Spring 无疑是最最最火热&#xff0c;也是必不可少的开源框架&#xff0c;像腾讯、阿里、字节跳动等一线互联网公司都选择 Spring 作为基础的开发框架。而 Spring 生态圈里最让人兴奋的莫过于 Spring Boot 框架。他简化了使用 Spring 的…

2014值得期待的Erlang两本新书

在2014年的开头就有这样一个令人振奋的好消息,Erlang有一本新书即将出版 《The Erlang Runtime System》,其作者happi在2013年3月份发布了这本书的写作计划:"The plan is to have the book done by the end of 2013 and published early 2014. ",出版方是O’Reilly,依…