自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u010900754的专栏

真心希望国内博客环境 多一些原创 少一些复制

  • 博客(21)
  • 资源 (3)
  • 收藏
  • 关注

原创 【SpringMVC(六)】ArgumentResolver 使用 及 原理

ArgumentResovler是springmvc为我们提供的一个处理controller请求参数的扩展点。下面看一个常见的使用例子。现在有一个web应用,api接口需要拿到一个userId,但是这个userId又不能直接通过http参数拿,可能是传一个token,然后,根据token从服务器取出登录用户的userId。当然一种方案是在interceptor里面解析token拿到user...

2019-07-28 14:19:39 6973 1

原创 【Java】运行main函数的两种方式

方式一:使用java -jar命令直接运行jar包,需要在manifest文件内写入main方法的入口类。可以使用maven-jar-plugin实现: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId>...

2019-07-28 10:43:16 5275

原创 【Java】guava(六)函数式编程与惰性求值

举个例子,比如我们的web服务器应用,我们可能会写一个类似拦截器一样的模块来提前把一些公共参数抽取出来,比如像token,userid,ip地址等等这样的信息,放入一个类似ThreadLocal的对象中,后面的controller如果想要用就可以直接拿。方案一:及早求值,每一次都直接计算出最终结果,存放至ThreadLocal;实现起来很直观也很简单,但是可能大多数请求在被后面的contr...

2019-07-27 12:50:24 520

原创 【Java】guava(五) splitter joiner

List使用:@Test public void testList(){ List<String> list = Splitter.on("-") .splitToList("A-B-C"); System.out.println(list); List<String> list...

2019-07-27 11:59:47 297

原创 【Java】apache CommandLine 使用

首先说一下CommandLine的设计理念。我们知道,java程序的启动入口是main方法,我们其实已经可以通过main中的args参数来实现将外界变量传入main方法内部了,那为什么还需要CommandLine?因为args参数使用不够方便,主要是因为其实现是一个数组,整个传递过程需要依赖顺序。编程者和程序调用需要记忆参数的顺序,才能正确传递参数。这个设计其实是不太好的。更好的做法是...

2019-07-26 23:29:11 6731

原创 【缓存】空占位符

缓存-db的这套模式,在读数据时,需要考虑一个问题:如果一个数据不存在,还要加载进缓存吗?比如说一个redis的key。如果不加载,那么每次读取这个数据时都会落到db里;如果某一个维度是刚加的,那么可能导致大量缓存穿透,db被打满。比如用户是千万级别,这时加了一个用户级别的数据,最开始每一个用户都没有,需要业务逻辑跑起来慢慢加。但是读接口会一直访问这份数据。所以,如果qps很高,没有数...

2019-07-24 23:33:09 472

原创 【Java】string 转 long L

一般定义一个long类型的常数会在数组末尾加一个L,但是如果想要从string转成long,string的常量不能加L:System.out.println(Long.valueOf("0L")); at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at ja...

2019-07-24 10:27:41 1290

原创 【Java】Springmvc @RequestParam 参数 400

如果加了@RequestParam注解,那么请求url里必须包含这一参数,否则会报400。那么如果允许不传呢?有两种办法:1)使用default值,类似:@RequestMapping(value = "/get", method = RequestMethod.POST) public String query(@RequestParam(value = "id", d...

2019-07-22 22:56:13 3626

原创 【Java】Instrumentation热更新 premain agentmain

有两种办法:1)在java5中,可以利用jvm加载类的一个扩展点来实现类文件的动态修改。需要提供一个premain方法。缺点是只能在类文件加载且main方法执行之前修改,无法实现真正的运行时修改。2)在java6中,可以使用attach API实现真正的运行时修改。需要提供一个agentmain方法。大致原理是使用agent attach api附到待更新的jvm上,然后动态加载age...

2019-07-21 23:55:08 2798

原创 【Java】javasist 初探

Javasist是一款字节码工具,可以用来动态修改字节码。反射机制也可以在运行时操作字节码,但是无法修改字节码。Javasist提供了动态修改字节码的能力。相比较于其他工具比如ASM,Javasist更加高层,不需要了解字节码文件的结构,但是运行效率不如ASM等更底层的工具。对于初学者而言,Javasist更加友好。下面使用Javasist写一个小例子,在类方法前后各打印一条语句。mave...

