java
棒棒糖棠
这个作者很懒,什么都没留下…
展开
-
java_(1)设计模式(单例模式)
/** * @description 单例设计模式 - 饿汉式 */public class MyHungrySingleton { private MyHungrySingleton hungrySingleton; private MyHungrySingleton() { //私有构造方法 } public MyHungrySingle...原创 2016-08-20 19:46:49 · 213 阅读 · 0 评论 -
CMS介绍和过程分析
CMS介绍: CMS(Concurrent Mark-Sweep)(并发 标记-清除)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。2.CMS过程 初始标记(STW ini...转载 2018-03-17 19:41:43 · 9402 阅读 · 1 评论 -
排序方法及时间复杂度
1、插入排序——直接插入排序、希尔排序 (1)直接插入排序思路:从第1号元素开始,每个元素依次与前面的元素做比较,小的排前面,这样当比较到最后一 个元素完即完成排序。 (2)希尔排序思路: 首先以d1(0 < d1< n-1 ) 为步长, 把数组A中n个元素分为d1个组,使下标距离为d1的元素在同一组中;接着在每个组内进行直接插入排序;接着在以d2为步长(d2...转载 2018-03-18 12:05:56 · 1007 阅读 · 0 评论 -
提高高并发下访问的效率的手段
常见的提高高并发下访问的效率的手段 首先要了解高并发的的瓶颈在哪里? 1、可能是服务器网络带宽不够 2.可能web线程连接数不够 3.可能数据库连接查询上不去。 根据不同的情况,解决思路也不同。 1. 像第一种情况可以增加网络带宽,DNS域名解析分发多台服务器。 2. 负载均衡,前置代理服务器nginx、apac...转载 2018-03-19 10:12:50 · 671 阅读 · 0 评论 -
算法_代码(字符串是否有效)
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。括号必须以正确的顺序关闭,”()” 和 “()[]{}” 是有效的但是 “(]” 和 “([)]” 不是。 -- 实现方法一 public boolean isValid(String s) { if (null == s || s...原创 2018-03-21 14:30:02 · 362 阅读 · 0 评论 -
transient 和 序列化 的用途及使用方法
1,transient的用途及使用方法1,用途 我们知道,当一个对象实现了Serilizable接口,这个对象就可以被序列化,我们不关心其内在的原理,只需要了解这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。而在开发过程中,我们可能要求:当对象被序列化时(写入字节序列到目标文件)时,有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏...转载 2018-03-25 16:06:57 · 293 阅读 · 0 评论 -
springMVC:HandlerInterceptor拦截器的使用及场景
1.使用背景 Web项目中需要判断http接口用户Post上来的数据是否合法,如果不合法要另做处理,用户Post上来的数据是Json形式的,我们用了@RequestBody标记自动将json形式的提交封装为一个Model对象,这样一来,我们就不能判断在自动封装过程中是否出现了异常,此时便想起了springMVC中的interceptor,用于处理请求之前,做一些处理,我们可以取消@Request...转载 2018-04-19 09:35:37 · 973 阅读 · 0 评论 -
单例模式 - 单例注册表与 Spring 实现单例剖析
在 Spring 中,单例模式是十分常用的,因为 Spring Bean 默认是单例模式,即只有一个共享的实例存在,所有对这个 Bean 的请求都会返回这个唯一的实例。 单例注册表 首先,我们先来写一个案例。这个案例中,我们通过 Map 缓存单例对象,实现单例注册表。值得注意的是,我采用了 ConcurrentHashMap 是出于线程安全的考量。public class Single...转载 2018-07-05 14:42:35 · 3979 阅读 · 0 评论 -
百元百鸡-经典算法
百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。分析:估计现在小学生都能手工推算这套题,只不过我们用计算机来推算,我们可以设公鸡为x,母鸡为y,小鸡为z,那么我们 可以得出如下的不定方程, x+y+z=...转载 2018-07-24 09:59:15 · 44002 阅读 · 10 评论 -
java 中的instanceof 的理解
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。用法: result = object instanceof class result = this instanceof class 参数: Result:布尔类型。 Object:必选项。...原创 2018-07-06 14:13:02 · 285 阅读 · 0 评论 -
AtomicInteger源码及CAS深度分析
1、原子类可以实现一些原子操作基于CAS 下面就以AtomicInteger为例。2、AtomicInteger在没有AtomicInteger之前,对于一个Integer的线程安全操作,是需要使用同步锁来实现的,当然现在也可以通过ReentrantLock来实现,但是最好最方便的实现方式是采用AtomicInteger。具体示例:package com.colle...转载 2018-07-30 16:24:51 · 310 阅读 · 0 评论 -
java_父类与子类 类型转换问题
public class TestObjectConvert {public static void main(String[] args) {test1();test2();}private static void test1() { Fruit fruit1 = new Fruit(); Apple apple1 = new Apple(); apple1 = (A...转载 2018-11-26 14:55:45 · 469 阅读 · 0 评论 -
权重随机选举算法
public class Weight {private TreeMap<Double, Integer> weightMap = new TreeMap<Double, Integer>();public WeightRandom(List<Person> list) {// if(Collections.) {System.out....原创 2019-03-03 20:41:07 · 685 阅读 · 0 评论 -
CMS GC日志和算法过程
一次CMS GC问题排查过程(理解原理+读懂GC日志)参考链接: http://iamzhongyong.iteye.com/blog/1989829转载 2018-03-17 17:13:05 · 748 阅读 · 0 评论 -
JVM 运行时内存使用情况监控_(1)
JVM 运行时内存使用情况监控1 . jmap : 内存占用情况查询 (位于”jdk_home/bin”目录下)2 . jstack : 进程所包含线程情况查询 (位于”jdk_home/bin”目录下)3 . jstat: 可以实时监测系统资源占用与jvm运行情况 (位于”jdk_home/bin”目录下)4 . jconsole 以GUI的方式更直观化呈现jvm进程的实时情况,...转载 2018-03-17 17:09:10 · 189 阅读 · 0 评论 -
GC回收算法
JVM常见垃圾回收算法引用计数器算法: 如果引用计数器为0则表示没有其它地方在引用它。 (缺点: 对象循环引用。对象A指向B,对象B反过来指向A,此时它们的引用计数器都不为0,则无法进行垃圾回收) 可达性分析算法: 有效地避免对象循环引用的情况,整个对象实例以一个树呈现,根节点是一个称为“GC Roots”(根搜索算法)的对象。(遍历完这棵树过后,未被标记的对象就会判断“已死”,...转载 2018-03-17 16:19:59 · 194 阅读 · 0 评论 -
java_(2)基础知识之形参作用域
java中形参作用域: 1): (传引用),执行作用域在执行完method方法后,形参不是立即释放内容空间 (类似:全部变量) 1. method(Map<String,BigDecimal> sMap); 2. method(Object object);2): 基本类型,以及一些封装类(BigDecimal,Integer)或者String 执行完method方法原创 2016-09-22 14:53:47 · 792 阅读 · 0 评论 -
java_(3)cxf搭建webservice
cxf搭建webservice步骤: 1. 准备的包: cxf-bundle-2.1.3.jar | wss4j-1.5.4.jar | axis-1.4.jar 2. 创建WebService 接口 (客户端) ,最重要的是:对接口需用@Webservice进行注解 3. 创建Webservice 的实现类 4. 为所发布的WebService指定角色() 5. WEB-IN原创 2016-09-25 20:32:00 · 197 阅读 · 0 评论 -
String 源码解析
/* 一个String对象str调用intern方法,会从常量池中返回一个内容和str相同的String对象,其地址在常量池中;如果池中不存在和str内容相同的String对象,则会在池中新生成一个内容和str相同的String对象,再返回这个对象,其地址也是在常量池中的。*/public native String intern();public static void main(Stri转载 2017-11-28 17:01:36 · 118 阅读 · 0 评论 -
jdk1.8 ArrayList源码详解
一、ArrayList简介 ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类。 该类封装了一个动态再分配的Object[]数组,每一个类对象都有一个capacity属性,表示它们所封装的Object[]数组的长度,当向ArrayList中添加元素时,该属性值会自动增加。如果想ArrayList中添加大量元素,可使用ensureCapacity方法一次性增加capac转载 2017-11-14 14:11:18 · 321 阅读 · 0 评论 -
JAVA_String之trim()源码
String中trim()源码解释public String trim() { int arg0 = this.value.length;//得到此字符串的长度 int arg1 = 0; //声明一个int 值,并赋值为0 char[] arg2; //声明一个char数组 for (arg2 = thi原创 2017-11-30 19:42:18 · 835 阅读 · 0 评论 -
eclipse 删除所有注释及空白行
(全局替换Ctrl+F中正则表达式)删除所有/* */ : /*{1,2}[\s\S]*?*/ (全局替换Ctrl+F中正则表达式)删除// : \/\/.* (全局替换Ctrl+F中正则表达式)删除空行: ^\s*\n 删除xml注释:原创 2017-11-30 20:27:25 · 233 阅读 · 0 评论 -
JAVA数值保留小数点后两位,千分位加","
BigDecimal usableAndFrozenMoney = new BigDecimal("100")// 若数值为0 -->此处有问题// java.text.DecimalFormat numberFormat = new java.text.DecimalFormat("#,###0.00");java.text.DecimalFormat numberFormat = n原创 2017-11-30 15:30:59 · 1851 阅读 · 0 评论 -
集合排序Collections.sort的用法
1. 重写Comparable中compareTo方法 或者 Comparator中compare方法 有两种方法 1.在代码块实现 2.在对象中重写compareTo方法1.1 在代码块实现 TestA是对象 1. Collections.sort(listA, new Comparator<TestA>() { @Overr...转载 2018-01-18 14:10:36 · 788 阅读 · 0 评论 -
JAVA面试总结
JAVA面试总结: http://www.cnblogs.com/fysola/p/6557625.htmlJ2EE问题总结:java常见问题: http://blog.csdn.net/rchm8519/article/details/41624381测试常见问题: http://www.51testing.com/html/49/240349-143936.html...转载 2018-03-01 15:53:13 · 107 阅读 · 0 评论 -
hashMap源码分析
hashMap源码分析:http://blog.csdn.net/carson_ho/article/details/79373026转载 2018-03-01 16:00:39 · 125 阅读 · 0 评论 -
Java 常用工具类 Collections 源码分析
Collections链接: http://blog.csdn.net/u011240877/article/details/78348578补充: 源码中用的Arrays.sort() 源码分析 http://blog.csdn.net/longlong2015/article/details/48179465转载 2018-03-01 16:08:57 · 100 阅读 · 0 评论 -
Java 基础巩固:内部类的字节码学习和实战使用场景
http://blog.csdn.net/u011240877/article/details/78682097转载 2018-03-09 17:08:01 · 115 阅读 · 0 评论 -
java开发,从不同方面提高系统性能
提高系统性能可以从几个方面考虑JVM虚拟机配置 JEE容器中运行的JVM参数配置参数的正确使用直接关系到整个系统的性能和处理能力 1.1.HeapSize 堆的大小 1.2.GarbageCollector 通过配置相关的参数进行Java中的垃圾收集器的4个算法(策略)进行使用。 1.3.StackSize ...转载 2018-03-16 14:50:42 · 305 阅读 · 0 评论 -
乐观锁和悲观锁的分析区别
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过...原创 2018-03-16 15:12:06 · 159 阅读 · 0 评论 -
JDK 1.7源码阅读笔记(四)集合类之Arrays 源码分析
一、前言 (1)Arrays包含用来操作数组(比如排序和搜索)的各种方法。Arrays提供的方法都是静态方法,Arrays的构造函数是私有的,也就是不能被实例化。 (2)包含一个允许将数组作为列表来查看的静态工厂。 (3)除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。 (4)涉及的排序算法简单介绍...转载 2018-03-02 17:32:51 · 167 阅读 · 0 评论 -
JVM调优
一、堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型设置: 1. java -Xmx3550m -...转载 2018-03-03 10:57:42 · 103 阅读 · 0 评论 -
java虚拟机的基本结构介绍
java虚拟机的基本结构:类加载子系统: 负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间java堆 : 虚拟机启动的时候建立,它是java程序最主要的内存工作区域。几乎所有的java对象实例都存放在java堆中。堆空间是所有线程共享的直接内存 : 在java堆外的、直接向系统申请的内存空间。通常访问直接内存的速度会优于java堆。因此出于性能的考虑...原创 2018-03-17 15:50:46 · 149 阅读 · 0 评论