自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个浪子

愿你在这条路上越走越远

  • 博客(66)
  • 资源 (5)
  • 收藏
  • 关注

原创 巧用golang的context减少方法传参

context是很强大的,我们可以将自定义的参数塞到context内向下传递,通过Function type来优化我们的代码,使代码可读性更高

2022-01-25 16:08:16 1733 1

原创 什么是RPC

RPC Remote Procedure Call,翻译成中文为远程过程调用,它实际上是一种思想,简单说就是本机调用一个函数,但是这个函数是在另一台机器上执行的,这种编码方式就像在本地执行一次函数调用一样。如上图所示,以一个简单的a+b为例,要执行一个a+b的函数,入参为a、b,函数返回a+b的值。用RPC思想来描述,将这个func封装在server端,这时候只需要在client端将参数a和b打包,放到一个数据包里,通过网络的方式发给服务端,服务端运行完后再将结果打包到数据包内,发回给client,

2021-05-25 23:13:26 441

原创 短链的思考

背景周末在和同学吃饭的时候提到了短链,短链不是我们常说的http长链接、短链接,而是一个短url。在日常生活中其实经常能看到短链,比如收到推广短信里面的链接,为了节省费用,往往都是以短链形式存在。因此,短链是一个非常有意义的服务。那么,如果要设计一个短链系统,需要考虑哪些东西呢?需求作为短链,最基本的要求就是要能跳转、跳转正确了,因此第一个需求,短链需要保证不重复。再提高些要求,点击短链后会去一个目的地址,这个跳转要快一些,不然用户等待久了也会失去耐心,因此第二个需求是短链跳转要低延迟。

2021-05-24 21:18:51 497

原创 failed to unmarshal the received message proto问题排查

前言突然发现已经有很久没有登录过csdn了,工作后一直很忙,没有什么时间来写博客,平日学习、踩坑往往都是自己简单记录一下,但实际上经常写博客还是有必要的,一方面可以加深自己的理解,另一方面,也可以不断强化文档书写能力。背景由于公司部门较多,语言也各不相同,跨部门协作基本都是通过gRPC协议(proto文件足够通用和认可),因此公司有一个统一API仓库,暂且叫作common。对于各业务方来说,只需要保证自己项目内的proto文件与common仓库自己路径下的proto文件一致即可。早期主站各业

2021-04-23 06:16:39 2607

原创 golang中defer的理解与使用

defer,即延迟调用,是Go语言的一大特色。defer代码块会在函数调用链表中增加一个函数调用,在函数正常返回,即return返回之后,增加一个函数调用。因此,defer常用来回收资源,哪怕程序执行有错误,依然能够保证回收资源等操作能够执行。它的使用有三条规则:当defer被声明时,其参数就会被实时解析 defer执行顺序,为先进后出 defer可以读取有名返回值那么这三条规则具体...

2019-12-09 23:07:26 1156 1

原创 mac应用程序已损坏

mac更新到10.15版本之后,会出现许多第三方软件无法打开,打开显示已损坏,移到废纸篓这样的提示。这时候,处理方式与之前的安全性与隐私内的显示任何来源方法不同,按照老方法依然无法打开第三方软件。解决方式如下:sudo xattr -r -d com.apple.quarantin 此处将应用程序中的app拖拽进来quarantin后有一个空格,使用该命令之后,即可打开损坏的应用~...

2019-10-30 22:47:35 999

原创 大数据量请求查询数据库优化思考

业务场景:任务体系越来越受到活动的青睐,例如最近的淘宝和京东双十一活动,都是采用任务类型的活动,我司近几个月的活动也多采用类似的任务体系,分享、关注、点赞、投币、投稿等,既然是活动,就限制了活动的范围是活动稿件或指定稿件上的点赞/投币行为,因此Job监听用户点赞、投币时,需要查询点赞或者投币的是否是活动稿件。在数据库中,稿件业务方有单独的表,但是如果是活动稿件,也会进入活动单独的活动稿件表...

2019-10-29 22:38:46 612

