6 菜鸟笔记

尚未进行身份认证

我要认证

java成长笔记

等级
TA的排名 4k+

redis设计与实现:简单动态字符串SDS

1、SDS定义SDS遵循C字符串以空字符结尾的惯例,保存空字符的一字节空间不计算在SDS的len属性里面。空字符对于SDS使用者是透明的,遵循空字符结尾的好处是SDS可以直接重用一部分C字符串函数库里面的函数。2、SDS和C字符串的区别1)常数复杂度获取字符串长度:C语言获取一个字符串的长度需要遍历整个字符串时间复杂度为O(N),而SDS在属性len中记录了字符串长度,获取字符串长度的时间复杂度为O(1)。2)杜绝缓冲区溢出:C字符串在执行拼接字符串时,如果长度不够...

2020-05-19 11:25:09

机器学习:KNN用java代码实现

KNN算法:使用欧式距离计算方法,从源对象集合中选取距离目标节点最近的K个节点,判断K个节点所属类别最多的节点,即为目标节点所属的类别。此处只是简单的实现KNN算法的过程,其中有一些优化的地方不再修改,还请小伙伴自行优化。KNN的model类:package com.spring5.bigdata.knn;/** * @author yinxf * @date 2020-05-16 */public class KnnNode { private float x; //X坐

2020-05-19 11:10:50

如何设计一个秒杀系统总结

通过学习"如何设计一个秒杀系统"课程,总结秒杀相关的一些重要问题。1.秒杀系统主要解决两个问题,一个是并发读,一个是并发写。 并发读的优化就是尽量减少客户端到服务端来读数据,或者读更少的数据;并发写处理原则也一样,在数据库独立出一个库,做特殊处理。2.秒杀的整体架构包括稳、准、快三个关键字: 稳:即流量符合预期时整体架构要满足高可用,就算超出预期也不能掉链子...

2019-11-12 14:46:42

org.springframework.beans.factory.NoUniqueBeanDefinitionException导致错误原因之一:spring事物

项目运行过程中报错报错信息如下:org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined: expected sing...

2019-02-19 15:30:44

MySQL中不等号索引问题

最近在使用MySQL中的一个小总结。在MySQL中,不等号<>在主键字段和唯一索引字段中会走索引,在普通索引的字段上不会走索引。 1.当不等号<>作用在普通索引字段上 表信息:使用explain查看普通索引字段,没有走索引2.当不等号<>作用在主键索引字段上 使用explain查看主键索引字段,走索引。 3...

2019-01-31 17:22:06

支付对账系统怎么设计?

支付对账系统是整个支付清结算体系中具体基础性意义的一个环节,是确保支付平台与各类第三方支付渠道数据一致性的关键系统,是商户资金结算、资金划拨、资金报表等逻辑准确运行的重要前提。 支付对账涉及账单下载处理、核心对账、差错处理等诸多细节逻辑,同时根据交易量大小的不同,需要处理的数据量规模也不尽相同,需要在数据处理时进行一些比较细致地思考。在本文中,作者以单渠道日成功交易订单量300W左右规模...

2019-01-15 13:13:43

多级缓存实例

一个使用了Redis集群和其他多种缓存技术的应用系统架构。  首先用户的请求被负载均衡服务器分发到Nginx上,此处常见的负载均衡算法有轮询和一致性哈希,轮训可以使服务器的请求更加均衡,而一致性哈希可以提高Nginx应用的缓存命中率。 接着,Nginx服务器读取本地缓存,实现本地缓存的方式可以是lua shared dict,或者面向磁盘或内存的Nginx proxy ca...

2019-01-15 13:06:06

互联网账户系统如何设计(下篇)

导读 在上一篇文章中(互联网账户系统如何设计(上篇)?)我们通过场景举例的方式,讨论了一套相对通用的互联网业务账户系统,从业务模型上应该如何定义。那么除了从业务模型上进行定义外,在具体系统实现上又该如何设计?又有哪些需要注意的地方呢?在本篇内容中小码农就和大家一起讨论下账户系统的实现细节,希望可以和大家一起交流进步。 事实上账户系统的业务逻辑是比较复杂的,对数据的一致性要求很高,特...

2019-01-04 11:13:55

互联网账户系统如何设计(上篇)

在很多互联网公司业务发展的早期,业务模式比较单一的情况下,涉及用户账户资金交易相关的逻辑也比较简单,但是随着公司业务模式的不断创新及类型的多元化发展,会渐渐发现现有系统账户逻辑越来越雍肿,不仅难以支持新业务的扩张,对现有业务的支持也适配困难,最终导致新业务系统不得不重新搭建自己的业务账户逻辑,造成重复建设不说,也往往给后续的财务资金核算造成混乱。 以某互联网A租车公司的业务发展路径为例?...

2019-01-04 11:10:15

Centos7中MySQL的安装并设置开机启动

CentOS7不带Mysql数据库了,默认的数据库是MariaDB(Mysql的一个分支)。可以按照以下步骤手动安装Mysql数据库。1.首先检查系统中是否安装有mysqlrpm-qa|grepmysql如果返回空值,说明没有安装MySQL2.下载mysql的repo源 如果提示没有wget命令,可以使用 yuminstall-ywget安装wge...

2018-12-27 00:05:51

oracle数据库查看表空间默认大小及使用情况总结

oracle查询数据库的默认表空间情况操作步骤如下: 1. 查询用户对应的表空间,我们可以看到针对不同的数据库用户Oracleselect username, default_tablespace, temporary_tablespace from dba_users; 2. 查询用户的对应的数据文件,以及数据文件大小select tablespace_name, f...

2018-12-10 13:10:04

JVM内存模型介绍

 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间。  java虚拟机所管理的内存将会包括以下几个运行时数据区域,有程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。以下将分别进行介绍。 一、程序计数器       程序计数器是一块较小的内存空间,可以看做是当前线程所执行的...

2018-08-21 16:03:03

BTree和B+Tree详解

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大...

2018-08-08 17:00:42

Java nio完成网络通信(三)

使用Java nio实现网络通信。以下是用nio实现简单网络通信的demo/** * 使用NIO完成网络通信 * *1.通道channel:负责连接 * java.nio.channels.Channel * |--selectableChannel * |--socketchannel * |--serverSocketChannel * ...

2018-08-06 10:38:16

java NIO中的channel、分散、聚集(二)

Java NIO中的通道(channel)介绍、通道的实现方式、直接缓冲区和非直接缓冲区、nio中的分散聚集。/** *  *  * 一.通道(channel):用于源节点和目标节点的连接。在Java nio中负责数据的传输, *         channel本身不存储数据,因此需要配合缓冲区进行传输。 *  *     写数据到Buffer有两种方式:        从...

2018-08-06 10:33:06

java nio中几个重要的属性(一)

最近学习一下Java NIO非阻塞式IO,下面是NIO中几个重要的属性和方法,方便大家理解/** * nio 非阻塞IO * nio核心 Channel,Buffer 和 Selector  *  * 1.缓冲区buffer:在nio中负责数据的存取,缓冲区就是数据,用于存储不同的数据类型 *  * 数据类型不同(boolean除外),提供对应的缓冲区,其实就是数组 * Byt...

2018-08-03 15:50:24

centos7安装rabbitmq操作步骤

 本文使用的是Centos7一、编译安装方式1.依赖环境的安装-如果需要用编译安装erlang语言环境,需要安装C++编译。yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC unixODBC-devel httpd python-simplejson2.er...

2018-07-26 17:08:15

Java 排序算法冒泡排序、插入排序、选择排序、奇偶排序、并行奇偶排序

本章将介绍一些常用的排序算法,有常用的串行排序,如冒泡排序、选择排序、插入排序、奇偶排序;还有对奇偶排序的并行实现方法。一、串行排序直接上代码public static void main(String[] args) { int[] array = {9,8,23,34,65,78,3,46,24}; // sortBubble(array); //冒泡 // selectSorts(...

2018-06-27 11:10:42

mysql实用总结

MySQL 5.7版本中实用功能总结,有些功能低版本也可以使用。1.GROUP_CONCAT(fieldName)将分组中每个字段的值显示出来SQL : SELECT t.user_id,GROUP_CONCAT(bank_name) from account t GROUP BY t.user_id查询结果如下:2.WITH ROLLUP在所有查询出的分组记录之后增加一条记录,该记录计算查询出的...

2018-06-11 10:58:57

用mybatis往oracle批量插入数据报错java.lang.StackOverflowError

往oracle中批量插入10000条数据,报错如下java.lang.StackOverflowError at java.util.HashMap.hash(HashMap.java:362) at java.util.HashMap.getEntry(HashMap.java:462) at java.util.HashMap.get(HashMap.java:417) at com.alib...

2018-06-07 10:22:07

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。