自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 数据库签名的那些事儿

写在前面,关于签名的应用场景 除了我们后端经常使用的接口签名来校验数据这些常见的场景,对于数据安全性要求比较严格的业务来说,大部分落库的核心数据 也都需要签名,为啥?因为怕数据库的数据被篡改数据或者被攻击了,通过数据库签名就能保证每一行数据的可靠安全性。

2023-08-10 15:36:22 181

原创 golang学习整理

golang优秀个人GitHub https://golang.design/go-questions/map/float-as-key/博客 https://github.com/CyC2018/CS-Noteshttps://www.yuque.com/go-interview/set/interview-indexpolarisx个人网站golang语言设计和实现golang高性能编程实战如果你是go面试官你会怎么问mysql思维图Redis思维图知乎计算机网络突击八股文三分恶面

2022-03-29 14:39:10 591

原创 JAVA转GO 从入门到精通之实参的值传递和引用类型的区别

众所周知 Java里面的普通变量都是值传递 没有指针引用;但是GO里面有指针引用类型,那到底什么区别呢?下面我们来看一个栗子:type GirlFriend struct { Age int Name string Height int}// 普通实例的接收者func (f GirlFriend) SayHello() { fmt.Printf("GirlFriend: age->%d name->%s height->%d \n", f.Age, f.Name,.

2021-11-26 10:39:36 226

原创 如何计算CPU使用率

写在前面一般来说对于需要大量cpu计算的进程,当前端压力越大时,CPU利用率越高。但对于I/O网络密集型的进程,即使请求很多,服务器的CPU也不一定很到,这时的服务瓶颈一般是在磁盘的I/O上。比较常见的就是,大文件频繁读写的cpu开销远小于小文件频繁读写的开销,小文件的读写更加频繁,需要更多的cpu来处理I/O的中断。怎么判断CPU使用率偏高?以及为什么会偏高这篇文章可能讲的更清楚CPU使用率怎么计算?详情点击HTTP2和HTTP3有了解过吗?...

2021-01-14 13:53:05 1934

原创 如何根本上防止SQL注入

现在的数据库系统都提供SQL语句的预编译(prepare)和查询参数绑定功能,在SQL语句中放置占位符’?’,然后将带有占位符的SQL语句传给数据库编译,执行的时候才将用户输入的数据作为执行的参数传给用户。这样的操作不仅使得SQL语句在书写的时候不再需要拼接,看起来也更直接,而且用户输入的数据也没有机会被送到数据库的SQL解释器被编译执行...

2021-01-13 20:40:13 130

原创 Nginx

写在前面:Nginx和Tomcat/Jboss的区别首先说一下Tomcat和Jboss的区别:Tomcat是一个Apache开源的Java Web(Servlet容器)应用服务器;Jboss基于Tomcat内核,青胜于蓝,在很多方面性能优于Tomcat:JBoss Web在活动连接支持、静态内容、大文件和HTTPS方面更优,不仅仅支持JAVA,还支持PHP,.NET等Nginx是一个Web Server,不仅仅支持HTTP的请求协议,多数用来静态内容(HTML文件,图片文件等)服务和代理服务器HT.

2021-01-11 15:37:34 137 2

原创 SpringCloud Sleuth链路监控&jaeger

写在前面随着分布式微服务,云原生的时代的到来;带来了很多问题,包括微服务的治理,各个服务接口的调用情况,数据库的状态等,让开发维护诊断变得更加复杂,难以治理;Tracing Analysis链路追踪为分布式开发者提供完整的调用链路还原,调用量统计,应用依赖分析等可视化工具,可以帮助开发者快速诊断定位应用性能瓶颈,提高开发者在分布式微服务时代下的开发以及诊断效率。CNCF开源组织链路追踪产品架构图客户端应用程序通过集成链路追踪的SDK上报数据,上传到控制台组件进行聚合,持久化 SpringC.

2021-01-07 16:38:18 776

原创 Mysq死锁问题发现以及原理和解决方案

