- 博客(623)
- 资源 (18)
- 收藏
- 关注
原创 【硬广】欢迎关注个人公众号
自从工作之后,就很少写博客了,大家从博客的更新就可以看的出来。主要原因是:变懒了、变懒了。哎,确实得反思一下。为激励自己能够继续写文章,周末瞎鼓捣了一下,特申请了个人微信公众号,哈哈。欢迎扫码加入,以后将会不定期的更新Java、MySQL等相关的知识。...
2019-05-04 16:50:12 569 1
原创 Spring 是如何将前端请求中的参数解析到指定对象的
Spring 是如何将前端请求中的参数解析到指定对象的注:文章稍微偏源码,对照着源码debug看效果更好一点。先说下背景,最近看一个项目,有一个接口的定义如下@PostMapping(value = "/conditionConfig")public BaseResponse<PageInfo<ConfigDTO>> conditionConfig(@Valid @RequestBody ConfigQuery configQuery) { return config
2020-12-05 23:21:51 2467
原创 2019年总结
2019年总结从放假的第一天21号,到今天,一拖再拖,2019年的总结一直没有完成,今天(29号)终于从书包中拿出了电脑,回顾下自己的2019年,展望下2020年。回顾下2019年,首先谈下工作、然后谈下学习和成长,最后展望下2020年。1.工作(换工作了)2019年9月17号从美团点评离职,2019年9月19号加入了哔哩哔哩。熟悉我的人可能知道,博主从2017年研究生毕业之后,入职了美...
2020-01-29 23:29:42 1043 3
原创 社招面试总结
社招面试总结前言目前在考虑新的机会,面试了几家公司,趁今天周末,想想还是写篇面筋吧,希望对大家有所帮助。在写这一篇面筋之前,自己也回去看了下2016年9月自己参加完校园招聘之后写的面筋内容。发现对于基础知识部分,还是有很多相同的,但也有一些不同点。下面具体说一下常见面试题下面将从项目、Java基础、MySQL、Redis、Spring等几个方面来一一进行介绍。项目不用多说,项目这块...
2019-09-07 18:14:26 4689 3
原创 Semaphore原理浅析和相关面试题分析
本文首发在个人公众号:HelloWorldEE,欢迎关注。本篇文章的来源是这样,有一天,我一同学面试某公司回来,和我分享其被问的相关面试题。其中就有一道关于Semaphore的面试题,个人觉得比较经典,分享出来供大家参考。具体同学和面试官的对话还原出来是这样。面试官:现在有一个方法task,希望只能被10个线程调用,利用Java相关类,应该如何来实现?同学:使用Java中的Semaphor...
2019-07-07 14:04:05 1023 2
原创 TreeSet源码分析
TreeSet源码分析功能:将Set中的元素按照一定的规则进行排序存储。在其源码的内部实现中(如下),可以看到TreeSet时借助了TreeMap来实现的。 public TreeSet() { this(new TreeMap<E,Object>()); } TreeSet(NavigableMap<E,Object>...
2018-05-13 19:02:18 1028
原创 SpringMVC doDispatch方法的基本思路梳理
SpringMVC doDispatch方法的基本思路梳理在分析之前,先介绍一个类1、HandlerExecutionChain public class HandlerExecutionChain { private static final Log logger = LogFactory.getLog(HandlerExecutionChain.class
2018-01-15 21:27:47 2413
原创 Netty源码分析:read
Netty源码分析:read在博文Netty源码分析:NioEventLoop启动以及其IO操作和Task任务的处理的末尾我们分析了processSelectedKey这个方法。 private static void processSelectedKey(SelectionKey k, AbstractNioChannel ch) { final NioUnsafe uns
2017-11-05 11:28:12 1035
原创 Netty源码分析:accept
Netty源码分析:accept在介绍accept之前,先介绍下NioServerSocketChannelConfig这个类,为什么先介绍这个类呢,这是因为:在accept客户端连接时会使用该类的maxMessagesPerRead这个字段,该字段的含义为:每次读的最大信息,Netty中将accept客户端连接也认为是一种读操作。对于accept客户端连接的这种读,利用该字段表示的是一次能够接受的
2017-11-04 14:27:55 1282
原创 Java中判断两个Date是否是同一天
Java中判断两个Date是否是同一天在Java中如何判断两个Data是否是同一天呢?你可以选择自己借助于Calendar来实现(如何实现,可以参考下面将分析的commons-lang包的isSameDay方法),当然,你也可以选择借助于commons-lang3这个jar中的DateUtils.isSameDay方法来实现,下面这里看一下这个类的内部实现。commons-lang3的版本为:3.3
2017-11-04 12:40:45 40137 1
原创 Loop doesn't see changed value without a print statement
今天逛V2的时候,看到别人发的一个帖子,问到了这样一个问题,然后在stackoverflow上看到了一个非常精彩的回答,特记录一下。问题和答案在这里:https://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a-print-statement
2017-11-02 21:34:34 477
原创 React学习笔记
React学习笔记跟着参考资料一路实践了下,终于算是对React有一定的了解了,这篇博文就是相关的一些记录。1、使用create-react-app快速构建React开发环境create-react-app是来自于Facebook,通过该命令我们无需配置就能快速构建React开发环境。create-react-app自动创建的项目是基于Webpack+ES6.首先切换到相应的目录,然后在命令行执行以
2017-10-29 13:12:52 991
原创 Netty源码分析:PooledByteBufAllocator
Netty源码分析:PooledByteBufAllocator无论是我们使用语句ByteBuf byteBuf = Unpooled.buffer(256);来分配buf,还是使用如下的语句来分配Buf: PooledByteBufAllocator allocator = new PooledByteBufAllocator(false); ByteBuf byte
2017-10-20 19:49:07 3610
原创 Netty源码分析:PoolChunkList
Netty源码分析:PoolChunkList在博文 Netty源码分析:PoolArena中我们知道,在第一次申请内存时,会调用如下的allocateNormal方法来新建一个Chunk,然后在此Chunk上分配内存。分配完成之后会将这个Chunk添加到名为qInit的PoolChunkList中。在下次分配内存时会先尝试在6个PoolChunkList来寻找chunk来分配内存。 priv
2017-10-19 21:29:37 772
原创 Netty源码分析:PoolArena
Netty源码分析:PoolArenaArena本身是指一块区域,在内存管理中,Memory Arena是指内存中的一大块连续的区域,PoolArena就是Netty的内存池实现类。Netty的PoolArena是由多个Chunk组成的大块内存区域,而每个Chunk则由一个或者多个Page组成(在博文Netty源码分析:PoolChunk已经明确了这点),因此,对内存的组织和管理也就主要集中在如何管
2017-10-16 21:55:49 2089
原创 Netty源码分析:PoolSubpage
Netty源码分析:PoolSubpage在上篇介绍Netty源码分析:PoolChunk的博文中,我们分析了allocateSubpage方法(如下)的前半部分,后半部分是借助于PoolSubpage来完成的。这篇博文就介绍下PoolSubpage这个类。 private long allocateSubpage(int normCapacity) { int d = max
2017-10-15 17:44:41 1004
原创 Netty源码分析:PoolChunk
Netty源码分析:PoolChunkChunk主要用来组织和管理多个Page的内存分配和释放。在Netty中,Chunk中的Page被构建成一颗二叉树。本博文将从源码的角度来看下PoolChunk。1、属性和构造函数先看下PoolChunk的属性和构造函数 final class PoolChunk<T> {// PoolChunk会涉及到具体的内存,泛型T表示byte[](堆内存)、或ja
2017-10-15 12:52:02 1863
原创 《人生就是一个不断相遇与离别的过程》
《人生就是一个不断相遇与离别的过程》本没想这么快就写一篇关于自己入职美团以来的感受,但今天下午大boss给我们开会说:boss高明哥即将不负责我们团队的工作了,准备去阿里了。听到这个消息对我而言确实相当的伤感,眼泪一直在眼眶转,真的不舍。有人说:工作就是要遇见一个好boss,幸运的我刚毕业参加工作就遇到了一个好boss,高明哥真的是一个好boss,对我们团队的每个人都照顾有加,对我这个刚入职不久新人
2017-10-13 22:46:23 6380
原创 Netty源码分析:AbstractByteBuf
Netty源码分析:AbstractByteBufByteBuf与Java NIO ByteBuffer类似,由于ByteBuffer存在一定的缺陷,具体缺陷如下:1)ByteBuffer长度固定,一旦分配,则容量不能动态扩展和收缩2)ByteBuffer只有一个标识位置的指针,读写的时候需要手动的调用flip()方法来进行从写到读模式的切换,否则读出来的内容就是错误的。而Netty实现的ByteB
2017-10-13 00:18:13 1158
原创 Redux记录:Store是如何自动调用reducers来处理action的
Redux记录:createStore是如何自动调用reducers来处理action的作为一个后端程序员,经常也要写一点前端、维护一下前端。因此一直在与前端打交道,但是一直没有理解当用户操作view通过dispatch发出 action之后,我们定义的一系列的reducer是如何来自动执行处理的。先说结论:当用户操作view之后发出一个action,store会遍历所有的reducers来依次处理
2017-10-12 18:23:21 2818
原创 Netty源码分析:客户端连接
Netty源码分析:客户端连接博文Netty源码分析:服务端启动全过程对服务端的启动进行了全面的分析,本篇博文将对客户端如何连接到服务端进行一个分析。一般情况下,客户端的启动代码类似如下: // Configure the client. EventLoopGroup group = new NioEventLoopGroup(); try {
2017-09-30 16:06:37 2510
原创 Netty源码分析:ChannelPipeline
Netty源码分析:ChannelPipeline在博文Netty源码分析:服务端启动全过程我们在知道NioServerSocketChannel这个类的构造函数的调用链如下: public NioServerSocketChannel() { this(newSocket(DEFAULT_SELECTOR_PROVIDER));//newSocket的功能为:利用Select
2017-09-29 21:46:11 1650 1
原创 Netty源码分析:NioEventLoop启动以及其IO操作和Task任务的处理
Netty源码分析:NioEventLoop类的execute、startThread、run方法在上篇博文分析服务端启动的过程中,我们遇到了如下的代码片段, if (eventLoop.inEventLoop()) {//判断当前线程是否为该EventLoop中拥有的线程,如果是,则直接注册,如果不是,则添加一个任务到该线程中 register
2017-09-26 22:23:21 6982 3
原创 Netty源码分析:服务端启动全过程(篇幅很长)
Netty源码分析:服务端启动全过程一般服务端的代码如下所示: public final class SimpleServer { public static void main(String[] args) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(1);
2017-09-24 15:35:59 14057 2
原创 Netty源码分析:ServerBootstrap
Netty学习笔记:ServerBootstrap一般服务端的代码如下所示: package com.wrh.server; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; imp
2017-09-23 23:39:52 1901
原创 Netty源码分析:NioEventLoopGroup
Netty学习笔记:NioEventLoopGroup在工作之余,看到自己公司的超哥(俞超)关于Netty的系列博文,讲解的很好,因此,自己在学习之余也跟了下源代码,来了解Netty,也做了相关的笔记,将形成系列博文,这是第一篇。超哥的博文地址在这里:http://www.jianshu.com/p/c5068caab217Netty版本:4.0.23.Final借用超哥的例子,一般服务端的代码如下
2017-09-16 22:00:20 6603 2
原创 MyBatis学习笔记:一对一和一对多关联表查询
MyBatis学习笔记:一对一和一对多关联表查询在前面的两篇博文的例子中,都是简单的实体类,都不存在包括其他实体类的引用。例如:班级类Class public class Classes { private int id; private String name; //getter setter } 这种情况下,如果你想根据班级的id来查班
2017-09-03 17:35:50 923
原创 MyBatis学习笔记:表字段名与实体类属性名不一致的解决方法
MyBatis学习笔记:解决字段名与实体类的属性名称不一致的情况在上篇博文中,如果我们的实体类属性名与表的字段名完全一致,则在Person.xml中可以看到如下的代码: <select id="queryById" parameterType="int" resultType="com.wrh.entity.Person"> SELECT * FROM PERS
2017-09-03 14:40:32 4123
原创 MyBatis学习笔记:基于xml和注解对表的基本操作
MyBatis学习笔记:基于xml和注解对表的基本操作本篇博文主要是想记录下在使用mybatis时遇到的一个小问题,也就随便介绍下使用MyBatis基于xml和注解来实现对数据库的基本操作。具体遇到了什么问题,见文章最后。第一部分:基于xml的实现主要步骤如下:1、使用idea建立一个项目。项目结构如下(图中相关的类后面会一一说到) 2、在pom.xml文件添加mybatis相应的依赖。具体如下
2017-09-03 10:27:32 1943
转载 PC/APP前端项目调试方式
前端PC/APP项目调试方式来源: http://uedfamily.com/2017/01/19/pqj/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E4%BE%BF%E6%8D%B7%E4%B9%8B%E8%B7%AF-%E8%B0%83%E8%AF%95%E7%AF%87/#morepc项目的调试方法pc上的调试的好像没什么东西,首选你要选择一个用的习惯的浏览器
2017-08-21 20:51:56 7716
原创 sublime text3格式化json
sublime text3格式化json第一步:安装install package点击菜单中的 “View”–“Show Console”(也可通过快捷键 Ctrl + ` 打开,不过可能因与系统其他软件快捷键冲突而打不开)调出 Console。然后把下面的代码粘贴进去后回车即可,需稍微等待一段时间。(以下代码可能会因更新而导致失效,请以官网(https://packagecontrol.io/in
2017-08-20 22:14:40 78366 2
转载 gfs-react-dm笔记
gfs-react-dm笔记最近要在公司一个前端项目上添加一个“警告”弹框这样一个功能,于是就开始熟悉这个前端项目。项目中出现了如下几种注解:@Model、@Control、@View,发现都是来自于gfs-react-dm这个项目中,就看到了相应的文档,于是就有了这篇博文笔记(主要是摘抄的参考文档的内容,如有不妥,请告知,立删)。1、Model表示实体、数据模型,model中的方法和属性都该设置成
2017-08-20 21:03:41 521
原创 mac上解决java.rmi.server.ExportException- Port already in use- 1099; nested exception is- java.net.Bi
mac上解决java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use (Bind failed)tomcat启动报如下的错误:java.rmi.server.ExportException: Por
2017-08-05 16:01:49 12910 3
原创 #Java中的Pattern和Matcher类的详解
Java中的Pattern和Matcher类的详解在工作中又一次的接触到了Pattern和Matcher,其中涉及到Matcher类中的一些方法,例如:group(),groupCount()等,因此又找了相关资料看了下,觉得下面两篇博文讲解的挺好的,因此记录一下。http://tutorials.jenkov.com/java-regex/matcher.htmlhttp://tutorials.
2017-07-27 21:56:58 806
原创 SLF4J- Failed to load class "org.slf4j.impl.StaticLoggerBinder"
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”今天遇到了这样一个问题,问题提示如下:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.SLF4J: Defaulting to no-operation (NOP) logger implemen
2017-06-20 18:01:59 928
原创 Spring data Mongodb
Spring data MongoDBSpring Data MongoDB 官方给予的简介截图如下:翻译为:Spring Data MongoDB 是 Spring Data项目的一部分,旨在为新的数据存储提供一个熟悉且一致的机遇spring的编程模型,同时保留存储特有的特征和功能。Spring data MongoDB 实例第一步:新建一个Spring工程。过程略。第二步:添加相应的依赖包。p
2017-06-20 17:58:27 1145
原创 MongoDB学习笔记
MongoDB学习笔记最近在学习Spring,学到了Spring data MongoDB这一节,借此机会就把Mongodb这个文档性数据库的基本操作也学习下。MongoDB中有3元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。安装MongoDB数据库在学习之前首先是安装此数据库,在macbook上安装相当简单,直接在终端上使用如下的命令即可完成:brew i
2017-06-19 21:01:41 580
原创 Macbook上打开多个终端的方法
有时候我们需要打开多个终端,以前自己也遇到过需要打开多个终端,今天自己也遇到了,但是忘记了该如何打开,因此再次google了下,找到了在Macbook上打开多个终端的方法,为避免忘记还是纪录一下。方法有如下两种1、首先是的焦点在终端上(使用鼠标点击下终端)。然后使用快捷键command+N 即可得到另一个终端界面。(如果现在光标的焦点在浏览器上,那么就是新打开一个浏览器窗口)2、同样,光标的焦点在终
2017-06-19 15:31:56 24163 2
原创 Could not load JDBC driver class [com.mysql.jdbc.Driver]
Could not load JDBC driver class [com.mysql.jdbc.Driver]在上篇博文的实践过程中,遇到了如下一个问题,记录一下。1、Could not load JDBC driver class [com.mysql.jdbc.Driver]解决方法:将mysql-connector-java包导入即可。在pom.xml中导入该包的格式为:<dependenc
2017-06-06 14:48:12 6004
原创 《Spring JDBC 操作数据库》
《Spring JDBC 操作数据库》官方文档链接:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html1、Spring Framework JDBC 简介Spring Framework JDBC抽象提供的增值可能通过下表中列出的操作顺序显示出来。 该表显示了Spring将要处理哪些操
2017-06-06 14:46:48 2150
matlab2012b与vs2010交叉调用时的编译环境设置
2015-08-25
读取心电图txt格式文件数据并且显示的app
2015-05-15
MIT-BIH的心电图数据将V5导联的数据提取出来的txt的数据文件
2015-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人