自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Megustas_JJC的博客

stay hungry stay foolish

  • 博客(233)
  • 资源 (19)
  • 收藏
  • 关注

原创 长连接网关设计与实践的一些理解

前言HTTP协议是一种无状态的、基于TCP的请求/响应模式的协议,请求只能由客户端发起、服务端进行响应。在大多数场景,这种请求/响应的Pull模式已经可以满足需求。但在某些情形,例如消息推送、通知等应用场景,需要实时将数据同步到客户端,这就要求服务端支持主动Push数据。短连接与长连接,短轮询与长轮询短连接:每次Http请求都会建立Tcp连接,管理容易长连接:只需要建立一次Tcp连接,以后Http请求重复使用同一个Tcp连接长、短连接是客户端与服务端建立和保持TCP连接的机制;而长、短轮询是指客户

2021-11-26 17:48:05 1555

原创 UUID/签名/加解密工具并发场景下隐藏的性能瓶颈问题

在线上运行的服务,偶发观测到部分服务有Block Thread的现象,排查发现是生成UUID造成的,那么看一下为什么一个static会造成block。看下实现可以发现:UUID.randomUUID底层共用同一个SecureRandom对象,ng.nextBytes(randomBytes)会调用其engineNextBytes方法,该方法签名存在对象同步锁sun.security.provider.SecureRandom#engineNextBytes ,在高并发的情况下会存在线程间的锁竞争,存在性

2021-11-06 00:30:11 889 1

原创 震惊,IDEA会私自执行你的代码?--- IDEA在debug时调用toString()方法的问题及解决

what?IDEA在debug时会自动私自调用我们的代码么?是的,会调用对象的toString()方法。一般在debug时很难发现这种现象,并且多数情况下调用一下toString()方法没有什么问题(但是一些客户端服务端交互的项目,会有意想不到的问题出现。例如Dubbo的AbstractConfig类,对这个类的debug会导致其子类ReferenceConfig的initialized属性错误的被修改为true,进而无法正确的生成Dubbo代理。),就使我们更不容易察觉。但是今天在debug一个本地模拟

2021-05-09 21:19:27 885

原创 浅谈RPC及Netty在RPC中的应用

什么是RPCRPC协议:只是定义数据传输格式和传输方式,是一种应用层协议。传输方式:有基于HTTP传输数据的RPC Over HTTP,也有基于TCP的RPC Over TCP等。数据格式:双方协商定义,一般包括以下几点:1、类名2、方法名3、参数类型(用来确定具体执行的方法,有方法重载)4、参数值(个人对于网络协议这里了解的不够深入,只能广义上讲下对rpc的认识)官方说明:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP

2021-05-06 00:07:56 524 3

原创 如何用Netty写一个IM聊天系统

什么是Netty简单概括,Netty是一个Java开源框架,是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠的网络IO程序。Netty 本质是一个 NIO 框架,适用于服务器通讯相关的多种应用场景。准备能够很好的理解这个project,最好对SpringBoot、Netty、长连接及im即时通讯有相关的提前了解。目录结构及源码项目源码:https://github.com/MonkeyJJC/netty-im-demo,有任何问题也欢迎交流讨论项目基于gradle,目录如下

2021-04-26 01:09:07 1048 1

原创 Java性能分析工具Jconsole及visualvm初体验

jconsolejconsole是jdk自带的Java监视和管理控制台,在终端输入:jconsole就可以进行启动这里可以连接本地进程。也可以进行远程监控,这就需要知道远程的连接的端口用户名密码等信息。visualvm1.下载插件在plugins中搜索插件,然后安装2.重启完后进行配置 prefences->other settings->visuialvmmac...

2020-04-20 15:49:05 488

原创 G1 垃圾收集器参数配置及调优

列表为 G1 GC垃圾收集器常用配置参数: 可选项及默认值 描述 -XX:+UseG1GC 采用 Garbage First (G1) 收集器 -XX:MaxGCPauseMillis=n 设置最大GC 暂停时间。这是一个大概值,JVM 会尽可能的满足此值 -XX:Initiat...

2020-04-12 15:49:03 6675

原创 java.lang.NumberFormatException: For input string: “null”的坑

话不多说,先上代码: String value = String.valueOf(conditionMap.get(reason)); return StringUtils.isEmpty(value) ? -1 : Integer.valueOf(value);按照预期,conditionMap获取不到值,最后应该return一个-1,但是实际却抛了异常,java.lang.Num...

2020-03-23 11:27:09 2038

原创 git如何撤销commit,恢复之前状态

