常用的有关文件下载的框架

#服务端和客户端交互
服务器:接收文件,并且把文件,存储到指定目录,对文件进行命名的等操作。

客户端:选定文件,拼接参数,上传到指定服务器上。

#购买服务器(阿里云服务器或者自己搭建服务器)

#搭建服务器(软件服务器)

源码环境:
jre7 tomcat7

1、将.war文件复制到tomcat服务器webapps下,启动服务器即可

2、访问工程路径a即可测试上传

b/s架构  通过浏览器上传

c/s结构  通过Android端上传

上传文件服务地址:
http://192.168.10.168:8080/FileUpload/FileUploadServlet

#利用xUtils3上传多个文件,代码如下

// 上传多文件示例
    @Event(value = R.id.btn_test2)
    private void onTest2Click(View view) throws FileNotFoundException {

RequestParams params = new RequestParams("http://192.168.10.168:8080/FileUpload/FileUploadServlet");

// 加到url里的参数, http://xxxx/s?wd=xUtils
        params.addQueryStringParameter("wd", "xUtils");//name=yangguangfu?password=1233445

// 添加到请求body体的参数, 只有POST, PUT, PATCH, DELETE请求支持.
        // params.addBodyParameter("wd", "xUtils");

// 使用multipart表单上传文件
        params.setMultipart(true);//设置支持多个文件上传

//具体的某一个文件
        params.addBodyParameter(
                "file1",
                new File("/mnt/sdcard/1.jpg"),
                null); // 如果文件没有扩展名, 最好设置contentType参数.

//具体的某一个文件
        params.addBodyParameter(
                "file2",
                new File("/mnt/sdcard/2.jpg"),
                null); // 如果文件没有扩展名, 最好设置contentType参数.

x.http().post(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Toast.makeText(x.app(), result + "上传成功", Toast.LENGTH_LONG).show();
            }

@Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Toast.makeText(x.app(), ex.getMessage() + "上传失败", Toast.LENGTH_LONG).show();
            }

@Override
            public void onCancelled(CancelledException cex) {
                Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
            }

@Override
            public void onFinished() {
                Toast.makeText(x.app(), "onFinished", Toast.LENGTH_LONG).show();
            }
        });
    }

#利用使用xUtils下载文件列表

下载地址:
http://192.168.10.168:8080/oppo.mp4

// 添加到下载列表
    @Event(value = R.id.btn_test3)
    private void onTest3Click(View view) throws DbException {
        for (int i = 0; i < 5; i++) {
            String url = et_url.getText().toString();//得到下载的地址
            String label = i + "xUtils_" + System.nanoTime();//下载的到本地的命名
            DownloadService.getDownloadManager().startDownload(
                    url, label,
                    "/sdcard/xUtils/" + label + ".mp4", true, false, null);
        }
    }

#利用使用xUtils下载单个文件

String url = "http://192.168.10.168:8080/oppo.mp4";
        String label = "oppo_" + "afua" + System.nanoTime();

DownloadService.getDownloadManager().startDownload(
                url, label,
                "/sdcard/xUtils/" + label + ".mp4", true, false, null);

#打开下载列表
   @Event(value = R.id.btn_test4)
    private void onTest4Click(View view) throws DbException {
        getActivity().startActivity(new Intent(getActivity(), DownloadActivity.class));
    }

#AFinla的使用

1.添加权限
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2.把jar包拷贝到项目的lib目录下

3.普通文本的请求,代码如下:

public void getDete(View view){
            FinalHttp fh = new FinalHttp();
            fh.get("https://github.com/yangfuhai/afinal", new AjaxCallBack(){
    
                @Override
                public void onLoading(long count, long current) { //每1秒钟自动被回调一次
                    textView.setText(current+"/"+count);
                }
    
                @Override
                public void onSuccess(Object o) {
                    super.onSuccess(o);
                    textView.setText(o.toString());
                }
    
                @Override
                public void onStart() {
                    //开始http请求的时候回调
                }
    
            });
        }

4.Afinal文件的下载

