- 博客(14)
- 资源 (1)
- 收藏
- 关注
转载 spring优秀工具类盘点
文件资源操作文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等。我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来说,JDK 的这些操作类所提供的方法过于底层,直接使用它们进行文件操作不但程序编写复杂而且容易产生错误。相比于 JDK 的 File,Spring 的 Resource 接口(资源概念的描述接口
2017-09-23 10:57:43 382
转载 Java类加载机制详解
一、类加载器类加载器(ClassLoader),顾名思义,即加载类的东西。在我们使用一个类之前,JVM需要先将该类的字节码文件(.class文件)从磁盘、网络或其他来源加载到内存中,并对字节码进行解析生成对应的Class对象,这就是类加载器的功能。我们可以利用类加载器,实现类的动态加载。二、类的加载机制在Java中,采用双亲委派机制来实现类的加载。那什么是双亲委派机制?在J
2017-09-21 20:57:10 217
原创 从HTTP到HTTPS再到HSTS的演化
近些年,随着域名劫持、信息泄漏等网络安全事件的频繁发生,网站安全也变得越来越重要,也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变。HTTPHTTP(超文本传输协议) 是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是互联网数据通信的基础。它是由万维网协会(W3C)和互联网工程任务组(IETF)进行协调制定了 HTTP 的标准,最终发布了一系列的
2017-09-20 13:50:21 297
原创 java的varargs机制
偶然看到有人把main方法的方法签名这样写:public static void main(String... args),成功引起我的注意哈哈,赶紧查了一下,原来“类型...“或者“类型 ...”这两种形式的参数代表个数可变的参数(>=0)。这种机制在jdk1.5出现,Varargs”是“variable number of arguments”的意思,它可以定义能和多个实参相匹配的形参。这种机
2017-09-20 10:06:52 697
原创 java各种锁机制的性能比较
下面基于jdk8,8G内存,i5处理器对java的synchronized、semaphore、reentrantLock、atomicXXX进行对比,结论和注释都比较全,其中注意使用countDownLatch来控制子线程都执行后(累加到addTime次),主线程再进行时间计算,并且注意把latch.countDown()方法放进子线程的run方法的最后,否则会出现子线程任务没执行完,而latc
2017-09-20 08:42:59 1981 1
原创 awk查看与统计nginx访问日志
切割日志查找7月16日访问log导出到17.log文件中:cat web_access.log | egrep "17/Jul/2017" | sed -n '/00:00:00/,/23:59:59/p' > /tmp/16.log查看访问量前10的IPawk '{print $1}' web_access.log | sort | uniq -c | sort -nr | head -n
2017-09-16 21:51:27 4977
原创 nginx限制连接数和下载速度
有时候为了限流,我们可以在nginx的server中使用limit_zone设置一个限制域,比如 limit_zone zone1 $binary_remote_addr 10mzone1为限制域的名称,$binary_remote_addr为客户端ip的二进制形式,这种方式比较节约空间,10m是此限制域的总大小。接着在location中配置limit_conn,限制单个用户最多连接数
2017-09-16 14:18:12 11234 2
原创 当try catch遇上return
如果我们执行一个方法,在方法内抛出异常,那么抛异常那条代码后面的代码就不会被执行了,也就意味着如果我们的方法不是void的话,就没办法返回值,有一个办法,就是在catch代码块和finally代码块返回,但是实际开发中我们不能依赖异常机制来进行语句控制,这里只是了解一下当return语句出现在catch块和finally块里会出现什么情况。测试1,让方法抛异常,并且catch块中有re
2017-09-14 22:54:04 792
原创 java9新特性小探
模块化选择性封装和暴漏指定的包,即不编译成.class文件,这样我们可以根据一个项目需求自定义组件,比如减少rt.jar的大小,没用到的package将不会包含在我们的项目里。支持HTTP2.0Java配备一个全新的HTTP客户端来替代HttpURLConnection,并且同时还实现HTTP 2.0和websockets。改进javadoc以前对某个类不熟悉,还得先g
2017-09-14 12:34:49 981
原创 JMS与activeMQ,消息中间件入门
什么是中间件中间件是介于操作系统和应用程序之间的技术类组件中间件的作用提取通用的部分,屏蔽了底层的通讯,交互,连接等复杂又通用化的功能,以产品的形式提供出来,系统在交互时,直接采用中间件进行连接和交互即可,避免了大量的代码开发和人工成本。什么是消息中间件关注于数据的发送和接收,可以利用高效可靠的异步消息传递机制集成分布式系统的组件为什么使用消息中间件解耦、削峰、异步、顺序保
2017-09-13 22:31:29 372
原创 ActiveMQ、RabbitMQ和Kafka的简单对比
ActiveMQRabbitMQKafka跨语言支持(java优先)语言无关支持(java优先)支持协议OpenWire、Stomp、XMPP、AMQPAMQP 优点遵循JMS规范安装部署方便继承Erlang天生的并
2017-09-09 11:35:48 3310
原创 遍历集合ConcurrentModificationException异常
在遍历集合时,如果进行了增删操作,有时会抛出 java.util.ConcurrentModificationException异常。这类异常也被称为 fail-fast,它是Java集合的一种错误检测机制。出现异常的原因:使用了iterator和foreach(底层也是使用了iterator的方式)进行遍历,并且遍历期间进行add或remove操作,那就有可能发生此异常。出现异常的关键就
2017-09-06 16:45:05 360
原创 java多线程之可见性
可见性:一个线程对共享变量值的修改能够及时地被其他线程看到JMM(java memory model)描述了java程序中各种变量的访问规则,以及在JVM中将变量(线程共享变量)存储到内存和从内存中取出变量这样的底层细节。JMM是一种规范,这也是导致java多线程会出现可见性问题的原因,所以了解一下java内存模型还是很有必要的。所有变量都存储在主内存中(分配给进程的内存)
2017-09-05 09:54:02 1944
原创 初识JWT(java web token)
JWT(Json Web Token)是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权。个人理解我认为它是分布式session的替代物,在没有jwt之前,我们可以用redis等缓存服务器来充当session存储服务器,用户根据cookic中的token到redis服务器取用户信息,这也是单点登录的一种设计方案。而JWT的出现,使成本更低,我们可以单独部署一
2017-09-01 21:08:51 7780 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人