备忘录

        一直都想把自己写过的安卓开发小程序整理一下,做成文档,但是一直没有机会,刚好,最近都不是很忙,于是今天就将之前花了好几天才完成的备忘录整理下,跟大家分享分享。要完成这个程序,主要从以下几步入手:

1、首先写一个类继承辅助类SQLiteOpenHelper,在里面重写Oncreate方法和update方法(一般情况下只有当数据库的版本发生改变时才会调用该方法,本程序中没有使用到该方法)

2、在相继写以下几个类,都继承Activity

    (1)MainActivity ,在该类中显示备忘录的主页布局

        主页面布局:一个按钮(Button),一个ListView

    (2)AddActivity(代码中的Add类) ,在该页中显示备忘录点击添加按钮后显示的页面的布局

        添加页面布局:三个编辑框(EditView)(题目、时间、内容)、两个按钮(Button)(保存、取消)

    (3)LookActivity(代码中的Look类),在该页中显示点击ListView条目(每一条备忘录里的信息)后显示的产看页面的布局

        查看页面布局:三个编辑框(分别显示题目、时间、内容),设置成不可编辑

    (4)MotifyActivity(代码中的Motify类),在该页中显示长按ListView条目后,进入的修改页面的布局

        与上面查看页面相似,多一个按钮,可以编辑。

    (5)还要单独设置一个布局,用来表示一条显示在ListView列表里的消息     

3、在长按ListView条目时出现提示消息(删除/修改),

        (1)点击删除:就直接从数据库中删除该条信息

    (2)点击修改:就进入到修改页面

4、在添加页面里,点击取消按钮弹出提示消息(保存/不保存)

    (1)点击不保存:直接返回到主页面

    (2)点击保存:将该条信息插入到数据库中,然后返回到主页面

5、在该项目的配置文件里面,将上面的(AddActivity、LookActivity、MotifyActivity类配置一下)

    <activityandroid:name="AddActivity"></activity>

    <activityandroid:name="LookActivity"></activity>

    <activityandroid:name="MotifyActivity"></activity>

6、代码部分:

<span style="font-size:12px;"><------------------JAVA代码部分-------------->
/*主函程序*/

package com.example.memo;
/*
 *主页面
 *要求:
 *1、显示已经存在的备忘录信息
 *2、有个添加按钮,点击添加按钮可以跳到编辑页面
 *3、点击条目实现查看信息
 *4、长按条目跳出提示框,是否删除条目。
 *	  
 */
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {
	private MySqlDb mdb = null;
	private SQLiteDatabase db = null;
	ListView lv;

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

		// 创建数据中的表
		mdb = new MySqlDb(MainActivity.this);
		db = mdb.getReadableDatabase();

		lv = (ListView) findViewById(R.id.ListView1);
		fresh();

		// 点击条目
		lv.setOnItemClickListener(new OnItemClickListener() {
			@SuppressWarnings("unchecked")
			@Override
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long id) {
				// 找到该条目,并将其放在map中。
				Map<String, Object> map = (Map<String, Object>) parent
						.getItemAtPosition(position);
				// 传输该条目的Id
				Intent intent = new Intent();
				intent.putExtra("id", map.get("m_id").toString());
				intent.setClass(MainActivity.this, LookMemo.class);
				startActivity(intent);
			}
		});

		// 长按条目
		lv.setOnItemLongClickListener(new OnItemLongClickListener() {
			String lid;

			@SuppressWarnings("unchecked")
			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View v,
					int position, long id) {

				Map<String, Object> map = (Map<String, Object>) parent
						.getItemAtPosition(position);
				lid = map.get("m_id").toString();

				// 带按钮的提示框
				new AlertDialog.Builder(MainActivity.this)
						.setTitle("提示消息")
						.setPositiveButton("修改",
								new DialogInterface.OnClickListener() {
									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										Intent intent = new Intent();
										intent.putExtra("id", lid);
										intent.setClass(MainActivity.this,
												Motify.class);
										startActivity(intent);
									}
								})
						.setNegativeButton("删除",
								new DialogInterface.OnClickListener() {
									@Override
									public void onClick(DialogInterface arg0,
											int arg1) {
										delete(lid);
										fresh();
									}
								}).show();
				return false;
			}
		});

		// 点击按钮
		Button btn = (Button) findViewById(R.id.add);
		btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent();
				intent.setClass(MainActivity.this, Add.class);
				startActivity(intent);
			}
		});
	}

	// 重启该页面,刷新该页面的数据
	public void onRestart() {
		super.onRestart();
		fresh();
	}

	// 刷新(将数据库中的信息在主页面的ListView列表中通过适配器显示出来)
	public void fresh() {
		SimpleAdapter sa = new SimpleAdapter(MainActivity.this, getList(),
				R.layout.items, new String[] { "m_title" },
				new int[] { R.id.tv });
		lv.setAdapter(sa);
	}

	// 获得数据库中的数据
	public List<Map<String, Object>> getList() {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		int count = 0;
		Cursor cs = db.query("Memo", new String[] { "m_id", "m_title",
				"m_time", "m_context" }, null, null, null, null, null);
		while (cs.moveToNext()) {
			int m_id = cs.getInt(cs.getColumnIndex("m_id"));
			if (m_id > count) {
				count = m_id;
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("m_title", cs.getString(cs.getColumnIndex("m_title")));
				map.put("m_time", cs.getString(cs.getColumnIndex("m_time")));
				map.put("m_context",
						cs.getString(cs.getColumnIndex("m_context")));
				map.put("m_id", cs.getString(cs.getColumnIndex("m_id")));
				list.add(map);
			}
		}
		return list;
	}

	// 删除数据库中的数据
	public void delete(String id) {
		String[] id1 = { id };
		db.delete("Memo", "m_id=?", id1);
	}
}

