Gin
Go是一门正在快速增长的编程语言,专为构建简单、快速且可靠的软件而设计。golang提供的nethttp库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架。
Gin: Go 语言编写的Web框架,以更好的性能实现类似Martini框架的API。
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错方便等特点。Beego:开源的高性能Go语言Web框架。
beego是一个快速开发Go应用的http框架,go语言方面技术大牛。
beego可以用来快速开发API、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。lris:全宇宙最快的Go语言Web框架。完备MVC支持,未来尽在掌握。
lris是一个快速,简单但功能齐全的和非常有效的web框架。
提供了一个优美的表现力和容易使用你的下一个网站或API的基础。
Gin ...
Go
Go语言的整个设计哲学就是:将简单、实用体现的淋漓尽致
基础语法学习HelloWorld!
// 在Go语言里,命名为main的包具有特殊的含义。// Go语言的编译程序会试图把这种名字的包编译为二进制可执行文件。// 所有用Go语言编译的可执行程序都必须有一个名叫 main的包。一个可执行程序有且仅有一个 main包package mainimport "fmt"func main() { fmt.Println("hello world 胥天昊")}
注释注释跟Java的一样
变量// 在Go语言里,命名为main的包具有特殊的含义。// Go语言的编译程序会试图把这种名字的包编译为二进制可执行文件。// 所有用Go语言编译的可执行程序都必须有一个名叫 main的包。一个可执行程序有且仅有一个 main包package mainimport "fmt"func main() { //声明变量用var //name 是变量名 //string/int 代表变量的类型 var name st ...
Vue
在工作之后重新捡起了Vue….现在都是全栈了嘛….
Vue2第一个vue程序快捷:html 5导入模板
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue基础</title></head><body> <div id="app"> {{ message }} </div> &l ...
MongoDB
1.MongoDB相关概念1.1 业务应用场景传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。
解释:“三高”需求:• High performance - 对数据库高并发读写的需求。
• Huge Storage - 对海量数据的高效率存储和访问的需求。
• High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。
而MongoDB可应对“三高”需求。
具体的应用场景如:
1)社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
2)游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
3)物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
4)物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以 ...
北京某厂
简单做个自我介绍
线程池的核心参数
线程池的构造函数有7个参数,分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler。下面会对这7个参数一一解释。
corePoolSize 线程池核心线程大小
线程池中会维护一个最小的线程数量,即使这些线程处理空闲状态,他们也不会被销毁,除非设置了allowCoreThreadTimeOut。这里的最小线程数量即是corePoolSize。任务提交到线程池后,首先会检查当前线程数是否达到了corePoolSize,如果没有达到的话,则会创建一个新线程来处理这个任务。
maximumPoolSize 线程池最大线程数量
当前线程数达到corePoolSize后,如果继续有任务被提交到线程池,会将任务缓存到工作队列(后面会介绍)中。如果队列也已满,则会去创建一个新线程来出来这个处理。线程池不会无限制的去创建新线程,它会有一个最大线程数量的限制,这个数量即由maximunPoolSize指定。
keepAliveTime 空闲线程存活 ...
上海某厂
介绍一下你自己
大二如何平衡学校与工作?
你项目里面,你觉得做的最好的是哪里?
大一都学了什么?
你学习的方法和途径?都学了什么,举个例子来说?
你说你学习了微服务,用计算机网络的方式,你怎么来进行多个微服务之间的通信(好像要我说如何进行发请求,再进行处理进行一步步解析,不是用netty和feign这些框架实现)
为什么要GC?在项目中怎么使用GC进行调优?实际调优过吗?
如果一个对象不再使用,那手动释放可以吗,为什么需要GC来回收而不是手动回收呢?
为什么内存读取的速度要比硬盘快?为什么不把数据直接放到cpu里面?
写sql,如果like后面没有’_‘或’%‘ ,只有匹配的条件,和直接用where查询有什么区别?
写一个模糊查询,统计比如说叫天昊的名字的人的人数,并把名字和这个名字的数量显示出来
数据库中sum()函数和count()函数的区别是什么?
模糊查询中‘_’和‘%’的区别是什么?
北京某厂
做个自我介绍
项目的背景
项目的架构能讲一下吗
spring cloud常用组件用过哪些?把哪些用到项目里面了?
mybatis和mybatis-plus的区别
mybatis-plus的优点,特性?
讲一下常见的单点登录实现?
你是怎么实现单点登录的?
前端了解吗?都了解什么框架(我说的vue)?
vue一些常见的语法,方法都什么(mounted,单向绑定,双向绑定)?
郑州某厂
做一个自我介绍吧
我看你项目中用到了Nacos,你都用它来干什么了?
Nacos中怎么实现配置中心的?
你们项目的场景是什么?基本架构是什么样的?
你刚刚提到了负载均衡,有哪些常见的负载均衡策略?
我看你简历上提到了延迟队列,能讲讲你在项目中怎么使用的吗?
你上面写到了熟悉计算机网络,讲讲HTTP协议?
什么是TCP三次握手四次挥手呢?
SpringBoot中,怎么实现自动装配呢
spring mvc中,用户具体的访问流程是什么
反射是什么,能具体讲讲吗?
我看你上面写了熟悉常见的设计模式,讲讲单例设计模式(最主要让我说的是dcl)
设计模式
设计模式的分类
创建型: 在创建对象的同时隐藏创建逻辑,不使⽤ new 直接实例化对象,程序在判断需要创建哪些对象时更灵活。包括⼯⼚/抽象⼯⼚/单例/ 建造者/原型模式。
结构型: 通过类和接⼝间的继承和引⽤实现创建复杂结构的对象。包括适配器/桥接模式/过滤器/组合/装饰器/外观/享元/代理模式。
⾏为型: 通过类之间不同通信⽅式实现不同⾏为。包括责任链/命名/解释器/迭代器/中介者/备忘录/观察者/状态/策略/模板/访问者模式。
软件设计原则:
最近看到一个很好的形容,比如说一个厂的一个流水线正在生产拖拉机,现在又来了一个新订单要生产口罩,那么你有两种选择,你是把拖拉机那个流水线改成生产口罩的流水线呢,还是再开一条生产线生产口罩呢?
答案当然是再开一条,这里面的原理就是开闭原则
工厂模式说一说简单工厂模式简单工厂模式指由一个工厂对象来创建实例,客户端不需要关注创建逻辑, ...
并发
进程和线程进程与线程
程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。
进程就是用来加载指令、管理内存、管理 IO 的,当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(比如开两个qq),也有的程序只能启动一个实例进程(比如你打开了网易云音乐,再打开还是那个应用等)
二者对比
进程基本上相互独立的,而线程存在于进程内,是进程的一个子集
进程拥有共享的资源,如内存空间等,供其内部的线程共享
进程间通信较为复杂
同一台计算机的进程通信称为 IPC(Inter-process communication)
不同计算机之间的进程通信,需要通过网络,并遵守共同的协议,例如 HTTP
线程通信相对简单,因为它们共享进程内的内存,一个例子是多个线程可以访问同一个共享变量
线程更轻量,线程上下文切换成本一般上要比进程上下文切换低
并发与并行 单核 cpu 下,线程实际还是 串行执行 的。操 ...

