自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis分布式锁实现简述

一、分布式锁使用的情形如下,下图中单机锁不能保证资源互斥一般来说分布式锁使用第三方(外部)系统来保证互斥,常见的有以下三种:1:Zookeeper,使用临时节点作为锁标识2:MySQL,使用表字段作为锁标识3:Redis,使用Hash或...

2022-01-20 16:00:00 909

原创 jsoup+Java多线程爬虫-Lv1.0

        刚刚接触爬虫这个领域,使用Java+jsoup写了一个简单的网络爬虫。就是直接从网站上爬取文本信息,原理也没有那么复杂。        这里用到了jsoup,是一个Java的HTML解析器,可以直接去解析URL或者HTML文本。可以通过DOM和CSS选择器等方法去提取和操作数据。有关jsoup就不做过多介绍,解析HTML文本用的都是基础操作,感兴趣的话也可以自己去学习。  ...

2018-09-28 11:17:24 2758 4

原创 使用jsoup爬虫抓取一个URL

        这两天开始写爬虫,本意是想在各大音乐网站上爬些音乐到本地来听的。后来发现这好像并没有我想象的那么容易,我也是醉了。索性把我学习爬虫的经过写成博客,慢慢总结吧。         爬虫最重要的部分就在于如何解析获取到的HTML文档,在这方面我使用了jsoup,一个简单好用的HTML解析器。通过Maven注入到项目之中。我一开始练习爬数据的网站是http://www.stats....

2018-09-13 21:07:26 2324

原创 SpringMVC中的重定向数据传递

        SpringMVC就不用多介绍了,这篇文章总结一下URL重定向的数据保存问题,至于什么是URL重定向?在之前的博客中我有介绍过。        今天再写项目的时候发现:使用SpringMVC的Controller是可以对同一个URL返回不同的界面的。但是发现了一个问题,如果是一个登录的界面,用户名和密码正确之后返回给用户的是登后的主界面,但是!URL的地址没有变!     ...

2018-09-09 20:58:37 8479 2

原创 使用SpringJDBC+SpringMVC+JSP实现三层架构

        三层架构就是把一个程序的业务划分为表现层+业务逻辑层+数据访问层,可以有效的实现程序的高内聚与低耦合。处于练习和巩固知识的目的。我花了一下午时间把它实现了。        为了实现这种三层模型,我使用SpringJDBC进行数据库的访问,实现了数据访问层(DAO)。使用SpringMVC进行前后端的分离,有了更清晰的业务逻辑,实现了业务逻辑层(Service)。使用JSP作为前...

2018-09-07 19:48:27 5816 2

原创 Spring MVC项目逻辑及构建

再熟悉了Spring MVC的思想之后进行项目的构建,可以更清晰的了解Spring MVC的逻辑,Spring MVC真牛逼!!对于MVC的思想和Spring MVC的简介我在之前的博客中有介绍,这篇博客简单点,以代码为主,有很详细的注释 一、pom.xml:项目的依赖配置,CV就可以了<?xml version="1.0" encoding="UTF-8"?>&l...

2018-09-06 21:27:07 343

原创 使用HttpSessionActivationListener对Session进行钝化/活化的监听

 一、钝化和活化钝化:就是序列化,把对象转化为字节序列,把Session对象从内存保存到硬盘里。(持久化操作)活化:就是反序列化,把字节序列转化为对象,把Session对象从硬盘再读回内存。        HttpSessionActivationListener监控Session时必须把它添加到Session中,所以当Session的序列化/反序列化执行的时候它都会监听到。此接口...

2018-09-05 18:21:17 2219

原创 META-INF目录是干啥用的?

        平时写的web项目打包成jar文件之后会发现里面不知道为啥多出了一个叫做META-INF的目录,点开之后发现里面还出现了一个manifest.mf文件。出于好奇我在网上找了找这个目录的用途,结果还是没有找到一个比较通俗的解释,我这种菜鸟对那种比较正规的解释还是理解有困难的。        所以总结了一下,我感觉这样解释的话对于我们这些初学者来说还是比较容易理解的。 ja...

2018-09-05 09:28:30 67044 5

原创 Listener总结(上)

Servlet监听器的总结,仅为个人的理解 一、ServletContext1、ServletContextListener当ServletContext初始化时Servlet容器会调用所有已部署的ServletContextListener的contextInitialized()方法当ServletContext销毁时,Servlet容器会调用所有部署的ServletCon...

2018-09-03 21:02:53 246

原创 Filter笔记(三)—登录验证