/*添加信息的程序*/

package com.example.memo;
/*
 * 功能:添加一条备忘录信息、
 * 要求:点击保存就插入到数据裤中,否则就回到主页面
 */
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Add extends Activity {
	private MySqlDb mdb = null;
	private SQLiteDatabase db = null;

	private EditText edtitle;
	private EditText edtime;
	private EditText edcontext;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.addpage);

		mdb = new MySqlDb(Add.this);
		db = mdb.getReadableDatabase();

		Button[] btn = new Button[2];
		btn[0] = (Button) findViewById(R.id.btnsave);
		btn[1] = (Button) findViewById(R.id.btncancle);
		
		for (int i = 0; i < btn.length; i++) {
			btn[i].setOnClickListener(new OnClickListener() {  //按钮点击事件
				@Override
				public void onClick(View v) {
					Button bt = (Button) v;
					String str = bt.getText().toString();     //获得按钮上的信息

					edtitle = (EditText) findViewById(R.id.edtitle);
					edtime = (EditText) findViewById(R.id.edtime);
					edcontext = (EditText) findViewById(R.id.edcontext);
					
					if (str.equals("保存")) {
						/*
						 * 如果点击的是保存按钮,就将信息插入到数据库。并跳回主页面
						 */
						String title = edtitle.getText().toString();
						String time = edtime.getText().toString();
						String context = edcontext.getText().toString();

						sava(db, title, time, context);   // 将信息插入到数据库   
						Intent intent = new Intent();
						intent.setClass(Add.this, MainActivity.class);
						startActivity(intent);   //跳回主页面
					} else {
						/*
						 * 如果点击的不是保存按钮,就弹出提示框:是否需要保存信息,点击保存,就将信息插入到数据库,
						 * 否则就跳回主页面
						 */
						new AlertDialog.Builder(Add.this)
								.setTitle("信息")
								.setMessage("是否需要保存")
								.setPositiveButton("保存",
										new DialogInterface.OnClickListener() {
											public void onClick(
													DialogInterface dialog,
													int which) {
												String title = edtitle
														.getText().toString();
												String time = edtime.getText()
														.toString();
												String context = edcontext
														.getText().toString();
												sava(db, title, time, context);
												Intent intent = new Intent();
												intent.setClass(Add.this,
														MainActivity.class);
												startActivity(intent);
											}

										})
								.setNegativeButton("不保存",
										new DialogInterface.OnClickListener() {
											@Override
											public void onClick(
													DialogInterface dialog,
													int arg1) {
												Intent intent = new Intent();
												intent.setClass(Add.this,
														MainActivity.class);
												startActivity(intent);
												dialog.cancel();
											}
										}).show();
					}
				}
			});
		}
	}

	/*
	 * 功能:向数据库中插入信息
	 */
	public void sava(SQLiteDatabase db, String title, String time,
			String context) {
		ContentValues cv = new ContentValues();
		cv.put("m_title", title);
		cv.put("m_time", time);
		cv.put("m_context", context);
		db.insert("Memo", null, cv);
	}
}


