自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ALID

a light in dark

  • 博客(26)
  • 收藏
  • 关注

原创 String的一些理解

进一步理解很多想法来着:H神的博客1 常量池与intern()可以看到常量池中保存了 字面量和符号引用对常量池的详细讲解参考自:Suntata博客JVM 之常量池符号引用: 下面例子的 s1 s2 s3 引用了字面量字面量:下面例子的 "Str"String s1 = "Str";String s2 = new String("Str");String...

2018-08-17 14:44:28 471

原创 final理解

基础final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。1.修饰变量的时候 会使其变成只读的2.修饰方法 该方法不能被重写 并且因为编译的时候已经静态绑定了,不需要在运行时再动态绑定 所以执行较快3.修饰类 不能被继承 不可变类,...

2018-08-14 23:37:26 383

原创 搜索引擎入门

背景在关系型数据库中,索引是检索数据的最有效率方式,但是在海量的数据中,需要实时检索数据的时候,关系型数据库的索引方式在性能方面并不能满足我们的检索要求。打个比方:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至百亿级的网页数量 ,面对如此海量数据 ,使得数据库系统很难有效的管理。于是在很多搜索引擎中出现了一种相对于我们传统的正序索引相反的一种索引:倒排索引...

2018-08-14 21:20:13 2039

原创 源码阅读计划 String

源码阅读这部分H神写的太详细了 基本都摘录自H神的博客1 定义public final class String implements java.io.Serializable, Comparable<String>, CharSequence1.可以看到是final类型的2.实现了ava.io.Serializable(支持序列化与反序列化)、 Comp...

2018-08-12 17:55:34 324

原创 ThreadLocal

基础ThreadLocal是一个关于创建线程局部变量的类。通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改。有一个误区是ThreadLocal的目的是为了解决多线程访问资源时的共享问题 但ThreadLocal 并不解决多线程 共享 变量的问题。既然变量不共享,那就更谈不上同步的问题。理解...

2018-08-08 21:13:27 4104

原创 Mybatis基础

基础(1)一个持久层框架(2)核心是输入映射和输出映射    1.输入映射:向PreparedStatement中输入参数    2.输出映射:将查询结果集自动映射为java对象(3)架构:    1.sqlMapConfig:mybatis全局配置文件,配置数据源、事物等mybatis运行环境,配置映射文件、mapper.xml........    2.sqlSes...

2018-08-07 20:32:15 242

原创 Mockito 单元测试

Base单元测试,即称为单元,则是对一个代码块模块的测试,但代码块中调用了其他部分的方法我们并不想对其一起测试.所以需要将其方法进行模拟,当测试代码执行到该方法时,返回我们期望的值.这就是 Mockito 的意义.WIKI 单元测试的意义首先最直接的意义就是帮我们预防小BUG,一些边界值和基本逻辑是否正确都可以通过单测完成而我认为最主要的意义是对重构的帮助,很多时候时候,一个很大...

2018-08-07 19:49:57 2899

原创 Dubbo快速使用

本文参考阿里技术官方文章Dubbo 是一个服务框架 主要用在分布式业务场景中, 主要实现了远程方法调用. 1.RMIJava RMI (Remote Method Invocation) 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Procedure Call)的完善,用户无需依靠 ID...

2018-08-04 00:07:52 359

原创 枚举

1 定义枚举类型(enum type)是指由一组固定的常量组成合法的类型。Java中由关键字enum来定义一个枚举类型。下面就是java枚举类型的定义。public enum Season {    SPRING, SUMMER, AUTUMN, WINER;}2 特点Java定义枚举类型的语句很简约。它有以下特点:1) 使用关键字enum 2) 类型名称,比如这里...

2018-08-03 23:40:14 174

原创 Spring基础

SpringMVC1.用户发送请求至 前端控制器DispatcherServlet。2.前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping。3.处理器映射器HandlerMapping根据请求的Url找到具体的处理器,生成处理器对象Handler及处理器拦截器HandlerIntercepter(如果有则生成)一并返回给前端控制...

2018-08-02 00:37:29 184

原创 Guava源码阅读计划:collect.Immutable

基础Immutable是guava提供的一系列不可变类1.不可变代表着线程安全,线程调用时完全不用考虑线程安全的问题(不过个人认为意义不大,因为这个不可变是在封锁修改方法的前提下保证的,非不可变类不对其进行修改也完全可以实现同样的效果)2Guava不可变集合不仅仅是源数据结构的视图,而是它的副本,使得对原始结构的更改不会影响复制的不可变集合。3.转成不可变类再输出是一个防御式编程的...

2018-08-02 00:36:24 246

原创 Http请求

浏览器输入url过程DNS域名解析 本地解析 客户机平时得到的DNS查询记录都保存在DNS缓存中,客户机操作系统中都运行这样一个DNS客户端程序。当其它程序提出DNS查询请求时,这个查询请求传送至DNS客户端程序,DNS客户端程序首先使用本地缓存信息进行本地解析。 在浏览器DNS缓存中搜索 在操作系统DNS缓存中搜索 读取系统hosts文件,查找其中是否有对应的...

2018-07-31 11:01:11 234

原创 Guava源码阅读计划:base.Sets

