自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java并发编程:内置锁 Synchronized

    在多线程编程中,线程安全问题是一个最为关键的问题,其核心概念就在于正确性,即当多个线程访问某一共享、可变数据时,始终都不会导致数据破坏以及其他不该出现的结果。而所有的并发模式在解决这个问题时,采用的方案都是序列化访问临界资源 。在 Java 中,提供了两种方式来实现同步互斥访问:synchronized 和 Lock。本文针对 synchronized 内置锁 详细讨论了其在 Java 并...

2018-05-31 22:16:57 282

转载 Java并发编程:Lock

    在面中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchronized的缺陷讲起,然后再讲述...

2018-05-31 17:56:28 153

转载 Java并发编程: ThreadFactory接口用法

线程工厂(ThreadFactory接口)在创建线程的时候,我们当然也能使用工厂模式来生产线程,ThreadFactory是用来实现创建线程的工厂接口,其实它只有一个方法Thread newThread(Runnable r),所以这个接口没多大用,可以自己编写新接口。使用ThreadFactory工厂能替代默认的new Thread,而且在自定义工厂里面,我们能创建自定义化的Thread,并且计...

2018-05-31 10:01:42 1977

转载 从零搭建自己的SpringBoot后台框架(一)

Hello大家好,本章我们搭建项目基础框架结构和整合mybatis;项目所需环境jdk1.8,maven,mysql数据库;开发工具IDEA。有问题可以联系我。另求各路大神指点,感谢!一:通过idea工具构建基础框架 1.  打开idea,左上角File→New→Project,看到如下图的页面 2.  点击Next,配置如下图3.  点击Next,配置如下图,这里我们选择数据库MySQL和持久层...

2018-05-31 09:21:21 3420 1

原创 java并发编程:Executor、Executors、ExecutorService

Executors    在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好...

2018-05-30 22:34:17 82570 18

转载 java并发编程:之守护线程(Daemon)

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比喻,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾...

2018-05-30 11:13:23 4424

原创 线程同步与死锁(3)

线程同步与死锁线程同步与死锁1、多线程共享数据2、线程同步3、实现线程同步的方法3.1、同步代码块3.2、同步方法3.3、Lock4、死锁1、多线程共享数据在多线程操作中,多个线程有可能同时处理同一个资源,这就是多线程中的共享数据2、线程同步解决数据共享问题必须使用同步,所谓的同步就是指多个线程在同一个时间段内只能有一个线程执行指定的代...

2018-05-29 16:37:43 682

原创 双向链表

双向链表的优点:对于链表中的一个给定的结点,可以从量方面进行操作。在单向链表中,只有获得结点的前驱结点指针,才能删除该结点。然而,在双向链表中,即使没有一个结点的前驱结点的地址,也是可以进行删除的(因为每一个结点都有一个指向前驱结点的指针,可以直接的后退到前驱结点)...

2018-05-28 22:07:40 123

原创 链表

1、什么是链表2、链表的抽象数据类型3、为什么需要使用链表4、数组的概述5、链表的优点6、链表的缺点7、单链表7.1、链表的基本操作7.2、链表的遍历1、什么是链表链表是一种用于存储数据集合的数据结构。链表有一下的属性:相连的元素之间通过指针进行连接最后一个元素的后继指针为NULL在执行的过程中链表的长度可以增加或者是减少链表的空间可以按需...

2018-05-28 17:00:27 912

原创 线程_join yield 与interrupt线程

