随笔分类 - java
摘要:在我们日常的编码中,多线程一直是一个令人头大的问题,今天小鸟来给小伙伴们介绍一下多线程的基本知识。 提到多线程,那么就先得弄清楚线程的概念。从Java程序的角度来说,整个运行起来的程序就是一个总的进程,而进程就是操作系统分配资源的最小单位。线程是进程中的一部分,一个进程中可以有很多个线程,这些线程共
阅读全文
摘要:package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.util.Map; /** * JSON字符串自动转换 * */
阅读全文
摘要:相信很多小伙伴现在处理数据交互的时候都喜欢使用JSON,因为它使用方便易读,结构简单,语言无关。但是在使用JSON数据的过程中难免会遇到这样的问题,那就是我要发送/接受的JSON是否满足相应的格式要求。比如这个JSON数据中某个字段我不希望它是null的,某个字段的类型我希望它是Int而不是Stri
阅读全文
摘要:JSON字符串与Map、List的互相转换 import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com
阅读全文
摘要:背景: 复杂的AJAX应用程序可以与数百个不同的JSON服务进行交互,因此,引入对客户端验证的需求。 在处理校验问题方面有着很多的工具,但是通常可以将它们归为以下几类: * 判断数据是否已被正确格式化 * 手动检查形式有误的数据并尝试纠正 * 手动检查形式有误的数据并将有误数据丢弃 * 自动检查形式
阅读全文
摘要:概要 在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。在限流时,常见的两种算法是漏桶和令牌桶算法算法。 限流算法 令牌桶(Token B
阅读全文
摘要:引言 昨天一位公众号粉丝和我讨论了一道面试题,个人觉得比较有意义,这里整理了一下分享给大家,愿小伙伴们面试路上少踩坑。面试题目比较简单:“让你实现一个附近的人功能,你有什么方案?”,这道题其实主要还是考察大家对于技术的广度,本文介绍几种方案,给大家一点思路,避免在面试过程中语塞而影响面试结果,如有不
阅读全文
摘要:并发工具——CyclicBarrier 本博客系列是学习并发编程过程中的记录总结。由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅。 并发编程系列博客传送门 CyclicBarrier简介# CyclicBarrier也是JDK并发包中提供的一个辅助并发工具类。Cyclic
阅读全文
摘要:测试代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5
阅读全文
摘要:目录1. 反射机制的概念2. 反射的基础Class类3. 反射的用法4. 反射的应用示例 作者简介:全栈学习笔记,一个正在努力的人 反射机制的概念: 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态
阅读全文
摘要:CAS底层原理 概念 CAS的全称是Compare-And-Swap,它是CPU并发原语 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的 CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮
阅读全文
摘要:RPC远程过程调用可以说是分布式系统的基础,本文将通过Java演示一次普通的rpc调用到底发生了什么。 我曾经在网上看到有人提问,为什么RPC要叫作远程过程调用,而不叫作RMC远程方法调用。个人认为RPC的叫法才是合理的,远程调用的是某个过程,不一定是一个具体的方法,你只要看过第一个版本的代码就能懂
阅读全文
摘要:某日,胖滚猪写的代码导致了一个生产bug,奋战到凌晨三点依旧没有解决问题。胖滚熊一看,只用了一个volatile就解决了。并告知胖滚猪,这是并发编程导致的坑。这让胖滚猪坚定了要学好并发编程的决心。。于是,开始了我们并发编程的第一课。 序幕 BUG源头之一:可见性 刚刚我们说到,CPU缓存可以提高程序
阅读全文
摘要:上一节【漫画】JAVA并发编程三大Bug源头(可见性、原子性、有序性)我们聊了聊并发编程的三个bug源头,这还没开始进入并发世界,胖滚猪就遇到了难题。。 这个难题是所有初学者都会有的疑惑:没法复现那些理论知识告诉我们的bug。但是实际操练很重要,那么在本地开发环境,到底应该怎样模拟并发呢? 模拟并发
阅读全文
摘要:一:背景 1. 讲故事 我们有一家top级的淘品牌店铺,为了后续的加速计算,在程序启动的时候灌入她家的核心数据到内存中,灌入完成后内存高达100G,虽然云上的机器内存有256G,然被这么划掉一半看着还是有一点心疼的,可怜那些被挤压的小啰啰程序😄😄😄,本以为是那些List,HashSet,Dic
阅读全文
摘要:最近在调试 前后端分离的请求测试,遇到了一个405错误, 无法接受,于是开始了人肉搜索405。 最后 还是HTTP头部信息里的Accept:application/json 这个Accept 导致的, 后端设置了只允许application/json 这种形式,so前端模拟请求的时候,你也要和后端沟
阅读全文
摘要:五一假期大雄看了一本《java并发编程艺术》,了解了线程池的基本工作流程,竟然发现线程池工作原理和互联网公司运作模式十分相似。 线程池处理流程 原理解析 互联网公司与线程池的关系 这里用一个比喻来描述一下线程池,中间有一些名词你可能不是太清楚,后边源码解析的部分会讲到。 你可以把线程池看作是一个研发
阅读全文
摘要:单例模式是什么? 对象在全局只能有一个实例 为什么要使用单例模式? 静态方法和非静态方法的区别? 静态的方法: 能够在它的类的任何对象创建之前被访问,而不必引用任何对象, 并且static修饰的属性和方法在整个类中只有一份,可共享,放在方法区中。 非静态的方法: 在创建实例对象时,因为属性的值对于每
阅读全文
摘要:实现创建者与调用者的分离 以化妆品为例: 生产者: 一个接口,提供了生产化妆品的方法 public interface Cosmetics { void productCosmetics();} 生产的对象: 口红 public class Lipstick implements Cosmetics
阅读全文
摘要:前言 这个话题已经是老生常谈了,之所以又被我拎出来,是因为博主隔壁的一个童鞋最近写了一篇叫做《ThreadLocal内存泄露》的文章,我就不上链接了,因为写的实在是。。(省略一万字)重点是写完后,还被我问懵了。出于人道主义关怀,博主很不要脸的再写一篇。 正文 定义 首先,我们要先谈一下定义,因为一堆
阅读全文