自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-06-30

CSDN也来也 laji 了CSDN 做了很多东西,看起来都没有啥用,用户体验越来越差了。文章重复,答非所问,标题党。推广活动。为啥要推广呢?烂东西推荐的再多也是烂东西。各种活动导致阅读体验极差。...

2021-06-30 20:25:23 267

原创 Gradle 基础 // Gradle Basic

文章目录Gradle HelloWorldTask 的依赖动态任务操作存在的任务groovy DSL 中的快捷方式task 的额外属性默认的 task配置依赖外部的脚本Gradle HelloWorld首先 Gradle 遵守约定大于配置,会为我们提供一条约定俗成的东西,这套约定俗成的东西是大多数人都熟悉的,如果没有特殊需求,我们应该尽量的不去定制。Gradle 中的构建脚本默认是在项目目录下的 build.gradle。gradle 不仅支持 groovy 脚本,现在还支持使用 Kotlin DS

2020-12-15 13:42:37 418

原创 Maven 和 Gradle 换阿里云的仓库

Maven 和 Gradle 换阿里云的仓库详见官网:https://maven.aliyun.com/mvn/guide阿里云代理的各大仓库都有,也有指导。

2020-07-27 18:45:15 271

原创 关于Java中的传参是值传递还是引用传递?

在Java中其实只有值传递,而没有所谓的引用传递。既然Java中没有引用传递,那么到底什么才是引用传递呢?在C++中是有引用传递的,下来我们来看一个简单的小程序,如下:#include <iostream>using namespace std;int changeXtoY(int &x, int y) { x = y;}int main() { ...

2019-02-09 17:29:36 326

原创 设计模式之责任链模式

责任链模式Avoid coupling the sender of a request to its receiver by giving more than one objecta chance to handler the request. Chain the receiving objects and pass the request along the chain until an ob...

2018-11-02 21:44:23 196

原创 设计模式之原型模式——浅拷贝和深拷贝

原型模式原型模式的定义Specify the kinds of create using prototypical ihnstance, and create new objects by copying this prototy.用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式就是通过原来的对象通过拷贝创建一个新的对象。Java提供了一个Cloneable接口来...

2018-10-20 20:09:57 1588

原创 设计模式之代理模式和Java中的代理以及JDK动态代理的实现原理

设计模式之代理模式和Java中的代理代理模式(Proxy Pottern)是一个使用频率很高的模式,其定义如下:Provide a surrogate or placegolder for another object to contol access to it.(为其他对象提供一种代理以控制这个对象的访问。)代理模式在很多的开源项目中出现,基本上一些只需要提供接口,就能访问到具体内容...

2018-10-13 22:07:35 584

原创 Java并发之无锁

Java并发编程之无锁在谈论无所之前先来看看乐观派和悲观派。对于乐观派而言,他们总认为事情总会朝着好的方向发展,总认为几乎不会坏事,我已可以随意的去做事。但是对于悲观派来说,他们认为出错是一种常态,所以无论事情大小都会考虑的面面俱到,滴水不漏。在两种派别对应在并发中就是加锁和无锁,也就是说加锁是一种悲观的策略,而无锁是一种乐观的策略。对于锁,如果有多个线程同事访问一个临界资源,宁可牺牲性能让线...

2018-10-09 17:15:17 2485

原创 数据库的事务和并发问题

数据库事务事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么全部执行,要么全部都不执行。比如,银行转账,从一个账号扣钱,然后另一个账号余额增加,这两个操作要么都执行,要么都不执行。这两个操作组合在一起就是事务。数据库事务有严格的定义,它必须同时满足4个特性:原子性,Atomic一致性,Consistency隔离性, Isolation持久性...

2018-09-29 16:25:40 439

原创 设计模式——建造者模式

设计模式之建造者模式建造者模式(Builder Pattern)也叫作生成器模式,其定义如下:Separate the construction process of a complex object from its representation so that the same construction process can create different representation...

2018-09-25 18:25:05 282

原创 ThradLocal原理和使用

ThreadLocalThreadLocal叫做线程本地变量,或者线程局部变量。ThreadLocal为变量在每一个线程中都创建一个一个副本,每个线程可以访问自己的副本。 下面来看看ThreadLocal的实现原理。 下面的是ThreadLocal类提供的几个方法:public T get();public void set(T value);public void remov...

2018-08-11 11:09:53 1388 1

原创 Spring Boot中的数据校验 Validation

