精华内容
下载资源
问答
  • ListView 拖拽Item交换位置

    千次阅读 2015-02-03 13:41:05
    最近一个项目中要求用到交换任意两个ListView里面Item位置,需要实现这个功能。因此,本屌也是通过学习相关例子,重绘封装了一番,并且实现了这个功能。下面,就一起来看看是怎么样实现的吧。

    转载请注明出处:http://blog.csdn.net/ganklun/article/details/43448729

    最近一个项目中要求用到交换任意两个ListView里面Item位置,需要实现这个功能。因此,本屌也是通过学习相关例子,重绘封装了一番,并且实现了这个功能。下面,就一起来看看是怎么样实现的吧。

    1、XML布局

    <?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:background="@android:color/white"
        android:orientation="vertical" >
    
        <com.czl.struct.widget.DragListView
            android:id="@+id/dragLvi"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="#FFFFFF"
            android:cacheColorHint="@android:color/transparent"
            android:divider="#DCD7CF"
            android:dividerHeight="1dp"
            android:fadingEdgeLength="0dip"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:listSelector="@android:color/transparent"
            android:scrollbars="vertical"
            android:typeface="sans" >
        </com.czl.struct.widget.DragListView>
    
    </LinearLayout>

    是不是和平时引入ListView没有任何区别呢,只不过把LIstView换成了我们自定义的DragListView。

    2、自定义DragListView

    现在我们需要实现我们自定义的DragListView,并且实现相关交换位置的接口即可。先看一下需要实现的接口,代码如下所示:

    public interface DragItemChangeListener {
        public void onDragItemChange(int dragSrcPosition,int dragPosition);
    }

    是不是很简单啊,我们只需要为DragListView设置这个拖拽事件监听即可。该事件回调方法看名字也很容易理解,就是当位置被交换时,做相应回调处理即可,其中第一个参数dragSrcPosition是交换前的位置,dragPosition是交换后的位置。接下来贴出DragListView的代码:

    public class DragListView extends ListView {
    
        private WindowManager              windowManager;         // windows窗口控制类   
    
        private WindowManager.LayoutParams windowParams;          // 用于控制拖拽项的显示的参数     
    
        private ImageView                  dragImageView;         // 被拖拽的项(item),其实就是一个ImageView   
    
        private int                        dragSrcPosition;       // 手指拖动项原始在列表中的位置   
    
        private int                        dragPosition;          // 手指点击准备拖动的时候,当前拖动项在列表中的位置.   
    
        private int                        dragPoint;             // 在当前数据项中的位置   
    
        private int                        dragOffset;            // 当前视图和屏幕的距离(这里只使用了y方向上)   
    
        private int                        upScrollBounce;        // 拖动的时候,开始向上滚动的边界   
    
        private int                        downScrollBounce;      // 拖动的时候,开始向下滚动的边界   
    
        private final static int           step = 1;              // ListView 滑动步伐.   
    
        private int                        current_Step;          // 当前步伐.   
    
        private int                        dragImageSourceId;
    
        private DragItemChangeListener     dragItemChangeListener;
    
        /*** 
         * 构造方法 
         *  
         * @param context 
         * @param attrs 
         */
        public DragListView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public void setDragImageSourceId(int dragImageSourceId) {
            this.dragImageSourceId = dragImageSourceId;
        }
    
        public void setDragItemChangeListener(DragItemChangeListener dragItemChangeListener) {
            this.dragItemChangeListener = dragItemChangeListener;
        }
    
        /*** 
         * touch事件拦截 
         */
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            // 按下   
            if (ev.getAction() == MotionEvent.ACTION_DOWN) {
                int x = (int) ev.getX();// 获取相对与ListView的x坐标   
                int y = (int) ev.getY();// 获取相应与ListView的y坐标   
                dragSrcPosition = dragPosition = pointToPosition(x, y);
                // 无效不进行处理   
                if (dragPosition == AdapterView.INVALID_POSITION) {
                    return super.onInterceptTouchEvent(ev);
                }
    
                // 获取当前位置的视图(可见状态)   
                ViewGroup itemView = (ViewGroup) getChildAt(dragPosition - getFirstVisiblePosition());
    
                // 获取到的dragPoint其实就是在你点击指定item项中的高度.   
                dragPoint = y - itemView.getTop();
                // 这个值是固定的:其实就是ListView这个控件与屏幕最顶部的距离(一般为标题栏+状态栏).   
                dragOffset = (int) (ev.getRawY() - y);
    
                // 获取可拖拽的图标   
                View dragger = itemView.findViewById(dragImageSourceId);
    
                // x > dragger.getLeft() - 20这句话为了更好的触摸(-20可以省略)   
                if (dragger != null && x > dragger.getLeft() - 20) {
    
                    upScrollBounce = getHeight() / 3;// 取得向上滚动的边际,大概为该控件的1/3   
                    downScrollBounce = getHeight() * 2 / 3;// 取得向下滚动的边际,大概为该控件的2/3   
    
                    itemView.setDrawingCacheEnabled(true);// 开启cache.   
                    Bitmap bm = Bitmap.createBitmap(itemView.getDrawingCache());// 根据cache创建一个新的bitmap对象.   
                    startDrag(bm, y);// 初始化影像   
                }
            }
    
            return super.onInterceptTouchEvent(ev);
        }
    
        /** 
         * 触摸事件处理 
         */
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            // item的view不为空,且获取的dragPosition有效   
            if (dragImageView != null && dragPosition != INVALID_POSITION) {
                int action = ev.getAction();
                switch (action) {
                case MotionEvent.ACTION_UP:
                    int upY = (int) ev.getY();
                    stopDrag();
                    onDrop(upY);
                    break;
                case MotionEvent.ACTION_MOVE:
                    int moveY = (int) ev.getY();
                    onDrag(moveY);
                    break;
                case MotionEvent.ACTION_DOWN:
                    break;
                default:
                    break;
                }
                return true;// 取消ListView滑动.   
            }
    
            return super.onTouchEvent(ev);
        }
    
        /** 
         * 准备拖动,初始化拖动项的图像 
         *  
         * @param bm 
         * @param y 
         */
        private void startDrag(Bitmap bm, int y) {
            // stopDrag();   
            /*** 
             * 初始化window. 
             */
            windowParams = new WindowManager.LayoutParams();
            windowParams.gravity = Gravity.TOP;
            windowParams.x = 0;
            windowParams.y = y - dragPoint + dragOffset;
            windowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
            windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
    
            windowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE// 不需获取焦点   
                    | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE// 不需接受触摸事件   
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON// 保持设备常开,并保持亮度不变。   
                    | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;// 窗口占满整个屏幕,忽略周围的装饰边框(例如状态栏)。此窗口需考虑到装饰边框的内容。   
    
            windowParams.format = PixelFormat.TRANSLUCENT;// 默认为不透明,这里设成透明效果.   
            windowParams.windowAnimations = 0;// 窗口所使用的动画设置   
    
            ImageView imageView = new ImageView(getContext());
            imageView.setImageBitmap(bm);
            windowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
            windowManager.addView(imageView, windowParams);
            dragImageView = imageView;
    
        }
    
        /** 
         * 拖动执行,在Move方法中执行 
         *  
         * @param y 
         */
        public void onDrag(int y) {
            int drag_top = y - dragPoint;// 拖拽view的top值不能<0,否则则出界.   
            if (dragImageView != null && drag_top >= 0) {
                windowParams.alpha = 0.5f;// 透明度   
                windowParams.y = y - dragPoint + dragOffset;// 移动y值.//记得要加上dragOffset,windowManager计算的是整个屏幕.(标题栏和状态栏都要算上)   
                windowManager.updateViewLayout(dragImageView, windowParams);// 时时移动.   
            }
            // 为了避免滑动到分割线的时候,返回-1的问题   
            int tempPosition = pointToPosition(0, y);
            if (tempPosition != INVALID_POSITION) {
                dragPosition = tempPosition;
    
            }
            doScroller(y);
        }
    
        /*** 
         * ListView的移动. 
         * 要明白移动原理:当映像移动到下端的时候,ListView向上滑动,当映像移动到上端的时候,ListView要向下滑动。正好和实际的相反. 
         *  
         */
    
        public void doScroller(int y) {
            // ListView需要下滑   
            if (y < upScrollBounce) {
                current_Step = step + (upScrollBounce - y) / 10;// 时时步伐   
            }// ListView需要上滑   
            else if (y > downScrollBounce) {
                current_Step = -(step + (y - downScrollBounce)) / 10;// 时时步伐   
            } else {
                current_Step = 0;
            }
    
            // 获取你拖拽滑动到位置及显示item相应的view上(注:可显示部分)(position)   
            View view = getChildAt(dragPosition - getFirstVisiblePosition());
            // 真正滚动的方法setSelectionFromTop()   
            setSelectionFromTop(dragPosition, view.getTop() + current_Step);
    
        }
    
        /** 
         * 停止拖动,删除影像 
         */
        public void stopDrag() {
            if (dragImageView != null) {
                windowManager.removeView(dragImageView);
                dragImageView = null;
            }
        }
    
        /** 
         * 拖动放下的时候 
         *  
         * @param y 
         */
        public void onDrop(int y) {
    
            // 为了避免滑动到分割线的时候,返回-1的问题   
            int tempPosition = pointToPosition(0, y);
            if (tempPosition != INVALID_POSITION) {
                dragPosition = tempPosition;
            }
    
            // 超出边界处理(如果向上超过第二项Top的话,那么就放置在第一个位置)   
            if (y < getChildAt(0).getTop()) {
                // 超出上边界   
                dragPosition = 0;
                // 如果拖动超过最后一项的最下边那么就防止在最下边   
            } else if (y > getChildAt(getChildCount() - 1).getBottom()) {
                // 超出下边界   
                dragPosition = getAdapter().getCount() - 1;
            }
    
            // 数据交换   
            if (dragPosition < getAdapter().getCount()) {
    
                dragItemChangeListener.onDragItemChange(dragSrcPosition, dragPosition);
            }
    
        }
    
    }
    
    

    
    

     其中setDragItemChangeListener(DragItemChangeListener dragItemChangeListener) 就是我们要注入接口实现的地方。setDragImageSourceId(int dragImageSourceId) 方法可以设置您想拖拽的图标资源。接下来万事俱备,只欠东风了。

    3、引入DragListView

    <pre name="code" class="java">废话不说,直接上代码:
    
    <pre name="code" class="java">public class DragListActivity extends BaseActivity implements DragItemChangeListener {
        private DragListView                       dragListView;
    
        private ArrayList<HashMap<String, Object>> list;
    
        private DemoAdapter                        demoAdapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_drag_list);
            init();
            findViewById();
        }
    
        @Override
        public void init() {
            list = new ArrayList<HashMap<String, Object>>();
            for (int i = 0; i < 20; i++) {
                HashMap<String, Object> map = new HashMap<String, Object>();
                map.put("numbTV", "D138026594664912200" + i);
                map.put("adrTv", "浙江省杭州市西湖区小和山");
                map.put("timeTv", "2013-09-27 15:23");
                map.put("callTv", "18778900578");
                list.add(map);
            }
        }
    
        @Override
        public void findViewById() {
            dragListView = (DragListView) findViewById(R.id.dragLvi);
            demoAdapter = new DemoAdapter(DragListActivity.this, list);
            dragListView.setAdapter(demoAdapter);
            dragListView.setDragImageSourceId(R.id.imageView1);
            dragListView.setDragItemChangeListener(this);
    
        }
    
        @Override
        public void Message(android.os.Message msg) {
    
        }
    
        @Override
        public void onDragItemChange(int dragSrcPosition, int dragPosition) {
            HashMap<String, Object> map = list.get(dragSrcPosition);
            list.remove(dragSrcPosition);
            list.add(dragPosition, map);
            demoAdapter.notifyDataSetChanged();
        }
    
    }
    
    

    
    
    
    

    适配器就和平时使用的BaseAdapter没有任何区别,这里就不再赘述了,首先我们初始化了20条数据,然后我们重点关注setDragImageSourceId()和setItemChangeListener()这两行代码,聪明的你肯定已经完全明白了吧,这里就是我们设置自定义拖拽图标以及添加交换位置监听的实现。onDragItemChange()就是我们回调后具体交换位置刷新UI界面的代码啦。

    4、下载地址

    https://github.com/GankLun/DragListView

    5、总结

    总的来说,要实现ListView交换Item项位置,只需三步,第一,XML布局文件里引入我们自定义的DragListView,第二,为dragListView设置拖拽图片资源和事件触发监听,第三,实现onDragItemChange交换位置接口,进行位置交换并且刷新UI界面。很简单,有木有?大家都来试一下吧。

    
    
    
    


    展开全文
  • js实现两个div交换位置

    万次阅读 2012-09-17 16:18:27
    同事问了一个问题,就是关于两个层交换位置的问题,其实实现起来很简单,我在这里简单的列举两种方法: 方法一:这里只是用的纯js来实现,我直接贴代码,其中前面是判断是否兼容fixfox function moveDiv(id_1,id_2...

    同事问了一个问题,就是关于两个层交换位置的问题,其实实现起来很简单,我在这里简单的列举两种方法:

    方法一:这里只是用的纯js来实现,我直接贴代码,其中前面是判断是否兼容fixfox

    function moveDiv(id_1,id_2)  //参数传递的是你需要交换位置的两个div的ID
    {
        var insert = function(nodeInsert,nodeTo){
            if(nodeInsert.insertAdjacentElement)
            {
                nodeTo.insertAdjacentElement('beforeBegin',nodeInsert);
            }
            else
            {
                nodeTo.parentNode.insertBefore(nodeInsert,nodeTo);
            }
        }
        var obj= document.createElement("a");
        var t1 = document.getElementById(id_1);
        var t2 = document.getElementById(id_2);
        insert(obj,t2);
        insert(t2,t1);
        insert(t1,obj);
        document.body.removeChild(obj);
    }

    方法二:如果你用了jquery的话,就可以简化很多

    <div id="a"></div>
    <div id="b"></div>

    $("#b").after($("#a"))

    展开全文
  • 文章目录写在前面实现界面和第一种添加方式两种内容动态添加方式交换两行内容写在最后及程序下载 写在前面 我们使用QListWidget是想实现单列的列表形式,无论是简单的文本列表形式或是复杂的自定义界面列表形式。 和...

    写在前面

    我们使用QListWidget是想实现单列的列表形式,无论是简单的文本列表形式或是复杂的自定义界面列表形式。
    和QTableWidget相似,我们会遇到动态添加内容以及交换两行内容的问题,但是QListWidget与QTableWidget的处理方式会有一点区别,最近也有人问到,刚好在项目中使用到了这部分内容,这里就用一个简单的demo来实现动态添加内容以及交换两行内容


    实现界面和第一种添加方式

    首先我们在QtDesigner实现我们的软件界面,同时,QListWidget的第一种添加方式就是在QtDesigner中,这种方式主要为了方便测试。
    只需要双击添加进去的QListWidget控件就可以生成一部分的列表内容。
    图片名称

    图片名称

    接下来我们添加几个实现我们想法和功能的按钮和spinbox, 界面大概就是下面的样子。
    在这里插入图片描述


    两种内容动态添加方式

    有了已经设置好的界面,接下来完成各按钮的响应函数

    首先我们来实现最简单的动态添加函数,通过直接添QString的方式。

    void ListWidgetDemo::on_addPushButton_string_clicked()
    {
    
    	ui->listWidget->addItem(QString("第%1行").arg(ui->listWidget->count() + 1));
    	ui->spinBox_1->setMaximum(ui->listWidget->count());
    	ui->spinBox_2->setMaximum(ui->listWidget->count());
    }
    
    

    不得不说这个方法对于全文本的列表形式还是非常方便的,但是对于更加复杂的列表形式,比如自定义widget列表形式就不是那么适用,所以我们需要了解更加通用的动态添加方式。


    经过实际使用,借助QListWidgetItem 进行内容添加的方式,是我觉得最具适用性的的方式。

    void ListWidgetDemo::on_addPushButton_item_clicked()
    {
    	QListWidgetItem *item = new QListWidgetItem(ui->listWidget);//还可以不使用带参构造函数形式,只是需要调用addItem函数
    	//经过上一步,item已经添加了,只是还没有内容
    	item->setText(QString("第%1行").arg(ui->listWidget->count()));
    	ui->spinBox_1->setMaximum(ui->listWidget->count());
    	ui->spinBox_2->setMaximum(ui->listWidget->count());
    } 
    

    这里补充说明一下,如果想要添加自定义的widget,,具体的就是使用这个函数
    ui->listWidget->setItemWidget(item,widget)
    如果需要对每个widget中的控件进行操控,设置,也必须使用这个方式,如果有人需要详细一点的代码,可以评论一下,我之后有时间可以写一写~


    交换两行内容

    最后就是交换两行内容的按钮

    void ListWidgetDemo::on_swapPushButton_clicked()
    {
    	swapTwoRaw(*ui->listWidget, ui->spinBox_1->value() - 1, ui->spinBox_2->value() - 1);
    }
    

    具体的交换函数是

    /**
     * 交换ListWidget两行内容
     */
    void ListWidgetDemo::swapTwoRaw(QListWidget &list_widget, int first_row, int second_row)
    {
    	//保证first row永远在second_row之前,方便后面的处理
    	if (first_row > second_row)
    	{
    		int temp = first_row;
    		first_row = second_row;
    		second_row = temp;
    	}
    	else if (first_row == second_row)//相同的两行不允许进行后续交换操作
    	{
    		return;
    	}
    	if (second_row > 0)
    	{
    		//因为listWidget没有tableWidget中的
    		QListWidgetItem *first_row_item = list_widget.takeItem(first_row);//首先提取row较小的一行,使用takeItem这个函数会删除这一行
    		QListWidgetItem *second_row_item = list_widget.takeItem(second_row - 1);//因为,现在总行数-1,所以row较大的一行需要-1才能准确定位
    		list_widget.insertItem(first_row, second_row_item);//首先在前部,即row较小的一行,插入得到的row较大的一行的QListWidgetItem
    		list_widget.insertItem(second_row, first_row_item);//然后在后部插入
    	}
    
    }
    

    写在最后及程序下载

    • 其实最开始我是想,如果listWidget有和tablewidget相似的setItem的方式,就非常简单了。直接通过item函数得到两行的内容,再通过setItem函数就可以进行内容交换了,但是把QListWidget的函数看了一个遍也没有这种实现方式。
    • 另外还是推荐QListWidgetItem这个更加通用的方法,这样无论item中是文字还是我们自定义的widget,都能很好的工作

    说明:程序提供的下载(本程序是利用VS2017+Qt 5.11.2进行编写,建议用相同环境打开,不同的Qt版本可能会导致编译不成功)
    程序下载连接

    展开全文
  • Ubuntu设置交换分区

    千次阅读 2017-03-31 09:37:13
     1.#dd if=/dev/zero of=/opt/swap1 bs=1024 count=1024000  (count的值等于1024 x 你想要的文件大小, 4096000是4G,1024000是1G) ... 在最后一行增加如下内容  /opt/swap1 swap swap defaults 0 0
    

    1.#dd if=/dev/zero of=/opt/swap1 bs=1024 count=1024000

          (count的值等于1024 x 你想要的文件大小, 4096000是4G,1024000是1G)

    2.#mkswap /opt/swap1

          (把这个文件变成swap文件)

    3.#swapon /opt/swap1

          (启用这个swap文件)

    4.为了使每次开机时都能正常使用swap文件,所以这里需要把swap文件增加到fstab文件中

          #sudo vi /etc/fstab

          在最后一行增加如下内容

          /opt/swap1 swap swap defaults 0 0

    展开全文
  • 相比起ListView而言,RecycleView实现拖拽交换位置的效果要简单很多,因为通过SDK中的ItemTouchHelper工具类可以轻松的实现这种效果,并且一套代码支持所有布局方式;而ListView的话则需要通过生成View的缓存镜像设置到...
  • pfxx\billdefine:每个单间的demo内容。字段说明 如果要新增外部交换接口 1.首先要在外部交换平台 在uapbd.xml中添加接口信息及处理类 <businessprocessor baseclassname="" billtype="10KH...
  • 交换Button中图片与文字的左右位置

    千次阅读 2016-02-20 17:39:44
    // 交换button中title和image的位置 CGFloat labelWidth = modelButton.titleLabel.frame.size.width; CGFloat imageWith = modelButton.imageView.frame.size.width; modelButton.imageEdgeInsets = ...
  • List位置交换,一及只List显示第一个

    千次阅读 2015-02-02 11:59:32
    今天刚刚好做List排序部分,遇到了List位置交换,一及只List显示第一个,研究了下,代码如下: Object objA= list.get(a); list.set(a, list.get(b)); list.set(b, objA); 我一群组第一
  • 实用的排序算法 - 交换排序

    千次阅读 2017-05-25 23:11:13
    用于记录每趟排序中最后一次进行交换位置。由于 pos 位置之后的记录均已交换到位 , 故在进行下一趟排序时只要扫描到 pos 位置即可。 void Bubble_1( int r[], int n) {  int pos = 0;  int i;  int j;  int ...
  • CCNP知识点总结——交换部分

    千次阅读 多人点赞 2018-03-30 23:59:03
    CCNP交换部分学习笔记。
  • aix 中交换空间理解

    千次阅读 2014-12-22 18:43:11
     页面空间也可以被称为交换空间(paging space), 创建在属性类型为paging的逻辑卷(logic volume LV)上. 交换空间是一项很重要的设备. AIX kernel需要利用paging space来管理虚拟内存.系统安装时创建的默认页面LV是...
  • 三种交换技术及其比较

    万次阅读 多人点赞 2016-02-23 11:27:34
    “电路交换”(Circuit Switching)又称为“线路交换”,是一种面向连接的服务。两台计算机通过通信子网进行数据电路交换之前,首先要在通信子网中建立一个实际的物理线路连接。最普通的电路交换例子是电话系统。...
  • 很久没来这里,我也安静了很久。html5 jquery drop drag cookie web css3 利用HTML5的drop、drag及拖动属性做元素位置交换《我是学霸》
  • AJAX可以实现异步请求数据,即不刷新页面的情况下请求服务器,加载目标内容到页面。 AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个...
  • 在Linux上使用交换空间

    千次阅读 2017-04-18 16:45:17
    在Linux上使用交换空间 在Linux上使用交换空间 了解交换空间 开始使用交换空间 创建交换空间 指定交换空间 启用交换空间 关闭交换空间 开机自动启用交换空间 Gook Luck 了解交换空间 Linux中Swap...
  • CentOS 配置swap交换区的方法

    万次阅读 2016-12-30 14:35:51
    CentOS 作为linux世界里最稳定的...米扑科技,作为一家快速发展的创业企业,购买了许多阿里云和亚马逊云,因此会配置swap交换区,具体方法如下。用CentOS来代替red hat as的使用,因为CentOS5是利用rhas5的源码,去掉re
  • 以太网交换原理

    千次阅读 2014-02-17 20:12:40
    以太网交换原理 本文力求阐明以太网交换原理,并对相关知识作以介绍。 1 以太网交换机相关概念 1.1 传统的电话交换技术 交换概念始于电话交换。传统电话网由传输电路与电话交换机组成,处于网络节点的交换机...
  • 数据交换过程详解

    千次阅读 2020-06-11 08:31:00
    转载本文需注明出处:微信公众号EAWorld,违者必究。前言:本文主要介绍数据交换过程中常用的数据交换方法和方式以及数据交换在新技术下所面对的“挑战”,方便大家深入理解数据交换过程。普元...
  • 交换瓶子(蓝桥杯入门)

    千次阅读 2017-03-18 15:32:43
    2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行: ...
  • AIX交换内存管理

    千次阅读 2014-08-26 10:32:52
    AIX交换空间管理与查看 一, 交换磁盘空间概念 1.1 虚拟内存 1.2 虚拟内存管理器(VMM) 1.3 交换(分页)空间概念 1.4请求分页 二, 查看交换磁盘空间 2.1 lsps命令 2.2 使用vmo命令检查AIX如何处理分页...
  • 通信工程交换传输实习报告

    千次阅读 2017-10-07 15:17:43
    序言  本学期的3-5周,我们进行了为期3周的专业实习,本次实习的内容是程控交换和光纤传输,实习地点是云塘校区理科楼B304程控交换实验室。   实习的形式是老师讲述理论知识,然后同学分组参观设备,将老师所讲...
  • 局域网交换技术

    千次阅读 2006-08-08 13:26:00
    局域网交换技术 1.1 共享技术 所谓共享技术即在一个逻辑网络上的每一个工作站都处于一个相同的网段上。 以太网采用CSMA/CD 机制,这种冲突检测方法保证了只能有一个站点在总线上传输。如果有两个站点试图同时访问总 ...
  • LInux下的交换分区以及相关查看命令

    千次阅读 2020-02-20 11:56:33
    linux下SWAP为交换分区,也就是虚拟内存; 当linux系统的物理内存不够的时候,就需要将物理内存中的一些东西释放出来,以供当前程序...具体swap分区的大小设置问题参考Linux交换分区设置多大为好? 如何查看系统...
  • AIX交换磁盘空间

    千次阅读 2009-07-13 14:36:00
    AIX交换空间管理与查看... 2一, 交换磁盘空间概念... 21.1 虚拟内存... 21.2 虚拟内存管理器(VMM) 21.3 交换(分页)空间概念... 31.4请求分页... 3二, 查看交换磁盘空间... 42.1 lsps命令... 42.2 使用vmo命令检查AIX...
  • Linux交换空间(swap space)

    万次阅读 2018-06-23 18:18:46
    每次安装Linux的时候,都会要求配置交换分区,那么这个分区是干嘛的呢?不设置这个分区有什么后果?如果一定要设置设置多大比较合适?本篇将试图回答这些问题并尽量覆盖所有swap相关的知识。 下面的所有例子都在...
  • 数组排序 计算最少交换次数

    千次阅读 2019-03-19 21:05:22
    要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的情况,显然,至少需要交换2次就可以复位。 如果瓶子更多呢?你可以通过编程来解决。 输入格式为两行: 第一行...
  • 这是一篇超过万字读书笔记,总结了《游戏编程模式》一书中所有章节与内容的知识梗概。 我们知道,游戏行业其实一直很缺一本系统介绍游戏编程进阶技巧的书籍,而《游戏编程模式》得出现,正好弥补了这一点。在这篇...
  • linux磁盘分区与交换空间的使用

    千次阅读 2016-10-23 18:00:30
    简单磁盘分区与交换空间的使用 磁盘分区使用 linux大致文件系统: / ##根目录 /boot ##内核以及夹在内核所需要文件 /home ##系统用户宿主目录,每个用户均有一个同名目录 /tmp ##临时文件存在目录,在命令...
  • Deepin系统安装后相关设置与环境搭建 ...设置 swap(交换分区) 的大小 1、使用 free 命令查看交换分区的大小,若为 0;则进行创建设置 2、使用 dd 命令在自定义路径下创建 swap文件 # of 指定自定义文...
  • Java数组元素交换的问答

    千次阅读 2019-01-08 16:20:38
    出题的题目为:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 160,691
精华内容 64,276
关键字:

内容交换位置怎么设置