自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 Spring Boot MongoDB @Indexed 未创建索引

在Spring Boot项目中使用 MongoDB ,Order类中的orderId添加@Indexed后在MongoDB中未创建索引,原因是配置中的auto-index-creation未设置为true。@Document(collection = "order")public class Order { @Id private String id; @Indexed(unique = true) private String orderId; priva

2022-04-21 21:05:16 4131

原创 密码生成小思路

问题常见问题:密码多不好记忆。密码强度不够高。123456abc和3d8af56,谁看起来更复杂。账号多。人们往往有很多账号,就会有许多密码。注册新的账号时,也需要密码。人们往往使用的密码就那么几个,密码多了不好记忆。把这些密码记录到一个文件中是可行的,但如果在忘记密码的时候不能读到这个文件就很尴尬,而且这个文件放在网盘等网络存储媒介上也让人不是那么放心(当然你可以把文件加密后在放到网盘上)。现在的账号通常是手机和邮箱,这些是好记忆的。那能不能通过这些账号来生成对应的唯一密码呢?思路单纯

2022-01-28 10:15:30 2589

原创 通过Objects.equals避免NPE

参考:《新版Java开发手册》提到的三目运算符的空指针问题到底是个怎么回事?Integer a = null;boolean b1 = a == 1;// 报NPE, 原因:a要拆箱,即调用a.intValue()与1比较,这时a为null报NPEboolean b2 = a == (Object) 1;// false, 把1装箱,即从int变成Integer,a==(Object)1 ==> null==(Integer)1,不会报NPEboolean b3 = (Object) a =

2021-11-17 11:04:15 638

原创 使用restTemplate.getForEntity接口调用返回慢

restTemplate.getForEntity慢极大可能是序列化的方面的问题。采用FastJSON直接将restTemplate.getForEntity转换为JsonObject进行接口调用的返回,速度显著提示“====================”紧接着在“uri: http://localhost:8080/platform/api/order/full/17001”的后面被打印出来,说明restTemplate.getForEntity是不慢的用FastJSON中的JSON.to

2021-05-02 23:58:11 5775

原创 Spring Cache(Redis)学习

使用Spring Cache。Cache配置类,@EnableConfigurationProperties(RedisProperties.class)@EnableCaching@Configurationpublic class CacheConfiguration { @Bean RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) { RedisC

2021-04-23 21:57:49 71

原创 Spring Security小记

两个configure方法在哪被调用我们在编写Spring Security时配置类时,继承WebSecurityConfigurerAdapter,重写下面两个方法。重写的两个方法在哪被调用了?我觉得init(final WebSecurity web)一定会被调用,我没有深入。以init方法调用下去,最终调用到了下面两个重写的方法。 @Override protected void configure(AuthenticationManagerBuilder auth) thro

2021-04-21 14:24:32 95

原创 外键关系小记

一对多时使用RESTRICT一对一时使用CASCADE特例:订单表和订单详情表是“一对一”关系多个订单详情对应一个订单创建订单时,向数据库写入一个订单,和多个订单详情。后面再创建订单时,订单详情表中已有的数据不会和这个新创建的订单有关系,新的订单详情数据有自己唯一对应的订单,不会和已有的订单表中的数据有关系。...

2021-04-17 12:43:47 300

原创 内存地址小思

64位最大支持16EB内存,32位最大支持4GB内存。假设电脑有16GB内存,对每个Byte编号,从0开始编号,会产生2^34个编号,每个编号表示成16进制,至少需要9位16进制数例子: 0010 0010 0010 0010 1010 1100 0000 0101 1000 = 2 2 2 2 a c 0 58 黄色部分34位,每4位二进制可转换成一位16进制,所以需要在最前面补零。...

2021-03-24 12:16:41 45

原创 float32小记

float32存储的值与科学计数法相似,但它的底数是2,型如M*(2^E)。(1000000000000000000000001)2=16777217(1000000000000000000000001 )_2=16777217(1000000000000000000000001)2​=16777217(1000000000000000000000000)2=16777216(1000000000000000000000000 )_2=16777216(100000000000000000000

2021-03-23 11:19:46 606

原创 maven国内镜像小记

<!-- 阿里云 --> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ...

2021-03-18 15:31:17 82

原创 认证 (authentication) 和授权 (authorization)小记

原文地址以前一直分不清 authentication 和 authorization,其实很简单,举个例子来说:你要登机,你需要出示你的身份证和机票,身份证是为了证明你张三确实是你张三,这就是 authentication;而机票是为了证明你张三确实买了票可以上飞机,这就是 authorization。在 computer science 领域再举个例子:你要登陆论坛,输入用户名张三,密码1234,密码正确,证明你张三确实是张三,这就是 authentication;再一check用户张三是个版主,

2021-03-16 19:48:16 300

原创 UserDetailsService小记

@Resource private UserDetailsService userDetailsService;当你采用上面的方式引入UserDetailsService时,你需要像下面一样在@Service中加上名称。因为UserDetailsServiceAutoConfiguration中会先产生一个InMemoryUserDetailsManager,它也是UserDetailsService的实现类,Spring选择了InMemoryUserDetailsManager,这时U...

2021-03-15 12:49:52 385

原创 ConditionalOnBean顺序

@ConditionalOnBean(name = "tom") @Bean public User user1() { return new User("user1"); } @Bean("tom") public Pet pet() { return new Pet("pet1"); }上面的代码名为user1的Bean不会被创建 @Bean("tom") public Pet pet() {...

2021-02-15 22:41:42 887 2

原创 构造Bean的方法上的参数

@Bean public User user1() { return new User("user1"); } @Bean public User user2() { return new User("user2"); } @Bean public Pet fun1(User user) { Pet pet = new Pet("pet1"); pet.setMaster(use...

2021-02-15 19:42:41 469

原创 单例模式的线程安全

// 懒汉式(线程安全,同步方法)class Singleton { private static Singleton instance; private Singleton() {} //提供一个静态的公有方法,加入同步处理的代码,解决线程安全问题 //即懒汉式 public static synchronized Singleton getInstance() { if(instance == null) { instance = new Singleton(); }

2021-01-28 21:23:32 122 1

原创 十进制数的二进制合并

假设有x,y两个十进制数,我想把x和y的二进制拼接为一个n位的二进制,x的二进制在右边,y的二进占左边m位。方法:x << m | y例子:x=5  ⟹  101y=6  ⟹  110n=10m=5(x<<m)∣y  ⟹  10100000∣110  ⟹  10100110x=5 \implies 101\\y=6 \implies 110\\n=10\\m=5\\(x<<m) \mid y \implies 10100000 \mid 110 \i

2021-01-27 23:08:58 478

原创 Java 杂记

public interface Inter1 { Obj1 fun1(); } public Inter1 build1() { return new Inter1() { @Override public Obj1 fun1() { return null; } }; }上面的代码可以写成下面的lambda形式,上面的代码是接口

2021-01-13 12:36:00 75

原创 关于日历的思考

公元2020年1月1日是不是表示从公元元年开始已经过去了2020个年?答案是否定的。公历的年其实相当于序号,所以2020年表示第2020个年。如此看来,2020年1月1日表示从公元元年开始已经过去了2019个年,当到了2021年1月1日之后,才是真正过去了2020个年。...

2021-01-11 15:10:54 108

原创 密码管理器(Electron+Vue)

说明密码管理器基于Electron,用了一些Vue来进行页面渲染和数据操作。代码github

2020-11-21 23:19:02 752

原创 序列化实现深拷贝

Main类public class Main { public static void main(String[] args) { Person pA = new Person("zhao", 18, new Person("peng", 30, null)); // 将对象序列化后,通过反序列化获得新的对象,完成深拷贝 try (ByteArrayOutputStream bos = new ByteArrayOutputStream();

2020-11-01 18:05:21 623

原创 设计模式学习小记

七大设计原则单一职责原则接口隔离原则依赖倒置原则里氏替换原则开闭原则原则迪米特法则合成复用原则

2020-10-29 22:39:07 95

原创 vi/vim-快捷键积累

Ctrl-f 向前滚动一页Ctrl-b 向后滚动一页Ctrl-u 向前滚动半页Ctrl-d 向后滚动半页

2020-10-27 21:48:37 77

原创 LeetCode解题golang代码分享

代码仓库:problem

2020-09-15 16:01:50 104

原创 leetcode-37(golang代码)

解题思路思路来自于Ikaruga发布的题解,建议先看他的题解,再来看我的。将Ikaruga发布的题解的C++代码转换为golang代码,并做了优化。Ikaruga的代码中通过bitset来记录数字的出现,而我直接采用整数达到相同的效果。采用整数不受限于编程语言。因为整数可以表示为二进制数,并且该题解的主要运算是|,&,^等,所以采用整数是相同的效果,且不需要额外实现bitset这个数据结构。对于fillNum函数,采用了Ikaruga最初的实现。golang中不能像C++代码那样直接用

2020-09-15 15:32:00 112

原创 SQL联结

2020-09-09 16:29:29 77

原创 中国象棋(Java GUI)

简述Java GUI,中国象棋思路一个二维数组作为棋盘,数组中存放ChessPieces引用,ChessPieces是所有棋子的父类。接口Run中的isRule方法获得两个坐标,用于判断用户点击是否符合该棋子的移动规则。为每种棋子构建类,并实现Run接口。每个棋子有自己阵营标识Camp,Camp是枚举:RED(红方)、BLACK(黑方)每次落子后判断“将”,“帅”的存在来判断输赢。预览...

2020-08-06 22:08:22 610

原创 商品信息管理系统(Spring Boot+JPA+Vue+Element)

简介商品信息管理系统,学校数据库课程作业,第一次用Vue组件式开发。前后端分离,前端单页面应用。利用Vue进行组件式开发,Webpack打包前端:zhaosql-front技术栈Spring BootJPAVueElement预览...

2020-08-06 22:07:20 554

原创 常见架构

Aliyun Java Initializrwebapiserviceservice层和web层都依赖于api层。service是使用api作为标准,web层是使用api的功能。所以可以先进行api的编写,面向接口编程。

2020-08-02 22:03:09 73

原创 国内开源集

腾讯团队:https://github.com/tencent微信团队:https://github.com/tencent-wechat微信前端团队:https://github.com/WechatFE阿里巴巴团队:https://github.com/alibaba/阿里妈妈团队:https://github.com/thx百度前端团队:https://github.com/ecomfe百度前端研发团队:https://github.com/fex-team百度前端技术团队:https:

2020-08-02 14:39:49 247

原创 smartorder订餐系统

技术栈前端:LayUI:经典模块化前端框架,用于构建响应式前端界面。LayUI mini:对LayUI 的再次开发,更加轻量,用于构建用户使用的前端界面。Vue:渐进式框架、组件式开发、用于前端渲染。后端:Spring boot:更加方便快速的使用Spring框架。MyBatis:构建数据持久层框架。Spring Security:构建系统安全框架。Thymeleaf:对一些界面进行渲染。Spring Web:构建系统Web服务框架。Fastjson:快速JSON序列化、反序列化

2020-08-01 16:26:39 283

原创 GitHub图床

图片已经上传到了某个GitHub中的某个仓库。举例:已经上传的图片的仓库路径https://github.com/用户名/仓库名/tree/分支/a.png注意:如果直接访问上面的网址,返回是一个网页。需要转换成下面的网址才能访问到图片资源。你在查看某个文件时,地址中会包含一个tree,去掉它。https://raw.githubusercontent.com/用户名/仓库名/分支/a.png虽然GitHub可以作为图床,但国内访问时也存在图片加载失败的情况。包括访问GitHub网站本身时,

2020-08-01 16:12:38 270

原创 CSI员工管理系统(Spring+Spring MVC+JPA)

简介该项目是学校实训项目,寒假在家开发的。分享该项目的目的是给供大家学习、参考,并且希望能在GitHub上获得star。该系统基于Spring Boot,包含Spring、Spring MVC、JPA等技术,前后端分离。后端绝大多数代码由我开发,对于自己从零开发的代码比较有信心,代码中还可能存在着bug。前端代码是同小组的其他成员在网上找到的模板,我基于这个模板进行了修改,但最终界面还是丑,并且代码结构混乱,不好修改。如果真的想使用该系统,建议重新开发前端。该项目后续不会更新了。GitHu

2020-07-26 19:34:43 2071

原创 Java趣事:silly call

我的目的是对一个两个整数相除后向上取整在Java中,Math.ceil(double a)实现了向上取整Math.ceil( a / b) //a, b是整数如果你像上面这么写的话SonarLint 会像下面这样提示你这个提示的大概意思是:移除这个愚蠢的对“Math.ceil”的调用注意:silly是愚蠢的意思正确的写法应该是这样子Math.ceil((double) a / (double) b)...

2020-07-24 15:18:55 970 3

原创 代码中KB、MB的表示

1 << 10 可表示 1KB1 << 20 可表示 1MB......

2020-07-23 12:03:28 378

原创 代码简便写法参考(Java)

删除文件!dir.exists() || dir.delete()

2020-07-22 11:06:10 169

原创 i++和++i傻傻分不清

i++,++i都会使i加1假设i = 0a = i++ # a = 0, i = 1a = ++i # a = 1, i = 1简单概括:i++返回递增前的值,++i返回递增后的值i++a = i # a = 1, i = 1

2020-07-20 23:00:27 99

原创 牢记运算符优先级的重要性(举例)

今天在读《Java技术手册》时遇到这么一个例子假设 i = 0a[i++] = a[i++] + 1;我最开始认为上面的代码等价于a[1] = a[0] + 1;通过代码试验发现我错了翻书可知道上面式子中的运算符优先级(由高到低)[ ]+++=所以上面的式子等价于a[0] = a[1] + 1;...

2020-07-20 19:15:16 255

原创 Java浮点数小记

除了表示普通的数字之外, float 和 double 类型还能表示四个特殊的值:正无穷大、负无穷大、零和 NaN。如果浮点数运算的结果超出了 float 或 double 能表示的范围上限,得到的是无穷大。如果浮点数的运算结果超出了 float 或 double 能表示的范围下限,得到的是零。Java 的浮点类型区分正零和负零,具体是哪个值取决于从哪个方向出现的下溢。在实际使用中,正零和负零的表现基本一样。最后一种特殊的浮点数 NaN,是“Not-a-Number”的简称,表示“不是数字”。如果浮点数运

2020-07-20 16:11:36 209 1

原创 二进制最大值

16二进制数的最大值是2^16-1 = 0b1111111111111111 # 16位二进制2的16次方的二进制是17位。2^16 = 0b10000000000000000 # 17位二进制2的16次方能表示的范围是[65535, 0] 或 [32767, -32768]。-32768怎么表示?-32768 = 0b1000000000000000 # 第一位用作符号位0 = 0b0000000000000000 # 1表示负数,0表示正数...

2020-07-18 22:40:50 11074

原创 非0即1

从0得到1,从1得到0,有几种方法1、非运算(有些编程语言不支持直接对数字非运算)a = !b!0 = 1!1 = 02、异或运算a = 1 ^ b1 ^ 0 = 11 ^ 1 = 03、1被减法a = 1 - b1 - 0 = 11 - 1 = 0

2020-07-18 22:14:17 1531

空空如也

空空如也

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

TA关注的人

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