union传入:set1, set2传出:内部实现的 setView 其继承了 AbstractSetpublic static <E> SetView<E> union(final Set<? extends E> set1, final Set<? extends E> set2) {  checkNotNull(set1, "...

2018-07-30 01:53:36 577

原创 Guava源码阅读计划:base.Splitter

策略模式(Strategy)定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。在Splitter中就主要使用了这种模式.主要方法基础写法为:Splitter.on('.').split("a,b,c");第一部分构建Splitter.on( )有很多Splitter.on()方法 每个参数不同,但他们...

2018-07-29 23:52:03 620

原创 Guava源码阅读计划:base.Strings.java

com.google.common.base:基本工具类库和接口。 import com.google.common.annotations.VisibleForTesting;public final class Strings { private Strings() { } public static boolean isNullOrEmpty(@Nulla...

2018-07-29 19:15:10 286

原创 Guava源码阅读计划:primitives.Ints

com.google.common.primitives:八种原始类型和无符号类型的静态工具包 //在java8中可以被Integer.BYTES替代,代表字节数bytes public static final int BYTES = Integer.SIZE / Byte.SIZE; //int最大存储值,使用 1<<(Integer.SIZE-2) 计算得到,2是因为...

2018-07-29 18:29:04 440

原创 函数式编程

基本理解函数式编程的特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!常规方法 函数式编程 需要返回结果交给下一个函数 直接将函数传入,在其中进行调用 开始执行第一步就需要先进行计算 最后在传入所需处理内容,进行计算 线程可能不安全 无状态 线程安全 WIKI 但是实际工作量没变甚至还会增加(只有在真正想要最后的执...

2018-07-23 22:48:33 190

原创 Stream总结

目录流是什么生成流使用方法map/flatMapfilterforEachpeek聚合操作reduce收集结果collect将结果收集到map中分组和分片join和统计功能并发流及其效率并发的演变生成并发流并发性能测试collect()保证有序性并发流的实现方法parallelStream的实现:ForkJoinPoo...

2018-07-20 21:34:33 2152

原创 Java 基本类型操作

1.数值溢出long num = 5000 * 165 * 24 *3600 *1000输出结果会溢出,因为整数相乘已经大于了最大的限制,可以采用 在第一个数之后加L的方式先转成long类型long num = 5000L * 165 * 24 *3600 *1000p.s.int类型的范围int max=2147483647int min=-2147483648Q:两...

2018-07-19 19:58:05 284

原创 Linux 基础总结

一.通用概念通配符在bash下,可以使用*来匹配零个或多个字符,而用?匹配一个字符。输入输出从定向输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是<,输出重定向的命令是>,另外还有错误重定向2>,以及追加重定向>>,稍后会详细介绍。作业控制...

2018-07-17 23:04:03 222

原创 sql语句效率探索

基础字符串类型必须加 单引号执行顺序#5SELECT#1FROM#2WHERE#3GROUP BY#4HAVING#7ORDER BY数据类型int(n) 写多少都无所谓 读取的都是11位TINYINT 适合作为状态码 (-127 ~ 127)varchar(N) N是字符 (一个字母就是一个字符) 开头会用1-2个字节储存字符串实际长度(以2...

2018-05-14 21:06:33 520

原创 lambda表达式使用及示例

首先来说说为什么要引入lambda:在函数式编程语言中,函数是一等公民,它们可以独立存在,可以将其赋值给一个变量,或将他们当做参数传给其他函数。JavaScript 是最典型的函数式编程语言。点击此处以及此处可以清楚了解 JavaScript 这种函数式语言的好处。函数式语言提供了一种强大的功能——闭包,相比于传统的编程方法有很多优势,闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创...

2018-04-12 23:31:03 2933

原创 异常处理&规范化返回值

异常抛出&捕获在程序中遇到异常信息时 , 一般都应该抛到最上层进行处理.怎样抛出需要注意 , 在特殊情况(比如入参丢失) 最好抛出指定异常. 一 主动抛出异常第一步 抛出异常1. throw new  RuntimeExceptionif (url == null) { throw new RuntimeException("url is null");...

2018-03-19 10:19:34 1637

原创 单元测试

为什么?在基于接口编程的思想下,接口定义好以后 就可以先写好单元测试 再编写实现.这样可以非常方便的对于接口的实现进行测试,无论实现如何 接口功能不变 测试方法也不变.之后无论进行怎样的操作 都可以使用最初的单元测试进行规范.断言1、assert <boolean表达式>如果<boolean表达式>为true,则程序继续执行。如果为false,则程序抛出As...

2018-03-18 17:04:44 183

原创 静态代理设计模式封装区块链签名jar包

问题开始:    在区块链钱包的开发中发现交易方法需要先签名才能进行交易(eth_sendTransaction)否则就需要对账户进行解锁.需要开发一个签名提供方法.通过查找资料发现有比较好的JS签名实现方法,但没有很好的java实现,所以想模仿其思路实现一个java版的.开始设计:该方法的类图    通过此图可以清晰的看出采用了静态代理的设计模式,新建类Web3jSignerProvider来重...

2018-03-16 16:46:29 307

原创 Spring data jpa 复杂动态查询方式总结

一.Spring data jpa 简介首先我并不推荐使用jpa作为ORM框架,毕竟对于负责查询的时候还是不太灵活,还是建议使用mybatis,自己写sql比较好.但是如果公司用这个就没办法了,可以学习一下,对于简单查询还是非常好用的.    首先JPA是Java持久层API,由Sun公司开发, 希望整合ORM技术,实现天下归一.  诞生的缘由是为了整合第三方ORM框架,建立一种标准的...

2018-03-04 23:41:04 137081 24

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除