- 博客(49)
- 资源 (6)
- 收藏
- 关注
原创 Java并发基础之CAS操作
什么是CASCAS是Compare And Swap的缩写,翻译成中文为比较并交换。java.util.concurrent包完全建立在CAS的基础之上,是由Java虚拟机提供的一种同步原语,实现了一种区别于synchronize同步锁的乐观锁。在CAS操作中,涉及到三个值:内存值A,旧的预期值B,要修改的新值C。当且仅当预期值B和内存值A相同时,将内存值A修改为C,否则什么都不做,一般C...
2018-03-18 23:47:56
756
原创 虚拟机的类加载机制
虚拟机的类加载机制虚拟机的类加载机制,是一个被谈烂了的话题,估计只要学过java的人,都对其印象深刻,这里只是对这一部分的知识做一个总结、备忘。 一个Class文件要想成为能被Java虚拟机直接使用的Java类型,需要经历一系列的过程,这个过程称之为虚拟机的类加载机制,加载Class文件的模块就是类加载器。虚拟机中类唯一性判断Java中的类是由类加载器加载到虚拟机中的...
2018-03-14 23:33:25
489
原创 Class文件结构分析
Class文件概述Class文件是一组以8字节为基础单位的二进制流,各个数据项目按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符根据Java虚拟机规范,Class文件采用一组类C结构来存储数据,只包含两种数据结构:无符号数和表。无符号数是基本数据类型,以u1,u2,u4,u8来分别表示1字节,2字节,4字节,8字节;表是由多个无符号数或者其他表构成的符合数据结构,习惯性的以”...
2018-03-04 15:20:29
587
原创 JVM内存区域划分
JVM运行时数据区也被称为JVM内存。JVM内存划分为几个部分:程序计数器、栈、堆、方法区1. 程序计数器程序计数器是线程私有的,记录当前线程所执行的字节码的行号指示器2. 栈(Stack)栈是线程私有的,按照栈中存储方法的不同,栈可以分为虚拟机栈(JVM Stack)和本地方法栈(Native Stack)。HotSopt实现中,本地方法栈和虚拟机栈合二为一虚拟机栈...
2018-02-27 23:01:16
471
原创 java I/O 系统
IO系统,是输入(Input)、输出(Output)系统的总称。对于程序语言设计者来说,设计一种好的IO系统是一项艰难的任务。因为IO系统真的很复杂: 1. 输入输出设备种类繁多,例如鼠标、键盘、文件、网络、控制台等 2. 输入输出方式繁多,例如:顺序输入输出、随机输入输出、带缓冲、按字符、按字节、按行等java作为一种较高层次的面向对象语言,其在设计IO系统的时候,初衷是为了屏蔽底层细节...
2018-02-25 20:43:42
480
原创 Java知识点梳理
JVM基本知识Java内存区域垃圾回收与内存分配策略虚拟机性能检测与故障处理工具虚拟机的类加载机制(ClassLoader双亲委派) 多态实现机制Java中的语法糖Java与线程Java基础知识 数据结构List(ArrayList,LinkedList)Set(HashSet,LinkedSet,TreeSet)Map(HashMap, HashTable,TreeMap)Java8Java知识...
2017-11-06 10:05:15
367
原创 logback配置
根节点ConfigurationConfiguration包含属性scan: 是否扫描配置文件的变化并重新加载,默认为truescanPeriod:扫描配置文件变化的时间间隔,只有当scan为true时生效。默认时间单位为毫秒,默认扫描间隔为1分钟。debug:是否打印logback内部的日志信息,可以实时打印logback运行状态。默认值为falseConfiguration包含四个常用的
2017-09-11 10:18:47
982
原创 Java中的ThreadPoolExecutors
ThreadPoolExecutors作为JDK中提供的线程池类,经常被用来处理大量异步任务。为了能够被广泛的使用,该类提供了很多参数和可扩展的钩子,用来改变线程池的行为。
2017-08-22 16:27:26
949
原创 使用Python快速搭建HTTP服务和文件共享服务
SimpleHTTPServerSimpleHTTPServer是Python自带的一个HTTP服务类,通过使用它,我们能够在任意平台(Window,Linux,MacOS)快速搭建一个HTTP服务和共享服务,只需要安装Python环境即可
2017-07-12 16:41:52
6897
原创 Mybatis知识点备忘
1.在Mapper中,如果需要生成嵌套的复杂对象,可以使用ResultMap,ResultMap中拥有这些属性<!-- Very Complex Result Map --><resultMap id="detailedBlogResultMap" type="Blog"> <constructor> <idArg column="blog_id" javaType="int"/>
2017-06-01 20:15:13
382
转载 Kafka 设计与原理详解
原文地址:http://blog.youkuaiyun.com/suifeng3051/article/details/48053965 基本是翻译的kafka官方文档一、Kafka简介本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料。转载请注明出处 : 本文链接1.1 背景历史当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工
2017-05-23 20:17:25
580
原创 curl常用用法
-v显示请求详细信息curl www.baidu.com -v-X 指定请求方式GET请求curl -X GET http://localhost:8080/search?data=123 # -X GET是可选的POST请求curl -X POST -d"data=123&key=456" http://localhost:8080/search -v 由于-d选项为使用POST方式向serve
2017-05-16 15:38:34
26102
原创 Google ProtoBuf快速入门
Protobuf是一个灵活的、高效的用于序列化数据的协议。相比较XML和JSON格式,protobuf更小、更快、更便捷。google protobuf是跨语言的,并且自带了一个编译器(protoc),只需要用它进行编译,可以编译成Java、python、C++、C#、Go等代码,然后就可以直接使用,不需要再写其他代码,自带有解析的代码。本篇文章将简要的介绍Java程序员如何使用Protobuf。安
2017-05-05 10:45:01
956
原创 JavaBean中布尔类型使用注意
JavaBean是一个标准,遵循标准的Bean是一个带有属性和getters/setters方法的Java类。JavaBean的定义很简单,但是还有有一些地方需要注意,例如Bean中含有boolean类型的属性。我们知道对于一个属性来说,如果其命名为test,那么其getter和setter方法一般为getTest()和setTest。但是如果test为一个布尔类型,那么其getter和setter
2017-04-26 19:59:53
9619
原创 Junit单元测试
Junit是干什么的我在这里就不讲解了。直接开始正题。常用的注解Junit中的注解很多,我们首先来看一下最常用的一些注解 - @Test:把一个方法标记未测试方法 - excepted:用来测试异常的,方法抛出该异常说明测试成功 - timeout:用来测试性能的,在规定的时间内完成,说明成功。注意单位是毫秒 - @Before:每个测试方法执行前自动调用一次
2017-04-20 20:34:09
418
原创 CGLIB(Code Generation Library)详解
什么是CGLIBCGLIB是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提取集合使用的另一种机制)。CGLIB作为一个开源项目,其代码托管在github,地址为:https://github.com/cglib/cglib为什么
2017-04-19 10:55:11
53142
18
原创 Java动态代理分析
Java动态代理机制的出现,使得Java开发人员不用手工编写代理类,只要简单地制定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分配到委托对象上反射执行,配置执行过程中,开发人员还可以进行修改代理设计模式代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息、过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。
2017-04-12 20:27:16
17540
4
原创 Servlet过滤器
Servlet过滤器 功能:可以动态地拦截请求和响应,以对请求和相应进行相应的处理常见的过滤器类型身份验证过滤器数据压缩过滤器加解密过滤器日志记录和审核过滤器字符编码过滤器配置过滤器通过Web.xml中的XML标签来声明,然后映射到应用程序中Servlet名称或者URL模式中。当Web容器启动Web应用程序时候,它会为web.xml中声明的每一个过滤器创建一个实例。<filter>
2017-04-11 20:53:30
436
原创 Servlet的生命周期
Servlet的生命周期,分为三个阶段:1.初始化2.响应请求3.终止在初始化阶段中,Servlet被容器的自定义Classloader加载,然后执行init方法。init方法在Servlet的整个生命周期中只执行一次。Servlet并不是在Web容器启动的时候就全部加载到内存中去,而是采用懒加载模式,在下面几种情况下才会进行加载:
2017-04-10 16:53:05
1462
原创 Java中的ThreadLocal对象
1.什么是ThreadLocal 根据JDK文档中的解释:ThreadLocal的作用是提供线程内的局部变量,这种变量在多线程环境下访问时能够保证各个线程里变量的独立性。 从这里可以看出,引入ThreadLocal的初衷是为了提供线程内的局部变量,而不是为了解决共享对象的多线程访问问题。实际上,ThreadLocal根本就不能解决共享对象的多线程访问问题。2.ThreadLocal实现...
2017-04-04 23:32:47
9801
原创 Java NIO 总结
NIO与原IO的区别原来的IO和NIO最大的区别在于数据打包和传输的方式。原来的IO是基于流的方式处理数据,而NIO是基于块的方式处理数据。NIO适用于使用少数线程处理大量连接的情况Java NIO的核心ChannelsBuffersSelectorsJava NIO通过事件驱动的方式监听消息,实际上是采用了Reactor模式。各部分的关系如图: Channel重要的实现
2017-03-28 23:38:27
381
原创 Java中的并发组件
JDK 1.5中的java.util.concurrnet包中引入了大量用来解决并发问题的组件,学习如何使用它们将会有助于你编写更加简单而且健壮、高效的代码。本文主要介绍如下:1.CountDownLatch 2. CycleBarrier 3. Semaphore
2017-03-22 20:16:13
1226
原创 Java内置集合类(持续更新)
Java内置集合类此文主要用来对Java内置的集合类进行回顾总结。PriorityQueue优先级队列内部基于一个优先堆。优先级队列中的元素要么按照natural ordering排序,要么在创建的时候指定一个Comparator比较器优先级队列本身是没有大小限制的,内部通过使用一个数组来维护一个最小堆(堆顶是最小的元素)不保证线程安全,如果需要线程安全的优先级队列,需要使
2017-03-20 19:41:44
989
原创 java并发之AbstractQueuedSynchronizer
我们知道,在进行并发编程的时候多多少少总会涉及到对共享资源的并发处理,这个时候就需要使用同步工具来控制线程对资源的并发访问了。我们可以使用synchronized关键字来控制同步,也可以从java.util.concurrent.locks包下的众多lock中挑选一款合适的锁来进行控制。很简单是吗?但是你知道这些锁的内部实现原理是什么样的吗?请听我一一道来,文章很长,相信爱学习的你一定会耐心的看完...
2017-03-17 00:11:31
581
原创 谈谈Java中的语法糖
语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身功能来说没有什么影响,只是为了方便程序员的开发,提高开发效率。说白了,语法糖就是对现有语法的一个封装。
2017-02-11 20:43:01
22504
11
原创 使用javascript以post的方式向服务器提交数据
关于Get方式和Post方式提交数据的区别,这里就不多说了。这里主要介绍使用javascript以post的方式向服务器提交数据。可能有人会说:“为什么要使用javascript来提交数据,而不是使用html中的表单来submit呢”?这是因为使用form表单的方式进行提交的前提是:数据全部都放在表单内。但是通常情况下,需要提交的数据经常分散在网页的各个角落,这个时候用表单的方式进行提交就
2016-02-25 15:30:18
12981
1
转载 几个常用的操作系统进程调度算法
一、先来先服务和短作业(进程)优先调度算法1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入
2015-03-08 10:34:37
803
转载 C++学习之虚函数表解析
转自:http://blog.youkuaiyun.com/haoel/article/details/1948051/前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现
2015-03-06 17:40:34
424
转载 TCP拥塞控制算法
为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno
2014-12-11 22:26:21
663
转载 实际用户ID,有效用户ID及设置用户ID详解
实际用户ID,有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解。今天好好区分了一下这几个概念并总结如下。说白了这几个UID引出都是为了系统的权限管理。 下面分别用RUID, EUID,SUID来表示实际用户ID,有效用户ID,设置用户ID。另外用户ID是个整型数,为了说
2014-07-15 21:06:32
3471
原创 C陷阱与缺陷之语法陷阱
2.1理解函数声明任何C变量的声明都由两部分组成:类型以及一组类似表达式的声明符号。例如float f;这个声明的含义是:当对其求值时,表达式f和g的类型为浮点数类。因为声明符与表达式的相似,所以我们也可以在声明符中任意使用括号:float ((f))这个声明的含义是:当对其求值时,W)的类型为浮点类型,由此可以推知,f也是浮点类型。类似的,float *g
2014-06-10 19:10:58
870
原创 C陷阱与缺陷之词法陷阱
该文章及后续文章均为阅读《C陷阱和缺陷》后的读数笔记,方便以后回顾C陷阱和缺陷电子版图书下载地址:点击打开链接第一章词法陷阱1.1 = 不同于 ==在C语言中,符号=作为赋值运算符,符号==作为比较运算符。一般而言,赋值运算相对比较运算出现得更频繁,因此字符数较少的符号=就被赋予更常用的含义——赋值操作。在编写程序的时候,注意不要将赋值操作写完比较相等的操作,也不要将比较操作写为赋值操作。 1.2 & 和 | 不同于 && 和 ||在C语言中,&和|为按位运算符,它们对操作数的处理方式是将其视
2014-06-05 10:22:57
948
原创 ebtables
SYNOPSISebtables [-t table ] -[ACDI] chain rule specification [match extensions] [watcher extensions] targetebtables [-t table ] -P chain ACCEPT | DROP | RETURNebtables [-t table ] -F [chain]ebtables [-t table ] -Z [chain]ebtables [-t table ] -L [-Z]
2014-06-03 15:12:00
3032
转载 关于netfilter钩子 hook值的问题
Hook 调 用的时机NF_IP_PRE_ROUTING 在完整性校验之后,选路确定之前NF_IP_LOCAL_IN 在选路确定之后,且数 据包的目的是本地主机NF_IP_FORWARD 目的地是其它主机地数据 包NF_IP_LOCAL_OUT 来自本机进程的数据 包在其离开本地主机的过程中NF_IP
2014-05-19 19:54:14
934
转载 Linux网络协议栈之数据包处理过程(非技术人员勿看)
转载备忘,原文地址:http://blog.chinaunix.net/uid-16867579-id-2857166.html
2014-05-18 21:24:07
2593
转载 linux平台下防火墙iptables原理
iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如
2014-04-29 17:18:04
989
转载 strdup函数的用法
函数名: strdup功 能: 将串拷贝到新建的位置处用 法: char *strdup(char *str); 这个函数在linux的man手册里解释为:The strdup() function returns a pointer toa new string which is aduplicate of the string s. Memo
2014-04-28 21:11:02
1714
原创 不同主机下的xen虚拟机之间互ping
Xen下网桥配置主体环境: 主机node-masternode1Ip地址192.168.1.24192.168.1.25Xen虚拟机ip192.168.1.26192.168.1.27 目的:使两台主机上的虚拟机192.168.1.26
2014-04-17 15:03:01
1832
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人