自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

转载 14个实用的数据库设计技巧

1. 原始单据与实体之间的关系可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情...

2019-11-15 13:46:24 185

转载 不了解Java反射机制?看这篇就行!

写在前面:什么是java反射机制?我们又为什么要学它?当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。我们认为java并不是动态语言,但是它却有一个非常突出的动态相关机制,俗称:反射。IT行业里这么说,没有反射也就没有框架,现有的框架都是以反射为基础。在实际项目开发中,用的最多的是框架,填的最多的是类,反射这一概念就是将框架和类揉在一起的调和剂。所以,反射才是接触项目开发...

2019-11-14 11:57:36 88

转载 写 JSP 的痛点,真的非常痛!

一、前戏前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。核心思想是前端html页面通过ajax调用后端的restuful ...

2019-11-13 14:24:15 163

转载 count(1)、count(*)、count(列)有什么区别?

执行效果:1.count(1) and count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count()的效果是一样的。但是在表做过分析之后,count(1)会比count()的用时少些(1w以内数据量),不过差不了多少。如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的...

2019-11-12 14:18:10 156

转载 Spring是如何使用责任链模式的?

关于责任链模式,其有两种形式,一种是通过外部调用的方式对链的各个节点调用进行控制,从而进行链的各个节点之间的切换。另一种是链的每个节点自由控制是否继续往下传递链的进度,这种比较典型的使用方式就是Netty中的责任链模式。本如何在Spring中文主要讲解我们使用这两种责任链模式。外部控制模式对于外部控制的方式,这种方式比较简单,链的每个节点只需要专注于各自的逻辑即可,而当前节点调用完成之后是否...

2019-11-11 14:53:50 360

转载 20 亿的 URL 集合,如何快速判断其中一个?

假设遇到这样一个问题:一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M)内快速判断出。可能很多人首先想到的会是使用HashSet,因为HashSet基于HashMap,理论上时间复杂度为:O(1)。达到了快速的目的,但是空间复杂度呢?URL字符串通过Hash得到一个...

2019-11-11 14:33:17 224

转载 java干货 | 深入分析 string.intern() 方法