众所周知,我们开发当中多多少少会遇到mysql死锁问题,这个也是大厂面试经常问的问题!以mysql的InnoDB的默认的RR隔离级别来说。死锁成因:不同事物相互等待对方的资源,形成环路当两个事物相互等待对方的资源,可以设置InnoDB_lockWait_timeout.不会一直等待,而是超过这个设置的获取锁的等待时间就会自动进行回滚,使得另外一个事物正常执行,如果说client ACK丢失怎么办?服务端会有重传机制这个次数默认5次,如果超过这个次数之后还未收到client的ACK就自.

2021-01-05 16:04:37 181 4

原创 二面面经

项目中的亮点 以及困难怎么去解决?点赞接口使用了redis的分布式锁,set命令 将设置key 以及Key的expire time一起设置,保证了命令执行的原子性,不会出现被别的请求释放锁导致出问题;目前使用的Jedis操作redis,我建议使用Redission来操作redis,提供了很多分布式说的 解决方案;然后可以说一下 redis的底层数据结构(dicEntry 里面有 SDS 和 redisObject :SDS(String) 双向链表(List) 字典(哈希表 哈希冲突使用链地址法 哈希表

2021-01-03 23:02:16 105

原创 Redis基本数据类对应的底层数据结构大解析

写在前面: 众所周知 现在JAVA开发很内卷,玩转redis还不够,面试会经常被问redis底层C语言的数据结构,已经被问好几次了!是时候结束了在Redis当中键值对是存储在DicEntry结构当中Key:SDS,简单动态数组结构(已使用的长度,可以使用的长度,char[] )Value: RedisObjectnext指针接下来重要照顾一下redisObjecttypedef struct redisObject { // 类型:string,list,hash,set,so.

2021-01-02 20:06:26 104

原创 ES常见姿势解析

直接面试题走起M:大概说一下ES底层的索引结构?在一个节点或多个节点上形成index 每个节点上的index就是shard分片,每个分片相当于Lucene(full text Search Engine全文搜索库)的索引Mini index :segmentM: 在建立ES搜索结构时候 跟关系型数据库的库名 表名 以及字段名 那些是对应起来的?SQL型数据库Elastic SearchDataBaseindextabletyperowdocment

2021-01-01 23:31:09 359

原创 CAS原理

今天看ribbon的源码有一个同步代码用到了CAS,想来好奇,加上CAS是JAVA并发的很重要的思想直接贴源码,其中一个定时任务TimeTask,用于检查本地服务列表每个服务的健康状态是否可用 /** * TimerTask that keeps runs every X seconds to check the status of each * server/node in the Server List * * @author stonse * */public v.

2021-01-01 21:39:39 101 2

原创 漫游云原生

写在前面硬件的性能提升诞生新的编程语言,并发编程语言GO大行其道!为什么会有云原生技术?什么是Devops,微服务,容器技术?Docker K8s 等容器技术?

2020-12-31 17:40:13 116

原创 面试必问之HTTPS&HTTP&WebSocket

一篇文章带你彻底搞懂HTTP&HTTPS&WebSocket个人觉得带着常见的面试题或者工作需求去学习一个技术是比较有目的性的,比平时摸鱼时间看文章要认真的多,效率也自然高;好的,废话不多说,直接上面试题。1. (腾讯)说一下HTTPS的整体流程2. (字节)HTTPS用的非对称还是对称加密?都是非对称加密吗?哪些地方用到了对称加密?3. (字节)在浏览器输入网址回车后发生了什么?浏览器拿到网址,会首先进行域名解析(根据域名找出对应的IP地址)。此时会存

2020-11-09 22:06:03 358

原创 1.5年Java开发经验面试字节跳动总结

写在前面字节的面试官都比较好,社招面试字节的话尽量走内推,然后HR会跟你定面试时间,现在面试大都是视频面试,字节一般是在牛客网上,会有一两道算法题,不过不会太难,一般都是LeetCode上简单到中等难度的题,所以大家不要把字节的算法想的太难,要把数据结构的基础足够重视,然后灵活利用这些基本的数据结构去解决问题,然后面试官会直接从你的项目中开始聊,所以项目一定要写自己负责的模块,以及遇到的困难怎么去解决的等等。经典问题回顾在涉及支付的接口是如何保证接口的高可用,以及在遇到弱网条件下,发出的请求没有

2020-10-17 10:42:32 1144 7

原创 初探JVM

写在前面关于JDK&JRE&JVM的关系JDK是对于Java开发的工具,包括了JRE(是Java运行的环境包括了JVM)(是Java跨平台的保证,不同操作系统不同JVM)和Java核心类库)和Java开发工具JDK(Java Development Kit) JRE(Java Runtime Environment) JVM(Java Virtual Machine)首先从class文件开始通过javac Person.java对java源码文件进行编译成Person.clas

2020-10-14 20:45:58 70

原创 关于HTTPS和HTTP的开发bug

首先HTTPS&HTTP的区别这里不多说了详细请点击bug描述:本地Windows起来项目接口正常,部署Linux就不行了javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?//,,,其他略这个异常导致程序不能正常执行了但是本地起来捕获的异常不影响正常执行java.security.NoSuchAlgorithmException: TSL SSLContext not availab

2020-10-10 13:25:07 182

原创 华为机考精选

实现加减乘除(输入表达式输出计算值)牛客题号:HJ50输入:3+2*{1+2*[-4/(8-6)+7]}输出:25字符统计 牛课题号HJ102合并表记录 牛客题号HJ8

2020-09-14 22:34:59 703

原创 Java笔试机考必备技能Scanner类常用操作

博主最近准备面试,发现很多公司机考题跟LeetCode不一样,不是只是关注核心逻辑部分,而是连测试数据都要自行控制台输入;那么为了避免对Scanner类常用方法不熟的同学遇到不必要的麻烦,今天准备收集一下Scanner的常用操作。通常用比较多的就是s.nextLine(),获取当前行的内容 让后光标停留在下一行。如何控制输入的行数呢?无非就是通过控制循环的次数。常用的while然后指定输入的哪一个字符就跳出循环for循环也可以,先nextLine获取一个控制循环的次数当然if也可以,道理跟.

2020-09-01 16:26:13 492

原创 Java面试突击篇

Mybatis#{} 和 $ {}的区别?#{}是预编译处理 而${}是字符串替换#{}可以防止SQL注入,先将#{}里面替换成?,然后调用PreparedStatement.set()来赋值模糊查询like怎么写?<if test="keyword != null and keyword != ''"> and name like concat('%',#{keyword},'%')</if>Mapper里面的方法能够重载吗?是不能的,Mybatis

2020-08-31 17:48:54 461 1

原创 一年Java开发经验面试招行总结

首先自我简单介绍一下吧?在职为什么要换城市?先从你的项目中你认为业务比较复杂的说一说?(好戏开始)说到一个类似朋友圈的社区功能,二级评论,有点赞;建了三个表分别是说说表以及一级评论以及二级评论,刚开始没用redis来做点赞所以单独建了一个点赞表;然后三个表left join on使用resultMap的collection标签一次性返回一个说说的所有信息。然后使用redis的set来做点赞计数以及是否点过赞 以及 那些用户点赞sismember scard smembers;这个时候面试官说.

2020-08-31 15:04:22 1296 2

原创 线程池里如何养鱼

什么是线程池?线程池(容器)里面有提前创建好若干的线程,等分配任务去执行;执行完任务之后 不会被销毁又会准备去执行其他任务可以减少线程的创建和销毁的性能开销提高响应速度,有任务来了无需等待创建新线程就能立马执行合理设置线程池大小可以避免因为创建线程过多导致的硬件瓶颈带来的问题newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduledThreadPool...

2020-08-17 21:45:58 88

原创 前入式JUC常用类源码分析

CountDownLatchpublic class CountDownDemo { /** * countdown倒计时的意思;允许一个或者多个线程被阻塞,等待其他线程执行完在被唤醒,有点类似join * 应用场景:可以用来控制并发量,在某个条件之后实现秒杀 * @param args */ public static void main(String[] args) throws InterruptedException { Co

2020-08-17 18:43:39 16305

原创 AQS

浅出重入锁reentrantlock下面简单演示一下 使用JDK的JUC并发包的reentrantlockpublic class MyReentrantLock { // 锁是什么? // 锁是用来解决 多线程并发访问带来的资源竞争 引发的共享资源的安全性问题 // 对一个共享资源加锁之后 如果一个线程获得了锁 那么其他线程不能访问这个资源 public static Lock lock = new ReentrantLock(); public static

2020-08-14 21:46:53 104

原创 后入式对象的发布与逃逸

何为对象的发布?大到把项目的war发布到Tomcat上,小到是一个对象能够被当前范围之外的代码访问到不安全发布unsafe publish/** * 对象的不安全发布 * 逃逸:对象还没有被构造完成的时候 就被发布(其他线程可见) */public class PublishAndOverflow { //private修饰的成员变量 只能当前类当中使用 private String[] strArr = {"a", "b", "c", "d"}; public .

2020-08-14 16:07:15 3384

原创 ElasticSearch漫游指南

ElasticSearch介绍Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache LuceneLucene 可以说是当下最先进、高性能、全功能的搜索引擎库为了解决Lucene使用时的繁复性,于是Elasticsearch便应运而生。它使用 Java 编写,内部采用 Lucene 做索引与搜索,但是它的目标是使全文检索变得更简单当然,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎一个分布式的实

2020-08-13 21:08:49 175

原创 深入快出并发线程安全性问题

并发问题的源头–原子性,可见性,有序性/** * 原子性验证 */public class AtomicTest { public static int count = 0; public static void methodSleep() { try { Thread.sleep(2); } catch (InterruptedException e) { e.printStackTrace();

2020-08-11 22:14:20 96

原创 慢入慢出线程的基本操作和原理

Thread.join()public class MyJoinTest { public static void main(String[] args) throws InterruptedException { Thread t0 = new Thread(()-> System.out.println("Thread0")); Thread t1 = new Thread(new Thread1(), "myThread1"); Thre

2020-08-11 17:38:33 1150

原创 深入感受多线程的三种创建方式&线程的生命周期

Java多线程的三种创建方式的实现以及区别直接继承Thread类public class MyThreadOfExtendsThread extends Thread { @Override public void run() { super.run(); System.out.println("继承Thread 重写覆盖父类run方法 实现一个线程" + Thread.currentThread().getName()); }}实现R

2020-08-10 13:53:48 117

原创 深入Redis进阶二

为什么需要集群?性能扩展可用性,安全那么如何去配置主从复制呢?vim redis.conf(修改配置文件)slaveof 192.168.30.131 6379(config)./redis-server --slaveof ip port(start)断开:主从复制原理连接数据同步命令传播主从复制不足:单个节点数据量较大时 同步比较耗时 需要手动切换主从需要一种可以自动切换主从的实现–哨兵机制...

2020-08-07 17:24:46 110

原创 深入Redis进阶一

publish & subscription基础回顾:之前我们使用list也能实现一个简单的消息队列rpush blpop这个是不支持 一对多的消息分发 所以今天来学习Redis的发布订阅channel:频道 subscribe 订阅者 publish发布者命令:subscribe channel-1 channel-2 channel-3publish channel-1 message: 向指定的频道发布消息psubscribe *sport在Jedis客户端怎么使用?t

2020-08-06 22:11:40 231

原创 深入浅出Redis基础

NOSQL & SQL区别:1.2.String 的应用场景重点:热点数据的缓存分布式session:在跨域名 跨服务时候 需要一个中间的服务实现session的共享<!--spring session 与redis应用基本环境配置,需要开启redis后才可以使用,不然启动Spring boot会报错 --><dependency> <groupId>org.springframework.session</groupI

2020-08-05 21:59:36 145

原创 数据结构--数tree

开场白: 树(Tree):有且仅有有个特定的结点 成为 根root其余的结点互不相交的有限集,并且本身也是一棵树称为跟人root的子树SubTree定义:之前都是一对一的线性结构,另一种一对多的数据结构–树Tree注意:子树是互不相交的结点拥有的子树数量称为结点的度(degree),度为0的称为叶子结点除了根结点之外,其他的分支结点;一棵树的度是内部各分支结点的度的最大值!节点之间的关系:父节点 子节点 兄弟节点树的深度Depth或高度:树中结点的最大层次线性结构:有顺序存.

2020-07-30 22:25:54 261

原创 MySQL报错!Data truncation: Out of range value for colum

表面上看是字段设置的不够长,其实这里面隐藏一个小知识,关于无符号数和有符号数今天项目表中有一个userId int(11)和mobilephone varchar(11)字段 因为某种业务需求 这两个字段设置的内容一样;varchar类型存手机号 肯定没问题 手机号就是11位;但是存userId的时候 就不行了,我们知道:对于 int类型来说 存储有符号数 和 无符号数的 范围是不一样的:有符号数:[-2^31, 2^31 - 1]无符号数:[0, 2^32 - 1]int(11)默认是存储的

2020-07-24 16:51:28 4281

原创 深入快出字符串

字符串string:是有零或多个字符组成的有限序列下面欣赏一首十字回文诗,体会一下字符串的美感《禅》 空山映雨落花红,雨落花红乱舞风,风舞乱红花落雨,红花落雨映山空。字符串string:当中的字符数量称为 字符串的长度;零个字符的字符串称为 空串 null 或 ""都是空字符串注意空格字符 也是字符 例如:" ";子串:在字符串当中任意连续个数的字符,在主串当中的位置就是第一个字符的index字符串的比较思考:数字能通过比较大小,那么字符串怎么比价大小呢?// 这个是compareTo的源

2020-07-23 00:07:32 140

原创 弹匣子栈与队列

为什么叫stack栈别名是——弹匣子呢?last in first out后进先出定义术语:栈(stack)是仅限于在表尾进行删除和插入的线性表其中允许进行插入和删除操作的表尾——栈顶top另一端——栈底bottom1.1 stack栈的定义...

2020-07-19 18:52:04 333

原创 深入浅出线性表

顾名思义像线一样的性质的表,有一个打头的,有一个结尾的,中间元素一个跟个一个;线性表List:零个或多个元素的有限序列序列:元素之间是有顺序的,当表的长度为0称之为空表1. 线性表的顺序存储结构顺序存储定义:用一段地址连续的存储单元依次存储线性表的数据元素存储方式:说白了就是在内存找一块连续的存储单元,就是一维数组数组长度和线性表长度区别:线性表的长度(随着元素的插入删除是变化的)就是数据元素的个数 数组长度大于或等于这个存储地址:存储器每个存储单元都有自己的编号就是内存地址,sele.

2020-07-15 22:15:47 151

原创 算法-复杂度

1. 什么是时间复杂度?what is Time Complexity?定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数->进而分析T(n)随n的变化情况并确定T(n)的数量级它表示随问题规模n的增大,算法执行时间的增长率是->f(n)就简称为时间复杂度 记作O(f(n))先简单的介绍O(1), O(n), O(n^2), 官方名称 常数阶,线性阶,平方阶那么我们怎么去计算时间复杂度呢?这个算法执行时间的增长率是啥东东推导大O阶:用常数1取代运行

2020-07-14 22:44:53 139

原创 算法预热前奏篇

算法:algorithm 一个充满着神秘色彩的领域程序(programming)=算法(algorithm)+数据结构(data structure)其实用不着我这里说算法有多么厉害 多么重要 看薪资待遇就一目了然了 算法工程师的待遇很高!学习大纲:1. Complexity1.1 what is Time Complexity1.2 what is Space Complexity2. Linear List2.1 what is Linear List and Link List3.

2020-07-14 11:48:09 142

原创 Java实现手动分页

场景描述:在使用mybatis-paginator插件对结果集进行分页处理项目迭代:要求对结果集当中对象的某个字段为0的进行过滤思考:小明说这个还不简单?于是直接对分页结果集进行过滤PageBounds pageBounds = getPageBounds(page, limit, null, null);List<Map<String, Object>> regionList = regionImpl.getRegionByMonthId(month, pageBoun

2020-07-13 14:53:42 4286

空空如也

空空如也

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

TA关注的人

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