java
文章平均质量分 77
kaixin201505
编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java Condition类的详细介绍
java Condition类的详细介绍转载 2023-02-05 23:09:59 · 566 阅读 · 0 评论 -
JUC-原子整数-AutomicInteger
JUC-原子整数-AutomicInteger转载 2023-02-05 22:27:46 · 485 阅读 · 0 评论 -
JMM概述
内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象描述,不同架构下的物理机拥有不一样的内存模型,Java虚拟机是一个实现了跨平台的虚拟系统,因此它也有自己的内存模型,即Java内存模型(Java Memory Model, JMM)。转载 2023-02-03 20:41:41 · 292 阅读 · 0 评论 -
CentOS 7:配置用户级别的jdk的环境变量
cent7用户级别jdk安装转载 2022-10-19 15:43:22 · 2716 阅读 · 0 评论 -
Spring Boot 解决跨域问题的 3 种方案
Spring Boot 解决跨域问题的 3 种方案转载 2022-05-17 15:04:46 · 333 阅读 · 0 评论 -
一个项目设置两个git地址,并最终实现一次性同时推送到到两个git地址上的方法总结
基于多处备份的想法,确保自己的代码不丢失。或者是代码的git本身搭建在自己公司的服务上,而你为了保险起见,想把项目同时放在码云或者github上面。这样,你就需要让一个项目同时备份在两个云端,这样即使公司的服务器上面的代码丢了,或者公司服务器把你的名单除名了,你仍然在码云或者github上面存有你的代码。那么,怎么实现这个想法呢?请看如下步骤:前提:1、假设你现在在gitLab上面新建了一个git地址A(里面已经有项目内容)git@git.taotiangou.net:teamemor转载 2022-02-28 18:08:18 · 3430 阅读 · 0 评论 -
spring cloud集成swagger2(监听多个项目)
配置详解1、接口服务工程的pom文件中引入swagger2<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version></dependency><dependency> <groupId&...转载 2022-02-18 05:55:49 · 1462 阅读 · 0 评论 -
Multipartfile与File类型相互转换
特殊情况下需要做转换1、M转FFile file = new File(path); FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file); 2、F转MFile file = new File("src/test/resources/input.txt"); FileInputStream input = new FileInputStream(file); MultipartFile转载 2021-11-25 16:03:28 · 8073 阅读 · 0 评论 -
java 中 BigDecimal 详解
首先,学习一个东西,我们都必须要带着问题去学,这边我分为 【为什么?】【是什么?】【怎么用?】【为什么要用BigDecimal?】首先,我们先看一下,下面这个现象那为什么会出现这种情况呢?因为不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。注:根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确。只能无限接近于那个值但是,在项目中,我们不可能让这种情况出现,特别是金融项目,因为涉及金额的计算都必须十分转载 2021-11-18 13:42:26 · 466 阅读 · 0 评论 -
CAS单点登录原理分析(一)
一、业务分析在分布式系统架构中,假设把上述的三个子系统部署在三个不同的服务器上。前提是用户登录之后才能访问这些子系统。那么使用传统方式,可能会存在这样的问题:1.当访问用户中心,需要用户登录帐号2.当访问购物车,还需要用户登录帐号3.当访问商品结算,又一次需要用户登录帐号访问每一个子系统都需要用户登录帐号,这样的体验对于用户来说是极差。而使用单点登录就可以很好地解决上述的问题。二,单点登录单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方转载 2021-09-18 09:27:44 · 1428 阅读 · 0 评论 -
CAS单点登录原理分析(二)
这篇文章对CAS单点登录具体实现的一些步骤就行讲述,至于CAS单点登录的实现原理分析,请参看下面这篇文章:CAS单点登录原理分析(一) https://blog.youkuaiyun.com/qq_41258204/article/details/84036875CAS 包含两个部分: CAS Server 和 CAS Client 。CAS Server :其实就是一个war包,CAS框架已经提供。只需要把部署到web服务器上即可,主要负责对用户的认证工作。 在文章末尾的示例项目中提供。CAS Clie转载 2021-09-18 09:17:12 · 664 阅读 · 0 评论 -
CAS单点登录原理(包含详细流程,讲得很透彻,耐心看下去一定能看明白!)
1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让用户从某种意义上觉得只登录了一次。 该方式缺点就是多次传送用户名密码,增加被盗风险,以及不能跨域。同时www.qiandu.com与mail.qiandu.com同时拥有登录逻辑的代码,如果涉及到修改操作,则需要修改两处。2、统一...转载 2021-09-17 17:53:00 · 2101 阅读 · 3 评论 -
http状态码301和302详解及区别——辛酸的探索之路
一直对http状态码301和302的理解比较模糊,在遇到实际的问题和翻阅各种资料了解后,算是有了一定的理解。这里记录下,希望能有新的认识。大家也共勉。官方的比较简洁的说明: 301 redirect: 301 代表永久性转移(Permanently Moved) 302 redirect: 302 代表暂时性转移(Temporarily Moved ) ps:这里也顺带记住了两个比较相近的英语单词(permanently、temporarily),嘻...转载 2021-09-17 17:07:17 · 221 阅读 · 0 评论 -
java.io.tmpdir指定的路径在哪?
Java.io.tmpdir介绍System.getproperty(“java.io.tmpdir”)是获取操作系统缓存的临时目录,不同操作系统的缓存临时目录不一样, 在Windows的缓存目录为:C:\Users\登录用户~1\AppData\Local\Temp\ Linux:/tmpSystem.getProperty(“”),可以操作一下参数: java.version Java运行时环境版本 java.vendor...转载 2021-09-14 16:39:47 · 948 阅读 · 0 评论 -
SpringCloud常用注解总结
https://blog.youkuaiyun.com/u014666697/article/details/90756644公司正在用springcloud微服务改造老项目,为了方便查找和学习,汇总一些常用的注解。使用过程中定期更新。SpringCloud常用注解总结:@Controller 控制层,里面有多个连接@Service 业务层,一般对于接口和实现@Qualifier 如果一个接口有多个实现,那么注入时候加上唯一标示@Repository 一般的dao层@Autowired 自动注入依转载 2021-09-14 16:37:08 · 2279 阅读 · 0 评论 -
logback配置文件---logback.xml详解
一、参考文档1、官方文档Documentation2、博客文档logback的使用和logback.xml详解 - 行走在云端的愚公 - 博客园二、logback.xml常用配置详解1、根节点<configuration>,包含下面三个属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为t转载 2021-09-14 16:35:10 · 6386 阅读 · 0 评论 -
SpringCloud Logback日志配置
springboot logback的源码分析请参考这篇,讲的很好:https://juejin.im/post/5cd0cdcc6fb9a0323120a3f4一、日志常规配置直接贴出logback-spring.xml,基本满足了对日志的常规需求:1、控制台日志(带颜色显示)2、全部日志文件(包括全别日志级别的日志,每天一个,自动压缩)3、错误日志文件(仅抽取ERROR级别日志,每天一个,自动压缩)说明:a. 日志存放目录需要在application.yml中配置:logging.转载 2021-09-14 16:25:06 · 1152 阅读 · 0 评论 -
重写log4j.jar中的DailyRollingFileAppender.java,实现按月保存日志,或者保留一定个数或者保留几个月的日志
一般来说,log4j.jar中提供的日志都是按天保存,并且当天第一次启动项目,去生成前一天的日志,并且Info和error日志信息都保存在一起,对于日志都没有分类,不好管理与查看; 现如今重写 log4j.jar中的DailyRollingFileAppender.java,让日志按照自己约定的方式,满足客户的需求; 重写的类名更改为:CustomDailyRollingFileAppender.java日志生成要求:第一种方式: 日志按天生成,按月保存到一个文件夹中,日志...转载 2021-09-14 16:21:13 · 1765 阅读 · 0 评论 -
Log4j中DailyRollingFileAppender日志文件清理策略
创作要点新增参数maxBackupIndex,表示保留的文件数,默认值为1 直接使用DatePattern作为SimpleDateFormat的参数,这样可以完美支持DailyRollingFileAppender所支持的所有打印周期 实现FileFilter用于提高日志文件列表读取的效率 将日志文件(如“web.log.2016-01-12”)后缀的日期格式(如“2016-01-12”)转换成long类型进行排序,实现排序的准确性 转换成long类型时进行一场捕获:try { ...转载 2021-09-14 16:16:18 · 2924 阅读 · 0 评论 -
AssertJ了解
单元测试一个单元测试分三步:1. 准备数据2. 执行测试方法3. 断言测试结果Java里面写单元测试都会以来JUnit,而且该包夜提供了一些的Assert的API。但不得不说确实不好用,可读性差。所以不推荐使用。很多人也喜欢用Hamcrest,非常好用(我现在还是用它)。遗憾的是从2012年开始就没有后续更新了。之后了FEST,只是它也不更新了。前段时间去ThoughtWorks 面试,发现他们提倡用 Assertj。这里整理下。AssertjAssertj 号称"Java的流水式断言“转载 2021-08-18 16:10:06 · 758 阅读 · 0 评论 -
huTool工具
Hutool如何改变我们的coding方式Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。以计算MD5为例:????【以前】打开搜索引擎 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用 ????【现在】引入Hutool -> SecureUtil.md5()Hutool的存在就是为了减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。包含组件原创 2021-08-08 10:18:28 · 420 阅读 · 0 评论 -
Java Lambda 表达式
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda 表达式的语法格式如下:(parameters) -> expression 或 (parameters) ->{ statements; }以下是lambda表达式的重要特征:可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参转载 2021-07-22 09:04:02 · 123 阅读 · 0 评论 -
基础邮件原理(MUA,MTA,MDA)
电子邮件基本概念:MUA(Mail User Agent)接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信;MTA(Mail Transfer Agent) 通过SMTP协议发送、转发邮件;MDA(Mail Deliver Agent)将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描;MRA(Mail Receive Agent)负责实现IMAP与POP3协议,与MUA进行交互;SMTP(Simple Mail Transfer Prot...转载 2021-07-16 06:00:00 · 2632 阅读 · 0 评论 -
java的两种同步方式, Synchronized与ReentrantLock的区别
java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高,不过可以通过对锁优化进行改善)。区别: 这两种...转载 2021-07-14 07:25:21 · 174 阅读 · 0 评论 -
powerdesigner设计的pdm模型导出清晰图片格式
用powerdesigner设计了数据库模型,想把模型粘贴到数据库文档中,之前一直是Ctrl+A然后复制,直接粘贴过去的,这次领导说放大看不清,o(╯□╰)o没办法,得搞个高清图复制上去啊,怎么办呢,肯定有这个功能吧,百度一下,找到了方法,o(╯□╰)o1.首先全选或者选择你要保存的元素【Ctrl+A】2.Edit---->Export Image3. 导出-->保存over!————————————————版权声明:本文为优快云博主「oIdm...转载 2021-07-14 07:16:12 · 617 阅读 · 0 评论 -
组织机构、权限、角色设计
权限系统设计前言权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。目前在公司负责权限这块,所以对权限这块的设计比较熟悉,公司采用微服务架构,权限系统自然就独立出来了,其他业务系统包括商品中心,订单中心,用户中心,仓库系统,小程序,多个APP等十几个系统和终端1.权限模型迄今为止最为普及的权限设计模型是RBAC模型,基于角色的访问控制(Role-Based Access转载 2021-07-13 16:29:01 · 10919 阅读 · 1 评论 -
如何选择Arrays.asList()、Collections.singletonList()
Arrays.asList()、Collections.singletonList()Arrays.asList(strArray)返回值是仍然是一个可变的集合,但是返回值是其内部类,不具有add方法,可以通过set方法进行增加值,默认长度是10 Collections.singletonList()返回的是不可变的集合,但是这个长度的集合只有1,可以减少内存空间。但是返回的值依然是Collections的内部实现类,同样没有add的方法,调用add,set方法会报错 java.lang.Unsuppo.转载 2021-07-06 14:50:58 · 1429 阅读 · 0 评论 -
Etcd核心概念
为什么需要 etcd从本质上来讲,云原生中的微服务应用属于分布式系统的一种落地实践。在分布式环境中,由于网络的复杂性、不确定性以及节点故障等情况,会产生一系列的问题。最常见的、最大的难点就是数据存储不一致的问题,即多个服务实例自身的数据或者获取到的数据各不相同。因此我们需要基于一致性的存储组件构建可靠的分布式系统。分布式中的 CAP 理论CAP 原理是描述分布式系统下节点数据同步的基本定理,分别指Consistency(一致性)、Availability(可用性)和 Partition tole原创 2021-07-04 11:02:53 · 562 阅读 · 0 评论 -
Raft 算法(详细版)
1. Raft 算法简介1.1 Raft 背景在分布式系统中,一致性算法至关重要。在所有一致性算法中,Paxos 最负盛名,它由莱斯利·兰伯特(Leslie Lamport)于 1990 年提出,是一种基于消息传递的一致性算法,被认为是类似算法中最有效的。Paxos 算法虽然很有效,但复杂的原理使它实现起来非常困难,截止目前,实现 Paxos 算法的开源软件很少,比较出名的有 Chubby、LibPaxos。此外,Zookeeper 采用的 ZAB(Zookeeper Atomic Broadc转载 2021-07-01 06:51:06 · 2680 阅读 · 0 评论 -
Reactor模式是什么
一、Reactor模式是什么反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。二、什么场景下使用Reactor模式?对于高并发系统,常会使用Reactor模式,其代替了常用的多线程处理方式,节省系统的资源,提高系统的吞吐量。下面用比较直观的形式来介绍这种模式的使用场景。以餐厅...转载 2021-06-30 15:01:21 · 500 阅读 · 0 评论 -
浏览器缓存,状态码200与304
缓存机制浏览器缓存控制机制有两种:1、meta标签<meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Expires" content="0">清除浏览器中的缓存,必须从服务端获取最新内容,但不是所有浏览器都支持.。2、HTTP头信息Expires:即在 HTTP转载 2021-06-29 23:13:03 · 1181 阅读 · 0 评论 -
Java 用Arrays.fill() 初始化 二维数组
在最短路径问题上遇到了一个问题,对于二维int数组 map[][],需要初始化为int的最大值,不想用双重循环赋初值,想用Arrays.fill()填充但是失败了。。。。。。首先说明,Arrays.fill()并不能提高赋值的效率,在函数的内部也是用for循环的方式 实现的。fill()函数源码: public static void fill(Object[] a, Object val) { for (int i = 0, len = a.length; i < l...转载 2021-06-23 07:45:46 · 1897 阅读 · 1 评论 -
Java 用Arrays.fill() 初始化 二维数组
Java数组Arrays.fill()方法Java API中的Fillpublic static void fill(Object[] a,int fromIndex,int toIndex,Object val)将指定的 Object 引用分配给指定 Object 数组指定范围中的每个元素。填充的范围从索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,则填充范围为空。)参数:a - 要填充的数组fro...转载 2021-06-23 07:43:22 · 1333 阅读 · 0 评论 -
RecursiveTask和RecursiveAction的使用 以及java 8 并行流和顺序流
什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+10000,可以分割成10个子任务,每个子任务分别对1000个数进行求和,最终汇总这1...转载 2021-06-21 11:08:51 · 465 阅读 · 0 评论 -
Java 关于强引用,软引用,弱引用和虚引用的区别与用法
https://blog.youkuaiyun.com/lovoo/article/details/51615423https://blog.youkuaiyun.com/mazhimazh/article/details/19752475一、概述:众所周知,Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个转载 2021-06-18 10:35:40 · 234 阅读 · 0 评论 -
ThreadLocal原理分析与使用场景
什么是ThreadLocal变量ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。 既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量转载 2021-06-18 09:28:19 · 272 阅读 · 0 评论 -
Axis2与CXF的区别
对比Axis2和CXFjws的发布对java webservice框架产生了巨大的影响,经过大浪淘沙,目前java开发webservice的框架主要包括axis2和cxf。axis2和cxf都是apache旗下的产品,但是其目的不同,导致webservice开发方法也不一样。两个框架都得到了开发者的支持。比较这两个框架的WebService开发方法与比较它们的特性同样重要。从开发者的角度,两个框架的特性相当的不同。Axis2的开发方式类似一个小型的应用服务器,Axis2的开发包要以WAR的...转载 2021-06-18 08:14:56 · 414 阅读 · 0 评论 -
axis2用命令生成客户端代码
1.下载axis2 地址:http://axis.apache.org/axis2/java/core/download.html2.配置环境变量这个不说了很简单3.进入axis2的bin目录运行一下命令wsdl2java.bat -uri wsdl地址 -p 包名 -o 生成文件地址我只是生成了客户端代码,服务端没有生成过,不过想来都是一样介绍很简单,只是方便自己查询,希望可以帮到大家原文链接:https://blog.youkuaiyun.com/qq_33111817/...转载 2021-06-18 07:51:43 · 421 阅读 · 0 评论 -
java使用CXF调用webservice(生成客户端代码方式)
本文介绍“插件生成” 和“脚本”两种方式 准备工作:1、下载:axis2-1.7.4-bin.zip,axis2-1.7.4-war.zip 下载地址:http://axis.apache.org/axis2/java/core/ 2、环境变量设置 AXIS2_HOME E:\axis2-1.7.4-bin\axis2-1.7.4 JAVA_HOME C:\Program Files\Java\jdk1.6.0_21 3、axis2-1.7.4-war.zip解压,将压缩包内的axis2.war部署..转载 2021-06-18 07:21:31 · 1325 阅读 · 1 评论 -
Java 内省(Introspector)深入理解
一些概念: 内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法。 JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Object),或“VO”。方法比较少。这些信息储存在类的私有变量中,通过set()、get()获得。 例如类UserInfo :? 1...转载 2021-06-17 21:41:19 · 480 阅读 · 0 评论
分享