work

策略模式Strategy、装饰模式Decorator

老子叫甜甜 提交于 2019-12-02 10:10:46
策略模式Strategy 定义: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活、可维护、可扩展。 策略算法对算法调度具有平等性,算法仅仅是一种性质相同而行为不同的处理,地位相同,可相互替换,算法之间没有依赖关系。 —抽象策略角色: 策略类,通常由一个接口或者抽象类实现。 —具体策略角色:包装了相关的算法和行为。 —环境角色:持有一个策略类的引用,最终给客户端调用。 策略模式UML图示 应用场景: 1、 多个类只区别在表现行为不同(性质一样,但行为不同) ,可以使用Strategy模式,在运行时动态选择具体要执行的行为。 2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现(动态)。 3、 对客户隐藏具体策略(算法)的实现细节(只公开一个功能,隐藏此功能实现的细节),彼此完全独立。 优点: 1、 提供了一种替代继承的方法 ,而且既保持了继承的优点(代码重用)还比继承更灵活(算法独立,可以任意扩展)。 2、 避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。 3、 遵守大部分GRASP原则和常用设计原则,高内聚、低偶合。 缺点: 1、 因为 每个具体策略类都会产生一个新类 ,所以会增加系统需要维护的类的数量。

linux服务器之间传输文件

一个人想着一个人 提交于 2019-12-02 09:53:06
转载: https://www.jb51.net/article/82608.htm 1. scp(最近就使用了scp) 【优点】简单方便,安全可靠;支持限速参数 【缺点】不支持排除目录 【用法】 scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 。 命令格式: scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 举例: scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下 scp work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下 scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/ #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下 scp -r

标题:分数

陌路散爱 提交于 2019-12-02 09:12:52
/* * 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + .... 每项是前一项的一半,如果一共有20项, 求这个和是多少,结果用分数表示出来。 数学得好呀 (2^20-1)/2^19 */ public class demo6 { public static void main(String[] args) { work(); } public static void work() { System.out.println((int)Math.pow(2, 20)-1 +"/"+(int)Math.pow(2, 19)); } } 来源: https://www.cnblogs.com/hardhp74520/p/11740599.html

Tomcat 的work 目录

醉酒当歌 提交于 2019-12-02 08:48:39
1 用tomcat作web服务器的时候,部署的程序在webApps下,这些程序都是编译后的程序(发布到tomcat的项目里含的类,会被编译成.class后才发布过来,源文件没有发布过来,但这里的jsp没有经编译的)。tomcat有一个work目录,里面存放了页面的缓存,访问的jsp都会编译(从 work里进入Catalina后的如localhost站点文件夹下的项目,我们可以看到那些jsp页面会被编译成应该是servlet文件,下次再来 访问时,就直接运行servlet类就可以向客户端反应响应页面了,所以有的博客说第一次访问时会比较慢,是因为新发布上去的页面在第一个人访问时,会先 编译成servlet文件,所以慢了,一旦编译好,那么除非jsp页面修改,不然下次访问直接运行servlet就可以响应用户,所以快),编译后的文件都会存储在work目录下。而tomcat显示的目录,都会从这个缓存里找编译后的jsp对应的class文件。所以当清空了work目录后,该过程将会从新来过。 有的时候会遇到一个问题,就是修改后的页面在tomcat运行的时候显示不了修改后的痕迹。这个时候删除work目录下对应的项目文件夹,重新启动tomcat就可以了。 2 在tomcat的conf配置文件夹下的server.xml文件里配置了Host name后

RabbitMQ使用介绍2—Work queues

匆匆过客 提交于 2019-12-02 04:02:29
Work queues 接下来是part2 在这一项中,我们创建一个工作队列,用于在多个工作者之间分配耗时的任务。 Work Queues的主要思想是,避免立即执行资源密集的任务而不得不等待其执行完成。我们将任务封装为消息并将其发送到队列中,在后台运行的一个工作进程将会弹出任务并最终执行该任务,当你管理许多工作节点时,任务就会在他们之间共享。 这个概念在web应用程序中尤其有用,因为在一个短HTTP请求窗口中不可能处理复杂的任务 下面我们发送一个特殊的String,用Thread.sleep()辅助,来模拟一些耗时的工作,用点来简单表示一个任务的复杂度,例如Hello.表示此任务需要两秒进行处理。 我们将在原来生产者的基础上修改一些代码,文件名叫send_work.py: import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( 'localhost'))#默认端口5672,可不写 #创建通道,声明一个管道,在管道里发送消息 channel = connection.channel() #在管道里声明queue channel.queue_declare(queue='hello') message = ''.join(sys.argv[1:]) or "Hello

学习嵌入式开发——简介及搭建开发环境

