
java技术
文章平均质量分 78
james570
勤能补拙
展开
-
java基础的一些经验(一)
1.jre和jdk到底有什么区别(这是摘抄,写的不错) Jre 是java runtime environment, 是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦,还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windows上的虚拟机是哪个文件呢?学过MFC的都知道什么是dll文件吧,那么大家看看jre/b原创 2011-06-27 13:00:00 · 384 阅读 · 0 评论 -
算法系列15天速成——第一天 七大经典排序【上】
11年看过的算法,写的通俗易懂,转载下,大概1星期敲一遍差不多这些算法都搞定了!今天是开篇,得要吹一下算法,算法就好比程序开发中的利剑,所到之处,刀起头落。 针对现实中的排序问题,算法有七把利剑可以助你马道成功。 首先排序分为四种: 交换排序: 包括冒泡排序,快速排序。 选择排序: 包括直接选择排序,堆排序。转载 2017-10-31 15:08:31 · 351 阅读 · 1 评论 -
那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
那些年,空气中仿佛还能闻到汉唐盛世的余韵,因此你决不允许自己的脸上有油光,时刻保持活力。然而,你一定曾为这些“高深术语”感到过困扰。也许时至今日,你仍对它们一知半解。不过就在今天,这一切都将彻底改变!我将带领你以一种全新的高清视角进入奇妙的编程世界,领略涵泳在这些“高深术语”中的活泼泼的地气,以及翩跹于青萍之末的云水禅心。内聚 内聚,通俗的来讲,就是自己的东西自己保管,自己的事情自己做。转载 2017-11-01 13:26:42 · 269 阅读 · 0 评论 -
算法系列15天速成——第十天 栈
今天跟大家聊聊栈,在程序设计中,栈的使用还是非常广泛的,比如有“括号匹配问题“,”html结构匹配问题“。所以说掌握了”栈“的使用,对我们学习算法还是很有帮助的。 一: 概念 栈,同样是一种特殊的线性表,是一种Last In First Out(LIFO)的形式,现实中有很多这样的例子, 比如:食堂中的一叠盘子,我们只能从顶端一个一个转载 2017-11-01 13:34:27 · 272 阅读 · 0 评论 -
算法系列15天速成——第十一天 树操作(上)
先前我们讲的都是“线性结构”,他的特征就是“一个节点最多有一个”前驱“和一个”后继“。那么我们今天讲的树会是怎样的呢?我们可以对”线性结构“改造一下,变为”一个节点最多有一个"前驱“和”多个后继“。哈哈,这就是我们今天说的”树“。 一: 树 我们思维中的”树“就是一种枝繁叶茂的形象,那么数据结构中的”树“该是怎么样呢?对的,他是一种现实中倒立的树。转载 2017-11-01 13:36:26 · 276 阅读 · 0 评论 -
算法系列15天速成—— 第十三 树操作【下】
大家可否知道,文件压缩程序里面的核心结构,核心算法是什么?或许你知道,他就运用了赫夫曼树。听说赫夫曼胜过了他的导师,被认为”青出于蓝而胜于蓝“,这句话也是我比较欣赏的,嘻嘻。 一 概念 了解”赫夫曼树“之前,几个必须要知道的专业名词可要熟练记住啊。 1: 结点的权 “权”就相当于“重要度”,我们形象的用一转载 2017-11-01 13:38:55 · 267 阅读 · 0 评论 -
算法系列15天速成——第十四 图【上】
今天来分享一下图,这是一种比较复杂的非线性数据结构,之所以复杂是因为他们的数据元素之间的关系是任意的,而不像树那样被几个性质定理框住了,元素之间的关系还是比较明显的,图的使用范围很广的,比如网络爬虫,求最短路径等等,不过大家也不要胆怯,越是复杂的东西越能体现我们码农的核心竞争力。 既然要学习图,得要遵守一下图的游戏规则。一: 概念转载 2017-11-01 13:39:47 · 282 阅读 · 0 评论 -
算法系列15天速成—— 图【下】(大结局)
说下“图”的最后一点东西,“最小生成树“和”最短路径“。 一: 最小生成树1. 概念 首先看如下图,不知道大家能总结点什么。 对于一个连通图G,如果其全部顶点和一部分边构成一个子图G1,当G1满足: ① 刚好将图中所有顶点连通。②顶点不存在回路。则称G1就是G的“生成树”。 其实一句话总结就是:生成转载 2017-11-01 13:40:37 · 287 阅读 · 0 评论 -
算法系列15天速成——第十二天 树操作(中)
先前说了树的基本操作,我们采用的是二叉链表来保存树形结构,当然二叉有二叉的困扰之处,比如我想找到当前结点的“前驱”和“后继”,那么我们就必须要遍历一下树,然后才能定位到该“节点”的“前驱”和“后继”,每次定位都是O(n),这不是我们想看到的,那么有什么办法来解决呢? (1) 在节点域中增加二个指针域,分别保存“前驱”和“后继”,那么就是四叉链表了,哈哈,还是有点浪费空间转载 2017-11-01 13:37:26 · 250 阅读 · 0 评论 -
FastDHT简介及安装配置
1.简介:由于FastDFS本身不能对重复上传的文件进行去重,而FastDHT可以做到去重。FastDHT是一个高性能的分布式哈希系统,它是基于键值对存储的,而且它需要依赖于Berkeley DB作为数据存储的媒介,同时需要依赖于libfastcommon。2.安装及配置: 1.下载FastDHT,下载地址:https://github.com/happyfi原创 2017-10-25 13:38:59 · 6715 阅读 · 7 评论 -
JVM内存模型
JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。由于Java原创 2017-10-25 13:40:18 · 296 阅读 · 0 评论 -
lombok插件的使用
摘抄同事的,哈哈。推荐一个Java插件 lombok, 用来简化Java编写,代替Getter 、Setter 、构造器 等编码。举例:一般编写实体类:public class Customer { private Integer id; // 主键 private String name; //名称 public Integer getId() { retu原创 2017-10-25 13:41:38 · 298 阅读 · 0 评论 -
多线程
以前看到的还不错,出处已经找不到了。如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“原创 2017-10-25 13:45:12 · 293 阅读 · 0 评论 -
rabbitmq配置
项目中使用的,肯定好用的,谁用谁知道RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用,具体特性还在验证中,待检验。由于项目需要,安装并配置了Ra原创 2017-10-25 13:47:22 · 487 阅读 · 0 评论 -
windows 10 上安装 Oracle11g的注意事项
基本在本机安装了3遍后,才一路通畅的一、 正确安装1、选择简体中文的64位安装版本。2、解压合并2个安装包。3、以管理员身份点击启动安装程序,否则后面后面会出现很多问题。4、如果是安装数据库软件,后安装并启动实例,需要在安装实例前,以管理员身份 点击 netca.bat (product/BIN目录下)安装监听程序。二、遇到坑后的处理原创 2017-10-25 13:51:34 · 363 阅读 · 0 评论 -
系统负载能力浅析
系统负载能力浅析互联网时代,高并发是一个老生常谈的话题。无论对于一个Web站点还是App应用,高峰时能承载的并发请求都是衡量一个系统性能的关键标志。像阿里双十一顶住了上亿的峰值请求、订单也确实体现了阿里的技术水平(当然有钱也是一个原因)。那么,何为系统负载能力?怎么衡量?相关因素有哪些?又如何优化呢?一. 衡量指标用什么来衡量一个系统的负载能力呢?有一个概念叫做每秒请求数(Requ转载 2017-10-26 11:01:04 · 796 阅读 · 0 评论 -
从Java视角理解系统结构(一)CPU上下文切换
在高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行总比单个线程要快, 就像多个人一起干活总比一个人干要快. 然而实际情况是, 多线程之间需要竞争IO设备, 或者竞争锁资源,导致往往执行速度还不如单个线程. 在这里有一个经常提及的概念就是: 上下文切换(Context Switch).上下文切换的精确定义可以参考: http://www.linfo.org/conte转载 2017-11-14 10:01:08 · 285 阅读 · 0 评论 -
spring-session实现分布式集群session的共享
前言 HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的。但是我们把应用搭建成分布式的集群,然后利用LVS或Nginx做负载均衡,那么来自同一用户的Http请求将有可能被分发到多个不同的应用中。那问题来了,如何保证不同的应用能够共享同一份session数据呢?最简单的想法,就是把session数据保存到内存以外的一个统一的地方,例如M转载 2017-11-06 16:16:03 · 424 阅读 · 0 评论 -
算法系列15天速成——第九天 队列
可能大家都知道,线性表的变种非常非常多,比如今天讲的“队列”,灰常有意思啊。 一:概念 队列是一个”先进先出“的线性表,牛X的名字就是“First in First Out(FIFO)”, 生活中有很多这样的场景,比如读书的时候去食堂打饭时的”排队“。当然我们拒绝插队。 二:存储结构 前几天也说过,转载 2017-10-31 15:23:09 · 230 阅读 · 1 评论 -
算法系列15天速成——第八天 线性表【下】
一:线性表的简单回顾 上一篇跟大家聊过“线性表"顺序存储,通过实验,大家也知道,如果我每次向顺序表的头部插入元素,都会引起痉挛,效率比较低下,第二点我们用顺序存储时,容易受到长度的限制,反之就会造成空间资源的浪费。 二:链表 对于顺序表存在的若干问题,链表都给出了相应的解决方案。1. 概念:其实链表的“每个节点”都包含一转载 2017-10-31 15:22:14 · 208 阅读 · 1 评论 -
Eclipse调试常用技巧
看到的不错的断点调试方法,有一些用过,有些调试了一下,还挺好使。1、 条件断点 断点大家都比较熟悉,在Eclipse Java 编辑区的行头双击就会得到一个断点,代码会运行到此处时停止。 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。 在断点处点击鼠标右键,选择最后一个"Breakpoint Properties"原创 2011-06-27 11:22:00 · 297 阅读 · 1 评论 -
java各种排序
以前查的java排序的算法,还可以,温习一下。 冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不转载 2011-06-27 12:00:00 · 472 阅读 · 0 评论 -
优化MyEclipse,遇到的myEclipse速度太慢的question
项目发布的太多,myEclipse跟老牛一样慢,没办法,上网找了一些解决的方法,还挺好使,大家可以试试。 1 、关闭MyEclipse的自动validation windows > perferences > myeclipse > validation 将Build下全部勾取消 如果你需要验证某个文件的时候,我们可以单独去验证它。方法原创 2011-06-27 11:38:00 · 389 阅读 · 0 评论 -
java调优经验谈
对于调优这个事情来说,一般就是三个过程:· 性能监控:问题没有发生,你并不知道你需要调优什么?此时需要一些系统、应用的监控工具来发现问题。· 性能分析:问题已经发生,但是你并不知道问题到底出在哪里。此时就需要使用工具、经验对系统、应用进行瓶颈分析,以求定位到问题原因。· 性能调优:经过上一步的分析定位到了问题所在,需要对问题进行解决,使用代码、原创 2017-10-27 10:15:16 · 802 阅读 · 0 评论 -
mybatis中代码自动生成gengrator
经过前文的叙述,各位看官是不是已经被Mybatis的强大功能给折服了呢?本文我们将介绍一个能够极大提升我们开发效率的插件:即代码自动生成。这里的代码自动生成包括,与数据库一一对应的实体对象,Mapper基本结构文件,与Mapper对应的基本接口文件。本文,我们只介绍这个插件的基本用法,更多内容,就请读者先自行学习吧。准备工作:a.操作系统 :win7 x64b.基本软件:MySQL,M转载 2017-10-27 10:26:01 · 728 阅读 · 0 评论 -
SpringMVC源码剖析(一)- 从抽象和接口说起
SpringMVC源码剖析(一)-从抽象和接口说起SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻。我试图通过对SpringMVC的设计思想和源码实现的剖析,从抽象意义上的设计层面和实现意义上的代码层面两个方面,逐一揭开SpringMVC神秘的面纱,本文的代码,都是基于Spring的转载 2017-10-27 10:28:23 · 226 阅读 · 0 评论 -
SpringMVC源码剖析(二)DispatcherServlet的前世今生
SpringMVC源码剖析(二)- DispatcherServlet的前世今生上一篇文章《SpringMVC源码剖析(一)-从抽象和接口说起》中,我介绍了一次典型的SpringMVC请求处理过程中,相继粉墨登场的各种核心类和接口。我刻意忽略了源码中的处理细节,只列出最简单的类甚至是接口类,目的就是让大家先从最高层次的抽象意义上来审视SpringMVC这个框架;我也刻意将SpringMVC和S转载 2017-10-27 10:29:22 · 205 阅读 · 0 评论 -
git上传本地项目
首先根据下图的操作创建一个仓库,这是干什么的?可以简单粗暴的理解为一个项目一个仓库就行了。创建成功后看到到下图,这图的那个地址先记住了,一会可是要用的呢,这是这个仓库的地址,我们项目要传到这里来。然后就去下载一个git,可以网上搜索git下载,会有很多教程,这里宝宝贴出官方的下载地址:https://git-scm.com/downloads/转载 2017-10-30 10:04:38 · 237 阅读 · 1 评论 -
git 本地上传,自带命令(2)
git中的注解,直接运行这些就完成了Command line instructionsGit global setup git config --global user.name "binxialiu"git config --global user.email "liubinxia@glorystone.net"Create a new reposi原创 2017-10-30 10:06:43 · 252 阅读 · 1 评论 -
Java后端工程师学习大纲
Java后端工程师技能树(http://www.rowkey.me/blog/2016/06/17/java-skill-tree/),其涵盖的技术点比较全面,并非一朝一夕能够全部覆盖到的。对于一些还没有入门或者刚刚入门的Java后端工程师,如果一下子需要学习如此多的知识,想必很多人会望而却步。本文截取了技能树中的一些关键技能点,并辅以学习资料和书籍推荐,做为Java后端工程师转载 2017-10-30 16:31:45 · 5522 阅读 · 1 评论 -
ELK安装
1 概述ELK套件(ELK stack)是指ElasticSearch、Logstash和Kibana三件套。这三个软件可以组成一套日志分析和监控工具。2 环境准备2.1 软件要求本文把ELK套件部署在一台CentOS单机上。具体的版本要求如下:操作系统版本:CentOS 6.6;JDK版本:1.8.0;Logstash版本:5.5.0;Elasti原创 2017-10-30 17:56:04 · 254 阅读 · 0 评论 -
算法系列15天速成——第二天 七大经典排序【中】
今天说的是选择排序,包括“直接选择排序”和“堆排序”。 话说上次“冒泡排序”被快排虐了,而且“快排”赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下。这不今天就来了两兄弟找快排算账。 1.直接选择排序: 先上图: 说实话,直接选择排序最类似于人的本能思想,比如把大小不一的玩具让三岁小毛孩对大小排个序,那小孩首先会在转载 2017-10-31 15:17:15 · 263 阅读 · 1 评论 -
算法系列15天速成——第三天 七大经典排序【下】
今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序。 直接插入排序: 这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后, 扑克梳理完毕,4条3,5条s,哇塞...... 回忆一下,俺们当时是怎么梳理的。 最左一张牌是3,第二张牌是5,第三张牌又是3,赶紧插到转载 2017-10-31 15:18:03 · 243 阅读 · 1 评论 -
算法系列15天速成——第四天 五大经典查找【上】
在我们的生活中,无处不存在着查找,比如找一下班里哪个mm最pl,猜一猜mm的芳龄....... 对的这些都是查找。 在我们的算法中,有一种叫做线性查找。分为:顺序查找。 折半查找。 查找有两种形态:分为:破坏性查找, 比如有一群mm,我猜她们的年龄,第一位猜到了是23+,此时这位mm已经从我脑海里面的mmlist中remov转载 2017-10-31 15:18:38 · 216 阅读 · 1 评论 -
算法系列15天速成——第五天 五大经典查找【中】
大家可否知道,其实查找中有一种O(1)的查找,即所谓的秒杀。 哈希查找: 对的,他就是哈希查找,说到哈希,大家肯定要提到哈希函数,呵呵,这东西已经在我们脑子里面形成固有思维了。大家一定要知道“哈希“中的对应关系。 比如说: ”5“是一个要保存的数,然后我丢给哈希函数,哈希函数给我返回一个”2",那么此时的”5“和“2”就建立一转载 2017-10-31 15:19:45 · 201 阅读 · 1 评论 -
算法系列15天速成——第六天 五大经典查找【下】
大家是否感觉到,树在数据结构中大行其道,什么领域都要沾一沾,碰一碰。就拿我们前几天学过的排序就用到了堆和今天讲的”二叉排序树“,所以偏激的说,掌握的树你就是牛人了。 今天就聊聊这个”五大经典查找“中的最后一个”二叉排序树“。 1. 概念: 其实很简单,若根节点有左子树,则左子树的所有节点都比根节点小。转载 2017-10-31 15:20:41 · 213 阅读 · 1 评论 -
算法系列15天速成——第七天 线性表【上】
人活在社会上不可能孤立,比如跟美女有着千丝万缕的关系,有的是一对一,有的是一对多,有的是多对多。哈哈,我们的数据也一样,存在这三种基本关系,用术语来说就是: 线性关系。 树形关系。 网状关系。 一: 线性表 1 概念: 线性表也就是关系户中最简单的一种关系,一对一。转载 2017-10-31 15:21:22 · 238 阅读 · 1 评论 -
java语法糖
Java中的语法糖语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身功能来说没有什么影响,只是为了方便程序员的开发,提高开发效率。说白了,语法糖就是对现有语法的一个封装。Java作为一种与平台无关的高级语言,当然也含有语法糖,这些语法糖并不被虚拟机所支持,在编译成字节码阶段就自动转换成简单常用语法。一般来说Java中的语法糖主要有以下几种: ...转载 2018-03-14 10:53:59 · 670 阅读 · 0 评论