java
文章平均质量分 56
wittdong
五湖四海情为重,天南地北义当先。
展开
-
mybatis的工作原理
一、mybatis的工作过程1、系统运行时,加载mybatis的xml配置文件到Configuration类中,SqlSessionFactoryBuilder会读取Configuration类中信息创建SqlSessionFactory,newSqlSessionFactoryBuilder.build(...),所以SqlSessionFactory持有mybatis的基本配置内容。在整个应用当中,我们应该只创建一个SqlSessionFactory实例。2、根据创建的sqlSessi.原创 2020-10-27 16:55:26 · 1934 阅读 · 0 评论 -
Unable to open nested jar file ‘BOOT-INF/lib/report-common-3.2.0.jar‘
原因:替换或者导入jar包时,jar包被自动压缩,springboot规定嵌套的jar包不能在被压缩的情况下存储。解决(本文以升级ojdbc包为例):使用jar命令解压jar包,在压缩包外重新替换jar包,在进行压缩。步骤1:解压jar包 jar -xvf *.jar PS D:\ttmp> jar -xvf *.jar 已创建: META-INF/ 已解压: META-INF/MANIFEST.MF 已创建: BOOT-INF/ 已...原创 2020-09-28 18:07:34 · 2493 阅读 · 0 评论 -
NIO的工作流程
一、传统IO(BIO)和NIO BIO是同步阻塞的,即一个请求分配一个线程,就是再客户端发送请求到服务器的时候,服务器会为这个客户端分配一个线程去处理相关的读写操作,且在此期间,该线程是阻塞的,不能接收其他客户端的请求。这样的阻塞如果是单线程的话,在多用户的情况下会造成非常不好的系统体验,且会造成cpu的浪费,所以需要用多线程来处理这样的请求。但是使用多线程也有缺点:线程创建和销毁的成本较高;线程还会占有一定的内存,如果线程的数量较多,数千的时候,会造成吃掉一半的jvm内存;另外线程切换的成...原创 2020-08-05 19:05:17 · 1245 阅读 · 0 评论 -
用三个线程按顺序循环打印 abc 三个字母,比如 abcabcabc
public class ABC_Synch { public static class ThreadPrinter implements Runnable { private String name; private Object prev; private Object self; private ThreadPrinter(String name, Object prev, Object self) { t...转载 2020-08-13 15:25:32 · 342 阅读 · 0 评论 -
HashMap
一、hashmap基本原理JDK1.8之前,HashMap用的是数组加链表。 原理为:HashMap中我们最长用的就是put(K, V)和get(K)。我们都知道,HashMap的K值是唯一的,那如何保证唯一性呢?我们首先想到的是用equals比较,没错,这样可以实现,但随着内部元素的增多,put和get的效率将越来越低,这里的时间复杂度是O(n),假如有1000个元素,put时最差情况需要比较1000次。实际上,HashMap很少会用到equals方法,因为其内通过一个哈希表管理所有元素,哈希是通过.原创 2020-07-25 10:39:28 · 322 阅读 · 0 评论 -
java 打包下载
前台jsvar _downloadZipAjax = function(obj,url){ var elemIF = document.createElement("iframe"); elemIF.src = url; elemIF.style.display = "none"; document.body.appendChild(elemIF);};后台...原创 2020-04-29 16:59:56 · 218 阅读 · 0 评论 -
通过feign调用,返回时出现中文乱码
需要在feign和对应的controller中设置上feign.java@RequestMapping(value = "/appCustomer/getMfCusCustomerInfo" ,produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")pub...原创 2020-04-23 13:04:28 · 8609 阅读 · 2 评论 -
java http协议,添加header以及post传参,以及服务端获取
一、客户端请求public static String test(){ JSONObject obj = new JSONObject(); obj.put("cusName","禹州林业集团"); obj.put("socialCreditCode","11431000006542054G"); String parm = obj.toString(); ...原创 2020-04-23 13:02:31 · 8066 阅读 · 1 评论 -
Java通过https http协议来调用第三方接口
一、通过https协议public static String getSqm(String nssbh){ //请求参数 String sqmParm = createSqmParm(nssbh); System.out.println(sqmParm); //返回结果 String sqmRes = ""; ...原创 2020-03-24 12:52:46 · 3615 阅读 · 0 评论 -
idea git操作
一、切换分支git checkout ztogit pull二、idea中修改git push代码时的用户名在idea的终端(terminal)中输入git config user.name,查询当前用户名输入git config --global user.name "小王" 修改用户名...原创 2020-01-16 14:59:51 · 182 阅读 · 0 评论 -
springboot redisTemplate为null
使用redisUtil工具类来封装的redis,用的时候发现redisTemplate一直为null。/*** RedisTemplate 工具类*/@Componentpublic class RedisUtil { @Autowired private RedisTemplate redisTemplate; /** * 给一个指定的 ...原创 2019-12-05 15:11:42 · 4342 阅读 · 1 评论 -
SpringBoot 使用ApplicationContext 及 getbean
第一种方式:容器启动加载时设置public class WittApplication { public static void main(String[] args) { ApplicationContext applicationContext = SpringApplication.run(WittApplication.class, args); ...原创 2019-12-05 14:30:20 · 1338 阅读 · 0 评论 -
java之过滤器
javaWeb的过滤器(Filter),是servlet中非常有意义的技术之一,开发人员通过Filter技术可以对web服务器管理的所有web资源(包括jsp,servlet,静态图片文件或者静态html文件等)进行拦截,并实现一些特殊的功能,如权限控制、统一设置编码、过滤敏感词汇等。 servlet Api中提供了一个Filter接口,如果某个java类实现了这个接口,则就把这个原创 2017-03-08 17:16:16 · 423 阅读 · 0 评论 -
java native方法使用
一、前言 今天在看java.lang.System源码的时候看到了System静态代码块中有一个registerNatives方法,该方法是被 native关键字修饰。public final class System { /* register the natives via the static initializer. * * VM will invo...原创 2018-05-23 15:50:47 · 31346 阅读 · 4 评论 -
System.getProperty()获取system基本配置信息
/** * System properties. The following properties are guaranteed to be defined: * <dl> * <dt>java.version <dd>Java version number * <dt>java.vendor ...原创 2018-05-23 13:09:40 · 1195 阅读 · 0 评论 -
【Listener机制】HttpSessionListener和HttpSessionAttributeListener
一、HttpSessionListener HttpSessionListener是对Session的一个监听,主要监听关于Session的两个事件,即初始化和销毁。HttpSessionListener有两个方法:VoidsessionCreated(HttpSessionEvent se):当session创建时会收到通知。VoidsessionDestroyed(HttpSess...原创 2018-05-03 10:39:05 · 397 阅读 · 0 评论 -
java线程的lock以及与synchronized的区别
一、lock Lock是个接口,ReentrantLock就是Lock接口的实现类。ReentrantLock获取锁定与三种方式:a) lock(), 如果获取了锁立即返回,如果别的线程持有锁,当前线程则一直处于休眠状态,直到获取锁b) tryLock(), 如果获取了锁立即返回true,如果别的线程正持有锁,立即返回false;c)tryLock(long timeout,TimeUnit...原创 2018-04-20 15:13:55 · 204 阅读 · 0 评论 -
java线程中start()和run()的区别
1、start方法启动了一个新的线程,而run方法不能启动一个新线程,还是在main线程下运行,程序依然是主线程一个线程在运行。2、调用start方法可以启动线程,而run方法只是thread的一个普通方法还是在主线程中执行。3、通过start()方法来启动的新线程,处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行相应线程的run()方法,这里方法run()称为线程体,它包含了...原创 2018-04-20 10:23:52 · 2224 阅读 · 0 评论 -
SimpleDateFormat用法
public class SimpleDateFormatTest { public static void main(String[] args) throws Exception { SimpleDateFormat sd1 = new SimpleDateFormat("Gyyyy年MM月dd日 HH时mm分ss秒"); SimpleDateFormat s...原创 2018-05-23 17:42:41 · 573 阅读 · 0 评论 -
java多线程join方法
在某些情况下,主线程创建并启动了子线程,如果子线程中需要进行大量的耗时运算,主线程往往将早于子线程结束之前结束,如果主线程想等待子线程执行完毕后,获得子线程中的处理完的某个数据,就要用到join方法了。public class Join { public static void main(String[] args) throws Exception { Thr...原创 2018-05-24 13:52:43 · 267 阅读 · 0 评论 -
阻塞队列及 wait notify模拟实现 BlockingQueue
一、阻塞队列 阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。二、wait notify实现阻塞队列public class BlockingQueueDemo { //定义两把锁,只是简单的锁 private ...原创 2018-05-24 17:57:12 · 920 阅读 · 0 评论 -
javaweb系统通过websocket推送消息
一、简单介绍 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握...原创 2019-04-11 16:19:28 · 1199 阅读 · 0 评论 -
利用redis发布/订阅功能解决websocket session共享问题
由于websocket session不能序列化,所以不能存储在redis中。故在分布式系统中,可以通过把websocket 的session存储在服务器本地map,然后把消息发布到redis指定的频道上,每个服务器节点都订阅该频道,这样的话,消息一发布,每个节点都能接受到该消息,然后再从map中获取session,来完成消息推送。两种方式都能实现redis的发布/订阅功能第...原创 2019-04-11 16:35:58 · 6839 阅读 · 1 评论 -
websocket 使用localhost能连接,使用IP地址不能连接问题
ws://localhost:8088 可以正常访问 改为 ws://192.168.1.120:8088 就不可以访问,原因就是获取不到session信息解决方法:需要浏览器输入的项目地址和建立websocket连接的地址一样...原创 2019-04-17 13:08:19 · 11711 阅读 · 1 评论 -
Linux服务器提示No space left on device错误解决方法
今天早上,测试环境报了这个错误,第一想法就是磁盘空间不足,df -h df /home查看发现空间使用率 100%然后就删除一些不用的zip文件,释放了空间5个多G查找磁盘,发现有几个微服务的log日志达到了10G,然后 sudo rm -rf .out日志,再df -h 发现空间并没有缩小,看了几篇文章,应该是微服务还再运行,空间并没有实际释放的原因,kill掉用到...原创 2019-06-18 16:06:05 · 2395 阅读 · 0 评论 -
用Calendar来完成获取年份、月份 、日以及按月加等功能
可以用Calendar来计算:Calendar calendar = Calendar.getInstance(); calendar.setTime(tbProRating.getRatingStart());calendar.add(Calendar.MONTH, tbProRating.getRatingPeriod());Calendar.MONTH原创 2017-04-21 16:35:26 · 2602 阅读 · 0 评论 -
java之监听器
监听器就是实现特定接口的java程序,一共有八个接口,分别是1.ServletContextListener:在Container加载web应用程序时执行contextInitialized方法,在移除web应用程序时,执行contextDestroyed方法。2.HttpSessionListener:在session对象建立或被消灭是执行相应的方法sessionCreated或者ses原创 2017-03-08 17:20:28 · 643 阅读 · 0 评论 -
java之拦截器
java里的拦截器是动态拦截action的web请求,而过滤器能够进行系统级别的过滤,即能够过滤所有的web请求。从这可以看出拦截器是有一定的局限性的。拦截器是基于jdk实现的动态代理,拦截器是动态拦截action调用的对象,拦截器可以使得在action执行前后执行一段代码,也可以在action执行前阻止其执行,而且它还能提取action可重用部分代码。在AOP中,拦截器在某个方法或者字段执行前进原创 2017-03-08 17:21:57 · 679 阅读 · 0 评论 -
getOutputStream() has already been called for this response java.lang.IllegalStateException: getOutp
今天在做一个用openOffice插件把office文档转换成为PDF格式,并在线预览的时候,报了这个错误,看到了一个网友的分享突然明白,原来是在线预览的方法是用流的形式输出到前台的,然后这个方法竟然写了返回值为String。 public String transferToPDf() throws Exception{ dataMap = new HashMa原创 2017-09-20 14:13:52 · 393 阅读 · 0 评论 -
ThreadLocal
一、背景以及概念 从上篇java多线程同步机制可以看出,想要编写出一个多线程安全的程序的困难的。但是为了让线程共享资源,必须小心地对共享资源进行同步。同步肯定会带来一定的延迟,另一方面又要注意对象的锁定和释放,还要避免产生死锁。我们还可以从另一个角度来考虑多线程共享资源的问题,既然共享资源这么困难,那么就干脆不要共享,何不为每个线程创造一个资源的复本。将每一个线程存取数据的行为加以原创 2017-12-06 15:51:33 · 189 阅读 · 0 评论 -
IO学习
一、java IO流简介 java IO流是一组有顺序的字节序列,通过流我们可以进行硬盘文件、内存、IO设备等数据的流通。IO流根据处理类型不同可以分为字节流和字符流;根据流向不同可以分为输入流和输出流。 字节流一次读入或者读出8位(1byte=8bit)二进制;而字符流以字节(byte)为单位,根据码表映射字符,一次可能读取多个字节。设备上的文字、图片、视频等都是用二进制存...原创 2018-04-11 16:53:04 · 171 阅读 · 0 评论 -
javaweb项目通过session来管理用户在线
本节主要介绍session的一些小知识。1、登录的时候根据session验证是否登录public class LoginSessionListener implements HttpSessionListener { // 保存 sessionId和userName 的映射(sessionid,userName) public static Map<String, String&...原创 2018-04-23 15:51:26 · 3564 阅读 · 0 评论 -
java分页详解
为了使得从数据库取得的数据能够在前台界面友好的展示,需要对这些数据进行分页显示,分页展示一共有两种方式:一种是传统的上一页下一页的方式,另一种方式是瀑布式加载数据。这里不谈这两种分页的展示方式,来了解一下常见的分页实现方式都有哪些:1、 使用list接口中的subList(int startIndex, int endIndex)方法实现分页这种方式实现了查询从startIndex原创 2017-09-12 17:07:59 · 400 阅读 · 0 评论 -
java把字符串转化成公式计算
static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");Object aa = jse.eval(indexFormula)原创 2017-04-20 18:52:12 · 5285 阅读 · 0 评论 -
this关键字用法
1. this关键字代表本类,表示当前对象的引用2. this表示类的成员变量,而不是方法的局部变量3.this还可以用来调用本类的构造方法原创 2017-03-09 09:50:37 · 481 阅读 · 0 评论 -
java的垃圾回收器
java分配对象的方式:每分配一个对象,堆指针就会往前走一个单元,不用去管销毁对象的过程,每当内存不够用或者低于某个我们配置的值时,java才会启动垃圾回收机制。所以对象的存储空间的分配是相对快的。 java垃圾回收器就是要回收这些无用的对象的。那么怎么才能判断某个对象无用需要被回收了呢? 答案就是当堆栈或者静态存储区没有对这个对象的引用时,这个对象就原创 2017-03-09 09:51:26 · 394 阅读 · 0 评论 -
java序列化和反序列化
序列化:将对象转化为字节序列(流)反序列化:将字节序列(流)转化为对象1.为什么要将对象序列化 a. 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中 b. 在网络上传送对象的字节序列 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户原创 2017-03-09 09:48:41 · 212 阅读 · 0 评论 -
jsp/servlet个人总结
工作差不多有一年时间啦,但是至今不明白servlet的用处和在什么地方用。今天趁着午休的时间,研究了一下。 jsp也就是特殊的servlet,之所以要jsp,是因为:1. jsp可以和html代码直接糅合在一起,方便界面编程,而servlet只能用writer之类的来输出html代码,如2. jsp内置了许多servlet经常设计的变量,如session、out等相对较原创 2017-03-09 09:21:16 · 1137 阅读 · 0 评论 -
java线程同步机制以及对象锁机制
一、java线程同步机制以及对象锁1、线程同步众所周知,在多线程编程中,多个 线程同时对同一个资源进行访问,就可能会出现这样的情况-----这几个线程根据时间片机制会争向访问该资源,特别是在访问某一静态变量的时候,比如我们所谓的火车票卖票系统,设置一个静态变量 static int ticketCount; 多个线程同时买票,每卖一张票 ticketCount计数器就减1,并且不能使得tick...原创 2017-09-13 18:06:51 · 705 阅读 · 0 评论 -
java多线程
java多线程的join方法能够保证在该线程执行完成以后才执行其他线程,这样可以保证该线程的连续性。java线程停止不要用stop方法,这样会导致线程直接停止,对数据和业务都是有害的。原创 2017-09-12 13:56:00 · 1653 阅读 · 0 评论