- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 分布式RPC框架fox设计
fox是在自己为了学习RPC框架进行设计了一个轻量级的RPC框架,fox采用模块化设计,利用Java自有的ServiceLoader进行模块插件化开发,fox依赖抽象不依赖具体实现,具体实现由用户自己选择,fox代码目前托管于github:https://github.com/wenbo2018/fox,如果对大家有用请star,下面是fox的架构设计图。fox的基本架构跟现有其他RPC框架差不多,
2017-06-10 18:24:24 635
原创 分布式配置管理平台Jconf设计与实现(一)
Jconf介绍:Jconf是基于Java的分布式配置管理平台,随着业务的不断变化,许多地方需要对数据进行配置,为了避免在分布式环境中对数据集中进行配置,分布式配置管理平台应运而生,目前性能比较优良的开源分布式配置管理平台主要有阿里的Diamond以及百度的Disconf,Jconf主要是用于学习而开发的一款分布式配置管理平台,Jconf主要用由Java编写,目前客户端支持Java,代码托管于gith
2017-05-05 23:35:58 543
转载 Java日志全解析(下) - 最佳实践
上一篇文章中, 讲了Java常用的日志库以及之间的关系,现在来说说我们在项目中怎么使用日志库。1. 总是使用Log Facade,而不是具体Log Implementation正如之前所说的,使用 Log Facade 可以方便的切换具体的日志实现。而且,如果依赖多个项目,使用了不同的Log Facade,还可以方便的通过 Adapter 转接到同一个实现上。如果依赖项目使用了多个不同的日志实现,就
2017-04-15 15:42:57 767
转载 Java日志全解析(上) - 源流
作为Java程序员,幸运的是,Java 拥有功能和性能都非常强大的日志库;不幸的是,这样的日志库有不止一个——相信每个人都曾经迷失在JUL(Java Util Log), JCL(Commons Logging), Log4j, SLF4J, Logback,Log4j2 等等的迷宫中。在我见过的绝大多数项目中,都没有能够良好的配置和使用日志库。 这篇文章先讲述Java常见日志库的历史和关系,后续
2017-04-15 15:40:19 880
原创 Spring-Boot学习(3)-----Spring-Boot整合mybatis
为了更上技术的革新,近期打算学习下spring-Boot跟Spring-Cloud。下面将记录下自己学习过程。Spring-boot系列学习源代码放在https://github.com/wenbo2018/spring-boot-learning,有需要的可以自行下载。spring-boot整合mybatis是非常方便而且简单的,没有以往那么多配置文件,下面记录详细过程。1.maven依赖 <pa
2017-04-15 13:17:39 428
原创 Spring-Boot学习(2)-----Spring-Boot-web学习
为了更上技术的革新,近期打算学习下spring-Boot跟Spring-Cloud。下面将记录下自己学习过程。Spring-boot系列学习源代码放在https://github.com/wenbo2018/spring-boot-learning,有需要的可以自行下载。使用Spring-boot进行web开发是极其方便而且简单的,下面将展示使用Spring-boot进行web开发,本文以ftl作为
2017-04-15 12:46:09 333
原创 Spring-Boot学习(1)-----Spring-Boot入门
*为了更上技术的革新,近期打算学习下Spring-Boot跟Spring-Cloud。下面将记录下自己学习过程。Spring-boot系列学习源代码放在https://github.com/wenbo2018/spring-boot-learning,有需要的可以自行下载。*Spring-boot其实并不是为了解决某种问题的新技术,而是为了简化繁琐的xml配置,将Spring-boot各个模块做了一
2017-04-15 12:22:20 506
原创 基于redis的短信验证码服务开发
基于redis的短信验证码服务开发目前可以提供的验证码服务平台有很多,这里选择阿里大于短信验证码服务平台,里面有10元体验卷可以免费试用,不多说上代码。写代码之前需要去阿里大于平台申请验证码服务,同时下载相应的SDK包,可以将下载下来的jar包导入到maven本地仓库:mvn install:install-file -DgroupId=org.taobao.sdkjava -DartifactId
2017-03-14 10:14:51 7902
原创 常见互联网web攻击手段极其防护方法
随着互联网技术的不断发展,大量信息获取变得容易,这也给互联网架构安全带来了严重的挑战。对于常见的web攻击手段主要有XSS、CRSF、SQL注入等。下面本文将介绍常见的攻击手段极其防护方法。1.XSS XSS攻击全称为夸张脚本攻击,是web应用中常见的攻击手段。XSS攻击是指攻击者在网页中嵌入恶意脚本程序,当用户打开网页时脚本就开始在浏览器中执行并作为危害用户计算机盗取用户信息的行为。 1.1
2016-08-14 12:15:14 1184
原创 轻量级RPC框架fox(一)
用过一些RPC框架,所以打算学习下RPC里面的具体原理。于是写一个简单的RPC框架,代码放在github:https://github.com/wenbo2018/fox
2016-08-11 18:48:00 828
原创 JVM基础知识
JVM JVM体系结构主要由4部分组成: 1)类加载器:在JVM启动时类运行时将需要的class加载到JVM中。 2)执行机器:负责执行class文件包含的字节码指令。 3)内存区:又成运行数据区,下面详解。 4)本地方法调用:调用C/C++本地方法并返回。 内存区/运行数据区域:主要包括程序计数器、java虚拟机栈,本地方法栈、java堆、方法区、运行常量池。 程序计数器:是一块较小
2016-08-03 14:39:06 415
原创 Java并发学习(一)-Executor
Executor是java并发包里面的一个接口,其里面只有一个方法: void execute(Runnable command); 通常我们使用Executor时会使用ExecutorService接口,该接口集成了Executor接口同时还实定义了其它方法,具体可以从代码中看出:public interface ExecutorService extends Executor { v
2016-07-30 16:31:48 289
原创 CAS原理分析
CAS CAS:Compare and Swap, 翻译成比较并交换。 在java.util.concurrent大量使用了CAS算法来实现非阻塞并发。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。 当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。下面看下Java并发包中的原子类是如何实现。 private volatile int value; pub
2016-07-25 16:13:46 449
转载 JDK动态代理本质(转)
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 package dynamic.proxy; import java.lang.reflect.InvocationHandler
2016-07-25 10:11:28 597
原创 Java集合排序总结
今天无意在地铁上看到一个微信推送文章讲解了集合排序,想了想,由于平时不太用好多api容易忘掉,于是打算写篇博客来总结下java集合拍戏。 1.List排序 List集合排序主要有两种方法,都是使用集合工具类Collections中的提供的两个重载方法。java.util.Collections.sort(java.util.List)java.util.Collections.sort(ja
2016-07-23 10:16:23 463
原创 ibatis一次sql过程
为了理清楚ibatis一次sql过程中发生了什么,本文将对ibatis一次sql过程做简要的分析。String resource = "mybatis.cfg.xml"; Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory ssf = new SqlSessionFactoryBuilder
2016-07-21 16:31:26 1432
原创 LRU缓存算法Java实现
最近在学习缓存算法,就自己用java实现了一个LRU缓存算法,其实LRU可以直接用LinkedHashMap直接实现,本文采用HashMap来进行构造代码如下:*public class LRUCache<K,V>{ private class CacheElemet<K,V>{ private CacheElemet before; private Cache
2016-03-05 20:35:21 524
原创 JVM内存区域总结
一、 java内存 JVM体系结构主要由4部分组成: 1、 类加载器:在JVM启动时火类运行时将需要的class加载到JVM中。 2、 执行机器:负责执行class文件包含的字节码指令。 3、 内存区:又成运行数据区,下面详解。 4、 本地方法调用:调用C/C++本地方法并返回。内存区/运行数据区域:主要包括程序计数器、java虚拟机栈,本地方法栈、java堆、方法区、运行常
2016-01-13 14:57:46 435
原创 二叉树的几种遍历方法,包括递归和迭代
由于要找工作了复习下二叉树。 public class BinaryTreeTraversal {public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}/* * 二叉树三种遍历的方法: * 递归前序遍历 */
2015-12-29 19:05:10 465
原创 IOC容器原理与实现
IOC容器原理与实现Spring IOC主要分为两个过程:IOC容器初始化;依赖注入;IOC容器初始化主要分为三个过程: 第一个过程,Resource定位过程,这个过程如能主要是BeanDefintion的资源定位,主要就是找到定义Bean的文件。 第二个过程,BeanDefinition的载入过程,这个载入过程就是把用户定义好的Bean表示成IOC内部的数据结构,该数据结构就是BeanDefi
2015-12-07 15:43:38 3089
原创 Best Time to Buy and Sell Stock II
/** * @Title: maxProfit * @Description: TODO采用贪心策略,首先找到最小买入价格,找到后再去找最大卖出价格,找到最大买出价格后标记下可以买出,然后用最大卖出价格减去最小买入 * 价格来计算本次交易利润,若没找到最大卖出价格,则视作本次没有交易; * @param @param prices * @para
2015-11-27 17:21:10 319
原创 Leetcode Range Sum Query 2D - Immutable
Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).Range Sum Query 2D The above rectangle (wi
2015-11-22 13:41:04 424
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人