自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (14)
  • 收藏
  • 关注

原创 MySQL日期函数

mysql 主要的日期时间函数使用说明

2022-08-20 16:51:35 1999 6

原创 IDEA 开发spring cloud maven 依赖包标红报错omitted for duplicate

spring cloud环境问题解决

2022-06-29 15:40:18 1389

转载 缓存IO和直接IO

I/O:输入/输出(Input/Output),分为IO设备和IO接口两个部分。在POSIX兼容的系统上,例如Linux系统,I/O操作可以有多种方式,比如DIO(Direct I/O),AIO(Asynchronous I/O, 异步I/O),Memory-Mapped I/O(内存映射I/O)等,不同的I/O方式有不同的实现方式和性能,在不同的应用中可以按情况选择不同的I/O方式。缓存io缓存I/O又被称作标准I/O,大多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/O

2022-04-08 17:29:23 690

转载 什么是WebSocket,它与HTTP有何不同

今天翻译一篇关于HTTP和WebSocket的文章。HTTP和WebSocket都是客户端-服务器通信中使用的通信协议。文章用几个例子解释了两者的不同以及分别适用在什么应用场景。有些容易混淆的概念(比如说HTTP长连接)和待补充的概念我用斜体字注解到了文章中。作者:GeeksforGeeks来源:GeeksforGeeks原文链接:https://www.geeksforgeeks.org/what-is-web-socket-and-how-it-is-different-from-the-htt

2022-04-08 14:11:40 478

原创 SuperSet 查询Druid.io 时区转换查询

