自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何阅读源码

这里简单介绍了一下阅读源码中的心得,后续会写一些文章具体分析一波源码。

2023-06-29 20:38:50 386

原创 InnoDB的隔离级别和锁

前言这次主要来聊聊InnoDB中隔离级别和锁,主要包括三个部分:各种隔离级别存在的问题,InnoDB 中锁的介绍,各种隔离级别是如何加锁的。不同隔离级别下会出现的一致性问题:隔离级别脏读不可重复读幻读READ-UNCOMMITTED✅✅✅READ-COMMITTED❌✅✅REPEATABLE-READ❌❌✅SERIALIZABLE❌❌❌脏读:事务A可以读取到事务B修改但未提交的数据。不可重复读:同一个事务两次读取同一条记录

2022-04-06 09:07:54 729

原创 搞清楚JDK、JRE、JVM

前言本文简单地介绍了一下我们平常下载的JDK到底都有些什么内容,这些内容的主要作用又是什么。对于以后我们研究JVM的运行原理会有一定的帮助。JDK目录说明安装完jdk之后,切换至jdk的安装根目录,可以看到几个目录:bin、jre、src.zip、db、lib、include。bin:开发工具。里面可以看到一些我们很熟悉的工具,jar、java、javac、javadoc、javap、jconsole、jhat、jmap、jstack、jstat。jre:Java运行时环境。JRE包括Java虚

2021-05-20 22:37:04 555

原创 使用 Redis 实现 Feed 流

背景最近接到一个需求,用一句话来说就是:展示关注人发布的动态,这个涉及到 feed 流系统的设计。本文主要介绍一个一般企业可用的 Feed 流解决方案。相关概念下面先介绍一下关于 Feed 流的简单概念。什么是 feed 流Feed:Feed 流中的每一条状态或者消息都是 Feed,比如微博中的一条微博就是一个 Feed。Feed流:持续更新并呈现给用户内容的信息流。每个人的朋友圈,...

2019-11-23 17:22:54 3422 4

原创 懒才制造生产力 - 布隆过滤器实现去重工具

前言最近有个段子,程序员不要拷贝代码,而是要一行一行的重新抄过去。好嘛,段子归段子,笔主始终觉得 think more, code less,多思考,能少写的代码尽量少写,从而也与标题呼应上,懒才制造生产力。继上次写的 excel 工具类之后,这次又来给大家 show 一下笔主是如何释放生产力的。需求背景项目中经常会有触达需求,简单来说就是群发微信公众号消息。这里有个刚需就是去重,已经...

2019-08-27 12:31:16 603

原创 这样讲 SpringBoot 自动配置原理,你应该能明白了吧

前言小伙伴们是否想起曾经被 SSM 整合支配的恐惧?相信很多小伙伴都是有过这样的经历的,一大堆配置问题,各种排除扫描,导入一个新的依赖又得添加新的配置。自从有了 SpringBoot 之后,咋们就起飞了!各种零配置开箱即用,而我们之所以开发起来能够这么爽,自动配置的功劳少不了,今天我们就一起来讨论一下 SpringBoot 自动配置原理。本文主要分为三大部分:SpringBoot 源...

2019-05-22 18:00:34 5392 3

原创 Java Web 扫盲行动

前言这次分享讲一下 Java Web 相关的基础知识,主要就是 servlet 部分的知识。涉及到的知识点比较的多,如果同学们来不及看,可以先收藏起来,有空的时候再慢慢看哦!下面我们步入正题。1. HTTP 协议协议 就是一套约定好的规则,只要我们遵循其中的规则就能很好的进行沟通与协作。HTTP 协议也一样,HTTP 协议严格规定了 HTTP 请求和 HTTP 响应的数据格式,只要 HTT...

2019-04-25 22:43:47 488 1

原创 MySQL数据库快问快答

前言今天楼主给大家列一下关于数据库几个常见问题的要点,如果大家对其中的问题感兴趣,可以自行扩展研究。1. union all 与 union 的区别UNION和UNION ALL关键字都是将两个结果集合并为一个。UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。而UNION ALL只是简单的将两个结果合并后就返...

2019-04-08 21:57:37 361

原创 如何优雅的导出Excel

前言公司项目最近有一个需要:报表导出。整个系统下来,起码超过一百张报表需要导出。这个时候如何优雅的实现报表导出,释放生产力就显得很重要了。下面主要给大家分享一下该工具类的使用方法与实现思路。实现的功能点对于每个报表都相同的操作,我们很自然的会抽离出来,这个很简单。而最重要的是:如何把那些每个报表不相同的操作进行良好的封装,尽可能的提高复用性;针对以上的原则,主要实现了一下关键功能点:导...

2019-02-18 21:56:02 1321

原创 Java线程池了解一下

