- 博客(67)
- 收藏
- 关注
原创 Redis分布式锁实现简述
一、分布式锁使用的情形如下,下图中单机锁不能保证资源互斥一般来说分布式锁使用第三方(外部)系统来保证互斥,常见的有以下三种:1:Zookeeper,使用临时节点作为锁标识2:MySQL,使用表字段作为锁标识3:Redis,使用Hash或...
2022-01-20 16:00:00
973
原创 jsoup+Java多线程爬虫-Lv1.0
刚刚接触爬虫这个领域,使用Java+jsoup写了一个简单的网络爬虫。就是直接从网站上爬取文本信息,原理也没有那么复杂。 这里用到了jsoup,是一个Java的HTML解析器,可以直接去解析URL或者HTML文本。可以通过DOM和CSS选择器等方法去提取和操作数据。有关jsoup就不做过多介绍,解析HTML文本用的都是基础操作,感兴趣的话也可以自己去学习。 ...
2018-09-28 11:17:24
2881
4
原创 使用jsoup爬虫抓取一个URL
这两天开始写爬虫,本意是想在各大音乐网站上爬些音乐到本地来听的。后来发现这好像并没有我想象的那么容易,我也是醉了。索性把我学习爬虫的经过写成博客,慢慢总结吧。 爬虫最重要的部分就在于如何解析获取到的HTML文档,在这方面我使用了jsoup,一个简单好用的HTML解析器。通过Maven注入到项目之中。我一开始练习爬数据的网站是http://www.stats....
2018-09-13 21:07:26
2394
原创 SpringMVC中的重定向数据传递
SpringMVC就不用多介绍了,这篇文章总结一下URL重定向的数据保存问题,至于什么是URL重定向?在之前的博客中我有介绍过。 今天再写项目的时候发现:使用SpringMVC的Controller是可以对同一个URL返回不同的界面的。但是发现了一个问题,如果是一个登录的界面,用户名和密码正确之后返回给用户的是登后的主界面,但是!URL的地址没有变! ...
2018-09-09 20:58:37
8664
1
原创 使用SpringJDBC+SpringMVC+JSP实现三层架构
三层架构就是把一个程序的业务划分为表现层+业务逻辑层+数据访问层,可以有效的实现程序的高内聚与低耦合。处于练习和巩固知识的目的。我花了一下午时间把它实现了。 为了实现这种三层模型,我使用SpringJDBC进行数据库的访问,实现了数据访问层(DAO)。使用SpringMVC进行前后端的分离,有了更清晰的业务逻辑,实现了业务逻辑层(Service)。使用JSP作为前...
2018-09-07 19:48:27
5937
1
原创 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
387
原创 使用HttpSessionActivationListener对Session进行钝化/活化的监听
一、钝化和活化钝化:就是序列化,把对象转化为字节序列,把Session对象从内存保存到硬盘里。(持久化操作)活化:就是反序列化,把字节序列转化为对象,把Session对象从硬盘再读回内存。 HttpSessionActivationListener监控Session时必须把它添加到Session中,所以当Session的序列化/反序列化执行的时候它都会监听到。此接口...
2018-09-05 18:21:17
2355
原创 META-INF目录是干啥用的?
平时写的web项目打包成jar文件之后会发现里面不知道为啥多出了一个叫做META-INF的目录,点开之后发现里面还出现了一个manifest.mf文件。出于好奇我在网上找了找这个目录的用途,结果还是没有找到一个比较通俗的解释,我这种菜鸟对那种比较正规的解释还是理解有困难的。 所以总结了一下,我感觉这样解释的话对于我们这些初学者来说还是比较容易理解的。 ja...
2018-09-05 09:28:30
70993
6
原创 Listener总结(上)
Servlet监听器的总结,仅为个人的理解 一、ServletContext1、ServletContextListener当ServletContext初始化时Servlet容器会调用所有已部署的ServletContextListener的contextInitialized()方法当ServletContext销毁时,Servlet容器会调用所有部署的ServletCon...
2018-09-03 21:02:53
275
原创 Filter笔记(三)—登录验证
经常会遇到这种情况:访问某个网站的时候弹出一个页面,提示你必须先登录才能访问资源。使用Filter可以写出这种类似于登录验证的小功能这个例子中,正确的用户名和密码是"123456"和"000000"。 先看Filter实现类的代码package javaweb.web.filter;import javax.servlet.*;import javax.servlet...
2018-09-02 16:54:32
3509
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
435
原创 Filter笔记(一)
Filter过滤器简介 Filter是拦截Request请求的对象, 在用户的请求访问到目标资源之前处理request和response,它可以用于日志记录/加密解密/Session检查/文件保护.通过Filter可以拦截处理某个或者某些资源 Filter的配置可以通过注解或者部署在web.xml中来完成,一般情况下来说要访问到一个资源要部署很多的Filt...
2018-08-31 20:56:52
461
原创 转发/重定向笔记
请求转发:转发是在服务器端转发的,客户端是不知道的request.getRequestDispatcher(“xxxx.jsp”).forward(request,response);请求转发,在一个服务器内部移交request/response的处理权,客户端只会知道第一次请求的地址,中间过程请求的一个甚至多个页面客户端是不知道的,传输的信息不会丢失转发过程:客户端首先发送一个请...
2018-08-30 12:56:25
217
原创 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
646
原创 MVC思想及SpringMVC设计理念
1:什么是MVC MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面,当然这种比较官方的解释是不能让我们足够清晰的理解什么是MVC的。用通俗的话来讲,MVC的理念就是把数据处理、数据展示(界面)和程序/用户的...
2018-08-10 14:11:13
46229
4
原创 Servlet表单操作
一个Web应用程序总是会包含一个多个HTML表单,很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序。浏览器使用GET方法和POST方法把请求传到Web服务器。1:GET和POST表单提交1.1:什么是GET和POST? GET方法是浏览器默认向Web服务器传递信息的办法,GET方法向页面请求发送已编码的用户信息。页面和已编码的信息中...
2018-07-28 18:27:41
1584
原创 Servlet技术
Servlet与Servlet容器介绍 Servlet(Server Applet)是javaServlet的简称,是SUN公司提供的一门用于开发动态Web资源的技术,运行在服务器端,主要处理客户端传来的HTTP请求,并返回一个响应。现在普遍理解的Servlet是指实现了Servlet接口的类,通常都是指HttpServlet。 提供Servlet功能的服务器叫...
2018-07-27 17:08:35
198
原创 通讯录3.0,基于Spring
刚接触编程的时候使用C语言写过一个通讯录,把数据存在本地的文件中,实现体系也比较low,当时完全没有把这个东西作为一个项目来写,在实现的时候也没有项目的层次体系,只是在一个.c文件中实现罢了。后来我使用JDBC尝试把信息储存到数据库里,但是当时自学的JDBC实现起来让我感觉很繁琐,后来也就不了了之了,至于项目构建,结构什么的都没有。 现在我重新实现了这个小小的项目...
2018-07-26 01:10:42
824
2
原创 Spring事务管理及声明式事务的配置
Spring事务的原理 Spring事务本质上就是对数据库事务的支持,为什么要出现事务管理这个名词呢?通常我们在进行一组关于数据库操作的时候,如果这一组操作中有一个操作出现了失误,所有动作须全部回滚,系统会将事务中对数据库的所有已完成的操作全部撤消,返回到事务开始的状态,为了避免出现由于数据不一致而导致的接下来一系列的错误。 事务的思想反映到数据库上,就是对于一组sql语句,要么全部执行...
2018-07-24 21:07:15
265
原创 浅谈Spring IOC容器构建
1、Spring开源框架的简介 Spring是一个在2003年兴起的一个轻量级的Java开发框架,是为了解决企业应用开发的复杂性而创建的,框架的主要优势之一是分层架构,分层架构可以让开发者随意的选择任何一个组件来进行开发。但是Spring的用途不仅仅局限于服务器端的开发,从简便性、可测试性和低耦合的角度来看,Spring框架可以使几乎所有Java程序从中受益。 简单来...
2018-07-14 12:21:18
515
原创 浅析Maven项目构建
在介绍·什么是Maven之前,我们先来想一个小问题: 使用idea写了两个Java的小项目,姑且把它们称作项目A与项目B,项目A的代码中需要依赖项目B中的某些类,应该如何操作才能解决这个问题? 在原来如果我们遇到了这种问题,大致是这样的:因为A需要依赖B中的类,所以我们把项目B打成一个jar包,然后在A项目的External Libraries中导入这个...
2018-07-05 16:12:41
298
原创 使用Java Socket模拟实现聊天室
使用Java Socket模拟实现了一个聊天室,实现了基本的私聊以及群聊。分为服务器端和客户端,下面我来介绍一下实现的步骤。服务器端 服务器端是聊天室的核心所在,主要用来处理客户端的请求,先来看一下服务器端的主方法: public static void main(String[] args) { try { Execut...
2018-06-11 01:37:22
5891
1
原创 实现一个通讯录
一般来说通讯录的信息都是存在文件上的,我使用MySQL来存储信息。通讯录的原理就不在这多介绍了。 直接看实现的代码吧,我只涉及到了增删查改,我会慢慢的完善这段代码package com.company;import java.io.PrintWriter;import java.sql.*;import java.util.Scanner;interfac...
2018-06-03 17:27:56
550
原创 JDBC简介及连接MySQL数据库
JDBC简介 JDBC(Java DataBase Connectivity)可以让我们用相同的方式访问不同的数据库,它定义了一套标准的接口,即访问数据库的通用API。它是sun公司开发的一套数据库访问编程接口,由java语言编写完成。不同的数据库厂商根据自己数据库的特性去实现JDBC提供的这套接口。 JDBC具有很好的跨平台特性,使用JDBC编写的数据...
2018-05-29 21:37:30
11586
3
原创 Java-生产者与消费者模型
线程同步与互斥的经典问题就是生产者与消费者的问题,首先介绍一下这个问题: 1:生产者将生产的产品放到某个位置存储起来(仓库),而消费者从仓库消费产品。 2:仓库满了就停止生产,生产者等待消费者来消费产品,当仓库不满的时候生产者继续生产。 3:如果仓库是空的,消费者就等待生产者生产产品,然后再消费。实现此问题所用的仓库我使用队列来实现,队列是先进先出的操作,...
2018-05-24 04:53:06
479
原创 Java-Map
Collection接口实现的集合是每次进行单个对象的保存,与之相对的Map集合支持一组对象(偶对象)的存储,Map集合保存的一组对象对象之间的关系是Key = Value(键-值)的结构,在标准的Java类库中包含了Map的几种基本实现。HashMap,Hashtable,TreeMap,LinkedHashMap,WeakHashMap,ConcurrentHashMap,Id...
2018-05-22 21:00:43
142
原创 Java-集合类-Set集合接口
和Lsit接口一样,Set接口也是Collection接口的子接口,这两个接口的最大不同是List接口中的子类集合内容允许重复,但是Set接口子类的集合允许重复,除此之外,Set接口没有对Collection接口进行扩充,所以Set接口中没有List接口中的get()方法。你可以轻松的询问某个对象是否在某个Set中,所以查找是Set中最重要的操作。而且Set是根据对象的值来确定归属...
2018-05-21 17:36:37
545
原创 Java-ConcurrentModificationException异常
在集合输出的时候有提过:在对ArrayList和Vector进行迭代输出的同时不要修改集合中的元素(添加或者删除)。否则就会抛出java.util.ConcurrentModificationException异常。本文主要解释此异常出现的原因以及解决办法。 我们首先来看一下这种异常是怎么出现的,先看下面的代码public class Main{ public...
2018-05-20 18:11:11
269
原创 Java-集合类输出
有关集合类的输出,专门用一篇博客来进行详细的总结。 输出集合类的元素最常见的是使用toString()方法,或者,List接口中有提供get()方法,但是这些都不是集合类的标准输出。从严格意义上来讲,集合的输出有四种形式。 1:迭代输出:Iterator(标准输出法) 在Collection接口中有一个iterator()方法,只要是Col...
2018-05-20 12:57:38
1738
原创 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
487
原创 Scanner文本扫描器
java.util.Scanner在JDK1.5之后引入,Scanner类是一个专门用来进行输入流处理的的程序类。在此之前,对于输入流的处理一开始使用InputStream,然后出现了BufferedReader类用来解决其存在的一些不足之处,但是BufferedReader类默认的换行模式成了最大的缺点。最后被Scanner类取代。 Scanner类是一个简单的文本...
2018-05-18 03:40:52
1297
原创 C语言实现搜索二叉树(无重复)
关于什么是搜索二叉树我就不介绍了,我主要讲实现的思路。我们来用这棵树来举例子 首先是搜索二叉树的添加 public void SearchTreeInsert(Search_Tree search_tree, int Key) throws Exception {//搜索二叉树插入 if (search_tree == null) { ...
2018-05-15 22:01:23
1239
原创 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
1620
原创 Java-Decorator设计模式
今天我们来介绍一种新的设计模式:Decorator(装饰器)设计模式。 什么是装饰器设计模式呢?装饰器模式的意思是:允许用户向一个现有的对象添加新的功能,同时又不改变其结构。装饰者可以在所委托被装饰者的行为之前或之后加上自己的行为,以达到特定的目的。 装饰器设计模式的一个典型的应用是Java类库中的输入输出流设计,举个例子:JavaIO中的}Output...
2018-05-14 01:05:34
307
原创 JavaSE-文件拷贝
模仿Linux中的cp指令,用Java实现一个文件拷贝的程序,主要是采用File Output/Intput Stream来进行文件的读取和写入效果。在实现文件拷贝的过程中,会发生以下的几种情况。 1:源文件为文件 (1)目标文件为文件:如果两文件名称相同,则默认覆盖拷贝。如果不相同,则创建新的文件并且拷贝。 (2)目标文件...
2018-05-13 03:15:19
172
原创 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
153
原创 JavaSE-反射体系
反射体系是Java中最有代表性的体系之一,反射是所有Java框架的基础,没有反射体系的话就没有任何JavaEE的框架。 什么是反射?通俗的来讲就是对象的反向处理操作,就是根据已有的类的实例化对象来反推类的组成。一般情况下我们采用的实例化方式是:类名 对象名 = new 构造方法();这是正向操作。 我们现在来观察一下正反两种操作的例子import jav...
2018-05-10 05:04:32
318
原创 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
602
原创 JavaSE-ClassLoader类加载器与双亲委托模式
我们已经知道Class类是描述类的信息的类,在我们使用一个类之前,JVM会将该类的字节码文件(.Class)从磁盘,网络或者其他的来源加载到内存中,并对字节码进行解析,生成Class对象。在Class类中有提供forName()方法,此方法根据ClassPath所配置的路径进行类的加载,如果你的类来源是网络,文件。那么这个时候我们就要手动实现类加载器。 首先我们要了解...
2018-05-08 01:25:14
223
原创 JavaSE反射-静态代理模式
首先,我们要知道什么是代理模式。代理模式通俗的来讲就是:一个接口有两个实现子类,一个子类负责真实业务的实现,另一个子类负责其辅助业务的实现(辅助类)。有关代理模式的讲解我就不在这里进行了。 对于基础的代理模式,其中的工厂类只能针对于一组代理对象,如果稍微进行需求的修改,就会使开发端修改大量代码,十分繁琐,而且如果存在多组代理对象,那么就会多出大量的重复代码。 ...
2018-05-06 22:48:40
158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人