自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (3)
  • 收藏
  • 关注

原创 JAVA抓取百度图片搜索

1、抓取方式 一般来说,应该用jsoup来抓取网页中的Image的,但是,由于百度图片的加载不再是翻页形式的了,而是使用ajax的方式动态加载。所以,使用jsoup的话,也就只能拿到第一页的内容,想要获取后面页码的内容,效力不够。不过,既然是ajax的方式,我们自然也可以通过ajax的内容来获取到图片内容。2、验证 可以看到响应3、...

2020-11-29 16:19:28 3

原创 2年Java开发面试被问及的问题

一、Java基础 static修饰变量、方法、类的区别; final修饰变量、方法、类的区别; 内部类和静态内部类有什么区别; 内存溢出与内存泄漏的区别; 内存泄漏会造成什么样的影响; OOM的几种常见形式和解决办法; 如何避免内存泄漏; threadLocal会内存泄漏吗; 类加载器的作用,写自定义类加载器的意义是什么; 字符串翻转的几种方式; ArrayList和LinkedList的区别,为什么会有这些区别,分别占用的内存空间是怎么样的; 线程的几种创建和启...

2020-05-12 16:35:26 573

原创 一次性能优化

1、先说背景 导入一个文件,文件内容为20万个手机号码,将这20万个手机号码插入到数据库中。 整个过程:a.解析文件;b.读取每行数据;c.读取到的行数据放入一个LinkedList中;d.遍历这个LinkedList,把通过校验的元素放入新的一个LinkedList中;e.遍历这个新的LInkedList,逐个元素进行插入数据库操作 一次操作耗时约2~3分...

2020-05-05 19:06:56 62

原创 springboot使用自定义注解实现日志记录功能

有这么一个需求:记录controller的请求参数和响应结果到日志中。 解决思路:写一个自定义注解,在需要记录的controller的方法上,加上该注解,通过注解来记录相关信息。 解决方式:使用AOP来解决,通过返回通知来获取返回结果信息。 解决步骤:1、在pom.xml中引入AOP的依赖<dependency> <groupId>...

2020-01-28 22:20:20 185

原创 日志 在web下log4j按日期生成文件夹

期望结果:在web项目的根目录下(Tomcat下的项目路径下)按日期生成文件夹,在最底层文件夹中记录日志,如:2019/03/21,在21这个文件夹下记录21号的日志,03和2019均为21的父文件夹。 本篇是在java项目下生成日期文件夹日志的基础上进行改变,可以先查看java项目下日志生成。 1、修改日志的配置文件,在原日志路径上,增加...

2019-03-21 09:44:54 1058

原创 ActiveMQ JDBC持久化

ActiveMQ可以将数据持久化到数据库中,用于容灾备份恢复,可以使用任意的数据库。1、找到activemq.xml文件2、在文件中添加数据库的bean&lt;bean id="activemq-mysql" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"&gt; &lt;...

2019-03-14 16:45:26 1441

原创 ActiveMQ 安全认证

ActiveMQ提供安全认证。即用户名密码登录规则。如果需要使用安全认证的话,则必须在activemq的核心配置文件conf目录下的activemq.xml文件中开启安全配置。 在activemq.xml配置文件的broker标签中增加下述内容。&lt;plugins&gt; &lt;!-- use JAAS to authentic...

2019-03-13 17:58:35 383

原创 ActiveMQ 监听器

