摘要: 在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa阅读全文
posted @ 2017-08-19 15:56 PointNet 阅读(3) 评论(0) 编辑
摘要: 很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是某些字段没有创建索引,或者是组合索引中字段的顺序与查询语句中字段的顺序不符。看下面的例子:假设有一张订单表(orders),包含order_id和product_id二个字段。一共有31条数据。符合下阅读全文
posted @ 2017-08-19 12:46 PointNet 阅读(3) 评论(0) 编辑
摘要: 第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (i阅读全文
posted @ 2017-08-19 09:02 PointNet 阅读(3) 评论(0) 编辑
摘要: 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) ,(PS:以前忽略了)。 估计学过Unix开发但是没有细致学习Java的同学们会疑惑了,操作系统里面是没有所谓的阅读全文
posted @ 2017-07-10 13:20 PointNet 阅读(28) 评论(0) 编辑
摘要: public enum States { AK("AK"), AL("AL"), AR("AR"), AZ("AZ"), CA("CA"), CO("CO"), CT("CT"), DC("DC"), DE("DE"), FL("FL"), GA("GA"), HI("HI"), IA("IA"),阅读全文
posted @ 2017-06-12 14:04 PointNet 阅读(38) 评论(0) 编辑
摘要: ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该阅读全文
posted @ 2017-05-08 19:16 PointNet 阅读(66) 评论(0) 编辑
摘要: 一、zookeeper 1、实现原理: 基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来自于IBM网站)。大致思想即为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节阅读全文
posted @ 2017-05-05 19:02 PointNet 阅读(71) 评论(0) 编辑
摘要: 创建一个多列索引:CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX name (last_name,first阅读全文
posted @ 2017-04-05 17:30 PointNet 阅读(73) 评论(0) 编辑
摘要: 首先,@value需要参数,这里参数可以是两种形式:@Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}");其次,下面我们来看看如何使用这两形式,在配置上有什么区别:1、@Value("#{configProperti阅读全文
posted @ 2017-03-30 18:57 PointNet 阅读(153) 评论(0) 编辑
摘要: 下面是自定义泛型方法的练习: 总结: 编译起判断泛型方法的实际类型参数的过程称为类型推断,类型推断是相对于知觉推断的,其实现方法是一个非常复杂的过程。 根据调用泛型方法时实际传递的参数类型或返回值的类型来推断,具体的规则如下: 当某个类型变量只在整个参数列表中所有参数和返回值中的一处被应用了,那么根阅读全文
posted @ 2017-03-30 10:32 PointNet 阅读(588) 评论(0) 编辑
摘要: JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功阅读全文
posted @ 2017-03-20 11:20 PointNet 阅读(73) 评论(0) 编辑
摘要: 1、配置tomcat-users.xml文件 在tomcat安装目录下找到tomcat-users.xml文件。该文件路径为【tomcat安装根目录】/conf/ 修改文件内容,增加下列内容: [html] view plaincopy <tomcat-users> <role rolename="阅读全文
posted @ 2017-03-18 17:35 PointNet 阅读(354) 评论(0) 编辑
摘要: 导读 首先说说自己为啥要用maven管理项目,一个直接的原因是:我在自己电脑上开发web项目,每次部署到服务器上时都要经历如下步骤: 每次都这些步骤,非常烦人,而用maven来管理就不需要这些步骤啦,直接在Eclipse里配置maven插件,然后使用maven来自动部署项目,关于怎么自动部署可网上很阅读全文
posted @ 2017-03-17 18:55 PointNet 阅读(136) 评论(0) 编辑
摘要: http://stackoverflow.com/questions/5322574/how-can-i-set-chrome-as-default-external-browser-in-eclipse-for-mac 这篇文章说得很好! 开始用得是这个老外的方法,但后来屡试不爽! 运行后没有反应阅读全文
posted @ 2017-03-17 18:23 PointNet 阅读(118) 评论(0) 编辑
摘要: 本文档结合 SpringMVC、 Mybatis、 MySQL,说明如何实现一个简单的数据库单表 CRUD操作。开发工具使用集成了spring mvc的eclipse(Spring Tool Suite,简称STS)。 基础环境说明 Mac OS X 10.11.5 jre version 1.8.阅读全文
posted @ 2017-03-16 15:01 PointNet 阅读(305) 评论(0) 编辑
摘要: 这两天需要用到MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件。这样可以省去很多的功夫,将生成的代码copy阅读全文
posted @ 2017-03-15 18:15 PointNet 阅读(115) 评论(0) 编辑
摘要: InnoDB引擎的索引和存储结构 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。 1.MySQL主要存储引擎的区别 阅读全文
posted @ 2017-03-13 22:08 PointNet 阅读(24) 评论(0) 编辑
摘要: 一、前言 非关系型数据库(NoSQL = Not Only SQL)的产品非常多,常见的有Memcached、Redis、MongoDB等优秀开源项目,相关概念和资料网上也非常丰富,不再重复描述,本文主要引入Memcached和Redis与淘宝开源Tair分布式存储进行对比测试,由于各自适用场景不同阅读全文
posted @ 2017-03-12 10:22 PointNet 阅读(52) 评论(0) 编辑
摘要: 最近看了下zookeeper的源码,先整理下leader选举机制 先看几个关键数据结构和函数 服务可能处于的状态,从名字应该很好理解 选票参数,还有Notification,参数也都差不多 选票的比较逻辑也很简单,依次比较几个关键字段 选举流程 1. 发起投票: 首先投票给自己,然后给所有Accep阅读全文
posted @ 2017-03-11 16:12 PointNet 阅读(62) 评论(0) 编辑
摘要: 本文假设你已经具有一定分布式计算的基础知识。你将在第一部分看到以下内容: ZooKeeper数据模型 ZooKeeper Sessions ZooKeeper Watches 一致性保证(Consistency Guarantees) ZooKeeper数据模型 ZooKeeper Sessions阅读全文
posted @ 2017-03-11 10:51 PointNet 阅读(145) 评论(0) 编辑
摘要: 初识zookeeper(一)之zookeeper的安装及配置 1、简要介绍 zookeeper是一个分布式的应用程序协调服务,是Hadoop和Hbase的重要组件,是一个树型的目录服务,支持变更推送。除此还可以用作dubbo服务的注册中心。 2、安装 2.1 下载安装 2.2 配置 2.2.1 单点阅读全文
posted @ 2017-03-10 22:45 PointNet 阅读(268) 评论(0) 编辑
摘要: 线程间的相互作用 线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务。 Object类中相关的方法有两个notify方法和三个wait方法: http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html 因为wait和not阅读全文
posted @ 2017-03-10 14:09 PointNet 阅读(25) 评论(0) 编辑
摘要: 问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行“随机读写”的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? 4.partitions设计的目的的根本原因是什么? 一、入门 1、简介 Kafka is a d阅读全文
posted @ 2017-03-10 11:26 PointNet 阅读(28) 评论(0) 编辑
摘要: ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些阅读全文
posted @ 2017-03-09 22:01 PointNet 阅读(41) 评论(0) 编辑
摘要: 简介 Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。 Apache Kafka与传统消息系统相比,有以下不同: 它被设计为一个分布式系统,易于阅读全文
posted @ 2017-03-09 16:31 PointNet 阅读(21) 评论(0) 编辑
摘要: 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务阅读全文
posted @ 2017-03-09 14:08 PointNet 阅读(20) 评论(0) 编辑
摘要: 同步的方法: 一、同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会阅读全文
posted @ 2017-03-08 18:40 PointNet 阅读(76) 评论(0) 编辑
摘要: String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等阅读全文
posted @ 2017-03-07 19:24 PointNet 阅读(453) 评论(0) 编辑
摘要: Java中,是否可以继承String类?为什么? 答案: 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。 1 1 详细解析: 1. 关于final修饰符 参考文章: 浅析Java中的final关键字 根据程序上下文环境,Java关键字final阅读全文
posted @ 2017-03-07 19:19 PointNet 阅读(199) 评论(0) 编辑
摘要: Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newS阅读全文
posted @ 2017-03-07 15:46 PointNet 阅读(17) 评论(0) 编辑