Spring Boot中的数据校验我们可能会经常需要对传入的参数进行校验,如果数据比较少的时候还比较容易处理,但当数据比较多的时候会显得比较麻烦,而且处理不当的时候,还会代码重复。这时候就需要Spring Boot对参数进行校验了。 这时候就需要使用使用Validation对数据进行校验了。在Spring Boot中使用Validation有如下的一段代码:@RestCo...

2018-07-25 11:06:16 20512 7

原创 使用HttpClient和OkHttp实现模拟登录方正教务系统

使用HttpClient和OkHttp实现模拟登录方正教务系统因为后面的项目需要,所以研究了一下方正教务系统的模拟登录。 首先分析一下,如何模拟登录需要什么参数。 下面的这个是验证码的url: 下面的这个是模拟登录需要的参数: HttpClient模拟登录HttpClient是Apahe下的一个项目,目的是为了方便Java发送请求,因为JDK提供的工具实在是他简陋了。 我...

2018-07-16 01:05:04 3306

原创 ArrayList源码分析(下)——Java8中新增的Spliterator的分析

ArrayList源码分析(下)——从ArrayList中分析Java8新增的方法从集合的最基本的接口Collection中可以看出Java8中新增了下面几点内容: 1. spliterator 2. stream 3. parallelStreamdefault Spliterator<E> spliterator() { return Spliterato...

2018-06-04 15:19:24 3083 4

原创 ArrayList源码阅读(中)——迭代器和子集合

ArrayList源码阅读(中)中篇中主要将ArrayList的迭代器和子集合的问题。 首先,我们追溯到集合的源头Collectio这个接口:public interface Collection<E> extends Iterable<E> { int size(); boolean isEmpty(); boolean contai...

2018-05-29 17:22:02 499

原创 ArrayList源码阅读(上)

ArrayList源码阅读ArrayList是使用比较多的一个List,它的底层实现是使用的是一个数组,从继承性来讲,它继承了AbstractList的接口,并实现了List、RandomAccess、Cloneable和Serializable序列化接口。public class ArrayList<E> extends AbstractList<E> imp...

2018-05-27 14:18:30 443

原创 数据结构之链表

单链表1. 单链表的定义单链表是通过任一存储单元来存储线性表中的元素。这些存储单元可以是连续的也可以是不连续的。为了每个数据元素都能链接起来,每个数据元素中除了存储数据以及其它的信息外,还应该储存该元素直接后继(也就是该元素的下一个元素)的位置信息(也就是下一个元素的地址)。就像每个人手拉着手一样,每一个人的手都拉着下一个人的手。 数据元素和下一个数据元素的存储位置的信息组成一个“结...

2018-04-18 19:24:39 352

原创 Spring中的BeanFactory的分析

BeanFactory源码分析BeanFactory是一个接口,该接口提供了Ioc容器的规范。BeanFactory接口中的方法public interface BeanFactory { String FACTORY_BEAN_PREFIX = "&"; Object getBean(String name) throws BeansException; <T> T getB

2018-02-22 20:37:34 447

原创 数据结构之——栈

栈栈的定义栈,英文名称Stack,是一种允许在一端插入、删除的线性表,其中把允许插入和删除的一端叫做栈顶(top),另一端称作栈底(bottom)。在这里首先要明白栈是一种线性表,可以将其理解为操作受限的线性表(但其实有时候需要这样的线性表),也具有前驱和后继的关系。栈中的元素就像弹夹装弹一样,最先打出来的第一发子弹,肯定是你最后装进弹夹的,这就是“后进先出”。而“装弹”的过程被称为入栈(push)

2018-01-08 20:52:45 697

原创 排序之希尔排序

希尔排序希尔排序是直接插入排序的升级,希尔排序的出现冲破了O(n2)O(n^2)时间的屏障, 它的思想是将待排序的序列分割成若干子序列,分割的方式是隔几个元素(相隔“增量”)取一个元素,然后依次进行直接插入排序,然后减小增量,循环进行上述的过程,直到增量为1。当增量为1是也就是对待排序的序列进行直接插入排序,那么排序之后的序列就肯定是有序的了。 随着增量的缩小会使整个序列达到基本有序,而直接插入排序

2018-01-01 21:24:23 221

原创 排序之直接插入排序和折半插入排序

直接插入排序直接插入排序时将一个记录插入到一个已经有序的的表或者数组中,从而得到一个新的有序的表或者数组。 就像打牌一样,拿到一张牌后,要往手中的牌里插,使手中的牌还是有序的。假如手中有4,6,7三张牌,现在拿到的下一张牌是5,那么肯定要插在4之后,直接插入排序也是这个道理。 假如现在有数组:{11,2,5,78,34,56,23},直接插入排序的过程如下: 代码实现如下:void Ins

2017-12-28 14:52:13 641

原创 快速排序及优化

快速排序顾名思义,快速排序是时间复杂度比较快的一种排序。1. 快速排序快速排序的算法思想是:通过一趟排序将待排序的数组分割成两部分,其中一部分的关键字均比另一部分的关键字小,然后继续对这两部分继续排序,最后整个序列就是有序的了。很明显,快速排序的思想的一种递归的思想。 首先要选择一个关键字作为枢轴值,然后想办法使得将它放到一个位置,使得左边的值小于枢轴值,右边的值大于枢轴值。 其中最重要的就是这

2017-12-24 14:52:54 5026

原创 排序之——冒泡排序

冒泡排序冒泡排序时比较简单并且容易理解的一种排序算法。1. 冒泡排序的实现冒泡排序时是一种交换排序,比较相邻的两个关键字,如果它们的顺序是错误的,则将它们交换过来,如此的重复,知道整个序列有序。当然冒泡排序有多种的实现。 这是最简单的一种实现。void BubbleSort(int a[], int n) { int i, j, temp; for (i = 0; i < n -

2017-12-22 23:31:58 344

原创 线性表之——顺序表

线性表线性表是n个数据元素的有限序列。表中的元素是一个挨着一个放的。表中有一个开始的节点,有一个结束的节点,并且中间的每一个节点有且只有一个前驱和后继。1. 线性表的抽象数据类型线性表的抽象数据类型的定义如下: Data: 线性表中的每数据对象集合{a1,a2,...ana_1,a_2,...a_n},每个数据元素的类型均为DataType(自己定义的,可以是基本类型,也可以是复杂的类型

2017-12-20 16:43:14 353

原创 C语言之指针

C语言之指针目录C语言之指针目录1. 指针的简单使用1. 地址运算符&amp;2.指针简介2. 指针的简单使用1. 间接运算符2. 空指针和空类型的指针2. 多重指针3. 指针与数组1. 指针与一维数组2. 指针的危险性3. 指针与二维数组4. 数组指针与指针数组1. 指针数组2. 数组指针思考题结语在谈论指针之前...

2017-11-14 20:03:44 345

原创 JSP 2开发自定义标签

JSP2开发自定义标签目录JSP2开发自定义标签目录开发自定义标签的步骤开发简单的自定义标签自定义标签处理类标签处理类的声明周期建立TLD文件注册标签使用标签库带属性的标签带有标签体的标签以页面片段作为属性标签动态属性标签源码1. 开发自定义标签的步骤JSP2的规范简化了标签库的开发,在原本的JSP1.1中开发自定义标签比较复杂。 JSP2中开发自定义标签只需要如下的几步

2017-10-22 00:06:06 487

原创 一个简单的Servlet登陆案例

一个Servlet登陆的案例下面会用到数据库JDBC、Tomcat等。 下面的这个例子非常简单,相信学过Servlet、数据库等知识后都能看懂,但是在这儿我要说的是一个特别坑的地方。 本人用的是idea的编译器,导入数据库驱动后发现一直在报错,检查了好久,都没找到问题所在,最后发现导入内容是没有用的,导入内容只是给编译器看的,但是Java Web的项目是靠Tomcat运行的所以需要在web\WE

2017-10-03 23:45:01 406

原创 滴滴出行之地下迷宫

题目描述小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫。为了让问题简单,假设这是一个n*m的格子迷宫,迷宫每个位置为0或者1,0代表这个位置有障碍物,小青蛙达到不了这个位置;1代表小青蛙可以达到的位置。小青蛙初始在(0,0)位置,地下迷宫的出口在(0,m-1)(保证这两个位置都是1,并且保证一定有起点到终点可达的路径),小青蛙在迷宫中水平移动一个单位距离需要消耗

2017-10-02 21:42:58 428

原创 网易编程题之地牢逃脱

题目描述给定一个 n 行 m 列的地牢,其中 ‘.’ 表示可以通行的位置,’X’ 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。输入描述每个输入包含 1 个测试用

2017-09-24 18:49:03 299

原创 计算器——第一个Android小项目

[toc] 这是我第一个Android小项目,相信这也是大多数人的第一个小项目。 这个项目非常的简单,只有一个Activity。 首先是布局文件,这里我用的是线性布局。计算器的布局这个布局文件中的按钮(Button)比较多。 首先是一个TextView,然后是一堆按钮。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:and

2017-09-09 21:25:16 690

原创 Thread与Runnable的关系

Thread与Runnable的关系public class ThreadDemo { public static void main(String[] args) { new Thread(new Runnable() { public void run() { System.out.println("Runnable的

2017-08-01 13:57:53 702

原创 Java小游戏之控制台小游戏

控制台五子棋小游戏五子棋游戏,第一步肯定是画棋盘初始化等工作,我们可以新建一个类来做这个事情。public class Chessboard { // 定义一个二维数组充棋盘 private String[][] board; // 定义棋盘大小 public static final int BOARD_SIZE = 20; /** *

2017-08-01 09:25:26 3941 2

原创 一个算数表达式的前缀中缀和后缀(可进行负数运算)

一个算数表达式的前缀中缀和后缀目录一个算数表达式的前缀中缀和后缀目录关于前缀中缀和后缀中缀转前缀后缀的算法思想代码实现1. 关于前缀、中缀和后缀中缀表达式:就是我们常见的算数表达式,有优先级和括号,例如:3+4*(4+5 )。这个对于我们来说很好理解,但是对于计算机来说就比较麻烦。前缀表达式:前缀表达式是一种没有括号的算术表达式,与中缀表达式不同的是,其将运算符写在前面,操作数写在后面

2017-07-25 20:06:21 5288 1

原创 File类

File类File类的作用是操作文件和目录,但却不能访问文件。File类访问文件和目录访问与文件名相关的方法文件检测相关的一些方法获取文件信息文件操作的一些方法目录相关的操作测试文件过滤1. 访问文件和目录1. 访问与文件名相关的方法 String getName() 此方法返回File对象所表示的文件名或路径名,如果是路径则返回路径的最后一级子路径名。 String ge

2017-07-18 10:18:43 351

原创 Java的异常处理

异常处理异常处理使用trycatch捕获异常异常处理继承树Java7提供的多异常捕获访问异常信息使用finally回收资源Checked 异常和Runtime异常体系Java7的自动关闭资源的try语句使用throws声明抛出异常使用throw抛出异常自定义异常类1. 使用try……catch捕获异常格式 try{ … } catch (异常类型 变量名

2017-07-16 17:18:48 263

原创 泛型

泛型目录泛型目录泛型入门Java7 泛型的菱形语法深入泛型从泛型类派生子类并不存在泛型类类型通配符1 使用类型通配符2 设定类型通配符上限3 设定类型参数的上限泛型方法Java7中的菱形语法与泛型构造器设定通配符下限擦除和转化1. 泛型入门public class GenerList { public static void main(String[] args

2017-07-16 17:06:45 475

原创 Java 国际化

Java国际化编程目录Java国际化编程目录java支持的国家与语言最简单的hello World程序使用MessageFormat处理包占位符的字符串使用类来代替资源文件使用NumberFormat格式化数字使用DateFromatjava支持的国家与语言我们可以通过下面程序的运行结果知道Java支持的国家与语言。public class LocaleList { publi

2017-06-14 15:55:56 300

原创 正则表达式

正则表达式目录正则表达式目录正则表达式的规则字符字符类预定义字符类POSIX 字符类仅 US-ASCIIjavalangCharacter 类简单的 java 字符类型Unicode 块和类别的类边界匹配器Greedy 数量词贪婪模式Reluctant 数量词勉强模式Possessive 数量词 占有模式Logical 运算符正则表达式的用法正则表达式的用法匹配字符串

2017-06-12 21:13:13 369

原创 学生成绩管理系统

一个简单的学生管理系统一些小技巧1 刷新缓冲区2 一些system的函数3 分文件写这个系统实现的一些功能即菜单函数建立链表需要的一些声明程序开始的第一步将数据读入链表第一个功能添加学生第二个功能显示所有学生的信息第三个功能查看某个学生的信息第四个功能删除学生的信息第五个功能改变学生的信息第六个功能插入第七个功能排序下面是一个简单的main函数总结一个简单的学生管理系

2017-05-31 22:20:32 1141

原创 双链表

双链表:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。双链表的一些基本操作函数的声明:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct Node { int data;

2017-04-22 23:46:15 249

空空如也

空空如也

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

TA关注的人

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