SELECT FLOOR(TIMESTAMPADD(HOUR, 8, __time) TO DAY) AS "__timestamp", "room_id" AS "room_id", "game_type" AS "game_type", "game_mode" AS "game_mode", TIME_FORMAT(MILLIS_TO_TIMESTAMP(MIN(start_time_min)*1000), 'yyyy-MM-dd HH:mm:s.

2022-03-31 10:26:33 380

原创 Redash 查询 druid.io 时区转换

select dms1, event, SUM("count") AS pvFROM "apprizhi-app_statistic"WHERE TIMESTAMPADD(HOUR, 8, __time) >= TIME_PARSE('{{ start_date }}T00:00:00') AND TIMESTAMPADD(HOUR, 8, __time) < TIME_PARSE('{{ end_date }}T00:00:00') AND appkey='.

2022-03-31 10:04:00 435

原创 hive中控制窗口范围rows between的使用

1.rows between的作用在使用hsql完成一些业务需求的时候,我们经常会用到窗口函数,某些场景下会涉及到需要控制窗口函数的范围来满足业务需求,这个时候就需要用到rowsbetween了,使用rows between可以根据自己的需求任意的控制窗口函数的范围。2.rows between的使用首先我们有一张如下的数据表sid day_time sale 101 2020-01-03 10 102 2020-01-04 20 103

2022-03-29 15:03:32 1902 1

转载 人际交往50规律(转)

受欢迎的人一般都是活泼开朗,多才多艺,人群中比较亮眼那种。而不是非得讨好每个人,才能人缘好。 人际交往百分之八十都是利益互换。该谈利益的时候,莫谈感情。看清楚这一点,别到头来你把人家当知己,人家把你当ATM。 人们会因为寂寞和不适应新环境而交各种各样的朋友。但是只要你们本性不同,最后的结局必然是渐行渐远。 没有人喜欢被教育。如果不是对真正的朋友,不要轻易提出建议和批评。这样的结果通常是,双方没有得到任何好处,反而积累怨恨。 善于倾听是维持友谊的秘诀。 每个人成长环境,价值观不一样,对生活中大大小小

2021-06-23 17:28:16 161

原创 编译zookeeper3.5.9

源码下载地址https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9.tar.gz编译zookeeper 3.4.x及之前的版本都是用ant编译的,而从3.5.x开始使用maven编译,可以说步入了java项目编译的主流当中,因为zookeeper版本较新,而编译zookeeper的maven版本自然不能太低,我这里使用的是maven3.6.31 下载zookeeper源码

2021-02-02 08:20:29 346

原创 利用lit和typeLit为spark dataframe增加常量列 & udf函数传入额外参数

有时候由于数据处理需要,我们会为dataframe添加一个常量列,本文介绍向dataframe添加常量列的方法。使用typedLit函数通过函数:org.apache.spark.sql.functions.typedLit,可以添加List,Seq和Map类型的常量列。scala> val df1 = sc.parallelize(Seq("Hello", "world")).toDF()df1: org.apache.spark.sql.DataFrame = [value: st

2020-12-17 18:06:38 3863

原创 Hive的时间操作函数

from_unixtime功能: UNIX时间戳转日期函数:语法:from_unixtime(bigintunixtime[,stringformat])返回值:string说明:转化UNIX时间戳(从1970-01-0100:00:00UTC到指定时间的秒数)到当前时区的时间格式举例:selectfrom_unixtime(1323308943,’yyyyMMdd’)fromdual; #结果 20111208unix_timestamp功能:...

2020-12-15 14:40:13 2830

原创 java继承中的重载和重写

重载方法的选择当有多个重名函数,在决定要调用哪个方法的过程中,首先按照参数类型进行匹配,即寻找所有重载方法中最匹配的,然后再看变量的动态类型,进行动态绑定实验代码Base1类public class Base1 { public int multi(int a, int b) { System.out.println("base int int"); return a - b; }}Child1类public class C.

2020-11-06 21:44:39 231 2

原创 java继承的重名和动静态绑定

问题背景在java继承场景中,假如有父类Base,字类child, Child类中有和Base类中重名的静态或者非静态成员(字段,方法等)。假如Base类的引用指向了Child类的示例,则按照如下分析其引用的运行类型1 动态绑定需要等待运行时才能决定运行类型。动态绑定的情况只有一种* 实例非静态方法2 静态绑定编译时期即可决定运行类型* 实例变量* 静态变量* 静态方法* private方法实验代码Base类..

2020-11-06 21:00:28 180

原创 利用Jconsole查看kafka任意Broker的指标

1 进入zookeeper命令窗口[bigdataservice@zk-01 ~]$ zookeeper-client Connecting to localhost:21812020-10-17 16:04:43,189 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.5-cdh6.2.0--1, built on 03/14/2019 06:15 GMT2020-10-17 1

2020-10-17 16:34:42 400

原创 Kafka中的时间轮调度算法

问题背景在kafka生产者发送数据过程中,源源不断的产生数据,然后发给kafka。我们考虑这样一种场景,数据产生速率时快时慢,我们是不是产生一条发送一条呢?很显然,在高吞吐数据场景下,这样的作法,IO性能不高,没有很好的利用socket缓存。那么是不是一定要积累到一定量再发数据呢?这在低吞吐场景下,数据时效性又没法保证。因此,我们一般结合数据量和时间两个因素来考量数据发送的时机。除了这种场景外,还有许多场景,需要用到定时器,在java传统的Timer定时器,定时比较固定刻板,不够灵活,而且效率也不高。因

2020-10-10 17:23:08 844

原创 Kafka生产者拦截器的使用

拦截器定义package thread;import com.fasterxml.jackson.databind.ObjectMapper;import org.apache.kafka.clients.producer.ProducerInterceptor;import org.apache.kafka.clients.producer.ProducerRecord;import org.apache.kafka.clients.producer.RecordMetadata;im

2020-10-09 11:08:31 319

原创 kafka集群性能的OS参数

1 文件描述符kafka读写磁盘会频繁的创建并修改文件系统中的文件,主要有下面3类日志文件索引文件元数据文件一个broker需要控制的文件数 近似 等于(一个topic分区大小/ 分区段文件大小 ) * 3 * 所有topic分区数总和比如一个partition(topic 分区) 大小为200G, 一个partition segment(分区段文件)大小为10G, 并且该broker上面有100个topic分区则 该broker上面需要维护的文件个数为 (200 /..

2020-10-08 16:10:59 356

原创 kafka 生产消费性能测试

生产数据压力测试kafka-producer-perf-test.sh 脚本命令的参数为:--topic topic名称,比如test--num-records 总共需要发送的消息数,比如为1000000--record-size 每个记录的字节数,比如1000--throughput 每秒钟发送的最大记录数,比如20000--producer-props bootstrap.servers=kafka-01:9092,kafka-02:9092,kafka-03:9092 发送端的配置信息,

2020-10-08 10:50:37 1727 1

原创 linux下查看磁盘文件系统的多种方式

df -T 只可以查看已经挂载的分区和文件系统类型。[root@hadoop001 ~]# df -T文件系统 类型 1K-块 已用 可用 已用% 挂载点devtmpfs devtmpfs 32852012 0 32852012 0% /devtmpfs tmpfs 32863208 0 3286320

2020-10-08 09:42:35 7726

原创 非递归方法求解二叉树最大深度

题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。分析使用递归,很容易写出该求解算法,思路也简单,就是左子树和右子树高度,取两者最大,然后在此基础上加1即可,如下图所示,差不多1到2行代码。 public in...

2020-09-30 16:08:27 2514

原创 Manacher算法推演及其问答

public class StringUtils2 { public static String preProcess(String s) { int n = s.length(); if (n == 0) { return "^$"; } String ret = "^"; for (int i = 0; i < n; i++) ret += "#" + s.c.

2020-08-25 17:57:50 158

原创 关于技术学习的一些思考

专注不贪多学习的时候,一定要目标明确,不要这里搞一下那里搞一下,当时可能觉得自己涉略很多,关注面挺广。可是到最后发现,大量时间过去后,自己好像啥也没收获到。因为人对一件新事物的接触,遗忘是很快的。学习不可求快,必须专注,务求对所学的东西掌握透彻。遵循学习规律,不草率要做到这一点,应当先从总体上建立宏观认识,然后分模块去学,学的时候必须不断地给自己提问题,自己寻找答案,在遇到坎时,应当先仔细的阅读官方文档,多做实验,等基本功能使用熟透之后,再尝试去看源码,先前学习flink,对各种概念功能还不熟悉

2020-08-16 16:25:18 156

原创 spark stream 的双流join

背景在构建实时数仓过程中,有时需要将两个实时数据源进行关联,生成大宽表数据,这时就不得不用到双流join。场景比如有这样的场景,订单实时数据源,和订单物品实时数据源。订单数据源有订单id,下单时间,订单金额,收货人,收货地址等信息,订单商品数据源有订。单号id,商品名称,商品品牌,商品价格,商品成交价格,商品所属商家。订单和订单商品一般是一对多的关系。生成订单大宽表数据,需要将订单的每一件商品信息都关联上订单详细信息。面临问题我们使用流数据join,不像静态数据那么简单。我们知道静态数据

2020-08-11 21:37:13 1284

原创 Spark SQL 小数据聚合的坑

摘要在spark sql中,聚合操作,如分组求和,join,分组TopN等,是很常见的,有的时候,我们会遇到这样的情况,数据量并不大,但是聚合起来,需要花费不少时间。俗话说,事出反常必有妖,背后一定有某种原因导致了这种情况。本篇文章介绍了其中一种场景,希望能为大家带来启示。场景展现程序代码我们写两个简单的spark socket流程序,使用nc命令手动发数据,然后对收到的数据进行简单的汇总,不涉及任何复杂操作,程序代码如下 val spark = SparkSession.builde

2020-08-07 11:06:28 313

原创 Spark SQL的jdbc数据源如何确定数据分区

摘要本篇文章主要分析spark sql在加载jdbc数据时,比如通过jdbc方式加载MySQL数据时,分区数如何确定,以及每个分区加载的数据范围。通过本篇文章的分析,以后我们在用spark读取jdbc数据时,能够大致明白底层干了什么事情,以及避免一些坑。spark dataframe的jdbc接口 /** * Construct a `DataFrame` representing the database table accessible via JDBC URL * url n

2020-08-05 16:47:36 1753

原创 Flink中的Window操作

概念WindowStream流数据是源源不断,永无止境的,而我们一般将这些流数据按照一定规则划分成一段一段的有限范围,比如按照一定数量切分,或者按照时间窗口切分。这样就将整体的无限,转化成了一段段连续(有时候会有重叠)的有限,这样我们才有能力去处理它,并且也符合实际的需求,比如每5分钟活跃人数,新增人数,转化率等等。Window Functionswindow function 包含了作用于window范围内数据的计算逻辑,主要有ProcessWindowFunction,ReduceFu.

2020-08-04 10:52:02 546

原创 Flink中reduce的4种方式

def main(args: Array[String]): Unit = { val env = ExecutionEnvironment.getExecutionEnvironment val path = this.getClass.getResource("/data.txt").getPath val text = env.readTextFile(path).setParallelism(2) val group_ds = text.flatMap(_.spli.

2020-08-03 16:02:12 4101

原创 Flink自定义并行读取Mysql数据

自定义Source概述自定义Source是Flink学习中非常重要的一环,一般实现一个Source,可以继承下面几个类之一SourceFunctionRichSourceFunctionParallelSourceFunctionRichParallelSourceFunction前两个是单并行度,后2个是多并行度,无论是否多并行度,我们一般选择带Rich的SourceFunction, 也就是RichSourceFunction和RichParallelSourceFunction,这

2020-08-03 11:44:38 2533 1

原创 Flink中对keyBy的探究

0 摘要 在Flink实时流数据处理中,经常用到keyBy算子, 虽然能够大致不差的使用它,实现自己的需求。然而这个算子到底做了什么事情,心里一直没有底。这篇文章算是对keyBy算子稍微深入一点的探究。1 Spark中的按key分组操作 对于经常使用spark的同学而言,分组操作数据,那是再熟悉不过。比如groupBy, reduceBy, aggregateBy等一系列算子。基本思路都是指定key之后, 将相同key的元素集合到一个集合里面,形成一个新的集合元素,...

2020-08-01 18:33:17 20487 9

原创 maven工程中的各种路径获取

需求新建maven工程,如下图所示,现在想在BatchJob类中读取resources资源路径下data目录下的wc文件,代码该如何编写呢获取路径代码1 通过BatchJob类class本身 val path2 = this.getClass.getResource("").getPath val path3 = this.getClass.getResource("/").getPath结果path2=/D:/programs/flink/target/class..

2020-07-26 22:08:04 3120

原创 hbase hfile命令用法

数据准备# hbase shell窗口插入数据hbase(main):015:0> put 'rrw_ugrp', 'rk002', 'user_attri:name', 'xiaoming002'Took 0.0112 seconds

2020-07-22 14:40:57 849

原创 Hbase 1.3.6 源码编译

下载源码下载地址:http://hbase.apache.org/downloads.htmlReleasesVersion Release Date Compatibility Report Changes Release Notes Download Notices 2.3.0 2020/07/13 2.2.0 vs 2.3.0 Changes Release Notes src(sha512asc)bin(sha...

2020-07-18 16:29:33 379

原创 数据结构与算法-数组字符串最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。题解总体思路 以数组第一个字符串为参照,将其从首个字符开始,依次去匹配数组后续的每个字符串对应位置字符,如果每个字符串对应位置字符都匹配,则存下该字符,继续取出第一个...

2020-07-16 14:33:42 221

原创 数据结构与算法-寻找数组的中心索引

题目给定一个整数类型的数组nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例1输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 1...

2020-07-15 17:09:28 165

原创 单链表-交换相邻节点 & 反转链表

定义单链表class MyLinkedList { static class ListNode{ int val; ListNode next; public ListNode(int val,ListNode next){ this.val = val; this.next = next; } } ListNode head,tail; int size

2020-07-14 16:05:13 910

原创 数据结构与算法-python实现任意数字字符串(可含小数)转数字

背景介绍 在上一篇文章里,我们介绍了整数字符串转数字的算法,在本篇文章里,我们更进一步,将任意数字字符串,包括小数,整数形式的字符串转成对应的数值。整数部分我们已经实现了,所以我们着重要解决的是将小数部分的转成对应数值,再结合整数部分,就将一个完整的数字字符串转换成了对应数值小数部分转换思路 在整数部分里,我们得到一个个单字符后,依次将对应位置的字符转换成其对应的数字,然后分别乘以其对应位置的系数(10的次幂), 然后将各部分组合即可。类似地,在处理小数部分时,也是如此,不...

2020-07-10 18:26:31 2635

原创 数据结构与算法-python实现整数字符串转数字(不得直接调用现有的库)

二进制 十进制 十六进制 图形 00100000 32 20 (空格)(␠) 00100001 33 21 ! 00100010 34 22 " 00100011 35 23 # 00100100 36 24 $ 00...

2020-07-10 17:00:03 260

原创 Spark Streaming 消费kafka数据出现No current assignment for partition崩溃

问题概述 我们用spark streaming 消费kafka数据,偶尔会出现该问题,其本质原因是多个进程以相同的kafka group id 并行消费同一个topic导致的,碰到该问题,应首先从迅速下面2个方面排查:多个应用程序使用了相同的kafka group id 去消费同一个topic 一个应用程序,在内部不小心间接地启动了2个消费进程,这2个进程使用了相同的kafka group id 去消费同一个topic前一个好说,比较容易排查,后一个需要仔细排查程序细节,如果预先没有...

2020-07-06 16:08:11 3557

原创 hive 同源多表插入操作

Hive支持多表插入,可以在同一个查询中使用多个insert子句,这样的好处是我们只需要扫描一遍源表就可以生成多个不相交的输出!from test1insert overwrite table test2partition (age)select name,address,school,ageinsert overwrite table test3select name,address多表插入的关键点在于将所要执行查询的表语句 "from 表名",放在最开头位置...

2020-07-05 12:48:28 1440

原创 HIVE的一些实用技巧

1 设置会话级别的参数# 显示 config 配置的值# 格式set <config>; # 示例set hive.cli.print.current.db# 设置config配置的值 # 格式set <config>=<config_value>;# 设置示例set hive.cli.print.current.db=true; 疑问:调优的时候很多参数是可以调整的, 为什么不配置到全局的里面 (hive-site.xml 文件..

2020-07-04 20:55:41 244

后序遍历二叉树非递归算法的推导及形式化证明

后序遍历二叉树非递归算法的推导及形式化证明,难得的期刊论文资料,对研究二叉树的非递归性遍历有很大帮助

2017-11-27

深入理解SparkStreaming执行模型

深入理解SparkStreaming执行模型,spark研究专家多年的成果总结,值得学习!

2017-11-27

一种基于YARN的高优先级作业调度实现方案

一种基于YARN的高优先级作业调度实现方案,帮助你更好的理解YARN的工作机制

2017-11-27

HadoopYARN大数据计算框架及其资源调度机制研究

HadoopYARN大数据计算框架及其资源调度机制研究,对Yarn的工作机制做一个全面的概述,揭示原理

2017-11-27

基于运行数据分析的Spark任务参数优化_陈侨安.pdf

spark运行涉及的一些优化方案,可能对一些实际场景有作用,喜欢就下载把

2017-11-27

SQLyog11.2

最新破解版的Mysql数据库客户端,界面友好,操作方便,安装完后,不要立即启动,应先点击注册文件,注册成功后,再打开该软件,即可使用

2015-04-04

jquery1.7和1.8的中文参考文档

jquery1.7和1.8的中文参考文档,详细介绍了jquery1.7和1.8的使用,是学习jquery的很好的资料

2013-11-26

\精通CSS.pdf

精通CSS,让你更好的进行CSS设计,提高你样式布局调控能力

2013-06-28

AJAX框架DWR2.zip )

完整的DWR框架包和,使您能顺利的使用熟悉dwr框架,发布dwr应用

2013-05-24

深入理解Java虚拟机JVM高级特性与最佳实践

 围绕内存管理、执行子系统、编程编译与优化、高效并发等核心内容对JVM进行全面而深入的分析,深刻揭示JVM的工作原理   注重实现,以解决实践中的疑难问题为首要目的,包含大量经典案例和最佳实践 内容简介   作为一位Java程序员,你是否也曾经想深入理解Java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,本书极尽化繁为简之妙,能带领你在轻松中领略Java虚拟机的奥秘。本书是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。 显示全部信息 作者简介   周志明,资深Java技术专家,对JavaEE企业级应用开发、OSGi、Java虚拟机和工作流等都有深入的研究,并在大量的实践中积累了丰富的经验。尤其精通Java虚拟机,撰写了大量与JVM相关的经典文章,被各大技术社区争相转载,是ITeye等技术社区公认的Java虚拟机方面的领袖人物之一。现任远光软件股份有限公司平台开发部经理兼平台架构师,先后参加与过国家电网、南方电网等多个国家级大型ERP项目的平台架构工作,对软件系统架构也有深刻的认识和体会。 目录 前言 致谢 第一部分 走近Java  第1章 走近Java   1.1 概述   1.2 Java技术体系   1.3 Java发展史   1.4 展望Java技术的未来   1.4.1 模块化   1.4.2 混合语言   1.4.3 多核并行   1.4.4 进一步丰富语法   1.4.5 64位虚拟机   1.5 实战:自己编译JDK   1.5.1 获取JDK源码 显示全部信息 媒体评论 Java 程序是如何运行的?Java虚拟机在其中扮演了怎样的角色?如何让Java程序具有更高的并发性?许多Java程序员都会诸如此类的疑问。无奈,国内在很长一段时间里都没有一本从实际应用的角度讲解Java虚拟机的著作,本书的出版可谓填补了这个空白。它从Java程序员的角度出发,系统地将Java程序运行过程中涉及的各种知识整合到了一起,并配以日常工作中可能会碰到的疑难案例,引领读者轻松踏上探索Java虚拟机的旅途,是广大对Java虚拟机感兴趣的读者的福音! ——莫枢(RednaxelaFX) 虚拟机和编程语言爱好者 在武侠的世界里,无论是至刚至强的《易筋经》,还是阴柔无比的《葵花宝典》,都离不开内功修炼。没有了内功心法,这些武术只是花拳绣腿的拙劣表演而已。软件业是武林江湖的一个翻版,也有着大量的模式、套路、规范等外功,但“外功修行,内功修神”,要想成为“扫地僧”一样的绝世高人,此书是必备的。 ——秦小波 资深Java技术专家/著有畅销书《设计模式之禅》 对Java程序员来说,Java虚拟机可以说是既熟悉又神秘,很少Java程序员能够抑制自己探究它的冲动。可惜,分析JVM实现原理的书籍(特别是国内作者出版的)是少之又少。本书的出版可谓Java程序员的福音,作者将自己多年来在Java虚拟机领域的实践经验和研究心得呈现在了这本书中,不仅系统地讲解了Java虚拟机工作机制和底层原理,而且更难能可贵的是与实践很好地结合了起来,具有非常强的实践指导意义,强烈推荐! ——计文柯 资深Java技术专家/著有畅销书《Spring技术内幕:深入解析Spring架构设计与实现原理》 在线试读部分章节 序: Java是目前用户最多、使用范围最广的软件开发技术,Java的技术体系主要由支撑Java程序运行的虚拟机、为各开发领域提供接口支持的Java API、Java编程语言及许许多多的第三方Java框架(如Spring和Struts等)构成。在国内,有关Java API、Java语言及第三方框架的技术资料和书籍非常丰富,相比之下,有关Java虚拟机的资料却显得异常贫乏。 这种状况很大程度上是由Java开发技术本身的一个重要优点导致的:在虚拟机层面隐藏了底层技术的复杂性以及机器与操作系统的差异性。运行程序的物理机器情况千差万别,而Java虚拟机则在千差万别的物理机上面建立了统一的运行平台,实现了在任意一台虚拟机上编译的程序都能在任何一台虚拟机上正常运行。这一极大的优势使得Java应用的开发比传统C/C++应用的开发更高效和快捷,程序员可以把主要精力集中在具体业务逻辑上,而不是物理硬件的兼容性上。一般情况下,一个程序员只要了解了必要的Java API、Java语法并学习适当的第三方开发框架,就已经基本能满足日常开发的需要了,虚拟机会在用户不知不觉中完成对硬件平台的兼容以及对内存等资源的管理工作。因此,了解虚拟机的运作并不是一般开发人员必须掌握的知识。 然而,凡事都具备两面性。随着Java技术的不断发展,它被应用于越来越多的领域之中。其中一些领域,如电力、金融、通信等,对程序的性能、稳定性和可扩展性方面都有极高的要求。一个程序很可能在10个人同时使用时完全正常,但是在10000个人同时使用时就会变慢、死锁甚至崩溃。毫无疑问,要满足10000个人同时使用需要更高性能的物理硬件,但是在绝大多数情况下,提升硬件效能无法等比例地提升程序的性能和并发能力,有时甚至可能对程序的性能没有任何改善作用。这里面有Java虚拟机的原因:为了达到为所有硬件提供一致的虚拟平台的目的,牺牲了一些硬件相关的性能特性。更重要的是人为原因:开发人员如果不了解虚拟机的一些技术特性的运行原理,就无法写出最适合虚拟机运行和可自优化的代码。

2013-05-16

最新完整W3CSchool教程

完整版W3CSchool.chm 内含html css javascript xml dom 等W3C的技术学习手册,有案例 有讲解 完整版的帮助文档

2013-04-14

破解版SQLyog10.zip

真正的破解版SQLyog10,良好的数据库客户端应用软件,无需繁琐的破解程序,直接解压即可无限制使用,好容易才找到的

2013-03-21

CSS3.0中文完全参考手册.chm

CSS3.0中文完全参考手册.chm,最新的CSS文档

2013-01-24

易宝支付产品通用接口帮助文档.CHM

易宝支付产品通用接口帮助文档.这份文档很难得的哦

2013-01-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除