public void downloadFile(View view){
            FinalHttp fh = new FinalHttp();
            fh.download("http://192.168.10.168:8080/oppo.mp4", "/mnt/sdcard/afinloop.mp4", new AjaxCallBack<File>() {
                @Override
                public void onSuccess(File file) {
                    super.onSuccess(file);
                    Toast.makeText(MainActivity.this,"下载成功",Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public AjaxCallBack<File> progress(boolean progress, int rate) {
                    return super.progress(progress, rate);
                }
    
                @Override
                public void onStart() {
                    super.onStart();
                    Toast.makeText(MainActivity.this,"onStart",Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onLoading(long count, long current) {
                    super.onLoading(count, current);
                }
    
                @Override
                public boolean isProgress() {
                    return super.isProgress();
                }
    
                @Override
                public int getRate() {
                    return super.getRate();
                }
            });
    
    //
        }
下载地址:http://download.csdn.net/detail/sinat_32804317/9551489

#okhttp的使用 有三种使用方式
第一种使用方式.关联库文件
第二种使用方式.把jar拷贝到工程lib目录下关联jar
第三种使用方式.在联网情况下
compile ‘com.squareup.okhttp:okhttp:2.4.0‘
gradle: compile ‘com.squareup.okio:okio:1.5.0‘

#okhttp的使用 请求普通的文本

/**
 * get请求
     * 请求文本信息
 * @param view
 */
    public void getHtml(View view)
    {
        String url = "http://192.168.10.168:8080/zhbj/categories.json";
        OkHttpUtils
                .get()
                .url(url)
                .build()
                .execute(new MyStringCallback());
    }

public class MyStringCallback extends StringCallback
    {
        @Override
        public void onBefore(Request request)
        {
            super.onBefore(request);
            setTitle("loading...");
        }

@Override
        public void onAfter()
        {
            super.onAfter();
            setTitle("Sample-okHttp");
        }

@Override
        public void onError(Request request, Exception e)
        {
            mTv.setText("onError:" + e.getMessage());
        }

@Override
        public void onResponse(String response)
        {
            mTv.setText("onResponse" + response);
        }

@Override
        public void inProgress(float progress)
        {
            Log.e(TAG, "inProgress:" + progress);
            mProgressBar.setProgress((int) (100 * progress));
        }
    }

#okhttp的使用-大文件的下载

/**
     * 下载文件
     * @param view
     */
    public void downloadFile(View view)
    {
        String url = "http://192.168.10.168:8080/oppo.mp4";
        OkHttpUtils//
                .get()//
                .url(url)//
                .build()//
                .execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "okhttpoppo.mp4")//
                {

@Override
                    public void onBefore(Request request)
                    {
                        super.onBefore(request);
                    }

@Override
                    public void inProgress(float progress)
                    {
                        mProgressBar.setProgress((int) (100 * progress));
                    }

@Override
                    public void onError(Request request, Exception e)
                    {
                        Log.e(TAG, "onError :" + e.getMessage());
                    }

@Override
                    public void onResponse(File file)
                    {
                        Log.e(TAG, "onResponse :" + file.getAbsolutePath());
                    }
                });
    }

#okhttp的使用-单个文件的上传

/**
         * 上传文件
         * @param view
         */
        public void uploadFile(View view)
        {
    
            File file = new File(Environment.getExternalStorageDirectory(), "1.jpg");
            if (!file.exists())
            {
                Toast.makeText(MainActivity.this, "文件不存在,请修改文件路径", Toast.LENGTH_SHORT).show();
                return;
            }
            Map<String, String> params = new HashMap<>();
    //        params.put("username", "杨光福");
    //        params.put("password", "123");
            Map<String, String> headers = new HashMap<>();
            headers.put("APP-Key", "APP-Secret222");
            headers.put("APP-Secret", "APP-Secret111");
    
            String url = "http://192.168.10.168:8080/FileUpload/FileUploadServlet";
    
            OkHttpUtils.post()//
                    .addFile("mFile", "agguigu-afu.jpe", file)//
                    .url(url)//
                    .params(params)//
                    .headers(headers)//
                    .build()//
                    .execute(new MyStringCallback());
        }

#okhttp的使用-多个文件的上传

/**
         * 多文件同时上传
         * @param view
         */
        public void multiFileUpload(View view)
        {
            File file = new File(Environment.getExternalStorageDirectory(), "1.jpg");
            File file2 = new File(Environment.getExternalStorageDirectory(), "2.txt");
            if (!file.exists()||!file2.exists())
            {
                Toast.makeText(MainActivity.this, "文件不存在,请修改文件路径", Toast.LENGTH_SHORT).show();
                return;
            }
            Map<String, String> params = new HashMap<>();
    //        params.put("username", "杨光福");
    //        params.put("password", "123");
    
            String url = "http://192.168.10.168:8080/FileUpload/FileUploadServlet";
            OkHttpUtils.post()//
                    .addFile("mFile", "01.jpg", file)//
                    .addFile("mFile", "afua.txt", file2)//
                    .url(url)
                    .params(params)//
                    .build()//
                    .execute(new MyStringCallback());
        }

#okhttp的使用-请求网络图片

/**
             * 请求网络到图片
             * @param view
             */
            public void getImage(View view)
            {
                mTv.setText("");
                String url = "http://images.csdn.net/20150817/1.jpg";
                OkHttpUtils
                        .get()//
                        .url(url)//
                        .tag(this)//
                        .build()//
                        .connTimeOut(5000)
                        .readTimeOut(5000)
                        .writeTimeOut(5000)
                        .execute(new BitmapCallback() {
                            @Override
                            public void onError(Request request, Exception e) {
                                mTv.setText("onError:" + e.getMessage());
                            }
        
                            @Override
                            public void onResponse(Bitmap bitmap) {
                                //设置图片
                                mImageView.setImageBitmap(bitmap);
                            }
                        });
            }

#Android-Universal-Image-Loader在ListView中使用

在使用Image-Loader之前需要在Application里面做初始化

public static void initImageLoader(Context context) {
        // This configuration tuning is custom. You can tune every option, you may tune some of them,
        // or you can create default configuration by
        //  ImageLoaderConfiguration.createDefault(this);
        // method.
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                //设置当前线程的优先级
                .threadPriority(Thread.NORM_PRIORITY - 2)
                // 缓存显示不同大小的同一张图片
                .denyCacheImageMultipleSizesInMemory()
                //将保存的时候的URI名称用MD5 加密
                .discCacheFileNameGenerator(new Md5FileNameGenerator())
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .writeDebugLogs() // Remove for release app
                .build();
        // Initialize ImageLoader with configuration.
        ImageLoader.getInstance().init(config);
    }

1.在适配器中配置信息

protected ImageLoader imageLoader = ImageLoader.getInstance();

DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_stub)
                .showImageForEmptyUri(R.drawable.ic_empty)
                .showImageOnFail(R.drawable.ic_error)
                .cacheInMemory(true)////设置下载的图片是否缓存在内存中
                .cacheOnDisc(true)////设置下载的图片是否缓存在SD卡中
                .considerExifParams(true)//是否考虑JPEG图像EXIF参数(旋转,翻转)
                .displayer(new RoundedBitmapDisplayer(20))//设置图片圆角
                .build();

2.在适配器中的getView中请求图片如下代码:

@Override
        public View getView(final int position, View convertView, ViewGroup parent) {
           ......

//第一个参数是:图片的地址,第二个参数是要绑定的图片,第三个参数处理图片的配置,第四个参数
            imageLoader.displayImage(imageUrls[position], holder.image, options, animateFirstListener);

return view;
        }
    }

