自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Duuuhs的博客

Think more,code less.

  • 博客(21)
  • 收藏
  • 关注

原创 线程安全与锁优化

一. 线程安全1.现实中的对象在一项工作进行期间,会被不断地中断和切换,对象的属性(数据)可能会在中断期间被修改和变脏,而这些事件在计算机世界则是很正常的事情。对于这部分的主题“高效并发”来讲,首先需要保证并发的正确性,然后在此基础上实现高效。2.定义:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用...

2019-11-18 22:15:00 245

原创 浅谈分页插件PageHelper

前言:PageHelper是一款开源免费的Mybatis第三方物理分页插件。所谓物理分页,也就是每次都会根据要查询的参数去对应的数据库进行查询,真正实现了按需动态查询。逻辑分页,一般是指一次性查询所有的数据,再由service根据参数传递给前端对应页数的数据,还有一种就是传递给前端所有的数据,再由前端控制显示的数据。因此,对于数据量大的情况下,物理分页要比逻辑分页性能高很多。分页思想:笔者在...

2019-09-08 23:09:00 1070

原创 浅谈Java内存模型

概述:衡量一个服务性能的高低好坏,每秒事务处理数(Transactions Per Seconds,TPS)是最重要的指标之一,它代表着一秒内服务端平均能响应的请求总数,而TPS值与程序的并发能力又有非常密切的关系。对于计算量相同的任务,程序线程并发协调得越有条不紊,效率自然就会越高;反之,线程之间频繁阻塞甚至死锁,将会大大降低程序的并发能力。注意,Java的内存模型要与Java的内存结构相区分...

2019-08-21 00:27:27 222

原创 实践:mysql中exists与in性能对比

背景:本人在工作开发的时候遇到过项目中一种情况,在业务数据日益增长的情况下,某个服务日志经常会出现服务超时的情况,代码分析后发现问题出在某一条比较复杂的sql语句中使用到了not in,直接将他改为not exists之后,发现服务执行要快了很多。测试准备:用户身份识别记录表tbl_visitor_identification,数据量为305W;新用户身份识别记录表tbl_visitor_...

2019-08-13 00:19:19 1324

原创 浅谈Java内存区域中堆区的结构

