java
文章平均质量分 78
爱分享的淘金达人
http://www.jhzjz.cn/
展开
-
基于hessian和netty的RPC框架设计和实现
一:概述 对系统进行服务化改造,或者构建一个分布式系统,RPC是核心的组件,目前主流的RPC框架有hessian\thrift\ avro等,如果不考虑跨语言的话thrift\ avro使用起来稍显复杂,要写IDL序列化配置,hessian又依赖servlet容器,于是使用netty和hessian构建了一个的RPC框 架。 hessian是一种二进制的序列化工原创 2023-03-22 17:52:08 · 442 阅读 · 1 评论 -
httpclient连接池管理
随着微服务的留下,服务之间的http调用越来越多。在java里面我们可以使用httpclient这个开源工具类来进行处理,但若使用不当,可能性会比较差,尤其是连接池是否能正常使用,接下来会详细分析下httpclient的连接池原理。(1)使用httpclient的好处 a)降低延迟:如果不采用连接池,每次连接发起http请求的时候都会重新建立tcp链接(经历三次握手),用完就会关闭连接(原创 2023-03-22 08:04:49 · 476 阅读 · 1 评论 -
SDL:怎样才能写出更“安全”的代码?
微软提出了 SDL(Security Development Lifecycle,安全开发生命周期)。因为对安全和隐私的考虑贯穿了整个软件的开发进程,SDL 能够帮助开发人员写出更“安全”的代码,在解决安全合规需求的同时,也能减少由安全问题带来的损失。和安全标准一样,SDL 本质上是一个宏观指导性质的框架。但是,它确实成为了很多公司建设安全开发体系的参照标准。各个公司依据微软的 SDL 标准,结合自身的实际情况,衍生出了适合公司自身发展的 SDL。我们就一起来学习,到底什么是 SDL?原创 2022-12-03 16:16:11 · 273 阅读 · 0 评论 -
如何设计一个稳定的健康码系统?
最近上海和北京疫情特别严重,前一阵子还出现了健康码崩溃的事件,网络上对此也有各种各样的评论和说法。对于各种言论和说法我们没有权力去评头论足,但是可以从技术的角度聊一聊,如果是我们接到了这样的需求,应该来如何设计这个系统,使得它可以在关键时刻经得住考验,为防疫工作提供方便做出贡献。首先我们来分析下健康码大致有哪些基本需求需要实现。应该会有个人信息登记注册以及修改的需求;还会有个人健康信息查询需求,也就是健康码;也有个人行程信息记录需求,也就是平时我们进出小区,商场,乘坐公共交通等等时候进行的扫码操作;...转载 2023-03-30 08:50:06 · 359 阅读 · 0 评论 -
阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析原创 2016-12-21 10:00:02 · 1302 阅读 · 1 评论 -
java提高篇(八)----详解内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类。 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二)。第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。public class OuterClass { private String name ;原创 2016-12-20 09:47:46 · 105 阅读 · 1 评论 -
内部类详解(很详细)
(转)内部类有两种情况:(1) 在类中定义一个类(私有内部类,静态内部类)(2) 在方法中定义一个类(局部内部类,匿名内部类) 1、私有内部类 —— 在方法之间定义的内部类,非静态 我们首先看看类中内部类的两个特点: (1) 在外部类的作用范围内可以任意创建内部类对象,即使内部类是私有的(私有内部类)。即内部类对包围它的外部类可见。//代转载 2016-12-20 09:46:21 · 153 阅读 · 0 评论 -
RocketMQ性能压测分析
转载自:http://jameswxx.iteye.com/blog/2093785一 机器部署1.1 机器组成1台nameserver1台broker异步刷盘2台producer2台consumer1.2 硬件配置CPU两颗x86_64cpu,每颗cpu12核,共24核内存48G网卡千兆网卡磁盘除br原创 2016-12-30 09:28:22 · 1505 阅读 · 1 评论 -
ConcurrentHashMap
ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)。实际上,ConcurrentHashMap对提高并发方面的优化,还有一些其它的技巧在里面(比如你是否知道在get原创 2016-12-29 19:08:50 · 305 阅读 · 1 评论 -
React 还是 Vue: 你应该选择哪一个Web前端框架?
学还是要学的,用的多了,也就有更多的认识了,开发中遇到选择的时候也就简单起来了。本文作者也做了总结: 如果你喜欢用(或希望能够用)模板搭建应用,请使用Vue 如果你喜欢简单和“能用就行”的东西,请使用Vue 如果你的应用需要尽可能的小和快,请使用Vue 如果你计划构建一个大型应用程序,请使用React 如果你想要一个同时适用于Web端和原生Ap原创 2017-02-07 14:11:53 · 43642 阅读 · 1 评论 -
Quartz中时间表达式的设置-----corn表达式
Quartz中时间表达式的设置-----corn表达式时间格式: , 分别对应: 秒>分>小时>日>月>周>年,举例:1.每天什么时候执行: 0 59 23 * * ?: 如下为每天23:59:00开始执行 0 1,2,3 11,12 * * ? : 每天11:01,11:02,11:03; 12:01,12:02,12:03分执行任务2原创 2017-01-12 15:31:55 · 2217 阅读 · 1 评论 -
CountDownLatch使用
本文由 ImportNew - 张涛 翻译自 howtodoinjava。欢迎加入翻译小组。转载请见文末要求。正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到原创 2017-04-14 10:47:00 · 330 阅读 · 1 评论 -
Java获取Process进程ID,并杀掉相应的进程树
在使用java过程中,很多人可能遇到过这样的问题,当我们通过cmd.exe执行命令的时候,如下:Runtime rt = Runtime.getRuntime();Process process= rt.exec(cmd);java会在后台进程中开启一个cmd.exe的进程,当我们想要杀死该进程的时候使用process.destroy(),只能杀死java程序启动的cmd.exe原创 2017-04-14 17:21:45 · 22971 阅读 · 16 评论 -
简析SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
SynchronousQueue SynchronousQueue是无界的,是一种无缓冲的等待队列,但是由于该Queue本身的特性,在某次添加元素后必须等待其他线程取走后才能继续添加;可以认为SynchronousQueue是一个缓存值为1的阻塞队列,但是isEmpty()方法永远返回是true,remainingCapacity()方法永远返回是0,remove()原创 2017-05-11 17:50:21 · 458 阅读 · 1 评论 -
SpringMVC整合fastdfs-client-java实现web文件上传下载
前言上一篇博客记录了FastDFS v5.0.5在Linux CentOS 7中的安装与配置(分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置),本篇blog主要记录一下SpringMVC整合FastDFS的Java客户端实现web中的文件上传与下载。下载编译在余大的GitHub上可以下载到fastdfs-client-java的源代码:原创 2016-12-22 13:31:22 · 2112 阅读 · 3 评论 -
排序算法之归并排序(JAVA)
public class MergeSort { /** * 归并排序 * 简介:将两个(或两个以上)有序表合并成一个新的有序表 即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列 * 时间复杂度为O(nlogn) * 稳定排序方式 * @param nums 待排序数组 * @return转载 2017-08-10 17:09:55 · 99 阅读 · 0 评论 -
使用JavaScript开发IE浏览器本地插件实例
这篇文章主要介绍了使用JavaScript开发IE浏览器本地插件实例,本文讲解使用JS+注册表的方式开发一个IE浏览器本地插件,需要的朋友可以参考下。使用js开发的IE插件可以在当前浏览的页面中执行js代码,在此基础上实现任何用户可以想到的功能。可以针对不用的网站做一些common处理(比如提取某类信息),也可以针对特定网站做特色处理(比如抢购火车票)。实现这种插件方法比较简单,只原创 2017-11-24 11:03:09 · 6006 阅读 · 1 评论 -
Java集合---ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅原创 2016-12-29 19:06:50 · 346 阅读 · 1 评论 -
ThreadLocal详解
ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影原创 2016-12-27 19:26:48 · 262 阅读 · 1 评论 -
Jtester的使用
1.安装TestNG安装TestNG Eclipse Plugin:Eclipse:Help ->Install New Software ..-> Find and Install -> Search for new features to install按 New Remote SiteName:TestNG URL: http://beust.com/ec原创 2016-12-27 18:17:18 · 506 阅读 · 1 评论 -
java系统高并发解决方案之图片服务器分离
1介绍现在很多的网站上都会用到大量的图片,而图片是网页传输中占主要的数据量,也是影响网站性能的主要因素。因此很多网站都会将图片存储从网站中分离出来,另外架构一个或多个服务器来存储图片,将图片放到一个虚拟目录中,而网页上的图片都用一个URL地址来指向这些服务器上的图片的地址,这样的话网站的性能就明显提高了,图片服务器(ImageServer)的概念也就产生了。1.1图片服务器的优势原创 2016-12-21 16:48:24 · 716 阅读 · 1 评论 -
java系统高并发解决方案
一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原创 2016-12-21 16:52:16 · 240 阅读 · 1 评论 -
java 远程 发送文件到服务器
package org.forever.util;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.net.MalformedURLException;impo原创 2016-12-21 19:52:43 · 2304 阅读 · 1 评论 -
java 通过SSH方式连接远程主机并上传和下载文件
Java连接远程主机的方式有多种,这里和大家分享的是通过ssh方式连接远程主机,使用的是jsch这个jar包,资源在这里。 不懂ssh为何物的朋友可以从网上找找相关资料,这里只简单的解释下:SSH 为 Secure Shell(安全外壳协议) 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定,为建立在应用层和传输层基础上的安全协议。SSH在传输层提原创 2016-12-21 19:56:09 · 8859 阅读 · 4 评论 -
大型网站图片服务器架构的演进
在主流的Web站点中,图片往往是不可或缺的页面元素,尤其在大型网站中,几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中,也会历经很多曲折甚至是血泪教训(尤其是早期规划不足,造成后期架构上很难兼容和扩展)。本文将以一个真实垂直门户网站的发展历程,向大家娓娓道来。构建在Windows平台之上的网站,往往会被业内众多架构师认为很“保守”。很大部分原创 2016-12-21 20:50:13 · 314 阅读 · 1 评论 -
FastDFS搭建及java整合代码
FastDFS软件介绍1.什么是FastDFSFastDFS是用C语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。2.FastDFS架构FastDFS架构包括 Tracker server和St原创 2016-12-21 20:55:23 · 760 阅读 · 1 评论 -
tomcat配置图片服务器,上传图片到服务器的硬盘上,而不是项目下
前台有大量的图片上传到项目中中,因此需要上传的图片保存在服务器的硬盘上,而不是这个项目下。而数据库中保存的为图片的路径,因此如何在JSP页面上显示服务器硬盘上的图片是我们需要处理的。第一步、找到tomcat下的server.xml文件第二步骤、配置文件下加入service节点 protoco原创 2016-12-22 13:35:59 · 2941 阅读 · 1 评论 -
Redis中的关系查询(范围查询,模糊查询等...)
本文对Redis如何保存关系型数据,以及如何对其匹配、范围、模糊查询进行举例讲解,其中模糊查询功能基于最新的2.8.9以后版本。1关系型数据的存储以Staff对象为例,在关系型数据库或类似GridGain的内存网格产品中(底层使用H2数据库的内存模式存储),我们以表形式保存对象的数据。因为内存网格是基于对象做缓存的,所以还要额外多出一列(Staff列)保存整个对象的编码,例如序列化后的二原创 2016-12-22 16:52:21 · 48445 阅读 · 1 评论 -
Thrift入门及Java实例演示
目录:概述下载配置基本概念数据类型服务端编码基本步骤客户端编码基本步骤数据传输协议实例演示(java)thrift生成代码实现接口IfaceTSimpleServer服务模型TThreadPoolServer 服务模型TNonblockingServer 服务模型THsHaServer服务模型异步客户端[一]、概述Thrift是一个软件框原创 2016-12-23 18:06:47 · 958 阅读 · 0 评论 -
FastDFS介绍和配置过程
由于网站使用nfs共享方式保存用户上传的图片,附件等资料,然后通过apache下载的方式供用户访问,在网站架构初期,使用这种简单的方式实现了静态资源的读写分离,但随着网站数据量的增加,图片服务器渐渐成为整个网站的短板,缘次催生了使用fastfds的想法,故而先进行一番简单的测试!在开始之前还是先来看看fastfds的介绍信息:FastDFS is an open source原创 2016-12-24 12:06:07 · 1397 阅读 · 1 评论 -
深入理解Java:注解(Annotation)自定义注解入门
深入理解Java:注解(Annotation)自定义注解入门 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.原创 2016-12-18 12:49:11 · 1013 阅读 · 1 评论 -
深入理解Java:注解(Annotation)--注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotati原创 2016-12-18 12:54:05 · 314 阅读 · 1 评论 -
深入理解Java:SimpleDateFormat安全的时间格式化
想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。下面我们通过一原创 2016-12-18 13:01:58 · 3465 阅读 · 1 评论 -
Netty系列之Netty高性能之道
1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二原创 2016-12-18 13:04:08 · 569 阅读 · 1 评论 -
关于 tomcat 集群中 session 共享的三种方法
前两种均需要使用 memcached 或 redis 存储 session ,最后一种使用 terracotta 服务器共享。 建议使用 redis ,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富,不只是缓存 session ,还可以做其他用途,一举几得啊。test url: http://sms.reyo.cn/session.jsp原创 2016-12-18 13:21:28 · 321 阅读 · 1 评论 -
java使用zookeeper实现的分布式锁示例
使用zookeeper实现的分布式锁分布式锁,实现了Lock接口复制代码 代码如下:package com.concurrent;import java.io.IOException;import java.util.ArrayList;import java.util.Collections;import java.util.List;import jav原创 2016-12-17 13:01:17 · 1454 阅读 · 1 评论