java
文章平均质量分 84
Somnus_小凯
永远相信美好的事情,即将发生
展开
-
SQL 嵌套 N 层太长太难写怎么办?
我们工作中写SQL处理数据是家常便饭,不管是应用内数据处理还是临时查询分析都可以用SQL完成,相对其他技术(如Java等高级语言)也更简单。不过,SQL的简单只限于简单需求,有些复杂计算场景SQL写起来却很难,嵌套N层以至于达到几百上千行,说SQL代码长度时通常不会以行计而是以KB计。这种情况并不少见,相信经常写SQL的小伙伴并不陌生。为什么会出现这种情况呢?在http://c.raqsoft.com.cn/article/1639032922105 里详细分析了这个问题。原创 2022-11-01 19:30:00 · 3830 阅读 · 46 评论 -
SpringBoot:如何优雅地进行数据响应
#背景基于前后端分离的模式进行开发,对接口的报文格式便有了一定的要求。通常,我们会采用JSON格式作为前后端交换数据格式,从而减少沟通成本等。今天就带大家了解一下基于SpringBoot框架来封装返回报文以及统一异常处理。报文基本格式一般报文格式通常会包含状态码、状态描述(或错误提示信息)、业务数据等信息。在此基础上,不同的架构师、项目搭建者可能会有所调整。但从整体上来说,基本上都是大同小异。在SpringBoot项目中,通常接口返回的报文中至少包含三个属性:示例报文如下:在上述报文格式中,不同原创 2022-10-27 23:44:59 · 344 阅读 · 0 评论 -
手把手教你Spring Cloud Alibaba系列教程:Nacos实现服务注册与发现
Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。在接下里的教程中,将使用Nacos作为微服务架构中的注册中心(替代:eurekba、consul等传统方案)以及配置中心(spring cloud config)来使用。原创 2022-10-06 22:32:59 · 665 阅读 · 0 评论 -
猿创征文|手把手教你微服务分布式事务与Seata框架源码分析
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。TM 向 TC 申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID。XID在微服务调用链路的上下文中传播。RM 向 TC 注册分支事务,接着执行这个分支事务并提交(重点:RM在第一阶段就已经执行了本地事务的提交/回滚),最后将执行结果汇报给TC。TM 根据 TC 中所有的分支事务的执行情况,发起全局提交或回滚决议。TC 调度XID下全部分支事务完成提交或回滚请求。............原创 2022-08-28 23:15:51 · 484 阅读 · 2 评论 -
手把手教你CSP系列之script-src
HTTP Content-Security-Policy(CSP)script-src指令为JavaScript的源指定有效来源。这不仅包括直接加载到。原创 2022-08-04 14:00:15 · 3276 阅读 · 0 评论 -
专属程序员的浪漫七夕
七夕来袭!是时候展现专属于程序员的浪漫了!你打算怎么给心爱的人表达爱意?鲜花礼物?代码表白?还是创意DIY?七夕节,又称七巧节、七姐节、女儿节、乞巧节、七娘会、七夕祭、牛公牛婆日、巧夕等,是中国民间的传统节日。七夕节由星宿崇拜衍化而来,为传统意义上的七姐诞,因拜祭“七姐”活动在七月七晩上举行,故名“七夕”。......原创 2022-08-02 21:52:07 · 332 阅读 · 0 评论 -
docker有几种网络模式
Docker使用Linux桥接(参考《Linux虚拟网络技术》),在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是dockerhost上已经使用的端口就不能再用了,网络的隔离性不好。...原创 2022-08-01 14:55:25 · 566 阅读 · 0 评论 -
java之多线程编程
Java给多线程编程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。多线程能满足程序员编写高效率的程序来达到充分利用CPU的目的。一个线程的生命周期线程是一个动态执行的过程,它也有一个从产生到死亡的过程。...原创 2022-08-01 14:01:02 · 244 阅读 · 0 评论 -
Java常用机制 - SPI机制详解
SPI(ServiceProviderInterface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用,比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。Java中SPI机制主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心思想就是解耦。SPI整体机制图如下}...原创 2022-07-31 18:28:11 · 532 阅读 · 0 评论 -
Centos下搭建Hadoop伪分布式
什么是Hadoop?Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用原创 2020-06-24 18:06:15 · 2208 阅读 · 0 评论 -
UOS统一操作系统,让我们拥抱中文操作系统,打造属于自己的私人企业级网盘
个人网盘个人网盘,又称网络U盘、网络硬盘,是由互联网公司推出的在线存储服务。服务器机房为用户划分一定的磁盘空间,为用户免费或收费提供文件的存储、访问、备份、共享等文件管理等功能,并且拥有高级的世界各地的容灾备份。用户可以把网盘看成一个放在网络上的硬盘或U盘,不管你是在家中、单位或其它任何地方,只要你连接到因特网,你就可以管理、编辑网盘里的文件。不需要随身携带,更不怕丢失。原创 2020-06-07 22:39:19 · 3109 阅读 · 0 评论 -
手把手教你Charles抓包工具使用
Charles简介Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。Charles主要功能支持SSL代理。可以截取分析SSL的请求。支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。支持AJ原创 2020-06-07 20:51:43 · 124515 阅读 · 35 评论 -
Centos 7 下安装kibana,ik中文分词器以及ElasticSearch集群教程
简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PH......原创 2020-04-01 00:46:18 · 2150 阅读 · 0 评论 -
Http通信概述
在进行编码之前,我们先创建一个Servlet,该Servlet接收客户端的参数(name和age),并响应客户端。@WebServlet(urlPatterns={"/demo.do"})public class DemoServlet extends HttpServlet { private static final long serialVersionUID = 1L;原创 2016-09-14 13:58:40 · 643 阅读 · 0 评论 -
Centos 7 搭建Docker环境
Docker简介产生背景开发和运维之间因为环境不同而导致的矛盾 集群环境下每台机器部署相同的应用 DevOps(Development and Operations)简介Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Dock...原创 2019-07-31 17:05:06 · 554 阅读 · 0 评论 -
Centos 7 搭建 Jenkins环境
安装 JenkinsJenkins 简介Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Java 安装首先我们需要准备 Java 环境,使用下面命令来安装 Java:yum -y install java-1.8.0-openjdk-develJenkins ...原创 2019-07-31 18:37:42 · 464 阅读 · 0 评论 -
Centos下卸载Docker
Centos下卸载Docker首先查看Docker版本# yum list installed | grep dockercontainerd.io.x86_64 1.2.6-3.3.el7 @docker-ce-stabledocker-ce.x86_64 3:19.03.1-3....原创 2019-08-07 22:24:07 · 1067 阅读 · 0 评论 -
Centos7修改yum源为国内yum源方法
国外地址yum源下载慢,下到一半就断了,就这个原因就修改它为国内yum源地址最近在下载安装nodejs npm 的时候发现下载不下来看了下yum,国内阿里巴巴与 网易的访问比较快下面是以我机器centos7为例 ,以 修改为阿里的yum源1. 先本地yum源的备份一下mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repo...原创 2019-08-16 22:48:46 · 2232 阅读 · 3 评论 -
为什么程序员喜欢用大量的if... ...else if ;不喜欢用设计模式+反射+自定义注解
面向过程设计和面向对象设计的主要区别是: 是否在业务逻辑层使用冗长的if else判断。如果你的代码还在大量使用if else,当然,界面表现层除外,即使你使用Java/C#这样完全面向对象的语言,也只能说明你的思维停留在传统的面向过程语言上。传统思维设计 业务逻辑层为什么会使用大量的if else呢?其实目的也是为了重用,但是这是面向过程编程的重用,程序员...原创 2019-09-10 23:44:23 · 1451 阅读 · 0 评论 -
Centos 7 脚本命令环境部署安装JDK+Maven+Git+MySql+Redis,让你快人一步
Centos 7 脚本命令环境部署安装JDK+Maven+Git+MySql+Redis1,首先我们先新建一个存放我们脚本目录的位置mkdir script执行完了,在我们/home目录下就有已经有了这个script文件夹了进入文件目录,把我们提前写好的脚本放进去以上脚本文件就是这几个,下面我们简单的看一下脚本内容以及执行效果。1,JDK的安装jdk相关脚本,...原创 2019-09-30 14:10:42 · 990 阅读 · 0 评论 -
Spring源码系列:Spring的启动过程
Spring对于程序员说来说都不陌生;作为一个强大的开源技术,帮助我们能够更好的进行项目的开发与维护。直接进入主题吧。Spring的启动过程实际上就是Ioc容器初始化以及载入Bean的过程;本文主要是学习记录下前半部分(Ioc容器的初始化),新手上路,如有错误,请指正!1.从配置文件说起<listener> <listener-class>org.spr...原创 2018-04-24 10:50:08 · 1669 阅读 · 0 评论 -
项目开发框架-SSM
1.Spring无需多言,作为开源届数一数二的典例,项目开发中无处不在;核心IOC容器,用来装载bean(java中的类)-用Spring的IOC容器来管理Bean的生命周期,有了这样一种机制,我们就可以不用在代码中去重复的做new操作。aop,面向切面编程,spring中最主要的是用于事务方面的使用。2.Spring MVC作用于web层,相当于controller,与struts中的actio...转载 2018-04-24 10:36:10 · 830 阅读 · 0 评论 -
Java 和 HTTP 的那些事(一) 模拟 HTTP 请求
最新在学习使用 Java 来写网络爬虫,模拟浏览器发送 HTTP 请求,并抓取返回页面中的信息。由于对 Java 刚接触,以前用 .Net 写的一些网络请求相关的工具类都派不上用场,于是对如何使用 Java 模拟 HTTP 请求潜心研究了一番,在此写下这个《Java 和 HTTP 的那些事》系列的博客,并记录一些我中途遇到了明坑和暗坑,供后来人参考。此为第一篇。一、使用 HttpURLCo原创 2016-09-14 13:36:54 · 2557 阅读 · 1 评论 -
SVN 命令参考防止不能访问(备用)
SVN 命令参考(svn command reference)用法: svn [options] [args]Subversion 命令行客户端,版本 1.6.17。使用"svn help " 显示子命令的帮助信息。使用"svn --version"查看程序的版本号和版本库访问模块,或者使用"svn --version --quiet"只查看程序的版本号。大多数的子命令可转载 2016-09-25 17:03:51 · 1387 阅读 · 0 评论 -
Linux下启动java程序的通用脚本
#!/bin/sh#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,#也可以作为启动java程序的独立脚本来使用。#警告!!!:该脚本stop部分使用系统kill命令来强制终止指定的java程序进程。#在杀死进程前,未作任何条件检查。在某些情况下,如程序正在进行文件或数据库写操作,#可能会造成数据丢失或数据不完整。如果必须要考虑到这原创 2016-09-21 16:06:44 · 3896 阅读 · 0 评论 -
Java 和 HTTP 的那些事(三) 代理认证
前面一篇博客介绍了在 Java 中使用 HttpURLConnection 和 HttpClient 通过代理访问 HTTP 站点的方法,但是可以看到代码中使用的代理都是免费公开的代理,不需要用户名密码就能直接访问。由于互联网上公开的代理安全性不能保证,这种代理随便用用即可,如果要慎重起见,我推荐大家还是自己搭建代理服务器。但是有一点要特别注意,如果自己搭建代理服务器的话,一定不要公开,要设置原创 2016-09-14 13:40:03 · 12856 阅读 · 3 评论 -
使用SVN的8个技巧
1. 使用SVN钩子强制提交注释一个好的SVN实践是文件提交时要求必须填写注释,并注明相关修改信息,如bug号、任务描述等,内容按照约定编写。这样在后期的代码审核和回溯过程中会非常方便,可以更快的定位到具体代码的修改记录。所谓SVN钩子就是一些与版本库事件发生时触发的程序,例如新修订版本的创建,或者是未版本化属性的修改。目前subversion提供了如下几种钩子:start-com原创 2016-09-24 10:38:31 · 5101 阅读 · 0 评论 -
Java 和 HTTP 的那些事(二) 使用代理
在上一篇博客《模拟 HTTP 请求》中,我们分别介绍了两种方法来进行 HTTP 的模拟请求:HttpURLConnection 和 HttpClient ,到目前为止这两种方法都工作的很好,基本上可以实现我们需要的 GET/POST 方法的模拟。对于一个爬虫来说,能发送 HTTP 请求,能获取页面数据,能解析网页内容,这相当于已经完成 80% 的工作了。只不过对于剩下的这 20% 的工作,还得原创 2016-09-14 13:38:43 · 12183 阅读 · 1 评论 -
Win7下VMware的NAT网络模式不能正常工作
今天在Windows 7下实验VMware的NAT网络模式时遇到了障碍,Guest-OS不仅无法访问Internet,而且连Host-OS也ping不通。有时候仿佛能ping通Host-OS,但是却返回大量的(DUP!)包,如下图所示:根据这个提示,在Google上搜索“ping DUP!”得到大量的结果,有的说禁用VMnet8网卡然后重启即可解决,有的说可能是局域网上有IP冲突,原创 2016-09-24 10:31:05 · 3445 阅读 · 0 评论 -
CentOS7下Firewall一些基本常用命令
yum install firewalld1如果需要图形界面的话,则再安装yum install firewall-config1一、介绍防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动......原创 2016-09-23 10:31:08 · 38707 阅读 · 2 评论 -
Java 和 HTTP 的那些事(四) HTTPS 和 证书相关
说起 HTTP 的那些事,则不得不提 HTTPS ,而说起 HTTPS ,则不得不提数字证书。这篇博客将从 Java 的角度,学习 HTTPS 和数字证书技术,并分享爬虫开发的过程中针对爬取 HTTPS 站点时可能遇到的一些问题。在前面的几篇博客里,其实已经略微提到过 HTTPS 了,譬如使用HttpsURLConnection类发送 HTTPS 请求,在使用代理时 HTTP 和 HTTPS......原创 2016-09-14 13:42:17 · 15187 阅读 · 6 评论 -
http状态码的详解
状态码含义100客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。101服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完原创 2016-09-22 10:45:36 · 838 阅读 · 0 评论 -
ASCII码对照表
ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符0NUT32(space)64@96、1SOH33!65A97a2STX34"原创 2016-09-22 10:49:58 · 388 阅读 · 0 评论 -
oracle 执行被锁表
1.下面的语句用来查询哪些对象被锁:select object_name,machine,s.sid,s.serial#from v$locked_object l,dba_objects o ,v$session swhere l.object_id = o.object_id and l.session_id=s.sid;2.下面的语句用来杀死一个进程:alter原创 2018-01-24 10:49:21 · 571 阅读 · 0 评论 -
Maven详解之聚合与继承
说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现。一、为什么要聚合?随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构、分模块开发,来提高代码的清晰和重用。针对于这一特性,maven也给予了相应的配置。情景...转载 2016-11-22 16:10:11 · 456 阅读 · 0 评论 -
SpringBoot常用配置
前言:springboot集成了主流的第三方框架,但是需要使用springboot那一套配置方式。但是我这里只列举了非常非常常用的,可以看已发的几篇博客,慢慢会补充。当然官方文档里也有相应的配置,可惜没有注释。mvcspring.mvc.async.request-timeout设定async请求的超时时间,以毫秒为单位,如果没有设置的话,以具体实现的超时时间为准,比如to转载 2016-11-29 17:55:04 · 12720 阅读 · 0 评论 -
JAVA对图片操作
package com.test.grahpic;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Point;import java.a原创 2016-10-26 20:27:07 · 3229 阅读 · 0 评论 -
Netty构建游戏服务器(二)--Hello World
一,准备工作1,netty-all-4.1.5.Final.jar(官网下载)2,eclipse二,步骤概要1,服务器开发(1),创建Server类该类是程序的主入口,有main方法,服务器开启也是在此执行。该类主要是提供了channel链接,绑定了端口。该类需要new一个Initalizer类来完成服务器开启。(2),创建Initalizer类转载 2016-10-26 20:06:20 · 3970 阅读 · 1 评论 -
高并发Java:NIO和AIO
IO感觉上和多线程并没有多大关系,但是NIO改变了线程在应用层面使用的方式,也解决了一些实际的困难。而AIO是异步IO和前面的系列也有点关系。在此,为了学习和记录,也写一篇文章来介绍NIO和AIO。1. 什么是NIONIO是New I/O的简称,与旧式的基于流的I/O方法相对,从名字看,它表示新的一套Java I/O标 准。它是在Java 1.4中被纳入到JDK中的,并具有以下特性原创 2016-11-07 14:38:28 · 2827 阅读 · 0 评论 -
项目的启动脚本
#!/bin/shAPP_HOME=$(cd "$(dirname "$0")"; pwd)TARGET_FILE=/usr/local/somnus/source/ETC_Project/ETC_MANAGE_WEB/target/ETC_MANAGE_WEB-0.0.1-SNAPSHOT.jar #源码编译的文件WORK_DIR=/usr/local/somnus/原创 2016-09-26 14:42:24 · 704 阅读 · 1 评论