自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

XSemperFI的博客

Code&Life

  • 博客(77)
  • 资源 (2)
  • 收藏
  • 关注

原创 获取sambaNTPassword

获取sambaNTPassword

2022-03-17 22:18:38 828

翻译 Java 17 新特性

如果您想比较不同版本的 Java API,有一个很棒的工具Java Version Almanac。我们跳过中间的版本直接对比Java8和Java17和我们开发有关的差异。Java 17 特性1. Java 17 与 Java 8:变化2. 扩展switch表达式2. 实例匹配3. 密封类(Sealed Classes)4. 文本块5. 新的 Optional.orElseThrow() 方法6. 其他小而精的 API 更改7. 垃圾收集器8. 容器意识9. CDS档案10. Java Flight.

2021-11-25 12:57:02 8579

原创 @Transactional事务失效

除非特殊配置(比如使用 AspectJ 静态织入实现 AOP),否则只有定义在 public 方法上的 @Transactional 才能生效。因为Spring 默认通过动态代理的方式实现 AOP,对目标方法进行增强,private 方法无法代理到,Spring 自然也无法动态增强事务处理逻辑。必须通过代理过的类从外部调用目标方法才能生效。Spring 通过 AOP 技术对方法进行增强,要调用增强过的方法必然是调用代理后的对象。因为this 指针代表对象自己,Spring 不可能注入 this,所..

2021-11-19 20:44:14 707

原创 Java并发编程 —— Immutability模式

Java并发编程(23)—— Immutability模式:如何利用不变性解决并发问题?1. 快速实现具备不可变性的类2. 利用享元模式避免创建重复对象3. 使用 Immutability 模式的注意事项4. 总结5. 课后思考解决并发问题,其实最简单的办法就是让共享变量只有读操作,而没有写操作。这个办法如此重要,以至于被上升到了一种解决并发问题的设计模式:不变性(Immutability)模式。所谓不变性,简单来讲,就是对象一旦被创建之后,状态就不再发生变化。换句话说,就是变量一旦被赋值,就不允许修改

2021-08-08 10:09:33 401

原创 Spring使用LdapTemplate进行LDAP操作

这里写目录标题LDAP基本概念示例代码常见问题1. LDAP基本概念2. 示例代码3. 常见问题3.1 ObjectSid,objectGUID乱码3.2 Java采用SSL连接AD域连接出错问题simple bind failed:IP:PORT解决方案3.3 添加,修改数组类型的AD属性3.4 javax.naming.CommunicationException:simple bind faild3.5 Spring's LdapTemplate search: PartialResultExcept

2021-08-01 08:47:34 6848

翻译 Java Streams 中的异常处理

https://dzone.com/articles/exception-handling-in-java-streamsStream API 和 lambda 是自第 8 版以来 Java 中的重大改进。从那时起,我们可以使用更具功能性的语法样式。现在,在使用这些代码结构几年后,仍然存在的较大问题之一是如何处理 lambda 中的已检查异常。众所周知,不可能直接从 lambda 调用抛出已检查异常的方法。在某种程度上,我们需要捕获异常以使代码编译。自然,我们可以在 lambda 中执行一个简单的 .

2021-07-31 10:46:09 2576

转载 一切从FP(Functional Programming)开始

一切从Functional Programming开始1. 一切从FP开始2. 什么是FP?2.1. 命令式 / 函数式2.2. 函数式特性2.2.1. 闭包2.2.2. 高阶函数2.2.3. 元组2.2.4. 柯里化2.3.1. 副作用2.3.2. 引用透明2.3.3. 纯/逆/偏/全函数2.3.4. Monad3. 总结3.1. 函数式的优势3.2. Java中的方法3.3. 如何处理副作用?转载:https://silentbalanceyh.gitbooks.io/vert-x/content/

2021-07-29 22:14:14 647

原创 Linux使用samba控制Active Directory指定uid

Linux使用samba控制Active Directory指定uid,gid,primaryGroup1. ID映射问题2. 两种策略3. samba配置指定uid和gid4. Linux与AD域Group同步1. ID映射问题Linux 和 Windows 在内部都不是根据用户名来引用用户的,而是使用唯一的内部标识符。Windows 使用安全标识符(即 SID),它能够唯一标识 Windows 域中的每个用户,其结构长度可以变化。SID 也包含唯一域标识符,以便 Windows 区别不同域中的用户。

