摘要:netty 是异步通过事件机制来发送和接收信息的。但如果是请求-响应的模块就需要将netty修改为同步调用的方式。 具体思路是: 1、在往通道里写数据时,在通道里通过setAttachment的方式往里面添加锁(CountDownLatch) 此时线程会被阻塞 2、在处理器(handle)里接收到返
阅读全文
摘要:一、多返回值 例如 :s,e = string.find('test','t') 执行print(s,e),会得到结果1 1 那这时我们怎么使用这个执行结果呢? 其实s与e都是一个变量,所以你可以print(s)或print(e)就能分别看到对应的结果 二、可变参数 1、函数声明 function
阅读全文
摘要:linux的很多指令其实就是一个工具软件,只不过与windows不同的是它没有界面,操作不是用鼠标,而是用命令而已。同样的功能,各类工具会很多,就像windows一样,只要精通每类功能的一两个工具就行。 一、分析CPU 常用工具列举下:ps、top、iostat、vmstat、mpstat、sar
阅读全文
摘要:一、配置示例与说明 二、配置说明 1、子节点<appender> 负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名 1)ConsoleAppender 把日志输出到控制台,有以下子节点: <encoder>:对日志进行
阅读全文
摘要:一、基础 1.一次显示整个文件。 2.从键盘创建一个文件。 3.将几个文件合并为一个文件。 1、cat 文件名 2、cat > filename 3、cat file1 file2 > file 后可接 |grep 按关键字查找,多个关键字可用多个|grep,如: |grep a |grep b +
阅读全文
摘要:一、常用控制线程方法 暂停线程执行,不会释放锁 线程挂起,直到接收到notify 或notifyAll,才会进入就绪状态,锁会释放。可以设置等待时间(wait(n)) 并不意味着挂起和暂停,如果没有其它具有相同或更高优先级的线程需要调度,它还会继续运行,锁没有释放 中断线程,但不保证能成功 如果在线
阅读全文
摘要:主要参考了阿里巴巴开发规范,特此说明 一、通用规范 1、注释 总体原则是: 对外接口必须写;内部接口不建议使用 ,如果名字已经可以解释其意义,则不需要加注释,如果不能解释则可以加 1)属性注释 /** xxx **/ private String name; 2)方法里注释 public void
阅读全文
摘要:泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数 引入泛型的好处是安全简单。可以将运行时错误提前到编译时错误。没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开
阅读全文
摘要:一、函数式编程 1、lambda 表达式 参数值 -> 函数体内容,例如: // Java 8之前:new Thread(new Runnable() { @Override public void run() { System.out.println("Before Java8, too much
阅读全文
摘要:Duboo 不单让我们可以像使用本地服务一样的使用远程服务,还设计了很多特性来满足我们平时开发时常见的场景,省却了我们不少麻烦,真是一款有良心的框架,下面针对这些场景和解决方案来具体解释下: 1、接口与参数都可以加一些验证,DUBBO自带了 2、Dubbo提供声明式缓存,以减少用户加缓存的工作量 <
阅读全文
摘要:zookeeper将作为dubbo服务的注册中心。同时负责集群调度。dubbo依赖于Zookeeper,实现任务的分布式配置及各服务间的交互通信,Zookeeper以TreeNode类型进行存储,支持Cluster形式部署且保证最终数据一致性 两者集成相当简单,只需将协议修改为zookeeper <
阅读全文
摘要:一、Dubbo 创造者对于Dubbo的价值与意义作出过精辟的见解 1、单一应用架构 网站流量很小,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。2、垂直应用架构 访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用
阅读全文
摘要:Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理. 一 、配置管理 在我们的应用中除了代码外,还有一些就是各种配置。比如数据库连接,远程服务访问地址等。一般我们都是使用配置文件的方式,在代码中引入这些配置文件。当我们只有一种配置,只有一台服务器,并且不经常修改的时
阅读全文
摘要:线程是进程内的执行单元,进程当中都有若干个线程。 通常主线程或进程是阻塞式的按顺序执行的,如果希望异步执行些子任务,而不要阻塞当前线程的执行,即需要创建子线程,子线程创建后主线程可以等待它们的结果,得到它们的结果后进行其它的操作,但也可以不管它,让它自生自灭。 下面具体看下怎样创建多线程与如何让子主
阅读全文
摘要:JDK5之后引进了并发包java.util.concurrent,让并发的开发更加可控,更加简单。所以有必要好好学习下,下面从同步控制、并发容器、线程池三部分来详细了解它。 1. 各种同步控制工具的使用 1.1 ReentrantLock(重用锁) 1)与synchronized的区别是,它需要手动
阅读全文
摘要:Java语言规范没有明确地说明JVM使用哪种垃圾回收算法,但是任何一种垃圾回收算法一般要做2件基本的事情: (1)发现无用信息对象; (2)回收被无用对象占用的内存空间,使该空间可被程序再次使用。 但垃圾回收器只知道那些显示地经由new分配的内存空间,它不知道该如何释放这块“特殊”的内存区域。特殊的
阅读全文
摘要:JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就虚拟计算机. 操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂
阅读全文