第三方框架Xutils3的简单使用

Xutils3(githup地址)是一个三方库,是一个工具类,分为4个模块:HttpUtils、ViewUtils、BitmapUtils、DbUtils

使用时记得添加权限

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


ViewUtils的简单试用

Xutils3可以使用@ViewUtils绑定控件

@ViewInject(R.id.txtv)
private TextView txtv;
@ViewInject(R.id.imgv)
private ImageView imgv;


在使用Xutils3时需要在Activity的onCreate方法中初始化数据

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
	//初始化操作
        x.Ext.init(this);
        x.Ext.setDebug(true);
        x.view().inject(this);
    }



Xutils3可以使用@ContentView绑定布局

@ContentView(R.layout.activity_http)
public class HttpActivity extends AppCompatActivity {}


Xutils3可以使用@Event绑定事件监听
@Event(R.id.get)
private void get(View view){}

HttpUtils的简单使用方法

//get请求下载数据
    private void get(View view){
        RequestParams params = new RequestParams("https://github.com/wyouflf/xUtils3");
        Callback.Cancelable cancelable = x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                mContent.setText(result);//显示下载数据的结果
                Log.i(TAG,"onSuccess:"+result);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Log.i(TAG,"onError");
            }

            @Override
            public void onCancelled(CancelledException cex) {
                Log.i(TAG,"onCancelled");
            }

            @Override
            public void onFinished() {
                Log.i(TAG,"onFinished");
            }
        });
        //取消请求
//        cancelable.cancel();
    }
//用post提交数据
    private void post(View view){
        String url = "提交网址的接口";
        RequestParams params = new RequestParams(url);
        params.addBodyParameter("nikename","隔壁老王");
        params.addBodyParameter("username","12345656");
        params.addBodyParameter("password","123456");

        x.http().post(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                mContent.setText(result);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });
    }
BitmapUtils的简单使用

ImageOptions options = new ImageOptions.Builder()
                .setCircular(true)  //  设置为圆形
                .setFadeIn(true)    //  渐显
//                .setFailureDrawable() 加载错误默认图片
//                .setFailureDrawableId()   加载出错默认图片
                .setForceLoadingDrawable(true)      //??
//                .setAnimation()
//                .setAutoRotate()              //自动旋转
//                .setLoadingDrawable()   //默认占位图
                .setLoadingDrawableId(R.mipmap.ic_launcher)   //默认占位图
                .setCrop(true)      //裁切
                .build();
//        x.image().clearCacheFiles();    //清空缓存文件
//        x.image().clearMemCache();      //清空内存缓存
        x.image().bind(mImage, url, options);
DbUtils的简单使用

<span style="font-size:12px;">       </span><span style="font-size:10px;"> DbManager.DaoConfig daoConfig = new DbManager.DaoConfig();
//        daoConfig.setDbDir()    //设置文件路劲
        daoConfig.setDbName("User.db");
//        daoConfig.setAllowTransaction(true); //设置事物开启 默认
//        daoConfig.setDbVersion(1);           //设置数据库版本号

        //当我们的数据库版本号改变的时候 会调用 更新数据库结构的方法
      /*  daoConfig.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
            @Override
            public void onUpgrade(DbManager db, int oldVersion, int newVersion) {

            }
        });   */
        //当数据库开启的时候调用的方法    一般也不用
  /*      daoConfig.setDbOpenListener(new DbManager.DbOpenListener() {
            @Override
            public void onDbOpened(DbManager db) {
                //启用以后 提升数据库写入速度
                db.getDatabase().enableWriteAheadLogging();
            }
        });*/

        //当表创建的时候       一般不用
       /* daoConfig.setTableCreateListener(new DbManager.TableCreateListener() {
            @Override
            public void onTableCreated(DbManager db, TableEntity<?> table) {

            }
        });*/
        db = x.getDb(daoConfig);
    }
    @Event(R.id.save)
    private void save(View view){
        User user = new User();
        user.setId(15);
        user.setUsername("老王");
        user.setAge("38");
        user.setSex("男");
        try {
//            db.save(user);  //保存
            db.saveOrUpdate(user);  //更新或者保存
        } catch (DbException e) {
            e.printStackTrace();
        }
    }
    @Event(R.id.delete)
    private void delete(View view){
        User user = new User();
        user.setId(15);
        user.setUsername("老王");
        user.setAge("38");
        user.setSex("男");
        try {
//            db.delete(User.class);  //清空表
//            db.delete(user);        //删除某一个对象
//            db.deleteById(User.class,15);  //通过ID删除
            db.delete(User.class,WhereBuilder.b("id","like","%2%"));
        } catch (DbException e) {
            e.printStackTrace();
        }
    }
    @Event(R.id.update)
    private void update(View view){
        User user = new User();
        user.setId(15);
        user.setUsername("老王");
        user.setAge("4");
        user.setSex("男");
        try {
//            db.update(user,"age","sex");

            KeyValue value =new KeyValue("name","xxx");
            db.update(User.class,WhereBuilder.b("id","like","%5%"),value);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }
    private int page=0;
    @Event(R.id.query)
    private void query(View view){
        try {
            //查询某一条 匹配的信息
            User user = db.selector(User.class).where("id", "=", "15").findFirst();
            mContent.setText(user.toString());
            //查询数据库所有的信息
            List<User> users = db.selector(User.class).findAll();   //查询出所有的数据
            long count = db.selector(User.class).count();   //总共多少条数据
//            List<User> users2 = db.selector(User.class).where("id", "=", "15").and("name", "like", "老").findAll();  //and 多条件 有丶问题
            List<User> users3 = db.selector(User.class).limit(8).offset(page*8).findAll();  //limit 控制 加载数量, offset 控制加载位置
           //**********************

            page++;
            StringBuffer sb = new StringBuffer();

            for (User var : users3) {
                sb.append(var.toString());
            }
            Log.i(TAG,sb.toString());
            mContent.setText(sb.toString());
        } catch (DbException e) {
            e.printStackTrace();
        }
    }</span>










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这是一个关于使用Pytorch构建CNN模型对CIFAR-10数据集进行分类的问题。首先,我们需要导入Pytorch和CIFAR-10数据集: ```python import torch import torchvision import torchvision.transforms as transforms transform = transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2) testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform) testloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2) classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') ``` 这里我们使用了Pytorch提供的transforms模块对数据集进行预处理,并使用了torchvision.datasets模块来加载CIFAR-10数据集。接下来,我们可以定义CNN模型: ```python import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) x = x.view(-1, 16 * 5 * 5) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x net = Net() ``` 这是一个简单的CNN模型,包含了两个卷积层和三个全连接层。接下来,我们需要定义损失函数和优化器: ```python import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9) ``` 我们使用交叉熵损失函数和随机梯度下降优化器来训练模型。最后,我们可以开始训练模型了: ```python for epoch in range(2): # loop over the dataset multiple times running_loss = 0.0 for i, data in enumerate(trainloader, 0): # get the inputs; data is a list of [inputs, labels] inputs, labels = data # zero the parameter gradients optimizer.zero_grad() # forward + backward + optimize outputs = net(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() # print statistics running_loss += loss.item() if i % 2000 == 1999: # print every 2000 mini-batches print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 2000)) running_loss = 0.0 print('Finished Training') ``` 在训练完成后,我们可以使用测试集来测试模型的性能: ```python correct = 0 total = 0 with torch.no_grad(): for data in testloader: images, labels = data outputs = net(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the 10000 test images: %d %%' % ( 100 * correct / total)) ``` 这是一个基本的CNN模型对CIFAR-10数据集进行分类的示例,你可以根据自己的需求对模型进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值