旧城冷巷雨未停 提交于 2019-12-01 23:56:52
嵌入式技术的发展经历了单片机(SCM)、微控制器(MCU)、系统级芯片(SoC)3个阶段。 SCM——随着大规模集成电路的出现及其发展,计算机的CPU、RAM、ROM、定时数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。 MCU——MCU的特征是满足各类嵌入式应用,根据对象系统要求扩展各种外围电路与接口电路,突显其对象的智能化控制能力。实际上,MCU、SCM之间的概念在日常工作中并不严格区分,一概以单片机称呼。随着能够运行更复杂软件(比如操作系统)的SoC的出现,“单片机”通常是指不运行操作系统、功能相对单一的嵌入式系统,但这不是绝对的。 SoC——SoC的特征是实现复杂系统功能的VLSI;采用超深亚微米工艺技术;使用一个以上嵌入式CPU/数字信号处理器(DSP);外部可以对芯片进行编程;主要采用第三方IP进行设计。 嵌入式处理器种类繁多,有ARM、MIPS、PPC等多种架构。但由于ARM处理器的文档丰富,各类嵌入式软件大多支持ARM处理器,使用ARM开发板来学习嵌入式开发是一个好选择。 基于ARM的处理器以其高速度、低功耗、价格低等优点得到非常广泛的应用,它可以应用于以下领域:为无线通信、消费电子、成像设备等产品提供可运行复杂操作系统的开放应用平台;在海量存储、汽车电子、工业控制和网络应用等领域提供实时嵌入式应用;安全系统,比如信用卡、SIM卡等。

svn cleanup failed–previous operation has not fini

你。 提交于 2019-12-01 22:42:07
svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了。 错误如下: svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted 解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db 3.将sqlite3.exe放到.svn的同级目录 4.启动cmd执行sqlite3 .svn/wc.db "select * from work_queue" 5.看到很多记录,下一步执行delete from work_queue 6.ok了,现在在到项目里面,执行cleanup,完全没问题了,图标状态也已经恢复了。 来源: oschina 链接: https://my.oschina.net/u/1177077/blog/517929

解决MAC下svn run cleanup interrupted错误

南笙酒味 提交于 2019-12-01 22:41:49
svn出现恼人的cleanup failed,如下 svn cleanup failed – previous operation has not finished; run cleanup if it was interrupted 解决方法:清空 svn 的队列 1.下载 sqlite3 2. 找到项目所在 .svn 文件,找到 wc.db 3. 执行 sqlite3 .svn/wc.db "select * from work_queue" 看到很多记录,就是出问题的记录 4. 下一步执行 sqlite3 wc.db "delete from work_queue" 5.在出错目录下 再次执行svn cleanup ,完事 来源: oschina 链接: https://my.oschina.net/u/2392723/blog/518788

Java 线程的基本使用

做~自己de王妃 提交于 2019-12-01 22:35:22
创建线程 创建线程的方式有两种: 继承 Thread 类 实现 Runnable 接口 Thread 类实现了 Runnable 接口。 使用继承 Thread 类的方式创建线程时,最大的局限是不支持多继承 。所以为了支持多继承,应该使用实现 Runnable 接口的方式。两种方式创建的线程在工作时是一样的,没有本质区别。 第一种方式,继承 Thread 类并重写 run() 方法: public class Work extends Thread { @Override public void run() { System.out.println("Working..."); } } public class Run { public static void main(String[] args) { Work work = new Work(); work.start(); System.out.println("End!"); } } 运行结果可能 “End!”先输出。在使用多线程时,运行结果与调用顺序是无关的。 调用 run() 方法只是普通的方法调用,不会启动线程。如果多次调用 start() 方法,会抛出 IllegalThreadStateException 异常。 第二种方式,实现 Runnable 接口: public class Work implements

Windows10 上安装虚拟机VMware Workstation 15 并安装Ubuntu 16.04记录

我与影子孤独终老i 提交于 2019-12-01 16:53:34
1、前记:由于MATLAB现在支持ROS接口了,之前做的仿真很想在ROS测试,于是准备安装一个ROS。以下作为记录 2、步骤: 1)、下载VMware Workstation 15虚拟机并安装。 2)、下载Ubuntu 16.04镜像并安装。 2.1、细节部分来源于其他博课,这里整合一下: (1)下载:访问其官网 https://www.vmware.com/cn.html 点击下载,点击产品下载下面的Workstation Pro。这时候需要注册一个账户,我是用QQ邮箱注册的,下载的是VMware Workstation 15。安装过程不复杂,和其他软件安装差不多,一般默认下一步即可。安装完成之后点击桌面快捷方式进行下一步激活。 激活 VMware Workstation 15,激活密匙如下:选择我有许可证密匙,并将以下一个复制粘贴。点击继续、点击完成。 YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8 UG5J2-0ME12-M89WY-NPWXX-WQH88 UA5DR-2ZD4H-089FY-6YQ5T-YPRX6 GA590-86Y05-4806Y-X4PEE-ZV8E0 ZF582-0NW5N-H8D2P-0XZEE-Z22VA YA18K-0WY8P-H85DY-L4NZG-X7RAD (2)先不急创建新的虚拟机,下载Ubuntu 16.04 iso。