3.设置监听animateFirstListener代码如下

class ItemAdapter extends BaseAdapter {

private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();

..............

}

private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {

static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());

@Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
            if (loadedImage != null) {
                ImageView imageView = (ImageView) view;
                boolean firstDisplay = !displayedImages.contains(imageUri);
                if (firstDisplay) {
                    FadeInBitmapDisplayer.animate(imageView, 500);//显示图片的过程有一个渐变动画
                    displayedImages.add(imageUri);
                }
            }
        }
    }

#Android-Universal-Image-Loader在 GridView中使用

1.设置配置信息

protected ImageLoader imageLoader = ImageLoader.getInstance();

DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_stub)
                .showImageForEmptyUri(R.drawable.ic_empty)
                .showImageOnFail(R.drawable.ic_error)
                .cacheInMemory(true)
                .cacheOnDisc(true)
                .considerExifParams(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .build();

2.在适配器的getView中请求网络图片,请求图片的时候,带有加载进度,代码如下,

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final ViewHolder holder;
            View view = convertView;
            if (view == null) {
                view = getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);
                holder = new ViewHolder();
                assert view != null;
                holder.imageView = (ImageView) view.findViewById(R.id.image);
                holder.progressBar = (ProgressBar) view.findViewById(R.id.progress);
                view.setTag(holder);
            } else {
                holder = (ViewHolder) view.getTag();
            }

