- 浏览: 42289 次
- 性别:
- 来自: 北京
最新评论
文章列表
一、包含服务提供方和服务调用方
服务调用方:
代理层:
将对应的接口通过rpc框架的动态代理来生成一个对象。该对象不是直接invoke调用真实类的方法,而是通过序列化封装,通过网络向server发送信息,server接受信息,通过反射机制,调用方法然后返回结果。
序列化层:1 就参数序列化成报文,2 反序列化
通信层: 1通信消息到生产者服务器,2 根据返回的报文,反射生成对象
服务提供方
代理层:
初始化容器,服务需要注册,注册的服务需要被反射调用到。
序列化和通信层与上面一致。
一、 Facebook 开发的远程服务调用框架 Apache Thrift,它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在多种语言中,如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk 等创建高效的、无缝的服务,其传输数据采用二进制格式,相对 XML 和 JSON 体积更小,对于高并发、大数据量和多语言的环境更有优势
二、Thrift实例 : 创建一个简单的服务Hello。
清单一 hello.thrift
namespace java ...
分布式服务框架zookeeper
- 博客分类:
- zookeeper
一、 zookeeper 数据结构 : 具有层次关系的数据结构,非常类似于一个标准的文件系统
1: 每个子目录项(如NameService,Configuration,GroupMembers,Apps 都被称作为znode),
这个 znode 是被它所在的路径唯一标识,如 Server1 这个 znode 的标识为 /NameService/Server1
2:(临时节点)EPHEMERAL 类型的目录节点不能有子节点目录
3:znode是有版本的,每个znode中存储的数据可以有多个版本。一个访问路径中可以存储多份数据
4:znode 可以是临时节点,一旦创建这个 z ...
spring web flow
- 博客分类:
- Spring应用开发
Spring Web Flow 是一个web框架,适用于元素按规定流程运行的程序。是spring mvc的扩展,支持开发基于流程的应用程序。
一: Spring中使用web flow
1: 流程执行器 : 驱动流程的执行,当用户进入一个流程时,流程执行器会为用户 ...
spring 数据库访问
- 博客分类:
- Spring应用开发
一: 数据访问模版化 : spring将数据访问过程中固定的和可变的部分明确划分为两个不同的类: 模板和回调
模板 : 事务控制,管理资源,处理异常
回调 : 创建语句,绑定参数,整理数据集
spring 提供了: jdbcTemplate ...
spring 事务支持
- 博客分类:
- Spring应用开发
一、用4个词来表示事务:
1: 原子性: 事务是有一个或多个操作组成的一个工作单元。原子性确保事务中的所有操作全部发生或全部部发生。
2: 一致性:一旦事务完成(不管成功和失败),必须确保状态是一致的
3: 隔离性: 事务允许多个用户对相同的数据进行操作,每个用户的操作不会于其他用户关联。因此,事务应该被彼此隔离,避免发生同步读写相同数据的事情
4: 持久性:一但事务完成,事务的结果应该持久话。
二、spring对事务管理的支持(spring 提供了对编码式和声明式事务管理的支持)
1: spring对编码式事务的支持与ejb有很大的区别。ejb与jta 是耦合在一起。而 ...
一、http协议 : 是TCP/IP上层协议
1:TCP负责确保从一个网络节点向另一个网络节点发送的文件能作为一个完整的文件到达目的地
2:IP是一个底层协议,负责把数据块路由到目的地
二、http则是另一个网络协议,会话的结构是一个简单的请求/响应序列
三、
查看见表语句:
show create table dim_dept_saler
创建表
CREATE table dim_time_v3 as
SELECT 。。
csv文件 导入数据库
LOAD DATA local INFILE 'D://dev_code//mail.csv' into table fact_repertory_alarm_mail FIELDS TERMINATED by '\t'
pom文件(本地邮箱服务器配置)
- 博客分类:
- JAVA
本地邮箱服务器配置
<_mail_host>smtp.jd.com</_mail_host>
<_mail_port>25</_mail_port>
<_mail_username>wangle1</_mail_username>
<_mail_password>lwyx@#djO0</_mail_password>
<_mail_smtp_auth>true</_mail_smtp_auth>
<_mail_smtp_timeout>25000 ...
Hive自定义UDF和聚合函数UDAF
- 博客分类:
- Hive
一、Hive可以允许用户编写自己定义的函数UDF,来在查询中使用。
Hive中有3种UDF:
UDF:操作单个数据行,产生单个数据行;
UDAF:操作多个数据行,产生一个数据行。
UDTF:操作一个数据行,产生多个 ...
定义线程池 和 死锁产生及避免
- 博客分类:
- JAVA
ThreadPoolExecutor 可以定义更灵活的线程池。
1 : 线程池死锁
如果任务依赖于其他任务,可能产生死锁。 可以通过调整线程池的大小
2: 运行时间较长的任务
可以限定任务等待资源的时间,不要无限制的等待
3: 锁顺序死锁
当一个程序每次获得两次以上的锁时候,就可能产出死锁。
解决死锁的方式: 可以使用显示锁 ,手动释放锁
java 虚拟机字节码执行引擎
- 博客分类:
- JAVA
一 运行时栈帧结构 : 栈帧分配多少内存,与运行时无关
1: 局部变量表 : 容量以slot 槽为单位
一个slot 占用32位长度的内存空间,可以存的类型有boolean、byte、char、short、int、float、reference、retuanaddress .
reference 类型 : 表示 ...
java 虚拟机监控
- 博客分类:
- JAVA
一、jdk 命令行工具
1: jps 查看虚拟机进程
2: jstat 监控虚拟机各种运行状态
3: jinfo 查看和调整虚拟机各项参数
4: jmap 用于生成堆存储快照 dump
5: jhat 将jmap 生成的dump 展现出来
6: jstack 堆栈跟踪工具
二、可视化工具
1: JConsole 和 Visual VM
java 虚拟机垃圾回收和内存分配
- 博客分类:
- JAVA
一、对象是否存活的判断
1: 引用计数器 (缺点 循环引用)
2: 可达性分析
二、垃圾收集算法
1、标记清除 ,会产生碎片
2、复制算法 ,划分为大小相等的两块,只能使用一半的内存空间
3、标记整理,通过将存活对象都向一段移动,然后将边界的内存清理
4、分代算法: 新生代使用使用复制算法,老年代使用标记清除和标记整理
hotspot实现算法: 枚举根节点、安全点、安全区域 。(只有在安全点和安全区域清理)
三、7种垃圾收集算法
新生代 : serial 单线程 、parnew (多线程的serial)、parallel(多线程 并行)
老年代:seria ...