自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chenwch

大嘴巴子踢出去

  • 博客(39)
  • 资源 (7)
  • 收藏
  • 关注

原创 CAS

CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,

2021-03-30 10:02:49 424 1

原创 斐波那契数列-迭代及递归算法实现

斐波那契数列: 1、1、2、3、5、8、13......即 前两位相加之和,使用迭代算法和递归算法都可以实现斐波那契数列,输出数列中的第N项递归算法:递归在计算时存在着大量的重复计算,所以在N值很大时,可能会造成内存的溢出,以及计算时间较长的情况出现public static int Fibonacci(int i) { if(i <= 0) { return 0; } if(i == 1 || i == 2) { return 1; } ret...

2021-03-29 09:57:20 1895

原创 PM、PO、PO、PMO、PMP的区别和介绍

项目管理划分 PM PO PMO PMP 定义 产品经理 过程改进 项目管理办公室(Project Management Office,PMO) 认证 含义 PM主要的工作是做项目,项目中的一切都由项目经理负责,例如项目的目标、项目的进度、范围、质量、团队等等 PO是产品或业务负责人的意思,全称是Product Owner,即熟悉该产品所有业务相关的逻辑、流程、设置等方面事宜的人员,一般可由项目经理担任,也可由熟悉业务的开发人员担任。

2020-12-14 14:01:34 52795

原创 架构模式的演变

架构模式 单体架构 SOA架构 微服务架构 概念 前后端都在一个包里,所有的业务模块都耦合在一个项目里,大多数都是模块之间的调用,开发和部署都在一起,单个模块有更新,所有模块一起启停,而且对高并发、大数据处理能力比较弱 是为解决单体架构的弊端而延伸出来的架构,将应用中相近的功能模块聚合到一起,以服务的形式提供出去,服务于服务之间通过接口进行通信,其是面向服务的; 但是随着用户和数据量的进一步增长,SOA 也暴露出来一些缺点,比如 SOAP 协议、XML较重;服务管理不

2020-12-11 16:18:28 249

原创 Redis处理速度快的原因(从结构到实现)

Redis快的原因 总结 基于内存实现 数据都存储在内存里,减少了一些不必要的 I/O 操作,操作速率很快 高效的数据结构 1、底层多种数据结构支持不同的数据类型,支持 Redis 存储不同的数据 2、不同数据结构的设计,使得数据存储时间复杂度降到最低。 合理的数据编码 根据字符串的长度及元素的个数适配不同的编码格式 合适的线程模型 1、I/O 多路复用模型同时监听客户端连接; 2、单线程在执行过程中不需要进行上下文切换,减少了耗时。 基于内存实

2020-12-11 13:45:40 695

转载 Redis数据结构——压缩列表

前言#同整数集合一样压缩列表也不是基础数据结构,而是 Redis 自己设计的一种数据存储结构。它有点儿类似数组,通过一片连续的内存空间,来存储数据。不过,它跟数组不同的一点是,它允许存储的数据大小不同。一、压缩列表#听到“压缩”两个字,直观的反应就是节省内存。之所以说这种存储结构节省内存,是相较于数组的存储思路而言的。我们知道,数组要求每个元素的大小相同,如果我们要存储不同长度的字符串,那我们就需要用最大长度的字符串大小作为元素的大小(假设是20个字节)。存储小于 20 个字节长...

2020-12-08 16:19:50 115

原创 关系与非关系型数据库对比及分析

数据库 关系型 非关系型 定义 泛指采用了关系模型来组织数据的数据库。 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统;不同的表或库之间没有相关联性 非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合. 常见使用场景 更多偏向于OLTP场景 更多的偏向于OLAP场景 主流产品

2020-12-02 14:12:44 507

原创 Mysql常见优化手段(基于配置、建模、数据量、SQL语句)

影响数据库效率的因素有很多,可以分为几大类:配置优化1、存储引擎MySQL常用有两种存储引擎,一个是MyISAM,不支持事务处理,读性能处理快,表级别锁。另一个是InnoDB,支持事务处理(ACID),设计目标是为处理大容量数据发挥最大化性能,行级别锁。 表锁:开销小,锁定粒度大,发生死锁概率高,相对并发也低。 行锁:开销大,锁定粒度小,发生死锁概率低,相对并发也高。为什么会出现表锁和行锁呢?主要是为了保证数据的完整性,举个例子,一个用户在操作一张表,其他用户也想操作这张表,那么..

2020-11-18 15:45:01 404

原创 Redis的三个客户端框架比较:Jedis,Redisson,Lettuce

Jedis api 在线网址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.htmlredisson 官网地址:https://redisson.org/redisson git项目地址:https://github.com/redisson/redissonlettuce 官网地址:https://lettuce.io/lettuce git项目地址:https://github.com/lettuce-

2020-11-17 15:06:12 243

原创 什么是HikariCP?HikariCP介绍(包含配置示例)

什么是连接池数据库连接池负责分配、管理和释放数据库的连接。数据库连接复用:重复使用现有的数据库长连接,可以避免连接频繁建立、关闭的开销。 统一的连接管理:释放空闲时间超过最大空闲时间的数据库连接,避免因为没有释放数据库连接而引起的数据库连接泄漏。什么是HikariCPHikariCP 是一个高性能的 JDBC 连接池组件,号称性能最好的后起之秀,是一个基于BoneCP做了不少的改进和优化的高性能JDBC连接池。其作者还有产出了另外一个开源作品HikariJSON——高性能的JSON解析器

2020-11-06 17:11:12 27243 3

原创 项目实施各阶段交付物清单

项目阶段 优先级 交付物名称 启动 投标文件评审表 投标付款评审表 合同评审表 合同变更评审表 ★ 立项建议数据 ★★ 项目章程 ★ ...

2020-08-24 13:59:27 5779

原创 微服务相关整理,及spring cloud和dubbo的比较

当下微服务主要的优势如下:1、降低耦合及复杂度, 每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界2、可独立部署3、容错, 限流、熔断、降级4、扩展核心描述:服务提供方 Provider将自己要发布的服务注册到注册中心Registry,服务调用方Consumer启动后向注册中心Registry订阅它想要调用的服务,这时,注册中心Registry将其所管理的服务列表通知给到服务调用方Consumer(注册中心和提供方和调用方之间均保持长连接,可以获取Provi..

2020-05-22 16:57:29 271

转载 K8s是什么,能做些什么?

一、什么是kubernetes?Kubernetes是一款应用于集群的,容器自动部署、扩展和管理的开源平台,提供了一种以容器为中心的基础架构。利用kubernetes,你可以快速高效地响应客户如下请求:应用程序的动态、精准部署应用程序的动态扩展无缝推出新功能按需优化使用硬件资源我们的目标是提供一套减轻应用程序在公用云或私有云上运行负担的,生态环境的组件和工具。kuberne...

2019-11-04 16:38:00 804

原创 敏捷开发个人理解及简单执行流程

什么是敏捷开发?敏捷开发(Aglie Development)不是指某一种具体的方法论、过程或框架,而是一组价值观和原则。理解敏捷并不是一门具体的技术,而是一种理念或者说是一种思想,他可以指导我们更加高效的开发。再有,敏捷开发都具有以下几点的共同特征,如:迭代式开发 增量交付 开发团队和用户反馈推动产品开发 持续集成 开发团队自我管理等。最后,相比于传统研发模式,如:...

2019-10-31 15:57:27 606

原创 接口压测及代码质量检查

Apache JMeterhttps://www.cnblogs.com/molao-doing/articles/7202110.htmlidea插件findbugs 代码质量检查根据缺陷的性质,大致可以分为下列几类·Bad practice 不好的做法·Correctness 可能有不正确·Dodgy code 糟糕的代码·Experi...

2019-05-24 15:38:23 260

原创 二分法的时间复杂度计算

先说下定义O(log2n)与O(n)的区别O(log2n)含义说明:比如123456789,你要找2,首先查中间元素5,大于2,所以直接排除掉5右边的6789,然后在1234里继续二分查找。每次排除1/2的元素,所以是O(log2n)。O(n)含义说明:n是元素的个数,O(n)意味着你把每个元素都访问一遍,这样你当然可以找到要查找的数了。但是对于有序数组,没必要这样遍历整个数组。...

2019-05-09 17:26:34 20505 2

转载 Apache Ignite 与其他缓存比较

摘自:https://www.infoq.cn/article/apache-ignite-explorerhttps://newboy2004.iteye.com/blog/2259223在Ignite以前,大规模、大数据量、高并发企业级或者互联网应用为了解决数据缓存、降低数据库负载、提高查询性能等突出问题,很多采用了Hazelcast或者Oracle Coherence或者G...

2019-05-08 17:02:35 2179

原创 AtomicReference原子引用

说明AtomicReference是作用是对”对象”进行原子操作。提供了一种读和写都是原子性的对象引用变量。原子意味着多个线程试图改变同一个AtomicReference(例如比较和交换操作)将不会使得AtomicReference处于不一致的状态。AtomicReference和AtomicInteger非常类似,不同之处就在于AtomicInteger是对整数的封装,底层采用的是c...

2019-05-07 17:51:59 3077

原创 线程安全之AtomicBoolean

说明AtomicBoolean这个类,他是线程安全的,它的compareAndSet方法是利用CAS来实现线程安全的。方法public final boolean compareAndSet(boolean expect, boolean update) { int e = expect ? 1 : 0; int u = update ? 1 : 0; re...

2019-05-07 17:26:20 5033

原创 读写锁之ReentrantReadWriteLock

实现?ReentrantReadWriteLock并没有继承ReentrantLock,也并没有实现Lock接口,而是实现了ReadWriteLock接口,该接口提供readLock()方法获取读锁,writeLock()获取写锁。如何理解?读写锁,是对访问资源共享锁和排斥锁,一般的重入性语义为 如果对资源加了写锁,其他线程无法再获得写锁与读锁,但是持有写锁的线程,可以对资源加读锁(锁...

2019-05-07 17:08:43 146

原创 开放接口源码示例

方案timestamp+uid方案uid指唯一的随机字符串,用来标识每个被签名的请求。通过为每个请求提供一个唯一的标识符,服务器能够防止请求被多次使用(记录所有用过的nonce以阻止它们被二次使用)。流程说明签名生成1、调用方对上行的业务参数进行Aes方式加密,密钥由被调用方提供2、并按照请求参数名(不包含时间戳)的字母升序排列非空请求参数,最后拼接时间戳timesta...

2019-04-29 11:29:51 159

转载 在java中String类为什么要设计成final?

大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎String很多实用的特性,比如说“不可变性”,是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝继承,防止世界被熊孩子破坏,维护世界和平!1. 什么是不可变?String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl",不是在原内存地址上修改数据,而是重新指向一个...

2019-03-28 20:09:28 123

原创 位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:A = 0011 1100B = 0000 1101-----------------A&amp;b = 0000 1100A | B = 0...

2019-03-14 17:18:41 127

原创 mongodb 对数据去重后再进行统计

自身是mongo小白,对此问题,浏览好多博客文档,都没有找到太好的答案,汇总一下:distinct 只是去重,并不会统计,返回的是列表,如下db.clct.distinct("a");返回:"1","14","15","16","18"如果需要进行分组统计,可以用$groupdb.clct.aggregate([  {$group:{_id:&qu

2018-12-27 18:54:57 13328 2

原创 TP90,TP99,TP999含义

TP90就是满足百分之九十的网络请求所需要的最低耗时。TP99就是满足百分之九十九的网络请求所需要的最低耗时。同理TP999就是满足千分之九百九十九的网络请求所需要的最低耗时。...

2018-12-21 10:10:10 29280

原创 mysql 命令

服务相关net start mysql --启动服务net stop mysql --关闭服务连接Mysqlmysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)显示MYSQL的版本select version();创建相关操作mysql> create database db_n...

2018-12-18 12:01:07 104

转载 jdk1.8 List 去重

元素去重import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class DistinctSimpleDemo { public static void main(String[] args) { List&lt;String&gt; li...

2018-12-11 14:34:42 9028

原创 MongoTemplate 分页查询排序处理

import org.springframework.data.domain.Sort;Query query = new Query();query.with( new Sort(new Sort.Order(Sort.Direction.DESC,"modifiedtime"))); 

2018-12-11 10:54:38 3962 1

原创 shell命令

ps -ef|grep weblogic  查看 带weblogicexport LANG=zh_CN.GBK  转码  top   free  查看cpufind mt.cgi  查找文件名为mt.cgi的文件grep 'chenweichao' /export/Instances/bt_credit/server2/logs/catalina.out |wc -l  统计关键字...

2018-11-07 18:52:58 131

原创 mongoDB的一些基本命令操作

1、创建链接(bin路径下)   mongo host:port/dbname -u username -p password2、查看当前db的链接机器地址db.getMongo()3、查看mongoDB版本   db.version()4、显示当前db状态db.stats()5、查看当前所在数据库db;或者db.getName()6、显示当前数据库中的集合...

2018-11-07 18:04:39 293

转载 分布式-Paxos选举算法

转自:https://blog.csdn.net/xiaqunfeng123/article/details/51712983paxos算法背景  Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的”La”,此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法。由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后重新发表到...

2018-08-08 15:44:58 2275

转载 Redis分布式锁的正确实现方式

转自:https://www.cnblogs.com/linjiqin/p/8003838.html前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客...

2018-08-08 11:18:15 82

原创 OAuth简述

OAuth(Open Authorization,即开放授权),它是为用户资源授权提供了一种安全简单的标准。通俗点讲,就是说用户在访问第三方web或应用的时候,允许第三方在用户授权的前提下访问在用户在服务商那里存储的各种信息,第三方不会知道用户的信息,即 无需将用户的用户名和密码提供给该第三方网站。OAuth认证和授权的过程如下:1、用户访问第三方网站网站,想对用户

2018-01-05 16:45:11 254

原创 字符串与整数之间的转换

最近经常用到字符串与整数之间的转换,整理了一下,包含1、检验是否为整数2、字符串转为整数3、从字符串中提取数字直接上代码: /** * 检查是否为INT类型,已经对空进行处理 */ public static boolean isInt(String str){ return GenericValidator.isInt(str);

2018-01-05 16:03:28 648

原创 Java中的static关键字个人看法总结

static概括:方便在没有创建对象的情况下来进行调用方法/变量,而非static的变量和方法,只有实例存在才存在。没有this的方法,因为静态方法不依赖于任何对象就可以进行访问。在static方法内部不能调用非静态方法,反之可以,因为没有this,所以在静态方法中不能访问类的非静态成员变量和非静态成员方法。可以在没有创建任何对象的前提下,通过类本身来调用static方法,因为被sta

2018-01-05 11:13:16 252

原创 volatile理解及建议

volatile关键字保证了线程间共享变量的及时可见性,但在其整个执行过程并不保证同步,不保证其原子性,但会保证指令不会重新排序。

2018-01-04 09:15:02 393

原创 解决mongodb大数据量分页查询效率问题

最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,只能力不从心,skip如果跳过大量的数据会很慢,并且会越查越慢,针对这一情况,可以通过条件查询+排序+限制返回记录,即 边查询,边排序,排序之后,抽取上一页中的最后一条记录,作为当前分页的查询条件,从而避免了skip效率低下的问题。代码如下:/** * 大数据量排序...

2018-01-03 10:53:50 28935 13

原创 TPS、QPS、PV、UV等

TPS(吞吐量):单位时间内处理请求的数量,即 每秒处理的事务数。QPS:每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力;一般使用 http_load 进行统计。每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间,此时,峰值=( 总PV数 * 80% ) / ( 每天秒数 * 20% ) 。并发数:

2018-01-03 09:56:09 517 1

原创 如何知道MQ已消费完所有消息

最近做了个项目,碰到一个问题,目前已经解决,解决过程共享出来。项目中用到了MQ的中间件,每天大概生产700万+的消息,生产耗时需求是我要把当天的消费情况及时落地,问题在于我不知道什么时候消费完所有消息,最主要的是,我不想写定时任务。方案1:打标,就是在生产消息的时候把最后一条数据打标,从而在消费的时候能知道哪一条数最后一条数据,当执行完该条数据时,就可以进行数据落地操作,但

2018-01-02 17:48:18 5213

前后端加密传输方案.pdf

亲测可用,最低成本实现前后端数据传输2次动态加密方案。文档中描述了实现的具体步骤级流程。

2019-10-31

Redis入门-详解手册

Redis开发必备利器!写的非常详细,并且有相关事例,及初学者测试命令的网站,适合Redis初学者和进阶者使用!

2015-05-06

weblogic服务器应用

weblogic服务器应用,很详细,很全。

2012-09-26

设计模式之Singleton 模式.docx

描述设计模式之Singleton 模式的应、及举例说明了在JAVA中单利模式的具体应用。

2012-03-28

JAVA反射机制应用

描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。

2012-03-28

空空如也

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

TA关注的人

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