imageLoader.displayImage(imageUrls[position], holder.imageView, options, new SimpleImageLoadingListener() {
                                         @Override
                                         public void onLoadingStarted(String imageUri, View view) {
                                             holder.progressBar.setProgress(0);
                                             holder.progressBar.setVisibility(View.VISIBLE);
                                         }

@Override
                                         public void onLoadingFailed(String imageUri, View view,
                                                 FailReason failReason) {
                                             holder.progressBar.setVisibility(View.GONE);
                                         }

@Override
                                         public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                                             holder.progressBar.setVisibility(View.GONE);
            }
                                     }, new ImageLoadingProgressListener() {
                                         @Override
                                         public void onProgressUpdate(String imageUri, View view, int current,
                                                 int total) {
                                             holder.progressBar.setProgress(Math.round(100.0f * current / total));
                                         }
                                     }
            );

return view;
        }

#Picasso 的加载图片库的使用

1.把jar拷贝到项目下lib里

下载jar包地址
http://square.github.io/picasso/#download

2.单独请求某一张图片的用法
 Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

3.在ListView中适配器的getView中用法
 
  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder viewHolder;
        if (convertView == null) {
            convertView = View.inflate(context, R.layout.image_items, null);
            viewHolder = new ViewHolder();
            viewHolder.imageview = (ImageView) convertView.findViewById(R.id.imageview);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.imageview.setImageResource(R.drawable.empty_photo);
        //得到数据
        String imageurl = imageThumbUrls[position];
//       
        Picasso.with(context).load(imageurl).into(viewHolder.imageview);

return convertView;

}

#Glide 的加载图片库的使用

1.需要在联网的情况下,在build.gradle文件中配置

compile ‘com.github.bumptech.glide:glide:3.7.0‘
      compile ‘com.android.support:support-v4:22.2.1‘

2.请求单张图片代码如下:

Glide.with(context)
    .load("http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg")
    .into(ivImg);
 
3.在使用Lisview的适配器中,getView里使用,代码如下:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder viewHolder;
        if (convertView == null) {
            convertView = View.inflate(context, R.layout.image_items, null);
            viewHolder = new ViewHolder();
            viewHolder.imageview = (ImageView) convertView.findViewById(R.id.imageview);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.imageview.setImageResource(R.drawable.empty_photo);
        //得到数据
        String imageurl = imageThumbUrls[position];
 
        Glide
                .with(context)
                .load(imageurl)
                .centerCrop()
                .placeholder(R.drawable.empty_photo)
                .crossFade()
                .into(viewHolder.imageview);

return convertView;

}

#Android-gif-drawable的使用

1.联网框架和 添加Android-gif-drawable 的jar包
  compile files(‘libs/android-async-http-1.4.5.jar‘)
  compile files(‘libs/classes.jar‘)

2.加载单张gif动画图片

