content

控制反转(IoC)与依赖注入(DI)

心不动则不痛 提交于 2019-12-10 04:19:12
原文: http://zhangjunhd.blog.51cto.com/113473/126530 1. 控制反转 (Inversion of Control) 与依赖注入 (Dependency Injection) 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。 IoC是一个很大的概念,可以用不同的方式来实现。其主要实现方式有两种:<1>依赖查找(Dependency Lookup): 容器 提供回调接口和上下文环境给 组件 。EJB和Apache Avalon都使用这种方式。<2>依赖注入(Dependency Injection):组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。后者是时下最流行的IoC类型,其又有接口注入(Interface Injection),设值注入(Setter Injection)和构造子注入(Constructor Injection)三种方式。 图1 控制反转概念结构 依赖注入之所以更流行是因为它是一种更可取的方式:让容器全权负责依赖查询,受管组件只需要暴露JavaBean的setter方法或者带参数的构造子或者接口

Android数据共享—ContentResolver

白昼怎懂夜的黑 提交于 2019-12-09 22:30:28
Android是如何实现应用程序之间数据共享的?一个应用程序可以将自己的数据完全暴露出去,外界更本看不到,也不用看到这个应用程序暴露的数据是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和这个程序里的数据打交道,例如:添加(insert)、删除(delete)、查询(query)、修改(update),当然需要一定的权限才可以。 如何将应用程序的数据暴露出去? Android提供了ContentProvider,一个程序可以通过实现一个Content provider的抽象接口将自己的数据完全暴露出去,而且Content providers是以类似数据库中表的方式将数据暴露。Content providers存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化,可通过2种方法:创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。 如何通过一套标准及统一的接口获取其他应用程序暴露的数据?Android提供了ContentResolver

react受控组件操作表单