监听器,由消息的消费者注册监听,去监听消息队列(queue)中的消息,监听到有消息未处理,即自动调用onMessage方法处理消息,监听器可以注册多个,ActiveMQ自动循环调用注册的监听器,处理队列中的消息。 在消息的消费者方,使用setMessageListener方法注册监听,传入匿名参数new MessageListener(),复写onMessage(...

2019-03-13 17:32:42 603 1

原创 ActiveMQ Queue与Topic

Queue: 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费、其它的则不能消费此消息了,当消费者不存在时,消息会一直保存,直到有消费消费。Topic: 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。当生产者发布消...

2019-03-13 17:18:05 169

原创 ActiveMQ 下载与安装

下载:直接去官网即可下载注意:ActiveMQ5.10.x以上版本必须使用JDK1.8才能正常使用;ActiveMQ5.9.x及以下版本使用JDK1.7即可正常使用。安装:解压安装gz文件检查:1、权限问题,ls -al apache-activemq-5.9.0/bin,如果权限不足,则无法执行,需要修改文件权限:chmod 755 activemq2、主机名,如果主机名中带...

2019-03-13 16:57:55 271

原创 日志 log4j按日期生成文件夹

期望结果:按日期生成文件夹,在最底层文件夹中记录日志,如:2019/03/11,在11这个文件夹下记录11号的日志,03和2019均为11的父文件夹。 API:log4j 主要步骤:继承log4j的org.apache.log4j.RollingFileAppender类,重写setFile、subAppend方法 配置文件:修...

2019-03-11 10:21:31 3730

原创 Nginx 配置参数

配置、调优Nginx执行编辑命令,vi /usr/local/nginx/conf/nginx.conf找到对应的参数进行修改,默认参数中没有的话需要手动添加进去,没有提及到的可保留默认设置,具体的配置如下所示:全局项:worker_processes6;worker_cpu_affinity 000001 000010 000100 001000 010000 100000;...

2019-03-08 17:34:29 518

原创 网络编程 websocket聊天室demo

        通过websocket实现聊天室主要是将消息进行广播,把消息发送给其他的用户会话中去,通过消息推送,推送到每一个session里面去。        通过一个静态共享变量如List获取所有的session通道,然后遍历这个List,把消息广播出去。public void broadcast(List&lt;Session&gt; sessions,String msg) ...

2019-02-20 14:15:56 254

原创 网络编程 websocket

        websocket是一种持久化的协议,在建立起连接之后,和服务器就产生了一个通道,之后客户端和服务端的会话,都在这个通道中进行,而不会发起新的请求。协议头不再是http://开头的,而是以ws://进行开头,状态码是101。        websocket主要有3个事件,建立连接的open事件,发送消息的message事件以及关闭连接的close事件。在客户端new webs...

2019-02-20 11:52:05 442

原创 网络编程 netty定时断线、重连

        客户端数量多,且需要传递的数据量级较大。可以周期性的发送数据的时候,使用该机制。要求对数据的即时性不高的时候,才可使用。        优点是可以使用数据缓存。不是每条数据进行一次数据交互。可以定时回收资源,对资源利用率高。        对服务端来说,主要是读数据,使用ReadTimeoutHandler类来控制,ReadTimeoutHandler定义一个定时断线处理器...

2019-02-15 14:00:33 563 1

原创 网络编程 netty使用结束标记解决粘包问题

        netty使用tcp/ip协议传输数据。而tcp/ip协议是类似水流一样的数据传输方式。多次访问的时候有可能出现数据粘包的问题。客户端和服务器,协商定义一个特殊的分隔符号,分隔符号长度自定义。如:‘#’、‘$_$’、‘AA@’。在通讯的时候,只要没有发送分隔符号,则代表一条数据没有结束。        大致内容同前一篇博客相似,不同之处在于bootstrap.childHand...

2019-02-14 09:44:33 872

原创 网络编程 netty

       Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。client--server交互demoserver:       在server中定义线程组、配置、端口、缓存区大小等。...

2019-02-12 16:55:35 100

原创 网络编程 AIO(Asynchronous IO)

       AIO,异步非阻塞IO,是JDK1.7引入的,在nio包下,相比NIO,多了4个异步通道类,AsynchronousSocketChannel,AsynchronousServerSocketChannel,AsynchronousFileChannel,AsynchronousDatagramChannel。和NIO类似,都是使用ByteBuffer来缓存数据,Channel来传输...

2019-01-25 10:17:29 356

原创 网络编程 NIO(Non-Blocking IO)

         NIO主要是通过channel通道来运输数据,buffer来装载数据,通过多路复用器selector来注册通道。值得注意的是,每次使用buffer前,装载时记得clera()一下,读取时flip()一下。         NIO也有阻塞的地方,accept()方法依然会阻塞等待客户端的连接,channel.read()方法也会阻塞等待读取,任何的输入操作也会阻塞,多路复用器的...

2019-01-17 13:53:40 82

原创 网络编程 BIO(Blocking IO)

        在网络编程中,主要的是ServerSocket和Socket这两个类,以及输入输出流的包装。        需要注意的是,会进行阻塞的几个点。accept()方法、readLine()方法以及键盘输入等都会进行阻塞。        在服务端,使用新起线程来和客户端连接,保证每个客户端都是一个新的线程!这样,就算发生阻塞时,也只会阻塞一个线程,其他线程仍旧可以正常工作。 ...

2019-01-15 11:33:21 137

原创 SqlServer 数据库表的数据迁移

         这是前两天做的一个项目,主要功能就是把表A的数据,迁移到表B和表C,然后删除掉表A的数据。         限制就是,在表A中没有任何的标识列可以证明了该表的某行数据被操作过,并且,还在往表A中不停的插入数据。如果直接使用insert into B(列1,列2,,,)  select 列1,列2,,, from Ainsert into C(列1,列2,,,)  se...

2018-12-11 10:52:06 2295

原创 小表驱动大表

           在两个表进行连接时,用小表来驱动大表可以提高系统的执行效率。           两表连接时,先执行的是两个表的笛卡尔积,接着是 on 的条件筛选,然后是 join 类型进行外部行的添加。           如果是 inner join,没有什么差别;           如果是 left join,就应该把大表放在后面;           如果是 rig...

2018-12-10 13:47:58 1558

原创 Nginx keepalived+nginx高可用集群

一、服务器准备ip 服务器 软件 192.168.43.142 主机 1,主用 Nginx+keepalived 192.168.43.141 主机 2,备用 Nginx+keepalived 192.168.43.131 从机 1,应用服务 Tomcat 192.168.43.133 从机 2,应用服务 Tomcat...

2018-12-03 11:25:58 319

原创 Nginx 负载均衡

一、虚拟机分配ip 功能 192.168.43.42 Nginx服务器 192.168.43.133 Tomcat 1 192.168.43.131 Tomcat 2      二、安装Nginx和Tomcat安装方法可以查看《Nginx 安装nginx》,Tomcat的安装这里省略三、配置Nginx修改Nginx的配置文...

2018-11-27 15:00:43 78

原创 Nginx 安装nginx

一、下载Nginxwget http://nginx.org/download/nginx-1.6.2.tar.gz二、解压mv nginx-1.6.2.tar.gz /usr/localtar -zxvf nginx-1.6.2.tar.gz## 个人习惯放在/usr/local目录下,有快捷命令直接解压到该目录,请自行百度三、下载所需要的依赖库文件yum inst...

2018-11-27 14:29:20 135 2

原创 MySQL 表锁、行锁、间隙锁

表锁:       表锁有两种模式:表共享读锁、表独占写锁               表共享读锁:读锁不会阻塞其他进程对同一表的读操作,但阻塞写操作,只有释放锁后其他进程才可以写               表独占写锁:写锁会阻塞其他进程对同一表的读和写,只有写锁释放后,其他进程才可以读写        简而言之:读锁会阻塞写,不阻塞读;写锁阻塞读和写。行锁:只锁住某一行或多...

2018-11-26 10:14:31 316

原创 MySQL 索引失效的情况、为排序使用索引

1、使用is null 、 is not null 、!=, 索引会失效2、对索引列进行计算、函数、类型转换(手动或自动,字符串不加引号时,会自动转型),索引会失效3、在有范围值时,范围条件后面的索引列失效4、like以通配符开头,索引会失效5、少用or、用or时索引会失效为排序使用索引:...

2018-11-26 10:03:43 877

原创 MySQL explain分析SQL语句

explain的作用是分析查询的SQL语句的好坏程度,语法为:EXPLAIN SELECT * FROM mark_table WHERE mid = 8;explain 查询语句通过explain可以分析SQL语句的以下性能:1、表的读取顺序2、数据读取操作的操作类型3、哪些索引可以被使用4、哪些索引实际被使用5、表之间的引用6、每张表有多少行被优化器查询...

2018-11-26 09:52:56 173

原创 MySQL 索引

索引:是一个排好序的快速查找的数据结构       索引的目的在于提高查询效率,索引往往以索引文件的形式存储在磁盘上。索引的优势:       提高数据检索的效率,降低数据库的IO成本、降低数据排序成本、减轻CPU的消耗索引的劣势:       占用物理空间、降低了更新表的速度适合创建索引的字段:       频繁查询的字段、外键、排序/分组字段,多表连接时,索引建立在...

2018-11-26 09:33:07 37

原创 MySQL 存储过程、函数和视图

存储过程:一组预先编译好的SQL语句的集合        使用存储过程可以提高代码的重用性,减少和服务器的连接次数、编译次数,提高效率。        存储过程可以有0个或多个的返回值。 函数和存储过程类似,也是一组预先编译好的SQL语句的集合,不同之处在于:函数有且仅有一个返回值 视图:一种虚拟存在的表,只保存SQL逻辑,不保存查询结果。        常应用在多个地...

2018-11-26 09:25:33 313

原创 MySQL 内连接、外连接、全连接

使用连接查询,常用语法如下:select 查询列表from 表1连接类型 join 表2on 连接条件[where 筛选条件][group by 分组][having 筛选条件][order by 排序列表]内连接:查询结果为两个表的交集部分,具体如图所示:外连接:查询结果为主表中的所有记录                    如果从表有和主表匹配的值,则显示...

2018-11-19 17:07:37 126

原创 MySQL in和exists、order by、group by和having

        IN和EXISTS的作用都是检查给定的值是否包含在指定的集合当中,至于何种情况下,是用IN还是用EXISTS 呢?现有如下SQL语句:select * from A where id IN/EXISTS (select * from B);        当子表(B表)较小时,使用IN;反之,当子表较大时,使用EXISTS。IN是先查询子表再去对外表进行查询,EXISTS则是先...

2018-11-19 14:07:06 614

原创 spring注解 声明式事务

       在spring注解中,使用声明式事务,需要用到两个核心的注解:@Transactional注解和@EnableTransactionManagement注解。将@Transactional注解加在方法上,@EnableTransactionManagement注解加在配置类上,除此之外,还有一个核心要点是,向容器中注册PlatformTransactionManager组件,用于进行...

2018-11-13 11:45:48 289

原创 spring注解 AOP编程

         AOP:指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式,类同于动态代理,在执行目标方法的前后,进行一系列的增强处理操作。         在spring中使用AOP,首先要引入相应的jar包: &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId...

2018-11-12 16:08:27 112

原创 spring注解 bean的初始化与销毁

        在以前使用配置文件形式的时候,bean的初始化和销毁是在标签中写init-method以及destory-method,来指明bean的初始化动作和销毁动作,在注解版中,在@bean的注解上,可以直接写上参数@Bean(initMethod = "初始化方法" , destroyMethod = "销毁方法"),在这个bean的类中,写上对应的方法即可。@Configurat...

2018-11-08 11:31:50 260

原创 spring注解 Conditional注解

        @Conditional注解,官方解释为:“只有当所有指定的条件都满足是,组件才可以注册”,主要的用处是在创建bean时增加一系列限制条件,在条件通过时,才可以成功创建bean。        Conditional的声明如下:@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolic...

2018-11-07 17:02:34 96

原创 spring注解 ComponentScan、自定义类型过滤器

        @ComponentScan注解,扫描哪些包下,将扫描到的包下的组件加入到容器中,这是一个常见的用法,如@ComponentScan(value = "me.xf"),对扫描到的包下的组件,处理哪些组件可以加入到容器中,哪些组件类型的,不可以加入到容器中,这里引入了两个ComponentScan的参数:excludeFilters和includeFilters。        ...

2018-11-07 15:35:36 1858

原创 spring注解 Configuration、Bean、Scope、Lazy注解

@Configuration注解:        标注在类上,告诉spring这是一个配置类,配置类等同于配置文件,在使用时,将以往的ClassPathXmlApplicationContext("spring的xml文件全路径名"),用AnnotationConfigApplicationContext(配置类.class)代替,这样就可以通过配置类来创建容器。@Configurati...

2018-11-07 15:01:23 393

原创 spring boot 中使用JPA

1、在pom.xml文件中,添加对JPA、JDBC、mysql等依赖 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt; &lt;/depende...

2018-11-06 16:14:34 1513 5

原创 spring boot 中使用mybatis

    1、在pom.xml中加入jdbc、mybatis和mysql的坐标,如果使用IDEA工具快速构建,则会自动导入以下坐标 &lt;dependency&gt; &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/a...

2018-11-06 11:45:48 68

Java抓取百度图片|抓取图片.zip

通过Java代码实现抓取百度图片并下载到本地,采用springboot方式,开箱即用,运行起来即可进行抓取图片

2020-11-29

activeMQ使用JDBC所需要的jar包

使用activeMQ进行持久化时,所需要的相关jar包,mysql驱动、连接池等jar包

2019-03-14

websocket聊天室

使用websocket技术实现的网络聊天室,主要功能是实现在登录聊天室之后,在聊天室中群发消息、私发消息等,使用的语言:前端使用的JSP,后端使用的JAVA

2019-02-20

空空如也

空空如也

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

TA关注的人 TA的粉丝

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