asyncHttpClient = new AsyncHttpClient();
        asyncHttpClient
                .get("http://cdn.duitang.com/uploads/item/201311/20/20131120213622_mJCUy.thumb.600_0.gif",
                        new AsyncHttpResponseHandler() {

@Override
                            public void onSuccess(int arg0, Header[] arg1,
                                                  byte[] arg2) {
                                // TODO Auto-generated method stub

GifDrawable drawable = null;
                                try {
                                    drawable = new GifDrawable(arg2);
                                } catch (IOException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                                network_gifimageview
                                        .setBackground(drawable);

dialog.dismiss();

}

@Override
                            public void onFailure(int arg0, Header[] arg1,
                                                  byte[] arg2, Throwable arg3) {
                                // TODO Auto-generated method stub
                                Toast.makeText(getApplicationContext(),
                                        "加载网络图片出错", Toast.LENGTH_SHORT).show();
                                dialog.dismiss();

}
                        });

3.用Android-gif-drawabl在ListView 中加载gif动画

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final GifImageView imageView;
        if (convertView == null) {
            imageView = new GifImageView(context);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            imageView.setPadding(10, 10, 10, 10);
            int size = AbsListView.LayoutParams.WRAP_CONTENT;
            AbsListView.LayoutParams layoutParams = new GridView.LayoutParams(size, size);
            imageView.setLayoutParams(layoutParams);
        } else {
            imageView = (GifImageView) convertView;
        }

asyncHttpClient
                .get(imageUrls.get(position),
                        new AsyncHttpResponseHandler() {
                            @Override
                            public void onSuccess(int i, Header[] headers, byte[] bytes) {

try {

GifDrawable drawable = new GifDrawable(bytes);
                                        imageView
                                                .setBackground(drawable);
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }

}

@Override
                            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                                System.out.println(throwable.getMessage());
                            }
                        });

return imageView;
    }

#PhotoView的使用-单张图片
作用,加载图片的时候,可以缩放图片

1.关联photoView的库

compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.3‘
    compile project(‘:PhotoView_library‘)

2.在布局中定义PhotoView

<uk.co.senab.photoview.PhotoView
            android:id="@+id/iv_photo"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

3.实例化控件并且设置相关的监听

ImageView mImageView = (ImageView) findViewById(R.id.iv_photo);
        mCurrMatrixTv = (TextView) findViewById(R.id.tv_current_matrix);

Drawable bitmap = getResources().getDrawable(R.drawable.wallpaper);
        mImageView.setImageDrawable(bitmap);

// The MAGIC happens here!
        mAttacher = new PhotoViewAttacher(mImageView);

// Lets attach some listeners, not required though!
        mAttacher.setOnMatrixChangeListener(new MatrixChangeListener());
        mAttacher.setOnPhotoTapListener(new PhotoTapListener());

private class MatrixChangeListener implements OnMatrixChangedListener {

@Override
        public void onMatrixChanged(RectF rect) {
            mCurrMatrixTv.setText(rect.toString());
        }
    }

private class PhotoTapListener implements OnPhotoTapListener {

@Override
        public void onPhotoTap(View view, float x, float y) {
            float xPercentage = x * 100f;
            float yPercentage = y * 100f;

showToast(String.format(PHOTO_TAP_TOAST_STRING, xPercentage, yPercentage, view == null ? 0 : view.getId()));
        }
    }

#PhotoView的使用-ViewPager中使用
应用场景:类似于空间图片浏览效果

1.在布局文件中定义HackyViewPager类,它继承ViewPager的

<uk.co.senab.photoview.sample.HackyViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

2.设置适配器
 mViewPager.setAdapter(new SamplePagerAdapter());

3.适配器具体代码如下:

static class SamplePagerAdapter extends PagerAdapter {

private static final int[] sDrawables = { R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper,
                R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper };

@Override
        public int getCount() {
            return sDrawables.length;
        }

@Override
        public View instantiateItem(ViewGroup container, int position) {
            PhotoView photoView = new PhotoView(container.getContext());
            photoView.setImageResource(sDrawables[position]);

// Now just add PhotoView to ViewPager and return it
            container.addView(photoView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

return photoView;
        }

@Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }

@Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

}

时间: 2024-10-14 14:04:34

常用的有关文件下载的框架的相关文章

Python第三方常用工具、库、框架等

Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换.打印和显示.还能进行一些图形效果的处理,如图形的放大.缩小和旋转等.是用户进行图象处理的强有力工具. http://www.pythonware.com/products/pil/ matplotlib:一个Python的2D绘图库. http://matplotlib.org/ Pmw(Pythonmegawidgets):它是超级GUI组件集----一个利

常用移动移动应用程序框架对比与移动开发解决方案