经常会遇到这种情况:访问某个网站的时候弹出一个页面,提示你必须先登录才能访问资源。使用Filter可以写出这种类似于登录验证的小功能这个例子中,正确的用户名和密码是"123456"和"000000"。 先看Filter实现类的代码package javaweb.web.filter;​import javax.servlet.*;import javax.servlet...

2018-09-02 16:54:32 3464 1

原创 Filter笔记(二)—访问计数器

Filter访问计数器package javaweb.web.filter;​import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java...

2018-09-01 15:29:50 377

原创 Filter笔记(一)

 Filter过滤器简介        Filter是拦截Request请求的对象, 在用户的请求访问到目标资源之前处理request和response,它可以用于日志记录/加密解密/Session检查/文件保护.通过Filter可以拦截处理某个或者某些资源        Filter的配置可以通过注解或者部署在web.xml中来完成,一般情况下来说要访问到一个资源要部署很多的Filt...

2018-08-31 20:56:52 382

原创 转发/重定向笔记

请求转发:转发是在服务器端转发的,客户端是不知道的request.getRequestDispatcher(“xxxx.jsp”).forward(request,response);请求转发,在一个服务器内部移交request/response的处理权,客户端只会知道第一次请求的地址,中间过程请求的一个甚至多个页面客户端是不知道的,传输的信息不会丢失转发过程:客户端首先发送一个请...

2018-08-30 12:56:25 186

原创 JavaWeb-会话管理笔记

这篇博客主要总结常见的四种会话管理方式1.URL重写        将一个或者多个token添加到URL的查询字符串中汇总,每个token通常为key/value格式通常为 url?key-1=value-1&key-2=value-2&.......URL重写适合于tokens不需要在太多URL间传递的情况,存在一些限制限制1、URL在某些浏览器上有长度限制...

2018-08-28 20:50:05 554

原创 MVC思想及SpringMVC设计理念

1:什么是MVC        MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面,当然这种比较官方的解释是不能让我们足够清晰的理解什么是MVC的。用通俗的话来讲,MVC的理念就是把数据处理、数据展示(界面)和程序/用户的...

2018-08-10 14:11:13 45440 4

原创 Servlet表单操作

        一个Web应用程序总是会包含一个多个HTML表单,很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序。浏览器使用GET方法和POST方法把请求传到Web服务器。1:GET和POST表单提交1.1:什么是GET和POST?        GET方法是浏览器默认向Web服务器传递信息的办法,GET方法向页面请求发送已编码的用户信息。页面和已编码的信息中...

2018-07-28 18:27:41 1417

原创 Servlet技术

Servlet与Servlet容器介绍        Servlet(Server Applet)是javaServlet的简称,是SUN公司提供的一门用于开发动态Web资源的技术,运行在服务器端,主要处理客户端传来的HTTP请求,并返回一个响应。现在普遍理解的Servlet是指实现了Servlet接口的类,通常都是指HttpServlet。        提供Servlet功能的服务器叫...

2018-07-27 17:08:35 178

原创 通讯录3.0,基于Spring

        刚接触编程的时候使用C语言写过一个通讯录,把数据存在本地的文件中,实现体系也比较low,当时完全没有把这个东西作为一个项目来写,在实现的时候也没有项目的层次体系,只是在一个.c文件中实现罢了。后来我使用JDBC尝试把信息储存到数据库里,但是当时自学的JDBC实现起来让我感觉很繁琐,后来也就不了了之了,至于项目构建,结构什么的都没有。        现在我重新实现了这个小小的项目...

2018-07-26 01:10:42 770 2

原创 Spring事务管理及声明式事务的配置

Spring事务的原理    Spring事务本质上就是对数据库事务的支持,为什么要出现事务管理这个名词呢?通常我们在进行一组关于数据库操作的时候,如果这一组操作中有一个操作出现了失误,所有动作须全部回滚,系统会将事务中对数据库的所有已完成的操作全部撤消,返回到事务开始的状态,为了避免出现由于数据不一致而导致的接下来一系列的错误。 事务的思想反映到数据库上,就是对于一组sql语句,要么全部执行...

2018-07-24 21:07:15 232

原创 浅谈Spring IOC容器构建

1、Spring开源框架的简介         Spring是一个在2003年兴起的一个轻量级的Java开发框架,是为了解决企业应用开发的复杂性而创建的,框架的主要优势之一是分层架构,分层架构可以让开发者随意的选择任何一个组件来进行开发。但是Spring的用途不仅仅局限于服务器端的开发,从简便性、可测试性和低耦合的角度来看,Spring框架可以使几乎所有Java程序从中受益。        简单来...

