自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cypher语句,创建和删除节点,关系和属性总结

CREATE用来创建节点,关系和属性,例子如下:CREATE ( { }) -[ { }]-> ( { }),可以以逗号隔开。查询是用MATCH进行匹配(包括单纯节点,或者有关系链条),然后RETURN 自己需要的东西。MATCH (n:人物{name:‘刘备’}) SET n:皇帝:好人; 为刘备增加两个标签,分别为‘皇帝’,‘好人’。MATCH (n:人物{name:‘...

2019-04-12 14:19:10 6558 1

原创 @JsonSerialize(using = ToStringSerializer.class)和@JsonSerialize注解的使用方法

java中long数据能表示的范围比js中number大,在跟前端交互时,这样也就意味着部分数值在js中存不下(变成不准确的值)。解决办法可以这样:使用fastjson的ToStringSerializer注解,让系统序列化时,保留相关精度。/** * 记录属性的主键 */ @JsonSerialize(using = ToStringSerializer.class) private Long id;@JsonSerialize注解的使用方法关于这个注解的

2021-05-10 18:25:00 21148 2

原创 @Accessors(chain=true)

这样就可以用链式访问,该注解设置为chain=true,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。package com.pollyduan;import lombok.Data;import lombok.experimental.Accessors;@Data@Accessors(chain=true)public class User { private Integer userId; private String name;

2021-05-10 18:04:04 35152 2

原创 关于Spring Boot Configuration Annotation Processor not configured的原因

在使用一个Java注解类时出现的问题,这个的意思是“Spring Boot配置注解处理器没有被配置完成”。这个的作用是配置注解执行器配置完成后,当执行类中已经定义了对象和该对象的字段后,在配置文件中对该类赋值时,便会非常方便的弹出提示信息,这意思就是在写yaml或者properties资源文件时.号之后会有相应的提示。一般加入以下信息之后,刷新一下就可以了。<dependency> <groupId>org.springframework.boot</groupI.

2021-04-25 10:37:14 1506

原创 关于idea file encoding中的Transparent native-to-ascii conversion是否勾选

Transparent native-to-ascii conversion是否勾选?Properties文件后面还跟随着一个复选框Transparent native-to-ascii conversion。这个会将我们输入的所有字符转换成Unicode序列码保存,中文也会这样。这个直接翻译过来则是透明的将本地编码转成ascii编码,本质上调用的是jdk bin目录下的native2ascii.exe。实际使用中,最好是勾选吧,如果你用的系统的gbk,那会出现乱码,但如果你使用的utf-8那就勾选不勾选

2021-04-22 20:32:06 600

原创 redis的哈希槽与一致性哈希

一致性哈希先看一致性hash,常见的一个环形图如下:在1997年,麻省理工学院的 Karger 等人提出了一致性哈希算法,为的就是解决分布式缓存的问题。在一致性哈希算法中,整个哈希空间是一个虚拟圆环。对于各个 Object,它所真正的存储位置是按顺时针找到的第一个存储节点。例如 Object A 顺时针找到的第一个节点是 Node A,所以 Node A 负责存储 Object A,Object B 存储在 Node B。一致性哈希算法大概如此,那么它的容错性和扩展性如何呢?假设 Node C

2020-10-05 12:04:40 544

原创 装饰者模式案例

关键在于多态的层层嵌套public interface Beverage { double cost();}public class DarkRoast implements Beverage { @Override public double cost() { return 1; }}public class HouseBlend implements Beverage { @Override public double cost.

2020-10-03 12:11:06 98

原创 Linux的进程状态

在Linux系统中,一个进程被创建之后,在系统中可以有下面5种状态。进程的当前状态记录在进程控制块的state成员中。Linux的五种进程状态:R running or runnable (on run queue)正在执行或者可执行,此时进程位于执行队列中。状态标志state的值为TASK_RUNNING.D uninterruptible sleep (usually I/O)不可中断阻塞,通常为 IO 阻塞。状态标志state的值为TASK_UNINTERRUPTIBL。此时,进程也处于等待

2020-10-02 22:39:22 223

原创 未来的http3

先看一下http2的起源,一个称为 SPDY 的东西了。目的是什么呢?当然是加快互联网的速度。SPDY 是一个规范,还是建议继续使用 HTTP,但要更改一些规则。通过压缩标头、对请求进行优先级排序和多路复用,它将把所有 TCP 请求和连接变成单独的一个!具体来说,当你读取 HTML 时,浏览器会查看你在页面中要询问的所有内容。然后,它可以一次获取所有内容,这样就可以避免一个文件一个文件地获取了。HTTP2 的第一份草案基于 SPDY。HTTP2 很快被广泛采用,随后互联网上的一切变得快多了。今天,互联

2020-10-02 19:08:22 109

原创 Caffine Cache 在算法上的优点-W-TinyLFU

常见的缓存淘汰算法还有FIFO,LFU:FIFO:先进先出,在这种淘汰算法中,先进入缓存的会先被淘汰,会导致命中率很低。LRU:最近最少使用算法,每次访问数据都会将其放在我们的队尾,如果需要淘汰数据,就只需要淘汰队首即可。仍然有个问题,如果有个数据在 1 分钟访问了 1000次,再后 1 分钟没有访问这个数据,但是有其他的数据访问,就导致了我们这个热点数据被淘汰。LFU:最近最少频率使用,利用额外的空间记录每个数据的使用频率,然后选出频率最低进行淘汰。这样就避免了 LRU 不能处理时间段的问题。上面

2020-10-02 13:04:12 473

原创 MySQL优化一般性考虑点

大概分为以下几点:1.数据库设计和表创建时就要考虑性能2.sql的编写需要注意优化3.分区4.分表5.分库1.数据库设计和表创建时就要考虑性能设计表时要注意:1.表字段避免null值出现,null值很难查询优化且占用额外的索引空间,推荐默认数字0代替null。2.尽量使用INT而非BIGINT,如果非负则加上UNSIGNED(这样数值容量会扩大一倍),当然能使用TINYINT、SMALLINT、MEDIUM_INT更好。3.使用枚举或整数代替字符串类型4.尽量使用TIMESTAMP而非

2020-10-01 14:28:13 95

原创 i++,++i的区别

++i 立马交换栈.public class MyExam { public static void main(String[] args) {// int[] arr={2,4,76,19,57,4,79,45};// int i = rob2(arr);// int i = climbStairs(4); //int i = zuHeUniquePaths1(3, 1);// System.out.println

2020-08-29 23:01:16 105

原创 Collections.synchronizedList(List list)用法解析

public static void main(String[] args) { ArrayList<Integer> integers = new ArrayList<>(); LinkedList<Integer> integers1 = new LinkedList<>(); List<String> list = Collections.synchronizedList(new ArrayLi

2020-08-18 22:03:34 3302 2

原创 Spring Boot直观特点

使用自动配置Spring Boot 的一个主要特性是使用自动配置。这是 Spring Boot 的一部分,它可以简化你的代码并使之工作。当在类路径上检测到特定的 jar 文件时,自动配置就会被激活。使用它的最简单方法是依赖 Spring Boot Starters。因此,如果你想与 Redis 进行集成,你可以首先包括:<dependency> <groupId>org.springframework.boot</groupId> <artifa.

2020-07-27 12:52:03 80

原创 2020IDEA有个巨坑,这里一定要勾选

2020IDEA有个巨坑,这里一定要勾选,不然pom文件没错,但运行就各种找不到包,比如:连springboot启动类都找不到

2020-07-04 11:11:03 3461 3

原创 Java中的 volatile 关键字

说这个之前,要先说到cpu的运行,大家都知道,计算机在执行程序时,每条指令都是在 CPU 中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟 CPU 执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在 CPU 里面就有了高速缓存。如果程序中存在有被多个线程访问的变量也就是共享变量,有可能就会造

2020-07-03 18:05:49 87

原创 RabbitMQ的简单使用

RabbitMQ使用消费者和生产者模式。@Componentpublic class GoodsListener { @Autowired private GoodsHtmlService goodsHtmlService; @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "leyou.create.web.queue", durable = "true"),

2020-07-01 22:42:54 124

原创 索引是建的越多越好吗

明显不是,有以下几点:1.数据量小的表不需要建立索引,建立会增加额外的索引开销2.不经常引用的列不要建立索引,因为不常用,即使建立了索引也没有多大意义。对经常用于查询的字段应该创建索引。3.经常频繁更新的列不要建立索引,因为肯定会影响插入或更新的效率4.数据重复且分布平均的字段,因此他建立索引就没有太大的效果(例如性别字段,是否上架等等,不适合建立索引)5.数据变更需要维护索引,意味着索引越多维护成本越高。当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。6.更多

2020-06-30 15:19:42 7275

原创 是否线程池一定比单线程高效?

不一定,比如Redis就是单线程的,但它却非常高效,基本操作都能达到十万量级/s。从线程这个角度来看,部分原因在于:1.多线程带来线程上下文切换开销,单线程就没有这种开销;2.采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;3.使用多路I/O复用模型,非阻塞IO;一个线程监控多个socket。这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。4.数据结构

2020-06-30 09:18:15 443

原创 高并发下,怎么选择最优的线程数?

最常见的说法应该是,采用线程池,他可以有效降低线程创建释放的时间花销及资源开销,如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及“过度切换”(在JVM中采用的处理机制为时间片轮转,减少了线程间的相互切换) 。下面是获得cou数目的方法。int N_CPUS = Runtime.getRuntime().availableProcessors();最好的线程数计算方法:Ncpu = CPU的数量Ucpu = 目标CPU的使用率, 0 <= Ucpu <= 1,一般极端

2020-06-30 08:58:27 539

原创 Nginx为什么快,为什么好用

相信大家平时用的最多的地方应该是做反向代理。不过人家可是不止这些东西。Nginx 是以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。以下是nginx的http连接和处理过程。HTTP 连接建立和请求处理过程如下:1.Nginx 启动时,Master 进程,加载配置文件。2.Master 进程,初始化监听的 Socket。3.Master 进程,Fork 出多个 Worker 进程。4.Worker 进程,竞争新的连接,获胜方通过三次握手,建立 Socket 连接,并处理请求。Ng

2020-06-30 08:23:29 293

原创 通过装饰模式来包裹被装饰的函数可以用类@decorate_class,也可以用函数@decorate_function

def decorate_function(original_function): def wrapper_function(*args,**kwargs): print('original_function name is {}'.format(original_function.__name__)) return original_function(*a...

2020-01-05 14:48:38 168

原创 python手动拆分数据集

def data(fileName, fileOut): f = open(fileName) w = open(fileOut, 'w') flag=False doc=f.readlines() # pos=int(pos) for line in doc: line = line.strip() if lin...

2019-12-28 13:57:23 1035

原创 笔试编程题:小Q的歌单(python实现),用itertools

小Q有X首长度为A的不同的歌和Y首长度为B的不同的歌,现在小Q想用这些歌组成一个总长度正好为K的歌单,每首歌最多只能在歌单中出现一次,在不考虑歌单内歌曲的先后顺序的情况下,请问有多少种组成歌单的方法。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个整数,表示歌单的总长度K(1<=K<=1000)。接下来的一行包含四个正整数,分别表示歌的第一种长度A(A<=...

2019-12-12 23:14:04 380

原创 python中的sorted函数和operator.itemgetter()函数

nameRank = sorted(rankList.items(), key = operator.itemgetter(1))rankList 是一个字典,rankList.items() ,Python 字典 items() 方法以列表返回可遍历的(键, 值) 元组数组,就是这样 [(),()]sorted(iterable,function,reverse),上面的operator.i...

2019-07-18 15:11:04 830

原创 windows neo4j数据库备份操作

先关闭neo4j执行备份命令graph01.db是数据库名,自己指定的,默认是graph.db重新导入数据库,用 neo4j-admin load --from=E:\neo4jdata\graph01.db.dump --database=graph.db --force...

2019-07-17 10:12:25 1277

原创 cypher命名规范

Cypher是面向图数据库的、表达能力强大的查询语言。以下是命名规范:

2019-04-12 12:10:17 476

原创 在neo4j中如何导入apoc的jar包

在neo4j中如何使用apoc将apoc的jar包放入plugins文件夹下,如图所示:neo4j跟apoc的版本号要对应,如上图所示均为3.5,刚开始我放入的是3.4版本的apoc,导致neo4j无法重启,错误如下:Neo4j相应版本的jar包可在此下载(更新中):https://github.com/neo4j-contrib/neo4j-apoc-procedures/releas...

2019-04-09 20:05:45 1704 2

空空如也

空空如也

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

TA关注的人

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