ListView中的setAdapter() 方法 ListView通过适配器来显示内容的,适配器有两种 一种是ArrayAdapter 另一种是SimpleAdapter
ArrayAdapter是解析一个数组,叫这个数组呈现出ListView效果,注意最后用setConnentView方法将这ListView加入到手机界面进行显示,而Activity本身不用set ConnentView加载本来的main.xml 文件
SimpleAdapter是解析一个List中含有map的集合,这个结构相比一个数组复杂的多,SimpleAdapter解析这个复杂的结构会叫我们可以给客户呈现结构更完美的ListView。
ArrayAdapter 简单的文字列表
simpleAdapter 自己定义一个丰富的列表
SimpleCursorAdapter可以从数据库中读取数据加到列表上
BaseAdapter可以在列表上加处理事件
package com.example.gdlistviewarrayadapter;
public class MainActivity extends Activity {
private ListView listview;
private String data[] ={"周杰伦","佟大为","李小双","文章","范冰冰"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listview=new ListView(this);
// 实例化ListView组件
listview.setAdapter(
new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, this.data));
/*
* android.R.layout.simple_list_item_1 是调用系统提供的Id
* **/
this.setContentView(listview);
//设置这个布局
}
}
package com.example.gdlistviewarrayadapter;
public class MainActivity extends Activity {
private ListView listview;
private String data[][] ={ { "姓名","周杰伦"},{ "姓名","郭庆雨"}};
private SimpleAdapter sip;
private List<Map<String ,String>> list = new ArrayList<Map<String,String>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
listview=(ListView)findViewById(R.id.list);
for(int i=0;i<data.length;i++){
Map<String ,String > map= new HashMap<String, String>();
map.put("A", data[i][0]);
map.put("B", data[i][1]);
/*
* map 里面的Key值是随意定义的 只要是和下面的
* new SimpleAdapter(this,
* list, R.layout.datalist,
* new String[] {"A","B"}, new int[]{R.id._id,R.id.name});
* 中的 new String[]{}数组里面的数据一样就好
* **/
list.add(map);
}
sip=
new SimpleAdapter(this,
list,
R.layout.datalist, //把模板布局夹到SimpleAdapter中去
new String[] { "A","B"}, new int[]{R.id._id,R.id.name});
/*
* new SimpleAdapter(this,
* list, R.layout.datalist,
* new String[] {"A","B"}, new int[]{R.id._id,R.id.name});
*中的new String[]{"A","B"}和 new int []{R.id._id,R.id.name} 是把 我们的Map中
*那个key值与我们模板(datalist.xml)布局(layout)中相应的组件布局一一对应
* **/
listview.setAdapter(this.sip);
/*new SimpleAdapter(this,
* list, R.layout.datalist,
* new String[] {"A","B"}, new int[]{R.id._id,R.id.name});
*中的 R.layout.datalist, 是把模板布局加到SimpleAdapter中去
* listview.setAdapter(this.sip)是把SimpleAdapter添加到ListView 中去
* ListView 又在显示布局(main.xml)中这样模板布局(layout)datalist.xml也同时
* 被加到显示布局main.xml中去
* **/
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- 本布局用于显示布局 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="listView"
/>
<!-- 用于显示题目 -->
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<!-- 本ListView用于加载模板布局datalist.xml -->
</LinearLayout>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<!-- 注意 用于模板的Layout的高度不能设置沾满整个全屏
如果沾满了用于显示的Layout将不起作用 -->
<TableRow >
<TextView
android:id="@+id/_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</TableRow>
</TableLayout>
Dialog extends Object的子类AlertDialog和CharacterPickerDialog
AlertDialog extends Dialog的子类DataPickerDialog,ProgressDialog和TimePickerDialog
AlertDialog.Builder不是AlertDialog的子类而是AlertDialog的嵌套类,
Public void class AlertDialog extends Dialog{
Pubic static class AlertDialog.Builder extends Object{
}
}
在图形界面中,对话框也是人机交互的一种重要形式,程序可以通话对话框对用户进行一些信息的提示
,而用户也可以通过对话框和程序进行一些简单的交互操作,Dialog 可以有一个按钮或是多个按钮或是列表选项,进行人家交互。
在android的开发中,所有的对话框都是从android.app.Dialog 类继承而来,此类的继承机构如下
Java.Long.Object
Android.app.Dialog
可以看出,此类直接继承自Object类,与View类没有任何继承关系。
但是如果要想实例化,AlertDialog类,往往要依靠其内部类,AlertDialog.Builder完成,在AlertDialog.Builder
类中定义的常用方法如下表
Dialog类定义的常用方法
NO |
方 法 |
类 型 |
描 述 |
1 |
Public void setTitle(CharSequence title) |
普通 |
设置对话框的显示标题 |
2 |
Public void setTitle(int title Id) |
普通 |
设置对话框的显示标题,内容为资源文件指定 |
3 |
Public void show() |
普通 |
显示对话框 |
4 |
Public void hide() |
普通 |
隐藏对话框 |
5 |
Public Boolean isShowing() |
普通 |
判断对话框是否显示 |
6 |
Public void setContentView() |
普通 |
设置View组件 |
7 |
Public void dismiss() |
普通 |
隐藏对话框 |
8 |
|||
9 |
|||
10 |
AlertDialog.Builder
NO |
方 法 |
类型 |
描述 |
1 |
Public AlertDialog.Buider(Context context) |
构造 |
创建AlertDialog.Builder对象 |
2 |
Public AlertDialog.Builder setPositiveButton(int textId,DialogInterFace.OnClickListener listener) |
普通 |
为对话框添加一个确定按钮,显示内容有资源文件制定,并设置监听操作 |
3 |
Public AlertDialog.Builder setNegativeButton(CharSequence text,DialogInterface.OnClickListener listener) |
普通 |
为对话框设置一个取消按钮,显示内容有资源文件制定,并设置监听操作 |
4 |
Public AlertDialog.Builder set NeutralButton(CharSequence text,DialogInterface.OnclickListener listener) |
普通 |
为对话框设置一个普通按钮 ,并设置监听 |
5 |
Public AlertDialog.Builder setMessage( int messageId) |
普通 |
设置显示信息(内容由资源ID引用) |
6 |
Public AlertDialog.Builder setMessage(CharSequence) |
普通 |
设置显示信息(内容由字符串直接组成) |
7 |
Public AlertDialog.Builder setItems( Int textId,DialogInterface.OnClickListener listener ) |
普通 |
将信息内容设置为列表项,列表项的内容由 String数组组成, 同时设置监听 |
8 |
Public AlertDialog.Builder setItems( CharSequence[] items,DialogInterface.OnClickListener listener ) |
普通 |
将信息设置为列表项,列表项由资源文件制定,同时设置监听 |
9 |
Public AlertDialog create() |
普通 |
创建AlertDialog的实例 |
10 |
Public AlertDialog setIcon(Drawable icon) |
普通 |
设置显示图标 |
11 |
Public AlertDialog setIcon(int iconId) |
普通 |
设置要显示的图标的资源ID |
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="104dp"
android:layout_marginTop="146dp"
android:text="Button" />
</RelativeLayout>
package com.example.alertdialogdemo;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button text=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(Button)findViewById(R.id.text);
text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("对话框");
builder.setMessage("显示提示信息");
builder.setIcon(R.drawable.ic_launcher);
AlertDialog alertDialog= builder.create();
alertDialog.show();
}
});
}
}
对话框Dialog可以设置按钮以及一些监听 来提示用户是否要退出程序,隐藏对话框,取消对话框,以及加上一些列表选项
NO |
接 口 名 称 |
描 述 |
1 |
DialogInterface.OnClickListener |
对话框单击事件处理 |
2 |
DialogInterface.OnCancelListener |
对话框取消事件处理 |
3 |
DialogInterface.OnDismissListener |
对话框隐藏事件处理 |
4 |
DialogInterface.OnkeyListener |
对话框键盘事件处理 |
5 |
DialogInterface.OnMultiChoiceClickListener |
对话框多选事件处理 |
6 |
DialogInter.OnShowListener |
对话框显示事件处理 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
package com.example.alertdialogdemo;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button text=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(Button)findViewById(R.id.text);
text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("对话框");
builder.setMessage("显示提示信息");
builder.setIcon(R.drawable.ic_launcher);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
//添加一个确定按钮
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
MainActivity.this.finish();
//结束Activity
}
} );
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
// 设置取消按钮
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.setNeutralButton("普通按钮",new DialogInterface.OnClickListener() {
//设置普通按钮
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
AlertDialog alertDialog= builder.create();
alertDialog.show();
}
});
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/but"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击" />
</LinearLayout>
package com.example.dialoglinstenerdemo;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button but=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
but=(Button)findViewById(R.id.but);
but.setOnClickListener(new DialogListener());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==event.KEYCODE_BACK){
MainActivity.this.exitDialog();
}
return false;
}
class DialogListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MainActivity.this.exitDialog();
}
}
private void exitDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("程序退出");
builder.setMessage("你确定退出么?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
MainActivity.this.finish();
}
});
builder.setNegativeButton(R.string.negative,newDialogInterface.OnClickListener() {
//此处引用String.xml文件下的R.string.negative的id
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.setNeutralButton("查看详情", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}) ;
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
}
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Dialog案例</string>
<string name="action_settings">Settings</string>
<string name="negative">取消</string>
</resources>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF00FF"
/>
<Button
android:id="@+id/onlick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击" />
</LinearLayout>
package com.example.dialogitemdemo;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
private Button but;
private TextView show;
private String [] args= {"北京","上海","南京"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show=(TextView)findViewById(R.id.show);
but=(Button)findViewById(R.id.onlick);
but.setOnClickListener(new DialogSetItemOnClicklistener());
}
class DialogSetItemOnClicklistener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("你喜欢的城市");
builder.setItems(args, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
MainActivity.this.show.setText("你喜欢的城市是:"+MainActivity.this.args[which]);
}
});
AlertDialog alert= builder.create();
alert.show();
}
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF00FF"
/>
<Button
android:id="@+id/onlick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击" />
</LinearLayout>
package com.example.dialogitemdemo;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button but;
private TextView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show=(TextView)findViewById(R.id.show);
but=(Button)findViewById(R.id.onlick);
but.setOnClickListener(new DialogSetItemOnClicklistener());
}
class DialogSetItemOnClicklistener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("你喜欢的城市");
builder.setItems(R.array.city, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
MainActivity.this.show.setText("你喜欢的城市是:"+
MainActivity.this.getResources().
getStringArray(R.array.city)[which]);
//获得资源文件下的StringArray中的R.array.city中的哪一个选项
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}});
AlertDialog alert= builder.create();
alert.show();
}}}
<resources>
<string-array name="city" >
<item >广州</item>
<item >深圳</item>
<item >香港</item>
<item >澳门</item>
<item >台湾</item>
</string-array>
</resources>
package com.example.dialogsetsinglechoiceitems;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button mybut;
private TextView show;
private String [] fruitData ={ "苹果","香蕉","西瓜"};
private int chNum=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mybut=(Button)findViewById(R.id.mybut);
show=(TextView)findViewById(R.id.show);
mybut.setOnClickListener(new SetSingleChoice());
}
class SetSingleChoice implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("选择你喜欢的水果");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
MainActivity.this.show.setText("你喜欢的水果是:"+MainActivity.this.fruitData[chNum]);
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.setSingleChoiceItems(MainActivity.this.fruitData, 0, new DialogInterface.OnClickListener() {
/*
* setSingleChoiceItems(
* MainActivity.this.fruitData,-------> 选项数据源 可以通过配置获得
* 0,------------> 默认选中项位置
*new DialogInterface.OnClickListener()---> 选项的监听
* )
* **/ @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
MainActivity.this.show.setText(MainActivity.this.fruitData[which]);
MainActivity.this.chNum=which;
//修改选中选
}
});
AlertDialog alertDialog= builder.create();
alertDialog.show();
}
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
<Button
android:id="@+id/mybut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择你喜欢的水果" />
</LinearLayout>
package com.example.alertdialogsetmultichoiceiteme;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button but;
private TextView show;
private String [] args={ "大学","中庸","论语"};
private boolean chdata[]= new boolean[]{ true,true,true};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show=(TextView)findViewById(R.id.show);
but=(Button)findViewById(R.id.but);
but.setOnClickListener(new DialogMultiChoicIteme());
}
class DialogMultiChoicIteme implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("你喜欢的书籍");
builder.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
MainActivity.this.show.append(MainActivity.this.args[0]+","
+MainActivity.this.args[1]+","+
MainActivity.this.args[2]
);
}
});
builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.setMultiChoiceItems(
MainActivity.this.args,
MainActivity.this.chdata ,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which,
boolean isChecked) {
// TODO Auto-generated method stub
for (int i = 0; i < MainActivity.this.args.length; i++) {
if(i==which&&isChecked){
MainActivity.this.show.append(MainActivity.this.args[i]+",");
}
}
}
});
AlertDialog alertDialog= builder.create();
alertDialog.show();
}
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
<Button
android:id="@+id/but"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择你喜欢的数据" />
</LinearLayout>
文章浏览阅读2.1k次。这是侑虎科技第507篇文章,感谢作者FrankZhou供稿。欢迎转发分享,未经作者授权请勿转载。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群:793972859)作者主页:https://www.zhihu.com/people/pkhere,作者也是U Sparkle活动参与者,UWA欢迎更多开发朋友加入U Sparkle开发者计划,这个舞台有你更精彩!遮挡剔除是当一..._ue5 单个静态网格体遮挡剔除
文章浏览阅读2.7k次,点赞6次,收藏59次。操作系统原理-第六章 输入输出系统(汤小丹第四版《操作系统》)内容设及:[ I/O系统的功能模型和接口 ,I/O设备和设备控制器,中断机构和中断处理程序,驱动程序,与设备无关软件,用户软件,缓冲区管理,磁盘存储器的性能与调度]。_计算机操作系统汤小丹 各章节对应算法说明
文章浏览阅读104次。本超市管理系统采用的数据库是Mysql,使用JAVA技术开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。
文章浏览阅读1.5k次。作者本人家因为户型结构的问题,路由器信号覆盖的一直不是很好,卧室中的角落常常只有一格甚至断线,睡前刷个小视频都不开心!!(敲黑板),于是懒癌患者的我,最近终于想动弹一下,着手解决一下这个困扰多时的问题。 在几种解决方案中,我选择了无线桥接的这种方法,一方面是因为设置方便,另一方面是因为只需要一台或多台(根据具体情况定,需要覆盖的面积有多大)路由器即可,也不需要网线,当然你也可以选择有线的桥接,这样网络会更稳定一些。 先说调试方法(以下每一步调试完,如果页面显示需要重启路由器,重启即可)..._无线路由器桥接设置
文章浏览阅读823次。题目:当用户名与密码一致时提交后跳转到页面显示”登陆成功“,不一致时跳转到登陆不成功_response.sendredirect("登录成功!");}else{response.sendredirect("form.jsp");}
文章浏览阅读2.2k次。学习SQL Server,就先来了解一下SQL Server系统数据库! 1、Master(控制,精通,征服,硕士,主人,主要的,熟练地)数据库Master数据库是SQL Server系统最重要的数据库,是追踪所有其他数据库和存储配置信息的关键数据库,控制着用户数据库和SQL Server的操作。它记录了SQL Server系统的所有系统信息,浙西系统信息包括所有的登录信息,系统设置信_resource
文章浏览阅读2.7k次,点赞17次,收藏44次。Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目基于单片机的移动充电宝设计与实现大家可用于 课程设计 或 毕业设计单片机-嵌入式毕设选题大全及项目分享:https://blog.csdn.net/m0_71572576/article/details/125409052为单片机设备供电:为手机供电:硬件原理图:单片机-嵌入式毕设选题大全及项目分享:https://blog.csdn.net/m0_71572576/article/details/125409052..._keil c51 充电宝程序
文章浏览阅读1.5k次。代码下载链接图示结构,单元划分如图,已知,μ、E, a,承受均布压力q (μ、E, a, q自己给数字,每人不同)试用有限元法(平面三角形单元)划分四个单元如图,解此平面应力问题。求出应力,应变及支座反力。(可用MATLAB, maple等编程求解,提交程序及结果)% %clcclear;%—鐗╃悊鍙傛暟------------------E=7e10; %寮规�фā閲�,鍗曚綅Pat=0.01; %鍗曞厓鍘氬害,鍗曚綅ma=1; _三角形区域有限元分析matlab代码
文章浏览阅读758次。对于大型的 Golang 我的项目往往我都会应用 Goland 这样的业余 IDE,然而因为我本地开发环境硬件资源偏低,不能很顺畅的应用 Goland,这个时候咱们能够思考应用 VSCode 来代替 Goland,而且 VSCode 还反对近程开发,所以我索性将开发环境放在近程机器上,而后用 VSCode 近程开发模式进行连贯,最次要的是大部分咱们的我的项目都是间接跑在 Linux 下面的,这个时..._vscode远程同步h5
文章浏览阅读3.8w次,点赞8次,收藏51次。时间到了1890年,在那个年代,美国是大量移民者良好的目的地,因此美国的人口急剧增长,当时美国宪法规定国家每10年需要进行一次人口大普查来记录和分析美国各地的人口数据,以方便配置各种社会资源,1880年的普查人工用了7年的时间进行统计,也就是说,他们在休息两年之后就要开始第11次普查了,面临越来越多的人口数据,如果纯粹靠人力来统计的话,预计这次的普查需要13年甚至更长的时间。布尔的创新奠定了计算机科学的基础,他的理论为逻辑运算和信息处理提供了坚实的数学基础,为现代计算机的逻辑设计和运算方式奠定了基石。_计算机起源及发展简史
文章浏览阅读596次。前边的例01和例02分别展示了静态服务器及嵌入式SQLite3服务器的实现方法,例03是命名管道客户端-服务器,例01中用JSON文件存储数据(按我的理解,每一个SQLRecord就是一个表格,在存储的时候多个表格应该需要多个JSON文件取存储),例02中使用SQLite3数据库存储,只需要一个.db3数据库文件就能存放所有的SQLRecord(表格),例03中实现了客户端-服务器的通讯,客户端的..._mormot2例子
文章浏览阅读1k次。request.getSession().getServletContext().getRealPath() // 虚拟目录映射为实际目录_spring boot request.getsession().getservletcontext().getrealpath