
基础知识
文章平均质量分 79
qq_36179561
这个作者很懒,什么都没留下…
展开
-
SpringBoot整合freemarker出现Whitelabel Error Page
原因:配置出错;修改freemarker配置后能访问到正确页面spring: datasource: url: jdbc:mysql://127.0.0.1:3306/study?characterEncoding=utf8 username: root password: root driver-class-name: com.mys...原创 2019-09-09 10:52:49 · 716 阅读 · 0 评论 -
socket通信--客户端
package com.xjh.demo.socket;import java.io.*;import java.net.Socket;public class SocketClient { public static final int PORT = 12345; public static final String IP_ADDR = "localhost";...原创 2018-08-22 13:33:18 · 222 阅读 · 0 评论 -
socket通信--服务端
package com.xjh.demo.socket;import java.net.ServerSocket;import java.net.Socket;public class SocketServer { public static final int PORT = 12345; public static void main(String[] args...原创 2018-08-22 13:32:43 · 130 阅读 · 0 评论 -
多线程实例--龟兔赛跑
package com.xjh.demo.thread;/** * 规则:龟兔同时起步,每10毫秒秒跑1米,终点为100米,兔子跑步的能力强,乌龟跑步的能力弱 * <p> * 途中: 1.兔子跑到10米的时候,谦让乌龟一下,接着跑 * 2.兔子跑到50米的时候,再让龟1毫秒,接着跑 * 3.兔子跑到80米的时候,睡了50毫秒,接着跑 */...原创 2018-08-22 13:30:17 · 2432 阅读 · 1 评论 -
多线程实例--多人同时取钱
A从柜台取,B从ATM取钱package com.xjh.demo.thread;public class MoneyTest { public static void main(String[] args) { Bank bank = new Bank(); new PersonB(bank,800).start(); new ...原创 2018-08-22 13:29:15 · 837 阅读 · 0 评论 -
多线程实例--多窗口同时售票
package com.xjh.demo.thread;public class TicketTest { public static void main(String[] args) { Consumer consumer=new Consumer(); new Thread(consumer,"窗口1").start(); ne...原创 2018-08-22 13:27:38 · 439 阅读 · 0 评论 -
多线程实例--生产消费模式
package com.xjh.demo.thread;import java.util.LinkedList;import java.util.Queue;public class ThreadTest { static final long waitTime = 3000; public static void main(String[] args) { ...原创 2018-08-22 13:26:53 · 148 阅读 · 0 评论 -
生产--消费者模式 多线程实例
package com.xjh.demo;import java.util.LinkedList;import java.util.Queue;public class ThreadTest { static final long waitTime = 3000; public static void main(String[] args) { Que...原创 2018-08-09 11:13:38 · 206 阅读 · 0 评论 -
性能优化
1、for循环(1)数组拷贝System.arraycopy()效率更高(2)尽量避免在循环体中调用方法(3)避免在循环体内存取数组元素(4)尽量使用0值作为终结比较条件(5)终结条件中尽量避免调用方法返回值(6)循环体中尽量避免使用try...catch(7)多重循环时长循环放在内层(8)循环次数多且有if..else逻辑判断时,将if..else放在循环体外(9)展开循环,尽量减少循环次数2、...原创 2018-04-23 09:44:21 · 124 阅读 · 0 评论 -
Freemarker学习(二)
数据类型一、 直接指定值直接指定值可以是字符串、数值、布尔值、集合及Map对象。1. 字符串直接指定字符串值使用单引号或双引号限定。字符串中可以使用转义字符”\"。如果字符串内有大量的特殊字符,则可以在引号的前面加上一个字母r,则字符串内的所有字符都将直接输出。2. 数值数值可以直接输入,不需要引号。FreeMarker不支持科学计数法。3. 布尔值 直接使用true或false,不使用引号。4....转载 2018-02-26 15:00:39 · 864 阅读 · 0 评论 -
Freemarker学习(一)
FreeMarker语言概述FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) FreeMarker不是一个Web应用框架,而...转载 2018-02-26 14:41:56 · 154 阅读 · 0 评论 -
RESTful架构
REST,即Representational State Transfer的缩写,翻译为“表现层状态转化”。REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"一、资源(Resources)REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层&qu转载 2018-02-26 13:25:50 · 119 阅读 · 0 评论 -
Spring学习(一)
一、Spring是一个轻量级的IoC和AOP容器框架1、轻量级:Spring是非侵入式的,开销小。基于Spring开发的系统对象一般不依赖于Spring类。2、IoC: 实例化对象时通过依赖注入类,是被动的接收依赖对象而不是主动查找。3、AOP:将业务逻辑从系统服务中分离,实现内聚开发。4、容器:包含和管理系统对象的生命周期和配置。通过配置设定bean是单一实例还是每次请求产生一个实例,并设置be...转载 2018-02-26 13:03:44 · 165 阅读 · 0 评论 -
自右向左提取一个不重复的整数
public class test3 { public static void main(String[] args) { //提取不重复的整数 int nums=376889231; getNorepeat(nums); }public static void getNorepeat(int num){ Linked原创 2016-11-24 22:32:50 · 621 阅读 · 0 评论 -
不死神兔问题:每3个月生一对兔子,问第n个月的兔子对数
分析:从第3个开始,是前两个的和 public static int sum(int n){ if(n==1||n==2){ return 1; }else{ return sum(n-1)+sum(n-2); } }原创 2016-11-25 21:31:00 · 1105 阅读 · 0 评论 -
java生成二维码QRCode
package com.xjh.demo.qrcode;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.client.j2se.MatrixToIma...原创 2018-08-22 13:37:43 · 242 阅读 · 0 评论 -
java读取二维码内容
package com.xjh.demo.qrcode;import com.google.zxing.BinaryBitmap;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatReader;import com.google.zxing.Result;import com.googl...原创 2018-08-22 13:38:25 · 3399 阅读 · 0 评论 -
cas单点登录验证失败,导致无法正常跳转的bug
jetty的端口由80改为8080后,验证ticket异常 org.jasig.cas.client.validation.TicketValidationException查看cas.log发现url明显不匹配ERROR [org.jasig.cas.CentralAuthenticationServiceImpl] - ServiceTicket [ST-12-AzsjcTSZdP3g...原创 2019-08-06 16:34:46 · 5133 阅读 · 0 评论 -
解决java.lang.NoClassDefFoundError的坑
解决了线程池的问题后,突然冒出java.lang.NoClassDefFoundError的坑,本地运行时编译正常且功能正常,查看环境上的pom文件和jar包,发现版本什么的都与本地一致,类也存在,一时有点懵。查阅了资料之后,发现是打包时候未将jar包路径加入到MANIFEST文件的classpath中。将路径加进去之后问题解决。这里顺便了解下这个坑的原因及解决办法:NoClassDefF...原创 2018-12-21 15:38:01 · 9071 阅读 · 0 评论 -
多线程java.util.concurrent.RejectedExecutionException
项目运行一段时间后现场突然报了一个异常,多线程读取本地文件时失败导致文件大量积压,查看日志发现以下异常:java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@12bb4df8 rejected from java.util.concurrent.ThreadPoolExecuto...原创 2018-12-21 15:24:34 · 3892 阅读 · 0 评论 -
JAVA性能优化:细节决定成败
代码优化的目标是:减小代码的体积;提高代码运行的效率代码优化细节1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所...转载 2018-11-05 13:20:55 · 169 阅读 · 0 评论 -
Spring事务管理之二
Spring 编程式事务和声明式事务的区别 编程式事务处理:所谓编程式事务指的是通过编码方式实现事务,允许用户在代码中精确定义事务的边界。即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务处理...转载 2018-11-07 13:36:41 · 115 阅读 · 0 评论 -
Spring事务管理之一
事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 这里我们以取钱的例子来讲解:比如你去ATM机取1000块钱,大体有两个步骤:第一步输入密码金额,银行卡扣掉1000元钱;第二步从ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的...转载 2018-11-07 10:48:11 · 127 阅读 · 0 评论 -
设计模式之四:抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。介绍意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。...原创 2018-09-18 11:34:40 · 120 阅读 · 0 评论 -
多线程卖票:使用Lock锁
package com.xjh.demo.thread;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class SellTicket implements Runnable{ private int total=100; p...原创 2018-09-17 13:49:04 · 509 阅读 · 0 评论 -
设计模式之三:单例模式(饿汉式与懒汉式)
//保证类在内存中只有一个对象package com.xjh.demo.designpattern.pattern3;public class Student { private Student(){ } //懒汉式 private static Student s=null; //懒汉式易出现线程安全问题:多线程环境、数据共享、多条语句操...原创 2018-09-17 13:13:41 · 143 阅读 · 0 评论 -
设计模式之二:工厂方法模式
定义工厂方法模式又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂模式(Polymorphic Factory),在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化(创建)哪一个类。工厂方式法模式(Factory Method),定义了一个用于创建对象的...原创 2018-09-17 11:27:22 · 376 阅读 · 0 评论 -
设计模式之一:简单工厂模式
package com.xjh.demo.designpattern.pattern1;public abstract class Animal { public abstract void eat();} package com.xjh.demo.designpattern.pattern1;public class Dog extends Animal{ ...原创 2018-09-17 11:04:05 · 144 阅读 · 0 评论 -
UDPSocket发送和接收消息
package com.xjh.demo.socket.udp;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public...原创 2018-09-12 18:49:17 · 1830 阅读 · 0 评论 -
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
package com.xjh.demo.exam;/** * 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。 * 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。 * 注意:a是取1-9之间的数字,由用户来录入决定,具体要几个数相加也是由用户来决定, * 规律:cardinal为基数,每循环一次它都会改变(变大10倍)...原创 2018-08-31 14:29:31 · 3101 阅读 · 0 评论 -
读取txt文件,获取指定字符串出现的次数
package com.xjh.demo.exam;import java.io.*;/** * 给定一个txt文件,如何得到某字符串出现的次数 */public class StringCount { public static void main(String[] args) { String filePath = "D:\\a.txt"; ...原创 2018-08-31 14:15:08 · 3290 阅读 · 1 评论 -
递归删除带内容的指定目录demo
File src=new File(“demo”); deleteFoler(); public static void deleteFolder(File srcFolder){ File[] filearray=srcFolder.listFiles(); for(File f:filearray){ if(file.isDirectory){ delete原创 2016-11-25 21:32:57 · 316 阅读 · 0 评论 -
递归遍历E盘所有.java文件的绝对路径
File src=new File(“E:\”); getAllFilePaths(src); public static void getAllFilePaths(File srcFolder){ File[] filearray=srcFolder.listFiles(); for(File f:filearray){ if(file.isDirectory){原创 2016-11-25 21:32:23 · 1256 阅读 · 0 评论 -
线程实现的方法
创建新执行线程有两种方式 1、继承Thread类,重写run方法,创建对象,启动线程。 2、实现runnable接口; 多线程时一般采用此方式,避免单继承的局限性;将线程与程序和数据分离,降低耦合性。public class dog extends Thread{ int count; @Override public synchronized void run() {原创 2016-11-30 17:56:10 · 160 阅读 · 0 评论 -
Jvm加载class文件的原理
Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的,除非我们有特殊的用法,像是反射,就需要显式的加载所需要的类。Java类的加载是动态的,它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(像是基类)完全加载到jvm中,至于其他类,则在需原创 2016-11-30 17:49:04 · 233 阅读 · 0 评论 -
java是否存在内存泄漏
内存泄露是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费称为内存泄露。内存泄露有时不严重且不易察觉,这样开发者就不知道存在内存泄露,但有时也会很严重,会提示你Out of memory。 那么,Java内存泄露根本原因是什么呢?长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它原创 2016-11-30 17:44:00 · 220 阅读 · 0 评论 -
try/catch中有return语句finally是否被执行,什么时候执行?
finally在return后始终执行。 finally不执行的情况,System.exit(0);public class tryTest { public static void main(String[] args) { try { System.out.println("try语句"); //System.exit(0原创 2016-11-30 17:27:29 · 504 阅读 · 0 评论 -
接口是否可以继承接口;抽象类是否可以实现接口;抽象类是否可以继承实体类?
1、接口可以继承接口。 2、抽象类可以实现接口。 应用举例: 接口用于定义功能,抽象类用于定义模板方法。当使用抽象类实现接口时不需要实现所有的接口,只实现自己所需的接口就可以了。public interface DrawPannel { public void putcolor(); public void setposition(); public void原创 2016-11-30 17:25:07 · 1712 阅读 · 0 评论 -
对a.txt中逗号分隔的数字进行排序,排好的数字以逗号分隔存到b.txt
public class test8 { public static void main(String[] args) throws IOException { File file = new File(“f:\a.txt”); File file2=new File(“f:\b.txt”); BufferedReader br=new原创 2016-11-24 22:39:39 · 348 阅读 · 0 评论 -
java常用的第三方组件
java常用第三方软件包 网上收集的一些常用Java开发的第三方软件包,供大家参考 1.Apache POI 处理office文档用到的2. IText PDF操作类库 3.Java Base64 Base64编码类库 4.Commons-lang 对应java sdk里面的java.lang包,用来简化基本工具类操作 5.pingyin4j 中文转拼音库 6.转载 2016-11-29 19:51:35 · 3044 阅读 · 0 评论