自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(149)
  • 资源 (12)
  • 收藏
  • 关注

原创 CAS

一、CAS简介   比较并交换(compare and swap, CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。 该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值。CAS算法涉及到三个操作数:需要读写的内存值 V。进行比较的值 A。...

2020-03-30 20:06:05 450

原创 synchronized关键字

https://tech.meituan.com/2018/11/15/java-lock.htmlhttps://juejin.im/post/5ae6dc04f265da0ba351d3ffhttps://leejay.top/posts/Synchronized%E9%94%81%E8%AF%A6%E8%A7%A3/

2020-02-14 15:27:15 286

原创 hiveh和presto中date_add

1、日期增加函数: date_add语法:hive>select date_add(‘2016-12-29’,10);presto>select date_add(‘day’, 1, TIMESTAMP ‘2014-03-08 09:00:00’);

2020-02-09 16:23:20 11680

原创 happen-before原则和as-if-serial语义

一、as-if-serial  as-if-serial语义的意思是:不管怎么重排序(编译器和处理器为了提供并行度),(单线程)程序的执行结果不能被改变。编译器,runtime和处理器都必须遵守as-if-serial语义。as-if-serial语义把单线程程序保护了起来,遵守as-if-serial语义的编译器,runtime和处理器共同为编写单线程程序的程序员创建了一个幻觉:单线程程序是按...

2020-01-21 16:09:44 694

转载 java中sleep和wait的区别

sleep()方法wait()方法  sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会;   sleep()是Thread类的Static(静态)的方法;因此他不能改变对象的机锁,所以当在一个Synchronized块中调用Sleep()方法是,线程虽然休眠了,但是对象...

2020-01-20 16:52:14 112

原创 java线程死锁/死循环分析方法

例程:package com.sample;public class Concurrent { private static String resource_a = "A"; private static String resource_b = "B"; public static void main(String[] args) { deadLoc...

2020-01-19 21:14:18 1130

原创 volatile关键字

一、volatile的作用在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。我们先看具体看一下这三个概念:原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。可见性:可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。有序性:即程序执行的顺序按照代码的先后顺序执行。通常情况...

2020-01-13 17:07:28 154 1

原创 单例双重锁的原因

class Singleton { private static volatile Singleton instance; private Singleton(){} public static Singleton getInstance() { if ( instance == null ) { synchronized (Sin...

2020-01-09 22:09:46 751

转载 MYSQL优化之explain详解

原文链接:MySQL优化之EXPLAIN详解 学习MySQL时我们都知道索引对于一个SQL的优化很重要,而EXPLAIN关键字在分析是否正确以及高效的增加了索引时起到关键性的作用。这篇文章显示了如何调用“EXPLAIN”来获取关于查询执行计划的信息,以及如何解释输出。EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法。这个功能有局限性,并不总会说出真相,但它的输出是可以获取的...

2019-12-19 20:04:31 349

原创 PECS原则

Producer Extends Consumer Super如果参数化类型表示一个生产者,就使用<? extends T>;如果它表示一个消费者,就使用<? super T>在阅读阿里巴巴Java开发手册时看到这个原则,于是就学习了一番.个人认为这个原则重点的地方在于理解List<? extends Fruit>和List<? super Appl...

2019-10-29 11:39:37 1031

原创 Spring MVC自定义注解给返回值加状态信息

进行Java Web开发时,需要在controller层的返回值加上状态信息;{ "code": "200", "msg": "success", "roleInfo": { "roleId": 1, "roleCode": "ITManager", "roleName": "IT部门管理员", "enabl...

2019-10-10 20:34:56 730

原创 GSON中JsonElement节点的toString()与getAsString()的区别

一、使用区别import com.google.gson.JsonElement;import com.google.gson.JsonObject;import com.google.gson.JsonPrimitive;public class GsonTest { public static void main(String[] args) { JsonE...

2019-09-29 21:31:56 2943

原创 Java常用工具:Guava

Guava为Java提供包括字符串处理、集合、并发、 I/O、反射等函数工具箱,自开源以来,越来越收到程序员的追捧,已成为Java开发必不可少的工具箱,这些高质量的API让你的代码优雅而漂亮。使用范例:package guava;import com.google.common.base.Joiner;import java.util.ArrayList;import java.ut...

2019-09-23 21:59:21 2915

原创 Java:JDK1.7和JDK1.8中HashMap扩容原理

一、扩容原理JDK1.8源码分析: final Node<K, V>[] resize() { Node<K, V>[] oldTab = table; //记住扩容前的数组长度和最大容量 int oldCap = (oldTab == null) ? 0 : oldTab.length; int ol...

2019-09-18 20:53:07 955

转载 Java源码分析:HashMap 1.8 相对于1.7区别

https://juejin.im/post/5aa5d8d26fb9a028d2079264

2019-09-18 17:42:38 147

原创 Java高效代码

需要 Map 的主键和取值时,应该迭代 entrySet()当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。反例:Map<String, String> map = ...;for (String key : map.keySet...

2019-09-13 19:30:18 412

原创 ArrayList扩容原理

一、ArrayList扩容ArrayList底层使用数组实现,当达到容量上限时,数组会扩容,然后将原数组数据拷贝到扩容后的数组。ArrayList扩容测试: @org.junit.Test public void arrayListCapacityTest(){ ArrayList<String> objects = new ArrayList<&g...

2019-09-13 12:39:29 669

转载 图解Java常用数据结构

https://www.cnblogs.com/xdecode/p/9321848.html

2019-09-13 00:17:11 123

原创 linux awk命令详解

linux awk命令详解

2019-09-11 21:17:21 106

原创 设计模式之工厂模式

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部...

2019-09-11 16:22:37 100

转载 Mybaties拦截器原理

MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能。那么拦截器拦截MyBatis中的哪些内容呢?

2019-09-11 14:54:38 296

转载 MyBaties原理

一、MyBaties框架设计MyBaties框架可分为四层:接口层数据处理层框架支撑层引导层注:图片来源《深入理解mybatis原理》二、接口层MyBaties接口层和数据交互有两种方式:使用传统的MyBaties提供的API使用Mapper接口2.1传统的MyBaties提供的API这是传统的传递Statement Id 和查询参数给 SqlSession 对象,...

2019-09-11 11:58:05 480

转载 Java中各种BO、POJO类

BO(Business Object)业务对象主要作用是把业务逻辑封装为一个对象,这个对象可以包括一个或多个其他的对象。比如一份简历,有教育经历、工作经历、社会关系等。可以把教育经历对应一个 PO,工作经历对应一个 PO,社会关系对应一个 PO,然后建立一个对应建立的 BO来处理简历,每个 BO 包含这些 PO,这样就可以针对 BO 去处理业务逻辑。DAO(Data Access Object...

2019-08-25 11:28:10 6972

转载 Java中如何判断两个对象是否相等

原文:https://www.dutycode.com/post-140.html如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解。从以下几个点来理解equals和hashCode方法:1、equals的作用及与==的区别。2、hashcode的作用及与equals的关系。1、equals的作用及与== 的区别。equals被用来判断两个...

2019-08-17 17:53:45 9540

原创 Java访问控制权限总结

一、为什么要访问控制  访问权限的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常被共同称作是封装。其结果是一种同时带有特征和行为的数据类型。  出于两个很重要的原因,访问权限控制将权限的边界划在了数据类型的内部。第一个原因是要设定客户端程序员可以使用和不可以使用的边界。可以在结构中建立自己的内部机制,而不必担心客户端程序员会偶尔地将内部机制当做是他们可使用的接口的...

2019-08-03 14:56:38 188

原创 MySql插入中文出错

错误提示:Incorrect string value: ‘\xE5\xB0\x8F\xE6\x98\x8E’ for column ‘username’ at row 1解决方法:alter table user convert to character set utf8;

2019-07-23 16:38:35 411

原创 zookeeper开启

zookeeper启动一定要使用root权限,否则无法启动

2019-07-22 20:24:44 71

原创 Java8 Lambda表达式

一、什么是Lambda表达式Lambda表达式允许把函数作为一个方法的参数,使代码变得更加简洁紧凑。二、Lambda表达式语法表达式的语法:(parameters) -> expression//接收一个参数x,返回x的2倍值(x) -> x * 2//接收两个参数,返回它们的差值(x, y)-> x - y三、函数式接口函数式接口是仅指定一个抽象方法的...

2019-07-18 17:50:49 58

原创 Java8新特性

Java8新特性主要包括以下:Lambda表达式把函数作为方法的参数;方法引用 提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。Stream API 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation...

2019-07-18 15:49:52 69

转载 子类重写方法不能抛出新的异常

主要是为了满足多态调用。子类和父类的关系是is-a。子类是一个父类,凡是使用父类的地方,也可以用子类代替。如果子类比父类多抛出异常,就破坏了这一原则。public class Parent { public void a() throws AException { }}public class Child extends Parent { public void a() throw...

2019-07-17 11:14:01 1248

转载 Java 8 中的 Streams API 详解

原文链接:Java 8 中的 Streams API 详解

2019-07-12 17:25:36 76

原创 Java反射详解

一、反射概述1.1 什么是反射当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。  要想解剖一个类,必须先要获取到该类的...

2019-04-18 15:58:26 94

原创 策略设计模式

一、策略设计模式简介策略设计模式的主要思想就是针对一组算法,将每个算法封装到具有共同接口的独立的类中,从而使它们可以相互替换。策略模式的最大特点是使算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。二、策略设计模式的组成抽象的策略略角色通常情况下是接口或者抽象类。具体策略角色继承抽象的策略角色,实现各自的具体的的算法和行为。环境角色内部持有抽象的策略角色的引用,接收客户端向环...

2019-01-24 17:54:00 147

原创 动态代理机制

一、动态代理简介代理类在程序运行时创建的代理方式被成为动态代理。 静态代理的代理类是自己定义好的,在程序运行之前就已经编译完成。然而动态代理,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。相比于静态代理, 动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法。—— 字节码对象级别的代理对象二、动态代理的构成...

2019-01-10 16:43:34 299

原创 JAVA过滤器Filter

一、filter的简介filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理。二、filter快速入门编写一个过滤器的类实现Filter接口实现接口中尚未实现的方法(着重实现doFilter方法)在web.xml中进行配置(主要是配置要对哪些资源进行过滤)三、Filter的API详解1.filter生命周期及其与生命周期相关的...

2019-01-07 14:20:31 329 1

原创 JAVA监听器Listener

一、什么是监听器监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等。监听器的相关概念:事件源:被监听的对象 ----- 三个域对象 request session servletConte...

2019-01-04 17:03:29 191

原创 JAVA四大域对象总结

JAVA四大域对象总结根据有作用范围由小到大:page(当前jsp页面)------》page域指的是pageContext.request(一次请求)—》request域request HttpServletContextsession(一次会话)—》session域session HttpSessionapplication(当前web应用)—》application域指的是appl...

2019-01-03 20:36:04 4614 1

原创 sql条件查询java实现

sql条件查询java实现public List&amp;amp;lt;Product&amp;amp;gt; searchByCondition(Condition condition) throws SQLException { QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource()); String sql = &amp;quot;select * f...

2019-01-03 15:45:04 1355

原创 request域中文乱码问题

一、乱码原因页面默认使用的是UTF-8的编码方式,服务器端默认使用 iso8859-1的编码方式二、解决方式1、表单是post方式提交时设置request的编码 request.setCharacterEncoding(&amp;quot;UTF-8&amp;quot;);2、表单是get/post方式提交时String username = request.getParameter(&amp;quot;username&amp;quot;);//乱...

2018-12-28 16:24:47 1740 1

原创 装饰者设计模式

装饰者设计模式此设计模式遵循的设计原则之一:类应该支持扩展,而拒绝修改;一、固定结构已知接口A和其实现类C,需要装饰者创建代理类B;创建类B,并实现接口A;提供类B的构造方法,参数类型为A,用于接收A接口的其他实现类C;给类B添加类型为A成员变量,用于存放A接口的其他实现类;增强需要的方法;实现不需要增强的方法,方法体重调用成员变量存在的其他实现类对应的方法。A a = ne...

2018-12-04 21:04:50 130

电子线路设计与测试实验报告

这是一个电子线路设计与测试的实验报告,非常详细

2015-12-17

信号发生器

基于mulitisum的信号发生器的设计,功能齐全

2015-12-17

音频功率放大器

基于multisum音频功率放大器的设计

2015-12-17

温度控制设计

基于multisum的温度控制设计仿真实验

2015-12-17

数字钟仿真实验

基于Multisum的数字钟仿真实验设计

2015-12-17

交通灯控制器

基于FPGA的交通灯控制器实验代码,直接可以使用。

2015-12-17

2.4寸TFT彩屏显示彩条实验

这是一个2.4寸TFT彩屏显示彩条实验代码,可以直接使用。

2015-12-17

读写FAT32文件系统的SD卡实验

这是一个读写FAT32文件系统的SD卡实验代码,可以直接使用

2015-12-17

LCD1602显示程序

基于FPGA的LCD1602显示程序,重新分配引脚即可直接使用。

2015-07-31

单片机最小系统原理图

单片机最小系统原理图与PCB图,可以使用的

2015-01-18

STC15F2K60S2

STC15F2K60S2的比较详细的数据手册

2015-01-18

基于FPGA的数字钟源程序

基于FPGA的已成功运行的数字钟源代码,

2014-08-11

空空如也

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

TA关注的人

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