沈超琦的博客

STAY FOOLISH,STAY HUNGRY,STAY YOUNG!

文章

Hello World

记录生活,记录成长,记录美好 想说的有很多,但都说不出来了.贴上一段代码和一句话,希望自己不负韶华吧. public static void main(String[] args){ System.out.println("Hello World!"); } “终其一生,我们只为寻找最初失去的那个人” ——胡塞尼《群山回唱》

我在 GitHub 上的开源项目

LinkCloudDisk Java 🤩1  ⭐️12  🖖3 基于springcloud开发的分布式美剧订阅系统(含爬虫) 2. linkjb Vue 🤩2  ⭐️5  🖖1  🏠http://www.linkjb.com 基于spring,vue开发的在线实时交友网站 3. LinkDisk Java 🤩1  ⭐️1  🖖0 基于分布式的在线云盘 balabala 4. linkblog CSS 🤩1  ⭐️0  🖖0 linkblog init commit 5. python3-study Python 🤩0  ⭐️0  🖖1 request,selenium,scrapy等库和框架的学习

记录第一次交通事故(真的看不惯加塞🐶)

前因后果 今天和往常一样开开心心开车上班敲代码,昨天有个SQL问题一直困扰着我,准备今天到了公司一口气写完然后能划划水轻松轻松, 但是没想到在高架上的时候,一共三个车道,我一直在中间车道开着(我是红色小车),然后我的右方出现了一辆白色的小车,转向灯也不打,直挺挺向我的车道变向过来,我减速不及,直挺挺撞了上去,砰!~~~!😳 我车倒没什么事,只是后视镜被剐蹭了一下,本来也没怎么气,这场事故的责任很明显,我正常行驶,他变到剐蹭到我.想着这是我妈的老车(杭州限行我自己的车和我妈的车轮换来开的),也开了有12年了,本想着下车去看看如果不严重我也就走掉了.结果我一下车,他劈头盖脸一句 "你怎么开的车?!!",瞬间我火一下子就上来了. 这可还行,我惯着你? 直接打交警电话,交警来了一看就说他全责,他还不认,说他没有变道,是我加塞到他前面去的(我真是服了一些中年人颠倒黑白的能力了).最后叫来了一个交通民警,民警一看事故现场照片也说了他全责, 他这才灰溜溜得认了全责. 总结 开车还是要稳一点,虽然真的很看不惯加塞🐶,但是能让还是让吧,像我这种老车倒没什么事,要是自己的新车,那真是既心疼又碍事,....

[报错本]File createNewFile 空指针问题

