自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

朱玉强的博客

个人学习记录

原创 ScheduledThreadPoolExecutor实现原理解析

原文地址:《ScheduledThreadPoolExecutor实现原理解析》1、什么是ScheduledThreadPoolExecutor通熟的来就是一个线程池,只不过这个线程池中的所有工作线程需要处理的都是计划任务,这个任务分为两种,一种是重复任务,一种是一次性任务,所谓一次性任务,基本上是指定在提交任务多长时间之后开始执行,而重复性任务就是在任务被执行完成之后,在一定的时间间隔之后还...

2019-07-03 09:56:19 219 1

转载 SMP、NUMA、MMP的简介

原文地址:《SMP、NUMA、MMP的简介》1、什么是SMP架构SMP是指对称多处理器结构,是指服务器中多个CPU对称工作,无主次或从属关系。各CPU共享相同的物理内存,每个 CPU访问内存中的任何地址所需时间是相同的,因此SMP也被称为一致存储器访问结构(UMA:Uniform Memory Access)。对SMP服务器进行扩展的方式包括增加内存、使用更快的CPU、增加CPU、扩充I/O(...

2019-05-28 22:56:25 376

转载 Fork/Join框架的简单使用

原文地址:《Fork/Join框架的简单使用》1、什么是Fork/Join框架fork操作的作用是把一个大的任务划分成若干个较小的任务。在这个划分过程一般是递归进行的。直到将任务划分到合适的大小为止。需要恰当地选取子问题的大小。太大的子问题不利于通过并行方式来提高性能,而太小的子问题则会带来较大的额外开销。每个子问题计算完成后,可以得到关于整个问题的部分解。join操作的作用是把这些分解任务的...

2019-05-28 22:54:54 224

转载 ThreadLocal简单使用

原文地址:《ThreadLocal简单使用》1、什么是ThreadLocal每一个ThreadLocal能够放一个线程级别的变量,可是它本身能够被多个线程共享使用,并且又能够达到线程安全的目的,且绝对线程安全。这里的安全只是表示在当前线程中创建的对象不会被其他的线程修改。 这跟ThreadLocal中的内部实现有关,关于TreadLocal的具体实现在后期再聊。2、为什么使用ThreadLo...

2019-05-28 22:53:00 128

转载 ThreadLocal的实现机制

原文地址:《ThreadLocal的实现机制》1、ThreadLocal的作用ThreadLocal 用一种存储变量与线程绑定的方式,在每个线程中用自己的 ThreadLocalMap 安全隔离变量,这里的ThreadLocalMap可以近似的理解为Map,这个Map与线程绑定,每个线程都拥有一个Map,Map中存储的值以ThreadLocal对象为key,value为指定的具体对象。2、T...

2019-05-28 22:51:50 393

转载 ThreadPoolExecutor的实现机制

原文地址:《ThreadPoolExecutor的实现机制》1、什么是ThreadPoolExecutorThreadPoolExecutor是一个 ExecutorService一个具体实现,在实际项目中,主要使用ThreadPoolExecutor维护的线程队列中的任意一个空闲线程去执行每个提交任务。说的直白点就是在实际项目中,没有办法为每个提交的任务立马分配一个线程,所以在程序中维护一个...

2019-05-28 22:50:04 87

转载 Hash地址冲突解决之开放定址法

原文地址:《Hash地址冲突解决之开放定址法》1、什么是hash冲突hash函数也被称为散列函数,就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值,也就是不同的输入值可能得到相同的输出值。当在使用数组存储对象时,如果使用对象的hash值来分...

2019-05-28 22:48:04 905

转载 HASH地址冲突解决之链地址法

原文地址《HASH地址冲突解决之链地址法》1、什么是链地址法在hash冲突产生时,将相同具有相同hash值的对象以链表的形式存储,更直白的表述就是数组中的每个元素不在是具体的每个要存储的对象了,每个元素代表具有相同hash值对象组成的链表,通过对象内部的指针可以查询到下一个具有相同hash值的对象。 简单总结:将产生冲突的值以链表的形式连起来2、链地址法如何解决快速查询问题HashMap在...

2019-05-28 22:46:21 910

转载 CopyOnWrite的实现机制

原文连接《CopyOnWrite的实现机制》1、什么是CopyOnWrite和单词描述的一样,他的实现就是写时复制, 在往集合中添加数据的时候,先拷贝存储的数组,然后添加元素到拷贝好的数组中,然后用现在的数组去替换成员变量的数组(就是get等读取操作读取的数组)。这个机制和读写锁是一样的,但是比读写锁有改进的地方,那就是读取的时候可以写入的 ,这样省去了读写之间的竞争,看了这个过程,你也发现了...

2019-05-28 22:44:38 509

原创 http/https请求中如何优雅的对请求参数和输出参数的key进行处理

在实际的程序编写中,特别是微服务间的调用时,经常会出现一个请求的,其入参的key值定义非常的不规范,导致服务端想要接受参数时,请求体内部的属性也定义的乱七八糟。举个例子:如果一个post请求是以这种参数格式发送过来的:{ "json_name":"json_test", "json_value":"test123", "json_id":"1"}那么在不对key进行处理的情

2018-11-25 10:41:44 1653

原创 面试记录————简单的字符串压缩实现

@Test public void zipString() { String data="AAABBBaaaeeefssaaffss"; char[] dst = new char[data.length()]; data.getChars(0,data.length(),dst,0); List<ByteInf...

2018-06-12 08:47:59 3854

原创 关于Mybatis框架中Interceptor接口的简单使用

关于Mybatis中插件的声明需要在configuration的配置文件中进行配置,配置文件的位置使用configLocation属性指定。测试中使用的config文件内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config...

2018-06-08 16:40:23 2021

原创 Mybatis初始化加载流程————获取接口的动态代理实例

在前面两篇博客中分别介绍了系统是如何将定义的接口Mapper接口注册《Mapper接口的注册》到系统中,系统又是如何绑定接口类名与用来生成接口的MapperFactoryBean之间的关系《接口代理工厂类注册》。本篇博客将分析系统是如何根据调用时传入的beanName找到接口的动态代理对象的。关于测试代码中的配置文件就不贴出来的,在前面几遍关于mybatis的博客中已经贴出了。 在注册Map...

2018-06-08 15:21:07 649

原创 Mybatis初始化加载流程————接口代理工厂类注册

本篇博客是接着上一篇博客的《Mybatis初始化加载流程————Mapper接口注册》,不过跟上一篇博客没有太多的代码上的承接关系。先看一下工程的配置文件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans

2018-06-08 12:02:55 362

原创 Mybatis初始化加载流程————Mapper接口注册

本篇博客是接着上一篇博客的《Mybatis初始化加载流程—-配置文件解析》,里面使用到的接口和配置文件是一样对的。这里的Mapper接口注册,也只是注册即将用来生成MapperProxy对象的MapperProxyFactory实例,在后面获取接口代理的时候会直接使用MapperProxyFactory的getObject方法,MapperProxyFactory类实现了FactoryBean&l...

2018-06-08 10:22:06 1608

原创 Mybatis初始化加载流程————配置文件解析

本次测试的实例中的相关配置文件如下: application.xml文件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans&amp

2018-06-07 11:47:40 1748

原创 关于python 字符串的总结

# coding=utf-8import chardetstring = " HelloWorld lo lollll"# 使用len函数查看字符串长度print len(string)# 从字符串最左边开始去除指定的字段串,默认字符串为空格# 如果给定的字符串为unicode编码# 先将带处理的字符串转换成Unicode格式再处理# 进过处理,s2的结果为Hello W...

2018-05-31 16:22:06 149

原创 Java解析xml文件之Dom4j

本篇博客主要使用实例讲解如何使用om4j解析xml文件,不会对源码做分析。直接结合代码进行说明。 测试解析的xml文件如下:<?xml version="1.0" encoding="UTF-8"?><changeFileName> <transactionInfo> <detail name="sourceDirec...

2018-05-26 17:33:46 92

原创 Java解析xml文件之JDOM

本篇博客主要使用实例讲解如何使用jdom解析xml文件,不会对源码做分析。直接结合代码进行说明。 测试解析的xml文件如下:<?xml version="1.0" encoding="UTF-8"?><changeFileName> <transactionInfo> <detail name="sourceDirecto...

2018-05-26 17:27:56 1304

原创 Java解析xml文件之SAX

本篇博客主要使用实例讲解如何使用dom即系xml文件,不会对源码做分析。直接结合代码进行说明。 测试解析的xml文件如下:<?xml version="1.0" encoding="UTF-8"?><changeFileName> <transactionInfo> &am

2018-05-26 17:18:41 118

原创 Java解析xml文件之DOM

本篇博客主要使用实例讲解如何使用dom即系xml文件,不会对源码做分析。直接结合代码进行说明。 测试解析的xml文件如下:<?xml version="1.0" encoding="UTF-8"?><changeFileName> <transactionInfo> <detail name="sourceDirecto...

2018-05-26 17:07:16 131

原创 Spring的AOP原理实现分析(上)

Spring中AOP的实现主要分为两个部分,一是将在xml中定义的切面信息解析并且注册到BeanFactory中,二是根据切面的相关的信息生成动态代理,实现在运行时对相关对象行为的修改。本篇博客主要介绍Spring是如何将在xml中定义的切面信息解析出来并注册到BeanFactory中的。 本次测试的xml配置文件如下:<?xml version="1.0" encoding="U...

2018-05-26 16:12:17 116

原创 使用SpringBoot实现文件上传

本篇博客使用实例说明如何使用springboot实现单文件上传、多文件上传和多文件下载,在实例中会给出前端代码后后端代码。前端代码如下:<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="htt...

2018-05-13 23:06:46 5292 3

原创 Mybaits中if、choose、foreach标签的使用

在使用mybatis的时候,经常会使用到一些特殊的标签,这些标签,可以动态改变sql语句的查询条件,查询的字段等,通过使用这些特殊的标签,在mybatis的数据库sql语句时,就像在写普通的java程序一样,可以对输入进行一些判断,选择操作等。 下面就一次说一下这些标签的使用! 首先看一下if标签: <select id="selectWithIf" parameterType="map"

2018-05-06 21:16:01 1118

原创 mybatis中sql标签的使用

mybatis中sql标签重要是为了避免在项目开发的过程中重复编写大量相同的sql语句,例如下面的查询语句: <select id="selectCountryAndCity" parameterType="map" resultMap="countryAndCity1"> SELECT country.Code as country_code, country

2018-05-06 16:40:53 4919

原创 mybatis中association、collection和discriminator的使用

在使用Mybatis中定义resultMap的时候,经常会遇到这三个比较常用的标签association、collection和discriminator,本篇博客就在上两遍博客的基础上,讲解如何使用这个三个标签。下面依次进行介绍,首先看一下association: 先看一下两个不同的resultMap定义:<resultMap id="city" type="com.entities.City"

2018-05-06 16:28:38 2670

原创 Mybatis中ResutlType和ResultMap的区别

在使用Mybatis进行查询的时候,在结果封装方面有两个选择:ResultType和ResultMap! 首先说一下ResultType,在使用ResultType的时候可以指定返回结果为java中常用的类型,比如字符串、map等,但是一般来说,在项目开发过程中,一般会在java中定义一个bean用来封装表中一条记录中所有的字段信息。还是以前面博客中使用的City表为例,表的结构如下: 在jav

2018-05-05 21:44:44 1053 1

原创 Mybatis进行增删改查操作

在上一篇博客中大致讲述了如何使用mybatis的相关插件自动的生成mapper.xml和mapper接口,如果不清楚的可以参考一下上篇博客《mybatis自动生成接口插件的简单使用》 在上篇博客的基础上,填在相应的代码,主要包括:相关的service和controller,以及application.yaml文件等,下面来进行一次讲解! 首先看一下applicaiton.yaml文件,因为使用的

2018-05-05 18:46:43 173

原创 mybatis自动生成接口插件的简单使用

关于mybatis-generator插件的使用,主要是编写插件的配置文件。关于本次实例的所使用到的数据库信息如下,数据库名为:world,其中包括3张表,分别为:city,country,countrylanguage city表的结构如下: country表结构如下: countrylanguage表表结构如下: 稍后这些数据都会在后面给出的,有需要的朋友可以直接通过使用sql语句导入进

2018-05-05 11:37:04 327

原创 Bean实例化过程分析

在上一篇博客中介绍了Spring初始化加载流程,本篇博客将在上篇博客的基础上,详细介绍一下Bean的实例化过程,如果没有看过上篇博客(Spring初始化流程加载分析)的朋友可以先看一下。一个Bean对象在实例化之前,需要准备好相关的信息,bean的类型,bean实体对象中相关属性的值,恰好这些信息在解析xml配置文件的时候都是可以获得的,这些信息都将会保存在BeanFactory中。下面我们开始分析

2018-03-24 17:35:22 414

原创 Spring初始化加载流程分析

关于Spring框架的介绍,网上有很多非常好的详细的文章,如果在本篇博客中没有了解到自己想要的东西,个人能力有限,只能使用博客记录一下自己目前了解的知识点了!流程分析的线路为: 初始化环境—>加载配置文件—>实例化Bean—>调用Bean显示信息

2018-03-24 14:38:13 12271 1

原创 关于mysql-python的简单事务操作

在上篇博客中主要介绍了关于使用mysql-python进行简单的数据库操作。本篇博客主要是使用篇博客的内容,然后添加事务操作。内容很简单,就是在操作出现错误的时候回退所有未提交的操作。

2018-03-03 15:13:09 1834

原创 关于mysql-python的模块的简单使用

上篇博客介绍了如何解决在安装mysql-python中出现的问题,如果你遇到了其他的问题只能自己去google了,本篇博客只是简单介绍关于mysql-python模块的简单使用方法。主要分为表的创建、增、删、改和查。表的创建关于表的创建主要是使用Cursor对象执行我们事先定义好的sql语句。关于Cursor,在mysql-python模块中提供了几个在功能上有些差异的Cursor,主要分为这几种

2018-03-03 11:37:52 334

原创 关于安装mysql-python报错的问题总结

关于安装mysql-python报缺少config_win.h文件的解决方法

2018-02-25 12:57:01 4187 1

原创 使用SpringMVC返回json字符串

最近开始接触SpringMVC这个框架,这个框架使用起来很方便,框架搭起来之后,写起代码几乎都是一个模式。当然要走到这一步必须保证你的SpringMVC的相关配置都已经完成,并且配置正确!作为我的关于S平ringMVC的首篇博客,本篇博客主要说名如何配置SpringMVC,并且可以使之正常的返回Bean实体,这里的bean实体一般返回到前端都是以Json字符串的形式返回的。使用的开发工具为eclip

2018-01-14 13:50:20 9701

原创 OpenCV产生随机数及Point类型转换

使用Opencv生成随机数,以及不同CvPoint类型之间的转换(opencv中虽然提供了丰富的方法然我们可以对图像进行操作,但是一些基础的操作方法还是需要知道一下,方便我们理解阅读源码,个人是这么认为的)!具体的代码如下所示: //1-b CvRNG rng = cvRNG(0); int integer1 = cvRandInt(&rng); int integer

2017-10-30 19:43:05 722

原创 Android蓝牙通讯(三)————蓝牙通讯的实现

在前两篇博客中大致介绍了蓝牙相关的基础知识,不了解的朋友可以查看前两篇博客: Android蓝牙通讯(一)————蓝牙功能的相关权限 Android蓝牙通讯(二)————蓝牙的相关操作在本篇博客中我将介绍如何实现两个蓝牙设备之间的通讯,蓝牙的通讯类似于socket的通讯,在蓝牙通讯中没有绝对的设备充当server角色,基本上就是发送连接请求的设备充当client角色,而server一般会在开

2017-10-28 14:12:56 650

原创 Android蓝牙通讯(二)————蓝牙的相关操作

接着上一篇博客说,当我们把蓝牙的权限部分解决了之后,就可以使用蓝牙的相关的功能了! 基本功能包括:打开蓝牙设置蓝牙的可见性开始搜索周边可见设备尝试连接设备取消搜索周边设备关闭蓝牙下面就上面的基本操作给出相关的介绍和代码:打开蓝牙 打开蓝牙有两种方式,我们可以通过BluetoothAdapter直接使用enable方法,直接打开蓝牙设备,这种方法不会询问/通知用户蓝牙的状态被改变(不

2017-10-22 15:59:43 554

原创 Android蓝牙通讯(一)————蓝牙功能的相关权限

蓝牙有关权限的说明,以及在6.0之后的版本中,在蓝牙使用方面存在哪些变动,如何解决因为权限问题导致无法搜索周边设备的情况!

2017-10-22 12:14:11 13052 5

原创 Ubuntu16.04.3安装OpenCV并配置QT环境进行开发

首先下载OpenCV的压缩包,我这里使用的是opencv-2.4.13.3.zip,将其使用unzip 命令解压:unzip opencv-2.4.13.3.zip在当期目录下生成opencv*目录,使用如下命令完成相关操作:cd opencv-2.4.13.3mkdir releasecd release下载opencv编译开发所使用的工具及其依赖包:sudo apt-get install

2017-09-24 13:30:25 4440

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