自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 redis分布式锁原理以及实现

 概念:线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源...

2018-08-14 22:10:03 658

原创 判断点坐标是否在多边形坐标集合内算法整理

/** * @author yaoxin * @date 2018/7/30上午11:04 */public class CoordinateTest { public static void main(String[] args) { // 多边形经度数组 double[] lon = {113.314882,113.355845,113.37...

2018-07-30 11:39:30 1828

原创 mysql 悲观锁学习总结

概念在关系数据库管理系统里,悲观并发控制(又名“悲观锁”,Pessimistic Concurrency Control,缩写“PCC”)是一种并发控制的方法。它可以阻止一个事务以影响其他用户的方式来修改数据。如果一个事务执行的操作都某行数据应用了锁,那只有当这个事务把锁释放,其他事务才能够执行与该锁冲突的操作。悲观并发控制主要用于数据争用激烈的环境,以及发生并发冲突时使用锁保护数据的成本...

2018-07-28 09:45:16 2094 1

原创 Mysql 乐观锁学习总结

 概念:锁,即给我们选定的目标数据上锁,使其无法被其他程序修改。乐观锁和悲观锁只是个概念,并不是数据库自带的,需要我们去实现用来保证操作数据库时数据的一致性。悲观锁:指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。乐观锁不能解决...

2018-07-26 14:28:22 206

原创 一次mysql大数据量查询 慢查询导致服务阻塞后的学习

场景还原:前一个月给朋友写了个简单的登录功能,简单的查询数据库登录逻辑,使用mysbatis-plus进行的dao层代码生成(吐槽一下这个工具,真是方便一时爽,后面维护难,比较喜欢自己能够组装和优化sql,大数据量插入时候mybatis-plus性能极差都是生成的单条插入sql然后flush),没想到啊,哥们的应用流量这么,数据量这么多。。很多问题都是这样,在小数据量,低频访问时候都是正常的,一旦...

2018-05-27 16:47:34 8101 2

原创 使用crontab启动脚本守护tomcat进程

Crontab简介crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。crond 常常在后台运行,每一分钟检查是否有预定的作业需要执行一、安装yum -y install vixie-cronyum -y

2017-10-20 10:30:57 959

原创 Happen-Before规则

1、程序顺序原则:一个线程内保证语义的串行性eg:a = 1;b = a+1;2、volatile规则:volatile变量的写,先发生于读,这保证了volatile变量的可见性3、锁规则:解锁(unlock)必然发生在随后的加锁(lock)前4、传递性:A先于B,B先于C,那么A必然先于C5、线程的start()方法先于它的每一个动作6、线程的所有操作先于线程的终

2017-09-25 10:25:57 195

原创 公司最近常用Linux命令汇总

scp 从本地复制到远程service mysql stopservice mysql start./nginx -s reloadtar -zxvf ***.gzmysql 查看当天进程命令 show processlist;关闭linux防火墙1) 重启后生效开启: chkconfig iptables on关闭: chkconf

2017-09-18 12:02:19 379

原创 自定义线程安全的队列

自定义线程安全的队列 /** * 2.使用 wait notify 实现一个队列,队列有2个方法, * add 和 get 。add方法往队列中添加元素,get方法往队列中获得元素。 * 队列必须是线程安全的。如果get执行时,队列为空,线程必须阻塞等待,直到有队列有数据。 * 如果add时,队列已经满,则add线程要等待,直到队列有空闲空间。 */

2017-09-18 10:58:23 719

原创 阿姆达尔定律以及古斯塔夫森定律干货

阿姆达尔定律 Amdahl加速比定义:加速比 = 优化前系统耗时/优化后系统耗时Tn = T1(F+1/n(1-F))F串行比例 1-F 并行比例n处理器个数加速比 = T1/Tn 优化前耗时/优化后耗时1/(F+1/n(1-F))结论:增加CPU数量并不一定能起到有效的作用,提高系统内可并行的模块比重,合理增加并行处理器数量,才能以最小的投入,得到最大的加速比

2017-09-11 10:33:50 1396

原创 二分查找java代码实现

public static void main(String[] args) { Integer[] arr = new Integer[]{12,15,20,36,45,66,72,81,90}; int des = 22; int search = binarySearch(arr, des); System.out.println(search); int recurs

2017-09-03 18:02:02 821

原创 合并两个排好序的数组

public static void main(String[] args) { Integer[] a = {11,23,65,77,98}; Integer[] b = {22,42,64,72,79}; Integer[] c = new Integer[a.length+b.length]; merge(a, b, c); System.out.println("

2017-09-02 15:09:34 1186

原创 冒泡排序java代码实现以及俩个数进行交换时的三种方式

/** * 冒泡排序 时间复杂度 O(n^2) * * @param art * @return */ private static Integer[] bubbleSort(Integer[] art){ for (int i = 0; i < art.length; i++) { for(int j = i+1 ;

2017-09-02 11:52:04 248

原创 插入排序及归并排序java代码实现及详细注释

public static void main(String[] args) { // 定义无序数组 Integer[] arr = new Integer[]{12,14,56,89,11,66,99,3,6,34}; // 插入排序前 System.out.println("插入排序前"); Arrays.asList(arr).forEach(e -> System.ou

2017-09-01 20:13:26 464

转载 关于java中Double类型的运算精度问题

问题的提出:如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.println

2017-08-03 12:10:05 236

原创 微信web通信协议 selector=0-7 处理方案

if (arr[1] == 1 || arr[1] == 4 || arr[1] == 5){ JSONObject data = wechatService.webwxsync(wechatMeta);}else if (arr[1] == 2 || arr[1] == 3 || arr[1] == 6){ JSONObject data = wechatService.web

2017-07-28 11:55:31 1453 2

原创 nginx搭建干活

什么是nginxNginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。应用场景1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。2、虚拟主机。可

2017-07-28 10:34:02 222

转载 IOC容器学习篇

Spring 框架Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。图 1. Spring 框架的 7 个模块组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:核心容器:核心容器提供 S

2017-07-28 10:14:16 221

转载 如何重构“箭头型”代码

本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法。按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得很多东西可以从一个简单的东西出发,到达本质,所以,我觉得有必要在这里写一篇的文章。不一定全对,只希望得到更多的讨论,因为有了更深入的讨论才能进步。文章有点长,我在文章最后会给出相关的思考和总结陈词

2017-07-26 12:03:41 785

转载 JAVA中的单例设计(Singleton)模式

一、单例模式有以下特点:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。 二、懒汉式//懒汉式单例类.在第一次调用的时候实例化自己    public class Singleton {      private Singleton() {}       private static Singleton

2017-07-25 19:39:46 203

转载 重构-改善既有代码的设计 读后总结

重构-改善既有代码的设计,这本书是很多公司要求JAVA程序员必读的三本书之一(另外两本书是《Java编程思想》和《Effective Java》)前言看到别人的代码时感觉就像屎一样,有一种强烈的想重写的冲动,但一定要压制住这种冲动,你完全重写,可能比原来的好一点,但浪费时间不说,还有可能引入原来不存在的Bug,而且,你不一定比原来设计得好,也许原来的设计考虑到了一些你没考虑到的

2017-07-21 18:39:15 2987

大败局mobi

莫名其妙,读《大败局》1.2读出了武侠小说的味道,高手过招,场面最是荡气回肠,手眼最是欲壑难填。成也萧何,败也萧何。

2018-05-08

Java 图片镜像翻转源码

通过将图片解析成二维数组,然后对二维数组一维数组逆序,进而实现镜像翻转

2018-05-07

空空如也

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

TA关注的人

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