部分内容来自《深入理解Java虚拟机第二版》。引言:Java内存区域是JVM中重要的组成部分,对于我们理解Java虚拟机底层具有极大的帮助。Java内存区域一般分为五块,分别是:方法区(Method Area),堆区(Java Heap),虚拟机栈(Java Virtual Machine Stack),本地方法栈(Native Method Stack),程序计数器(Program C...

2019-08-01 23:23:26 2352

原创 《高性能mysql》第一篇

tip:本篇是基于《高性能mysql第三版》总结出的笔记类博文,只作为个人学习的记录,若有机会,还是希望大家能实际去阅读该书。Mysql服务器逻辑架构图如下所示:排他锁(X锁),也叫写锁共享锁(S锁),也叫读锁锁粒度: 在给定的资源上,锁定的数据越少,则系统的并发性越高.表级锁:开销最小的策略,锁粒度较大,服务器会为诸如ALTER TABLE之类的语句使用表级锁,而忽...

2019-07-20 22:22:14 162

原创 3.关联表时出现null字段

在实际工作中,经常会遇到需要关联表的场景,常见的关联有左连接,右连接,内连接等。关联的时候需要做到对相应的关联字段做关联,避免出现数据发散。有时候会发现需要关联的字段有null的出现,那么假如两个表中关联字段出现null=null的情况,是否会对他进行关联呢?验证开始:建表:create table if not exists user1(id numeric(5),name ...

2019-07-02 22:25:08 7271 6

原创 github中readme的一些用法

标题。不同等级之间是以井号 # 的个数来标识的。一级标题有一个 #,二级标题有两个# ,以此类推。#一级标题##二级标题###三级标题####四级标题#####五级标题######六级标题注意井号#和标题名称要并排写作一行,显示效果如图:斜体:可以使用* 或 _ 包围文字,例如Hello World。加粗:用两个 * 或 _ 包起来的话,达到加粗字体的左右,...

2019-06-30 23:50:40 1519

原创 2. 给数据库中查询出的null字段设置一个默认值

有时候从数据库获取数据的时候,假如遇到一些特殊情况,例如需要避免数据库放弃索引从而进行全文搜索,null字段的判断会影响索引的使用;或者是数据库字段中在shell脚本进行二次加工,null字段有时候会引起整条数据都为null的情况等。这个时候就需要在入库的时候对数据库进行一些处理。mysql:使用ifnull函数:ifnull(arg1,arg2),arg1表示被查验的数据,arg2表示当...

2019-06-28 22:50:08 1100

原创 1.数据库语句截取某个字段的字符串

第一种情况:利用指定字符串截取对应其他字符串mysql: substring_index(str,delim,count),其中str为被截取的字符串;delim为指定字符串;count计数,如果为整数,则从左边开始数,如果为负数,则从右边开始数。例子: 截取固定地址生成规则eccp后且.html前的字符串: url=http://buy.ccb.html/firstch...

2019-06-27 23:20:29 1576

原创 NoSql的四大类型

1 键值数据库相关产品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached应用:内容缓存优点:扩展性好、灵活性好、大量写操作时性能高缺点:无法存储结构化信息、条件查询效率较低使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)2 列族数据库相关产品:BigTa...

2019-06-24 22:48:31 864

原创 盘点配置springboot踩过的坑

前言:springboot总的来说是springmvc与spring的结合体,构建springboot项目少了很多不必要的配置,但是其中还是有一些需要关注的点需要注意到,本人在配置springboot中遇到一些大的小的坑,有一些以前配置ssm的都没注意到,随笔此文,方便日后查看。1.启动项目出现:mybatis Field xxxMapper in xxxx required a bean o...

2019-05-13 14:05:09 471

原创 浅谈Arrays.asList()方法

一.引言:实际操作汇总,我们会遇到需要将数组转化为list的情况,这个时候我们可以借助Java的Arrays类的方法进行便捷操作,接下来来看以下操作的例子:Integer[] arr= {1, 2, 3};//1List<Integer> list = new ArrayList<>(Arrays.asList(arr));//2list.add(4);Syste...

2019-05-01 18:03:22 1139

转载 IDEA配置github和一些基本的操作

github是现在常用的代码托管平台,由于本人老是忘记一些步骤,故随笔这么一篇方便自己以后查看。本文主要参考https://www.cnblogs.com/jinjiyese153/p/6796668.html,感谢大佬。由于github原先就在本机中配置好了,但是出于整个流程完整性,还是贴出来一些基本的步骤。1.在github中创建一个账号:https://github.com/join?...

2019-04-24 14:33:03 681

原创 背包问题

本体来源于牛客网试题广场。题目描述:牛牛准备参加学校组织的春游, 出发前牛牛准备往背包里装入一些零食, 牛牛的背包容量为w。牛牛家里一共有n袋零食, 第i袋零食体积为v[i]。牛牛想知道在总体积不超过背包容量的情况下,他一共有多少种零食放法(总体积为0也算一种放法)。输入描述:输入包括两行 第一行为两个正整数n和w(1 <= n <= 30, 1 <= w <...

2019-04-23 21:06:03 226

原创 快速排序的Java实现

首先先看一下快速排序的百度百科解释:快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。思路:以一个数为基准数(一般...

2019-04-18 15:43:52 123

原创 二分法的延伸算法题

ps:本题源自牛客网剑指offer。题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。讲解:这个可以理解为二分法的变形题目,有序数组选择一个元素作为轴进行左右互...

2019-04-10 17:44:41 279

原创 二分查找(折半查找)

适用范围:数组有序在有序且数组元素庞大的情况下查找的速度比较快要求:查找某个有序数组中是否包含某个指定,存在返回该数,不存在返回-1.代码如下:public static int BinarySearch(int target, int[] arr){ int left = 0; int right = arr.length-1; w...

2019-04-10 14:08:33 150

原创 浅谈Arrays.sort()原理

首先先来看一下Arrays.sort()使用的例子。 //注意一定要用Integer对象类 Integer[] a1 = {34, 57, 46, 89, 98, 12, 55, 84, 29}; Integer[] a2 = {34, 57, 46, 89, 98, 12, 55, 84, 29}; //增序,Arrays.sort()默认升序...

2019-04-10 00:29:57 41595 5

转载 ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量

原文转自http://www.cnblogs.com/xiezie/p/5511840.html这里要讨论这些常用的默认初始容量和扩容的原因是:当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。加载因子的系数小于等于1,意指 即当 元素个数 超过 容...

2019-04-09 14:30:07 170

原创 mysql隐藏业务字符(手机号)

一般有两种做法:第一种:通过mysql的concat、left、right系统函数:语法说明作用:将多个字符串连接成一个字符串。语法:concat(字符串1,…,字符串n)。作用:从左边开始截取字符串。语法:left(字符串,截取长度)。作用:从右边开始截取字符串。语法:right(字符串,截取长度)。demo:SELECT student_name,student_...

2019-04-03 19:40:36 380

空空如也

空空如也

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

TA关注的人

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