现在公司是混合开发平台的,开发环境中代码需要上传到运维平台(docker+jenkins)进行服务的部署,今天遇到了个问题,在本地开发环境没有问题,一到云平台部署就报错,后来定位到了 File的createNewFile方法,才发现路径没有定位好,父路径没有创建 例子: if(!file.exists()){ try { file.getParentFile().mkdirs(); file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }

RabbitMQ消息队列监控API

最近有一个项目,需要编写一个监听rabbitMQ集群状态的项目,需要通过rabbit提供的API来获取相应数据并组装,所以需要学习一下rabbit的API HTTP API URLHTTP请求类型接口含义 /api/connectionsGET获取当前RabbitMQ集群下所有打开的连接 /api/nodesGET获取当前RabbitMQ集群下所有节点实例的状态信息 /api/vhosts/{vhost}/connectionsGET获取某一个虚拟机主机下的所有打开的connection连接 /api/connections/{name}/channelsGET获取某一个连接下所有的管道信息 /api/consumers/{vhost}GET获取某一个虚拟机主机下的所有消费者信息 /api/exchanges/{vhost}GET获取某一个虚拟机主机下面的所有交换器信息 /api/queues/{vhost}GET获取某一个虚拟机主机下的所有队列信息 /api/usersGET获取集群中所有的用户信息 /api/users/{name}get/put/delete获取/更新/....

WebSocket学习(一)

简介 下一个项目需要做一个对于rabbitmq里队列交换机等资源的监控项目,需要用到的技术有rabbitmq的API和websocket协议(其实最主要的是前端的大屏,领导喜欢看大屏哈哈哈哈),其实以前也用过websocket,但是都只是使用,并没有对websocket协议本身有过深入的分析了解,趁这次知识储备的机会对这个协议做一个简单的了解 与HTTP协议的关系 同样作为应用层的协议,WebSocket在现代的软件开发中被越来越多的实践,和HTTP有很多相似的地方,这里将它们简单的做一个纯个人、非权威的比较: 比较 相同点 都是基于TCP的应用层协议。 都使用Request/Response模型进行连接的建立。 在连接的建立过程中对错误的处理方式相同,在这个阶段WS可能返回和HTTP相同的返回码。 都可以在网络中传输数据。 不同点 WS使用HTTP来建立连接,但是定义了一系列新的header域,这些域在HTTP中并不会使用。 WS的连接不能通过中间人来转发,它必须是一个直接连接。 WS连接建立之后,通信双方都可以在任何时刻向另一方发送数据。 WS连接建立之后,数据的传输使用帧来....

Java 8 新特性

Java 8 新特性 1.lambda 表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变的更加简洁紧凑。 基本的语法格式为: (parameters) -> expression 或 (parameters) ->{ statements; } 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。 简单实例: // 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回....

Spring核心依赖注入

前言 提起Spring,大家肯定不陌生,它是每一个Java开发者绕不过去的坎。Spring 框架为基于 java 的企业应用程序提供了一整套解决方案,方便开发人员在框架基础快速进行业务开发。 在官网中,我们发现它的核心技术之一:Dependency Injection,简称:DI ,翻译过来就是依赖注入。今天我们就来盘一盘它。 在本文中,我们将深入研究 Spring 框架 DI背后的故事,包括 Spring Inversion of Control(控制反转)、 DI 和 ApplicationContext 接口。 基于这些基本概念,我们将研究如何使用基于 java 和基于 XML 的配置来 创建Spring 应用程序。 最后,我们将探讨在创建 Spring 应用程序时遇到的一些常见问题,包括 bean冲突和循环依赖性。 一 控制反转(Inversion of Control) 在学习DI之前,我们先学习一下 IoC(控制反转),接下来的一段可能读起来会让你感觉比较啰嗦,但是要细细体会每一次改变的意图,和我们的解决方案,对于理解控制反转非常重要。 首先来了解下我们通常实例化一个对象的....

[原创]dom4j的指定element获取树结构

最近在做CDA文档(一种医疗机构内部通用的XML格式文档,基于V3模板)的项目,遇到了一个需求,通过指定CDA文档的xpath获取指定xml的树结构. public List<Object> searchByNode(String documentId,String xpath){ List resultList = new ArrayList<>(); String cdacontent = xxxService.getByDocumentId(documentId) .....通过documentId 获取具体的CDA文档 Map map = new HashMap(); map.put("cda","urn:hl7-org:v3"); //指定XML命名空间 SAXReader reader = new SAXReader(); reader.getDocumentFactory().setXPathNamespaceURIs(map); Ducument result = null; InputSource source = new InputSourc....

mybatis一级缓存二级缓存

一级缓存   Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况下,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。 为什么要使用一级缓存,不用多说也知道个大概。但是还有几个问题我们要注意一下。   1、一级缓存的生命周期有多长? **  **a、MyBatis在开启一个数据库会话时,会 创建一个新的SqlSession对象,SqlSession对象中会有一个新的Executor对象。Executor对象中持有一个新的PerpetualCache对象;当会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。   b、如果SqlSession调用了close()方法,会释放....

java 中的线程,多线程

多线程 1 什么是线程, 线程与进程的关系 线程是程序的执行路径,或者可以说是程序的控制单元。 一个进程可能包含一个或多个线程,当一个进程存在多条执行路径时,就可以将该执行方式称为多线程。 线程的执行方式大致可分为就绪 (wait),执行(run),阻塞(block) 三个状态,而三个状态的转换实质上是在抢夺 cpu 资源过程中造成的,正常情况下 cpu 资源不会被线程独自占用,因此多个线程在运行中相互抢夺资源,造成线程在上述的三个状态之间不断的相互转换。而这也是多线程的执行方式。 2 同步和异步的区别 同步(Sync) 所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 根据这个定义,Java 中所有方法都是同步调用,应为必须要等到结果后才会继续执行。我们在说同步、异步的时候,一般而言是特指那些需要其他端协作或者需要一定时间完成的任务。 简单来说,同步就是必须一件一件事做,等前一件做完了才能做下一件事。 异步(Async) 异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态、....

STAY FOOLISH,STAY HUNGRY,STAY YOUNG!

© 2020 沈超琦的博客

Powered by Solo
Theme solo-sakura by adlered
浙ICP备18010929号

主题 | Theme