2021-07-25 15:25:42 1056

原创 Mybatis返回类型Map<String,String>时查询返回正常,获取值时类型转换异常

1. 问题由来2. 设置3. 解决方案1. 问题由来当resultType若为Map时,若定义了Map的泛型为String,但是数据库返回字段在库中为Number,那么就会发现虽然Map中有值,但是其类型为Integer,泛型并没有起作用。因为Java语言的泛型采用的是擦除法实现的伪泛型,泛型信息(类型变量、参数化类型)编译之后通通被除掉了。当resultMap中指定的JavaType是java.util.map,此处只指定类类型,而没指定泛型。而Map<String,String>和.

2021-07-25 14:29:46 7202 2

原创 如何减少上下文切换

减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。·无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。·CAS算法。Java的Atomic包使用CAS算法来更新数据,而不需要加锁。·使用最少线程。避免创建不需要的线程,比如任务很少,但是创建了很多线程来处理,这样会造成大量线程都处于等待状态。·协程:在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。

2021-05-14 13:50:20 485

转载 视频是如何智能去水印的?从数学建模到工程实现

转载:https://zhuanlan.zhihu.com/p/32852564大部分时候,为了表明作品来源,我们需要对拍摄制作的图片或者视频加上水印logo。不过,我们有时候也需要对视频已经加上的水印进行移除处理,然后加上新的水印。加水印的自动处理是很容易实现的,而检测并去除水印的自动处理就有相当的挑战性了。问题已经抛出,类似网易云信的分布式视频处理系统于近期发布的支持「视频自动去水印」的转码功能,我们是怎么自动化、智能化地解决这一问题的呢?其实很简单,它总共分三步:分析并检测出视频所有水印的.

2021-03-02 21:33:00 1089 1

原创 Spring Ioc

在面向对象的编程中,有几种基本技术可以实现控制反转。这些是:使用工厂模式使用服务定位器模式使用以下任何给定类型的依赖项注入:构造函数注入setter注射接口注入Spring的控制反转在org.springframework.beans和org.springframework.context软件包提供了对Spring框架的IoC容器的基础。该BeanFactory接口提供了...

2021-02-28 22:06:59 112

原创 Redis数据备份

Redis数据备份1. redis.conf设置2. 数据备份方案3. 数据恢复方案1. redis.conf设置save <seconds> <changes>save 60 10000如果能容忍丢失1min之内的数据,那么尽量设置第一个参数为你的容忍时间。一定要打开AOFappendonly yes2. 数据备份方案写crontab定时调度脚本去做数据备份每小时都copy一份rdb的备份,保留近一个月的备份每次copy备份完,删除太旧的备份每天晚上将当前服

2021-02-28 21:02:52 266

原创 修改Nacos源码使其支持Postgresql

1. 修改配置文件\resources\application.properties#*************** Config Module Related Configurations ***************#### If use MySQL as datasource:spring.datasource.platform=postgresql### Count of DB:db.num=1### Connect URL of DB:db.url.0=jdbc:postgres

2021-01-15 20:57:39 1535 9

原创 一文读懂Java函数式编程

一文读懂Java函数式编程1. 什么是函数式编程Functional Programming1.1 函数是"第一等公民"1.2 闭包和高阶函数1.3 不改变状态(引用透明)1.4 递归(使用参数保存状态,而非变量)1.5 只用"表达式",不用"语句",没有副作用1.5.1 什么是副作用二级目录三级目录函数式编程中没有赋值语句,因此变量一旦有了值就不会再改变。更通俗的讲,函数式编程不修改变量,这样消除了bug的一个主要来源,也使得执行顺序变得无关紧要。这意味着状态不能保存在变量中——即程序是“引用透明”的

2021-01-10 12:09:08 363

转载 Spring Boot 配置文件放在 jar 外部

