- 博客(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
原创 序列化实现深拷贝
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
原创 leetcode-37(golang代码)
解题思路思路来自于Ikaruga发布的题解,建议先看他的题解,再来看我的。将Ikaruga发布的题解的C++代码转换为golang代码,并做了优化。Ikaruga的代码中通过bitset来记录数字的出现,而我直接采用整数达到相同的效果。采用整数不受限于编程语言。因为整数可以表示为二进制数,并且该题解的主要运算是|,&,^等,所以采用整数是相同的效果,且不需要额外实现bitset这个数据结构。对于fillNum函数,采用了Ikaruga最初的实现。golang中不能像C++代码那样直接用
2020-09-15 15:32:00
112
原创 中国象棋(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
原创 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关注的人