设计模式

Linux-vim命令

纵然是瞬间 提交于 2021-02-12 13:41:53
vim编辑器 1)目前最流行的vi克隆版本,功能强大,扩展性强 2)支持目前绝大部分平台:windows、linux、Unix、MacOs.. 3)vim没有菜单,只有命令 4)gvim是带菜单的可视化vim vim的三种基本工作模式 Normal模式(正常模式、编辑模式) Insert模式(插入模式) Command模式(命令模式、末行模式) 有时Normal模式和Command模式统称为命令模式 Normal模式(正常模式、编辑模式) 1)启动vim编辑器,首先进入Normal模式 2)在该模式下,用户可以输入各种合法的vim命令来管理自己的文档 3)在该模式下,从键盘上输入的任何字符都被当做编辑命令来解释 4)注意:在Normal模式下输入的命令不会在屏幕上显示 5)若输入的不是vim的合法命令,会响铃报警 6)从其他模式进入Normal模式:Esc键,为确保进入Normal模式,可多按几次Esc键 Insert模式(插入模式) 1)在该模式下,用户输入的任何字符都被vim当做文件内容保存起来,并将其显示在屏幕上 2)从Normal模式进入Insert模式: ->插入命令i或I ->附加命令a或A ->打开命令o或O ->修改命令、替换命令等 3)从Insert模式进入Normal模式:按Esc键 Command模式(命令模式、末行模式) 1

全方位解读Java反射(reflection)

﹥>﹥吖頭↗ 提交于 2021-02-12 11:29:53
  JAVA提供了一种反射机制,反射也称为反省。   java程序运行以后内存中就是一堆对象,除了对象什么都没有。   找对象   拉关系   瞎折腾   对象在运行过程中能否有一种机制查看自身的状态,属性和行为。这就是反射机制。   每一个运行中的类,都会有一个class对象,表示这个类的类对象。   获取class对象的方法:   1.引用名.getClass()   2.类名.getClass()   3.Class.forName()   //方法一 引用.getClass()   People p=new People();   System.out.println(p.getClass().getName()); //包括包名   System.out.println(p.getClass().getSimpleName());//不包括包名   //方法二 类名.getClass()   Classcla=People.class;   System.out.println(cla.getName());   System.out.println(cla.getSimpleName());   //方法三   try {   Classclaa=(Class)Class.forName(com.java.reflection.People);   System.out

推荐:Java性能优化系列集锦

不打扰是莪最后的温柔 提交于 2021-02-12 11:20:12
Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难。随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了。现代JVM持续演进,内建了更为成熟的优化技术、运行时技术和垃圾收集器。与此同时,底层的硬件平台和操作系统也在演化。 目录: 一、Java性能优化系列之一--设计优化 二、Java性能优化系列之二--程序优化 三、Java性能优化系列之三--并发程序设计详解 四、Java性能优化系列之四--Java内存管理与垃圾回收机制详解 五、Java性能优化系列之五--JavaIO 现代大规模关键性系统中的Java性能调优,是一项富有挑战的任务。你需要关注各种问题,包括算法结构、内存分配模式以及磁盘和文件I/O的使用方式。性能调优最困难的通常是找到问题所在,即便是经验丰富的人也会被他们的直觉所误导。性能杀手总是隐藏在最意想不到的地方。 这一次,我将在本文中着重介绍Java性能优化的一系列举措,希望能够对现在的你有所帮助。觉得有帮助的朋友也可以转发、收藏一下。 一、Java性能优化系列之一--设计优化 1、善于利用 Java 中的设计模式:享元模式、代理模式、装饰器模式等。详见我的博客文章“大话”设计模式 文章链接:https://blog.csdn.net/person_limit/article/details

linux基本命令