Spring Boot 配置文件放在 jar 外部通过命令行指定外置配置文件自定义配置文件按Profile不同环境读取不同配置Spring Boot程序默认从application.properties或者application.yaml读取配置,如何将配置信息外置,方便配置呢?查询官网,可以得到下面的几种方案:通过命令行指定SpringApplication会默认将命令行选项参数转换为配置信息例如,启动时命令参数指定:java -jar myproject.jar --server.port

2020-08-28 10:59:56 150

原创 windows下Docker安装MySQL

docker常用命令1. docker images // 查看镜像2. docker run 镜像名称 // 生成一个正在运行的容器实例3. docker stop 容器名称 // 停止容器4. docker rm 容器名称 // 删除容器5. docker start 容器名称 // 启动容器6. docker restart 容器名称 //重启容器7. docker rmi 镜像名称 // 删除镜像8. docker exec -it 容器名称 /bin/bash /

2020-08-27 09:12:57 178

原创 【RPC】02 —— RPC基础:协议

【RPC】02 ——协议一级目录二级目录三级目录一级目录二级目录三级目录

2020-08-16 18:19:35 199

转载 synchronized和Lock的区别

1、区别:1)Lock是一个接口,synchronized是Java中的关键字,synchronized是内置的语言实现;2)synchronized发生异常时,会自动释放线程占用的锁,故不会发生死锁现象。Lock发生异常,若没有主动释放,极有可能造成死锁,故需要在finally中调用unLock方法释放锁;3)Lock可以让等待锁的线程响应中断,使用synchronized只会让等待的线程一直等待下去,不能响应中断4)通过Lock可以知道有没有成功获取到锁,synchronized就不行5)Lo

2020-08-14 18:34:32 1204 1

转载 Elasticsearch 与倒排索引

Elasticsearch 与倒排索引1. 正排索引:2. 倒排索引:3. 参考文档在搜索引擎中,数据被爬取后,就会建立index,方便检索。在工作中经常会听到有人问,你这个index是正排的还是倒排的?那么什么是正排呢?什么又是倒排呢?下面是一些简单的介绍。网页A中的内容片段:Tom is a boy.Tom is a student too.网页B中的内容片段:Jon works at schoolTom’s teacher is Jon.1. 正排索引:正排索引是指文档ID为key

2020-08-09 22:51:36 117

原创 【RPC】01 —— 什么是RPC

@[TOC](RPC (01) —— 什么是RPC)1. 什么是RPC?RPC(remote procedure call,远程过程调用),二级目录三级目录

2020-08-09 14:11:22 235

原创 Tomcat(01)—— 基础

Tomcat(01)—— 基础1. 什么是web容器2. Tomcat在一次请求中做了什么3. HTTP 请求响应实例4. tomcat与Session 创建存储Cookie 和 Sessionsession创建1. 什么是web容器早期的 Web 应用主要用于浏览新闻等静态页面,HTTP 服务器(比如 Apache、Nginx)向浏览器返回静态 HTML,浏览器负责解析 HTML,将结果呈现给用户。随着互联网的发展,我们已经不满足于仅仅浏览静态页面,还希望通过一些交互操作,来获取动态结果,因此也就需要

2020-08-02 14:16:02 139

原创 Java并发编程(03)——原子性问题

Java并发编程(03)——原子性问题一级目录二级目录三级目录一个或者多个操作在 CPU 执行的过程中不被中断的特性,称为“原子性”。原子性问题的源头是线程切换,如果能够禁用线程切换那不就能解决这个问题了吗?而操作系统做线程切换是依赖 CPU 中断的,所以禁止 CPU 发生中断就能够禁止线程切换。“同一时刻只有一个线程执行”这个条件非常重要,我们称之为互斥。如果我们能够保证对共享变量的修改是互斥的,那么,无论是单核 CPU 还是多核 CPU,就都能保证原子性了。一级目录二级目录三级目录...

2020-08-01 11:42:08 329

原创 Java并发编程(02 下)——细说可见性问题

Java并发编程(02 下)——细说可见性问题1. volatile的定义与实现原理1.1volatile是如何来保证可见性的呢1.2 volatile的实现2.volatile的使用优化前文说到,为了平衡CPU和内存之间的速度差异而增加了缓存,在多核场景下CPU操作完不知道何时会写到内存从而引出了可见性的问题。在Java1.5版本里使用happens-before规则对volatile语义进行了增强,进一步保证了可见性。1. volatile的定义与实现原理Java编程语言允许线程访问共享变量,为