若如初见. 提交于 2019-12-09 21:19:56
1.给每个表单元素添加一个name属性 2.name属性的值要和state中的状态值保持一致 3.使用同一个事件处理程序 class Hello extends React.Component { state = { txt: '', content:'', addresss:'zk', isChecked:true } handleForm=(e)=>{ const target=e.target 判断事件类型,如果是checkbox返回checked值,不是返回文本框的value值 const value=target.type=='checkbox'?target.checked:target.value; 获取文本框的name值 const name=target.name this.setState({ [name]:value }) } render() { return ( <div> <p>{this.state.txt}</p> <p>{this.state.content}</p> <p>{this.state.address}</p> <input type="text" name="txt" value={this.state.txt} onChange={this.handleForm} /> <br/> {/* 富文本框 */} <textarea

Android基础 : ContentProvider和getContentResolver

自作多情 提交于 2019-12-09 17:58:58
安卓系统中的数据库SqlLite操作和java中mysql的数据库操作很不一样,造成这样的原因是因为在安卓中数据库是属于进程的不存在数据库客户端,也不存在数据库服务器。 关于SqlLite数据库的文章可以参考 Android 使用SQLite数据库详解 : http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1111/540.html ContentProvider 因为在Android系统里面,数据库是私有的。一般情况下外部应用程序是没有权限读取其他应用程序的数据。如果你想公开你自己的数据,你有两个选择:你可以创建你自己的内容提供器(一个ContentProvider子类)或者你可以给已有的提供器添加数据-如果存在一个控制同样类型数据的内容提供器且你拥有写的权限。而 外界根本看不到,也不用看到这个应用暴露的数据在应用当中是如何存储的,或者是用数据库存储还是用文件存储,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和程序里的数据打交道,可以读取程序的数据,也可以删除程序的数据 ,当然,中间也会涉及一些权限的问题。 而以下方法是需要在子类实现的: boolean onCreate() Called when the provider is being started. Cursor

Elasticsearch之javaAqi

家住魔仙堡 提交于 2019-12-09 16:27:47
一. 创建Maven项目 1.1 导入pom.xml      <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>5.4.2</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.4.2</version> </dependency> 主版本需要与服务器版本一致 1.2 elasticsearch.yml 二 . 查询代码实例 2.1 代码 //指定Es集群 Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build(); //创建访问Es服务器的客户端 TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192

多线程爬虫

天大地大妈咪最大 提交于 2019-12-09 15:09:09
爬取糗事百科 # 使用了线程库 import threading # 队列 from Queue import Queue # 解析库 from lxml import etree # 请求处理 import requests # json处理 import json import time class ThreadCrawl(threading.Thread): def __init__(self, threadName, pageQueue, dataQueue): #threading.Thread.__init__(self) # 调用父类初始化方法 super(ThreadCrawl, self).__init__() # 线程名 self.threadName = threadName # 页码队列 self.pageQueue = pageQueue # 数据队列 self.dataQueue = dataQueue # 请求报头 self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'} def run(self): print (

Meta http-equiv属性详解

一笑奈何 提交于 2019-12-09 10:02:30
本文转载于: 猿2048 网站 Meta http-equiv属性详解 Meta http-equiv属性详解(参考链接: http://www.w3school.com.cn/tags/tag_meta.asp ) http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值。 引用 meat标签的http-equiv属性语法格式是:<meta http-equiv="参数" content="参数变量值"> ;其中http-equiv属性主要有以下几种参数: 1、Expires(期限) 说明:可以用于设定网页的到期时间。一旦网页过期,必须到服务器上重新传输。 用法: Html代码 <meta http-equiv= "expires" content= "Wed, 20 Jun 2007 22:33:00 GMT"> 注意:必须使用GMT的时间格式。 2、Pragma(cache模式) 说明:是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦离开网页就无法从Cache中再调出 用法: Html代码 <meta http-equiv= "Pragma" content= "no-cache"> 注意:这样设定

JavaScript 的addEventListener() 事件监听详解!

一世执手 提交于 2019-12-09 08:06:21
JavaScript 的addEventListener() 事件监听详解! addEventListener() 用于向指定元素添加事件。 可以向一个元素添加多次事件或者多次不同事件,后面的事件是不会覆盖前面的。 语法: element.addEventListener(event,fn,useCaption ); 参数说明:tr件,比如 click mouseenter mouseleave fn 回调函数 useCaption 用于描述是冒泡还是捕获。默认值是false,即冒泡传递。 当值为true,就是捕获传递。 示例代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>addEventListener</title> <script type="text/javascript" src="js/jquery-3.0.0.js"></script> <style type="text/css"> #content{ width: 100px; height: 100px; background: #f9f; } </style> </head> <body> <div id="content"></div> <script type="text/javascript"> /

同一个盒子,同时绑定事件冒泡与事件捕获两个事件

放肆的年华 提交于 2019-12-09 07:06:02
当同一个容器绑定两个事件,遵循先捕获,后冒泡 ,有一个前提是 点击的事件先执行 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> .box{ width: 300px; height: 300px; background: red; } .content{ width: 200px; height: 200px; background: green; } .wrapper{ width: 100px; height: 100px; background: yellow; } </style> </head> <body> <div class="box"> <div class="content"> <div class="wrapper"> </div> </div> </div> <script> let box = document.getElementsByClassName("box")

WPF资源路径详细概念详解

吃可爱长大的小学妹 提交于 2019-12-09 04:45:54
我们在这篇文章中将会为大家详细介绍有关 WPF 资源路径的一些概念介绍。希望大家可以通过本文介绍的内容能加深对WPF的理解。 WPF名称范围各种概念解析 WPF多媒体各种功能详解 WPF动态资源使用方法介绍 WPF TextBlock实际使用方法 WPF验证技巧讲解 在项目中增加两张图片Content.jpg和Resource.jpg,分别将其生成操作属性设置为Content和Resource。在界面中增加两个Image控件ImgContent和ImgResource,在XAML中分别设置Source路径为Content.jpg和Resource.jpg。 运行后ImgResource能正常显示图片,但是ImgContent控件无显示。将Content.jpg图片拷贝至应用程序的Debug目录中,ImgContent控件可显示图片。 生成操作设置为Resource,生成的时候资源将添加到程序集中。可以尝试将原有的图片删除,图片正常显示。将原有图片用新图片替换,仍显示原有图片。只有选择重新生成操作才能更新图片。 生成操作设置为Content,并不会添加至程序集,而且只有把WPF资源路径放置在程序运行目录才能访问到资源。程序运行目录调试时是Debug目录,安装后就是程序的安装目录。 与直接把资源放置在程序运行目录不同的是,添加Content资源文件,会向程序集