/*修改信息的程序*/
package com.example.memo;
/*
 * 功能:修改信息
 * 要求:能够修改信息,点击保存按钮能够将信息插入到数据库,
 */
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Motify extends Activity {

	private MySqlDb mdb = null;
	private SQLiteDatabase db = null;
	private EditText edtitle;
	private EditText edtime;
	private EditText edcontext;

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

		mdb = new MySqlDb(Motify.this);
		db = mdb.getReadableDatabase();

		// 接受数据(id)
		Intent intent = getIntent();
		String id = intent.getStringExtra("id");

		edtitle = (EditText) findViewById(R.id.mtftitle);
		edtime = (EditText) findViewById(R.id.mtftime);
		edcontext = (EditText) findViewById(R.id.mtfcontext);

		//查询m_id与id相等的数据,并将他显示在当前页面上
		Cursor cs = db.query("Memo", new String[] { "m_id", "m_title",
				"m_time", "m_context" }, "m_id=?", new String[] { id }, null,
				null, null);

		while (cs.moveToNext()) {
			edtitle.setText(cs.getString(cs.getColumnIndex("m_title")));
			edtime.setText(cs.getString(cs.getColumnIndex("m_time")));
			edcontext.setText(cs.getString(cs.getColumnIndex("m_context")));
		}

		//点击按钮将数据保存到数据库中
		Button btn = (Button) findViewById(R.id.btnmtfsave);
		btn.setOnClickListener(new OnClickListener() {
			// 接受数据(id)
			Intent intent = getIntent();
			String id = intent.getStringExtra("id");

			@Override
			public void onClick(View v) {
				EditText edtitle = (EditText) findViewById(R.id.mtftitle);
				EditText edtime = (EditText) findViewById(R.id.mtftime);
				EditText edcontext = (EditText) findViewById(R.id.mtfcontext);

				String edt = edtitle.getText().toString();
				String edttime = edtime.getText().toString();
				String edc = edcontext.getText().toString();
				updata(db, edt, edttime, edc, id);  //更新信息
				Intent intent = new Intent();
				intent.setClass(Motify.this, MainActivity.class);
				startActivity(intent);   //跳回主页面
			}
		});
	}

	// 跟新数据库中的数据
	public void updata(SQLiteDatabase db, String edt, String edttime,
			String edc, String id) {
		ContentValues cv = new ContentValues();
		cv.put("m_title", edt);
		cv.put("m_time", edttime);
		cv.put("m_context", edc);
		db.update("Memo", cv, "m_id=?", new String[] { id });
	}
}

/*查看信息的程序*/
package com.example.memo;
/*
 * 功能:查看备忘录信息
 * 要求:只能查看信息,不能修改信息
 */
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.EditText;

public class LookMemo extends Activity{
	
	private MySqlDb mdb = null;
	private SQLiteDatabase db =null;
	private EditText edtitle;
	private EditText edtime;
	private EditText edcontext;
	
	protected void onCreate(android.os.Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fragment_main);	
		
		mdb = new MySqlDb(LookMemo.this);
		db = mdb.getReadableDatabase();
			 
		//接受数据(id)
		Intent intent = getIntent();
		String id = intent.getStringExtra("id");
		
		 edtitle = (EditText)findViewById(R.id.title);
		 edtime = (EditText)findViewById(R.id.time);
		 edcontext = (EditText)findViewById(R.id.context);
		
		 //查询id号为制定id的条目
		Cursor cs = db.query("Memo", new String[]{"m_id","m_title","m_time",
				"m_context"}, "m_id=?", new String[]{id}, null, null, null);

		while(cs.moveToNext())
		{
			//将制定id的条目从数据中找出,将其内容在另一个页面里显示出来
			edtitle.setText(cs.getString(cs.getColumnIndex("m_title")));
			edtime.setText(cs.getString(cs.getColumnIndex("m_time")));
			edcontext.setText(cs.getString(cs.getColumnIndex("m_context")));
		}	
		cs.close();
		db.close();
		mdb.close();
	};
}