2020-08-01 11:01:28 187

翻译 【leetcode】283. Move Zeroes

THE EASIEST but UNUSUAL snowball JAVA solution BEATS 100% (O(n)) + clear explanation让我们以我们的示例为例:第一步-我们达到0。好吧,请记住,现在我们的雪球大小为1。进一步。下一步-我们遇到1.将雪球的最左0与元素1交换。下一步-我们再次遇到0!我们的球变大了,现在它的大小= 2。下一步-3.再次用最左边的零交换。看起来我们的零点一直在滚动下一步-12.再次交换:我们完成了!恭喜你!.

2020-07-31 00:14:44 83

原创 Java并发编程(02 上)——Java 内存模型

Java并发编程(02)——如何解决可见性和有序性Java 内存模型volatile三级目录Java 内存模型导致可见性的原因是缓存,导致有序性的原因是编译优化,那解决可见性、有序性最直接的办法就是禁用缓存和编译优化,当然我们不能这么搞。合理的方案应该是按需禁用缓存以及编译优化。Java 内存模型规范了 JVM 如何提供按需禁用缓存和编译优化的方法。具体来说,这些方法包括 volatile、synchronized 和 final 三个关键字,以及六项 Happens-Before 规则volati

2020-07-26 14:37:09 114

原创 Java并发编程(01) —— 并发问题从何而来

@[TOC](Java并发编程(01) —— 并发问题从何而来)一级目录在计算机存储结构中, CPU、内存、I/O 设备三者的速度差异简直是“天上一天地下一年”,为了提高CPU的性能减少执行等待时间,平衡三者的速度差异。我们引入了一些技术来改善这三者的差异,但又引入了新的问题——并发问题CPU 增加了缓存,以均衡与内存的速度差异 —— 可见性问题操作系统增加了进程、线程,以分时复用 CPU(线程切换),进而均衡 CPU 与 I/O 设备的速度差异 —— 原子性问题编译程序优化指令执行次序,使得

2020-07-19 11:39:38 173

转载 [ERROR] 不再支持源选项 1.5。请使用 1.6 或更高版本

