![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基本编程
文章平均质量分 61
迅速带你打牢java基础
无限架构
这个作者很懒,什么都没留下…
展开
-
日常问题排查集锦-持续添加中
日常Bug排查系列都是一些简单Bug排查。问题虽小,但经常遇到,了解这些问题,会让我们少走点弯路,提升效率。说不定有些问题你遇到过哦:)怎么排查CPU飙升日常Bug排查-流量全部下线日常Bug排查-Nginx重复请求?日常Bug排查-应用Commit报错事务并没有回滚日常问题排查-调用超时日常Bug排查-抛异常不回滚日常Bug排查-消息不消费Raid卡性能导致io告警ntp导致的时钟回拨日常Bug排查-系统失去响应-Redis使用不当日常Bug排查-请求偶尔超时-磁盘故障机器内存耗尽转载 2022-02-15 17:16:40 · 91 阅读 · 0 评论 -
Redis 7.0 Multi Part AOF的设计和实现
Redis 作为一种非常流行的内存数据库,通过将数据保存在内存中,Redis 得以拥有极高的读写性能。但是一旦进程退出,Redis 的数据就会全部丢失。为了解决这个问题,Redis 提供了 RDB 和 AOF 两种持久化方案,将内存中的数据保存到磁盘中,避免数据丢失。本文将重点讨论AOF持久化方案,以及其存在的一些问题,并探讨在Redis 7.0 (已发布RC1) 中Multi Part AOF(下文简称为MP-AOF,本特性由阿里云数据库Tair团队贡献)设计和实现细节。一 AOFAOF( app转载 2022-02-13 15:54:31 · 176 阅读 · 0 评论 -
从Linux源码看Socket(TCP)的accept
从Linux源码看Socket(TCP)的accept前言笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就从Linux源码的角度看下Server端的Socket在进行Accept的时候到底做了哪些事情(基于Linux 3.10内核)。一个最简单的Server端例子众所周知,一个Server端Socket的建立,需要socket、bind、listen、accept四个步骤。今天,笔者就聚焦于accept。代码如下:void start_s转载 2022-02-10 16:28:15 · 479 阅读 · 0 评论 -
自己动手写SQL执行引擎
自己动手写SQL执行引擎前言在阅读了大量关于数据库的资料后,笔者情不自禁产生了一个造数据库轮子的想法。来验证一下自己对于数据库底层原理的掌握是否牢靠。在笔者的github中给这个database起名为Freedom。整体结构既然造轮子,那当然得从前端的网络协议交互到后端的文件存储全部给撸一遍。下面是Freedom实现的整体结构,里面包含了实现的大致模块:最终存储结构当然是使用经典的B+树结构。当然在B+树和文件系统block块之间的转换则通过Buffer(Page) Manager来进行。当然了转载 2022-02-10 16:23:02 · 167 阅读 · 0 评论 -
SpringBoot启动全流程源码解析
SpringBoot启动过程流程图源码解析首先,我们先来看下SpringBoot项目的启动类@SpringBootApplication public class SpringDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringDemoApplication.class, args); } }一个是@SpringBootApplication,参转载 2022-02-10 15:48:55 · 597 阅读 · 0 评论 -
JVM原理与深度调优
什么是jvmjvm是java虚拟机 运行在用户态、通过应用程序实现java代码跨平台、与平台无关、实际上是"一次编译,到处执行"1.从微观来说编译出来的是字节码!去到哪个平台都能用,只要有那个平台的JDK就可以运行!字码好比是一个人,平台好比为国家,JDK好比这个国家的语言!只要这个人(字节码)有了这个国家的语言(JDK)就可以在这个国家(平台)生活下去。2.JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(r转载 2022-02-10 15:45:11 · 83 阅读 · 0 评论 -
汇总java市面上所有的锁名词
一、乐观锁/悲观锁乐观锁:我们开发时,默认为乐观锁日常不会更改数据,偶尔更改,那么便会以读为主。 以读为主,那怎么控制同一条数据被重复更改,而且顺序更改呢。 那就有CAS(compare and swith)、这类做法的实现手段为,version、time、或之前拿过来的目标值和要更改数据时的目标值是否是一样。悲观锁:我们开发时,默认为悲观锁会经常更改数据,为了性能更优,我们会对该代码片段进行上锁。例如我们日常用到的sychornized、ReentrantLock、redislock。二、公平锁/非原创 2022-02-04 10:18:45 · 247 阅读 · 0 评论 -
架构-顺势而为、不拘于形
最近入职中国电子科技集团,在做项目的过程中,发现大家忙忙碌碌、都在拼搏努力、却不一定非常高效。因此昨天花了两小时开发、两小时优化一个简单功能,配置型模板查询。仿照写出BI的一部分,来满足当前各种简单报表查询的逻辑。【功能满足阶段】源于查询比较简单、改动比较频繁、并发比较低,因此先采用读取数据库的形式、缓存降低qps形式,来满足功能的需求。这样,原先需要半天一天开发的功能、只需要10分钟就可以配置完成。【功能安全检测方面】源于做好预编译功能,及其他sql防注入等问题,统一做好控制,则安全方面可以支持。【原创 2021-05-07 07:05:13 · 149 阅读 · 1 评论 -
论证电子签有效性
一、保障电子签合同的有效性的思想 同一个人,用代表自己的一种身份,去签署一份文件。文件签署前后、未被篡改、则为有效。二、保障电子签合同的有效性的法律法规1、《中华人民共和国电子签名法》 https://baike.baidu.com/item/中华人民共和国电子签名法 第十三条电子签名同时符合下列条件的,视为可靠的电子签名: (一)电子签名制作数据用于电子签名时,属于电子签名人专有; (二)签署时电子签名制作数据仅由电子签名人控制; (三)签署后对电子签名的任何改动能原创 2021-03-02 19:20:15 · 458 阅读 · 0 评论 -
冒泡,快排,插入,希尔,选择,归并算法
一、算法说明算法,根据数据的样子,进行做计算。争取在固有数据的基础上,达到计算次数、内存占用最少的运算方式。现将集中算法归纳如下:二、算法归纳算法名称算法概要冒泡挨个拿数组的元素和后面的做比较,发现大小不对,则交换位置,这样导致按照坐标向后运算,坐标数据是一定有序的,相对后面最大或最小快排拿一个数组,向前查找,大于或小于则交换位置放到这个数组最前面,大于或小于放...原创 2020-05-04 12:45:45 · 137 阅读 · 0 评论 -
JVM内存模型分配情况
一、内存模型数据分配内存模型名称存放数据栈句柄、对象引用堆对象初始化内存信息方法区类信息、常量、静态变量本地方法栈java底层本身就是对当前系统的调用、对系统的调用接口,存放计数器代码执行到第几行了(多线程上下文切换标识)二、 内存中堆的优化算法面对大量内存的使用、清理目前jdk主要采用两种方式:1、jdk内存数据分区可以宏观的...原创 2020-05-04 09:02:16 · 101 阅读 · 0 评论 -
JAVA类加载机制
类加载机制分为双亲委派和类加载方式一、类加载器方式类加载器名称类加载器目录1.启动类加载器在%JAVA_HOME%/jre目录下2.拓展类加载器在%JAVA_HOME%/jre/lib/ext目录下3.应用类加载器classpath指定的目录下%JAVA_HOME%/lib%JAVA_HOME%\lib\tools.jar4.自定义了类加载器我们自...原创 2020-05-04 08:00:44 · 136 阅读 · 0 评论 -
最简单的编程服务器
一、tomcat出发点代码package com.example.demo.test;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] args) throws IOExcepti...原创 2019-12-26 21:08:31 · 200 阅读 · 0 评论 -
利用字符串相似可能性进行建立映射关系
现在我们的mybatis、hibernate要求对应字段很严格。或者格式书写很严格才能进行对应, 这将存在几个问题:(1)如果我们在非常疲惫的时候,可能无法区分0和O 或者l 和1(2)假如我们项目有的字段需要全大写, 那对应数据库每个大写字母必须和数据库要用下划线进行对应,比如 ATM 和数据库的对应,要么是atm,或者a_t_m,存在限制。 优化方式:假...原创 2019-12-14 14:55:43 · 184 阅读 · 0 评论