为什么需要使用线程池1、减少线程创建与切换的开销在没有使用线程池的时候,来了一个任务,就创建一个线程,我们知道系统创建和销毁工作线程的开销很大,而且频繁的创建线程也就意味着需要进行频繁的线程切换,这都是一笔很大的开销。2、控制线程的数量使用线程池我们可以有效地控制线程的数量,当系统中包含大量并发线程时,会导致系统性能剧烈下降。线程池做了什么重复利用有限的线程线程池中会预先创...

2019-01-28 15:48:19 1935 1

原创 来,带你手撕一个AOP

本文主要讲的是如何使用JDK动态代理实现简单的AOP。AOP是啥?如果你想在某些方法执行前后插入一些通用的处理,你可以考虑AOP。预备知识ProxyJDK中提供了一个Proxy类用于创建动态代理对象的静态方法,如果在程序中为一个或多个接口动态地生成实现类,就可以使用Proxy来创建动态代理类。Proxy提供了下面的方法来创建动态代理实例:public static Object new...

2019-01-25 16:07:25 185

原创 LinkedList真的是查找慢增删快?

测试结果废话不多说,先上测试结果。作者分别在ArrayList和LinkedList的头部、尾部和中间三个位置插入与查找100000个元素所消耗的时间来进行对比测试,下面是测试结果插入查找ArrayList尾部26ms12msArrayList头部859ms7msArrayList中间1848ms13msLinkedList尾部28ms9...

2018-11-30 17:31:06 2294 1

原创 JDBC加载数据库驱动源码分析

       今天在看JDBC编程的时候有个疑惑:为什么加载数据库驱动只需要下面这样的一句?它把Driver的Class对象创建出来却没有引用,这到底是几个意思?怎么看起来跟后面的代码完全是独立的,但是把它删除又会报错。Class.forName("com.mysql.jdbc.Driver");        首先来看看Class.forName(String className)...

2018-09-17 21:34:50 862

原创 原生Logger的logging.properties配置文件浅析

       这篇文章主要讲解一下Java自带的日志系统的配置文件。java.util.logging的默认的 logging.properties 存放在 jre/lib/logging.properties下,但是这个文件是不可编辑的。如果我们想测试一下这里面的配置项。我们得把这个文件复制拷贝出来,我把它复制出来放到了/Users/kun/Desktop/littleworld/loggi...

2018-09-16 21:02:14 9784

原创 Java中的String为什么是不可变的?

       String类是不可变类,一个String对象被创建以后,包含这个对象中的字符串序列是不可改变的。与其问String为什么是不可变的,还不如问String类是如何实现其对象不可变的。什么是不可变对象?       如果一个对象它被创建后,状态不能改变,则这个对象被认为是不可变的。String是如何实现其对象不可变?       首先需要补充一个容易混淆的知识点:当使用...

2018-09-03 21:27:55 20254 8

原创 Java中String、Integer常量池