最近一直搞移动开发WebApp方向,领导让出个整体方案,写了一晚上文档,索性发到博客上与大家讨论讨论.如有不对的地方,请多指导. 常用的移动应用程序框架 1.  Jquery mobile: 特点: (1)强大的AJAX驱动导航:  无论页面数据的调用还是页面间的切换,都是采用AJAX进行驱动的,从而保持动画转换页面的干净与优雅. (2)以Jquery 与Jquery UI为框架核心 凡是会Jquery的人都可以轻松上手开发Jquery mobile的简单网站. (3)强大的浏览器兼容性平台支持

常用响应式 Web UI 框架

1. Bootstrap Bootstrap是快速开发Web应用程序的前端工具包.它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等.官方网站: http://twitter.github.com/bootstrap/github: https://github.com/twitter/bootstrap 2. Foundation Foundation 是一个易用.强大而且灵活的框架,用于构建基于任何设备上的 W

JAVA学习第三十四课(常用对象API)- 集合框架(二)—List集合及其子类特点

整个集合框架中最常用的就是List(列表)和Set(集) 一.List集合 && Set的特点 Collection的子接口: 1.List:有序(存入和取出的顺序一致),元素都有索引且可以重复    API文档解释:有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素. 2.Set:元素不能重复,无序,有可能会有序    API文档解释:一个不包含重复元素的 coll

异常处理、常用类、Java集合框架、反射

异常处理: 1.  异常:程序在执行过程中所产生的问题. 异常的三种类:①检查异常:又叫checdked异常或者受检异常.通常是用户错误或者不能被程序员所预见的问题.检查异常需要被解决之后才能通过编译. ②运行时异常:程序在运行过程中可能发生的.可以被程序员所避免的异常类型. ③错误:事实上错误不是异常,但却是用户和程序员无法控制的问题. 2.  异常的控制流程: 异常是被一个方法抛出的对象. (1) 处理异常的三个方法:①捕获这个异常,不让它沿着调用栈继续向下抛. ②捕获这个异常,并继续向下抛

处理大数据流常用的三种Apache框架:Storm、Spark和Samza。(主要介绍Storm)

处理实时的大数据流最常用的就是分布式计算系统,下面分别介绍Apache中处理大数据流的三大框架: Apache Storm     这是一个分布式实时大数据处理系统.Storm设计用于在容错和水平可扩展方法中处理大量数据.他是一个流数据框架,具有最高的社区率.虽然Storm是无状态的,它通过ApacheZooKeeper管理分布式环境和鸡群状态.使用起来非常简单,并且还支持并行地对实时数据执行各种操作. Apache Storm继续成为实时数据分析的领导者是因为它的易于操作和设置,并且它保证每个

JAVA学习第三十五课(常用对象API)- 集合框架(三)—Vector、LinkedList、ArrayList集合演示

集合框架构成图 摘自百度图片 一.Vector集合 演示 虽然Vector已经不常用了,但是还是要了解一下其中的方法 import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Vector

JAVA学习第三十九课(常用对象API)- 集合框架(七)— Map集合及其子类对象

一.Map集合常见子类 HashTable:内部结构是哈希表,同步,此实现提供所有可选的映射操作,不允许使用 null 值和 null 键 (HashTable下有子类Properties,使用频率非常高,用来存储键值对型的配置文件信息和IO技术相结合) HashMap:内部结构是哈希表,不同步,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键. TreeMap:内部结构是二叉树,不同步,可以对Map集合中的键进行排序. 二.HashMap演示 import java.ut

JAVA学习第三十三课(常用对象API)- 集合框架(一)

数字有很多用数组存,对象有很多就要用集合存 但是数组是固定长度的,集合是可变长度的 集合的由来: 对象用来封装特有数据,对象多了需要存储,如果对象个数不确定,就需要使用集合容器来存储 集合的特点: 1.用于存储对象的容器 2.长度可变 3.集合中不可存储基本数据类型 对于集合体系,的最顶层存储的是该体系中所有的共性内容,Collection,同继承一样,看顶层,用底层 java.uitil包中的Cellection 集合容器因为内部的数据不同,有多种具体容器,不断向上抽取,就形成了集合框架 整个