
java
mllhxn
这个作者很懒,什么都没留下…
展开
-
log4j日志写入不同目录
包含所有日志 private static Logger logger = Logger.getLogger(xxx.class.getName());log4j.rootLogger=info,Alllog4j.appender.All=org.apache.log4j.ConsoleAppenderlog4j.appender.All.Target=System.outlog...原创 2018-12-13 09:58:01 · 917 阅读 · 1 评论 -
配置管理库typesafe.config
Typesafe的Config库,纯Java写成、零外部依赖、代码精简、功能灵活、API友好。支持Java properties、JSON、JSON超集格式HOCON以及环境变量。它也是Akka的配置管理库.纯java实现,无任何依赖 充分的测试 支持: Java properties, JSON, and a human-friendly JSON superset 可以合并各种格式的...转载 2018-07-31 16:52:56 · 797 阅读 · 0 评论 -
thrift 学习
mark转载 2018-04-02 22:53:57 · 143 阅读 · 0 评论 -
gradle 学习
makr转载 2018-04-02 22:51:28 · 159 阅读 · 0 评论 -
Java8之默认方法和静态接口方法
默认方法默认方法让我们能给我们的软件库的接口增加新的方法,并且能保证对使用这个接口的老版本代码的兼容性。下面通过一个简单的例子来深入理解下默认方法:1.一天,PM说我们的产品需要获取时间和日期。于是我们就写了一个设置和获取日期时间的接口类TimeClient。public interface TimeClient { void setTime(int hour, int minute, i...转载 2018-03-13 11:04:20 · 218 阅读 · 0 评论 -
Java8之方法引用
方法引用的形式方法引用的标准形式是:类名::方法名。(注意:只需要写方法名,不需要写括号)有以下四种形式的方法引用:类型 示例引用静态方法 ContainingClass::staticMethodName引用某个对象的实例方法containingObject::instanceMethodName引用某个类型的任意对象的实例方法ContainingType::methodName引用构造方法Cl...转载 2018-03-13 10:32:15 · 287 阅读 · 0 评论 -
内存池设计与实现
1. 内存池设计1.1 目的在给定的内存buffer上建立内存管理机制,根据用户需求从该buffer上分配内存或者将已经分配的内存释放回buffer中。1.2 要求尽量减少内存碎片,平均效率高于C语言的malloc和free。1.3 设计思路将buffer分为四部分,第1部分是mem_pool结构体;第2部分是内存映射表;第3部分是内存chunk结构转载 2017-04-05 14:44:22 · 838 阅读 · 0 评论 -
堆外内存(off-heap)、堆内内存(on-heap)
堆Heap是内存中动态分配对象存在的地方。如果使用new一个对象,它就被分配在堆内存上。这是相对于Stack,如果你有一个局部变量则它是位于Stack栈内存空间。一般情况下,Java中分配的非空对象都是由Java虚拟机的垃圾收集器管理的,也称为堆内内存(on-heap memory)。虚拟机会定期对垃圾内存进行回收,在某些特定的时间点,它会进行一次彻底的回收(full gc)。彻底转载 2017-03-29 18:22:44 · 1040 阅读 · 0 评论 -
mysql 修改密码错误
1.停止mysql数据库 /etc/init.d/mysqld stop 2.执行如下命令 mysqld_safe –user=mysql –skip-grant-tables –skip-networking & 3.使用root登录mysql数据库 mysql -u root mysql 4.更新root密码 mysql> UPDATE user SET Password=P原创 2016-09-18 11:48:45 · 592 阅读 · 0 评论 -
java SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
做日志管理最好的是Aop,有的人也喜欢用拦截器。都可以,在此我重点介绍我的实现方式。Aop有的人说拦截不到Controller。有的人说想拦AnnotationMethodHandlerAdapter截到Controller必须得拦截org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter。原创 2015-11-19 15:25:14 · 820 阅读 · 0 评论 -
spring 注解 事务
第一步:引入命名空间 ,在spring的配置文件中修改, beans根元素里多了三行,如下<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframew原创 2015-11-01 20:42:08 · 490 阅读 · 0 评论 -
spring 注解 aop
1 引入aop命名空间 xmlns:aop="http://www.springframework.org/schema/aop" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd2配置,打原创 2015-11-01 20:30:19 · 355 阅读 · 0 评论 -
spring 注解 自动装配
1 引入context命名空间(在Spring的配置文件中),配置文件如下:xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/sp原创 2015-11-01 20:03:59 · 495 阅读 · 0 评论 -
java排序算法实现
排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。 (2)、选择排序:简单选择排序、堆排序。 (3)、交换排序:冒泡排序、快速排序。 (4)、归并排序转载 2015-10-08 23:15:21 · 492 阅读 · 0 评论 -
Java的HashMap和HashTable
1. HashMap1) hashmap的数据结构 Hashmap是一个数组和链表的结合体(在数据结构称“链表散列“),如下图示: 当我们往hashmap中put元素的时候,先根据key的hash值得到这个元素在数组中的位置(即下标),然后就可以把这个元素放到对应的位置中了。如果这个元素所在的位子上已经存放有其他元素了,那么在同一个位子上的元素将以链表的形转载 2015-10-08 22:42:57 · 328 阅读 · 0 评论 -
关于Java String, StringBuilder, StringBuffer, Hashtable, HashMap的面试题
题目是一道简单的小程序,像下面这样:[java] view plaincopypublic class Test1 { public static void main(String args[]) { String s = new String("Hello"); System.out.println(s);转载 2015-10-08 22:40:57 · 383 阅读 · 0 评论 -
链表面试题Java实现【重要】
本文包含链表的以下内容: 1、单链表的创建和遍历 2、求单链表中节点的个数 3、查找单链表中的倒数第k个结点(剑指offer,题15) 4、查找单链表中的中间结点 5、合并两个有序的单链表,合并之后的链表依然有序【出现频率高】(剑指offer,题17) 6、单链表的反转【出现频率最高】(剑指offer,题16) 7、从尾到头打印转载 2015-10-08 22:27:34 · 599 阅读 · 1 评论 -
数据结构Java实现 ----循环链表、仿真链表
单向循环链表双向循环链表仿真链表 一、单向循环链表:1、概念:单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环。和单链表相比,循环单链表的长处是从链尾到链头比较方便。当要处理的数据元素序列具有环型结构特点时,适合于采用循环单链表。和单链表相同,循环单链表也有带头转载 2015-10-08 22:25:42 · 1340 阅读 · 1 评论 -
数据结构Java实现 --单向链表的插入和删除
文本主要内容:链表结构单链表代码实现单链表的效率分析一、链表结构: (物理存储结构上不连续,逻辑上连续;大小不固定) 概念: 链式存储结构是基于指针实现的。我们把一个数据元素和一个指针称为结点。 数据域:存数数据元素信息的域。 指针域:存储直接后继位置的域。 链式存储结构是用指针把相互直接关转载 2015-10-08 22:23:04 · 8329 阅读 · 4 评论 -
数据结构Java 线性表与顺序表
本节内容:线性结构线性表抽象数据类型顺序表顺序表应用 一、线性结构:如果一个数据元素序列满足:(1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素;(2)第一个数据元素没有前驱数据元素;(3)最后一个数据元素没有后继数据元素。则称这样的数据结构为线性结构。 二、线性表抽象数据类型:转载 2015-10-08 22:20:22 · 728 阅读 · 0 评论 -
Queue
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 注:什么叫线程安全?这个首先要明确。线程安全的类 ,指的是类内共享的转载 2015-07-17 20:20:50 · 435 阅读 · 0 评论 -
线程池
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。比较重要的几个类:ExecutorService真正的线程池接口。ScheduledExecutorService能和Timer/TimerTask类似,解决原创 2014-11-30 21:11:42 · 403 阅读 · 0 评论 -
线程同步辅助类
1:Semaphore一个经典的信号量计数器。一般被用来控制对共享资源同时访问线程数量的控制。 特殊情况下信号量设置为1,那么就类似互斥锁的功能。 package cn.crxy.concurrent;import java.sql.Time;import java.util.Random;import java.util.concurrent.原创 2014-11-30 19:10:43 · 451 阅读 · 0 评论 -
timer
java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。一个完整的Timer: java.util.Timer timer = new java.util.Timer(true); // true 说明这个原创 2014-11-30 14:10:39 · 368 阅读 · 0 评论 -
锁机制:synchronized、Lock、Condition
1:synchronizedsynchronized (lockObject) { // update object state}synchronized是不错,但它并不完美。它有一些功能性的限制:它无法中断一个正在等候获得锁的线程;也无法通过投票得到锁,如果不想等下去,也就没法得到锁;同步还要求锁的释放只能在与获得锁所在的堆栈帧相同的堆栈帧中进行,多数情况下,这没问题原创 2014-11-30 13:44:09 · 498 阅读 · 0 评论 -
正确理解ThreadLocal
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来原创 2014-11-30 13:23:10 · 417 阅读 · 0 评论 -
ThreadGroup详解
ThreadGroup详解,直接看示例代码,注释非常详细package com.landon.mavs.example.concurrent;import java.util.Arrays;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * * {@link java.lang.ThreadGroup}示原创 2014-11-30 13:16:08 · 3114 阅读 · 1 评论 -
简单FutureTask
FutureTask是一种可以取消的异步的计算任务。它的计算是通过Callable实现的,它等价于可以携带结果的Runnable,并且有三个状态:等待、运行和完成。完成包括所有计算以任意的方式结束,包括正常结束、取消和异常。Future有个get方法而获取结果只有在计算完成时获取,否则会一直阻塞直到任务转入完成状态,然后会返回结果或者抛出异常。FutureTask有下面几个重要的方原创 2014-11-30 13:00:56 · 488 阅读 · 0 评论 -
控制并发线程数的Semaphore
简介Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。很多年以来,我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待,所以前一百辆车会看到绿灯,可以开进这条马路,后面的车会看到红灯,不能驶入XX马路,但是如果前原创 2014-11-30 12:48:38 · 371 阅读 · 0 评论