- 博客(53)
- 资源 (5)
- 问答 (22)
- 收藏
- 关注

原创 关于Java线程Thread类的join方法的解释
Thread类的join方法,Java官方文档的解释是:Waits for this thread to die.(等待线程死亡)。也就是程序会等待调用join方法的线程运行完,再执行当前线程,但不影响除这2个线程之外的线程的运行。这样简单的解释可能很多同学并不是很理解,下面将详细地解释一些join方法。首先我们先看一下join方法的代码实现(JDK8):public final voi...
2020-03-19 12:31:23
364
原创 适配器模式
手机充电的电压为5V,而普通家用电的电压为220V,为了解决这种电压不兼容的问题,我们引入了电源适配器(俗称充电器)。在软件系统中,类与类,模块与模块之间也会出现类似不兼容的现象,这时我们需要引入适配器模式来解决这个问题。与电源适配器相似,在适配器模式中引入了一个被称为适配器(Adapter)的包装类,它相当于我们的手机充电器,而它所包装的对象称为适配者(Adaptee),即被适配的类,它相当...
2020-03-23 17:49:40
269
原创 建造者模式
建造者模式它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成与装配方式,只需要知道所需的建造者类即可。建造者模式关注如何一步一步地创建一个复杂对象,不同地具体建造者定义了不同地创建过程,且具体建造者之间相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好地扩展性。建造者模式的定义如下:建造者模式(Buidler Pattern):将...
2020-03-22 10:13:47
294
原创 原型模式
在设计模式中存在一种模式,可以通过一个原型对象克隆出多个一模一样的对象,该模式称之为原型模式。原型模式的定义如下:原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。在使用原型模式时,需要首先创建一个原型对象,再通过复制这个原型对象来创建更多同类型的对象。原型模式的工作原理很简单:将一个原型...
2020-03-19 20:56:50
268
原创 抽象工厂模式
工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就是抽象工厂模式的基本思想。首先我们先来学习一些产品等级结构和产品族这两个概念。1.产品等级结构:产品等级结构即产品的继承结构,例如一...
2020-03-18 10:30:45
171
原创 工厂方法模式
简单工厂模式虽然简单,但是存在一个很严重的问题:当系统中需要引入新产品时,由于工厂类的静态工厂方法通过传入的参数的不同来创建不同的产品,这必定要修改工厂类的源代码,这就违背了开闭原则。此外,在简单工厂模式中,所有的产品都由同一个工厂创建,工厂类的职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度较高,严重影响了系统的灵活性和扩展性。如何实现在增加新产品时不影响已有的代码?工厂方法模式为此...
2020-03-16 15:36:36
135
原创 简单工厂模式(静态工厂方法模式)
定义:简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同的实例,被创建的实例通常都具有相同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。严格来讲,简单工厂模式并不属于23中设计模式,但是它在软件设计和...
2020-03-15 17:50:31
655
原创 单例模式
单例模式是常用的设计模式之一,其定义如下:单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。单例模式有3个要点:1.某个类只能有一个实例;2.它必须自行创建这个实例;3.它必须自行向整个系统提供这个实例。单例模式的UML类图如下:单例...
2020-03-14 11:45:27
100
原创 单链表的反转
单链表的反转,思路就是从头节点循环遍历原链表,把原链表每个结点指向后继的指针,改为执行结点的前驱即可,C语言代码如下:struct ListNode { int val; struct ListNode *next;};struct ListNode* reverseList(struct ListNode* head) { struct ListNode*...
2018-12-17 16:18:06
150
原创 关于Tomcat的server.xml中虚拟主机(Host)和Web应用程序(Context)配置的简要说明
首先介绍一下虚拟主机的概念: 虚拟主机(Virtual Hosting)是一种可以让一个Web服务器服务于多个域名的机制,但在不同的域名看来好像是多个不同的服务器提供服务。一般的在Tomcat的server.xml中简单配置虚拟主机的方法如下:<Host name="www.xxx.com" appBase="webapps"> <Contex...
2018-05-30 20:51:00
1464
原创 MySQL设置多列为唯一约束,即多列不能同时相同
假设有一个需求是用户给评论点赞,数据库设计是三张表,用户表t_user,评论表t_comment,点赞表t_praise,其中点赞表中有两个外键分别是user_id和comment_id,分别关联用户表的用户id和评论表的评论id,然后规定一个用户只能给同一条评论点赞一次,有一种实现方式就是在插入点赞表之前,先通过user_id和comment_id查询是否有点赞记录,如果没有的话,再执行插入操作
2017-09-01 13:14:21
19979
原创 Java中的接口
1.接口的概念Java中接口是一种特殊的抽象类,与一般的抽象类相比,接口中的所有方法都是抽象的,接口中的所有属性都是常量.2.接口的作用接口通常用来定义类的行为(或者说特性或外观),但是具体的实现类除了实现接口定义的功能外,还可以根据需要实现一些其他功能,这是允许的,也就是说实现类的功能包含但不限于接口定义的功能.3.接口的思想封装隔离这里的封装是指"对被隔离体的行为的封装
2016-11-25 10:38:41
404
原创 什么时候数组和指针相同
声明或定义:声明:extern char a[];不能改写成指针的形式定义:char a[10]; 不能改写成指针的形式函数参数:func(char a[]);可以选择数组形式或指针形式在表达式中使用:c = a[i]; 可以选择数组形式或指针形式但是,数组和指针在编译器处理时是不同的,在运行时的表示形式也是不一样的,并可能产生不同的代码.对编译器而言,一个
2016-09-23 17:17:44
642
原创 STM32位带操作(bit_band)位带区字节的位所对应的位带别名区地址计算公式的解释
STM32可以通过位带操作实现像51单片机一样单独访问某些寄存器的某一位.其原理就是把在位带区中的每一位膨胀到32位映射到位带别名区.STM32分别有2个1MB大小的位带区,分别为外设和SRAM,所以映射到位带别名区的大小就有32M.知道了所要操作位带区的地址和其中某一位,可以通过下面的公式计算对于位带别名区的地址,然后通过操作这个地址的最低位(LSB)就实现了对相应位带区某一位的操作了.
2016-09-18 12:57:20
12268
1
原创 C语言中的getchar()和EOF
在C语言的字符处理程序中,经常会用到一个字符输入函数getchar(),此函数的说明中说函数是以字符为单位读取的,但实际情况是读到一个换行符或者是文件结束符EOF时才进行一次输出,对这个问题的一个解释是,在大师编写C的时候,当时并没有所谓终端输入的概念,所有的输入实际上都是按照文件进行读取的,文件中一般都是以行为单位的。因 此,只有遇到换行符,那么程序会认为输入结束,然后采取执行程序的其他部分。同
2016-07-04 17:50:00
1841
转载 Android任务和返回栈完全解析,细数那些你所不知道的细节
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/41087993本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文。http://developer.android.com/guide/components/tasks-and-back-stack.html
2016-01-15 09:17:19
365
转载 Handler引起的内存泄露问题
如果你在Activity中定义了一个内部Handler类,如下代码:public class MainActivity extends Activity { private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) {
2015-08-20 17:55:55
499
原创 STM32外部中断无法触发的问题
很多教程在讲解外部中断时,基本上都将接受外部中断的GPIO设置为浮空输入,即GPIO_Mode_IN_FLOATING,这样的话对应的GPIO会是低电平状态,如果外部不加上拉电阻的话,STM32无法响应外部的下降沿中断。为了简化硬件设计(不加外部上拉电阻),建议设置对应的GPIO为外部上拉输入,即GPIO_Mode_IPU,这样GPIO默认电平为高,STM32就可以正常响应外部的下降沿中断了。
2015-06-23 17:57:23
12265
原创 STM32外部中断
中断是嵌入式系统中一个非常重要的概念,同时也在嵌入式系统中发挥着巨大的作用。在普通51单片机中,一共只有5个中断,其中2个外部中断,2个定时/计数器中断和一个串口中断。但在STM32中,中断的数量大大增加,同时配置和使用也相对复杂。此篇文章主要讲解STM32外部中断的配置和使用。一、STM中断系统首先介绍一下STM32中断系统的核心,即NVIC(Nested Vectored Interr
2015-06-13 22:00:34
3887
原创 STM32 GPIO配置
51单片机的I/O口功能相对较少,配置也相对简单,而STM32的I/O口功能则非常强大,配置也稍微复杂一些。STM32的I/O口简称GPIO(即General Purpose Input Output,通用输入/输出端口),其配置的过程大致如下:1、首先定义GPIO的初始化类型结构体:GPIO_InitTypeDef GPIO_InitStructure;此结构体的定义是在stm32f10
2015-06-11 17:56:34
7983
原创 STM32系统时钟配置
STM32启动后的第一步对于开发者来说就是系统时钟(RCC)的配置了,STM32系统默认用户外接8M晶振,经过倍频后,系统可以跑到72M。时钟的配置过程或者是初始化过程(当用户不配置时,使用默认外接8M晶振的配置)大体是这样的:1、在STM32启动文件startup_stm32f10x_md.s的汇编代码中调用SystemInit()函数,而此函数是在system_stm32f10x.c文件中
2015-06-09 17:49:56
3194
6
转载 实战Nginx与PHP(FastCGI)的安装、配置与优化
最近一个项目需要用到PHP开发服务器是nginx,之前都没有接触过,查了很多资料,不过讲得都不系统,或者过于深入,不适合初学者学习,不过最后发现一篇文章讲得不错,于是转载过来。原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ixdba.blog.51cto.com/2895551/806622一、什么是 Fa
2015-05-26 13:17:09
351
转载 Android系列之网络(二)----HTTP请求头与响应头
文章来源:http://www.cnblogs.com/smyhvae/p/4005034.html国庆佳节,习惯并享受着一个人独霸整个教研室的感觉。在上一篇文章中,我们学习到了如何使用HttpClient发送HTTP请求。博文链接:Android系列之网络(一)----使用HttpClient发送HTTP请求本篇文章中,将学习一下HTTP请求头与响应头的知识。
2015-04-16 15:55:57
419
转载 Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
文章来源:http://www.cnblogs.com/smyhvae/p/4005034.html一、HTTP协议初探:HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Internet上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用
2015-04-15 16:29:19
796
原创 Android小技巧4——字体加粗
Android中字体加粗,采用在文字控件添加属性android:textStyle=”bold”,但是无法使中文加粗,中文加粗采用以下方法:TextView textView= (TextView)findViewById(R.id.textView); TextPaint textPaint = textView.getPaint(); textPaint.setFakeBoldText
2015-04-13 20:59:38
806
转载 Android 应用程序框架设计
这篇文章主要内容来自于之前我讲的一个PPT文档,现在将其整理如下。欢迎指正。以下的内容都是来自于我自身的经验,欢迎大家多提自己的建议。1、一些概念模式的定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。什么是设计模式?设计模式是在
2015-04-09 11:24:01
679
原创 Android小技巧3——Service中完成自动登录操作
在Android中使用Service实现后台自动登录,可以保证当后台自动登录时,如果用户切换到其他Activity或当前Activity被回收掉时,仍能保证登录操作的顺利完成,以及在Service中的Handler处理子线程中的消息,因为如果采用在Activity启动线程完成操作,那么如果当Activity被回收掉时,将无法处理Handler的消息。当然,如果不需要在后台进行的操作,则可以直接在A
2015-04-08 09:03:56
437
原创 Android小技巧2——去掉ListView点击item时默认的黄色背景
布局文件中在ListView中加入android:cacheColorHint="#00000000"android:fadingEdge="none"android:fadingEdgeLength="0dp"android:listSelector="#00000000"
2015-04-07 16:38:18
2308
原创 Android小技巧1——扩大控件的点击范围
在Android开发时,有些UI的图片本身很小,但又需要控件可点击的范围增大,在不改变图片大小的情况下可以适当的设置控件的padding属性来解决。如下图的例子:
2015-04-07 15:09:31
1129
原创 Java中equals()和hashCode()
1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的。 equals()方法在object类中定义如下: public boolean equals(Object obj) { return (this == obj); } 很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们必需清楚,当String 、Math、
2014-12-29 22:35:42
354
转载 Android Fragment完全解析,关于碎片你所需知道的一切
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/8881711我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述。但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常
2014-11-19 11:37:55
385
转载 Java使用HttpURLConnection检索网站时403错误处理方式
Java使用HttpURLConnection检索网站时403错误处理方式:我们通过代码方式访问网站时会报错:此种情况分2中类型,1.需要登录才可以访问;2.需要设置User-Agent来欺骗服务器。[html] view plaincopyprint?connection.setRequest
2014-09-18 12:05:43
1518
原创 栈(链式)
#include #include #include #define OK 0#define ERROR -1#define ElemType int//定义栈的结点的结构typedef struct Node{ ElemType data; Node *next;}Node;//定义栈的结构typedef struct Stack{ Node *top; /
2014-07-09 16:18:11
430
原创 双向循环链表
#include #include #include #define OK 0#define ERROR -1#define ElemType inttypedef struct Node{ ElemType data; Node *prev; //指向直接前驱 Node *next; //指向直接后继}Node;//创建一个带头结点的双向循环链表Node *
2014-07-07 14:53:44
411
原创 链表应用——按字母顺序存储并输出某目录下的子文件或子目录名
#include #include #include #include #include #define OK 0#define ERROR -1typedef struct Node{ char *fileName; Node *next;} Node;//创建一个空链表Node* createLinkList();//把文件名按字母顺序插入链表int ins
2014-07-06 18:27:29
797
原创 线性表的链式存储
#include #include #include #define OK 0#define ERROR -1#define TRUE 1#define FALSE 0#define ElemType inttypedef struct Node{ ElemType data; struct Node *next;}Node;//创建一个空链表,返回链表头结点N
2014-07-02 15:53:32
406
原创 线性表的顺序存储
#include #include #include #define OK 0#define ERROR -1#define ElemType int#define INIT_LENGTH 10 //数组初始容量#define INCREMENT 20 //重新分配内存时的增量typedef struct { ElemType *pBase; //数组的基址 int
2014-07-01 18:38:54
473
转载 Java 异常处理及其应用
在IBM页面看到一篇讲解Java异常的文章,讲得不错容易理解,特此转过来,与大家分享.Java 异常处理是使用 Java 语言进行软件开发和测试脚本开发时不容忽视的问题之一,是否进行异常处理直接关系到开发出的软件的稳定性和健壮性。本文系统的阐述了 Java 异常处理的原理和方法,并列举了一些实例,使读者对 Java 异常处理能有一个全面的认识,理解异常处理机制,能更加灵活和有效地在开发中使
2013-10-28 13:54:06
756
android学习线路图,给学习,自学Android的朋友提供一个学习的线路
2019-10-22
一个开源的Android开发框架KJFrameForAndroid
2015-04-10
Android Activity跳转问题
2015-12-25
Java中静态方法的线程安全问题
2015-12-08
关于Socket网络通信的问题
2015-11-23
单片机与外围模块通信协议的问题?
2015-10-30
Android加载网络GIF图片
2015-10-27
Android图片库Fresco的问题
2015-10-23
Android ListView图片异步加载和上拉加载
2015-09-28
数据库多表查询分页问题
2015-09-26
Java web返回JSON数据的封装问题
2015-09-22
javaweb图片异步上传问题
2015-09-17
java数据库表关联程序控制的问题
2015-09-12
STM32官方DSP库进行FFT运算的问题
2015-07-07
STM32GPIO配置的问题??
2015-06-11
nginx+PHP配置问题?搞不懂
2015-05-28
PHP+nginx配置的问题,请教......
2015-05-27
PHP+nginx配置的问题,请教
2015-05-26
Linux Nginx PHP配置的问题
2015-05-24
选择排序这两种有什么不同,注意粗体部分
2015-05-21
求两个数最大公约数,欧几里得算法
2015-05-20
怎么判断Android编程中出现的各种错误情况?
2015-05-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人