
Java
可爱的小书包
这个作者很懒,什么都没留下…
展开
-
Java面试之父子类(1)
在不看答案之前,先猜测一下,标准答案是什么吧!//基类class Base { private String name = "base"; public Base() { tellName(); printName(); testName(); } public void tellName() { ...原创 2018-07-05 15:12:25 · 661 阅读 · 1 评论 -
ActiveMQ之HelloWorld
概念ActiveMQ全称Active Message Queue,是一门实现JMS(Java Message Service)规范的技术,因此ActiveMQ就可以简单的理解为是一个消息队列,与普通队列不同,这个队列可以把消息单独存起来,例如群发消息,当然可以使用Mysql进行实现,但是那样性能消耗太大,且Mysql不适合专门做消息的保存,这个技术就可以实现,当一个用户建立连接时,便给他发送存...原创 2018-12-09 22:28:43 · 209 阅读 · 0 评论 -
Java绘制验证码
package cn;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import ja...原创 2018-12-17 14:50:34 · 504 阅读 · 3 评论 -
Java爬虫之科目一题目
用到的工具:1、FastJson(JSON与Java对象进行转换)2、Loombok(简化JavaBean的编写)3、线程池(提高爬虫爬取效率,多线程执行任务)4、批量提交执行SQL(减少与数据库的连接,可以批量插入数据)5、Jsoup(一个基于Java开发的爬虫库)建议使用Maven进行开发,以下是我用到的Pom文件: <!--MySQL--&g...原创 2018-12-31 19:12:04 · 892 阅读 · 5 评论 -
Spring对象的几种装配方式
环境配置使用Maven进行测试&lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-context&lt;/artifactId&gt; &lt;version&gt;5原创 2019-01-06 17:04:18 · 645 阅读 · 0 评论 -
SpEL表达式学习
注意:本文均采用JavaConfig的方式注入,而不是采用XML的方式进行配置。如果需要使用XML的方式注入,本文可以作为一个参考。1. SpEL介绍SpEL全称 Spring Expression Language(Spring表达式语言),是一种应用于Spring环境下的一种语言格式。通常来说,我们往Spring环境中注入值,可以使用properties文件,也可以使用SpEL进行注入,...原创 2019-01-11 23:54:20 · 1378 阅读 · 0 评论 -
Spring切面学习
1. 介绍Spring提供了一种面向切面的编程,内部的实现是一种基于Cglib的代理模式,使用切面,可以在不更改源码的情况下,简化大量的无用重复代码,使代码更关注实现业务逻辑,而不需要考虑是否需要配置日志、安全验证等。2. 环境配置本文采用Maven进行搭建环境,如果之前没使用过Maven,请下载相应的jar包放入项目的lib库即可。以下是所用到的pom文件:<dependenc...原创 2019-01-12 23:03:36 · 248 阅读 · 0 评论 -
SpringJpa学习教程-01之Hello,World
SpringJpa学习教程-01什么是SpringJpaSpringJpa全称Spring Java Persistence API,中文名叫做Java持久层API.是一种基于JDK 5.0的注解或者XML来实现对象-关系的一种实现.厂商通过实现此接口,可以实现运行期间的对象直接保存到数据库.常见的ORM框架MyBatis国内使用占比率最高,国外来说相对低一点.MyBatis着力解...原创 2019-01-19 23:27:00 · 176 阅读 · 0 评论 -
Spring装配对象用到的注解
@Configuration:表明这是一个注解类,可以使用AnnotationConfigApplicationContext来获得一个上下文对象,传入的参数为注解类本身AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeanConfigurat...原创 2019-01-10 09:10:58 · 274 阅读 · 0 评论 -
SpringJpa学习教程-02根据关键字查询
SpringJpa学习教程-02根据关键字查询常用的接口继承类Repository:无任何方法CrudRepository:具有简单的一些增删改查的方法PageAndSortingRepository:具有一些简单的分页查询功能和排序功能JpaRepository:继承了PagingAndSortingRepository,对它的方法进行了一些扩展,以下是提供的一些方法,可以看到支持批...原创 2019-01-21 23:22:13 · 256 阅读 · 0 评论 -
SpringBoot配置错误信息页面
SpringBoot配置错误信息页面放置错误页面到目录中在resources的public或templates或static目录下新建error目录,将错误页面放入其中,页面的名称以状态码的名称起.例如404.html或404.jsp等返回的错误信息:{ "timestamp": "2019-01-27T04:10:20.348+0000", "status": 404, ...翻译 2019-01-27 12:17:23 · 694 阅读 · 0 评论 -
SpringJpa学习教程-03-高级查询
SpringJpa学习教程-03高级查询分页查询/*** 根据分页条件进行查询,将结果保存在Page当中*/Page<User> findByName(String name, Pageable pageable);/*** 根据分页条件进行查询,但不查询总记录数*/Slice<user> findByName(String name, Pageable ...转载 2019-01-27 15:15:27 · 499 阅读 · 0 评论 -
SpringJpa学习教程-04-注解式查询
SpringJpa学习教程-04注解式查询@Query使用:public interface UserRepository extends JpaRepository<User, Long> { @Query("select u from User u where u.email = ?1 and address = ?2") List<User> findByE...转载 2019-01-27 16:35:09 · 199 阅读 · 0 评论 -
SpringJpa学习教程-05-对象注解学习
SpringJpa学习教程-05对象注解学习@Entity定义对象是一个可以被JPA进行管理的实体,全局唯一,不可重复@Table指定需要在数据库匹配的数据库表名 //表名,可选,默认为实体名 String name() default ""; // 表的catalog String catalog() default ""; // 表所在的schem...转载 2019-01-27 20:22:20 · 155 阅读 · 0 评论 -
mysql大文本搜索
存储引擎对比MySQL内置了三种存储引擎,分别是InnoDb,MyIsam和MEMORY,一般情况下,MySQL5.X之后的版本都是使用InnoDb存储引擎.三种引擎的对比InnoDb支持事务操作支持自动增加列具有行级锁定MyIsam不支持事务,也不支持外键,但是访问速度快对大文本搜索性能较好Memory目标数据较少,而且需要频繁的被访问采取的存储介质是系统内存,...转载 2019-02-24 18:05:29 · 1922 阅读 · 0 评论 -
MySql存储过程讲解
什么是存储过程存储过程就简单来讲,是一条或多条MySQL语句的集合,可以看做一个批处理文件,虽然它的作用不仅仅局限于批处理.存储过程的优点把需要处理的内容进行封装,简化了复杂的操作不要求反复建立一系列处理步骤,所有的开发人员和应用程序都可以使用同一存储过程简化对变动的管理,如果表名等其他发生了变动,只需要修改存储过程即可,外界不需要对此产生感知提高性能,由于存储过程是预...原创 2019-02-25 12:06:51 · 156 阅读 · 0 评论 -
mysql触发器
什么是触发器触发器是由于对一个表进行操作时,用于对数据的完整性约束和业务规则进行校验等.例如插入的数据是否合法,更新一个表时是否需要做日志记录等.如果这些事情全部交给程序员自己完成,会耽搁其不能专注于业务的逻辑,而是陷入了大量的可重复性的代码之中.触发器发生的环境插入(Insert)更新(Update)删除(Delete)由于Select查询语句不会对数据库表造成任何影响,因此没...原创 2019-02-25 16:29:57 · 207 阅读 · 0 评论 -
jdk9更新内容介绍
1. JDK9更新JDK9重磅增加了以下功能:模块化,可以将代码进行模块化的组装,需要用到什么模块再引用什么模块.减少了不必要的内存消耗和浪费.JShell,添加了和其他的语言(比如Python)一样的交互式命令行页面,再也不必为了打印一段"Hello,World"需要先去新建一个类,然后输入一大段文字了JavaDoc支持Html5格式规范,同时支持进行全文搜索...原创 2019-03-15 14:51:40 · 1320 阅读 · 0 评论 -
Netty之HelloWorld!
为什么要使用Netty? Netty是一个基于NIO的简化版,使用Netty更方便使用Java进行异步操作。传统的IO:NIO:从图上就可以看出来,NIO简化了不必要的线程连接,以往的Socket每多一个连接,都需要创建一个线程,这是一个额外的消耗,因此Java在1.4之后推出了NIO,用于简化线程操作。NIO可以理解为New IO,也可以理解为Non-Blocking...原创 2018-12-09 12:56:07 · 163 阅读 · 0 评论 -
代码整洁规范要求
代码规范注释不恰当的信息 /** * @param num3 待加的数字 */ public int add(int num1,int num2) { return num1+num2; }就比如上面的代码,注释的参数都不对,有可能是在写作过程中进行了修改,然后没及时的进行添加参数,不正确的参数注释,比不写注释都更容易误导,所以应该避免写注释,尽量让人看到方法名便能明白方...转载 2018-12-19 22:03:00 · 283 阅读 · 0 评论 -
Java面试之父子类(2)-父子类构造方法
在不看答案之前,先猜测一下答案吧!package com.company;class ParentClass { public ParentClass() { System.out.println("父类无参构造代码块 "); } public ParentClass(String name) { System.out.println...原创 2018-07-05 15:29:41 · 1479 阅读 · 0 评论 -
Java面试之父子类(3)-构造方法顺序
在查看答案之前,先猜测一下正确答案吧!package com.company;class ParentClass { public ParentClass() { System.out.println("父类无参构造代码块 "); } public ParentClass(String name) { System.out.print...原创 2018-07-05 15:40:23 · 377 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。它包括:Builder:抽象的建造类,提供子类公有方法的部分实现; ConcreBuilder:抽象的具体实现类,在本例中为ChildSuperManBuilder和AdultSuperManBuilder; Director:导...原创 2018-08-30 17:16:20 · 107 阅读 · 0 评论 -
设计模式之责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。DNS解析:通常所知,DNS一般是先从本地查询,如果...原创 2018-08-31 10:39:46 · 119 阅读 · 0 评论 -
判断二维数组中是否存在值相同且位置必须临近,并将其打印在控制台上
题目如上,必须打印出5个10,不能打印出6个10,因为数组中就这5个值是靠在一起的,不考虑斜方向上相同.以下为实现代码:package client.array.demo;/** * @Description: * @Author :小书包 * @CreateDate :2018-09-04 15:53 */public class Array { // 初始数据 ...原创 2018-09-06 11:12:08 · 1767 阅读 · 2 评论 -
模仿微信发红包
微信发红包的金额总是不固定的,因此今天特意好奇一下,能不能使用Java代码进行模仿呢?以下是完整的代码演示,如果不需要其中的数据分析,可以去掉,去掉之后的jdk版本不做过多的要求,没去掉之前,要求是1.8+:package com.demo;import java.util.Arrays;/** * 大致模仿微信发红包的金额 * @author 小书包 * @date 20...原创 2018-10-13 13:30:17 · 1999 阅读 · 3 评论 -
快速从两个集合中查重
如果给你两个集合,需要挑选出重复的元素,怎么解决?两个for循环?依次遍历?那样太慢了。package com.cw.wizbank;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * @Description: * @Author :小书包 * @CreateDa...原创 2018-11-21 10:23:33 · 2455 阅读 · 1 评论 -
ForkJoin计算对比普通方式计算性能分析
package com.cwn.wizbank.common;import java.io.IOException;import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.Future;import java....原创 2018-11-19 11:56:07 · 379 阅读 · 0 评论 -
延时队列小例子
用Java的延时队列,实现顾客到了点就自动下机。所谓延时队列,就是不到固定要求,不能从里面取值,即便取值,取值也为null。 对比其他队列:SynchronousQueue 队列不能存放数据,存放数据就报错,但是可以先开一个线程持续从其中取值,另一个线程放数据LinkedBlockingQueue 阻塞有界队列,如果不指定大小,可存放多个值ArrayBlockingQueue 阻塞...原创 2018-11-23 18:30:04 · 275 阅读 · 0 评论 -
Java实现中英文混合字符长度的查询和截取
Hello,World!你好世界!给出一段文字既有中文又有英文,那么怎么根据中英文的不同去计算字符串的长度呢?其中中文字符算两个长度,英文字符一个长度,可以参考下面的代码:package com.demo;/** * @author 小书包 * @date 2018/11/29 21:58 */public class SubStr { public String sub...原创 2018-11-29 22:18:33 · 1748 阅读 · 0 评论 -
数字转货币金钱中文大写
第一版package com.demo;/** * @author Administrator * @date 2018/11/29 22:46 */public class NumToChinese { private String[] suffixArr = new String[]{"", "拾", "佰", "仟", "万", "拾万", "佰万&q原创 2018-11-29 23:05:53 · 356 阅读 · 0 评论 -
jvm初识(1)
jvm基本结构解释:其他文章方法区:一般也叫永久区,在jdk8之前存在的,jdk8以后把方法区放到了元空间中,也就是物理内存中,详情查看这篇文章。作用是保存静态变量、类的加载信息、字符串常量等.因为这部分空间垃圾收集器很难回收(不是不能回收),所以就被叫为永久区. 指令计数器:总是指向下一条需要执行的内存地址.有了它,计算机就能知道下一次需要怎么做. 堆内存:堆内存属于...原创 2018-12-02 18:33:52 · 130 阅读 · 0 评论 -
jvm初识(3)
常用的jvm参数GC-XX:+printGC:打印GC的简要信息[GC 4790K->374K(15872K), 0.0001606 secs] 4970K表示原来占据的内存空间,374K表示GC之后的空间,15872K表示总可用空间,0.0001606secs表示总花费的时间,单位为秒-XX:+PrintGCDetails:打印GC的详细信息(下面为部分打印信息)...原创 2018-12-02 19:03:09 · 219 阅读 · 0 评论 -
jvm初识(2)
堆内存的讲解类刚被初始化的时候,类的基本信息基本上都是被加载到了新生代,新生代就是对象刚刚初始化的时候需要放入的位置,但是如果一个对象是足够的庞大,也是有可能直接送入老年代进行管理的,因为新生代的内存一般比老年代小.常用的新生代与老年代的比值为1:4.一个普通对象可能需要通过若干次GC,才会把变量移动至老年代,老年代是说,经过了多次GC,但是依据保留着,就说明这个对象可能是一个使用非...原创 2018-12-02 19:41:07 · 136 阅读 · 0 评论 -
常用的GC算法
GC的概念GC全称Garbage Collection,或称垃圾收集,就是将已过期的对象进行清扫,给其他的对象容纳空间。就好像JVM开了一家饭店,平时如果没人,要是你顾客吃完了饭(对象过期),还继续待在原来的位置上,店家也不会为难你,你想占据位置就占据吧!但是如果是高峰期,新进来的顾客想要进来吃饭(创建新对象),但是位置又被不吃饭的顾客占据了,导致没有位置了(可用内存不足),那么店家就会请...原创 2018-12-08 17:29:19 · 240 阅读 · 0 评论 -
常用GC讲解
Jvm中存在几种收集算法,那么GC究竟是在什么时候执行的呢?串行收集器(Serial)优点:最古老,最稳定 效率高缺点:可能会产生较长的停顿使用:-XX:+UseSerialGC 新生代、老年代使用串行回收 新生代复制算法 老年代标记-压缩 执行过程,如上图,因此会产生Jvm全局停顿的效果。并行收集器ParNew-XX:+UseParNe...原创 2018-12-08 21:49:33 · 303 阅读 · 0 评论 -
Java打印当前所在月份的日历
public void monthTest() { //获得当前系统时间 LocalDate now = LocalDate.now(); String separator = "\t"; String lineSeparator = "\n"; StringBuilder builder = new StringBuilder(); builder.append("当前...原创 2019-04-10 18:16:35 · 1423 阅读 · 1 评论