afterPropertiesSet猫薄荷对猫有什么作用用

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。优秀应用算法都大量用到位运算,而位运算在工作中很少用到,所以借助其算法,我们看一下位运算的优势以及应用,但是大多数教材只会教大家二进制和十进制如何互换,都是死记硬背式的,并没有去讲解真正含义,换一个进制之后,依然不会,我们回到最根本的一些计数方法上,从10进制来推算,希望用一种更简单的方式介绍其原理
yarn默认只管理内存资源,虽然也可以申请cpu资源,但是在没有cpu资源隔离的情况下效果并不是太好.在集群规模大,任务多时资源竞争的问题尤为严重. 还好yarn提供的LinuxContainerExecutor可以通过cgroup来隔离cpu资源
## 策略模式   需求是这样的:根据时间,向新注册的男用户发送女主播的打招呼信息。时间段大概分为早上,上午,下午,晚上,深夜以及饭点,比如说早上就发消息说早上好,饭点就发吃什么。   常用的硬编码方式,一个类中根据多个时间点写多个方法,然后if else做判断选择。显然这种做法是不合理的,后期代码复杂度以及可阅读性都比较差,且不符合软件设计中开闭原则,指不定哪天坑爹的产品要加一个时间点去花式诱骗消费,然后又加一个if else。于是策略模式应运而再生。简单点说策略模式体现的是面向对象的多态特性。每个时间段都可以看成一个策略对象,每个策略中提供方法处理对应的业务。 下面具体代码说明: 提供一个抽象类 public abstract class AbstractReplayStrategy { protected String[][] public AbstractReplayStrategy(String[][] replays) { this.replays = } /** * 各个回复策略条数 */ public int getReplayNumber() { return replays. } /** * 根据时间点判断是否合适发送该消息 */ public abstract boolean accept(long fuid, long tuid);     /** * 添加信息task */ public List getReplayStrategyTask(long fromUser...
作为团队里一名还未毕业的前端妹子,这周接到了接到了阿里巴巴-蚂蚁金服的三轮电面,我大概是从二月中旬的时候就陆续投一些公司的简历,想找一下比较好的暑假实习,一些大公司从二月份中下旬就开始发内推了,貌似我是在牛客网的讨论区刷到内推的机会的,然后就发了简历。等到了最近三月的7/8/10号这三天,我经历了杭州蚂蚁金服的一二三面(电话),面完第三面不知道结果怎么样,还是和大家分享一下吧。 一.第一次电面 ( 下午 5:30开始,持续半小时) (一)问题: 1.基础问题: 说说js的继承实现 js的闭包 2.项目问题: 说说你做过的项目
你在项目中的角色 (我说前后端,用node) 在项目中遇到的问题 假如让你重新做这个项目,你会怎么做? 这个项目有哪些你觉得会保留的,哪些你觉得需要改进的? 为什么用grunt 产品存放在哪里 有没有上线 node版本的区别 (二)我问的问题总结: 这次和面试官的沟通中,我了解到Angular慢慢地使用减少了,react、ej6、vue现在比较热门。(不过后来听师兄师姐说,阿里影视为了兼容问题暂时还在用 Angular1,而阿里UC也有使用Angular2的,所以还是有必要学习的 )另外,面试官介绍个github账号antdesign给我学习。 (三)个人总结: ...
每周为您推送最有价值的开源技术内参!
抽象类和接口的详说: 在上面一篇博客中的介绍以后,下面整理的是面向对象中剩下的一些特征:抽象类还有接口。 其实如果简单的说,可以这样理解,接口是完全的抽象类。 下面先说道说道这个抽象类: 在抽象类中可以有实现的普通方法,当然有抽象方法。甚至,抽象类中还可以没有抽象方法,但是抽象方法要么在抽象类中要么在接口中,绝对不能放在普通的class类中。 抽象类中,可以写一个构造器,当然也可以写一个代码初始化块,这在接口中是绝对不存在的。 上面所说的,抽象类中也是可以写带有方法体的方法的普通方法。 其次整理了一些关于接口的相关规则: 首先,接口中必须全部是抽象方法,而不能有一个带有方法体的具体实现的方法,这和抽象类中是有很大的不同的。 因为接口的特殊性,接口是不能创建实例的,因此,其不可能有一个实例变量的; 接口中,只能有四种”包含物“:①:类成员变量(没有实例变量);
②:接口全部都是抽象方法;
# iOSBlogAndTools iOS开发优秀博客和软件推荐 ========= 本博客和工具列表由广大iOS开发者收集和推荐,如果大家有好的博客或者工具想要分享请点击:[我要提交](/imlifengfeng/iOSBlogAndTools/issues/1)。 收到大家的提交后会及时收录与更新。 GitHub地址:/imlifengfeng/iOSBlogAndTools ### iOS开发中文博客 博客名称/地址 | RSS地址 | 博主微博 ----- | ----- | ----- [OneV's Den]() | | [onevcat](/onevcat) [唐巧的技术博客]() | | [唐巧_boy](/tangqiaoboy) [sunnyxx的技术博客](/) | | [我就叫Sunny怎么了](/p/5395/info?mod=pedit_more) [玉令天下的Blog]() | | [杨萧玉HIT](/yulingtianxia) [一只魔法师的工坊](/) | | [ibireme ](/ibireme) [南峰子的技术博客](http://southpeak.github.io) | 暂无 | [南峰子_老驴](/touristdiary) [破船之家]() | | [BeyondVi...
在当今迅速发展的市场中,那些速度最快、成本最低的持续创新公司才会赢 。同时,正如你所知,我们正在进行的一系列观察,使用开源软件能够实现快速、低成本的创新。 但它也能引入运营挑战和法律风险。
本文通过 OscPress 同步至oschina,获取最新版本和更好的阅读体验请查看原文: /?p=1335 网站的SSL证书过期了,是去年在StartSSL签发的,现在他们家的名声不太好,已经不推荐使用他们的证书了,网上转了一圈,开始申请阿里云的免费证书,是 Symantec 免费DV , 然后三天了还在审核中, 我也是醉了,平时发垃圾短信推荐各种服务明明那么勤快的说。。。 然后看到论坛上有人推荐
七牛 的证书,就去申请了,登录之后在个人面板找到“证书管理”, 点击进入证书管理页,点击”申请证书” 然后填写域名和个人信息,可以看到是和阿里云一样的 “赛门铁克(Symantec) DV SSL证书”:
填完后会在证书列表看到订单号,像这样的, 注意:目前七牛免费证书是单域名证书,即1个证书对应1个域名。不支持多域名和泛域名绑定,所以多个子域名就要多次申请了,但是申请根域名的证书对www子域也可用。也就是的证书可以用在上。 然后去配置DNS验证,我的域名使用DNSpod的服务,在域名解析页增加一条TXT记录。 如果是根域名证书,主机记录 请使用 “@” ,其他填 证书列表 下的TXTkey,(注:万网和DNSpod平台TXTkey不需要复制主域名部...
搭建Postfix+Dovecot邮件收发系统
&转载请注明出处:https://my.oschina.net/landptf/blog/861937 启动页几乎成为了每个app的标配,有些商家在启动页中增加了开屏广告以此带来更多的收入。目前启动页的广告都有倒计时的功能,那么我们在倒计时的过程中能做些什么呢? 这篇文章主要包括以下两方面内容 & - 集成腾讯广告联盟的SDK - 启动页加载过程中,后台初始化数据 我们在设计启动页时的常规做法是建立一个Activity来加载开屏图片或者广告,作为程序的入口,那么在这个三到五秒时间内如果进行数据下载,当用户点击了跳过按钮或者计时结束了数据还没初始化完成,已经进入了主页面,而主界面刚好需要那些基础数据该如何? ![随机广告与移动无关](http://upload-images.jianshu.io/upload_images/c0ecc57b96f38fa.gif?imageMogr2/auto-orient/strip) 因此,我们将启动页和主界面设计成两个Fragment,集成到MainActivity中。这样我们在启动页中加载广告,在主界面中下载数据,登陆等耗时操作,程序的结构如下: ![结构](http://upload-images.jianshu.io/upload_images/fbe8d67f0e3f51.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) **01 activity_main.xml** ``` ``` 包含了两个f...
#MongoDB 存储引擎说明 & MongoDB 存储引擎可以插件化(3.0开始提供插件化API),根据不同的场景选择不同的存储引擎,跟Mysql有点类似。 & MongoDB 常用存储引擎:`WiredTiger`,`MMAPv1`,`In Memory` #MongoDB 存储引擎之WiredTiger & 3.2版本开始WiredTiger已经是MongoDB的默认存储引擎。 & WiredTiger支持文档级别的锁,检查点(checkpoint),压缩,等功能。企业版支持Rest加密。 ##WiredTiger 特性 ####并发模型 WiredTiger带来最显著的改进之一就是锁粒度的细化,它通过MVCC(通过copyOnWrite的方式实现的多版本并发控制)实现了文档级别的锁(多个客户端可以并发的修改一个集合中多个不同的文档),大大提高了并发读写的性能。 ####数据压缩 WiredTiger带来的另一个显著提升是:通过使用高效的压缩算法对数据进行压缩,数据占用磁盘空间大大减少(最大能压缩80%的空间)。 压缩是以CPU计算为代价而减少了存储量,不过相比压缩带来的好处,牺牲这点CPU时间是值得的。 MongoDb支持对所有集合和索引(前缀)进行压缩。默认情况,WiredTiger通过snappy压缩算法对所有集合进行块压缩并对所有索引进行前缀压缩。Journal默认也会压缩。 ####内存使用 MongoDB不仅利用Wired...
哈喽!本周我们又见面了,今天呢我们接着说MQ软件RabbitMQ的故事,在上小节以及成功的安装了RabbitMQ也配置了开机启动,那么我们应该要开始的真正的接触并且使用它来管理使用解决业务问题,请紧张的往下看…
想使用微服务,却不知从何入手的同学或者有如下疑问的,可以看看这个项目实例。 参考我在解决如下问题的思路,这里只是简单的介绍,更多的内容靠源码表达了。有时间再单独就微服务的每一块写博客。
Thrift的网路服务模型之一的 TThreadedSelectorServer 实现了多Reactor线程模型,请先理解线程模型再深入分析源码。线程模型的讲解此处不再赘述,给出一张总结图如下: ![TThreadedSelectorServer线程模型](https://static.oschina.net/uploads/img/22406_jasT.png "TThreadedSelectorServer线程模型") 截图来自:[Thrift 服务模型和序列化机制深入学习](/article/065b0f1ee59a4cf0b94a84c4e33af127) 下面从一次完整的服务调用过程来分析源码: ### 1. 服务入口 先来看看服务入口函数 serve() ,TThreadedSelectorServer 的 serve() 方法继承自 AbstractNoblockingServer 抽象类。 ![serve()](https://static.oschina.net/uploads/img/22617_LBkH.png) 其中startThread() 方法为抽象方法,在 TThreadedSelectorServer 中实现如下: ![startThread()](https://static.oschina.net/uploads/img/22852_IBUo.png) 在 startThread() 方法中启动了一个 AcceptThread(用来接收网络socket)和多个 SelectorThread(进行网络I/O操作)。接下来具体分析这两个线程对象。 ### 2. Acceptor 直接看其 run() 方法可知,内部不断...
先说一下环境: #一、硬件 8台服务器做的超融合架构,软件存储池, 每台服务器是96G内存,两颗Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz,32线程。 每台服务器是1T SSD加三块4T SATA,无raid卡,数据做的两副本。 服务器集成2个1G的网口,做端口聚合,对外提供服务。 另加一块四端口千兆网卡,做端口聚合,做内部数据传输。 #二、软件 基础系统是Ubuntu 16.04 LTS,基于KVM,libvirt的虚拟化管理平台。 虚拟机:windows7中文专业版,32位, 每台虚拟机分配3071M内存,两颗CPU(2 sockets,1 Core) 。 libvirt:1.3.1 #三、现象 服务器上的windows,不定时的会卡死,多数每天发生一次到两次,少数三四天卡死一次,极少数会间隔时间更久, 多数发生在电脑空闲时间, 能上互联网的虚拟机多发, 此外无其他明显规律。 #四、问题排查 ##1、先是排查了服务器配置,终端的配置,网络   因为这套架构已经在多地部署,并稳定运行多年,排查完客户的现场网络后,此原因基本排除。 ##2、后来怀疑存储的问题 使用iostat持续检测两台服务器的三个小时。 ``` iostat -x -m 1 ``` 从记录下的日志看服务器存储的平均响应时间一直在正常范...
三元湖的水,我数据全丢失的泪T_T!! ubuntu数据自动备份自动发送邮件到邮箱
MS VC++ 2010 的IDE不怎么友好,Qt Creator 就趁手多了,通过在 .pro 文件配置宏和编译参数等,就可以用 Qt Creator 来写 CPLEX 应用了
本文档集成了:jenkins从SVN中检出代码后直接部署到tomcat服务器和直接生成apidoc的接口文档,同时还集成了sonar代码检测。
Python Fire 是谷歌开源的一个模块,Fire可以将python代码生成命令行接口CLI。使用起来相当简单。
BlockingQueue介绍与常用方法
BlockingQueue是一个阻塞队列。在高并发场景是用得非常多的,在线程池中。如果运行线程数目大于核心线程数目时,也会尝试把新加入的线程放到一个BlockingQueue中去。队列的特性就是先进先出很容易理解,在Java里头它的实现类主要有下图的几种,其中最常用到的是ArrayBlockingQueue、LinkedBlockingQueue及SynchronousQueue这三种。 它主要的方法有 BlockingQueue的核心方法: 1、放入数据
(1) add(object)
队列没满的话,放入成功。否则抛出异常。
(2)offer(object):
表示如果可能的话,将object加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则返回false.(本方法不阻塞当前执行方法的线程)
(3)offer(E o, long timeout, TimeUnit unit)
可以设定等待的时间,如果在指定的时间内,还不能往队列中加入BlockingQueue,则返回失败。 (4)put(object)
把object加到BlockingQueue里,如果BlockQueue没有空间,则调用此方法的线程阻塞。直到BlockingQueue里面有空间再继续. 2、获取数据 (1)poll(time)
取走BlockingQueue里排在首位的对象,若不能立即取出,则可以等time参数...
# 第 二 章 标识符与关键字 # python 关键字 ``` and continue except global lambda pass while as def False if None raise with assert del finally import nonlocal return yield break elif for in not True class else from is or try ``` # Integral 类型 &Python提供两种内因的`Integal`类型:`int`与`bool`. * 在布尔表达式中,0与`False`都表示`False`,其它任意整数与`true`都表示`true` * 在数字表达式中`True`表示1,`False`表示0 ## 整数 ### 进制 &Python中整数默认为十进制,二进制数以`0b`引导,八进制数以`0o`引导,十六进制则以`0x`引导,不区别大小写。 ``` a = 123 print(a) # 123 a = 0B11 print(a) # 3 a = 0o11 print(a) # 8 a = 0x11 print(a) # 17 ``` ### 操作 ![输入图片说明](https://static.oschina.net/uploads/img/34333_hofr.png "在这里输入图片标题") ### 初始化 * 字面值 ``` a=15 ``` * 调用无参数据类型函数 ``` a=int() print(a) # 0 ``` * 使用一个参数调用数据类型函数 这种形式会创建一个新对象,新对象是原对象的一个浅拷贝 ``` a = 3 b = int(a) print(a) # 3 print(b) # 3 a = 5 print(a) # 5 print(b) # 3 ``` * 给...
version:5.5
java使用apache commons codec来进行Base64加密解密
swift 获取label文字的高度
一直调不稳定,原来是没放开调
最近发现安装vmtools 一直失败: Creating a new initrd boot image for the kernel. vmware-tools-thinprint start/running initctl: Job failed to start Unable to start services for VMware Tools Execution aborted. /sbin/restorecon: Warning no default label for /tmp/vmware-block-restore0/tmp_file
后来发现是因为最小安装有些必要的程序没有安装, 于是 yum install kernel-devel gcc dracut make perl fuse-libs
然后再次安装vm tools ,就可以解决之前的问题了
可以参考; /selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2062302...
微信公众平台的接入
version:5.5
在有路由嵌套的情况下,你可能需要在两个不同的controller之间通信。
&!doctype html& &html lang="en"& &head&
&meta charset="UTF-8"&
&title&图片预加载&/title&
&link rel="stylesheet" type="text/css" href="css/index.css"&
&script type="text/javascript" src="js/jquery-1.8.3.min.js"&&/script&
&script type="text/javascript" src="js/index.js"&&/script& &/head& &body&
&div class="a"&
jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚动到顶部底部jquery滚...
C语言;文件读入;字符串数组
日志文件格式如下: 220.181.108.151 - - [31/Jan/:32 +0800] "GET /home.php?mod=space&uid=158&do=album&view=me&from=space HTTP/1.1" 200 8784 "-" "Mozilla/5.0 ( Baiduspider/2.0; +/search/spider.html)"
208.115.113.82 - - [31/Jan/:54 +0800] "GET /robots.txt HTTP/1.1" 200 582 "-" "Mozilla/5.0 ( Ezooms/1.0; ezooms.)"
220.181.94.221 - - [31/Jan/:24 +0800] "GET /home.php?mod=spacecp&ac=pm&op=showmsg&handlekey=showmsg_3&touid=3&pmid=0&daterange=2&pid=398&tid=66 HTTP/1.1" 200 10070 "-" "Sogou web spider/4.0(+/docs/help/webmasters.htm#07)"
112.97.24.243 - - [31/Jan/:48 +0800] "GET /data/cache/style_2_common.css?AZH HTTP/1.1" 200 57752 "/forum-58-1.html" "Mozilla/5.0 (iP CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A406" 一、Pig下载: 下载地址:http://www.apache.org/dyn/closer.cgi/pig 二、Pig安装: 解压 [grid@hadoop1 ~]$ ...
Java HexString
WordXML格式初步分析
LeetCode第262题,Trips and Users,使用MySQL的解决方案
Windows中查找命令的路径 (类似Linux中的which命令)
SpringMVC 接收方法的参数自定义转换,下面例子实现客户端发送图片的Base64数据,服务器转换为自定义的对象。
int in_cksum(register unsigned short *ptr , int nbytes)
register u_
while (nbytes & 1)
sum += *ptr++;
nbytes -= 2;
/* mop up an odd byte, if necessary */
if (nbytes == 1) {
oddbyte = 0;
/* make sure top half is zero */
*((u_char *) &oddbyte) = *(u_char *)
/* one byte only */
/* Add back carry outs from top 16 bits to low 16 bits. */
= (sum && 16) + (sum & 0xffff);
/* add high-16 to low-16 */
sum += (sum && 16);
/* add carry */
answer = ~
/* ones-complement, then truncate to 16 bits */
return(answer);
} 留着,以后不用自己写了。...
Zend Studio 需要Java环境: 1.Ubuntu系统上默认装的openjdk,重新安装 jdk1.7.0_17 解压缩文件
sudo tar -zxvf /home/chengwen/jdk1.7.0_17.tar.gz -C /usr/local/ 配置文件/etc/profile
sudo vim /etc/profile 添加
export JAVA_HOME=/usr/local/jdk1.7.0_17
export JRE_HOME=/usr/local/jdk1.7.0_17/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=.:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 3.修改环境变量 vim ~/.bashrc 添加下面几行,把/usr/local/jdk1.7.0_17 改成你的java安装目录,我的目录/usr/local/jdk1.7.0_17 export JAVA_HOME=/usr/local/jdk1.7.0_17 export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH 4.保存退出,输入以下命令使之立即生效 source ~/.bashrc 5.配置默认JDK版本 由于ubuntu中可能会有默认的JDK,如openjdk,所以,为了将我们安装的JDK设置为默认JDK版本,还要进行如下工作。 执行代码: sudo update-alternatives --install /usr/bin/java java...
加入开源中国也有超过三年的时间了,觉得开源中国已经越办越好了,突然很想知道它究竟有多好,我是不是开源中国最老的用户,我有176个开源中国的积分能够排名第几,带着这些问题,我抓取了部分开源中国的用户信息,做了一个简单的分析。 数据获取 要获得用户数据,可以通过开源中国的网页来进行。这个是我的主页面 这个页面包含了用户的基本信息,包括用户名,积分,粉丝,关注等等。 点击粉丝链接可以获得所有的粉丝的情况 然后我们就可以通过这些链接,迭代的找到所有相关连的数据了。 工具选取 这次的数据抓取我选用了requests和pyquery requests是一个非常好用的python的http/rest的客户端,比之python自带的urllib要好用很多,推荐使用。 pyquery是用来解析和操纵html和DOM文档,提供类似jquery的语法,比诸如beatifulSoap要好用不少,尤其如果你是一个前段开发者,熟悉jquery,那就更方便了。大家可以参考我的另一篇博客了解更多的背景信息。 爬取网页数据 为了抓取网页的内容,我们可用chrome自带的工具来查看网页的DOM结构: 核心的代码如下: def get_user_info(url):
r = requests.get(url + "/fans", headers=headers)
doc = pq(r.t...
每周为您推送最有价值的开源技术内参!
年后公司项目开始上vue2.0,自己对学习进行了总结,希望对大家有帮助!
最近在学MapReduce,出于练手的想法,把拉钩网上的招聘信息拿下做一次分析。
软件周刊(04.16 — 04.22):本周热门软件更新 — ECharts GL 1.0 alpha 发布,ECharts 的 WebGL 扩展;Angular 4.1.0-rc.0 和 4.0.3 发布, Web 前端框架;RancherOS 1.0.0 发布,打造更快、更轻量的容器操作系统;Spring Boot 1.5.3 发布,微服务的入门级微框架
各位道友大家好:
“Angular2.0视频教程”来了!这是全球第一个完整的Angular 2.0系列视频教程,到目前为止也是唯一的,该系列的视频在优酷和youtube同步播出。
还是大漠穷秋老师,还是熟悉的声音,还是淡淡的小幽默。3年前,大漠老师在慕课网发布了“AngularJS实战” /learn/156 系列视频教程,迄今为止已经有14万人学习,整体评分9.6分。很多道友反馈说,通过学习这门课程找到了心仪的工作,大漠老师感到非常开心,说明他的付出是有价值的。
这一次,大漠老师再度倾力打造,从开发环境到完整案例,涵盖了Angular2的方方面面。如果你自己看文档,或者在网上寻寻觅觅,看那些碎片化的文章,可能需要几十个小时,甚至几个月才能摸到门道。而你来听大漠老师的系统讲解,只要8小时,你就是Angular开发专家了!整个课程全部基于大漠老师自己开发的NiceFish这个小项目,如果你想先睹为快,请自己检出代码上手试玩 http://git.oschina.net/mumu-osc/NiceFish 。
同时,大漠老师还给大家带来了一波小福利,每一节课都会送出2本《揭秘Angular2》,/.html ,整个课程共送...
一、Android
View 动画框架
Animation框架定义了透明度、旋转、缩放和位移几种常见的动画,控制的整个View,实现原理是每次绘制视图时View所在ViewGroup中的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧。如果没有完成就继续调用invalidate()函数,启动下次绘制来驱动动画,从而完成整个动画的绘制。
视图动画使用简单,效果丰富,它提供了AlphaAnimation、RotateAnimation、TranslateAnimation、ScaleAnimation四种动画方式,并提供动画集合AnimationSet,混合使用多种动画。在Android3.0之前,视图动画一家独大,但随着Android3.0之后属性动画框架的推出,它的风光就大不如从前。相比属性动画,视图动画的一个非常大的缺陷就是不具备交互性,当某个元素发生视图动画后,其响应事件的位置还依然在动画前的地方,所以视图动画只能做普通的动画效果,避免交互的发生。但是它的优点也非常明显,即效率比较高且使用方便。
视图动画使用非常简单,不仅可以通过XML文件来描述一个动画过程,同样也可以使用代码来控制整个动画过程。 (1)、透明度动画
一、滑动效果的产生
滑动一个View,本质区别就是移动一个View。改变当前View所在的坐标,原理和动画相似不断改变坐标位置实现。实现View的滑动就必须监听滑动的事件,并且根据事件传入的坐标,动态且不断改变View的坐标,从而实现View跟随用户触摸的滑动而滑动。 (1)、Android的坐标系
Android中将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向,如下图:
系统提供了getLocationOnScreen(int location[])这样的方法来获取Android坐标系中点的位置,即该视图左上角在Android坐标系中的坐标。在触控事件中使用getRawX()、getRawY()方法所获得的坐标同样是Android坐标系中的坐标。
(2)、视图坐标系
Android中除了上面所说的这种坐标系之外,还有一个视图坐标系,它描述了子视图在父视图中的位置关系。这两种坐标系并不矛盾也不复杂,他们的作用是相互相成的。与Android坐标系类似,视图坐标系同样是以原点向右为X轴正方向,以原点向下为Y轴正方向,只不过在视图坐标系中,原点不再是Android坐标系中的屏幕最左上角,而是以父视图左上角为坐标原点,如下图:
让我们来回忆下上次你是怎么发布你的代码的: 1. 先把线上的代码用ftp备份下来 2. 上传修改了的文件 3. 测试一下功能是否正常 4. 网站500了,赶紧用备份替换回去 5. 替换错了/替换漏了 6. 一台服务器发布成功 7. 登录每一台执行一遍发布操作 8. 加班搞定 9. 老板发飙 ... 尤其现在的互联网行业,讲究快速迭代,小步快跑。像bug修复或者小功能的修改几乎每天都发版本,大功能的版本迭代每周也差不多会有一次。相信不少同行们像我上面说的这样发布自己的代码吧。或者可能先进一点,直接去服务器上执行一条类似git pull的命令拖下仓库中的代码,但是如果你的代码运行在集群中呢?每台机器登录一次执行一次git pull吗?如果发现代码有问题需要回滚呢? 如果你还在像我上面说的这种方式部署自己的代码的话,那么我希望你能耐心看完这篇文章,从此摆脱代码部署之痛。
其实绕了这么一圈今天是想向大家介绍一下用php写的代码发布工具:deployer。 deployer具有以下吸引人的特性: - 快速
采用了比如并发发布、ssh通道复用、缓存可用情况下使用缓存等技术加速代码部署 - 原子部署
在新发布的版本内执行所有定义的操作,诸如下载依赖、设置文件访问权限等都不会直接...
主要在介绍一款全开源的灰度管理系统,本系管理统主要采用java技术开发、数据库采用mysql、灰度引擎当前采用java和lua两种技术开发。并且介绍一个灰度系统在一个互联网公司的重要性,尤其是对于小公司,没有精力去做也就无法保障系统上线的平稳。这套灰度管理系统能够灵活配置http和dubbo的请求接入,丰富的扩展性。愿景是能够为小公司提供一种解决方案,希望能够作为大公司灰度更好参考,为公司的运营提供多一点选择。 项目代码:http://git.oschina.net/xiaoleiziemail/gray
先看看效果:
用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦、高复用、高灵活。
动态列表界面MomentListFragment支持 下拉刷新与上拉加载 和 模糊搜索,反复快速滑动仍然非常流畅。 缓存机制使得数据可在启动界面后瞬间加载完成。
动态详情界面MomentActivity支持 (取消)点赞、(删除)评论、点击姓名跳到个人详情 等。 只有1张图片时图片放大显示,超过1张则按九宫格显示。
用到的CommentContainerView和MomentView都是独立的组件,既可单独使用,也可用于ListView或添加至其它ViewGroup等。
CommentContainerView复用
CommentContainerView.java
setOnCommentClickListener
: 设置点击评论监听
createView
: 创建View
: 绑定数据并显示View
setMaxShowCount
: 设置最多显示数量,超过则折叠
setComment
: 设置评论
addCommentView
: 添加评论View
1 package apijson.demo.client.
3 import android.annotation.SuppressL
4 import android....
##描述 使用springboot整合redis,使用默认的序列化配置,然后使用redis-client去查询时查询不到相应的key. 使用工具发现,key的前面多了\xAC\xED\x00\x05t\x00!这样一个串. ![图1](https://static.oschina.net/uploads/img/20133_k7rb.png "图1") 而且value也是不能直观可见的. ##问题所在 使用springdataredis,默认情况下是使用org.springframework.data.redis.serializer.JdkSerializationRedisSerializer这个类来做序列化. org.springframework.data.redis.core.RedisTemplate代码块. ``` public void afterPropertiesSet() { super.afterPropertiesSet(); boolean defaultUsed = if (defaultSerializer == null) { defaultSerializer = new JdkSerializationRedisSerializer( classLoader != null ? classLoader : this.getClass().getClassLoader()); } if (enableDefaultSerializer) { if (keySerializer == null) { keySerializer = defaultS defaultUsed = } if (valueSerializer == null) { valueSerializer = defaultS defaultUsed = } if (hashKeySerializer == null) { hashKeySerializer = defaultSerialize...
&写在前面 与hibernate相比,我无疑更喜欢mybatis,就因为我觉得它真的好用,哈哈。它简单上手和掌握;sql语句和代码分开,方便统一管理和优化;当然缺点也有:sql工作量很大,尤其是字段多、关联表多时,更是如此。而且sql依赖于数据库,导致数据库移植性差。 选用一个框架之前最好先了解它的优缺点,对项目最好用,效率最高的才是一个你最好的选择。 &mybatis简介 MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 &直接上思维导图 ![1、mybatis简介.png](http://upload-images.jianshu.io/upload_images/3fb9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![2、与hibernate对比.png](http://upload-images.jianshu.io/upload_images/4120002-fe73ae40aeece93e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![3、几个关键类.png ](http://upload-images.jianshu.io/upload_images/412000...
一.应用场景 ------ ---------- 平时在建对象表的时候都会有最后修改时间,最后修改人这两个字段,对于这些大部分表都有的字段,每次在新增和修改的时候都要考虑到这几个字段有没有传进去,很麻烦。mybatisPlus有一个很好的解决方案。也就是公共字段自动填充的功能。一般满足下面条件的字段就可以使用此功能: - 这个字段是大部分表都会有的。 - 这个字段的值是固定的,或则字段值是可以在后台动态获取的。 - 常用的就是last_update_time,last_update_name这两个字段。 二.配置MybatisPlus ------- ---------- **导包:**只需要注意的一点就是,mybatisPlus是在2.0.6版本才支持的更新数据公共字段自动填充,之前都是只支持新增数据的时候可以使用。 如果是之前配置过MybatisPlus的同学只需要添加以下几个步骤: 1. 继承IMetaObjectHandler抽象类,实现`insertFill()`新增数据时需要填充的字段设置和`updateFill()`更新数据的时候需要填充的字段设置这两个方法: ```java package io.z77z. import java.util.D import org.apache.ibatis.reflection.MetaO import org.apache.shiro.SecurityU import org. impor...
开头先理解一下所谓的“均衡” 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。 一、http重定向 当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通过http响应头信息中的Location标记来返回一个新的URL。这意味着HTTP代理需要继续请求这个新的URL,完成自动跳转。 性能缺陷: 1、吞吐率限制 主站点服务器的吞吐率平均分配到了被转移的服务器。现假设使用RR(Round Robin)调度策略,子服务器的最大吞吐率为1000reqs/s,那么主服务器的吞吐率要达到3000reqs/s才能完全发挥三台子服务器的作用,那么如果有100台子服务器,那么主服务器的吞吐率可想而知得有大?相反,如果主服务的最大吞吐率为6000reqs/s,那么平均分配到子服务器的吞吐率为2000reqs/s,而现子服务器的最大吞吐率为1000reqs/s,因此就得增加子服务器的数量,增加到6个才能满足。 2、重定向访问深度不同 有的重定向一个静态页面,有的重定向相比复杂的动态页面,那么实际服务器的负载差异是...
一般来说,服务器非常慢可能原因是多方面的,有可能是配置错误,脚本错误或者是一些奇诡的硬件。当然也有可能是有人对你的服务器进行 Dos (拒绝服务攻击)或者 DDOS (分布式拒绝服务攻击)。 Dos攻击或者DDos攻击目的是使服务器或者网络资源耗尽,使其他用户无法使用。一般来说,这种攻击主要针对重要的网站或服务,比如银行、信用卡支付网关甚至是根域名服务器。Dos攻击主要通过强制目标主机重启或大量消耗其主机资源,使得目标主机无法提供服务或者妨害主机和用户之间的通信的手段,使得主机无法提供正常的服务的。 在本文中你将知道如何在终端中使用netstat命令判断服务器是否遭受Dos攻击。 netstat命令的用户手册描述其作用是用来显示网络连接、路由表、接口统计、伪连接和组播成员的。 一些例子和解释 netstat -na 该命令将显示所有活动的网络连接。 netstat -an | grep :80 | sort 显示所有80端口的网络连接并排序。这里的80端口是http端口,所以可以用来监控web服务。如果看到同一个IP有大量连接的话就可以判定单点流量攻击了。 netstat -n -p|grep SYN_REC | wc -l 这个命令可以查找出当前服务器有多少个活动的 SYNC_REC 连接。正常来说这个值很小,最好...
题外话,本来在写bytebuffer相关知识点的,天蓬小猪问了个protobuf的问题,而t-io的例子中刚好也用到了protobuf,于是就先把protobuf的知识写了一下。 为何而写 目前为止()为止,protobuf是本人比较推崇的一种消息格式,原因如下 体积小,同样的对象编码后,其体积约为json的1/8 编码解码速度快,这个没什么好说的,谁不喜欢速度快的东西呢? "跨语言":我们只需要写一份xxx.proto,即可以用工具生成java、python、c++等语言对应的代码 而t-io提供的几个案例中,也有用到protobuf的,所以在此整理一下protobuf的相关资料 先认识一下proto源文件 这里就放一个t-io提供的im例子所用到的源文件吧,生产级别的例子。考虑到这个例子比较全,我就不一一介绍了,源文件名叫chat.proto 。 syntax = "proto3";
package org.tio.mon.
option java_package = "org.tio.mon.packets";
//设置java对应的package
option java_multiple_files =
//建议设置为true,这样会每个对象放在一个文件中,否则所有对象都在一个java文件中
enum DeviceType {
DEVICE_TYPE_UNKNOW = 0;
DEVICE_TYPE_...
1.腾讯web前端团队github /AlloyTeam/Mars 2.animate:github https://daneden.github.io/animate.css/ 3.脚本之家在线工具:正则,颜色,编码转换等 http://tools.jb51.net/regex/create_reg 4.动画在线生成: /tools/css3-animation/ 5.国外特效网站 https://codepen.io/
什么是泛型 --- 泛型是jdk5引入的类型机制,就是将类型参数化,它是早在1999年就制定的jsr14的实现。 泛型机制将类型转换时的类型检查从运行时提前到了编译时,使用泛型编写的代码比杂乱的使用object并在需要时再强制类型转换的机制具有更好的可读性和安全性。 泛型程序设计意味着程序可以被不同类型的对象重用,类似c++的模版。 泛型对于集合类尤其有用,如`ArrayList`。这里可能有疑问,既然泛型为了适应不同的对象,`ArrayList`本来就可以操作不同类型的对象呀?那是因为没有泛型之前采用继承机制实现的,实际上它只维护了一个`Object`对象的数组。结果就是对List来说它只操作了一类对象`Object`,而在用户看来却可以保存不同的对象。 泛型提供了更好的解决办法——类型参数,如: ```js List list = new ArrayList(); ``` 这样解决了几个问题: 1 可读性,从字面上就可以判断集合中的内容类型; 2 类型检查,避免插入非法类型。 3 获取数据时不在需要强制类型转换。 泛型类 --- ```java public class Pair{ private T field1; } ``` 其中 `` 是类型参数定义。 使用时:`Pair p = new Pair();` 此时类内部的`field1`就是字符串类型了。 如果引用多个类型,可以使用逗号...
分布式调度在互联网企业中占据着十分重要的作用,尤其是电子商务领域,由于存在数据量大、高并发的特点,对数据处理的要求较高,既要保证高效性,也要保证准确性和安全性,相对比较耗时的业务逻辑往往会从中剥离开来进行异步处理。 开源中国任务调度系统/框架类别下有非常多的开源项目,其中不乏出自国内外知名企业的优秀大作。与此同时,还有新的同类项目在不断增加。接下来,推荐几款优秀和极具潜力的国产开源分布式任务调度系统,希望能对大家有所帮助。 1、opencron opencron 是一个功能完善且通用的开源定时任务调度系统,拥有先进可靠的自动化任务管理调度功能,提供可操作的 web 图形化管理满足多种场景下各种复杂的定时任务调度,同时集成了 linux 实时监控、webssh 等功能特性。 2、LTS LTS,light-task-scheduler,是一款分布式任务调度框架, 支持实时任务、定时任务和 Cron 任务。有较好的伸缩性和扩展性,提供对 Spring 的支持(包括 Xml 和注解),提供业务日志记录器。支持节点监控、任务执行监、JVM 监控,支持动态提交、更改、停止任务。 3、XXL-JOB XXL-JOB 是一个轻量级分布式任务调度框架,支持通过 Web 页面对任务进行 CRUD 操作,支持动态修改任务状...
“Array” 方法 _.chunk(array, [size=1]) # (S) (T) (N) 将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。 引入版本 3.0.0 参数 array (Array): 需要处理的数组 [size=1] (number): 每个数组区块的长度 返回 (Array): 返回一个包含拆分区块的新数组(愚人码头注:相当于一个二维数组)。 例子
_.chunk(['a', 'b', 'c', 'd'], 2); // =& [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3); // =& [['a', 'b', 'c'], ['d']] Try in REPL _.compact(array) (S) (N) (T) 创建一个新数组,包含原数组中所有的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被认为是“假值”。 引入版本 0.1.0 参数 array (Array): 待处理的数组 返回值 (Array): 返回过滤掉假值的新数组。 例子
_.compact([0, 1, false, 2, '', 3]); // =& [1, 2, 3] Try in REPL _.concat(array, [values]) (S) (N) (T) 创建一个新数组,将array与任何数组 或 值连接在一起。 引入版本 4.0.0 参数 array (Array): 被连接的数组。...
推送已经是是手机应用的基本功能,如果自己实现一套推送系统费时费力,所有一般我们会使用第三方的推送服务,这里我使用「极光推送」作为集成推送的例子,因为有现成的 react native 插件 [jpush-react-native](/jpush/jpush-react-native) 可以使用。 ## 前置准备工作 ### 安装软件 - react native (0.41.2) - npm (V3.10.3) - xcode (V8.2.1) ### 创建工程 - 在 Apple developer 上创建应用 - 并且给应用配置推送功能,创建推送证书 - 到 [极光官网]() 上创建自己的应用,并上传证书 - 创建 React-Native 工程,修改 bundle identifier ,保证和在 Apple developer 上创建的应用一直。(Project -& Target -& General -& bundle identifier) - xcode 8 版本的话还需要在 (Project -& Target -& Capabilities ) 吧Push Notification 选项点开 第一、二、三 步骤的详细介绍可以观看 [官方集成视频](/t/jpush-ios-sdk/4247), 这里就不在重复。 (如果已有工程,则只需要完成第二和第三项步骤) ## 集成 jpush-react-native ### 配置工程 在完成上面的准备工作后,我们就可以正式开始插件的集成,这里会解...
$watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你。
$watch(watchExpression, listener, objectEquality); 每个参数的说明如下: watchExpression:监听的对象,它可以是一个angular表达式如'name',或函数如function(){return $scope.name}。 listener:当watchExpression变化时会被调用的函数或者表达式,它接收3个参数:newValue(新值), oldValue(旧值), scope(作用域的引用) objectEquality:是否深度监听,如果设置为true,它告诉Angular检查所监控的对象中每一个属性的变化. 如果你希望监控数组的个别元素或者对象的属性而不是一个普通的值, 那么你应该使用它
举个栗子: $scope.name = 'hello';
var watch = $scope.$watch('name',function(newValue,oldValue, scope){
console.log(newValue);
console.log(oldValue);
$timeout(function(){
$scope.name = "world";
$watch性能问题 太多的$watch将会导致性能问题,$watch如果不再使用,我们最好将其释放掉。 $watch函数返回一个注销监听的函数,如果我们想监控一个属性,然后在稍后注销它,可以使用下面的方式: ...
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp./s/1p5Y0f5XdVXN2EZYT0AM_A ## 前言 安卓应用开发的大量难题,其实最后都需要插件技术去解决。 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家在熟悉不过的应用都在使用。 插件技术可以给项目开发带来巨大的好处,比如:并行高效开发、模块解耦、解除单个dex函数不能超过65535的限制、动态更新升级、按需加载等等。 本文的目的是从一个典型的复杂项目中总结出较为全面与完整的安卓插件技术。 掌握好插件技术,需要如下的安卓基础和相关知识,例如: 1. Android应用程序安装,加载过程 2. Android应用运行机制,生命周期调用原理 3. Android应用资源编译打包原理 4. Android应用读取资源原理 5. Android系统AMS、PMS、NMS等系统服务的运作原理 6. 增量更新 7. HOOK等技术 插件技术知识领域如图: ![](http://oa5504rxk./week41_plugin/1.png) 这些技术中每一个点都需要大篇幅内容才能完全讲清楚。不过,好在Android是开源的,每一个插件技术涉及到的技术点都可以翻阅源码进行进一步的研究。下面...
ZXing是谷歌的一个开源库,可以用来生成二维码、扫描二维码。本文所介绍的是第一部分。 首先上效果图: ZXing相关各种文件官方下载地址:/zxing/zxing/releases
或者在这里下载(只有本项目所用的jar包,版本号:3.2.0):链接: /s/1hq3s5EW 密码: mvg7 1.生成二维码的工具类 /**
* 二维码生成工具类
public class QRCodeUtil {
* 生成二维码Bitmap
* @param content
* @param widthPix
* @param heightPix 图片高度
* @param logoBm
二维码中心的Logo图标(可以为null)
* @param filePath
用于存储二维码图片的文件路径
* @return 生成二维码及保存文件是否成功
public static boolean createQRImage(String content, int widthPix, int heightPix, Bitmap logoBm, String filePath) {
if (content == null || "".equals(content)) {
1.DataList的作用是在你往input输入框里输入信息时,根据你敲进去的字母,自动显示一个提示下列列表 2.DataList的表现很像是一个Select下拉列表,但它只是提示作用,并不限制用户在input输入框里输入什么。 举个栗子: &label for="country_name"&国家 : &/label&&input id="country_name" name="country_name" type="text" list="country" /&
&datalist id="country"&
&option value="Afghanistan 阿富汗"&
&option value="Albania 阿尔巴尼亚"&
&option value="Algeria 阿尔及利亚"&
&option value="Andorra 安道尔共和国"&
&option value="Angola 安哥拉"&
&/datalist& 需要注意的是,input输入框的list属性值是datalist的id,这样datalist才能和input输入框关联起来,在之前介绍range类型时曾见到提到过它。 datalist自身并不显示,只在需要配合input输入时才会自动显示出来。...
此系列之记录问题,以及表面上解决问题,不详细原理解决.等项目结束会详细到原理解决
show variables like 'autocommit'; set autocommit = 1;
![输入图片说明](https://static.oschina.net/uploads/img/10545_C37E.png "在这里输入图片标题") ## 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了[webpack](https://webpack.js.org/)文档后, 表情都是这样的: (摘自webpack[一篇文档](http://webpack.github.io/docs/usage.html)的评论区) [![输入图片说明](https://static.oschina.net/uploads/img/10600_A8Uw.jpg "在这里输入图片标题") 和这样的: ![输入图片说明](https://static.oschina.net/uploads/img/10646_eqBu.jpg "在这里输入图片标题") 是的, 即使是外国佬也在吐槽这文档不是人能看的. 回想起当年自己啃webpack文档的血与泪的往事, 觉得有必要整一个教程, 可以让大家看完后愉悦地搭建起一个webpack打包方案的项目. 可能会有人问webpack到底有什么用, 你不能上来就糊我一脸代码让我马上搞, 我照着搞了一遍结果根本没什么naizi用, 都是骗人的. 所以, 在说webpack之前, 我想先谈一下前端打包方案这几年的演进历程, 在什么场景下, 我们遇到了什么问题, 催生出了应对这些问题的工具. 了解了需求和目的之后, 你就知道什么时候webpack可以帮到你. 我希望我用完...
以ArrayList集合中remove为例子: public E remove(int index) {
rangeCheck(index);
modCount++;
E oldValue = elementData(index);
//被移动的位置
int numMoved = size - index - 1;
if (numMoved & 0)
//数组复制。
//原数组为elementData
//原数组复制的起始位置index+1
//目标数组为elementData
//目标数组复制的起始位置index
//复制的长度numMoved
//eg. {1,2,3,4,5,6,7} 移走5,numMoved = 7-4-1 = 2,
//6和7要移动,那么原数组复制的起始位置5从6开始,复制长度为2,那么就是6和7
//目标数组的其实位置是4,就是5的位置,那么5和6被搞成了6和7
//{1,2,3,4,6,7,7}
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
//{1,2,3,4,6,7,7} 先把最后一位搞成null,然后数组长度减1.
elementData[--size] = // clear to let GC do its work
return oldV
## 如何使用? & 请尽可能用比较新的 Composer 版本。 使用 Composer 镜像加速有两种选项: - 选项一:全局配置,这样所有项目都能惠及(推荐); - 选项二:单独项目配置; 选项一、全局配置(推荐) ```shell $ composer config -g repo.packagist composer https://packagist.laravel-china.org ``` 选项二、单独使用 如果仅限当前工程使用镜像,去掉 -g 即可,如下: ```shell $ composer config repo.packagist composer https://packagist.laravel-china.org ``` ## 遇到问题? `composer` 命令后面加上 -vvv (是3个v)可以打印出调错信息,命令如下: ```shell $ composer -vvv create-project laravel/laravel blog $ composer -vvv require psr/log ``` 如果自己解决不了,或发现 BUG,可以在 [@扣丁禅师](https://laravel-china.org/users/12063) 的 GitHub 上 [创建 Issue](/zencodex/composer/issues/new)。 注意提问时请带上 -vvv 的输出,并且要求叙述清晰,第一次提问的同学请阅读 [关于提问的智慧](https://laravel-china.org/topics/2396/wisdom-of-asking-questions-chinese-version)。 ## 常见问题 1. 已存在 composer.lock 文件,先...
工作中经常会碰到服务日志占满服务器磁盘,如果不去清理,服务就可能无法正常工作。适当提高日志的打印级别,如info级别提高到warn可以临时缓解下,但也不长久之际, 还得写个脚本定时清理下。
#!/bin/bash
#clearLog.sh
nginxDir=/usr/local/nginx/logs/*
devInfo=($(df -l | awk '{print $1}'))
#日志所处的磁盘
perInfo=($(df -l | awk '{print int($5)}')) #磁盘使用率
for i in `seq 0 ${#perInfo[@]}`;
if [[ ${devInfo[i]} = '/dev/xvda1' ]] && [[ ${perInfo[i]} -ge 80 ]];
for file in $nginxD
exist=`echo $file | awk '{if(match($0,/\.log/)) print "yes"}'`;
if [[ -f $file ]] && [[ ${exist} = yes ]];
echo '' & $
echo $(date) $file "clear log ok!" && /var/log/clear.
公司同事在开发过程中遇到的一个问题,感觉很有趣,所以分享一下: 总体表现就是,项目依赖版本升级时,将redis的setnx()方法的返回值类型从void修改为String,结果导致的异常产生。 reids升级版本异常排查: [java.lang.NoSuchMethodError:com.helijia.framework.redis.RedisService.setnx(Ljava/lang/SLjava/lang/S)V] 问题分析: 1.在开发过程中,遇到这样一个问题,redis 方法setnx()真正的返回类型为Long,而经过公司内部封装之后返回类型为void ,而我们需要真正的返回类型为Long。为此,我们把 redisService.setnx()返回类型修改为Long,打包成redis.1.2.5上线。 2.其他二方库,例如 promotion.admin(促销管理后台和活动报名使用)引用的是老版本的redis1.2.2。将手艺人id作为key值,city作为value缓存起来。代码: 而此时,redisService.setnx() 是依赖 1.2.2编译的。编译好的jar,文件都是.class。虚拟机的实现采用延迟装载类的策略,直到类真正地被程序使用时才装载。所以启动不会报错,在真正是使用时采取加载。在使用 loadArtisanCity()时,jvm检查器检查.calss文件时,setnx()没有匹配的返回类型就会报出异常。 3.app-merchant 引入了promoti...
首先复制一份虚拟机,更新MAC地址 启动虚拟机,删除网卡配置文件 rm -f /etc/udev/rules.d/70-persistent-net.rules 重启虚拟机: reboot 新的网卡生效
这次总结了一下vue-router的学习心得,希望对大家有帮助!
先看看效果:
用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦、高复用、高灵活。
动态列表界面MomentListFragment支持 下拉刷新与上拉加载 和 模糊搜索,反复快速滑动仍然非常流畅。 缓存机制使得数据可在启动界面后瞬间加载完成。
动态详情界面MomentActivity支持 (取消)点赞、(删除)评论、点击姓名跳到个人详情 等。 只有1张图片时图片放大显示,超过1张则按九宫格显示。
用到的CommentContainerView和MomentView都是独立的组件,既可单独使用,也可用于ListView或添加至其它ViewGroup等。
CommentContainerView复用
CommentContainerView.java
setOnCommentClickListener
: 设置点击评论监听
createView
: 创建View
: 绑定数据并显示View
setMaxShowCount
: 设置最多显示数量,超过则折叠
setComment
: 设置评论
addCommentView
: 添加评论View
1 package apijson.demo.client.
3 import android.annotation.SuppressL
4 import android....
博主说:也许我们都不是天才的程序员,但至少我们都可以成为一个理想的程序员。
我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有500万用户产品的后台主程。从前我对计算机技术心怀畏惧,认定技术高人一定有佛光笼罩,昼夜不息运键如飞日吐代码上万行。现在也算见过一些世面了,回首那段忐忑不安宛如初夜的过程,我却不发觉有任何的励志意味,而是视为一种理所当然。理想的程序员,和理想的建筑师、理想的财务师、理想的按摩师没有任何的差别,他们本质上都是一群手艺人。我相信理想的程序员人人皆可成为。
近三年总在互联网圈厮混,我认识过一些程序员、共事过一些程序员、领导过一些程序员、又面试过一些程序员。他们学历不同,有的来自北大,有的来自北大青鸟,有的是博士,有的是高中肄业;资历也不同,有的来自 BAT,有的来自某破产基金公司(还是一个销售);年限也从0到15年不等。但我认为程序员只需分三类:天才的程序员、理想的程序员、平...
Eclipse中如何清除EGit记住的GitHub用户名和密码 window-preferences-General-Security-Secure Storage-Content 在下拉框里面找到GIT,可以delete掉记住的用户名和密码。
lambda表达式替代内部类实现 1、排序
List&Integer& list = Arrays.asList(1, 2, 6, 3);
list.sort(new Comparator&Integer&() {
public int compare(Integer o1, Integer o2) {
pareTo(o2);
System.out.println(list); Lambda List&Integer& list = Arrays.asList(1, 2, 6, 3);
list.sort((o1,o2) -& o1.compareTo(o2));
System.out.println(list); 2、过滤移除
List&Integer& list = new ArrayList&Integer&();
list.add(2);
list.add(3);
list.add(6);
list.add(4);
list.removeIf(new Predicate&Integer&() {
public boolean test(Integer t) {
return t.intValue() & 5;
System.out.println(list); Lambda
List&Integer& list = new ArrayList&Integer&();
list.add(2);
list.add(3);
list.add(6);
list.add(4);
list.removeIf(o1 -& o1.intVal...
使用Docker快速搭建,使用jfrog/artifactory-oss项目 1. 进入服务器(192.168.1.73),下载docker镜像
docker pull jfrog-docker-reg2.bintray.io/jfrog/artifactory-oss 2. 运行
docker run -d -p
jfrog-docker-reg2.bintray.io/jfrog/artifactory-oss
3. 上传私有包
访问浏览器,192.168.1.73:11080,登录,点击Deploy上传 4. 使用仓库(Ubuntu)
打开文件~/.m2/settings.xml,增加仓库镜像地址
&?xml version="1.0"?&
&settings&
&!-- mirror | Specifies a repository mirror site to use instead of a given
repository. The repository that | this mirror serves has an ID that matches
the mirrorOf element of this mirror. IDs are used | for inheritance and direct
lookup purposes, and must be unique across the set of mirrors. | --&
&!-- private maven --&
&id&libs-release&/id&
&mirrorOf&*&/mirrorOf&
&name&libs-release&/name&
&url&http://192.168.1.73:11080/artifactory/libs-release&/url&
&id&libs-release-local&/id&
Chalice 允许开发者快速创建和部署应用,采用 Amazon API 网关和AWS Lambda 。
本文介绍了什么是远程过程调用(RPC),RPC 有哪些常用的方法,RPC 经历了哪些发展阶段,以及比较了各种 RPC 技术的优劣。
12年安全测试学习笔记
在实现码云的一些特色功能时,我们需要对 GIT 本身协议做一个深入的研究,这样才能更好的根据 GIT 特性实现自己的功能。
iOS集成Sonar的详细步骤, 业内经常说的是iOS代码质量管理。iOS Sonar, iOS代码质量管理, iOS持续集成与构建。
2008年11月,一名日裔美国人中本聪在互联网上发布了一篇信息加密相关的邮件中第一次谈及比特币概念。在该邮件中, 中本聪阐述了基于P2P网络技术、 区块、链技术 加密技术、时间戳技术等的电子现金系统的构架理念 ,区块链技术也开始慢慢进入人们的视野。
以C#语言为例讨论几种.NET的深复制方法
今天为 大家介绍一个小项目 -- Winbuntu,顾名思义,Winbuntu = Windows + Ubuntu。该项目旨在在 Windows 10 上能简单的安装并运行 Ubuntu ,利用微软几个月前推出的WSL技术,无需通过虚拟机或者模拟器。 Winbuntu 整合了大量的 Shell 脚本,使得 Ubuntu 在 Win 10 不只能简单的运行,还易于维护使用。 Winbuntu 是开源的,采用 MIT 开放协议,可以从 Winbuntu Git 仓库获取到该项目,其中包含源码及一些文档。 如果在尝试使用这个项目的时候,遇到问题,可以在这里提交问题报告。
一直为同步异步,阻塞非阻塞概念所困扰,特定总结了下,原来是这么个意思
百度移动端首页,作为一个流量巨大,速度性能要求极高的产品,对于性能的要求十分严格,我们这篇文章来一起聊一聊,百度移动端首页的前段速度优化之路
继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的 Android 开发技术。其中比较著名的有淘宝的 Dexposed、支付宝的 AndFix 以及 QZone 的超级热补丁方案。微信对热补丁技术的研究并不算早,大约开始于2015年6月。经过研究与尝试现有的各个方案,我们发现它们都有着自身的一些局限性。微信最终采用不同于它们的技术方案,走出了自己的实践演进之路。
# 第五章 使用velocity模板引擎 最爽的Web组合开发就是Intellij IDEA + Maven + Spring Boot + Scala + Velocity + Boostrap + jQuery了. Spring Boot提供了一个强大的一键式Spring的集成开发环境,能够单独进行一个Spring应用的开发,其中: (1)集中式配置(application.properties)+注解,大大简化了开发流程 (2)内嵌的Tomcat和Jetty容器,可直接打成jar包启动,无需提供Java war包以及繁琐的Web配置 (3)提供了Spring各个插件的基于Maven的pom模板配置,开箱即用,便利无比。 (4)可以在任何你想自动化配置的地方,实现可能 (5)提供更多的企业级开发特性,如何系统监控,健康诊断,权限控制 (6)无冗余代码生成和XML强制配置 (7)提供支持强大的Restfult风格的编码,非常简洁 当然Spring Boot提供的功能,远远比上面的强大. Spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何web相关的配置便能提供web服务,这还得归于spring boot 自动配置的功能(因为加了EnableAutoConfiguration的注解),帮我们创建了一堆默认的配置,以前在web.xml中配置,现在都可以通过spring bean的方式进行配置,由spring来进行...
### Elasticsearch查询类型 Elasticsearch支持两种类型的查询:基本查询和复合查询。 基本查询,如词条查询用于查询实际数据。 复合查询,如布尔查询,可以合并多个查询, 然而,这不是全部。除了这两种类型的查询,你还可以用过滤查询,根据一定的条件缩小查询结果。不像其他查询,筛选查询不会影响得分,而且通常非常高效。 更加复杂的情况,查询可以包含其他查询。此外,一些查询可以包含过滤器,而其他查询可同时包含查询和过滤器。这并不是全部,但暂时先解释这些工作。 ### 1.简单查询 这种查询方式很简单,但比较局限。 查询last_name字段中含有smith一词的文档,可以这样写: http://127.0.0.1:9200/megacorp/employee/_search ``` { "query" : { "query_string" : { "query" : "last_name:smith" } } } ``` 返回格式如下: ``` { "took": 15, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 2, "max_score": 0., "hits": [ { "_index": "megacorp", "_type": "employee", "_id": "2", "_score": 0., "_source": { "first_name": "Jane", "last_name": "Smith", "age": 32, "about": "I like t...
在这个信息化时代,每分每秒都产生海量数据。在海量数据中,挖掘出有用的数据,并且能以较人性化、直观的方式展示这些数据,变得尤为重要。本文将介绍 7款顶级开源 BI(商务智能)软件和报表工具,用于商业数据的分析处理,希望对您有所帮助。
本文讲解怎样用Python驱动Firefox浏览器写一个简易的网页数据采集器。开源Python即时网络爬虫项目将与Scrapy(基于twisted的异步网络框架)集成,所以本例将使用Scrapy采集淘宝这种含有大量ajax代码的网页数据。
iOS 状态栏 导航栏
传统方法代码量大,耦合度高,灵活性差;而ZBLibrary中的BaseViewAdapter不仅预处理了通用方法以及Item复用逻辑,大幅精简了代码,并且带来了高灵活性和低耦合度。
输入输出流、文件流常用操作、总结、原理
一、环境准备 1、ubuntu 14.04
2、hadoop 2.7.2 文件较大(202M),选择一种下载方式下载。下载地址: http://mirror./apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz 3、jdk 1.7以上 安装方法(若已安装,请忽略): /article/647ff.html 二、安装Hadoop 1、安装命令
sudo addgroup hadoop
sudo adduser -ingroup hadoop hadoop
tar xzf hadoop-2.4.0.tar.gz
mv hadoop-2.7.2 /usr/local/hadoop
chmod 774 /usr/local/hadoop 编辑:/etc/sudoers,为hadoop用户添加root权限。 切换hadoop账户登陆系统。 2、配置hadoop 1)jdk安装路径获取 首先需要获取jdk安装路径,通过以下命令获取: update-alternatives --config java 2)配置.bashrc 编辑.bashrc,并添加如下配置:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
界面部分用lae实现,无需写代码,100行lua代码实现简单目录浏览器。}

我要回帖

更多关于 香椿有什么功效与作用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信