自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JimmyU1的专栏

用博客监督自己

  • 博客(41)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

原创 Java并发编程-基础篇

1. JVM与线程安全可见性:当多个线程对一个线程进行操作的时候,其中一个线程修改了变量的值,而其他的线程并不知道该值已经被修改可见性-synchronizedJMM关于synchronized的两条规定:1、线程解锁前,必须把共享变量的最新值刷新到主内存2、线程加锁时,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值(注意:加锁与解锁是同一把锁)可见性-...

2019-10-23 19:49:04 7454 9

原创 使用python向C语言的链接库传递数组、结构体、指针类型的数据

使用python向C语言的链接库传递数组、结构体、指针类型的数据由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来调用C语言的代码库。 至于如何调用基础数据类型的数据,请大家参考我的另外一篇文章:python使用ctypes调用C/C++1. 使用python给C语言函数传递数组类型的参数想必很多时候,C语言会使用

2017-08-04 17:11:36 17730 3

原创 LeetCode-removeOuterParentheses

问题描述概括一下就是去除由多层括号组成的字符串中最外层的括号。以下是原文描述:Return S after removing the outermost parentheses of every primitive string in the primitive decomposition of S.Example 1:Input: "(()())(())"Output: "()()()...

2019-11-17 15:45:41 177 1

原创 Mac环境下安装Yaf拓展

因为公司使用的框架安装Yaf,所以必须安装Yaf拓展。1. 下载Yaf拓展源码源码地址:https://github.com/laruence/yaf.git然后下载到本地之后,解压,进入到其目录下2. 安装进入到其目录下依次执行:phpize./configure --with-php-config=/usr/bin/php-configmake make install...

2019-11-17 15:30:28 476

原创 Redis的数据结构

概述Redis作为时下最流行的nosql数据库,是开放打怪必备的中间件神器。本文将为大家介绍在Redis各种数据是如何存储的。在Redis中存在各种数据结构,主要的几种结构为Dict、dictht、dictEntry、sds、redisObject。在Cluster模式下,一个Redis实例对应一个RedisDB(db0);一个RedisDB对应一个Dict;一个Dict对应2个Dic...

2019-08-18 19:07:59 146

原创 MySQL慢查询优化经验

MySQL慢查询优化经验引言由于工作中一直在做稳定性相关的工作,在一点一点梳理线上的MySQL慢查询,发现目前线上各个服务都存在很多的慢查询。有些慢查询情况很严重,已经严重影响了线上服务的性能。什么是慢查询?慢查询是什么?在理想状态下,MySQL查询的执行耗时都在毫秒以下,如果执行超过1毫秒,那么出现这样长耗时的SQL就需要值得高度注意了。最近有一个团队的线上报了一条执行耗时长达15秒的...

2019-08-04 00:01:58 319

原创 docker常用命令

镜像常用命令在镜像仓库查找镜像: docker search $IMAGE_NAME从镜像仓库拉取镜像:docker pull $IMAGE_NAME查看当前所有镜像:docker images删除镜像:docker rmi $IMAGE_ID/$IMAGE_NAME强制删除镜像: docker rmi -f $IMAGE_ID/$IMAGE_NAME容器常用命令:新建并启动...

2019-07-12 23:52:14 90

原创 composer install和update的使用经验

安装 installcomposer install是从composer.lock读取第三方组件及其版本,并将其安装到vendor目录下。如果composer.lock文件不存在,则读取composer.json第三方组件及其版本,然后安装到vendor目录下。更新 updateupdate是直接从composer.json获取第三方组件及其版本,然后更新composer.lock文件。...

2019-05-22 08:37:22 7639

原创 php内核-数据类型之数组

php数组的底层实现为散列表(HashTable)散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。了解更多:https://zh.wikipedia.org/wiki/哈希表HashTab...

2019-05-05 21:34:41 256

原创 php内核-数据类型之字符串