join与中断线程(2)join与中断线程(2)1、join2、中断3、自定义标记中断线程1、joinjoin()方法:加入线程让调用的线程先执行指定时间或者是指向完毕异常:InterruptedException-如果任何线程中断当前线程。当抛出异常时,当前线程的中断状态被清除package com.huanghe;/** * @Aut...

2018-05-28 11:40:50 693

原创 java并发编程:线程与进程

进程与线程_基础(1)进程与线程_基础(1)1、什么是进程2、进程的状态3、CPU的时间片4、线程基本概念5、并行与并发6、线程的基本使用6.1、一种是继续Thread类,6.2另外一种是实现Runable接口6.3、Thread和Runnable的区别6.3实现Callable接口,并与Future、线程池结合使用7、线程的休眠什么是释放CPU的时间片?...

2018-05-28 10:24:21 335

原创 C_链表

C_链表什么是链表?链表是一种常见的重要的数据结构,是动态地进行存储分配的一种结构。链表的组成:头指针:存放一个地址,该地址指向第一个元素结点:用户需要的实际数据和链接节点的指针#include <stdio.h>struct student{ long num; float score; struct ...

2018-05-25 11:35:28 138

原创 C-动态存储的分配

C_动态存储的分配在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。例如:inta[n];用变量表示长度,想对数组的大小作动态说明,这是错误的。但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,...

2018-05-25 11:34:55 535

原创 C_指向结构体类型数据的指针

C_指向结构体类型数据的指针一个结构体变量的指针就是该结构体变量所占据的内存段的起始地址可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。(指针伟大吧,指啥都行~)指针变量也可以用来指向结构体数组中的元素结构指针变量说明的一般形式为:struct 结构名 *结构指针变量名例如,在前面的例题中定义了stu这个结构,如要说明一个指向stu的指针变...

2018-05-25 11:34:36 2131

原创 C_结构体变量的初始化

C_结构体数组#include <stdio.h>void main(){ struct student /*定义结构*/ { int num; char *name; char sex; ...

2018-05-25 11:34:14 3928

原创 C_结构体概述

C_结构体概述有时需要将不同类型的数据组合成一个有机的整体,以便于引用。一个学生有学号/姓名/性别/年龄/地址等属性 int num; char name[20]; char sex; int age; int char addr[30]; num name sex age addr 007 Jane M 24 Beijing...

2018-05-25 11:33:53 151

原创 C_链表

C_链表什么是链表?链表是一种常见的重要的数据结构,是动态地进行存储分配的一种结构。链表的组成:头指针:存放一个地址,该地址指向第一个元素结点:用户需要的实际数据和链接节点的指针#include <stdio.h>struct student{ long num; float score; struct ...

2018-05-25 11:33:00 184

原创 C_带参数的宏定义

C_带参数的宏定义C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为#define 宏名(形参表) 字符串带参宏调用的一般形式为:宏名(实参表); 例如: #define M(y) y*y+3*y /*宏定义*/ …… ...

2018-05-24 11:13:35 19503 2

原创 C_预处理

C_预处理宏定义1、无参数宏定义其定义的一般形式为:# define 标识符 字符串其中的‘#’表示这是一条预处理命令凡是以‘#’开头的均为预处理命令define为宏定义命令。‘’标识符“为所定义的宏名。‘’字符串“可以是常数、表达式、格式串等。例如:define PI 3.1415926 ,它的作用是指定标识符PI来代替数3.14159262、对于宏定义还要说...

2018-05-24 11:10:40 101

原创 C_有关指针的数据类型小结

C_有关指针的数据类型小结 定义 含义 int i; 定义整型变量i int *p; p为指向整型数据的指针变量 int a[n]; 定义整型数组a,它有n个元素 int *p[n]; 定义指针数组p,它由n个指向整型数据的指针元素组成 int (*p)[n]; p为指向含n个元素的一维数组的指针变量 int f...

2018-05-24 11:06:41 1274

原创 C_指向指针的指针

C_指向指针的指针怎样定义一个指向指针数据的指针变量呢?形式可以如: char **p;p的前面有两个*号。*运算符的结合性是从右到左,因此**p相当于,显然 *p是指针变量的定义形式。如果没有最前面的*,那就是定义了一个指向字符数据的指针变量。现在它前面又有一个*号,表示指针变量p是指向一个字符指针变量的。*p就是p所指向的另一个指针变量。假设有一个 int 类型的变量 ...

2018-05-24 11:02:24 5469 4

原创 C_指针的函数和函数的指针

C_指针的函数和函数的指针这两个概念都是简称:指针函数是指带指针的函数,即本质是一个函数。函数指针是指向函数的指针变量,因而函数指针本身首先应是指针变量,只不过该指针变量指向函数指针数组和数组指针和指向指针的指针一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为类型名 数组名[数组长...

2018-05-24 10:55:43 164

原创 C_返回指针值的函数

C_返回指针值的函数一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。其概念与以前类似,只是带回的值的类型是指针类型而已。这种带回指针值的函数,一般定义形式为:​ 类型名 *函数名(参数表列);例如:int *a(intx,int y);#include <stdio.h>void main(){ ...

2018-05-24 10:51:40 942

原创 C_指向函数的指针

C_指向函数的指针用函数指针变量调用函数可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数的入口地址就称为函数的指针/****************************//* 比较a 和 b的大小,求大值 *//****************************/#include <stdio....

2018-05-24 10:43:16 1168 1

原创 C—字符串与指针

C—字符串与指针用字符数组存放一个字符串,然后输出该字符串。#include <stdio.h>void main(){ char string[] = "I love Fishc.com!"; printf("%s\n", string);} 将储存区的首地址赋给指针string,也就是说,指针变量string 指向无名储存区域的...

2018-05-24 10:34:31 7183 1

原创 C_多维数组和指针

C_多维数组和指针C_多维数组和指针指向多维数组元素的指针变量用指针输出二维数组的数值用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。先回顾一下多维数组的性质,可以认为二维数组是“数组的数组”,例 :定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};则二维数组a是由3个一维数组所组成...

2018-05-24 09:50:28 340

原创 C_数组和指针

C_数组和指针C_数组和指针指向数组的指针引用数组元素数组名作为函数的参数将数组a中个数组按照相反顺序存放小结对数组中10个整数由大到小顺序排序指向数组的指针定义一个指向数组元素的指针变量的方法,与以前介绍的指向变量的指针变量相同int a[10](定义a为包含10个整型数据的数组)int *p(定义p为指向整型变量的指针) p=&a[...

2018-05-24 09:37:29 496

原创 C_指针

C_指针内存区的每一个字节都有一个编号这就是地址,如果在程序中定义了一个变量没在对程序进行编译时,系统就会给这个变量分配内存单元。C语言中对于变量的访问有两种方式,分别是直接访问和间接访问直接访问和间接访问直接访问比如 a=5;系统在编译时,已经对变量分配了地址,例如,若变量a分配的地址是2000,则该语句的作用就是把常数5保存到地址为2000的单元中间接访问比如:s...

2018-05-23 11:28:01 159

原创 C_函数

C_函数动态的存储方式与静态的存储方式所谓的静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式而动态的存储方式则是在程序的运行期间根据需要进行动态的分配存储空间的方式用户存储空间可以分为三部分:程序区静态存储区 (全局变量)动态存储区 (局部变量)变量存储类别在c语言中每一个变量和函数有两个属性:数据类型和数据的存储类别数据类型(如整型,...

2018-05-23 11:02:56 137

原创 C_二维数组的使用

C_二维数组的使用类型说明符 数组名[常量表达式][ 常量表达式]二维数组的引用和初始化共有四中方法进行初始化:(1)直接的给二维数组赋初值。如下 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}(2)可以将所有数据写在一个花括号内,按照数组排列的顺序对数组赋初值 int a[3][4]={1,2,3,4,5,6,7...

2018-05-23 11:02:14 401

原创 C_数组

C_一维数组 数组按照数据元素类型的不同可以分为数值数组、字符数组、指针数组、结构数组等各类别一维数组的定义和初始化的赋值VC的编译器整型占据的是4个字节,而浮点型占据的是8个字节允许在同一个类型说明中,说明多个数组和多个变量。比如int a,b,c,d,k1[10],k2[20];特别注意的是:c语言不允许对数组的大小作动态的定义(这在Java语言中也是一样的,...

2018-05-23 11:01:09 117

转载 淘淘商城(CMS,发布服务,调用服务)

1 需求CMS, 发布服务, 调用服务2 首页大广告位的实现分析 首页的内容需要动态管理,需要后台管理功能。抽取首页展示内容的共性: 1、有一张图片 2、有一个连接 3、有一个标题 4、有链接的提示 5、价格需要把内容进行分类,分类应该是一个树形结构。在展示首页时,可以根据分类取内容信息,把内容展示到页面。在后台管理内容及内容分类的系统就叫做cms系...

2018-05-21 09:06:56 268

转载 淘淘商城(前台系统,展示商城首页,商品分类展示)

1、前台系统和后台系统的关系2、前台系统的搭建3、服务端工程的搭建3.1 创建工程3.2 使用到的技术3.3 配置工程3.3.1 pom.xml3.3.2 web.xml3.3.3 框架整合1、前台系统和后台系统的关系前台系统就是淘淘商城。 前台系统和后台系统是分开的,只在数据库层面有关系。都是同一个数据库。2、前台系统的搭建...

2018-05-20 16:41:01 9126 2

转载 【设计模式】空设计模式

GoF(四人帮)那本《设计模式 可复用面向对象软件的基础》可谓是设计模式方面的经典之作,其中介绍的23种设计模式, 也可谓是经典中的经典。但是,设计模式的种类绝不仅仅是这23种,除此之外还有很多巧妙可爱的设计模式值得我们学习。这些 被遗忘的设计模式,也可以堪称经典之作。今天我们来一起学习被遗忘的设计模式...

2018-05-14 15:20:46 189

原创 [java设计模式]-工厂模式

[java设计模式]-工厂模式1.工厂设计模式的定义​ 工厂模式使用的频率非常高,我们在开发中总能见到它们的身影。其定义为:Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defe...

2018-05-14 12:05:07 213

原创 MyBatis的查询

MyBatis的查询MyBatis的查询1、mybatis的查询属性说明2、最简单的mybatis的查询3、关于parameterType=”map” 的使用4、关于ResultType=”map”的使用4.1、在使用mybatis的esultType=”map”之前4.2、使用resultType=”map”最简单的情形4.3、返回Map...

2018-05-14 12:03:29 883

原创 [java设计模式]代理模式

[设计模式]代理模式定义定义:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象。在上图中:RealSubject 是原对象(本文把原对象称为”委托对象”),Proxy 是代理对象。Subject 是委托对象和代理对象都共同实现的接口。Request() 是委托对象和代理对象共同拥有的方法。要理...

2018-05-14 11:59:38 120

bookmarks_2019_7_21.html

个人书签

2019-07-21

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

TA关注的人

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