转载 Charles安装与使用

一、准备工作简介Charles是一款代理服务器,通过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果进行分析抓包。该软件是用Java写的,能够在Windows,Mac,Linux上使用。安装Charles的时候要先装好Java环境。需要java环境(安装地址):https://www.oracle.com/technetwork/java/javase/do...

2019-10-12 19:47:29 2013

原创 CAP定理整理

CAP定理是分布式系统设计中最基础、最关键的理论,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得CAP的定义Consistency (一致性):“all nodes see the same data at the...

2019-09-30 10:19:23 291

原创 日常工作总结(二)

之前写过一个go日常使用的总结文章,最近刚忙完一个活动,想再总结一下,发现归类为go有些片面,不仅仅涉及到go,而且更多的可能是代码的书写规范或者追求更好的书写方式,因此索性变成日常工作总结好了~表设计问题:主要针对InnoDB存储引擎,库名、表名、字段名、索引名必须使用小写字母,并且不能以MySQL关键字命名这个不需要多说,在建表时候所有的表都应该携带ctime(创建时间)和mtime(...

2019-08-24 21:01:18 771

原创 #1111 - Invalid use of group function案例

场景:需要导出签到达到15天的用户id,在业务中,用户每签到一天就新增一条记录,其中通过round字段来区分当前是第几轮签到,如用户第一天签到,该条记录round为0;第二天、第三天未签到,第四天又签到了,则新增一条记录,round为3。此时该表中该用户一共有2条签到记录。由于没有round未必是连续的,签到15天就无法直接通过round>14判断,同时,由于是要找出所有用户中满足条件的...

2019-08-19 20:03:27 3868

转载 golang类型转换与类型断言

类型转换在程序设计中都是不可避免的问题。当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关注这方面的问题。但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编译器不会代你去做这个事。我之所以说通常需要手动转换,是因为interface类型作为一个特例,会有不同的处理方式。golang中的所有类型都有自己的默认值,对此我做了个测试。$GOPATH/src...

2019-08-11 21:10:46 793

原创 go日常使用总结

前言不知不觉入职也有1个月了,逐渐习惯了使用go语言开发,也在使用中遇到一些问题,就当作是月度总结好了。总结1. sql相关sql单引号拼接问题:尽量不要直接用%s、%d、%v之类的拼值,先拼?,?,?,?,然后直接传值,走sql包的赋值,会自动过滤sql注入,用可变参数的…展开参数。即使用2个切片,一个string类型切片,用来存储(?,?,?),一个空接口接收任意类型的切片...

2019-07-31 22:27:46 321

原创 golang学习

时间过的真快,不知不觉离校都半个月了,今天上了下博客才发现好久没更新了,尤其是现在就在用的golang。想着之前还能悠闲的看看go整理整理,现在每天都是重构和跟进新需求,没时间完善之前的整理,只能说一下刚入门的使用感受以及学习方法。首先,go的语法的确很简单,相比于C++、Java,少了非常多的东西,因此上手也会比较速度,只是可能写惯了Java,一时间不太容易改变编程习惯,如类型是在变量名之后...

2019-07-10 22:47:10 198

转载 mac memcache安装

公司使用到了memcache,由于之前没有使用过,因此转载一个教程方便大家参考,主要是使用 brew 来安装的。如果你没有装 brew ,先看步骤一,否则直接看步骤二。步骤一:安装 Homebrew先看看是否满足下面条件: Intel 的 CPU OS X 10.5 或者更高 安装了XCode 或者 XCode命令行工具 满足了,就可以安装 Homebrew,...

2019-07-10 20:17:10 686

原创 golang(二)数据(上)

字符串字符串是不可变字节(byte)序列,本身是一个复合结构。默认以UTF-8编码存储unicode字符。它的默认值是“”,而不是nil。字符串底层就是⼀个byte数组,所以可以和[]byte类型互相转换。使用“ ‘ ”定义不做转义处理的原始字符串,支持跨行。func main() { s := 'line\r\n, line 2' println(s...

2019-04-01 16:46:05 205

原创 golang(一)初识go

go简介go语言诞生自2006年,于2009年发布并开源,2012年出现了第一个正式版本。近些年招聘中,go语言算是个小众岗位,只有少数大厂有招聘需求,如阿里,百度,京东等,由于它的特性,一般是高并发项目的优先选择。go语言特性:1. 垃圾回收a. 内存自动回收,再也不需要开发人员管理内存b. 开发人员专注业务实现,降低了负担c. 只需要new分配内存,不需要释放2. 天然并...

2019-03-27 16:30:15 348

原创 Spring5源码分析系列(十)SpringAOP设计原理及应用场景

本章开始讲解SpringAOP设计原理及应用场景,文章参考自Tom老师视频~~SpringAOP应用示例AOP是OOP的延续,是AspectOrientedProgramming的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现...

2018-10-24 17:50:33 1740

原创 Spring5源码分析系列(九)Spring事务原理详解

终于等到了B站的薪资沟通电话,美滋滋,本节开始进入Spring数据访问篇,讲解spring事务,文章参考自Tom老师视频。事务基本概念事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。特点:事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(atomici...

2018-10-15 20:51:05 2886 2

原创 Spring5源码分析系列(八)SpringMVC设计原理及实现

SpringMVC请求处理流程引用SpringinAction上的一张图来说明了SpringMVC的核心组件和请求处理流程:①:DispatcherServlet是SpringMVC中的前端控制器(FrontController),负责接收Request并将Request转发给对应的处理组件.②:HanlerMapping是SpringMVC中完成url到Controller映射的组件...

2018-10-10 15:53:51 2899 4

原创 Spring5源码分析系列(七)IOC容器中那些鲜为人知的事儿

1、介绍通过前面章节中对SpringIOC容器的源码分析,我们已经基本上了解了SpringIOC容器对Bean定义资源的定位、读入和解析过程,同时也清楚了当用户通过getBean方法向IOC容器获取被管理的Bean时,IOC容器对Bean进行的初始化和依赖注入过程,这些是SpringIOC容器的基本功能特性。SpringIOC容器还有一些高级特性,如使用lazy-init属性对Bean预初始化...

2018-10-09 14:55:30 456

原创 Spring5源码分析系列(六)基于注解的依赖注入

紧接上文基于XML的依赖注入,本文开始讲解基于注解的依赖注入,文章参考自Tom老师的视频。基于Annotation的依赖注入1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以取代XML配置文件。开发人员对注解(Annotation)的态度也是...

2018-10-08 12:45:46 1268

原创 Spring5源码分析系列(五)基于XML的依赖注入

本文紧接上文IOC容器,讲解基于XML的依赖注入,文章参考自Tom老师视频,下一篇文章将介绍基于Annotation的依赖注入。基于XML的依赖注入1、依赖注入发生的时间当SpringIOC容器完成了Bean定义资源的定位、载入和解析注册以后,IOC容器中已经管理类Bean定义的相关数据,但是此时IOC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况发生:(1).用...

2018-10-07 15:42:29 740

原创 Spring5源码分析系列(四)IOC容器

本章开始进入Spring5源码分析,文章有点长,参考自Tom老师视频。什么是IOC/DI?IOC(InversionofControl)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的文件。DI(Dependenc...

2018-10-06 09:49:56 1807

原创 Spring5源码分析系列(三)Spring5概述

咕泡学院Tom老师视频讲解第三章,对Spring5进行简要介绍,文章参考自Tom老师视频。Spring是一个开源的轻量级JavaSE(Java标准版本)/JavaEE(Java企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。而在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使...

2018-10-04 10:38:19 4946 4

原创 Spring5源码分析系列(二)Spring源码版本命名规则及下载安装

Tom老师视频讲解第二章,这章主要是科普篇,介绍了下spring版本的命名规则及源码下载,文章参考自Tom老师视频。Spring源码版本命名规则(1)首先看看某些常见软件的版本号:LinuxKernel:0.0.1,1.0.0,2.6.32,3.0.18...,若用X.Y.Z表示,则偶数Y表示稳定版本,奇数Y表示开发版本。Windows:Windows98,Windows2000,...

2018-10-03 09:44:55 1511

原创 Spring5源码分析系列(一)从现实生活理解Spring中常用的设计模式

工作找的基本上差不多了,其实找工作也是一种学习,通过面试笔试,可以发现自己的不足以及大家都关注的问题,其中之一就是Spring的源码了,国庆没回家,在周边玩了玩,然后整理了一下咕泡学院Tom老师的《Spring5源码分析》,文章参考自Tom老师的视频。这篇文章开始课程的第一章, 从现实生活理解Spring中常用的设计模式。一、Spring中常用的设计模式1、我们通常说的23种经典设计模式可...

2018-10-02 22:08:43 5052 8

原创 CVTE+网易+微盟面经

在南京呆了2天,这3家面试都是在一天里,巨累。。刚回学校,有的可能记不清了,大概回忆一下。总的来说CVTE面试感最佳,网易最差,全程毫无表情,问我的问题反问回去自己却不知道有啥。。。CVTE-web后台开发:CVTE是在南京的威斯汀酒店,不得不吐槽下鼓楼老城区的导航真不准==首先进去扫码排队,然后到了进去。面试官是个很帅气的小哥,全程面带微笑说话温柔,体验感非常的好。首先客气几句学校远不远...

2018-09-20 18:50:17 1257

原创 烽火面试总结

学校难得来个能现场笔试面试的宣讲会,记录一下秋招第一次面试,总得在面试中有所成长。首先笔试,烽火之前在南京笔试过了,我们学校是单独的,试卷一个方向一套,但是和他们在南京的笔试不一样,感觉比在南信大的稍微难一点,不过依旧还是很基础的,选择问答逻辑,问答包含2个编程题,很常规,感觉就逻辑题最难==选择的话java编译器,标识符,循环次数,方法的作用,都是基础的,编程题南京那边考了个IO操作,我们这...

2018-09-15 15:38:18 10206

原创 页面置换算法总结

今天刷牛客选择题时,出现了曾经考研时经常考到的页面置换算法,考研时候大多考察的是缺页率,即缺页次数/总次数。在线考试一般可能只会考察命中次数,即总次数-缺页次数,例如科大讯飞2018年秋招笔试题出现的,因此有必要整理下计算方法。首先看一下什么是页面置换算法:地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在...

2018-09-13 20:54:28 59950 10

转载 《设计模式之禅》总结

转自https://blog.csdn.net/clivially/article/details/78437846阅读设计模式有很多时日了,差不多两个月时间,以下为个人理解。其中有部分内容为书中原文,或者例子,有些是自己的所感所想,理解浅显,谨以此记录自己的学习经历设计模式观后感1.六项基本原则:1.1单一职能原则:每一个类实现的功能和作用要单一,比如实体类实现的是单纯的属性...

2018-09-09 16:42:57 3025

原创 JAVA死锁

面试中经常会被问到死锁,今天就来整理一下死锁的相关知识。首先看一下死锁的产生,死锁产生的情况有很多种,例如进程推进顺序不当产生死锁、PV操作使用不当产生死锁、资源分配不当引起死锁、对临时性资源使用不加限制引起死锁等。那么,到底什么是死锁?死锁是指2个及2个以上的进程在执行过程中,由于竞争资源或由于彼此通信而造成的一种阻塞现象,若无外力作用,它们都无法推进下去,这些永远在互相等待的进程称为死...

2018-09-07 21:39:07 299

原创 剪绳子 java

题目还原:给你一根长度为n的绳子,请把绳子剪成m段,记每段绳子长度为k[0],k[1]...k[m-1],求k[0]k[1]...k[m-1]的最大值。已知绳子长度n为整数,m>1(至少要剪一刀,不能不剪),k[0],k[1]...k[m-1]均要求为整数。例如,绳子长度为8时,把它剪成3-3-2,得到最大乘积18;绳子长度为3时,把它剪成2-1,得到最大乘积2。分析:要求的是乘积的最...

2018-09-06 21:01:30 1779

原创 二叉树的遍历 java版

总结二叉树的前序、中序、后序遍历,包含递归与非递归方式,以及层次遍历,递归方式比较简单,非递归前中后序主要使用一个辅助栈,层次遍历主要使用一个辅助队列。代码如下:import java.util.ArrayList;import java.util.LinkedList;import java.util.List;/** * Created by yhu on 2018/9/5....

2018-09-05 16:47:37 336 1

原创 LinkedList常用方法

今天在刷剑指offer的时候,刷到了从上到下打印二叉树那题,需要使用队列来辅助实现。在JAVA中,我们常用LinkedList来模拟链式队列,发现好久没用LinkedList了,对它有一些陌生,因此整理一下,这里主要针对的是他的方法尤其是特有的方法。增加:add(E e):在链表后添加一个元素;   通用方法addFirst(E e):在链表头部插入一个元素;  特有方法addLast(E...

2018-09-04 20:43:58 33597 5

原创 2019贝壳在线考试研发类编程题(9.3)

因为只ac了2道,暂时只放上ac的2道题,分别是家族关系和计算器,做的头晕~~import java.util.HashMap;import java.util.Scanner;/** * Created by yhu on 2018/9/3. */public class 家族关系 { public static void main(String[] args)...

2018-09-03 21:31:05 4287 2

原创 JAVA类加载器

ClassLoader就是类加载器,负责将Class加载到JVM中,审查每个类应该由谁加载,将Class字节码重新解析成JVM统一要求的对象格式。大部分Java程序一般会使用到以下三种系统提供的类加载器:1)启动类加载器(Bootstrap ClassLoader):主要加载JVM自身工作需要的类,完全由JVM自己控制,无法通过JAVA程序程序引用。这个类加载器没有父加载器,只是一个类的加...

2018-09-03 14:45:42 264

原创 顺时针打印矩阵java

剑指offer中的题目,输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,如:1   2   3   45   6   7   89  10  11 1213 14 15 16则依次打印1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10通过画图可以知道,其实就是若干个圈,依次打印出每个圈。而每个圈都要按照顺时针的顺序打印,即4个循环,先...

2018-09-02 15:00:31 2381

原创 JAVA面试--IO

1.IO流概念IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的方式,Java用于操作流的类都在IO包中2. Java中IO流的分类按照流的方向:输入流(inputStream)和输出流(outputStream)。按照实现功能分:节点流(可以从或向一个特定的地方(节点)读写数据。如 FileReader)和处理流(是对一个 已存在的流的连接和封装,通过所...

2018-09-01 21:30:53 4667

原创 背包问题Java

背包问题是动态规划类求解的一个典型问题,我们要先找到该问题的局部解然后扩展到全局解。这里讲解的是0-1背包。先看一下情景,假如一个小偷携带者一个可以放10kg重的背包,潜入一户人家行窃,家里有4个物品,每个物品只有1个。即价值v[] = {10, 40, 30, 50},重量w[] = {5, 4, 6, 3}。如果超出这个重量背包就会断,就没法带出,但是家里面有很多物品,他们对应着不同的重量和不...

2018-09-01 13:49:47 7189 2

NTFS for mac破解工具

使用工具重置NTFS的试用期,每次重置激活后,可使用10天,到期后重新重置。

2018-10-27

ccna学习笔记

ccna学习基础,nyf格式,包含网络基础,交换,路由及远程

2017-09-29

matlab速成教程

matlab的简明速成教程,.m文件编写,包含matlab基础,基本结构,矩阵向量操作,流程控制,脚本,绘图等

2017-09-29

javassh框架整合视频

javassh框架整合视频,最后一段有所漏录,不影响ssh框架的搭建学习。

2017-09-29

java获取天气小工具

java调用百度天气api解析json的demo,使用gson解析,天气保存在txt文件中,带简略操作界面

2017-09-29

空空如也

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

TA关注的人

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