- 博客(62)
- 资源 (8)
- 收藏
- 关注
原创 项目代码 if/else 过多,引起程序猿口吐莲花
一、吐槽模式项目开发周期短,迭代速度快,时间久了之后,代码中可能会充斥着大量的if/else,一层一层的嵌套,让人短时间内不可能领悟该段代码的逻辑,久而久之,后面接手的人可能真的会口吐莲花!//就像这样,一步一步变成金字塔if (condition1) { action1(); if (condition2) { action2(); if (condition3) { action3(); if (con
2021-02-08 16:34:12 665 1
原创 ThreadPoolExecutor 线程池异常消失之刨根问底
一、情景复现昨天,公司一个同事,急急忙忙的跑过来找我,说他的项目,出现了一个非常诡异的BUG,不知道什么情况?同事:我用五个线程计算学生各个科目的成绩,最后汇总,本地都是正常的,但是一到测试环境就少了一科成绩,也没抛出异常,什么鬼?油七:任务线程怎么做的?线程异常处理了吗?为啥不打印日志呢?灵魂三连击,哈哈哈(开玩笑的,这不是我的处事风格)油七:行,咱们先看一下代码…,一顿扫描占卜之后,大致知道啥情况了。同事:哥,我这程序还有救吗,客户下了死命令,今天解决啊。油七:没事,小伙子,不要慌,你先把线
2021-02-04 12:22:21 1147
原创 一段代码,两倍时差,直击并发编程伪共享
一、前言【闲话开篇】:这段时间项目接近尾声,我终于闲了一点,又拿起了早先未看完的书《JAVA高并发程序设计》,强迫自己学习。看到其中介绍《无锁的缓存框架:Disruptor》时,接触到了一个概念——伪共享(false sharing),说是会影响并发程序的执行性能,被很多人描述成无声的性能杀手,突然感觉到了自己知识的匮乏,罪过啊。伪共享(false sharing),究竟是怎样一回事呢?不急,我们先倒杯水边喝边回顾,以前上学时丢下的计算机组成原理相关知识点。二、概念解析CPU 缓存(三级)CPU
2021-01-29 15:53:21 228
原创 动手构建地铁关系网,实现最短路径查询
一、前言打开手机‘北京地铁’APP,输入起始点:霍营,终点:北京南站,发现系统给我们推荐了两条路线。最短时间路线与最少换乘路线,并且分别给出了耗时与乘坐里程费。看到这里,不禁开启了靓仔疑问,假如给你地铁站相关数据,如何构建这样的关系网络呢?(尽量少写代码,毕竟我这个人懒的不行,花最少的功夫,整最炫的效果,咦)1.整理地铁站点数据,处理成echarts图表所需要的结构2.整理地铁站点数据,自己写代码实现,能实现(好累啊…)3.整理地铁站点数据,导入 Neo4j 中,点击查看分析:方案一,不仅要处理
2020-09-09 09:30:08 1561 2
原创 《闲扯Redis十一》Redis 有序集合对象底层实现
一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。原文解析备注: 本节中涉及到的跳跃表实现,已经在上节《闲扯Redis十》Redis 跳跃表的结构实现一文中详情分析过,本文中将直接引用,不再赘述。二、命令实现 因为有序集合键的值为有序集合对象,所以用于有序集合键的所有命令都是针对有序集合对象来构建的。命令ziplist 编码的实现方法
2020-09-09 09:28:23 166
原创 Mysql 如何实现全文检索,关键词跑分
一、前言今天一个同事问我,如何使用 Mysql 实现类似于 ElasticSearch 的全文检索功能,并且对检索关键词跑分?我当时脑子里立马产生了疑问?为啥不直接用es呢?简单好用还贼快。但是听他说,数据量不多,客户给的时间非常有限,根本没时间去搭建es,所以还是看一下 Mysql 的全文检索功能吧!MySQL 从 5.7.6 版本开始,MySQL就内置了ngram全文解析器,用来支持中文、日文、韩文分词。在 MySQL 5.7.6 版本之前,全文索引只支持英文全文索引,不支持中文全文索引,需要利用分
2020-08-25 11:35:52 277
原创 《闲扯Redis十》Redis 跳跃表的结构实现
一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。原文解析备注: 按照分析顺序,本节应该说道有序集合对象了,但是考虑到有序集合对象的底层实现中使用到了跳跃表结构,避免在分析有序集合时造成突兀,所以本节先来看看 redis 中跳跃表结构的具体实现。二、结构解析 Redis 的跳跃表由 redis.h/zskiplistNode 和 redis.h/.
2020-08-11 12:18:16 168
原创 《闲扯Redis九》Redis五种数据类型之Set型
一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。原文解析Redis 中的 Set 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中。二、底层实现 集合对象的编码可以是 intset 或者 hashtable 。 intset 编码的集合对象使用整数集合作为底层实现, 集合对象包含的所有元素都被保存在整数集合里面。 举.
2020-07-30 10:12:49 158
原创 《闲扯Redis八》Redis字典的哈希表执行Rehash过程分析
一、前言随着操作的不断执行, 哈希表保存的键值对会逐渐地增多或者减少, 为了让哈希表的负载因子(load factor)维持在一个合理的范围之内, 当哈希表保存的键值对数量太多或者太少时, 程序需要对哈希表的大小进行相应的扩展或者收缩。原文解析二、实现分析1.rehash过程分析扩展和收缩哈希表的工作可以通过执行 rehash (重新散列)操作来完成。Redis 对字典的哈希表执行 rehash 的步骤:1.为字典的 ht[1] 哈希表分配空间, 这个哈希表的空间大小取决于要执行的.
2020-07-28 09:34:18 141
原创 《闲扯Redis七》Redis字典结构的底层实现
一、前言上节**《闲扯Redis六》Redis五种数据类型之Hash型** 中说到 Hash(哈希对象)的底层实现有:1、ziplist 编码的哈希对象使用压缩列表作为底层实现2、hashtable 编码的哈希对象使用字典作为底层实现原文解析那么第二种方式中的字典究竟是怎样的一种结构呢?疑问:字典, 又称符号表(symbol table)、关联数组(associative array)或者映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构。在字典.
2020-07-26 20:49:00 155
原创 《闲扯Redis六》Redis五种数据类型之Hash型
一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。原文解析Redis 中的 hash 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中。二、实现分析 由上述结构图可知,Hash类型有以下两种实现方式:1、ziplist 编码的哈希对象使用压缩列表作为底层实现2、hashtable 编码的哈希对象使用字典作为底层实现.
2020-07-26 20:43:18 175
原创 《闲扯Redis五》List数据类型底层之quicklist
一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。原文解析Redis 中的 list 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中。二、底层解析1、上节回顾 上节**《闲扯Redis四》List数据类型底层...
2020-04-24 09:26:13 217
原创 《闲扯Redis四》List数据类型底层编码转换
一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。原文解析Redis 中的 list 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中。二、编码转换 上节**《闲扯Redis三》Redis五种数据类型之List型...
2020-04-15 16:40:52 241
原创 《闲扯Redis三》Redis五种数据类型之List型
一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。Redis 中的 list 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中。二、操作命令 List数据类型在 Redis 中的相关命令::命令描述用...
2020-04-02 17:14:49 265
原创 《闲扯Redis二》String数据类型之底层解析
原文出处:http://www.yund.tech/zdetail.html?type=1&id=585ee331353551a44b29a9e9a09a1570作者: jstarseven一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重...
2020-03-28 13:57:58 156
原创 《闲扯Redis一》五种数据类型之String型
一、前言Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。 String是Redis的最基本的数据类型,可以理解为与 Memcached 一模一样的类型,即Key-Value型的数据,String类型是二进制安全的,另外 Redis 的 S...
2020-03-28 13:14:35 1004
原创 在Windows环境中安装Neo4j
原文出处:http://www.yund.tech/zdetail.html?type=1&id=dee0403105d7c2585e80f002965c2513作者:jstarseven图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vert...
2020-03-24 15:17:09 190
原创 java多线程并发控制countDownLatch和cyclicBarrier的使用
java主线程等待所有子线程执行完毕在执行,这个需求其实我们在工作中经常会用到,比如用户下单一个产品,后台会做一系列的处理,为了提高效率,每个处理都可以用一个线程来执行,所有处理完成了之后才会返回给用户下单成功。我们通过以下的几种方法来解决:一、使用Thread的join()等待所有的子线程执行完毕,主线程在执行,thread.join()把指定的线程加入到当前线程,可以将两个交替执行的线...
2020-03-24 15:16:17 205
原创 使用maven构建多模块项目,分块开发
原文出处:http://www.yund.tech/zdetail.html?type=1&id=79dec7c1d56292419acec78afcbc1095 作者:jstarseven在多人使用Maven协作开发项目时,尤其是稍微上点规模的项目,每个RD的工作都细分到具体功能和模块,有些模块甚至还要单独部署。我们假设有这样一个商城项目,包括以下几个模块:...
2020-03-24 15:14:53 1139
原创 maven-assembly-plugin插件使用详解
maven-assembly-plugin使用描述(拷自maven-assembly-plugin 主页)The Assembly Plugin for Maven is primarily intended to allow users to aggregate the project output along with its dependencies, modules, site d...
2020-03-24 15:13:47 4875
原创 Spring Boot+redis存储session,满足集群部署、分布式系统的session共享
本文讲述spring-boot工程中使用spring-session机制进行安全认证,并且通过redis存储session,满足集群部署、分布式系统的session共享。java工程中,说到权限管理和安全认证,我们首先想到的是Spring Security和Apache Shiro,这两者均能实现用户身份认证和复杂的权限管理功能。但是如果我们只是想实现身份认证(如是否登录、会话是否超时),...
2020-03-24 15:11:47 263
原创 spring security 实践 + 源码分析
前言本文将从示例、原理、应用3个方面介绍 spring data jpa。以下分析基于spring boot 2.0 + spring 5.0.4版本源码概述Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了Spring IoC,DI(控...
2020-03-24 15:10:42 560
原创 40个Java多线程问题总结
前言Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就...
2020-03-24 15:09:37 89
原创 Java日志框架:logback详解
为什么使用logback记得前几年工作的时候,公司使用的日志框架还是log4j,大约从16年中到现在,不管是我参与的别人已经搭建好的项目还是我自己主导的项目,日志框架基本都换成了logback,总结一下,logback大约有以下的一些优点:内核重写、测试充分、初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升 logback非常自然地直接实现了slf4j,这个严...
2020-03-24 15:08:39 347
原创 《亿级流量网站架构核心技术》概要
《亿级流量网站架构核心技术》目录一览本书暂定名称为《亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统》,如有好的书名建议欢迎留言,必当重谢。内容已交由出版社编辑,相信很快就会和大家见面。主要内容结构和目录如下所示:第一部分概述高并发原则无状态拆分服务化消息队列数据异构缓存银弹并发化高可用原则降级限流切流量可回...
2020-03-24 15:07:23 214
原创 Js解析Json数据获取元素JsonPath与深度
原文出处:http://www.yund.tech/zdetail.html?type=1&id=c2b21696839eccdef2e9b085b9e064f6作者: jstarseven JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java,JsonPath 对于 JS...
2020-03-24 10:08:05 1568
原创 ReentrantLock实现原理分析
原文出处:http://www.yund.tech/zdetail.html?type=1&id=ef94715a2838f06ab03b8621c23d1613 作者:jstarseven 码字挺辛苦的.....ReentrantLock主要利用CAS+CLH队列来实现。它支持公平锁和非公平锁,两者的实现类似。 CAS:Compare and Swap,比...
2020-03-21 16:18:41 300
原创 Java高并发之设计模式
原文出处:http://www.yund.tech/zdetail.html?type=1&id=34e52a515cd0e4d120255c90f33396af 作者:jstarseven本文主要讲解几种常见并行模式, 具体目录结构如下图.单例单例是最常见的一种设计模式, 一般用于全局对象管理, 比如xml配置读写之类的.一般分为懒汉式, 饿汉式....
2020-03-21 16:17:57 157
原创 Java高并发之线程池详解
原文出处:http://www.yund.tech/zdetail.html?type=1&id=961cc31f7bb2409f3a401478dc2cc38e 作者:jstarseven线程池优势在业务场景中, 如果一个对象创建销毁开销比较大, 那么此时建议池化对象进行管理.例如线程, jdbc连接等等, 在高并发场景中, 如果可以复用之前销毁的对象, ...
2020-03-21 16:16:02 159
原创 JVM 监控,调优,调试
原文出处:http://www.yund.tech/zdetail.html?type=1&id=0de81780ff8febe3ec05dc36f92fd478 作者:jstarsevenJVM监控工具Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下:jps用途:jps用来查看JVM里面所有进程的具...
2020-03-19 09:12:51 251
原创 linux pidstat 命令详解
原文出处:http://www.yund.tech/zdetail.html?type=1&id=79a1236dcaef6ab9fda051ab4a65e4ab作者:jstarsevenpidstat 概述pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的...
2020-03-19 09:09:15 565
原创 java实现网页结构分析,网页列表发现
原文出处:http://www.yund.tech/zdetail.html?type=1&id=ee06002e2b83e7677c30aedc52d3429e作者:jstarseven现在的网站千奇百怪,什么样格式的都有,需要提取网页中的列表数据,有时候挨个分析处理很头疼,本文是一个页面结构分析的程序,可以分析处理页面大致列表结构。废话不多说,我也不会说,sho...
2020-03-19 09:08:25 343
原创 《七哥说道》第一章:风雨知秋之进城三人
<编码之余,记录一下生活,写成小说分享,哈哈哈>原文出处:http://www.yund.tech/zdetail.html?type=3&id=e80c1774435fa5a446f75501960cbcba作者:jstarseven 15年的夏天过去的很快,大三的课程过的更快,即将要面临找工作的七哥,也是颤颤悠悠,恍恍惚惚。...
2020-03-19 09:03:53 503
原创 《七哥说道》第二章:初出茅庐之拜师学艺
原文出处:http://www.yund.tech/zdetail.html?type=3&id=8dd2a1cc14665fe8a0bd29165f12a1d7作者:jstarseven 怀着对第一份工作的遐想,15年6月1号(儿童节啊),我开始了我的入职之旅。北京XX网络技术有限责任公司,一家汽车服务行业公司,背着我的双肩背包,我蹦蹦悠悠的找到公司人事小姐...
2020-03-19 09:02:07 245
原创 《七哥说道》第三章:志远淋雨怒辞职,误入保险黄老萍
原文出处:http://www.yund.tech/zdetail.html?type=3&id=99a53a61a1d75d734b0bba965b3b395d作者:jstarseven【声明】本章内容由大志远和老萍编写素材,七哥整理而成,绝对真实。 第一章的时候说到,大志远在我还在找工作的时候,就以4000的实习工资进入了一家初创公司上班了,殊不知他的这段...
2020-03-19 09:00:48 301
原创 《七哥说道》第四章:理想在远方,现实在流浪
原文出处:http://www.yund.tech/zdetail.html?type=3&id=90e7589c41c62172fad423bc888475aa作者:jstarseven 本是追梦的年龄,又怎可过于安静,枉自蹉跎流光。 不知不觉,已经12月了,冬天了,天也冷了,还未下雪,不知北京的雪是怎么样的。公司上班也没那么忙了,压力也没那么大了,感觉自己可以胜...
2020-03-19 08:58:09 208
原创 《七哥说道》第五章:入职惨做苦力,画饼一望无际
原文出处:http://www.yund.tech/zdetail.html?type=3&id=9a4a419e513cca9f502060a18d0bc034作者:jstarseven “你是住在回龙观东大街附近吗,那先不急下班,一会我开车顺带你回去吧!”第二家公司的老板,扭头看了一眼我的电脑屏幕,如是说道。 这是我入职这家公司上班的第二天...
2020-03-19 08:56:39 176
原创 《七哥说道》第六章:不见雪的冬天,耐人寻味
原文出处:http://www.yund.tech/zdetail.html?type=3&id=7a050e32b74e913c9a22da0ebb32dc43作者:jstarseven ”看不见雪的冬天不夜的城市,我听见有人欢呼有人在哭泣。“ 转眼间,到北京都已经半年多了,我的第二份工作也在挖坑埋坑跳坑中结束了,是豁达呢还是埋怨呢,还是豁达些吧!...
2020-03-19 08:54:48 147
原创 《七哥说道》第七章:流水的需求,铁打的程序员
原文出处:http://www.yund.tech/zdetail.html?type=3&id=82b5fab977446a2fb193155453edfc90作者:jstarseven 杀死一个程序员不需要用枪,改三次需求就可以了。 “来来来,你把这个检索逻辑调整一下,把那个数据排序的规则改一下,还有这个数据处理的工作要不你先处理下,这个着急要的...
2020-03-19 08:52:57 328
原创 图形数据库Neo4j基本了解
原文出处:http://www.yund.tech/zdetail.html?type=1&id=f519df57f29b22863d2a6a79326bd22b 作者:jstarseven在深入学习图形数据库之前,首先理解属性图的基本概念。一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图。顶点也称作节点(...
2020-03-18 20:37:40 624
Java人力资源管理系统
2015-04-21
VIP消费信息管理系统
2014-12-02
JavaSwing简易人员管理系统
2014-12-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人