[INFO] -------------------------------------------------------------[ERROR] COMPILATION ERROR :[INFO] -------------------------------------------------------------[ERROR] 不再支持源选项 1.5。请使用 1.6 或更高版本。[ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。[INFO] 2 errors[IN

2020-06-27 12:11:05 532

转载 [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platfor

Maven 打包时有标题中警告,需要在pom.xml文件中添加<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

2020-06-27 10:37:29 152

转载 Windows 下 Git SSH 连接方式配置 Socks 代理

Windows 下 Git SSH 连接方式配置 Socks 代理文章作者: upupming文章链接: https://upupming.site/2019/05/09/git-ssh-socks-proxy/最近从 GitHub clone 仓库速度极慢,遂查阅资料解决之。本文主要介绍 Git 使用 SSH 克隆时如何走 Socks 代理,因为使用 HTTPS 克隆的话目前基本上很容易找到资料,比如 Using a socks proxy with git for the http trans

2020-06-17 21:28:57 1485

原创 SQL指定去重某几个字段并返回所有值

SELECT * FROM tableNameWHEREid IN ( SELECT id FROM tableName GROUP BY column1, column2,column3);

2020-06-02 00:13:16 866

原创 这可能是最全的单例模式了

设计模式之——单例模式单例的几种实现1. 懒汉单例模式2. synchronized 修饰的懒汉单例模式3. 双重检查锁定的单例模式4. 静态内部类实现单例模式5. 饿汉实现单例模式6. 饿汉变种实现单例模式7. 枚举实现单例模式static修饰下是怎么做到线程安全的?完全不使用synchronized实现单例模式1. CAS(AtomicReference)实现单例模式2. ThreadLocal实现单例模式如何破坏单例如何防止单例被破坏参考文章单例模式有以下特点:  1、单例类只能有一个实例。 

2020-05-10 12:36:34 340 1

原创 基本数据类型与包装类型

基本数据类型与包装类型很多情况下基本类型要优于包装类型使用包装类的场景有Java中有两种数据类型,基本数据类型(Primitive type)和引用类型(Reference type)。基本数据类型如boolean,int等。引用类型如List,String等。每一种基本类型都有对应的包装类型(Wrapper classes),如int对应的是Integer。很多情况下基本类型要优于包装类型在Java1.5以及之后的版本中增加了自动装箱和拆箱的特性。但不恰当的使用基本类型和包装类型,可能带来大量

2020-05-08 23:37:13 409

原创 基础排序算法——归并排序

归并排序算法思想算法思想把数组从中间划分成两个子数组,一直递归的把子数组划分成更小的子数组,直到子数组里面只有一个元素。依次按照递归的返回顺序,不断地合并排好序的子数组,直到最后把整个数组的顺序排好。...

2020-04-09 22:35:15 185

原创 基础排序算法——冒泡排序

冒泡排序1 算法思想2 代码实现3 算法分析1 算法思想每一轮,从数组的头部开始,每两个元素比较大小并进行交换。直到这一轮当中最大或者最小的元素被放置在数组的尾部。然后不断的重复这个过程,直到所有元素都排好位置。2 代码实现public class BubbleSort { public static void main(String[] args) { int[...

2020-04-08 22:27:02 164

转载 Java的回调-由浅入深(保证简单易懂)

转载请注意文章出处:https://blog.csdn.net/fengye454545/article/details/80198446看了看网上的回调解释和例子,都那么的绕口,得看半天才能绕回来,其实吧,回调是个很简单的机制。在这里我用简单的语言先来解释一下:假设有两个类,分别是A和B,在A中有一个方法a(),B中有一个方法b();在A里面调用B中的方法b(),而方法b()中调用了方法a...

2020-04-01 20:10:49 186

原创 责任链模式——消除大量的 else if

设计模式的使用是将元数据从逻辑代码中剥离出来,避免因元数据(Metadata)变化导致修改程序。程序本身只是逻辑的集合,而元数据(辅助程序行为,诸如语言包文件)应集中在配置文件里;待处理的数据来自外部输入(用户输入、本地文件、数据库等)责任链模式属于行为模式中的一种,特别关注对象之间的通信。主要解决职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求...

2020-03-29 15:21:19 1447

原创 SPI与ServiceLoader

ServiceLoader与ClassLoader是Java中2个即相互区别又相互联系的加载器.JVM利用ClassLoader将类载入内存,而ServiceLoader是一个简单的服务提供者加载器,服务的对象是接口和类(通常为抽象类)集合,其也是SPI的灵魂,SPI英文为Service Provider Interface单从字面可以理解为Service提供者接口,正如从SPI的名字去理解SP...

2020-03-29 09:07:25 204

转载 Kafka 入门介绍

原文链接作者:大馋愚链接:https://www.jianshu.com/p/2e498b5350b5Kafka 入门介绍1. 名词解释2. Kafka架构3. kafka的存储4. Partition的数据文件Partition设置:5. Consumers分组1. 名词解释Broker:Kafka集群包含一个或多个服务器,这种服务器被称为brokerTopic:每条发布到Ka...

2020-03-10 22:22:13 183

原创 静态代理,JDK 动态代理,CGLIB 动态代理都是些什么鬼?

代理模式(静态代理)代理类为被代理类预处理消息、过滤消息并在此之后将消息转发给被代理类,之后还能进行消息的后置处理。代理类和被代理类通常会存在关联关系(代理类持有的被代理对象的引用 private RealImage realImage;),代理类本身不实现服务,而是通过调用被代理类中的方法来提供服务。创建一个接口(Image),然后创建被代理的类(RealImage)实现该接口并且实现该接...

2020-03-09 22:28:00 143

nacos_postgre.sql

nacos_postgre.sql

2021-01-15

JVM知识导图.xmind

JVM知识导图.xmind, 待完善。初步涵盖了大多数JVM知识,后续再完善。如想学习请上极客学习JVM相关课程

2020-08-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除