随声附和 提交于 2021-02-12 05:42:42
linux基本命令 (1) 创建用户命令(重要指数 * ***) useradd liulaoshi # 创建用户 passwd liulaoshi # 设置密码, 回车后会提示让你输入两次密码 普通用户登录的命令提示符与root用户不一样 (2) 修改命令提示符(重要指数**) echo $PS1 # 查看命令提示符参数 PS1= " [\u@\h \w \t]\$ " \w 显示完整工作路径 \t 显示时间 (3) 修改主机名(重要指数***) hostnamectl set-hostname qishitwo (4) linux系统命令提示符 (5) 创建目录命令(重要指数 * ***) mkdir -p liulaoshi/chenwen/liujie/xiaowei # 递归创建目录 mkdir -p {qihang,chenwen,yanglan,xiaowei} # 创建多个目录 touch liulaoshi.py qihang.py yanglan.py xiaowei.py # 创建多个普通文件命令, 文件之间用空格隔开 (6) VIM操作初识(重要指数 * ) vi/ vim操作流程: 1 . vi 打开文件 此时进入命令模式,你可以输入 i 命令,进入编辑模式 2 . 在编辑模式下,开始输入字符串 3 . 写完之后, 按下 esc 回到命令模式,按下 :

DDD战略设计相关核心概念的理解

▼魔方 西西 提交于 2021-02-12 04:40:49
01 前言 本文想再讨论一下关于领域、业务、业务模型、解决方案、BC、领域模型、微服务这些概念的含义和关系。 初衷是我发现现在DDD领域建模以及解决方案落地过程中,常常对这些概念理解不清楚或者有歧义,导致我们不知道如何运用这些概念来落地我们的软件。 先通过一个图来说明一下这些概念之间的关系,如下图所示 02 领域、业务、业务模型 · 领域,即问题域、问题空间,领域是一种边界、范围。 所以,一个领域代表了一个问题域的边界,也可以理解为是一个业务的边界。 · 领域边界越大,业务范围就越大,反之则相反。 通常我们大家交流都比较喜欢用业务这一词,比如这块业务,那块业务,业务的边界,我是一个业务开发人员(区分于我是一个中间件开发人员)。而领域一词,相对比较抽象,不是那么容易懂。 · 领域既然是一个边界,所以可以划分领域的大小。 即领域划分,划分出来的子领域简称子域,每个子域对应一个小的问题域和和小的业务;当然,不同的子域的重要性也是不同的,所以才有了核心子域、支撑子域的说法,这点显而易见。 · 每个业务都有一个对应的业务模型 (注意这个业务模型不是领域模型,而是一个业务概念的模型,领域模型下面会提到),这个业务模型设计的时候,完全不需要考虑任何软件设计的思想,比如对象的抽象、继承、存储、性能,等。 我们是从业务本身出发,分析业务边界范围内的各种业务概念,以及业务概念之间的关系

为什么有些大公司技术弱爆了?

血红的双手。 提交于 2021-02-11 21:18:26
这是我个人觉得蛮有意思的一篇文章,不是说里面的问题,而是两方暴露出来的问题现象,我们常说的业务价值和技术价值的权衡,其实精髓就在此,当然里面有些言论有些激烈,很多牢骚抱怨我们也有过,换个角度来想,也就释然了。这篇文章我看了很多遍,我喜欢看那些深刻的问题而不是个别敏感的字眼。所以推荐大家阅读也吸取有价值的思想,不要太拘泥于里面的个别表达方式。问题讨论的知乎链接为: https://www.zhihu.com/question/32039226/ ----------------------------------------------------------- 今年年初,到一家互联网公司实习,该公司是国内行业龙头。 不过技术和管理方面,却弱爆了。 那里的程序员,每天都在看邮件,查问题工单。 这些问题,多半是他们设计不当,造成的。 代码写的一团糟,全是复制粘贴,连作者都没改,大家普遍不写注释,也不格式化,代码歪歪扭扭。 一个项目里,httpclient竟然出现了四种。 一种是该公司研发部写的, 一种是老版本的开源项目, 一种是新版本的开源项目, 还有一种是开发人员造的轮子。 打接口请求响应日志,竟然不知道用拦截器。 打错误日志竟然不打上下文信息,每个人一种日志风格,千奇百怪。 许多重要的中间流程,居然不打日志。 idea、eclipse

