- 博客(24)
- 收藏
- 关注
转载 高并发下接口的并发问题
事故 前些天上线的扫码送会员活动。 场景:用户登录账号之后,扫二维码,送七天黄金会员,限制每个帐号只能领取一个 有恶意用户刷接口,在高并发下越过限制。 原因 领取会员流程: 1.后端先生成卡卷,将卡号放到消息队列中 2.用户扫码请求领取会员接口 2-1).先检查用户是否已经领取过该活动会员 2-2).领取过...
2017-05-23 17:11:00
899
转载 正则表达式
正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。 所以我们判断一个字符串是否是合法的Email的方法是: 创建一个匹配Email的正则表达式; 用该正则表达式去匹配用户的输入来判断是否合法。 在正则表达式中,如果直接给出字符,就是精确匹配...
2017-03-08 15:54:00
130
转载 电子商务模式B2C/C2C/B2B/O2O
1、什么是B2C B2C是英文Business-to-Consumer(商家对客户)的缩写,而其中文简称为商对客。商对客是电子商务的一种模式。这种形式的电子商务一般以网络零售业为主,主要借助于互联网开展在线销售活动。 一般是商家与顾客之间的商务活动,也就是通常所说的“网上购物网站”。企业、商家可充分利用电子商城提供的网络基础设施、支付平台、安全平台、管理平台等共享资源有效地、低成本地...
2017-03-07 17:09:00
719
转载 Python数据结构——栈
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。 由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元素,必须先拿掉上面的元素。 对栈的两种主要操作是将一个元素压入栈和将一个元素弹出栈。入栈使用push()方法,出栈使用pop()方法。下图演示了入栈和出栈的过...
2017-03-02 16:57:00
87
转载 C/S模式和BS模式是什么?
C/S是Client/Server,即客户端/服务器;B/S是Browser/Server,即浏览器/服务器的意思。 C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Serv...
2017-01-18 11:03:00
2549
转载 RPC
RPC 功能目标 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。 下面我们将具体细化 stub 结构的实现。 什么是rpc RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过...
2017-01-12 10:00:00
101
转载 Memcache
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。 转载于:https://www.cnblogs.com/zhaoding/p/6272790.html...
2017-01-11 11:05:00
57
转载 python supervisor使用
Supervisor是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上。Supervisor 官方版目前只能运行在 Python 2.4 以上版本,但是还无法运行在 Python 3 上,不过已经有一个 Python 3 的移植版supervisor-py3k。 在一个分布式环境中,每台机器上可能需要启动和停止多个进...
2017-01-06 18:21:00
146
转载 代码规范
代码之丑(一)——让判断条件做真正的选择 if (0 == retCode) { SendMsg("000", "Process Success", outResult); } else { SendMsg("000", "Process Failure", outResult); } 看出来问题了吗?经过仔细的对比,我们发现,如此华丽的代码,if/e...
2017-01-05 15:33:00
74
转载 值传递,引用传递
java 对于 8种基本类型 和 他们的包装类型 , 外加 String 类型 ,都是 值传递,没有引用传递 。即:传到一个方法里时,都是拷贝了一份,所以无法在一个方法里修改他们 的值 如果传递的是对象的话,也就是引用,那么其实是拷贝这 个对象的一个引用,修改会引起变化。 例子: Java代码 package Demo; /** * User: li...
2017-01-05 14:24:00
65
转载 格式化数字
public static void main(String[] args) { DecimalFormat decimalFormat = new DecimalFormat("00000"); System.out.println(decimalFormat.format(21)); } 转载于:https://ww...
2017-01-05 11:31:00
67
转载 web.xml中load-on-startup的作用
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <...
2017-01-05 11:29:00
72
转载 ExecutorService线程池
ExecutorService 建立多线程的步骤: 1。定义线程类 class Handler implements Runnable{} 2。建立ExecutorService线程池 ExecutorService executorService = Executors.newCachedThreadPool();或者int cpuNums = Ru...
2017-01-05 11:27:00
71
转载 201404转成 2014.04
public static void main(String[] args) throws ParseException{ //先转成日期 String fmt = "yyyyMM"; SimpleDateFormat sdf = new SimpleDateFormat(fmt); Date da...
2017-01-05 11:04:00
73
转载 DBCP连接池配置示例
<bean id="dataSourceOracle2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${jdbc.oralce.driverClassName...
2017-01-05 11:03:00
313
转载 java 写文本换行
import org.apache.commons.io.FileUtils; public static void main(String[] args) throws IOException { File file = new File("c:\\1\\2\\3\\4.txt"); FileUtils.writeStringToFil...
2017-01-05 10:59:00
429
转载 打印IP 来源
<% String userAgent = request.getHeader("User-Agent"); if (userAgent != null && userAgent.indexOf("http") == -1 && userAgent.toLowerCase().indexOf("spider") == -1) { ...
2017-01-05 10:47:00
79
转载 MySQL分库分表的一些技巧
分表是分散数据库压力的好方法。 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库。 当然,首先要知道什么情况下,才需要分表。个人觉得单表记录条数达到百万到千万级别时就要使用分表了。 1,分表的分类 1>纵向分表 将本来可以在同一个表的内容,人为划分为多个表。(所谓的本来,是指按照关系型数据库的第三范式要求,是应该在同一个...
2017-01-05 10:26:00
75
转载 MySQL分库分表总结
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间...
2017-01-05 10:25:00
210
转载 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。 水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失; 负载均衡策略:可以降低单...
2017-01-04 17:31:00
65
转载 数据库分库分表(sharding)系列(一) 拆分规则
第一部分:实施策略 数据库分库分表(sharding)实施策略图解 1. 垂直切分垂直切分的依据原则是:将业务紧密,表间关联密切的表划分在一起,例如同一模块的表。结合已经准备好的数据库ER图或领域模型图,仿照活动图中的泳道概念,一个泳道代表一个shard,把所有表格划分到不同的泳道中。 2. 水平切分垂直切分后,需要对shard内表格的数据量和增速进一步分析,以确定是否需...
2017-01-04 17:27:00
234
转载 数据库Sharding的基本思想和切分策略
一、基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多...
2017-01-04 14:50:00
75
转载 学习JVM GarbageCollection
前言 Java和C++之间显著的一个区别就是对内存的管理。Java和C++把内存管理的权利赋予给开发人员的方式不同,Java拥有一套自动的内存回收系统(Garbage Collection,GC)简称GC,可以无需开发人员干预而对不再使用的内存进行回收管理。垃圾回收技术(以下简称GC)是一套自动的内存管理机制。当计算机系统中的内存不再使用的时候,把这些空闲的内存空间释放出来重新...
2016-12-30 11:23:00
57
转载 数据库为什么要分库分表
数据库为什么要分库分表 基本思想之为什么要分库分表?数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。 ...
2016-12-28 17:11:00
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人