/*数据库辅助类的程序*/
package com.example.memo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySqlDb extends SQLiteOpenHelper {

	public MySqlDb(Context context) {
		super(context, "Memo", null, 1);
	}

	@SuppressWarnings("unused")
	@Override
	public void onCreate(SQLiteDatabase db) {
		int m_id;
		String m_title;
		String m_time;
		String m_context;
		String sql = "create table Memo(m_id integer primary key,"
				+ "m_title varchar(20),"
				+ "m_time varchar(20),"
				+ "m_context varchar(400))";
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
</span><pre name="code" class="html"><span style="font-size:12px;"><--------------------XML代码部分—————>

<!——主页面部分——>
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    
    android:background="#90F7F7"
    android:columnCount="1"
    android:rowCount="1" >

    <Button
        android:id="@+id/add"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:layout_column="0"
        android:layout_row="0"
        android:layout_marginBottom="164dp"
        android:text="@string/add" 
        />

    <ListView
        android:id="@+id/ListView1"
        android:layout_width="match_parent"
        android:layout_height="624dp"
        android:layout_column="0"
        android:layout_row="0"
        android:fadeScrollbars="false"
        android:layout_gravity="left|top"
        android:layout_marginTop="60dp"
        android:clickable="true"
         >
    </ListView>

</GridLayout>

<!——添加页面部分——>
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#BBFFFF"
    android:columnCount="7"
    android:rowCount="3" >

    <EditText
        android:id="@+id/edtitle"
        android:layout_width="280dp"
        android:layout_height="60dp"
        android:layout_column="0"
        android:layout_columnSpan="5"
        android:layout_row="0"
        android:hint="@string/title" />
    <requestFocus />

    <Button
        android:id="@+id/btnsave"
        android:layout_width="80dp"
        android:layout_height="60dp"
        android:layout_column="5"
        android:layout_columnSpan="2"
        android:layout_marginRight="0dp"
        android:layout_row="0"
        android:text="@string/save" />

    <EditText
        android:id="@+id/edtime"
        android:layout_width="280dp"
        android:layout_height="60dp"
        android:layout_column="4"
        android:layout_row="1"
        android:hint="@string/time" />

    <Button
        android:id="@+id/btncancle"
        android:layout_width="80dp"
        android:layout_height="60dp"
        android:layout_column="5"
        android:layout_columnSpan="2"
        android:layout_row="1"
        android:text="@string/cancle" />

    <EditText
        android:id="@+id/edcontext"
        android:layout_width="fill_parent"
        android:layout_height="449dp"
        android:layout_column="0"
        android:layout_columnSpan="7"
        android:layout_row="2"
        android:singleLine="false"
        android:gravity="top"
        android:hint="@string/context" />

</GridLayout>

<!——修改面部分——>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:background="#90F7F7">

    <Button
        android:id="@+id/btnmtfsave"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:text="@string/mtfsave" />

    <EditText
        android:id="@+id/mtftitle"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:text="@string/mtftitle" />

    <EditText
        android:id="@+id/mtfcontext"
        android:layout_width="fill_parent"
        android:layout_height="320dp"
        android:layout_above="@+id/btnmtfsave"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/mtftime"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:text="@string/mtfcontext" />

    <EditText
        android:id="@+id/mtftime"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="46dp"
        android:ems="10"
        android:text="@string/mtftime" >

        <requestFocus />
    </EditText>

</RelativeLayout>


<!——查看面部分——>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#90F7F7"
    tools:context="com.example.memo.MainActivity$PlaceholderFragment" >

    
   <EditText
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:inputType="text"
        android:focusable="false"
        android:ems="10" />
        <requestFocus />

    <EditText
        android:id="@+id/time"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/title"
        android:inputType="datetime"
        android:focusable="false"
        android:ems="10" >

    </EditText>

    <EditText
        android:id="@+id/context"
        android:layout_width="fill_parent"
        android:layout_height="320dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/time"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:focusable="false"
        android:singleLine="false" />
    
</RelativeLayout>

<!——item条目面部分——>
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
   
android:layout_height="match_parent"
    
android:orientation="vertical" >
  
    
<!-- ListView元素 -->
    
	<TextView
        
		android:id="@+id/tv"
        
		android:layout_width="fill_parent"
        
		android:layout_height="45dp"
        
		android:ellipsize="end"
        
		android:textSize="20sp" />

</LinearLayout>
</span>

}}

 
<span style="font-size:12px;"><!-----AndroidManifest.XML文件------>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.memo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.memo.MainActivity"
            android:launchMode="singleTask"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         <activity 
             android:name="Add"
             android:launchMode="singleTask"></activity>
         <activity
              android:name="LookMemo"
              android:launchMode="singleTask"></activity>
         <activity 
             android:name="Motify"
             android:launchMode="singleTask"></activity>
    </application>

</manifest>
</span>

<span style="font-size:12px;"><!-----Strings.XML部分---------->

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">备忘录</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    
     <string name="title">请输入标题</string>
    <string name="time">请输入时间</string>
    <string name="context">请输入内容</string>
    <string name="add">添加</string>
    <string name="save">保存</string>
    <string name="cancle">取消</string>
    <string name="delete">删除</string>
    <string name="mtfsave">保存</string>
    <string name="mtftitle"></string>
    <string name="mtftime"></string>
    <string name="mtfcontext"></string>
</resources>
</span>



Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值