JAVA面试题

放肆的年华 提交于 2021-02-11 18:06:14
1.HashMap和Hashtable的区别 2.StringBuilder内部实现机制 3.SpringMVC和Struts2的区别 4.Spring事务的管理 5.Hibernate与MyBatis的比较 6.GC算法有哪些 7.垃圾回收器有哪些 8.如何调优JVM 9.Java 中堆和栈有什么区别? 10.缓存命中率的计算 11.Memcache与Redis的区别 12.如何实现Redis的分片 13.zookeeper的用途 14.dubbo的用途以及优点 15.HashMap和HashTable存储原理 16.说说堆的年轻代和老年代 17.HTTP协议,GET和POST 的区别 18.栈溢出的原因有哪些 17.String、StringBuffer与StringBuilder之间区别 20.堆内存和栈内存的区别 21.讲讲分布式唯一ID 22.对象克隆和实现方式 23.集群环境中,session如何实现共享 24.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 25.如何实现对象克隆? 26.唤醒一个阻塞的线程 27.说说NIO和IO的区别 28.Java中的NIO,BIO,AIO分别是什么? 29.什么是幂等性 30.终止线程有几种方式?终止线程标记变量为什么是 valotile 类型? 31

设计模式——策略模式

情到浓时终转凉″ 提交于 2021-02-11 17:27:02
策略模式基础讲解已经很详尽:   https://www.cnblogs.com/lewis0077/p/5133812.html 补充使用实例1:网络请求重试策略 策略接口: public interface RetryPolicy { int getMaxNumRetries(); void setmMaxNumRetries( int mMaxNumRetries); /** * 重试策略的具体执行:可以根据不同的RequestException作不同的重试 */ boolean retry(RequestException e) ; } 抽象类 public abstract class AbstractRetryPolicy implements RetryPolicy{ // 当前重试次数 protected int mCurrentRetryCount; // 最大重试次数 protected int mMaxNumRetries; // 默认的最大重试次数 public static final int DEFAULT_MAX_RETRIES = 1 ; public AbstractRetryPolicy() { this (DEFAULT_MAX_RETRIES); } public AbstractRetryPolicy( int maxNumRetries)

GOF

↘锁芯ラ 提交于 2021-02-11 14:00:55
一连串命令执行后,可以回退 public interface Command { /** * 执行 * @param s */ void write(String s); /** * 回退 */ void back(); } public class Content { public String msg = ""; } public class WriteCmd implements Command{ Content content; String s; public WriteCmd(Content content) { this.content = content; } @Override public void write(String s) { this.s = s; content.msg += s; } @Override public void back() { content.msg = content.msg.substring(0, content.msg.length() - s.length()); } } public class CmdManager { // 利用栈现进后出的特性存放命令 static Stack<Command> commands = new Stack<>(); public static void add(Command cmd

【雏鹰计划】开源中国「后端开发实习生」岗位详情

此生再无相见时 提交于 2021-02-11 13:02:12
后端开发实习生——北京 薪资: 150-250元/天 岗位职责: 参与公司DevOps私有云产品前/后端研发工作 参与公司研发云平台建设 职位要求: 全日制统招大学,计算机或相关专业本科大三、研一、研二在读 扎实的计算机基础知识和编程能力,熟悉一门流行的强类型语言(C/C++/Java/Go/JavaScript) 熟悉一门流行的脚本语言(Python/Lua) 具有良好的数据结构、算法基础,熟悉面向对象,面向接口的设计模式 对技术充满热情,工作态度积极,沟通协作能力强 有ACM/信息学竞赛等参赛经历者优先 有个人开源软件作品者优先 联系方式: 联系人:李女士 联系电话: 0755-83170505 邮箱地址:osc- hr@oschina.cn 公司地址: 北京市海淀区信息路甲 9 号奎科大厦 1 层 A 北区 来源: oschina 链接: https://my.oschina.net/u/4163637/blog/4429572