- 博客(65)
- 收藏
- 关注
原创 clean architecture 读书笔记
The goal of software architecture is to minimize the human resources required to build and maintain the required system.架构设计的目标: 用最小的人力来开发并维护需要的系统。Every software system provides two different val...
2019-09-15 22:24:10
360
原创 Redis基础
Redis 是一个开源的,基于内存的数据存储,用作db,cache和message broker(PUB/SUB message system)。# Redis是单线程的”单线程-多路复用IO模型”来实现高性能的内存数据服务的,这种机制避免了使用锁。CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采...
2019-08-11 22:24:47
176
原创 clean code 代码整洁之道 读书笔记
clean code代码整洁之道clean code:能够实现功能,重复代码少,抽象合理有层次,代码表达力高,易于维护/修改/扩展chapter 2 命名统一的命名规范清晰、有意义的名字chapter 3 函数短小,只做一件事每个函数一个抽象层级使用描述性的名称函数参数数量尽可能的少无副作用使用异常替代返回错误码别重复自己chapter 4 注释...
2019-08-04 18:17:28
252
原创 ubuntu相关问题
1.ubuntu pinyin输入法数字键选择失效TL;DR: rm ~/.cache/ibus/libpinyin/*https://askubuntu.com/questions/1053182/selecting-a-number-does-not-always-return-a-chinese-character-with-ibus-pinyin...
2019-05-26 17:56:50
152
转载 项目架构相关
DDDhttps://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.htmlThe Three Laws of TDDhttps://www.youtube.com/watch?v=qkblc5WRn-UOptional - The Mother of All Bikesheds by Stuart ...
2019-05-19 19:21:28
140
原创 HTTP POST 请求 及 @RequestParam @RequestPart @RequestBody
1.通过HTML Form提交。Content-Type: application/x-www-form-urlencoded ,multipart/form-data 和text/plainapplication/x-www-form-urlencoded:将提交的key-value数据编码成由'&'和'='进行分割的字符串。类似get请求中的参数,只是POST请求...
2019-05-19 19:15:31
10906
转载 Web安全相关
1. HTTPS和HTTP区别:HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。HT...
2019-05-19 18:35:30
1083
原创 Spring boot相关问题
1. 配置Context path/Port,application.properties中server.contextPath=/MYPATHserver.port=123782. 配置ProfileVM参数:-Dspring.profiles.active=dev或application.properties中:spring.profiles.active=MY_...
2019-05-11 15:55:31
145
原创 JS相关问题
1.使用Drag and dropg API时,如果target element有child element的话,拖拽到child element上target element的enterleave事件会被触发。解决办法:drag到target element的时候,target element添加class:drag.drag * { pointer-events: none;...
2019-05-11 15:50:44
130
原创 elasticsearch笔记
elasticsearch基本概念Cluster 多个es node组成的集群应用Node 一个es server应用Index 一类document的集合Document es的数据对象,可以用来被索引的基本单元Shard 分片Rplica 副本配置JVM配置heap size修改/etc/elasticsearch/jvm.options配置文件或export ES...
2019-05-11 15:11:00
216
转载 从Java5到Java12每个版本的新特性
https://www.jianshu.com/p/a051a2f0c3abhttps://www.jianshu.com/p/e5fba5376371
2019-04-30 21:30:58
445
转载 Vue 和 React 数据绑定 Virtual Dom
React 和 Vue 有许多相似之处,它们都有:使用 Virtual DOM提供了响应式 (Reactive) 和组件化 (Composable) 的视图组件。将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。数据绑定双向绑定和单向绑定单向绑定:将View绑定到Model,Model数据更新,View就会自动更新。双向绑定:用户更新View...
2019-04-27 18:00:44
362
原创 Kotlin 个人踩坑
1. kotlin的Null Safety很方便。但是在和java做interop的时候需要额外小心。例,java的List可能为空对象,kotlin的List为非空对象。将一个java List转成kotlin List后,list?.forEach{...}, intellij会提示冗余的非空检查,使用list.forEach{...}就可以了。但是非空检查其实是有必要的。尤其是调...
2019-04-27 16:48:47
326
转载 Spring AOP 二次代理失效问题
问题:Spring AOP无效。原因:AOP二次代理的问题公司的Spring项目比较庞大,由不同的部门开发实现。BT对Spring进行了封装和魔改。BT和业务组都有对Controller层的AOP,分别采用了AspectJ,CGLib,JDK Proxy等不同的方式,在不同的位置进行注册和声明。导致二次代理的问题的产生,业务组的AOP失效。伪流程:1.配置文件注册第一个ProxyC...
2019-04-27 16:17:47
1201
原创 TFiDF java计算文档关键字 lucene
关键词提取的经典算法之一,通过统计的方法,以tfidf值作为衡量一个词在文章中重要程度的标准。词频(TF)=词在文章中出现的次数/文章总词数文档频率(DF)=关键词在整个语料所有文章中出现的次数倒文本频率(iDF) = 文本频率的倒数如果一个词越常见,那么分母就越大,逆文档频率就越小越接近0。分母之所以要加1,是为了避免分母为0(即所有文档都不包含该词)。log表示对得到的值...
2019-04-21 20:54:52
711
原创 Used Linux Command
ftp 浏览器用户登录ftp://username:password@host:port获取有效IP(Ubuntu)ip route get 1 | awk '{print $NF;exit}'截取文件名basename "/tmp/path/filename.md"//filename.mdbasename "/tmp/path/filename.md...
2019-04-21 20:54:17
142
原创 工作软件和项目管理相关
效率软件openproject 协作项目管理工具https://www.openproject.org/openoffice 文档管理工具trello 待办事项网站https://trello.comgitlab 开源git工具teamcity/jekins 持续集成工具notion 团队协作笔记软件https://www.notion.so/项目管理...
2019-04-21 20:53:56
216
原创 JAVA 笔记
JVM 配置-Xmx 最大堆内存 -Xms 最小堆内存查看JVM默认配置java -XX:+PrintFlagsFinal -versionWIN查看heapsizejava -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize"Linux查看heapsize...
2019-04-21 20:53:34
100
原创 Kotlin 学习笔记(官网教程+Kotlin in Action)
Kotlinprons:语法糖Null Safety函数式编程代数类型不可变对象#1kotlin中class没有静态方法/类属性,定义companion object,作为一个放置工厂函数和静态成员的地方,同时能够访问class其他方法和属性鼓励在一个source文件中定义多个相关的class,fun#2 Porperties and FieldsBacking Fie...
2019-04-21 20:49:57
930
原创 编程范式总结
命令式编程 Imperative programming用命令的方式,一步一步告诉计算机先做什么再做什么。模拟电脑运行过程,通过执行命令改变程序的状态。从开发人员的角度来说,就是一个"输入-》函数1-》状态1-》函数2-》状态2-》输出"的过程难点在于函数的书写和中间状态的保存。声明式编程告诉计算机应该做什么,更关注结果,不关心计算机怎么做。领域特定语言(Domain Specifi...
2019-04-02 21:09:10
169
转载 raft 一致性算法
选举master过程redis使用raft leader election进行master选举。概念:一个cluster中有多个node,最终状态有一个leader,多个follower。leader通过heartbeat周期性和follower通信。node有三种状态:leader,follower,candidate(leader候选人)什么时候开始选举?如果...
2019-03-21 22:29:58
126
转载 一致性哈希算法
Cassandra,memcached,redis等分布式系统中,使用一致性哈希算法来保证数据的一致性。在redis中,为了在server node增加或减少时,尽量均匀的将缓存分布到多个server node上,同时尽可能少的移动数据,提高缓存命中率,可以使用一致性哈希算法。数据定位过程:将整个Hash值空间视作一个虚拟圆环,整个空间按顺时针方向组织。使用hash函数对se...
2019-03-21 21:48:50
152
转载 MySQL Innodb MVCC(多版本并发控制)
原理:MVCC可以提供基于某个时间点的快照,使得对于事务看来,总是可以提供与事务开始时刻相一致的数据,而不管这个事务执行的时间有多长。所以在不同的事务看来,同一时刻看到的相同行的数据可能是不一样的,即一个行可能有多个版本。MVCC具体实现InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现的,这两个列,其中一列存储行被创建的“时间”,另外一列存储行被删除的“时间”。这里的“...
2019-03-20 20:04:10
241
转载 乐观锁和悲观锁
乐观锁:总是假设最好情况,认为修改数据过程中该数据不会被其他进程修改,不加锁。在修改数据时判断该数据是否被更改,可通过版本号(version)和CAS(compare and swap)实现。在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。悲观锁总是假设最坏情况,认为处理数据过程中该数据会被其...
2019-03-20 19:59:24
86
转载 数据库索引
聚簇索引索引和数据存储在一块( 都存储在同一个B*tree 中)。非聚簇索引索引数据和存储数据是分离的。二级索引/辅助索引(Secondary index)二级索引存储的是记录的主键,而不是数据存储的地址。以Mysql的InnoDB为例主键是聚集索引唯一索引、普通索引、前缀索引等都是二级索引(辅助索引)主键索引(聚簇索引)查询效率比非主键索引查询效率更高...
2019-03-20 19:37:41
101
原创 JAVA array to list and list to array
//convert array to list Integer[] arr = new Integer[]{1, 2}; /* fixedSizeList Arrays.ArrayList的一个实例,定长,不能新加元素。 fixedSizeList.add(3) 会抛出 UnsupportedOperationException */ L...
2019-03-19 20:05:12
337
转载 缓存穿透,缓存雪崩和缓存击穿
Q: 缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。A:1.布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力2.如果...
2019-03-18 22:13:53
197
原创 k8s ingress 理解及配置
Ingress: 入口,负责统一管理外部对k8s cluster中service的请求。通过定义Ingress Resoucre(Ingress,Ingress Controller,Ingress Service)等实现。 internet | [ Ingress ] --|-----|-- [ Services ]使用Ingress的好处...
2019-03-17 19:18:39
28116
1
转载 Minikube相关
安装https://github.com/kubernetes/minikube/blob/0c616a6b42b28a1aab8397f5a9061f8ebbd9f3d9/README.md#reusing-the-docker-daemon常用命令:获取minikube ip$(minikube ip)拷贝文件到minikubescp -i $(minikube s...
2019-03-17 18:34:54
307
原创 minikube部署 使用本地self-signed registry
1. host machineAdd `127.0.0.1 docker-registry.local` to /etc/hosts2. 生成ca文件#https://docs.docker.com/registry/insecure/# common name: docker-registry.localopenssl req \ -newkey rsa:4096 -...
2019-03-17 18:32:08
281
原创 Jib相关
Jib Goolge开源的工具,用于将java应用快速容器化。常用命令(gradle)build.gradle文件添加plugins { id 'com.google.cloud.tools.jib' version '1.0.2'}build到已定义的registrygradle jib --image=<MY IMAGE>build 当前项目...
2019-03-17 17:52:29
174
原创 Java Regex
Java.util.RegexPattern Matcher正则表达式开始符号: `^`结束符号:`$`java转义: \\Matcher中的group: (regexStr)group name:(?<name>regexStr) String patternStr = "^(?<date>\\d{8})\\.(?<clu...
2019-03-14 19:32:16
571
转载 Docker相关
查看docker registry可用imagecurl -X GET https://myregistry:5000/v2/_catalogbuild imagedocker build -t front .不使用缓存build imagedocker build --no-cache -t front .启动imagesudo docker-compose -f fron...
2019-03-13 19:51:09
101
原创 本地部署minikube,使用本地insecure registry
0.环境Minikube 0.34Docker 18.06.0-ceUbuntu 18.04Minikube连接localhost的insecure registry1.(host)启动docker registrydocker run -d -p 5000:5000 --name registry registry:2修改/etc/hosts,添加`127.0.0.1 ...
2019-03-05 20:03:26
1334
转载 k8s相关
常用命令:Q1:k8s coredns CrashLoopBackOffA:可能原因是coreDNS检测到DNS回路。解决方法:链接提供的解决方案不太适用于ubuntu18.04,因为18.04的DNS配置使用的是netplan。所以不是检查resolv.conf中的DNS配置,而是检查/etc/netplan目录下的DNS配置。修改后,使用sudo netpla...
2019-03-04 19:51:15
139
转载 OAuth2
oauth2oauth2是authorization的开放的、工业化的标准。致力于提供明确的、简洁的认证流程protocol flow +--------+ +---------------+ | |--(A)- Authorization Request ->| Resource ...
2019-03-02 20:01:07
180
翻译 React笔记
2018用到的前端内容es6nodejsreactreduxreasonES 6thunk函数thisJavaScript 的this 关键字在严格模式和非严格模式之间也会有一些差别严格模式下1.在全局执行环境中(在任何函数体外部)this都指向全局对象。2. 如果this没有被执行环境(execution context)定义,那...
2019-03-02 20:00:30
111
翻译 Java Stream
Stream 和 Collection 的区别1. stream不存储数据2. stream原生支持函数式编程。同时,在stream上进行操作产生结果不影响源数据。3. 延迟计算。steam操作中Intermediate operation都是懒处理的。4. Stream可以是无限的。Collection有固定的大小。5. stream中元素只能被访问消费一次创...
2019-03-02 20:00:05
147
转载 ubuntu 18.04 域名解析问题 "Temporary failure in name resolution”
ping google.com出错。解决过程:ping 8.8.8.8 可行,说明是dns nameserver配置问题。添加google dns 8.8.8.8到本机nameserver从ubuntu 18.04开始,使用netplan配置nameserver,之前的一些解决方案如修改/etc/resolv.conf不再有效cd /etc/netplan/ ##...
2019-02-28 20:08:43
12367
转载 ubuntu server 命令行升级版本
服务器从ubuntu 14.04 升级, 14.04 -》 16.04-》18.04。sudo apt-get updatesudo apt-get upgradesudo apt-get dist-upgradesudo do-release-upgradehttps://www.digitalocean.com/community/tutorials/how-to-upg...
2019-02-27 20:47:13
3899
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人