2018-07-14 12:21:18 463

原创 浅析Maven项目构建

        在介绍·什么是Maven之前,我们先来想一个小问题:        使用idea写了两个Java的小项目,姑且把它们称作项目A与项目B,项目A的代码中需要依赖项目B中的某些类,应该如何操作才能解决这个问题?        在原来如果我们遇到了这种问题,大致是这样的:因为A需要依赖B中的类,所以我们把项目B打成一个jar包,然后在A项目的External Libraries中导入这个...

2018-07-05 16:12:41 193

原创 使用Java Socket模拟实现聊天室

        使用Java Socket模拟实现了一个聊天室,实现了基本的私聊以及群聊。分为服务器端和客户端,下面我来介绍一下实现的步骤。服务器端        服务器端是聊天室的核心所在,主要用来处理客户端的请求,先来看一下服务器端的主方法: public static void main(String[] args) { try { Execut...

2018-06-11 01:37:22 5853 1

原创 实现一个通讯录

        一般来说通讯录的信息都是存在文件上的,我使用MySQL来存储信息。通讯录的原理就不在这多介绍了。        直接看实现的代码吧,我只涉及到了增删查改,我会慢慢的完善这段代码package com.company;import java.io.PrintWriter;import java.sql.*;import java.util.Scanner;interfac...

2018-06-03 17:27:56 499

原创 JDBC简介及连接MySQL数据库

JDBC简介                JDBC(Java DataBase Connectivity)可以让我们用相同的方式访问不同的数据库,它定义了一套标准的接口,即访问数据库的通用API。它是sun公司开发的一套数据库访问编程接口,由java语言编写完成。不同的数据库厂商根据自己数据库的特性去实现JDBC提供的这套接口。        JDBC具有很好的跨平台特性,使用JDBC编写的数据...

2018-05-29 21:37:30 11453 3

原创 Java-生产者与消费者模型

线程同步与互斥的经典问题就是生产者与消费者的问题,首先介绍一下这个问题:        1:生产者将生产的产品放到某个位置存储起来(仓库),而消费者从仓库消费产品。        2:仓库满了就停止生产,生产者等待消费者来消费产品,当仓库不满的时候生产者继续生产。        3:如果仓库是空的,消费者就等待生产者生产产品,然后再消费。实现此问题所用的仓库我使用队列来实现,队列是先进先出的操作,...

2018-05-24 04:53:06 428

原创 Java-Map

        Collection接口实现的集合是每次进行单个对象的保存,与之相对的Map集合支持一组对象(偶对象)的存储,Map集合保存的一组对象对象之间的关系是Key = Value(键-值)的结构,在标准的Java类库中包含了Map的几种基本实现。HashMap,Hashtable,TreeMap,LinkedHashMap,WeakHashMap,ConcurrentHashMap,Id...

2018-05-22 21:00:43 120

原创 Java-集合类-Set集合接口

        和Lsit接口一样,Set接口也是Collection接口的子接口,这两个接口的最大不同是List接口中的子类集合内容允许重复,但是Set接口子类的集合允许重复,除此之外,Set接口没有对Collection接口进行扩充,所以Set接口中没有List接口中的get()方法。你可以轻松的询问某个对象是否在某个Set中,所以查找是Set中最重要的操作。而且Set是根据对象的值来确定归属...

2018-05-21 17:36:37 492

原创 Java-ConcurrentModificationException异常

        在集合输出的时候有提过:在对ArrayList和Vector进行迭代输出的同时不要修改集合中的元素(添加或者删除)。否则就会抛出java.util.ConcurrentModificationException异常。本文主要解释此异常出现的原因以及解决办法。        我们首先来看一下这种异常是怎么出现的,先看下面的代码public class Main{ public...

2018-05-20 18:11:11 224

原创 Java-集合类输出

        有关集合类的输出,专门用一篇博客来进行详细的总结。        输出集合类的元素最常见的是使用toString()方法,或者,List接口中有提供get()方法,但是这些都不是集合类的标准输出。从严格意义上来讲,集合的输出有四种形式。        1:迭代输出:Iterator(标准输出法)        在Collection接口中有一个iterator()方法,只要是Col...

2018-05-20 12:57:38 1539

原创 Java-集合类-List集合接口

        在介绍List集合接口之前,我们需要了解List接口的继承关系。public interface List<E> extends Collection<E>        可以看出List接口继承于Collection接口,在JDK1.2以后,java.util包提供了Collection接口,Collection接口的操作形式与链表有点类似,每一次进行数据...

2018-05-20 02:04:50 416

原创 Scanner文本扫描器

        java.util.Scanner在JDK1.5之后引入,Scanner类是一个专门用来进行输入流处理的的程序类。在此之前,对于输入流的处理一开始使用InputStream,然后出现了BufferedReader类用来解决其存在的一些不足之处,但是BufferedReader类默认的换行模式成了最大的缺点。最后被Scanner类取代。        Scanner类是一个简单的文本...

2018-05-18 03:40:52 1209

原创 C语言实现搜索二叉树(无重复)

        关于什么是搜索二叉树我就不介绍了,我主要讲实现的思路。我们来用这棵树来举例子        首先是搜索二叉树的添加 public void SearchTreeInsert(Search_Tree search_tree, int Key) throws Exception {//搜索二叉树插入 if (search_tree == null) { ...

2018-05-15 22:01:23 1192

原创 Java-堆操作

        使用Java实现堆操作class Heap_Test { public static final int MAXSIZE = 500; class heap { int[] data; int MaxSize; boolean Flag; int len; } public bool...

2018-05-14 15:21:10 1559

原创 Java-Decorator设计模式

        今天我们来介绍一种新的设计模式:Decorator(装饰器)设计模式。        什么是装饰器设计模式呢?装饰器模式的意思是:允许用户向一个现有的对象添加新的功能,同时又不改变其结构。装饰者可以在所委托被装饰者的行为之前或之后加上自己的行为,以达到特定的目的。        装饰器设计模式的一个典型的应用是Java类库中的输入输出流设计,举个例子:JavaIO中的}Output...

2018-05-14 01:05:34 239

原创 JavaSE-文件拷贝

        模仿Linux中的cp指令,用Java实现一个文件拷贝的程序,主要是采用File Output/Intput Stream来进行文件的读取和写入效果。在实现文件拷贝的过程中,会发生以下的几种情况。        1:源文件为文件            (1)目标文件为文件:如果两文件名称相同,则默认覆盖拷贝。如果不相同,则创建新的文件并且拷贝。            (2)目标文件...

2018-05-13 03:15:19 139

原创 JavaSE-只能搜索文本文件的文件搜索器(娱乐)

        主要使用InputStream.read()来读取文本文件中的数据,编码格式为GBK。import java.io.File;import java.io.FileInputStream;import java.io.InputStream;public class Main{ public static void main(String[] args)throws...

2018-05-11 20:45:23 129

原创 JavaSE-反射体系

        反射体系是Java中最有代表性的体系之一,反射是所有Java框架的基础,没有反射体系的话就没有任何JavaEE的框架。        什么是反射?通俗的来讲就是对象的反向处理操作,就是根据已有的类的实例化对象来反推类的组成。一般情况下我们采用的实例化方式是:类名 对象名 = new 构造方法();这是正向操作。        我们现在来观察一下正反两种操作的例子import jav...

2018-05-10 05:04:32 265

原创 Java面试题-输出*Thread-0#Thread-1@Thread-2

class MyThread implements Runnable{ private static int i = 3; private static int divnumber = 6; private static int Count = 0; @Override public void run() { while(Count <...

2018-05-08 18:56:47 565

原创 JavaSE-ClassLoader类加载器与双亲委托模式

        我们已经知道Class类是描述类的信息的类,在我们使用一个类之前,JVM会将该类的字节码文件(.Class)从磁盘,网络或者其他的来源加载到内存中,并对字节码进行解析,生成Class对象。在Class类中有提供forName()方法,此方法根据ClassPath所配置的路径进行类的加载,如果你的类来源是网络,文件。那么这个时候我们就要手动实现类加载器。        首先我们要了解...

2018-05-08 01:25:14 178

原创 JavaSE反射-静态代理模式

        首先,我们要知道什么是代理模式。代理模式通俗的来讲就是:一个接口有两个实现子类,一个子类负责真实业务的实现,另一个子类负责其辅助业务的实现(辅助类)。有关代理模式的讲解我就不在这里进行了。        对于基础的代理模式,其中的工厂类只能针对于一组代理对象,如果稍微进行需求的修改,就会使开发端修改大量代码,十分繁琐,而且如果存在多组代理对象,那么就会多出大量的重复代码。     ...

2018-05-06 22:48:40 131

空空如也

空空如也

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

TA关注的人

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