php中字符串的结构type struct _zend_string zend_string;struct _zend_string { zend_refcounted_h gc; zend_ulong h; /* hash value */ size_t len; char ...

2019-04-28 21:11:21 216

原创 php内核-数据类型

结构体&联合体结构体内每一个变量都独占一块内存,并保持内存对齐联合体内所有变量公用同一块内存,占用内存大小为联合体中占用内存最大的变量的内存大小zvalzval定义每个变量的结构定义struct _zval_struct { zend_value value; /* value 变量值*/ union { ...

2019-04-28 08:43:30 217

原创 Java并发编程-精通篇(线程池)

1. 线程池原理线程池的创建public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ...

2019-02-16 23:50:19 223

原创 Java并发编程-精通篇(工具类)

常用的Concurrent同步工具类CountDownLatchCyclicBarrierSemaphoreExchangerReentrantLockReentrantReadWriteLock1.CoundDownLatch线程安全计数器。允许一个或多个线程等待一系列的操作完成。给一个指定数值初始化,然后通过countDown()方法将计数器减一。通过await()方法,线...

2019-02-16 13:27:51 611

原创 Java并发编程-进阶篇(下)

本章节主要讲解的是常用的并发队列ConcurrentLinkedQueue并发无阻塞队列BlockingQueue是并发阻塞队列1. 无阻塞队列 ConcurrentLinkedQueue无阻塞、无锁、高性能、无界、线程安全,性能优于BlockingQueue,不允许null值。内部使用的链表存储数据,因此不会有容量限制。static final class Node<E>...

2019-01-24 22:20:08 262

原创 Java并发编程-进阶篇(上)

1. volatile关键字与可见性强制线程到共享内存中读取数据,而不是从线程工作内存中读取数据,从而使变量在多个线程中可见。无法保证原子性,属于轻量级的同步。性能比synchronized强很多(不加锁),但是只保证线程的可见性,并不能代替sychronized的同步功能。2. static与volatilestatic 保证唯一性,不保证一致性,多个实例共享一个静态变量。volati...

2019-01-21 00:56:04 316

原创 常用开发工具安利

本文简单整理了一下常用的开发IDE以及相关辅助开发的工具。1. zsh + oh-my-zshzsh一般的linux和mac OS都会内置,但是需要手动开启。开启的命令为:chsh -s /bin/zsh然后安装oh-my-zsh即可:使用curl命令安装sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh...

2019-01-19 22:36:44 277

原创 Java并发的CAS原理与ABA问题

CAS原理在计算机科学中,比较和交换(Compare And Swap)是用于实现多线程同步的原子指令。 它将内存位置的内容与给定值进行比较,只有在相同的情况下,将该内存位置的内容修改为新的给定值。 这是作为单个原子操作完成的。 原子性保证新值基于最新信息计算; 如果该值在同一时间被另一个线程更新,则写入将失败。 操作结果必须说明是否进行替换; 这可以通过一个简单的布尔响应(这个变体通常称为比较...

2019-01-19 10:48:10 230

原创 MyBatis脑图概览

2019-01-14 23:07:16 171

原创 Spring Aop脑图总结

2019-01-02 22:12:52 192

原创 kafka入门

kafka入门操作系统:ubuntu 18.041. 下载安装1.1 安装zookeeper由于kafka依赖zookeeper,在安装kafka之前需要安装zookeeper。zookeeper下载地址: https://zookeeper.apache.org/releases.html#download下载之后解压到指定位置即可。1.2 安装Java jdk同时,ka...

2018-10-29 23:36:24 115

原创 RESTful规范理解

RESTful规范理解URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。识别(identify)、 表示(represent) 、交互(interact with)。看url就知道要什么看http method就知道干什么看http status就知道结果如何1. 使用URL定位资源RESTful风格的URL用于指定资源,URL中只能使用名词的组...

2018-10-13 10:29:02 1303

原创 nginx实践

Nginx负载均衡实践本次实践是为了体验在目前分布式集群的环境部署的条件下,使用nginx实现负载均衡配置,体验服务器集群处理请求操作的过程。一、服务器环境搭建本次实践使用了两台AWS服务器,每台机器上部署了相同的服务,并且在其中一台机器上搭建了nginx,进行负载均衡。1.创建虚拟机本次实验选择的虚拟机的操作系统是ubuntu 16.04 LTS,创建虚拟机的操作比较...

2018-08-19 19:41:27 333

原创 LeetCode-Add Two Numbers

LeetCode-Add Two NumbersDescriptionYou are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit

2018-01-11 11:50:11 197

原创 Java设计模式-六大设计原则

Java设计模式的设计原则单一职责原则单一职责原则的英文名称是Single Responsibility Principle,简称SRP。1. 定义 单一职责原则的定义:应该有且仅有一个原因引起类的变更。单一职责原则要求类的设计、接口的设计、方法的设计都是满足单一职责原则,就是要保证类、接口、方法只做一件事或者是同一类型、同一职责的操作。2. 优点类的复杂度降低,实现什么职责都有清晰明确的定

2018-01-09 13:41:27 780

原创 Java设计模式-工厂方法模式

Java设计模式-工厂方法模式1. 定义 定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工具方法使一个类的实例化延迟到其子类。 工厂方法模式通用类图2. 实例在我们日常生活中,很多的工厂会用来生产产品,并进行组装。我们这里有一个生产机床(Creator)生产三种不同的产品(ProductA、ProductB、ProductC)。车间工人在生产的时候只需要根据使用情况,输入需要生

2018-01-03 16:03:23 212

原创 Java设计模式-单例模式

Java设计模式之单例模式单例模式(Singleton Pattern)是一个比较简单的设计模式,主要是为了保证在系统运行过程中,程序只能提供一个对应该类的实例1. 单例模式的实现1.1单例模式的通用UML图1.2 饿汉模式所谓“饿汉模式”就是无论程序是否需要调用这个实例,JVM在类加载过程之后就会创建这样一个实例。 //饿汉模式 publ

2017-12-31 15:20:57 231

原创 Java设计模式概述

Java设计模式概述1. 什么是设计模式设计模式是一套理论,由软件界的前辈总结出的一套可以反复使用的经验,以此来提供代码的可重用性、可维护性和可拓展性。2.为什么使用设计模式1、设计模式是前人根据经验总结出来的,使用设计模式,就相当于是站在了前人的肩膀上。 2、设计模式使程序易读。熟悉设计模式的人应该能够很容易读懂运用设计模式编写的程序。 3、设计模式能使编写的程序具有良好的可扩展性,满足系统设

2017-12-31 14:16:14 181

原创 基于Java语言实现Socket通信

基于Java语言实现Socket通信由于近日项目需求,需要在服务器中增加Socket通信的功能,接收硬件设备发送的心跳包和相关数据,因此又重新对Java的网络编程进行了复习,根据项目的实际情况做了简化的编程,实现了简单的通信过程。1. Socket通信原理源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。 以下是通过Socket套接字实现客户端与

2017-11-13 17:23:21 5101

原创 基于Ubuntu系统的Java Web应用环境搭建

基于Ubuntu系统的Java Web应用环境搭建由于最近接触了一些项目,需要自己发布应用到服务器上,这篇博客记录一下搭建的过程。 我是用的阿里云服务器(免费领取的半年使用),系统是ubuntu 16.04 LTS, 连接工具使用的是XShell。部署的过程主要有一下几个方面的内容: - 搭建Java开发环境 - 部署Tomcat - 部署mysql服务器1.安装Java JDK本次安装Jav

2017-11-01 20:10:48 852 1

原创 Spring概述

Spring概述Spring是为企业Java最流行的应用程序开发框架。数以百万计的世界各地的开发人员使用Spring框架来创建高性能,易于测试的,可重用的代码。 Spring为企业应用的开发提供了一个轻量级的解决方案。该解决方案方案包括:基于依赖注入的核心机制,基于AOP的声明事物管理与多种持久层技术的整合,以及优秀的Web MVC框架等。 Spring为Java EE应用的表现层、业务逻辑层和

2017-10-19 22:59:52 252

原创 Android Studio文件目录

Android Studio文件目录说明1. 文件目录结构2. 目录文件说明2.1 .gradle & .ideaAndroid Studio自动生成的文件2.2 app项目文件代码、资源等内容2.3 build编译自动生成的文件2.4 gradlegradle wrapper的配置文件,使用gradle wrapper的方式需要提前将gradle下载好,而是会根据本地的缓存情况决定是否需要联网下载

2017-10-18 14:28:24 1167

原创 在Windows Server下搭建Gitblit服务器

在Windows Server上搭建Gitblit服务器由于使用惯了git进行版本控制,但是又不能把单位的代码挂到github上开源,所以就用之前一天闲置的服务器着手搭建了一个gitblit服务器。由于闲置的服务器是Windows Server 2012,所以就直接在上面搭建好了。1. 为什么是Gitblit其实我很喜欢GitLab的界面(毕竟这是一个看脸的时代),但是人家不支持你使用的Window

2017-08-07 16:44:20 2578 1

原创 python使用ctypes调用C/C++

python使用ctypes调用C/C++1. ctpes介绍ctypes is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap the

2017-07-19 22:23:18 5934 3

原创 Ubuntu虚拟机下使用cutecom进行串口通信

Ubuntu虚拟机下使用cutecom进行串口通信1. 安装cutecom使用以下命令安装cutecom sudo apt-get install cutecom调用以下命令打开cutecom sudo su cutecom打开的cutecom如下图: 其中,Device位置的如果使用USB转串口,需要手动填写路径/dev/ttyUSB0 2. 为虚拟机添加串口在

2017-07-03 16:09:33 1257

原创 链表中倒数第k个结点

链表中倒数第k个结点1. 题目描述输入一个链表,输出该链表中倒数第k个结点。2. 解题思路由于是单链表,遍历链表只能顺序遍历,也不能随机的访问要求输出的是倒数第K个结点,可以将其换算成正向数的结点首先需要计算出链表中一共有多少个结点节点数减k就是该结点在链表中的位置(从0开始)正向遍历链表即可解决问题3. 解题代码/*public class ListNode { int va

2017-05-18 20:32:53 548

原创 用两个栈实现队列

用两个栈实现队列1. 题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 考察内容:队列,栈2. 解题思路栈是一种后进先出的数据结构队列是一种先进先出的数据结构当一个元素位于队列的front和栈的top时,会被率先退出数据结构一个元素会率先被存储在栈的top和队列的rear因此,当两个栈中存储以相反的次序存储相同的元素时,就实现了队列3.

2017-05-08 23:42:47 518

原创 调整数组顺序使奇数位于偶数之前

调整数据顺序使技术位于偶数之前1. 题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。2. 题目分析该题目类似于一个选择排序,将奇数选择出来,放置于数据前面的位置,保持其他未被选择的元素的相对位置不变; 1. 遍历数组,当数组元素为奇数是进行处理,判断条件为 n % 2

2017-05-08 23:41:59 269

原创 变态跳台阶

变态跳台阶1. 题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。2. 题目分析f(1) = 1f(2) 会有两个跳得方式,一次1阶或者2阶,这回归到了问题f(1),f(2) = f(2-1) + f(2-2)f(3) 会有三种跳得方式,1阶、2阶、3阶,那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下f(3

2017-05-08 23:41:16 224

原创 AJAX在jQuery中的应用

AJAX在jQuery中的应用1. $.ajax()方法$.ajax()方法是一个功能十分强悍的一个底层方法,基于该方法实现的$.get()和$.post()都是常用的向服务器请求数据的方法。1.1 $.ajax()中的参数及使用方法$.ajax()调用的语法格式为: $.ajax([options]) 其中,可选参数[options]作为$.ajax()方法中的请求设置,其格式为k

2017-02-27 17:27:57 318

原创 Hibernate框架整合JPA注解基础实践

Hibernate框架整合JPA注解基础事件1.JPA注解Entity @javax.persistence.Entity(name=”xxx”)name指定实体Bean的名称,默认值为 bean class 的非限定类名,select o from xxx o where o.id=?1Table @javax.persistence.Table(catalog=”xx”,

2017-02-24 23:33:49 512

阿里巴巴Java开发手册

这是阿里巴巴的Java开发团队在开发过程中执行的开发规范,里面包括了Java开发、数据库开发等规范与约束,希望大家可以相互借鉴和学习。

2017-03-01

PRIME算法源代码

因该是prim算法 假设V是图中顶点的集合,E是图中边的集合,TE为最小生成树中的边的集合,则prim算法通过以下步骤可以得到最小生成树:         

2014-07-29

大数据时代PDF

最早提出“大数据”时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。” “大数据”在物理学、生物学、环境生态学等领域以及军事、金融、通讯等行业存在已有时日,却因为近年来互联网和信息行业的发展而引起人们关注。[2] 大数据作为云计算、物联网之后IT行业又一大颠覆性的技术革命。云计算主要为数据资产提供了保管、访问的场所和渠道,而数据才是真正有价值的资产。企业内部的经营交易信息、互联网世界中的商品物流信息,互联网世界中的人与人交互信息、位置信息等,其数量将远远超越现有企业IT架构和基础设施的承载能力,实时性要求也将大大超越现有的计算能力。如何盘活这些数据资产,使其为国家治理、企业决策乃至个人生活服务,是大数据的核心议题,也是云计算内在的灵魂和必然的升级方向。

2014-07-29

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

TA关注的人

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