自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

为梦想加油!!!

人所有的痛苦都来源于对自己无能的愤怒

  • 博客(31)
  • 收藏
  • 关注

转载 java byte[]和base64互相转换

1.方式一import java.io.UnsupportedEncodingException;import java.util.Base64;// byte[]转base64String base64Str = Base64.getEncoder().encodeToString(byteArray);// base64转byte[]byte [] byteArray = Base64.getDecoder().decode(base64Str);说明:使用jdk自带的Base64.

2021-03-16 19:44:38 15171 3

转载 nginx配置location

指令作用匹配指定的请求uri(请求uri不包含查询字符串,如http://localhost:8080/test?id=10,请求uri是/test)语法形式location [ = | ~ | ~* | ^~ | @] /uri/ { configuration }匹配模式及顺序匹配字符串分为两种:普通字符串(literal string)和正则表达式(regular expression),其中 ~ 和 ~* 用于正则表达式, 其他前缀和无任何前缀都用于普通字符串。匹配顺序是

2020-09-25 17:12:32 385

原创 Java核心技术Ι(2)——并发之同步

基本概念    在大多数实际的多线程应用中, 两个或两个以上的线程需要共享对同一数据的存取。如果两个线程存取相同的对象,并且每个线程都调用了一个修改该对象状态的方法,这样线程之间就会相互影响。根据各线程访问数据的次序,可能会产生讹误的对象,这样的情况通常称为竞争条件(race condition)。为了避免多线程引起的对共享数据的说误,必须学习如何同步存取。...

2020-05-24 11:50:26 485

转载 深入理解Java try-with-resource

子曾经曰过:所有的炒冷饭都是温故而知新。背景众所周知,所有被打开的系统资源,比如流、文件或者Socket连接等,都需要被开发者手动关闭,否则随着程序的不断运行,资源泄露将会累积成重大的生产事故。在Java的江湖中,存在着一种名为finally的功夫,它可以保证当你习武走火入魔之时,还可以做一些自救的操作。在远古时代,处理资源关闭的代码通常写在finally块中。然而,如果你同时打开了多个...

2020-05-07 23:02:38 191

原创 Java基础填坑日志(2)——Thread.join()方法使用分析

前言在学习java中的并发的时候,很容易注意到一个函数join,此函数的功能是等待指定的线程死亡或者经过指定的毫秒数,如果不指定毫秒数或者指定的毫秒数为空,则一直等待直到指定的线程死亡。JDK源码如下:/** * Waits at most {@code millis} milliseconds for this thread to * die. A timeout of {@code 0...

2020-05-05 21:01:02 297 1

原创 Java核心技术Ι(1)——并发之线程

大家应该都很熟悉操作系统中的多任务:在同一时刻运行多个线程的能力。今天人们大多拥有单台拥有多个CPU的计算机,但是,并发执行的线程数目并不是由CPU数目制约的。操作系统将CPU的时间片分配给每一个进程,给人并行处理的感觉。...

2020-05-03 18:31:36 260

原创 Spring填坑日志(1)——Jackson序列化报错HttpMessageNotWritableException

问题描述今天编码的时候遇到一个报错:org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: No serializer found for class XXX and no properties discovered to create BeanSerializer (...

2020-04-23 20:12:59 976

原创 ThreadPoolExecutor填坑日志(1)——newFixedThreadPool(1)与newSingleThreadPool()的区别

两种工厂方法区别ThreadPoolExecutor是Executors类的底层实现,在JDK帮助文档中,有如此一段话:“强烈建议程序员使用较为方便的 Executors 工厂方法 Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收)、Executors.newFixedThreadPool(int)(固定大小线程池)和Executors.newSi...

2020-03-28 22:50:12 2729

原创 《领域驱动设计精简版》读书笔记(4)——保持模型一致性

保持模型一致性当遇到需要若干个团队通力配合的大型项目,我们应该做的是有意识地将大模型分解成数个较小的部分。只要遵守相绑定的契约,整合得好的小模型会越来越有独立性。每个模型都应该有一个清晰的边界,模型之间的关系也应该被精确地定义。有一整套技术可以保证模型的完整性:界定上下文定义模型的范围,画出它的上下文的边界,然后尽最大可能保持模型的一致性。要在模型涵盖整个企业项目时保持它的纯洁是很困难的,...

2020-03-17 23:26:42 595

原创 《领域驱动设计精简版》读书笔记(3)——面向深层理解的重构

持续重构重构是不改变应用行为而重新设计代码以让它更好的过程,重构通常是非常谨慎的,按照小幅可控的步骤进行,以确保不破坏原有的功能和引入某些缺陷,通过自动化测试可以有效保障重构的代码质量。基于某些重构模式的自动化重构工具可以让重构变得更加容易。还有另一种类型的重构,跟领域和它的模型相关,有时我们会对领域有新的理解,这让有些事物变得更清晰,或者两个元素间的关系被发现。所有的这些会通过重构被包括到设计...

2020-03-08 16:15:16 168

原创 《领域驱动设计精简版》读书笔记(2)——模型驱动设计

基本概念通用语言应该在建模过程中广泛尝试以推动软件专家和领域专家之间的沟通,以及发现要在模型中使用的主要的领域概念。建模过程的目的是创建一个优良的模型,下一步是将模型实现成代码。这是软件开发过程中同等重要的两个阶段。某些特殊的领域(例如数学)可以借助过程化编程被轻易地建模和实现,是因为许多数学理论大多数都是关于计算的,可以用函数调用和数据结构简单解决。许多复杂的领域不仅是一组抽象概念涉及...

2020-03-07 23:52:15 237

原创 《领域驱动设计精简版》读书笔记(1)——何为领域驱动设计

基本概念为了创造一个好软件,你必须知道这个软件究竟是什么。在你充分了解金融业务是什么之前,你是做不出一个好的银行业系统的,你必须理解银行业的领域。让软件和领域和谐相处的最佳方式是让软件成为领域的映射,软件需要具现领域里重要的核心概念和元素,并精确实现它们之间的关系。软件需要对领域进行建模。一幅图能够描绘和传达一个模型,同样,经过精心编写的代码和一段英语句子都能达到这个目的。模型是软件设计中最基...

2020-02-27 20:53:54 310

原创 Git使用(1)——版本回退与代码合并

一、版本回退使用git版本管理工具的好处之一时,您可以随时回退到以前的版本中,不用担心操作错误或误删文件。 回退操作需要使用git命令,以下是部分操作的代码。(git默认的是版本只升不降,所谓版本回退其实是用原来的版本直接覆盖当前版本的代码,从而生成一个和历史版本代码相同的新版本)回退整套代码到最近一次提后的状态git reset --hard HEAD参数 --hard 表示删除自该次提...

2019-11-25 08:55:30 780

原创 Https基础填坑日志(1)——unable to find valid certification path to requested target

问题描述上周在项目过程中,在和外系统联调的时候突然报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: u...

2019-10-21 22:34:58 476

原创 Java基础填坑日志(1)——移位运算符

问题描述最近在学习神书《Java编程思想》(第4版),在学习到第三章移位运算符的时候,讲解里面有这么一段话,没怎么能看懂:Java 也添加了一种“无符号”右移位运算符( >>>), 它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是 C 或 C++没有的。若对 char,byte 或者 short 进行移位处理,那么在移位进行之前,它们会自动转换成一个 int。只有...

2019-07-04 23:59:34 332

原创 Mybatis填坑日志(1)——batchUpdate与update使用区别

问题描述今天使用Mybatis做批量插入的时候,程序一直报错:…There is no getter for property named ‘list’ in ‘class com.XXX.XXX.XXX.AccountInfo’…程序中AccountManageDao.java文件内容如下:public batchUpdateStatus(List<AccountInfo&gt...

2019-06-13 22:55:59 4923

原创 Spring Cloud填坑日志(4)——Eureka的多网卡环境下的IP选择“无效”

问题描述&nbsp;&nbsp;&nbsp;&nbsp;最近在学习Eureka的多网卡环境下IP选择的时候,发现手动指定IP一直无效,相关配置如下:eureka: instance: prefer-ip-address: true ip-address: 192.168.232.34 status-page-url: http://${spring.cloud.cl...

2019-03-04 21:27:14 1602 1

原创 Spring Cloud填坑日志(3)——Spring Boot Actuator的/pause端点使用

背景&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;最近在学习周立大神的《Spring Cloud与Docker微服务架构实战》,在翻阅Eureka的健康检查这一部分的时候,发现有一个小备注:当eureka.client.healthcheck.enabled=true时,/pause端点(该端点由Spring Boot Actuator提供,用于暂停应用)无法正常工作,经笔者测试,发现当...

2019-02-28 22:40:17 2378

原创 git填坑日志(2)——git stash与git commit的区别

问题的出现&nbsp;&nbsp;&nbsp;&nbsp;写这篇文章的缘由是在工作中初次使用Git的时候遇到了一个奇怪的现象,即每次提交代码的时候,如果没有及时拉取代码就会导致本地库的代码不是最新的,这样自己修改代码之后想要push到远程仓库的时候就会遭到拒绝,每次被拒绝以后我会先拉取代码,然后再继续push,这样可以成功提交代码,可是会产生两个提交对象,一个是我改动产生的提交对象(这个是应该有...

2019-02-16 19:05:14 6499 2

原创 git填坑日志(1)——git clone --recursive克隆包括子模块的项目报错

问题描述这个问题出现的情况是,子模块的url使用http方式获取的情况下,在clone项目的时候,使用–recursive参数初始化子模块或者git submodule update的时候会直接出现以下报错:bash: /dev/tty: No such device or address出现原因百度了很久,没有看到类似的问题,最后在github上找到了一个issue让我了解了这个问题出...

2019-01-04 22:04:26 16871

原创 Spring Cloud填坑日志(2)——多个Eureka Server节点启动报错

问题描述:建立了一个microservice-discovery-eureka-ha的项目,实现Eureka运行多个实例并相互注册的方式实现高可用部署,配置文件application.yml配置如下:spring: application: name: microservice-discovery-eureka-ha---spring: # 指定profile=peer1...

2018-12-11 23:48:10 3626 1

原创 Spring Cloud填坑日志(1)——在命令行使用mvn显示不是内部命令

问题:安装maven后在命令行使用mvn显示不是内部命令在STS工具中添加spring-boot的maven插件一直报错问题出现原因:在https://maven.apache.org/download.cgi下载maven的时候,安装包下载错了,正确的安装包如下(带有bin后缀):正确安装包的目录结构如下:.├── boot├── lib├── LICENSE├── N...

2018-12-11 09:48:15 230

原创 最新版hexo+github搭建个人博客

从学生时代开始就有做笔记和总结的习惯,以前的笔记都是在本子上,经常不知不觉就做了很多笔记,每次回头看到那么多工整漂亮(嗯,就是自恋&amp;gt;o&amp;lt;)的笔记成就感就油然而生。现在已经是信息时代了,购物也从线下搬到线上,想必笔记也应该如此。俗话说,“好记性不如烂笔头”,希望自己搭建的这个博客能够成为自己以后的笔记本。本人博客预览:cloudyunfan@github.io搭建环境:Windows...

2018-11-27 20:59:05 1683

原创 jQuery中eq(n)与nth-child(n)的区别

前言使用和学习前端的时候想使用过滤器查找想要的DOM元素,结果发现使用:nth-child(n)的时候踩了坑,主要就是混淆了:eq(n)和:nth-child(n)两者区别:nth-child(n)是在匹配元素的父元素中选择第n个元素,n自1开始,然后判断是否符合选择器条件,而 :eq(n)是在匹配的元素中取下标为n的元素,n自0开始。举例说明test.html&lt;!DOCTYPE&gt;&...

2018-06-28 11:35:06 606

原创 电脑的硬盘启动项从固态硬盘变成了机械硬盘

早上一起来,发现用了很久的win10系统居然变成了几年前的win8,桌面上还有很久以前的文件资料,晕死~~后来发现是BIOS启动项的锅,下面说说怎么解决:1. 系统中设置win+r,msconfig中点击确定以后(一定每次都要点击一下)就可以进入BIOS啦2. 重启,按F2或F8或F12进入BIOS设置固态硬盘为优先启动(通过+和-设置优先级)...

2018-05-22 22:28:37 9667

原创 leetcode-Valid Number

Valid Number题目:Validate if a given string is numeric.Some examples: –“0” => true –” 0.1 ” => true –“abc” => false –“1 a” => false –“2e10” => true思路:有限状态机:清晰明了,网上资料较多,比较难以想到if-else,比较难理清楚多种情况,

2016-08-24 16:03:50 282

原创 leetcode - Reverse Linked List

Reverse Linked List I思路:题目中有提示两种思路:迭代和递归。迭代的思路比较简单,可以直接在原链表上面操作,定义三个指针分布指向链表的相邻的三个节点,最后三个指针都从头开始顺序往下滑动,直到最后一个指针最先滑动到NULL为止。在滑动过程中不断地把中间节点的next指针指向pre(第一个指针);递归的思路更加直观,不过运行速度会比较慢。因为增加了函数调用和比较的过程。假设头节点的下

2016-07-24 16:10:57 204

原创 leetcode-Set Matrix Zeroes

leetcode-Set Matrix Zeroes题目:给定一个m*n的矩阵,将含有0的元素的那一行和列都置0注意点: - 本题的时间复杂度很难降低,因为矩阵必须要遍历一遍,所以时间复杂度是O(mn) - 可以考虑空间复杂度的降低,即用最少的存储空间实现题意 - 参考了一些其他人的思路,觉得降低空间复杂度的最好方法就是把遇到的每一个0都放到其对应的行的第一列,以及其列的第一行(也就是把所有要

2016-07-06 22:57:11 288

原创 2016年趋势科技夏令营面试题目

趋势的一面题:这次面试面了一个半小时,时间好长。。。主要还是根据简历问问题,其实要是自己懂得多应该多说一些,可以让面试官往你会的方向问主要题目:1. C++和C语言的区别2. C++中类模板的作用,和动态性的关系(这个没有弄太懂),类模板中默认参数的意义3. SQL中的索引如何建立,怎么实现快速查找4. 常用什么浏览器?chrome浏览器是多线程还是多进程(任务管理器)

2016-05-09 22:53:44 1450

原创 leetcode-Remove Duplicates from Sorted List

Remove Duplicates from Sorted List思路:由于重复的数值是有序的,所以每一次只要和当前节点的数值比较,如果一样的就跳过,当前节点的next指针指向被比较节点的下一个节点,如果不一样,那么本节点就作为当前节点,进行下一轮比较。代码:ListNode* deleteDuplicates(ListNode* head) { if(he

2016-05-04 21:22:52 360

原创 leetcode-Sqrt(x)与Bad version

Sqrt(x) vs First bad version1. Sqrt(x)题目:Implement int sqrt(int x).思路:看到这道题目首先注意到返回的值都是整型变量。那么当x小于第一个i^2(i>=2)的时候,sqrt(x)的值都是i-1,于是题目就转换成为求第一个x/i^2==0的i的问题。我们可以用暴力搜索,直接遍历i,但是这样会造成TEL。所以我们可以使用二

2016-04-29 08:00:46 375

空空如也

空空如也

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

TA关注的人

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