JAVA技术
文章平均质量分 65
colie_li
coding
展开
-
Java字符串模板替换(模板渲染)
java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串。下面介绍4种替换模板方式:1、使用内置String.formatString message = String.format("您好%s,晚上好!您目前余额:%.2f元,积分:%d", "张三", 10.155, 10);System.out.println(message);//您好张三,晚上好!您目前余额:10.16元,积分:102、使用内置MessageFormat.转载 2021-06-17 21:26:02 · 7602 阅读 · 1 评论 -
Vertx - Future.compose
1.vertx中的Future与java原生中不同,二者都有封装结果的功能,但是vertx中为了避免await阻塞event loop线程,导致不能及时响应的问题.通过在Future中定义回调Handler来解决这个问题.demo1: private static void asynchronousMethod(Future<String> f){ f.complete("haha"); } public static void ma.转载 2021-02-01 01:07:42 · 1606 阅读 · 0 评论 -
NIO 与零拷贝
零拷贝介绍零拷贝是网络编程的关键, 很多性能优化都需要零拷贝。 在 Java程序中, 常用的零拷贝方式有m(memory)map[内存映射] 和 sendFile。它们在OS中又是怎样的设计? NIO中如何使用零拷贝?NIO 与 传统IO对比 传统IO流程示意图 user context: 用户态 kernel context: 内核态 User space: 用户空间 Kernel space: 内核空间 Syscall read: 系统调用读取 Syscal转载 2020-09-20 01:27:00 · 243 阅读 · 0 评论 -
对于骨架类(AbstractInterface)的理解
通过对Java源码的学习我们会发现,AbstractCollection实现了Collection接口,List接口继承自Collection接口,AbstractList又继承了AbstractCollection类,并且实现了List接口。诸如此种的还有AbstarctSet,AbstarctList,AbstarctMap,都是继承了一个抽象类,又实现了一个上层接口,对此感到不解。后来在effective Java上看到,这样做的好处:痛过对你导出的每个重要接口都提供一个抽象...转载 2020-08-30 22:13:22 · 404 阅读 · 0 评论 -
并发编程之Disruptor框架介绍和高阶运用
1.Disruptor是什么1.1技术背景LMAX是在英国注册并受到FCA监管(监管号码为509778)的外汇黄金交易所, LMAX架构是LMAX内部研发并应用到交易系统的一种技术。它之所以引起人们的关注,是因为它是一个非常高性能系统,这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,官方号称它能够在一个线程里每秒处理6百万订单.一个仅仅部署在4台服务器上的服务,每秒向D...转载 2020-04-12 00:58:05 · 1054 阅读 · 0 评论 -
手机通过Charles用线上域名访问PC本地项目
最近调试微信公众号,由于微信授权需要线上正式环境的域名,笔者想把手机公众号网页重定向到PC本地localhost调试。该方法通过Charles代理转发,适用所有需要域名重定向的场景,例如手机通过在线域名查看pc本地项目,微信开发者工具调试公众号等。先开启本地服务,如果是vue项目,直接运行npmstart就好了。打开Charles(下载地址),点击Tools >...转载 2020-04-07 02:20:52 · 1696 阅读 · 0 评论 -
Charles抓包(iOS的http/https请求)
Charles安装 HTTP抓包 HTTPS抓包1. Charles安装官网下载安装Charles:https://www.charlesproxy.com/download/2. HTTP抓包(1)查看电脑IP地址(2)设置手机HTTP代理手机连上电脑,点击“设置->无线局域网->连接的WiFi”,设置HTTP代理:服务器为电脑IP地址:如192....转载 2020-04-07 01:55:39 · 1119 阅读 · 0 评论 -
四层、七层负载均衡的区别
一、什么是负载均衡(Load balancing)在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入www.taobao...转载 2019-11-24 02:31:55 · 271 阅读 · 1 评论 -
什么是列式存储数据库
列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩/解压算法。传统的行存储和列存储的区别1、数据是按行存储的2、没有索引的查询...转载 2019-11-11 11:57:27 · 2469 阅读 · 0 评论 -
Java多核线程笔记-volatile的原理与技巧
开发者在线 Builder.com.cn 更新时间:2007-11-07作者:baocl 来源:赛迪网技术社区本文关键词: 原理 volatile JAVA volatile, 用更低的代价替代同步为什么使用volatile比同步代价更低?同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能. 而volatile的覆盖范围仅仅变量级别的.转载 2012-02-21 17:48:38 · 458 阅读 · 0 评论 -
审查Java代码的十一种常见错误
审查Java代码的十一种常见错误代码审查是消灭Bug最重要的方法之一,这些审查在大多数时候都特别奏效。由于代码审查本身所针对的对象,就是俯瞰整个代码在测试过程中的问题和Bug。并且,代码审查对消除一些特别细节的错误大有裨益,尤其是那些能够容易在阅读代码的时候发现的错误,这些错误往往不容易通过机器上的测试识别出来。本文就常见的Java代码中容易出现的问题提出一些建设性建议,以便您转载 2011-07-15 09:02:36 · 527 阅读 · 0 评论 -
java类的生命周期
好长的一段时间,对于类的生命周期十分模糊,现在经过一段时间的学习,对于类的生命周期的理解已经变得清晰,类的生命周期如下所示: 类的装载就是通过类加载器把.class二进制文件转入jvm的方法区,并在堆区创建描述该类的java.lang.Class对象,用来封装数据。如果要获取这个Class对象可以通过实例的getClass()或者直接通过的类的静态方法.class。JVM规范允许预转载 2012-02-21 17:42:13 · 548 阅读 · 0 评论 -
常用正则表达式(包括中文匹配)
常用正则表达式(包括中文匹配) 正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。匹配中文字符的正则表达式: [\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){re转载 2012-02-21 17:50:08 · 2394 阅读 · 0 评论 -
关于JAVA的路径
对应FILE, /为绝对路径, 无/ 相对路径,相对于JAVA项目本身对应CLASSLOADER, /为绝对路径, 无/相对路径,为bin的PATH;对应getResouceAsStream, /为绝对路径,起点是bin, 无/为Test.class(为调用者)所在包。 URL url= Test.class.getResource("1.txt");转载 2012-02-21 17:46:00 · 368 阅读 · 0 评论 -
JAVA正则表达式高级用法(分组与捕获)
正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了。这里主要讲解一下在JAVA中实现了的正则的高级用法-分组与捕获。 对于要重复单个字符,非常简单,直接在字符后卖弄加上限定符即可,例如 a+ 表示匹配1个或一个以上的a,a?表示匹配0个或1个a。这些限定符如下所示: X?X,一次或一次也没有转载 2012-08-20 22:11:21 · 461 阅读 · 0 评论 -
java学习的三十个目标
本文将告诉你学习Java需要达到的30个目标,希望能够对你的学习有所帮助。对比一下自己,你已经掌握了这30条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该十分了解UML,尤其是class,object,interaction以及statediagrams。 2.你需要学习JAVA语言的基础知识以及它的核心类库转载 2013-08-06 15:54:18 · 911 阅读 · 1 评论 -
Java 多线程(五) 多线程的同步
为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。 解决方法:在线程使用一个资源时为其加锁即可。 访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。 程序实例 用一个取钱的程序例子,来说明为什么需要引入同步。 在使用同步机制前,整体原创 2014-11-24 11:40:56 · 845 阅读 · 0 评论 -
Java 反射机制
基本概念 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? 答案是肯定的。 这种动态获取类的信息以及动态调用对象的方法的功能来自于Java语言的反射(Reflection)机制。 Java反射机制主要提供了以下功能: 1.在运行时判断任意一个对象所属的类。 2转载 2014-11-24 15:10:31 · 915 阅读 · 0 评论 -
Java中的反射机制(二) 一个利用反射进行对象拷贝的例子
如下例程ReflectTester类进一步演示了Reflection API的基本使用方法。 ReflectTester类有一个copy(Object object)方法,这个方法能够创建一个和参数object同样类型的对象,然后把object对象中的所有属性拷贝到新建的对象中,并将它返回。 这个例子只能复制简单的类,假定类的每个属性都有public类型的getXXX()和se转载 2014-11-24 15:14:10 · 711 阅读 · 0 评论 -
hashCode与equals的区别与联系
一、equals方法的作用 1、默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。2 、要是类中覆盖了equals方法,那么就要根据具体的代码来确定equals方法的作用了,覆盖后一般都是通过对象的内容是否相等来判断对象是否相转载 2015-01-06 15:04:46 · 514 阅读 · 0 评论 -
Iterator和ListIterator
Iterator和ListIterator主要区别有:一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。二、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Itera转载 2015-01-07 21:03:29 · 555 阅读 · 0 评论 -
俗名猴子选大王,学名约瑟夫环
有n 个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。public class Baochu { public static void main(String[] args) { Res(10,3); } public static void Res(int n,int flag){ List li原创 2015-01-07 21:02:38 · 928 阅读 · 0 评论 -
memcachedDemo
package com.bennytian.memcached;002 003import java.io.Serializable;004import java.util.Date;005转载 2014-12-21 00:27:04 · 542 阅读 · 0 评论 -
Java关键字final、static使用总结
一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 fi转载 2014-12-19 20:55:50 · 496 阅读 · 0 评论 -
HashMap的底层实现
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本转载 2015-01-09 20:41:57 · 566 阅读 · 0 评论 -
Java堆.栈和常量池
Java内存分配:1. 寄存器:我们在程序中无法控制2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中3. 堆:存放用new产生的数据4. 静态域:存放在对象中用static定义的静态成员5. 常量池:存放常量6. 非RAM存储:硬盘等永久存储空间---------------------------------------------转载 2014-12-22 19:50:36 · 541 阅读 · 0 评论 -
ExcelUtils简单上手
实ExcelUtils的User's Guide已经相当清楚了,我就权当体验中文记录一下了。1. 首先在项目classpath加入以下五个jar包:excelutils.jarpoi-2.5.1.jarcommons-logging.jarcommons-digester.jarcommons-beanutils.jar2. 建立一个Excel模板(demo.xls),如下图(转载 2014-12-24 16:08:48 · 1578 阅读 · 2 评论 -
Memcache知识点梳理
Memcached概念: Memcached是一个免费开源的,高性能的,具有分布式对象的缓存系统,它可以用来保存一些经常存取的对象或数据,保存的数据像一张巨大的HASH表,该表以Key-value对的方式存在内存中。官网下载地址: http://www.memcached.org/运行环境: linux,BSD,windows都可跑协议理论:http://code.sixap转载 2014-12-26 15:56:52 · 553 阅读 · 0 评论 -
Java高质量代码之 — 泛型与反射
Java高质量代码之 — 泛型与反射 博客分类:Javajava读书前言:由于上一个星期工作繁忙,利用上下班和晚上睡前空余的时间拜读了秦小波老师的《改善Java程序的151建议》,感觉廓然开朗,注意到了很多平时在编写代码中并不会注意的问题,甚至感觉自己对Java只是略懂皮毛,不足以登大雅之堂,特此与读者分享读书笔记,以下内容摘自《改善Jav转载 2014-12-26 16:22:23 · 498 阅读 · 0 评论 -
maven 各类问题汇总
自己在用的时候遇到了不少问题,为了忘记的时候随时来查,现在汇总下。全部来自网络上查找的,全部是转载。首先是转载链接http://blog.csdn.net/wangxifeng920/article/details/6332579http://blog.csdn.net/liu_xing_hui/article/details/7552632http://b转载 2014-12-11 22:16:17 · 545 阅读 · 0 评论 -
java线程池
构建一个线程池,可以在池中创建对个线程,用这个线程池去处理事情,会根据实际情况有线程池中的线程分配处理。public class TestThreadPool { public static void main(String[] args) { //ExecutorService ec = Executors.newFixedThreadPool(3);//固定线程数 //E原创 2015-01-17 17:03:32 · 629 阅读 · 0 评论 -
Java I/O系统
File类 File类的直接父类是Object类。 一个File类的对象,表示了磁盘上的文件或目录。 File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作。因为不同的系统平台对文件路径的描述不尽相同,所以为了做到平台无关,在Java语言中,使用抽象路径等概念。Java自动进行不同系统平台的文件路径描述与抽象文件路径之间的转换。 File类直接处理文转载 2014-12-15 10:47:26 · 453 阅读 · 0 评论 -
用递归实现目录删除和树形目录展示
递归 所谓递归(Recursion),就是方法调用自身。 对于递归来说,一定有一个出口,让递归结束。这样才能保证不出现死循环。 关于递归,比较简单且典型的例子是计算阶乘、计算斐波那契数列等。 本文是在学习Java的File类时遇到的两个实际问题,一个是文件删除,另一个是将文件目录用树形结构显示(利用缩进),这两个问题都可以用递归解决。 解决删转载 2014-12-15 10:51:11 · 1751 阅读 · 0 评论 -
深入解析hashcode,hashMap源码
hashCode 的常规协定是: 1.在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。 2. 如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hash转载 2015-03-17 18:46:54 · 760 阅读 · 0 评论 -
Hashtable和HashMap的区别
1、两者继承的直接父类不同:Hashtable继承自Dictiionary,HashMap继承自AbstractMap,这一区别可以通过两者的源码明显地看到:public class HashMap extends AbstractMap implements Map, Cloneable, Serializablepublic class Hashtable ex转载 2015-04-14 12:01:26 · 474 阅读 · 0 评论 -
comparator接口与Comparable接口的区别
1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用C转载 2015-04-09 14:50:32 · 472 阅读 · 0 评论 -
Eclipse中10个最有用的快捷键组合
Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如a转载 2015-05-10 22:47:49 · 416 阅读 · 0 评论 -
图解TCP-IP协议
本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。图1 TCP 三次握手四次挥手图1主要包括三部分:建立连接、传输数据、断开连接。1)建立TCP连接很简单,通过三次握手便可建立连接。2)建立好连接后,开始传输数据。TCP数据传输牵涉到的概念很多:超时重传、快速重传转载 2015-05-04 21:32:26 · 719 阅读 · 0 评论 -
Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:PermanentGeneration space(永久保存区域)、He转载 2015-05-07 10:28:44 · 5792 阅读 · 0 评论 -
POI导出EXCEL
POI创建冻结窗口可以按照如下设置创建冻结窗口。 sheet1.createFreezePane( 3, 2, 3, 2 ); 前两个参数是你要用来拆分的列数和行数。后两个参数是下面窗口的可见象限,其中第三个参数是右边区域可见的左边列数,第四个参数是下面区域可见的首行。// 冻结第一行sheet1.createFreezePane(转载 2015-06-21 23:14:47 · 1955 阅读 · 0 评论