精华内容
下载资源
问答
  • 为了纪念在编程生涯中出现的傻傻的bug,特此做此笔记,以兹参考。 torchvision中的ToPILImage()函数 torchvision.transforms.TOPILImage()函数用于将tensor形式的图片转化为用PIL图片格式,以便于后续的处理,比如...

    为了纪念在编程生涯中出现的傻傻的bug,特此做此笔记,以兹参考。

    1. torchvision中的ToPILImage()函数
      torchvision.transforms.TOPILImage()函数用于将tensor形式的图片转化为用PIL图片格式,以便于后续的处理,比如cropresize等等。但是这个函数的输入的张量形状应该如同(Channels, Height, Width)的,千万不要把通道放到最后去了,不然会出现意想不到的错误,而且不容易发现。在pytorch中,应该所有的输入输出都是通道优先的(channel first)。
    展开全文
  • Java:接口和抽象类,傻傻分不清楚?

    千次阅读 多人点赞 2019-04-26 07:28:15
    傻傻分不清楚。 搞不清楚要用抽象类还是接口,就先来看看两者之间的区别。来,抽象类和接口,你俩过来比比身高。 抽象类中的方法可以有方法体,能实现方法具体要实现的功能,但是接口中的方法不行,没有方法体...


    再来聊聊接口和抽象类。

    01、抽象类和接口的区别

    来看网络上对接口的一番解释:

    接口(英文:Interface),在 Java 编程语言中是一个抽象类型,是抽象方法的集合。一个类通过继承接口的方式,从而来继承接口的抽象方法。

    兄弟们,你们怎么看,这段解释把我绕得晕乎乎的,好像喝过一斤二锅头。到底是解释抽象类呢还是接口呢?傻傻分不清楚。

    搞不清楚要用抽象类还是接口,就先来看看两者之间的区别。来,抽象类和接口,你俩过来比比身高。

    1. 抽象类中的方法可以有方法体,能实现方法具体要实现的功能,但是接口中的方法不行,没有方法体。
    2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的,并且是隐式的,缺省的。
    3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法的。
    4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

    02、进一步剖析接口和抽象类

    好像知道了两者之间的区别,但印象还是有些模糊。没关系,我们进一步深入。

    抽象类

    抽象类体现了数据抽象的思想(不然呢),是实现多态的一种机制。抽象类定义了一组抽象的方法,至于这组抽象方法的具体表现形式由子类来继承实现。

    抽象类就是用来继承的,否则它就没有存在的任何意义。举个例子,我们来定义一个抽象的作者类。

    abstract class Author {
    	abstract void write ();
    	
    	public void sleep () {
    		System.out.println("吃饭睡觉打豆豆");
    	}
    }
    

    作为一名作者,本职工作就是搞写作的,其他时间就吃饭睡觉打豆豆;但至于能写出什么样的作品,就要看是哪一个作者了。比如说,沉默王二能写出的作品一定是幽默风趣的。

    public class Wanger extends Author {
    
    	@Override
    	void write() {
    		System.out.println("沉默王二的作品《Web 全栈开发进阶之路》,读起来轻松惬意");
    	}
    	
    }
    

    注意到了没?抽象类是可以有自己的方法的,但继承它的子类可以忽视。

    接口

    接口是一种比抽象类更加抽象的“类”,毕竟是用关键字 interface 声明的,不是用 class

    接口只是一种形式,就好像一纸契约,自身不能做任何事情。但只要某个类实现了这个接口,就必须按照这纸契约来办事:接口里提到的方法必须全部实现,少一个都不行(抽象类的子类可以忽视非抽象方法)。举个例子,我们来定义一个北航出版合同的接口。

    interface ContractBeihang {
    	void scriptBeihang();
    }
    

    一旦作者签订了合同,那么就必须定期完成一定量的书稿。

    public class Wanger extends Author implements ContractBeihang {
    
    	@Override
    	void write() {
    		System.out.println("作品《Web 全栈开发进阶之路》,读起来轻松惬意的技术书");
    	}
    
    	@Override
    	public void scriptBeihang() {
    		System.out.println("一年内完成书稿啊,不然要交违约金的哦。");
    	}
    	
    }
    

    接口是抽象类的补充,Java 为了保证数据的安全性不允许多重继承,也就是说一个类同时只允许继承一个父类(为什么呢?请搜索关键字“菱形问题”)。

    但是接口不同,一个类可以同时实现多个接口,这些接口之间可以没有多大的关系(弥补了抽象类不能多重继承的缺陷)。比如说,沉默王二不仅签了北航出版社的合同,还和 51CTO 签了付费课程的合同。

    public class Wanger extends Author implements ContractBeihang, Contract51 {
    
    	@Override
    	void write() {
    		System.out.println("作品《Web 全栈开发进阶之路》,读起来轻松惬意的技术书");
    	}
    
    	@Override
    	public void scriptBeihang() {
    		System.out.println("一年内完成书稿啊,不然要交违约金的哦。");
    	}
    
    	@Override
    	public void script51() {
    		System.out.println("王老师,先把 Java 云盘的大纲整理出来。");
    	}
    	
    }
    

    03、接口和抽象类之间的差别

    通过上面举的例子,是不是对接口和抽象类有比较清晰的认知了?如果还没有,来来来,我们再来比较一下接口和抽象类之间的差别。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PyHUoyLM-1573712761900)(http://www.itwanger.com/assets/images/2019/11/java-interface-abstract-1.png)]

    究竟什么时候使用接口,什么时候使用抽象类呢?

    1、抽象类表示了一种“is-a”的关系,而接口表示的是“like-a”的关系。也就是说,如果 B 类是 A(沉默王二是一个作者),则 A 应该用抽象类。如果 B 类只是和 A 有某种关系,则 A 应该用接口。

    2、 如果要拥有自己的成员变量和非抽象方法,则用抽象类。接口只能存在静态的不可变的成员变量(不过一般都不在接口中定义成员变量)。

    3、为接口添加任何方法(抽象的),相应的所有实现了这个接口的类,也必须实现新增的方法,否则会出现编译错误。对于抽象类,如果添加了非抽象方法,其子类却可以坐享其成,完全不必担心编译会出问题。

    4、抽象类和接口有很大的相似性,请谨慎判断。Java 从1.8版本开始,尝试向接口中引入了默认方法和静态方法,以此来减少抽象类和接口之间的差异。换句话说,两者之间越来越难区分了。

    04、接口的实际应用

    在实际的开发应用当中,抽象类我用得不多(这可真是大实话);接口我倒是用得蛮多的,就像下面这样子:

    public interface CityMapper {
    
    	@Select("select * from city")
    	List<City> getCitys();
    
    }
    

    @Insert@Update@Delete@Select 被称为 Mybatis 的注射器注解。

    是不是突然感觉有点懵?之前还在谈接口和抽象类,怎么一下子跳跃到 Mybatis 上面了呢?还有什么映射器注解?

    嗯,这就对了。所有的理论知识都要应用于实践,否则也就没有了存在价值。在我的实践应用当中,接口用得最多的就是 MybatisMapper 接口。

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解(就是你在前面见到的增删改查四大注解)来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

    当我们配置好了 MyBatis 环境后,可以直接通过以下语句来调用注射器接口。

    @Service
    public class CityService {
    	@Autowired
    	private CityMapper cityMapper;
    
    	public void init() {
    			List<City> citys = cityMapper.getCitys();
    		}
    	}
    }
    

    在注射器接口中,也只会存在那些与数据库查询相关的抽象方法,就像你看到的 List<City> getCitys();。一个注射器接口 + 注射器注解就可以增删改查数据库,是不是感觉很神奇?

    05、总结

    这篇文章的目的是帮助更多的读者了解和掌握抽象类、接口的特点,以及不同的使用场景。

    上一篇:再谈 Java 的继承和超类 Object

    下一篇:Java 生成二维码分享海报

    谢谢大家的阅读,原创不易,喜欢就随手点个赞👍,这将是我最强的写作动力。如果觉得文章对你有点帮助,还挺有趣,就关注一下我的公众号「沉默王二」。

    展开全文
  • 问题:本人需在主界面获取所有app,获取后没发现什么问题,但是导入多个app后,才发现问题:点击某app,按下去,显示的却是另一个app的图标,而不是该app的图标。 对于菜鸟的我,瞬间不好了。于是博客别人各种方法,...

    问题:本人需在主界面获取所有app,获取后没发现什么问题,但是导入多个app后问题出来了:点击某app,按下去,显示的却是另一个app的图标,而不是该app的图标。


    对于菜鸟的我,心情瞬间不好了。于是博客别人各种方法,但是比较一下,没什么问题啊,把别人的方法一次又一次的借用了下还是不行,这下不开心了。

    最后在理解的基础上,瞎猫碰上死耗子,终于解决了,分享给大家,也希望大家不要和我一样,遇到问题就乱撞,呵呵,一定静下心来滤清思路,脑袋疼、乱的时候稍微休息下,在重来!

    贴码吧,

    未解决前的码:

    <span style="font-size:12px;">public View getView(int position, View convertView, ViewGroup parent) {
    			
    			ViewHolder mViewHolder = null;
    		 	
    			if (convertView == null) {  
    				// 使用View的对象itemView与R.layout.app关联
    				convertView = inflater.inflate(R.layout.bd_menu_app_list, parent,false);
    				mViewHolder = new ViewHolder();
    				mViewHolder.app_hkbuttom = (HKButtonText) convertView.findViewById(R.id.btn_app);
    				mViewHolder.app_names = (TextView) convertView.findViewById(R.id.app_names);
    
    				convertView.setTag(mViewHolder);
    			} else {
    				mViewHolder = (ViewHolder) convertView.getTag();
    			} 
    			
    //			AppInfo appInfo = (AppInfo)getItem(position);
    //			mViewHolder.app_hkbuttom.SetIconUp(((BitmapDrawable) appInfo.getAppIcon()).getBitmap());
    //			mViewHolder.app_names.setText(appInfo.getAppLabel().toString());
    	          
    			mViewHolder.app_hkbuttom.SetIconUp(((BitmapDrawable)mArrayList.get(position).getAppIcon()).getBitmap()); 
    			mViewHolder.app_names.setText(mArrayList.get(position).getAppLabel().toString());
    		
    			// 获取的APP触碰监听
    			mViewHolder.app_hkbuttom.setId(position);  
    			mViewHolder.app_hkbuttom.SetHKTouchListener(ApplicationActivity.this);
    			
    			return convertView;
    		} 
    	}</span>

    解决后的码:

    <span style="font-size:12px;">			if (convertView == null || convertView.getTag() !=null) {  
    				// 使用View的对象itemView与R.layout.app关联
    				convertView = inflater.inflate(R.layout.bd_menu_app_list, parent,false);
    				mViewHolder = new ViewHolder();
    				mViewHolder.app_hkbuttom = (HKButtonText) convertView.findViewById(R.id.btn_app);
    				mViewHolder.app_names = (TextView) convertView.findViewById(R.id.app_names);
    
    				convertView.setTag(mViewHolder);
    			} else {
    				mViewHolder = (ViewHolder) convertView.getTag();
    			} </span>

    呵呵,是不是感觉没哪里有变化呀。还是给大家指一下吧,就是在getView下的convertView判断中,少了一个判断条件:

    convertView.getTag() !=null

    再看一下,是不是呀,是不是呀,呵呵O(∩_∩)O~

    就因为少了这句,害我弄了好长时间,不过现在终于好了,菜菜的我心情特别好,(*^__^*) 嘻嘻……

    ( ^_^ )/~~拜拜

    

    展开全文
  • 准备工作:  首先需要pillow模块 安装官网下载对应的版本后pip install '模块文件路径' ...在模版中想调用静态文件一样调用上传的图片 #article.html {% locad siaticfiles %} ... 图片名' %}"> ...

    准备工作:

        首先需要pillow模块  安装官网下载对应的版本后pip install '模块文件路径'

    1、settings.py

     需要设置文件的保存根路径:

     MEDIA_ROOT='up_images'

    1、models.py

    class Article(models.Model):

            ......

            img=models.ImageField(upload_to='images')      #必填参数upload_to.会自动保存在根路径的此文件夹下

            ...

    2、模版中调用

    在这里暂时发现了一个野路子,但是蛮简单的:

    在settings.py中必须以下:

    STATIC_URL='/static/'

    STATICFILES_DIRS=[

            os.path.join(BASE_DIR,'static'),    #这个防止静态文件 一般为css js 通用img

            os.path.join(BASE_DIR,MEDIA_ROOT),     #前边设置的文件跟路径

    ]

    在模版中想调用静态文件一样调用上传的图片

    #article.html

    {% locad siaticfiles %}

    ...

    <img src="{% static 'up_images/图片名' %}">

    ...

    展开全文
  • 与其什么都不懂傻傻地选择服务器端开发,倒不如做客户端开发更有前途。 我以上所说的,都是错的。 原文: http://blog.devtang.com/blog/2015/10/07/why-fresh-wants-to-do-server-dev/ 作者: @唐巧_...
  • 图像噪声展示,傻傻分不清楚

    千次阅读 2016-05-28 21:50:41
    经过上一篇的大篇的文字介绍,这里再提供大篇的图片,来理解图像的噪声 一、椒盐躁声 二、高斯噪声 三、指数噪声 四、泊松噪声 五、均匀噪声 六、瑞利噪声 七、伽马噪声 八、...
  • 转载:超像素、语义分割、实例分割、全景分割 傻傻分不清? 在计算机视觉中,图像分割是个非常重要且基础的研究方向。简单来说,图像分割(image segmentation)就是根据某些规则把图片中的像素分成不同的部分...
  • Verification和Validation傻傻分不清楚?

    万次阅读 2018-10-18 18:35:44
    Amos这样来描述这张图片,当你买了一件衬衫,怎么样来看衬衫好不好呢?首先我们会看这件衬衣质量合格吗,是不是有两个相同长度的袖子,尺寸合适吗,颜色是我要的吗,纽扣有没有少一颗,这些都可以理解为你在去验证...
  • (一)彩色图像每个像素通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,分量介于(0,255)。Scalar(0,0,0):黑色 Scalar(255,255,255):白色(二)二值图像(binary image) 即图像上的每一个像素只有两种...
  • 基本上是这样的,Sourcefile文件夹里面放的是CPP文件这些,Resourcefile文件夹是资源文件夹,里面可以放你程序里需要的资源,包括图标,对话框,图片等等;对应的文件如下: Source Files - *.c, *.cpp Header ...
  • 傻傻的创业者(上)

    2014-08-17 11:18:55
    傻傻的创业者(上)   我是一枚屌丝程序猿,现在也是一名连续创业者。为什么会是连续创业者,是缘于我第一次创业的失败,但对创业的热情不灭,我成为了耳熟能详的连续创业者,其实我就是一个 loser 。连续创业者...
  • eof和\n如何区别 作为初学者,不太懂。 谢谢![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/13.gif)
  • 在集成开发工具(Intellij Idea)关闭的时候是否...TODO 一张图片 你又着急下班溜掉(去跟程序员的女朋友约会) 思绪万千的时候你点了Disconnect 当你下次打开IntelliJ Idea工具,启动你的项目,就会遇到问题: Th...
  • 十分钟快速理解DPI和PPI,不再傻傻分不清! https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for=pc关于UX测试相关的:之前一直搞的不是很清楚 这个百家号的解释挺好的 简单转帖...
  • dp、sp、px傻傻分不清楚[完整]

    千次阅读 2014-08-27 09:39:10
    [无线手册-4] dp、sp、px傻傻分不清楚[完整] 折折熊 · 1 年前 做移动设计的同学,不管是原生app或者web app,应该对字体字号都是很头痛的问题。根本原因是,我们用唯一分辨率的电脑,设计各个不同尺寸大小...
  • 发光强度、亮度、光照度,这些不常见的单位傻傻分不清? http://mini.eastday.com/a/180327104724257.html
  • Hypermedia就是将文字、图片、音频和视频融合在一个媒介里,例如网页(HTML)。说白了,就是Internet上有很多数据,你请求你想要的数据,万维网的作用就是通过超链接将这些文件数据以无格式无状态的形式发送给你(HTTP...
  • 一个快速简洁的JavaScript框架,设置的宗旨是"write less,do more",在线编辑器、在线代码、文本比较、以及各种常用页面样式和网页模板,还在什么,快来体验一下吧。 地址:https://www.jq22.com/ 2.Aliyun Java ...
  • 【原创】差分线——差模,共模,奇模,偶模傻傻的分不清楚 说起差分线,做高速设计应该没有人不知道。最大的认知就是抗干扰能力强。对于画线路板来说,比单根的并行总线简单。如:DDR一大把线比PCIE几对差分线麻烦...
  • 图片描述 很优美有没有,如果你想想地理课本,0不就相当于本初子午线,-8不就是180°,而正数相当于西经,负数相当于东经。 (七)为何这样求补码 然后我们再来看看为什么负数的补码的求法为什么是反码+1 因为...
  • 学习丫头安装体会

    2019-04-24 17:28:37
    丫头字幕精灵破解版 1、运行丫头字幕精灵绿色版KaraTitleMaker.exe程序后退出,查看一下注册了没有,选择菜单中的帮助------注册激活(绿色版是没有注册的,注册激活显示白色)。  2、双击“注册卡拉精灵.reg”,...
  • 在电子合同领域,我们经常会听到这么3个词:数字证书、CA、CA证书,而且经常傻傻分不清楚它们到底是什么东西。 那么,今天小编就给大家来好好科普一下。 数字证书是什么? 我们都知道,互联网是虚拟的,通过互联网...
  • 内存缓存 高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指...以图片为例: 访问-> 200 -> 退出浏览器 再进来-> 200(from disk cache) -> 刷新 -> 200(from memory cache
  • web服务器用于提供http服务,即向客户端返回信息,其可以处理HTTP协议,响应针对静态页面或图片的请求。通俗的说就是可以挂静态网站,常见的web服务器有Apache、IIS、Nginx。 中间件 要理解中间件,首先应该了解...
  • 然而对于初学者来说,往往让人难感到很疑惑,之前有大佬的博客以某个矩阵为输入数据,详细演示了各种维度变换,但是缺乏一定的直观性,一堆数字看起来很烦,本篇博客以几张图片为例来讲述numpy,tensorflowAPI关于...
  • 前面给大家介绍了工业通讯当中各种各样的协议、接口: 最全整理工业通讯上的领域各种总线+协议+规范+接口—数据采集与控制 也从ISA-95出发分析了的工业网络的自动化金字塔: 工业通讯网络层级全解读,解析工业...
  • 首页图片 4.logo设置 5.桌面设置 报表应用 1.报表设计 2.报表实例(销售图表、销售列表、销售混合) 3.报表模板(采购报表、销售报表、仓存报表、收支报表) 扩展应用实例 1.OA办公 2.销售管理 3.进销存管理 4.消息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,791
精华内容 5,916
关键字:

傻傻等图片