相信大家经常会遇到这样的问题,一个改动其实是不想提交的,结果不小心commit了,那么如何恢复?在 A 状态 commit 后,又进行了一些编辑,这些编辑并不想全部保存 commit 上去。这个状态叫 C。后来一不小心,把 C 状态 commit 了,工作区的内容被提交至暂存区,状态变为 B commit 了。现在要撤消 commit C => B 这个动作,并使文件恢复成 C 状态。解...

2020-03-15 20:30:14 2654

原创 如何在 GitHub上删除某个 Repository 中的某个文件夹

上传项目的时候有些需要忽略的文件夹并未加入.gitignore文件中,导致上传了一些并不想上传的文件。(比如不小心将.idea、out、nowcoder.iml上传到了github上)我们想要在github上面删除,但又不想在本地删除然而,github界面上只能删除文件而不能删除文件夹所以只能用指令来操作步骤:(以删除.idea文件夹为例) #--cached不会把本地的.idea删除g...

2019-10-11 17:21:27 351

原创 Java8 DateTimeFormatter使用

已经9102年了,别再使用simpledateformat了,和SimpleDateFormat不同的是,DateTimeFormatter不但是不变对象,它还是线程安全的。因为SimpleDateFormat不是线程安全的,使用的时候,只能在方法内部创建新的局部变量。而DateTimeFormatter可以只创建一个实例,到处引用。public class DataTimeUtils { ...

2019-09-28 17:22:12 3182

原创 gradle打印依赖树

gradle -q :模块名:dependencies --configuration compile >> test.txt

2019-09-24 10:56:05 4350

原创 Map转为JavaBean(支持自动类型转换)

背景是有如下一个map目标转换为如下的JavaBean:即需要三点:1.下划线的key转为驼峰2.字段匹配3.类型自动转换为JavaBean的类型具体实现:1.下划线的key转为驼峰public class GuavaUtils { /** * LOWER_HYPHEN test-data * LOWER_UNDERSCORE test_data...

2019-09-10 22:37:24 1057

原创 Idea注解不生效的解决办法

例如使用了@Slf4j进行打日志,可能提示log没有声明,具体解决办法:For the lombok plugin to function correctly, please enable itSettings -> build -> compiler -> annoation processors设置让注解生效即可...

2019-07-26 11:22:23 6388

原创 git常用操作汇总

首先在Stash上进行账户的创建,接下来在本地进行初始化等操作:1.配置用户信息git config --global user.name "xxx"git config --global user.email "[email protected]"2.clone项目代码克隆项目代码,一般先fork到自己的git仓库,然后再从自己的git仓库clone到本地git clone http://xx...

2019-07-10 12:45:59 205

原创 url中包含特殊字符及处理办法

问题:在spring boot中使用rest API风格调用接口,参数出现带特殊字符的数据,如姓名xx.yy,或者,号分割的字符串例如:http://localhost:8080/business/joinbiz/xx.yyhttp://localhost:8080/business/joinbiz/x,y正常接收的话: @RequestMapping(value = "/joi...

2019-04-24 21:55:25 3138

原创 SpringBoot统一返回值处理及异常处理

先整体看下代码结构:返回结果封装类RestResult:@Data@AllArgsConstructor@NoArgsConstructorpublic class RestResult { private Integer code; private String message; private Object data; public static...

2019-04-24 12:15:43 1590 1

原创 springboot实现数据Excel导出

经常会遇到给用户提供数据下载的场景,将相关数据导出为Excel,因此对此进行了相关工具方法的封装:pom: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> ...

2019-04-21 17:46:36 559

原创 IDE专业版激活码

http://idea.lanyus.com/进入sudo vi /private/etc/hosts 修改host,之后进入ide激活即可

2019-04-20 23:05:37 3113

转载 java try后面括号的作用

Java7新特性,支持使用try后面跟随()括号管理释放资源例如通常使用try代码块try { fis = new FileInputStream(source); fos = new FileOutputStream(target); byte[] buf = new byte[8192]; int i; ...

2019-04-09 10:48:44 625

原创 cron表达式及在线生成器

cron表达式字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - * ? / L C # 年(可选) 留空, 1970-209...

2019-03-19 17:19:55 4450

原创 乐观锁与悲观锁

读到一些数据库锁相关的文章,逐步做一个收集整理:深入理解乐观锁与悲观锁MySQL中的共享锁与排他锁

2019-03-06 21:20:15 189

原创 数据库创建及删除唯一索引

alter table `lob_etymon` drop index `u_lob_id_code_status`;alter table `lob_etymon` drop index `u_lob_id_name_status`;alter table `lob_etymon` add unique key `u_lob_id_code` (`lob_id`,`en_name`);a...

2019-01-24 15:59:36 3065

原创 数据仓库建模:定义事实表粒度及事实表关联非最低粒度的维度的情况

事实表粒度维度建模中一个非常重要的步骤是定义事实表的粒度。定义了事实表的粒度,则事实表能表达数据的详细程度就确定了。定义粒度的例子如下:1.客户的零售单据上的每个条目。2.保险单上的每个交易。定义好事实表的粒度有很大的用处。第一个用处就是用来确定维度是否与该事实表相关。例如,对于粒度细到医疗单据上条目项的事实表来说,医疗结果是不会作为维度和它进行关联的,因为它们不在同一个粒度上。但是,对...

2019-01-11 00:33:16 2774

原创 SQL中join的用法解析(inner join、full out join、left join)

话不多说,先上个对于各种join情况的总结图:例如有如下关系的数据:1、inner joinselect * from Table_ajoin Table_b on Table_a.id_a = Table_b.id_b2.1、full outer join等于full joinselect * from Table_afull join Table_bon Table...

2019-01-08 19:23:36 11808

原创 yarn安装

curl -o- -L https://yarnpkg.com/install.sh | bash

2019-01-07 16:11:13 249

转载 数据立方体与OLAP

前面的一篇文章——数据仓库的多维数据模型已经简单介绍过多维模型的定义和结构,以及事实表(Fact Table)和维表(Dimension Table)的概念。多维数据模型作为一种新的逻辑模型赋予了数据新的组织和存储形式,而真正体现其在分析上的优势还需要基于模型的有效的操作和处理,也就是OLAP(On-line Analytical Processing,联机分析处理)。数据立方体关于数据立方体...

2018-12-26 15:00:59 823 1

转载 多维数据模型

多维数据模型是数据仓库的一大特点,也是数据仓库应用和实现的一个重要的方面,通过在数据的组织和存储上的优化,使其更适用于分析型的数据查询和获取。多维数据模型的定义和作用多维数据模型是为了满足用户从多角度多层次进行数据查询和分析的需要而建立起来的基于事实和维的数据库模型,其基本的应用是为了实现OLAP(Online Analytical Processing)。当然,通过多维数据模型的数据展示、...

2018-12-26 13:42:16 3136

转载 数据仓库的基本架构

数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。其实数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。因此数据仓库的基本架构主要包含的是数据流入流出的过程,可以分为三层——源数据、数据仓库、数据应用:从图中可以看出数据仓库的数据来源于不同的...

2018-12-26 12:15:45 316 1

转载 数据仓库的源数据类型

数据仓库中集成了企业几乎所有的可以获取到的数据以用于数据分析和决策支持。进入到数据仓库中的数据无外乎三种类型:结构化数据、半结构化数据和非结构化数据,它们经过转化后以某种形式统一地储存在数据仓库中,即通常说的ETL(Extract, Transform, Load,抽取、转换、装载)的过程。下面主要说一下这三种数据类型的区别,它们分别包括哪些源数据以及这些数据在网站数据分析中的作用。结构化数据...

2018-12-26 11:42:20 1981

原创 Spring上传文件(upload files)

前端实现:可以使用iView组件,实现文件的选择与上传,话不多说,直接上代码(注意,action中的路径及后端接收的路径,name即@RequestParam,通过name后端获取相应文件):&amp;amp;lt;template&amp;amp;gt; &amp;amp;lt;div&amp;amp;gt; &amp;amp;lt;Upload action=&amp;quot;/test&amp

2018-12-24 23:46:37 2540 3

原创 深入浅出数据库索引

1.索引的作用:提高数据查询效率2.常见索引模型:哈希表、有序数组、搜索树3.哈希表:键 - 值(key - value)。4.哈希思路:把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置5.哈希冲突的处理办法:链表6.哈希表适用场景:只有等值查询的场景7.有序数组:按顺序存储。查询用二分法就可以快速查询,时间复杂度是:O(log(N)...

2018-12-13 16:12:12 360

原创 SpringMVC请求过程源码解析

对SpringMVC从请求到最后响应输出的过程结合源码进行了一个总结梳理,其中对于Spring底层代码理解还不到位,难免有不准确的地方,欢迎指正,先看下整个流程的流转图:结合底层代码,可以将其细化一些:接下来看具体源码:SpringMVC实战(二)-运行原理Spring MVC 拦截器(HandlerInterceptor)使用Spring MVC HandlerIntercepto...

2018-11-26 21:33:54 359

原创 Json过滤器(基于spring自定义注解的方式,对字段进行过滤,支持嵌套类型,并接口响应体格式统一封装)

在实际的开发过程中,会经常遇到如下情景:后台需要给前端返回JSON数据,但是查询出来返回的数据里面有很多属性是不需要的本文通过自定义注解的方式进行实现,对response进行拦截,通过注解参数,设置字段信息(即,过滤哪些字段,保留哪些字段),并将bean自动封装为json,作为结果返回。实现的具体代码可以在github中直接下载运行:https://github.com/MonkeyJJ...

2018-11-25 17:01:13 3647

转载 一条SQL查询是如何执行的

mysql&gt; select * from T where ID=10;我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。所以今天我想和你一起把 MySQL 拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程,让你对 MySQL 有更深入的理解。这样当我们碰到 MySQL 的一些异常或者问题时,就能够直戳本质,更为快速地定位并解决问题。My...

2018-11-23 11:37:11 1516 1

转载 java中switch 与 else if 性能比较

https://mp.weixin.qq.com/s/8Q87XZPEfGhfInbAuRAeWA

2018-11-22 11:19:16 509

原创 @ConfigurationProperties与@Value进行属性的注入

ConfigurationProperties@ConfigurationProperties 是spring-boot中特有的注解。使用场景如下:假设application.properties 文件存在redis配置如下:redis.config.maxTotal=5000 redis.config.maxIdle=10 redis.config.maxWaitMillis=500...

2018-11-20 12:35:50 1348

转载 @EnableAutoConfiguration、ApplicationContext、@Configuration注解、@Bean注解以及配置自动扫描、bean作用域

ApplicationContext先通过一个简单的例子理解下ApplicationContext的作用public class MainApp { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationCo...

2018-11-19 21:31:33 481

原创 Java并发编程实战:闭锁CountDownLatch,栅栏CyclicBarrier与信号量Semaphore

整体上对三个概念进行一个说明:CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:CountDownLatch是闭锁,相当于一扇门:在闭锁达到结束状态之前,这扇门一直是关闭的,并且没有任何线程能够通过,当到达结束状态时,这扇门会打开,允许所有线程通过。当闭锁到达结束状态之后,将不会再改变状态,将永远保持打开状态。栅栏能够阻塞一组线程,直到...

2018-11-13 12:24:32 790

转载 Java中的CopyOnWriteArrayList

1、Copy-On-Write 是什么?首先我讲一下什么是Copy-On-Write,顾名思义,在计算机中就是当你想要对一块内存进行修改时,我们不在原有内存块中进行写操作,而是将内存拷贝一份,在新的内存中进行写操作,写完之后呢,就将指向原来内存指针指向新的内存,原来的内存就可以被回收掉嘛!网上兄弟们说了,这是一种用于程序设计中的优化策略,是一种延时懒惰策略。都说优化优化,那么到底优化了哪些问题...

2018-11-12 16:07:49 371

GroovyinActionwzb_jb51.rar

Groovy in Action高清中文版,从0介绍Groovy结合Java的相关用法,对于入门或者有一定时间经验的都适合,已经打成压缩包,下载之后直接解压pdf文档即可

2020-03-05

Json字段过滤器

通过自定义注解的方式,实现对response的拦截,并过滤字段,将bean自动封装为json

2018-11-25

ETL工具箱pdf版本

ETL工具箱pdf版,ETL必备的一本书,具体介绍了ETL及相关使用方法

2018-08-10

Flask Web开发 基于Python的Web应用开发实战电子版

Flask Web开发 基于Python的Web应用开发实战 高清电子版

2018-03-09

MUSIC算法源码

文件中是MUSIC算法的源代码matlab仿真程序,并带有各个变量的注释

2017-11-29

LeetCode题解

LeetCode题解电子版

2017-03-03

跟我学Spring MVC

跟我学SpringMVC高清电子版

2017-03-03

九宫格日记网实现

通过Java Web+ajax+jQuery+MySQL实现九宫格日记网

2017-01-04

MySQL中文使用手册

MySQL官方使用手册中文版

2016-12-12

Effective Java高清版

Effective Java的高清版,非影印版

2016-12-08

beanutils包

beanutils 的jar包及说明文档

2016-12-08

UNIX环境高级编程

UNIX环境高级编程第二版

2016-08-03

Doodle Jump源代码

使用C++实现Doodle Jump

2016-07-07

算法导论答案

算法导论课后习题详细答案

2016-07-06

ESPRIT算法

ESPRIT实现空间谱估计

2016-07-05

波达方向估计

matlab实现MUSIC算法

2016-07-05

KMP模式匹配算法

讲解完成了KMP模式匹配算法用于查找字符串

2016-07-05

空空如也

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

TA关注的人

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