自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

漫长学习路

记录自己一点一滴的成长

原创 社交APP的架构设计(技术篇)

2020-05-08 10:39:43 269

原创 数据库分库分表策略(转载)

一、分库分表的背景在数据爆炸的年代,单表数据达到千万级别,甚至过亿的量,都是很常见的情景。这时候再对数据库进行操作就是非常吃力的事情了,select个半天都出不来数据,这时候业务已经难以维系。不得已,分库分表提上日程,我们的目的很简单,减小数据库的压力,缩短表的操作时间。二、如何进行数据切分数据切分(Sharding),简单的来说,就是通过某种特定的条件,将存放在同一个数据库中的数据拆...

2019-10-15 14:30:38 177

原创 java处理paypal支付

paypal流程有如下几步1创建应用程序2启用与palPal的连接3应用评论4构建按钮5获取授权码6获取访问令牌7为access_token交换refresh_token8获取客户信息9测试集成10上线这里主要讲java验证palpal支付,也就是5-9的步骤。java验证paypal支付主要分为以下几步;第一步,获取权限认证的token...

2019-09-09 15:27:34 272

原创 mysql优化实践

mysql单表超过50W会比较卡,而且in查询也很耗时间。现在有个需求是,查询关注圈的动态首先是把关注的人查询出来,然后再查询关注的人的动态,最后再把自己的动态查询出来,关联分页,排序。界面显示效果是这样的动态表:CREATE TABLE `dynamic_state` ( `id` BIGINT(20) NOT NULL, `name` VARCHAR(50) DE...

2019-08-19 20:17:27 135

转载 8 种常被忽视的 SQL 错误用法

1、LIMIT 语句 2、隐式转换 3、关联更新、删除 4、混合排序 5、EXISTS语句 6、条件下推 7、提前缩小范围 8、中间结果集下推 总结 sql语句的执行顺序:FROM<left_table>ON<join_condition><join_t...

2019-05-20 10:19:03 130 1

原创 2019年规划与目标

  转眼间2018年就过去了,回想2018年应该是我人生中最悲惨的一年,不该经历的也经历了,该经历的也经历了,具体就不说了,总之很惨。杂乱无章,没有规划。所以2019年必须给自己定下点目标,然后努力的去完成。身体健康俗话说身体是革命的本钱,毕业几年身体素质下降很快,最近才反省回来。每天坚持走路一万步,周末必须去健身房一次,如果不下雨就去两次,体重控制在130斤左右,不能超标。全年的平均步数...

2019-02-22 11:29:02 1237 2

原创 spring cloud 服务注册与发现

Eureka的工作原理以及它与Zookeeper的区别1.Eureka的简介:  Eureka是Netflix出品的用于实现服务注册与发现的工具。Spring Cloud集成了Eureka,并提供了开箱即用的支持。其中,Eureka又可细分为Eureka Server和Eureka Client。1.基本原理服务启动后向Eureka注册,Eureka Server会将注册信息向其他...

2019-02-21 18:50:43 146

原创 Linux安装Nginx

一、Nginx的安装 (1)由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装:      $  yum install gcc-c++        $  yum install pcre pcre-devel     ...

2018-11-26 19:49:52 144 2

原创 Java处理谷歌支付

整个开发背景是前端在调用完google play支付流程后,需要后台验证支付结果以及在自己的服务生成订单相关信息。由此着手对google后台验证的调研。创建API控制台项目转到API控制台并使用您的Google Play控制台帐户登录。 选择创建项目。 转到服务在左侧导航面板。 打开Google Play Android Developer API。 接受服务条款。 转到左侧导航...

2018-10-23 17:01:00 3696 10

原创 spring boot 动态数据源

由于项目中要用到spring boot结合mybatis做一个动态的数据源,所以自己做了一个,也踩了很多坑,这里把成果分享出来。如果是1.x的springboot版本可以看前面的,如果是2.x版本的可以看后面的,2.x版本的更简单方便。一、Springboot + Mybatis 多数据源配置1.Springboot.yml配置文件server: port: 9281#spri...

2018-10-19 16:52:03 249 1

转载 linux查询文件

linux下的find文件查找命令与grep文件内容查找命令linux下的find文件查找命令与grep文件内容查找命令linux下的find文件查找命令与grep文件内容查找命令  在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。  区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,...

2018-10-11 15:13:10 128

原创 一个简单的支付系统设计

1.设计思路每个公司都有自己的支付系统,有很复杂的像支付宝这种,也有超级简单的就是一个接入第三方支付。这里我想设计一个简易的完整的支付系统,我应为应当包括,支付网关,支付渠道,基本支付,以及风险监控。1.1支付网关支付网关是对外提供服务的接口,所有需要渠道支持的资金操作都需要通过网关分发到对应的渠道模块上。一旦定型,后续就很少,也很难调整。而支付渠道模块是接收网关的请求,调用渠道接口执...

2018-09-21 16:45:19 1460 1

原创 SVN禁止删除和强制注释操作的钩子脚本pre-commit (exit code 255)

背景:SVN的项目文件被普通用户误删了,这是个非常严重的错误,还好恢复的及时,不然的话,后果不堪设想。但是由于删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,开发这些模块的小伙伴们还会遇到提交代码版本冲突的问题。由于波及的范围比较大,所以领导让我研究一下,怎么才能禁止普通用户删除SVN中的项目文件。于是,这篇文章就诞生了。【操作步骤】 1、找到...

2018-09-17 17:09:35 701

原创 linux安装redis

注意:搭建redis前一定要安装gccredis安装方式一1.安装gcc命令:yum install -y gcc#安装gcc[root@localhost src]# yum install -y gcc#出现如下信息则安装成功Installed:gcc.x86_64 0:4.4.7-17.el6Dependency Installed:cloog-ppl.x86_...

2018-07-30 17:08:42 183 2

原创 Web3j实现智能合约

1   获取凭证Credentials是我们钱包的凭证,在我们交易和创建智能合约的时候都需要用到。1.1  创建新凭证file=WalletUtils.generateFullNewWalletFile(pwd,dir);返回的file不是全路径,而是该文件的路径名,比如UTC--2017-10-30T12-10-45.516005546Z--5f38056f45091ee992298e53681...

2018-07-04 15:35:22 1959 6

原创 使用web3j进行交易转账

1    Web3j概述用于与Ethereum客户端集成的轻量级Java库。2    区块链基础对于编程者来说,区块链不是一个很难理解的概念,因为最难懂的部分(包括挖矿,哈希,椭圆加密,P2P网络)都只是提供了一系列的特性和约束,一旦你知道了这些特性和约束,就不必去理解这些特性或是约束背后的实现原理。2.1    交易区块链是全局共享,交易数据库。这就意味着任何人只要参与到这个网络中就可以访问到这...

2018-07-04 15:17:42 5488 6

原创 go语言变量

    变量是所有语言中最基本的元素,程序可以通过定义一个变量来申请一块数据的内存空间。GO语言的变量使用方式和C语言接近,但更具备强大的灵活性。1.变量声明GO语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,GO语言引入了关键字var,而类型信息放在变量名之后,示例如下: var v1 int //整型 var v2 stirng //字符型 var v3[10]int...

2018-06-08 16:27:43 258 1

原创 Go语言实战第一课

Go语言特点1.静态类型,编译型的开源语言变量类型直接写出来,不直接写出来,让程序自己去识别。1.静态类型,编译型的开源语言2.校本化的语法,支持多种编程范式函数式&面向对象3.原生,给力的支持并发编程 降低开发,维护成本,程序可以更好的执行Go语言缺点1.语法糖没有python和ruby那么多每一个工作区的结构都类似下图所示2.目前的程序运行速度不及C 赶超C++和Java3.第三方函数...

2018-04-10 21:42:59 583

原创 Solidity开发神器Remix

功能这里我们使用在线编译器,打开网址https://ethereum.github.io/browser-solidity文件夹管理最左边是文件夹管理,里面列出了当前的工作区里的文件,remix可以支持从本地文件夹读取文件。工作区正中间是工作区,工作区上半部是代码编辑区,在这里可以写solidity合约。下半部是日志区,在执行智能合约时,会显示transaction相关的信息。在输出日志的时候还可

2018-01-29 20:01:42 6890

原创 Solidity基础语法学习

Solidity中的契约类似于面向对象的语言中的类。每个合约都可以包含状态变量,函数, 函数修饰符,事件,结构类型和枚举类型的声明。此外,合同可以继承其他合同,在Solidity中每一个类都被称为合同。类型Solidity是一种静态类型语言,这意味着每个变量(状态和本地)的类型需要在编译时指定Solidity提供了几种基本类型,可以组合形成复杂的类型。值类型以下类型也被称为值类型,因为这些类型的变

2018-01-19 16:54:40 3089

原创 Go包管理

什么是包?为什么要使用包?为了更好地组织类,Java 和GO都提供了包机制,用于区别类名的命名空间。包的作用1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。3、包也限定了访问权限,拥

2017-12-24 21:06:39 913

原创 eclipse开发go语言入门案例

1、配置eclipse下配置GO语言的插件点击eclipse的“Help”菜单,找到“Install New Software…”菜单项。如下图: 点击“Install New Software…”菜单项,显示如下图:在“Work with”内输入:http://goclipse.github.io/releases/,直接点击回车按键即可;或者点击“Add…”按钮手动添加。如下图:在”Name“

2017-12-19 19:58:05 3063

原创 什么情况下Java对象才是已经死亡?

已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了;引用计数给对象添加一个引用计数器,每当有一个地方引用他,计算器就加1;当引用失效时,计数器减1;任何时刻计数器为0的对象就是死的对象。 1. 这种方式被很多技术所采用,如FlashPlayer(AS3)、Python等,但是Java没有采用这种算法,原因是它很难解决对象之间相互循环引用的问题,例如 ObjectA.p

2017-12-17 17:04:31 287

原创 顶尖程序员会遇到的面试问题

下面摘录一下顶尖程序员遇到的问题,后面会不定期发布一下答案,有知道答案的可以写在评论里面,当然答案不求详细尽量简洁,让我们在面试的时候可以提高成功率。直接写编号例如 一 1:答案 大家共同进步。一、数据结构与算法基础1.说一下几种常见的排序算法和分别的复杂度。 2.用Java写一个冒泡排序算法 3.描述一下链式存储结构。 4.如何遍历一棵二叉树? 5.倒排一个LinkedList。 6.用Java

2017-12-13 10:43:45 661 1

原创 Javascript静态页面的三种传值方式

cookie优点:可以在同源内的任意网页内访问.生命期可以设置.缺点:值长度有限制.Cookie是浏览器存储少量命名数据.它与某个特定的网页或网站关联在一起.Cookie用来给浏览器提供内存,以便脚本和服务器程序可以在一个页面中使用另一个页面的输入数据.这里推荐使用jquery的cookie.js下载与引入:jquery.cookie.js基于jquery;先引入jquery,再引入:jquery

2017-12-12 19:28:09 590

转载 通过METAMASK调试和发布智能合约指南》

转载一篇发布智能合约的指南原地址http://www.sohu.com/a/209216399_783969本文主要是针对有兴趣进行以太坊智能合约开发的技术爱好者,进行开发调试工具使用方面的指导。1.安装METAMASKMetaMask 是一款浏览器插件钱包,不需下载安装客户端,只需添加至浏览器扩展程序即可使用,非常方便,并且可以很方便的调试和测试以太坊的智能合约。1.1首先安装Google Ch

2017-12-10 15:26:06 8275 1

原创 Hotsopt对象探秘

创建对象的方式简单来讲分为两种,一种是new方式创建出对象。一种是通过指针的方式来创建对象。详细点来说new里面又有克隆和序列化和普通的new

2017-12-10 15:12:37 473

转载 哪种Map遍历方法更优?!—Map遍历方法的正确选择

我们都知道遍历Map一般有3种方法,values(),keySet()和entrySet(),常见的是keySet用的多,简单容易理解,entrySet()是返回Map中的静态内部类Entry类类型的Set实例,当然了你别说forEach,forEach只是一种代替for(int i=0;;)和while()遍历的一种方式,底层也是用迭代器实现的,只不过把部分东西隐藏了,建议大家平常开发中能用fo

2017-11-26 15:25:22 273

转载 Servlet生命周期与工作原理

Servlet生命周期分为三个阶段:  1,初始化阶段  调用init()方法  2,响应客户请求阶段  调用service()方法  3,终止阶段  调用destroy()方法Servlet初始化阶段:  在下列时刻Servlet容器装载Servlet:    1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的之间添加如下代码:1     2,在Serv

2017-11-25 11:27:22 219

原创 ElasticSearch环境搭建与运行

安装环境为centos,在安装Elasticsearch之前一定要先安装jdk1.8。因为他需要jdk1.8才可以运行起来。1.ElasticSearch5.6.1安装包的获取通过下面Elastic公司的官网获取ElasticSearch的安装包https://www.elastic.co/下面就是Elastic公司的主页,在主页上方,点击Products产品,就可以进入该公司的产品列表。进入El

2017-11-14 20:58:23 553

原创 初识Elasticsearch

1.Elasticsearch的概述Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发动机

2017-11-14 20:38:13 317

原创 Hadoop 2X伪分布式环境搭建

从0开始搭建一套伪分布式环境,然后跑一个程序验证一下环境是否搭建成功。1.hostname首先第一步查看自己的linux的houstname。如果没有的请设置一下vi /etc/hosts2.下载解压hadoop我这里下载的是hadoop2.5最好是下载2.X左右的,然后上传到自己的linux文件夹里面tar -zxf hadoop-2.5.0.tar.gz -C /opt/mudules/没有下

2017-11-08 21:31:18 284

原创 hadoop 2.x简单介绍

hadoopHadoop是什么?Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.大数据的四个特征:海量的数据规模,多样的数据类型,快速的数据流转,数据价值的体现。hadoop2x的核心模块Hadoop Comon: 为其他Hadoop模块提供基础设施Hadoop HDFS 一个高可靠,高

2017-11-08 21:29:21 817

原创 linux用户和用户组

Linux作为一种多用户多任务操作系统,在日常的使用中不可避免地要划分出一个角色的概念来管理和使用计算机,这个角色与每一个计算机使用者关联,在Linux中称这种角色为用户。而在每一个用户使用计算机的过程中,又必然存在对有限计算机资源使用的限制性,那么操作系统就必须提供一种途径来保证每个用户独立、合理的使用计算机。用户 UID 0标识root用户 普通用户通常从UID 500开始 用户名和UID信息

2017-10-29 16:34:30 464

原创 初识linux

初识Linux系统1.linux是一个功能强大的操作系统2.它是一个自由软件,是免费的,源代码开发的3.设计目标是建立不受任何商品化软件版权制约的,全世界都能自由使用的类unix兼容产品4.内核官网:http://www.kernel.org/常用的发行版本CentOs简介 CentOs是Linux的发行版之一,它安全,稳定,高效,CentOs根据Red Hat Enterprise Linux开

2017-10-25 11:39:04 252

转载 Zookeeper简单介绍

一、分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术。那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。这时,有人可能会说这个简单,写一个调 度算法就轻松解决了。说这句话的人,可能对分布式系统不是很了解,所以才会出现这种误解。如果这些进

2017-10-23 11:27:43 268

原创 nginx入门级详解及跨域问题的解决

代理和反向代理的概念?不知道有多少人跟我一样,对代理和反向代理蒙蔽的,今天就来给大家普及一下。在很久以前小明去吃饭,往往就是走进一家饭店然后打开菜单,点着他最爱的红烧肉,然后等着老板上菜,吃完交钱溜了溜了。这个时候小明和饭店是一对一的关系。客户和服务商之间完全透明化,小明知道这家餐馆的名字,餐馆也知道小明的名字。后来有了第三方订餐外卖平台(代理),小明懒得动身前往饭店,小明打个电话或用APP,先选

2017-10-18 15:47:54 550

原创 JVM虚拟机运行时数据区域的理解

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用户,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而创建和销毁。

2017-10-15 16:02:55 13855 11

原创 mysql Got error 28 from storage engine /usr/bin/mysqld_safe: line 183

mysql用的好好的忽然很蛋疼的给我来了一句,mysql Got error 28 from storage engine。后来一查才知道:Mysql Got error 28 from storage engine错误磁盘临时空间不够导致。  解决办法:  清空/tmp目录,或者修改my.cnf中的tmpdir参数,指向具有足够空间目录  linux版本是my.cnf,一般会放在/etc/my.

2017-10-12 17:53:15 834

原创 Java + 腾讯企业邮箱 + javamail发送邮件

搞了一上午终于搞定了腾讯云企业邮箱的发送,话说腾讯云的东西就是繁琐,但是好用,还是得认真看文档啊,不然真的摸不着北。腾讯企业邮箱官网:http://exmail.qq.com点击开通你跟着步骤走就行了,没啥难的,如果你没有域名,你就去买一个呗,也花不了多少钱的。注册成功后,是这个页面,并且会有一个弹窗告诉你一些信息现在你点击添加成员,因为你不添加成员的话你是无法发送邮件的。完成后是这样然后你打开腾

2017-10-11 14:35:31 21666

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