2019-07-21 18:44:16 631

原创 【Java】Agent attach

。。https://blog.csdn.net/youyou1543724847/article/details/84952218https://www.cnblogs.com/stateis0/p/9062201.html

2019-07-21 00:10:46 489

原创 【Arthas】使用 watch命令 线上诊断

如果debug线上环境但是又没有加日志,怎么办?可以使用arthas的watch命令来诊断。测试程序:/** * Hello world! * */public class App{ private List<Integer> p = new ArrayList<Integer>(); private static int num = ...

2019-07-20 20:04:31 6814 2

原创 【Arthas】热更新

热更新是啥?不停止java应用的情况下,直接替换虚拟机内的字节码;用处?比较多的是测试环境debug。测试环境并不像本地环境一样调试方便,需要编译,打包,部署。步骤?下面介绍下如何使用Arthas实现热更新。先看一下用于测试的java程序:/** * Hello world! * */public class App { private doubl...

2019-07-20 19:06:06 1735

原创 【Kafka】offset策略 客户端原理

1.消费者本地offsetKafka consumer会在本地维护每一个分区的消费offset,然后再发送拉取请求的时候,会把分区对应的本地offset发送给broker,broker按照请求里的offset来返回消息,broker不会维护每一个客户端的消费进度。但是broker会维护partition级别的offset,这样新的consumer第一次消费或者再均衡消费时,就可以根据这个off...

2019-07-14 21:57:02 1215

原创 【kafka】commit offset 自动提交 源码

Kafka可以配置自动提交,在每一次poll拉取数据时提交上一次消费的offset。@Override public ConsumerRecords<K, V> poll(long timeout) { acquireAndEnsureOpen(); try { if (timeout < 0) ...

2019-07-14 21:41:48 3394 2

原创 【Java】Spring bean 生命周期

主要研究下spring这几个重要的点的先后顺序和原理:1.构造器;2.autowired3.init-method4.PostConstruct5.BeanPostProcessor的方法6.InitializingBean的afterPropertiesSet方法这里可以肯定的是构造器先于其他所有的。从实现上,autowired,postConstru...

2019-07-14 00:12:46 130

原创 【Java】Spring 属性注入 @Autowired 原理

主要分两块,一是xml文件定义的bean,另一个是@Autowired。1. xml文件bean定义的读取入口还是在bean定义的解析与注册上,这里省略前面部分直接看XmlBeanDefinitionReader的解析部分: @Override public int loadBeanDefinitions(Resource resource) throws BeanDefini...

2019-07-13 22:58:45 1013

原创 【Java】Spring init-method和@PostConstruct 原理

我们知道如果想要自定义bean的初始化行为,有两种方法:1)使用xml配置在bean的xml定义中指定init-method属性。2)注解配置在bean的class定义中添加@PostConstruct注解。例子:xml如下配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:...

2019-07-07 20:21:18 20034

原创 【redis】zset 命令

1)添加zadd key score1 member1 score2 member2 ....2)查看单个元素查看rankzrank key member:增序zrevrank key member:降序许多zset的命令都会提供增序和降序两个版本,而且默认是增序排序的。查看scorezscore key member3)查看整个set按照rank查...

2019-07-07 13:11:20 4246

原创 【Java】guava(四) RateLimiter

说到限流,大体上可以分为两种实现。1.漏桶或者令牌桶;思路之前介绍过:https://blog.csdn.net/u010900754/article/details/885688812.计数器;关于计数器,这里简单介绍下。大体是,维护一个整型变量count,每一次调用都以cas的方式将count减一,调用完将count加一。整体上是这样,当然里面有很多诸如同步,多线程等细节问题需...

2019-07-07 00:09:37 331

原创 【mysql】insert 冲突

问题,如果在某一列或者某几列上定义了unique约束或者key,插入相同的数据就会报错,例子:mysql> show index from user;+-------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------...

2019-07-06 22:54:46 551

设计模式的 课件

主要讲解了 设计模式的相关内容 包括类图等其他

2014-04-15

head first 审计模式

headfirst 一系列书籍中 对设计模式的讲解 很容易理解

2014-04-15

空空如也

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

TA关注的人

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