Integer常量池              当我们创建两个Integer对象的时候,有可能会出现它们指向的内存地址一致的情况,下面就来详细的讲一下什么时候会出现这个情况。首先来看一下程序实例:public static void main(String[] args) { Integer aInt = 1; Integer bInt = 1; System....

2018-09-02 20:26:19 767

原创 计算机数据运算的那点儿事

       数据上的运算可以分为三大类:算术运算、移位运算和逻辑运算。逻辑运算       逻辑运算很简单,相应的位照着真值表来操作就可以。移位运算       移位运算移动模式中的位,改变为的位置。它们能向左或向右移动位。我们可以吧移位运算分成两大类:逻辑移位运算和算术移位运算。逻辑移位运算       逻辑移位运算应用于不带符号位的数的模式。原因是这些移位运算...

2018-09-01 19:28:53 2162

原创 计算机数字存储的那点儿事

     位(bit)是存储在计算中的最小单位;它是0或1。通常长度为8的位模式被称为一个字节(byte)。计算机中存储数字的主要有三种方法:无符号表示法、符号加绝对值表示法、二进制补码表示法。     1.无符号表示法     无符号整数就是没有符号的整数。它的范围结余0到正无穷大之间。然而,由于计算机不可能表示这个范围的所有整数,通常,计算机都定义了一个最大无符号整数常量,称为最大无符...

2018-09-01 17:42:29 2324

原创 计算机进制的那点儿事

        数字系统定义了如何用独特的符号来表示一个数字。在不同的系统中,数字有不同的表示方法。数字系统可以分为两类:位置化系统和非位置化系统。本文主要讲的是位置化系统。同学们静下心来看一看,其实很简单。位置化系统        位置化数字系统中,在数字中符号所占据的位置决定了其表示的值。在该系统中,数字这样表示:       它的值是:        其中,S是一套符号集;b...

2018-09-01 16:50:48 559

原创 springboot+mybatis环境搭建

springboot+mybatis环境搭建需要配置的东西并不是很多,博主是用eclipse+maven搭建的项目。如果你还不太清楚如何创建一个maven项目,可以参考如何创建一个maven项目。下面就正式开始搭建环境了,首先看一下整个工程的目录结构:在开始搭建之前首先在数据中创建一张测试用的表CREATE TABLE `user` ( `id` int(11) DEFA...

2018-07-24 20:20:02 858

原创 数据库为什么要建立索引?

一:什么是索引?索引(Index)是帮助MySQL高效获取数据的数据结构。二:为什么要建立索引?一个没有索引的数据库表就相当于一本没有索引的新华字段,当你想找出其中一个汉字的时候,无异于寻找MH370碎片啊。我们为指定的字段创建索引之后,当我们根据条件查找数据的时候,数据库引擎就可以利用查找算法(二分查找法)很高效的查出来。三:选择什么字段建立索引索引也是要占用存储空间的,建立索引的时候也是有一定...

2018-06-03 16:46:23 9872

原创 SQL优化

      在项目开发中,当数据表越来越大的时候,我们必须要解决的问题之一就是SQL语句的性能问题。下面就用一个自己亲手挖的坑来给大家讲讲SQL优化相关的一些知识。    背景:AAA表大概有两百万条记录,BBB表一百万。我需要把这两个表联合起来,然后根据条件去查询出相关的记录。刚开始写的SQL如下:SELECT adsId, phoneNum, COUNT(*) AS numFROM ( S...

2018-06-03 14:13:33 338

原创 mac下maven的安装配置与使用

出来实习快半年了,还有一个多月也就即将毕业了。我刚进公司的时候,项目刚刚上线,到现在接近50w日活,成长真不少(虽然曾经因为自己写的SQL性能太差把服务器CPU搞到爆血管两次)。你在项目过程中写的业务代码很多,在这个过程中感到很有成就感的,但是如果你只是满足于此,就很难进步了。想要提升自身的能力,还得靠自己在空闲的时间多点去学习,学习项目中相关的技术,学习你的算法逻辑能力。这个星期我们...

2018-05-13 00:15:19 140643 13

原创 Java生成JSON数据

      后台开发由于业务需求,需要把多个第三方api返回的json结果封装成统一的返回数据模型。我的解决办法就是先把第三方返回的结果一个一个拿出来,然后再封装成自己想要的json格式。这其中就涉及到用生成json数据的问题,首先给大家讲一下json的常见形式。     json的格式是:{key:value}  数组的格式是[ ]。[{key:value},{key:value}]这样就是一个...

2018-04-09 22:30:39 27966 6

原创 通过java发起http请求url中参数含有空格的问题

      开发项目的时候需要使用java发起http请求,遇到了java.io.IOException: Server returned HTTP response code: 400 for URL这个错误,但是把url放到postman中可以正常访问。造成这个问题的主要原因是因为url的参数中含有空格,我们只要把含有空格的参数URLEncoder.encode(param,"utf-8")一...

2018-04-04 10:32:26 16543 1

原创 effective coding小结

周六花了几个小时把effective coding这本小橙书看完了,主要讲的是编码过程中的一些习惯,希望我们能够形成规范,下面总结了一下。很多编程方式客观上没有对错之分,一致性很重要,可读性很重要。过分随意的代码会影响到可扩展性以及可维护性。不论是从性能,还是简洁优雅,都要具备‘精益求精’的工匠精神。代码可维护性和算法效率     个性化应尽量表现在系统架构和算法效率的提升上,而不是在合作规范上进...

2018-03-26 21:48:07 752

原创 springMVC框架的执行步骤

springMVC框架的执行步骤如下:1.发起请求到前端控制器(DispatcherServlet)2.前端控制器请求HandlerMapping查找Handler,可以根据xml配置、注解进行查找3.处理器映射器HandlerMapping向前端控制器返回Handler4.前端控制器调用处理器适配器HandlerAdapter去执行 Handler5.处理器适配器去执行Handler6.Hand...

2018-02-16 11:16:45 766 1

原创 mybatis中resultType与resultMap的区别

resultType:使用resultType进行输出映射,只有查询出来的列名与pojo中的属性一致,该列才可以映射成功。resultMap:如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作为一个映射关系,也能完成与pojo的关系映射。...

2018-02-15 14:48:11 345

原创 macOS环境下连接阿里云服务器ECS

本文主要介绍了在macOS环境下如何购买并连接到阿里云服务器ECS。(云翼计划,学生优惠版)首先登录阿里云的官网https://www.aliyun.com,拉倒最底下,点击学生机。点击切换至云服务器ECS,选择图中勾中的内容,点击购买。(需要进行学生认证,简单快捷,不需要太多的操作)购买成功后服务器的公网IP地址和初始密码会发到你的手机上面。购买成

2018-01-11 23:41:20 6571

原创 构建maven时No archetypes currently available的解决方法

方法1:eclipse->preferences->Maven->Archetypes->Add Remote Catalog在Catalog File中填写:http://repo1.maven.org/maven2/archetype-catalog.xml但是这个方法会导致archetype列表加载非常非常的慢,会一直显示Retrieving archetypes,所以我

2017-11-30 23:31:04 9513

原创 Git与GitHub有什么区别?

想要熟悉了解Git,建议从在终端输入指令的方式开始学习。Git:分布式版本管理工具,可以跟踪代码的变化历程。GitHub:Git的托管服务,我们可以把我们的代码放在GitHub上面存放,作为我们的远程仓库,团队成员就可以在上面下载你的代码了。我们也可以使用码云(gitee.com)来实现相同的功能,甚至我们可以搭建自己的Git服务器。

2017-11-20 21:30:32 1004

原创 无领导小组讨论如何带飞全组

昨晚刚参加完第一场无领导小组讨论面试,刚面试完感觉相当的自信,想着谁不过,我也能过。我是leader,没错就是这么强,第一次参加无领导就当上leader,而且是压倒性的leader。但是到了晚上其他人都接到复试的邀请了,而我没有。当时就纳闷,然后跟我的小郑同学买了个西瓜坐在小板凳上,把我面试的全程描述了一遍,结合面试官的评价:和稀泥(小郑是该公司的实习HR,帮我打听的消息)分析一下。好吧,豁然开朗

2017-10-27 16:29:18 3108 2

原创 使用循环为多个Struts2的select标签赋予默认值

对于一个码农来说,每天处于崩溃状态一万次丝毫不过分。今天通过HTML的select标签实现,从服务端接收一个状态数组,里面是0或1。根据数组里面的值分别给标签赋上相应的值。HTML代码如下: 有 无       初步的思路是使用Struts2的标签,在元素加载的时候,动态传入参数,使用JQuery的$("#selectId").val(1)来

2017-09-28 21:03:29 619

原创 Hibernate 中出现 xxx表 is not mapped xxx的问题

遇到这个问题,只能说是没有好好理解Hibernate。当我们执行如下语句的时候public int findCount() { String hql = "select count(*) from Room" ; List<Long> list = (List<Long>)this.getHibernateTemplate().find(hql); if(lis...

2017-09-28 15:49:29 11183 3

原创 基于XML配置的SSH三大框架整合

一:引入jar包1.引入Struts基本的jar包2.引入Hibernate的基本的jar包3.引入Spring基本的jar包二:引入相应的配置文件1.Struts框架的配置文件   web.xml   struts.xml2.Hibernate框架的配置文件   hibernate.xml(在ssh整合中该配置文件可以省略)   映射文件3

2017-09-26 20:07:37 560

原创 解决SSH项目中Action跳转之后,页面样式、图片丢失的问题

页面跳转之后,样式图片丢失是因为找不到文件的路径了。我们可以在文件路径的前面加上${pageContext.request.contextPath}就可以解决这个问题了。           ${pageContext.request.contextPath}它的作用是取出部署应用程序的名字,这样不管如何部署,所用的路径都是正确的。

2017-09-25 22:17:28 2234 2

原创 JQuery 常用的方法总结

1.选择器$('#a');//根据ID获取元素$('div');//根据元素名称选择元素$('.b');//根据class选择元素$('#a p');//组合选择器,选择ID为a下的p元素$('div:first');//伪类选择器,选择第一个div2.过滤器HTML代码

2017-09-19 17:52:47 796

原创 maven -Dmaven.multiModuleProjectDirectory system property is not set的问题

1.当compile maven项目的时候,控制台没有输出任何东西,也没有生成相应的文件。2.当compile maven项目,提示-Dmaven.multiModuleProjectDirectory system property is not set.解决办法:eclipse->Preference->Java->Installed JREs->选择JREs->Edi

2017-08-30 21:21:06 440

原创 Spring AOP 遇到NoClassDefFoundError: org/aopalliance/aop/Advice的解决方法

当我们使用Spring AOP的时候可能会遇到org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring-aop-schema-advice.xml]; nested excepti...

2017-08-20 12:17:38 7210

原创 servlet 向客户端返回图片数据

下面是servlet向客户端返回图片的二进制流的关键代码://想要返回图片的路径FileInputStream fis = new FileInputStream("/Users/kun/Desktop/ServerImage/lxj12345.jpeg") ;//得到文件大小int size = fis.available();byte data[] = new byte[size]

2017-08-14 16:21:41 4648 1

空空如也

空空如也

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

TA关注的人

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