首先我们来看一段代码:public class InternTest { public static void main(String[] args) { String str1 = new String("hello") + new String("world"); str1.intern(); String str2 = "helloworld"; ...

2019-11-09 11:48:57 84

转载 你干了这么久程序员,竟然不知道Code Review怎么搞?

我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能根本就没有Code Review的环节,代码质量只依赖于事后的测...

2019-11-08 15:55:38 257

转载 一波骚操作,我把 SQL 执行效率提高了 10,000,000 倍

场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表:数据100条学生表:数据70000条学生成绩表SC数据70w条查询目的:查找语文考100分的考生查询语句:select s.* from Student s where s.s_id in (select s_id from SC sc where sc.c_id = 0 and sc.score = 100...

2019-11-07 15:06:11 98

转载 一张图看懂 SQL 的各种 join 用法

下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。具体分解如下:1.INNER JOIN(内连接)SELECT FROM Table_A AINNER JOIN Table_B BON A.Key = B.Key2.LEFT JOIN(左连接)SELECT FROM Table_A ALEFT JOI...

2019-11-06 14:11:30 66

转载 为什么Windows/iOS操作很流畅,而Linux/Android却很卡顿呢?

先说是不是,再问为什么。我就知道有人会这么说,然而那样就成了一篇议论文了,而我只是想写一篇随笔。所以,不管事实是不是那样,反正我就是觉得Windows,MacOS,iOS都很流畅,而Linux,Android却很卡。当然了,这里说的是GUI,如果考量点换成是Web服务的吞吐和时延,那估计结论要反过来了,不过那是客户端程序感觉到的事,作为人,who cares!我写这篇文章还有一个意思,那就是想...

2019-11-05 16:42:00 326

转载 平常你是怎么对Java服务进行调优的?

Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的臃肿,各种性能问题开始纷至沓来。Java 应用性能的瓶颈点非常多,比如磁盘、内存、网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等。笔者根据个人经验,将 Java 性...

2019-11-04 17:24:49 206

转载 为什么要学习数据结构和算法? 为什么?

你是不是觉得数据结构和算法,跟操作系统、计算机网络一样,是脱离实际工作的知识?可能除了面试,这辈子也用不着?尽管计算机相关专业的同学在大学都学过这门课程,甚至很多培训机构也会培训这方面的知识,但是据我了解,很多程序员对数据结构和算法依旧一窍不通。还有一些人也只听说过数组、链表、快排这些最最基本的数据结构和算法,稍微复杂一点的就完全没概念。当然,也有很多人说,自己实际工作中根本用不到数据结构和算...

2019-11-02 16:20:33 276

转载 阿里规定超过3张表,禁止join,为何

一、 问题提出《阿里巴巴JAVA开发手册》里面写超过三张表禁止join,这是为什么?二、问题分析对这个结论,你是否有怀疑呢?也不知道是哪位先哲说的不要人云亦云,今天我设计sql,来验证这个结论。(实验没有从代码角度分析,目前达不到。可以把mysql当一个黑盒,使用角度来验证这个结论) 验证结论的时候,会有很多发现,各位往后看。三、 实验环境vmware10+centos7.4+mysq...

2019-11-01 17:00:05 447

转载 Java:如何更优雅的处理空值?

导语在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。业务中的空值场景存在一个UserSearchService用来提供用户查询的功能:p...

2019-10-31 15:15:16 192

转载 “12306”的架构到底有多牛逼?

每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!12306 抢票,极限并发带来的思考虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306 服务”承受着这个世界上任何秒杀系统都无法超越的 QPS,上百万的并发再正常不...

2019-10-30 16:39:49 871 1

转载 如何更规范化编写Java 代码

一、MyBatis 不要为了多个查询条件而写 1 = 1当遇到多个查询条件,使用where 1=1 可以很方便的解决我们的问题,但是这样很可能会造成非常大的性能损失,因为添加了 “where 1=1 ”的过滤条件之后,数据库系统就无法使用索引等查询优化策略,数据库系统将会被迫对每行数据进行扫描(即全表扫描) 以比较此行是否满足过滤条件,当表中的数据量较大时查询速度会非常慢;此外,还会存在SQL ...

2019-10-29 11:54:13 67

翻译 比Redis还快5倍的中间件,为啥这么快?

今天给大家介绍的是KeyDB,KeyDB项目是从redis fork出来的分支。众所周知redis是一个单线程的kv内存存储系统,而KeyDB在100%兼容redis API的情况下将redis改造成多线程。上次也跟大家说了,redis多线程正式版将在今年底发布,大家拭目以待线程模型KeyDB将redis原来的主线程拆分成了主线程和worker线程。每个worker线程都是io线程,负责监听...

2019-10-28 16:53:33 114

转载 Redis 内存满了怎么解决

我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。1、通过配置文件配置通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小。//设置Redis最大占用内存大小为100Mmaxmemory 100mbredis的配置文件不一定使用的是安装目录下面的redi...

2019-10-26 15:50:36 183

转载 SQL 性能优化梳理

前言本文主要针对的是关系型数据数据库MySql。先简单梳理下Mysql的基本概念,然后分创建时和查询时这两个阶段的优化展开。1 基本概念简述1.1 逻辑架构第一层:客户端通过连接服务,将要执行的sql指令传输过来第二层:服务器解析并优化sql,生成最终的执行计划并执行第三层:存储引擎,负责数据的储存和提取1.2 锁数据库通过锁机制来解决并发场景-共享锁(读锁)和排他锁(写锁...

2019-10-25 15:39:34 92

转载 Java finally语句到底是在return之前还是之后执行?

网上有很多人探讨Java中异常捕获机制try…catch…finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的:(1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。...

2019-10-24 16:50:27 85

翻译 Redis 分布式锁的正确实现方式

前言分布式锁一般有三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁本篇将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下...

2019-10-23 17:11:06 62

翻译 如何设计 API 接口,实现统一格式返回?

前言在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟;以前后端人员瞧不起前端人员,那现在后端人员要重新认识一下前端,前端已经很成体系了)。一般系统的大致整体架构图如下:需要说明的是,有些小伙伴会回复说,这个架构太简单了吧,太low了,什么网关啊,缓存啊,消...

2019-10-22 17:27:02 165

空空如也

空空如也

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

TA关注的人

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