朝花夕拾-杂集
文章平均质量分 69
Rookie2Master
CSDN is like shit and is no longer used
展开
-
互联网公司发员工期权靠谱吗?
知乎上一个提问和回答,post到这里参考一下~~Q:我到一个创业公司,老板说前300名员工有期权,给我们价格特别便宜,5分钱一股,给了我40万股,并且钱也不用现在交,只要在4年内哪天自己方便随时可交钱。老板告诉我们,我们的期权是很值钱的,公司将来一旦上市,这些期权每股将会有100元人民币以上的价格。说的我挺心动的,也就是我在4年内,可以随时用2万人民币买价值4000万人民币的公司股票。请问一下懂这个的大拿,这个真的靠谱么?A:兄弟,你这个期权激励方案,听起来不错。但我个人听起来有点扯淡,感觉老板忽悠的转载 2021-11-14 15:59:39 · 2381 阅读 · 0 评论 -
负载均衡--Nginx, LVS
1.第一篇:负载均衡概述2.第二篇:LVS转发3. 补充解释7层和4层区别,以及为何在LVS下还要再加一层NginxPS1: 在做负载的时候,包是从底层到高层解析的!!也就是先解析第四层的四元组(源,目的地址的:ip,端口),这时还看不到7层应用层的数据(URI,不是URL,URL是用户端看到的,实际上在组装http报文的时候,已经通过URL前一部分的域名解析为ip地址了,URL后续部分是URI,也就是实际请求的资源地址)的信息,只有到第7层才会看到;所以 这种情况下,显然4层效率高(不用解析应用层)原创 2021-08-12 11:13:00 · 441 阅读 · 0 评论 -
对称加密、非对称加密算法,数字证书
对称加密:对称加密对称加密用的是同一个密钥来加密和解密,所以,密钥需要在网络中传输(A把密钥发给B),所以需要安全的密钥加密算法(数学理论保证可靠):密钥交换算法非对称加密:非对称加密...原创 2021-07-21 15:29:00 · 479 阅读 · 0 评论 -
异步IO、epoll、零拷贝
异步 IO 模型(AIO)是真正意义上的无阻塞的IO操作,但是目前只有windows支持AIO,linux内核暂时不支持。所以,理论上liinux的epoll尽管很猛,但是read的第二阶段:内核空间到用户空间还是阻塞的。参考:WX收藏夹:你管这叫IO多路复用...原创 2021-07-21 10:53:06 · 1749 阅读 · 0 评论 -
Auth2.0拿code换token,拿token换用户信息
先post一篇介绍Auth2.0的文章:Auth2.0, 链接失效的话,看本地PDF文件。来源于WeChat公众号:低并发编程之前做过oidc的权限登陆,原理基本上就是Auth2.0。auth2.0有好几种认证模式,一般大家用的也都是授权码模式(也就是多一步返回code的操作)。下面先引用作知乎用户回答:链接:https://www.zhihu.com/question/27446826/answer/127367856先确认一下 oauth2 code 认证的角色1,client——通原创 2021-05-27 21:01:30 · 3604 阅读 · 0 评论 -
杂想:为什么是传输层进行差错控制不是应用层?
问题:在看thrift协议的时候,突然想到差错控制为什么要在传输层(单指tcp)做,而不是更上一层的应用层?思路:后来仔细一想,虽然客户端在打包的时候,是从应用层开始从上往下填充的,但是服务端解析的时候是反着来的,从下往上的,这也是为什么TCP/IP被称为协议栈的原因之一。(刚好满足栈的特性)所以,我们在进行差错控制的时候,比如看序号有没有乱,是先解析到tcp的,此时应用层还在tcp的数据段里面没有解析出来,这时候在服务端看来,它看到的就是一个单纯的网络段–tcp报文,跟业务是没有关系的,它通过tc原创 2021-05-26 17:58:32 · 631 阅读 · 0 评论 -
AB实验流量正交的理解
【假设】比如有1、2两个实验层。1层开了一个实验,对照组A,实验组B,各n%流量。2层开了另一个实验,对照组C,实验组D。各%m流量。【说明】正交的意思就是1层的流量会随机均匀地影响2层的流量。【现象】这样2层对照组C中,会有n%*m%的流量命中实验B,实验组D中,也会有n%*m%的流量命中实验B。【解决的问题】1层的实验如果流量分配不均可能导致2层实验数据不可信,但是既然C、D两组受到B实验组的影响是一致的都是n%*m%的用户,那这个影响就可以忽略了。...原创 2021-05-20 20:20:57 · 5515 阅读 · 0 评论 -
select和count一起使用返回一条数据
背景:在项目开发过程需要用到count 和 select一起使用的情况,最后只返回一条数据。如下图是select里面用了count, 只返回一条数据下图为去掉count语句结果:返回10条数据。原因解析:count本来就是返回一个统计结果,结果只有一个(count(1)的结果不管运行几遍都是22)的时候显然只返回一条数据。如果返回多条,显然是要使用group by,否则的话就是只返回一条袭。但是一般情况下,在sql语句里select和count就是要分开实现,即便通过join可能会得到想要原创 2021-05-18 14:02:40 · 3193 阅读 · 0 评论 -
一台主机最多保持65535个TCP连接吗?
微信公众号:低并发编程原文链接:传送门一个主机最多建立多少TCP连接?65535?我是一个 Linux 服务器上的进程,名叫小进。老是有人说我最多只能创建 65535 个 TCP 连接。我不信这个邪,今天我要亲自去实践一下。我走到操作系统老大的跟前,说:“老操,我要建立一个 TCP 连接!”老操不慌不忙,拿出一个表格递给我,“小进,先填表吧”我一看这个表,这不就是经典的 socket 四元组嘛。我只有一块网卡,其 IP 地址是 123.126.45.68,我想要与 110.242.68.原创 2021-05-12 09:55:55 · 1016 阅读 · 0 评论 -
微服务时代--service mesh&AGW
转载自:https://zhuanlan.zhihu.com/p/61901608Service MeshService Mesh作为下一代微服务技术的代名词,初出茅庐却深得人心一鸣惊人,大有一统微服务时代的趋势。那么到底什么是Service Mesh?一言以蔽之:Service Mesh是微服务时代的TCP协议。有了这样一个感性的初步认知,我们再来看到底什么是Service Mesh。提到Service Mesh,就不得不提微服务。根据维基百科的定义:微服务 (Microservices)转载 2021-04-11 10:04:30 · 439 阅读 · 1 评论 -
MySQL中的int(11)和varchar(255)含义
转载自:https://www.cnblogs.com/chenmingjun/p/10556206.html一、前言在工作中经常要与 mysql 打交道,但是对 mysql 的各个字段类型一直都是一知半解,因此写本文总结记录一番。二、简介对于 int 类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的 int(11) 代表什么意思,很长时间以来我都以为这代表着限制 int 的长度为 11 位,直到有天看到篇文章才明白,11 代表的并不是长度,而是字符的显示宽度,在字段类型为 int原创 2021-04-09 10:03:29 · 4957 阅读 · 0 评论 -
关于MD5和RSA加密算法
之前对加密算法总有疑问: 如果坏人拿到加密后的信息,不就可以倒推出来原始信息了吗?原因在于没有真正理解各个加密算法的特性。来,先看下MD5。1.MD5加密MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用。MD5的功能:①.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);②.不同的输入得到的不同的结果(唯一性);③.根据128位的输出结果不可能反推出输入的信息(不可逆),也就是只能加密,原创 2021-03-21 19:59:08 · 844 阅读 · 0 评论 -
RBAC权限管理
RBAC权限管理原创 2021-03-16 16:34:02 · 77 阅读 · 0 评论 -
where、 group by、 having 、count、limit、 order by 执行顺序
count(*) 会对记录列名为空时也进行统计,count(列名) 不会对记录的列名为空时进行统计,(进行不进行统计的意思是算不算在内,如果该列名的所有记录都是空的话,count(*)等于记录数,count(列名)是0)from 、join 、where 、group by 、count、having、order by 、limit...转载 2020-12-20 16:12:25 · 602 阅读 · 0 评论 -
转发和重定向区别
转发和重定向区别转发的特点: 服务端负责跳转地址栏不发生变化,显示的是上一个页面的地址请求次数:只有1次请求根目录:http://localhost:8080/项目地址/,包含了项目的访问地址请求域中数据不会丢失转发使用哪个方法?request.getRequestDispatcher("/地址").forward(request, response);重定向的特点:客户端负责地址栏:显示新的地址请求次数:2次根目录:http://localhost:8080/ 没有项目的转载 2020-12-15 16:31:46 · 149 阅读 · 0 评论 -
redo log &bin log & undo log联系及区别
一、redo log重做日志作用:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。二、bin log归档日志(二进制日志)作用:用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。用于数据库的基于时间点的还原。内容:逻辑格式的日志,可以简单认转载 2020-12-15 16:08:37 · 228 阅读 · 0 评论 -
Redis持久化RDB和AOF
Redis持久化Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。1.RDB持久化RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发1)触发机制手动触发分别对应save和bgsave命令·save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用·bgsave命令:Redis进程执行fork操转载 2020-12-14 22:23:12 · 93 阅读 · 0 评论 -
Redis分布式锁
Redis分布式锁原文地址-微信公众号CSDN转载地址一、写在前面现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。说实话,如果在公司里地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了,非常的简便易用。大家如果有兴趣,可以去看看Re转载 2020-12-12 11:26:03 · 326 阅读 · 0 评论 -
c# WinForm通过委托事件实现winform窗体之间的互相刷新
存在这样一种需求:父窗口A创建了子窗口B,B在显示处理的的时候,需要把一些信息的信息刷新到A上,但是WinForm一般不允许直接通过A的对象刷新,况且B都不知道是谁调用的它(不知道父窗口是谁)。一般利用委托实现如下示例:新建winform窗体Form1和Form2;接下来要通过点击Form2的按钮,实现Form1界面的同步刷新。先展示一下最终效果:1.Form1界面如下:2.点击按钮弹出Form2,界面如下:3.点击Form2按钮弹出提示框,点击“是”实现Form1的同步刷新:4.F转载 2020-12-02 19:43:26 · 7106 阅读 · 4 评论 -
C# 委托使用场景
A1窗口打开B窗口,B窗口向A1窗口传值时使用到委托。只有A1打开B窗口时,可以直接在B调用A1中的(public)方法,这看不出委托的作用(前提是知道B窗口是A1窗口打开的)。当有窗口A2也打开B窗口,同时需要B窗口返回值时,如果也在B中直接调用A2的(public)方法,就需要在B中判断是A1还是A2调用它,然后调用对应的窗口的方法来实现返回数据(前提是知道B窗口只被A1、A2调用)。当打开B窗口的有n(未知)个时,显然直接调用父窗口的(public)方法这种做法已经不能实现数据反馈功能了。场景例如转载 2020-11-30 16:47:45 · 1148 阅读 · 0 评论 -
为什么指针被誉为C语言的灵魂?
C语言的指针“窥探”转载 2020-11-26 10:32:31 · 382 阅读 · 0 评论 -
java线程可以在运行在多个cpu核上吗?
我是一直都以为这个问题的答案是肯定的,也就是说可以运行在多核上。但是有一天见到这样的一个理论,我就顿时毁三观了。JVM在操作系统中是作为一个进程的,java所有的线程都运行自这个JVM进程中,所以说java线程某个时间只可能运行在一个核上。这个说法对我的打击太大了,我不能接受。于是就开始多方求证。网上搜索 和朋友一起讨论,最终证实了java线程是可以运行在多核上的,为什么呢?下面一句话将惊醒梦中人:现代os都将线程作为最小调度单位,进程作为资源分配的最小单位。 在windows中进程是不活动的转载 2020-11-05 17:12:23 · 1728 阅读 · 0 评论 -
核心网,骨干网,支撑网,接入网的区别和联系
从业务角度划分:业务网:核心网+接入网。从传输角度划分:通信网:骨干网+接入网。核心网(Core Network):业务层的角度划分,将接入网与其他接入网连接在一起的网络。骨干网(backbone network):城市之间的连接网络。支撑网:监管业务网(通信网)的网络。广域网:都是由核心网+接入网组成,骨干网一般都是广域网,作用范围几十到几千公里。一、骨干网(backbone network)是承载网的概念,核心网(CN)是移动通信网络的概念,骨干网又被称为核心网”这个回答 完全错误。几转载 2020-10-31 10:38:18 · 15390 阅读 · 0 评论 -
IP、域名和端口号之间的联系
首先,一个域名是对应到一个 IP的一个端口。通常情况下,默认为80端口,所以直接输入ip也能访问。在实际情况中,因为用户和服务器之间存在代理服务器比如nginx,这个解析到的域名一般是代理服务器的 IP地址(或者IP地址 :80端口 ),代理服务再去转发请求到真正的业务服务器,业务服务器和IP和端口号就跟访问的域名没啥关系了。1.背景介绍当我们把项目部署到自己的服务器上以后,一般可以通过两种形式访问项目,一种是ip+端口号,还有一种是域名访问.那么这两种访问项目的方式的区别是什么呢?哪一种更好一些转载 2020-10-30 11:50:37 · 8172 阅读 · 4 评论 -
Http协议相关
HTTP是一种不保存状态的协议HTTP是一种无状态的协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说HTTP这个级别,协议对于发送过的请求和响应都不做持久化的处理。为什么要这么做?这是为了更快的处理大量的事务,确保协议的可伸缩性。而特意把HTTP设计得这么简单的。那么我要保存状态的话要怎么做?HTTP/1.1提出了相应的解决方法,虽然HTTP1.1也是无状态的协议,但是引入了Cookie技术。有了Cookie再使用HTTP通信,就可以管理状态了。后面我会总结到Cookie。转载 2020-10-30 11:43:33 · 147 阅读 · 0 评论 -
深入理解JVM:Java类加载机制
Java类加载机制类加载器的任务是根据类的全限定名来读取此类的二进制字节流(字节码文件)到 JVM 中,然后转换成一个与目标类对象的java.lang.Class 对象的实例。类加载的时机隐式加载 new 创建类的实例,显式加载:loaderClass,forName等访问类的静态变量,或者为静态变量赋值调用类的静态方法使用反射方式创建某个类或者接口对象的Class对象。初始化某个类的子类直接使用java.exe命令来运行某个主类类加载的过程我们编写的java文件都是保存着业务逻辑转载 2020-10-27 19:20:44 · 106 阅读 · 0 评论 -
Java类的初始化顺序
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。测试代码:package javaThreadLearning;class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; protected int i = 1; protected int j = 8; // 变量转载 2020-10-27 11:42:16 · 294 阅读 · 0 评论 -
开源协议大搜罗
有不少人认为开源就是免费,其实这个观点是错误的,今天就来谈谈关于开源的内容。一、关于开源开源软件在追求“自由”的同时,不能牺牲程序员的利益,否则将会影响程序员的创造激情,因此世界上现在有 60 多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什么,不可以做什么。开源协议虽然不一定具备法律效力,但是当涉及软件版权纠纷时,开源协议也是非常重要的证据之一。对于准备编写一款开源软件转载 2020-10-26 09:18:19 · 95 阅读 · 0 评论 -
正向代理,反向代理与nginx
Nginx 笔记:反向代理&项目发布&搭建集群原创 2020-10-13 21:10:40 · 410 阅读 · 0 评论 -
(转载)什么是消息队列?
消息队列最经典三大应用: 解耦,异步,削峰知乎转载:看前两个回答 讲解的很清晰转载 2020-10-05 15:55:38 · 63 阅读 · 0 评论 -
Java参数传递传值还是传引用以及全局变量的使用问题
在Java中,当对象作为参数传递时,究竟传递的是对象的值,还是对象的引用?先说结论,无论你传的是基本数据类型还是引用类型,都是值传递。(因为引用类型只不过是把指向对象的地址拷贝一份传递给形参)。这样理解,引用类型的变量存储在栈中,其数值表示堆上对象的内存地址。调用函数时,会把这个变量的值(引用类型的话也就是对象地址)拷贝一份在栈上,传递给函数,此时在函数内重新给形参赋值并不会影响到外部的那个变量(实参)。而通过这个形参修改指向的对象时,因为形参与实参指向的是同一个对象,所以影响的是同一个对象。比如方法原创 2020-10-01 12:02:35 · 3842 阅读 · 5 评论 -
Java compare方法和compareTo方法
1.compare对于 public int compare(Object arg0, Object arg1)的理解//数组排序String[] str = new String[5];Arrays.sort(str, new Comparator<String>() { @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub .转载 2020-09-25 10:49:47 · 4114 阅读 · 0 评论 -
HashMap详解
参考:Java集合之一—HashMap转载 2020-09-24 14:54:52 · 87 阅读 · 0 评论 -
通俗解释云计算和边缘计算
云计算:转载边缘计算:转载转载 2020-09-23 20:03:32 · 353 阅读 · 0 评论 -
socket通信和TCP/IP协议,及操作系统之间的关系
今天贾哥跟老师讨论了在项目里拿消息队列替换socket通信的问题,在我印象里 socket和消息队列感觉是两个不同世界的东西,这咋能互相替换呢?于是搜集一下资料,整理了一下,感觉对socket的概念更清楚了一些。socket是一个编程接口,那么这个编程接口是怎么实现的啊?是谁来实现的?是操作系统吗?我理解的socket就是 操作系统 提供给用户的一个接口,用户(程序)调用这个接口实现通信。就像里面的函数:listen(),accept(),recv()…等函数只能调用,但是具体它是怎么实现原创 2020-09-22 17:00:17 · 3830 阅读 · 3 评论 -
二分查找边界问题总结
二分查找很常见,思路也很清晰。但是还是那句经典的话: 思路越简单,细节越丰富。二分查找 "恶心"人的地方有三个:while 里面是left <= right 还是 left < right ?缩小区间的时候,left 和 right 要不要带上mid?(最可能引起死循环的原因)返回啥 ? left 还是 right ?有时候凭感觉写的对了,有时候就错了,这就是传说中的7分天注定,3分靠感觉!coding的最终奥义,无脑编程!拿最常用的三个 二分查找场景:寻找一个数寻找一原创 2020-09-16 16:25:06 · 3640 阅读 · 0 评论 -
JVM垃圾回收总结
JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)原创 2020-09-15 19:33:45 · 92 阅读 · 0 评论 -
linux下执行并查看后台进程,jobs,ps,top命令 的区别
linux下执行并查看后台进程,jobs,ps,top命令 的区别背景:王晓茹老师布置的数据挖掘(机器学习)的课程实验 - - 100万条新闻文本的分类。老师要求了两种方法,朴素贝叶斯和SVM,100万条新闻貌似NB在个人电脑上跑得动,但是SVM就够呛了。我们实验室的服务器刚好又关了,就用队友他们组的服务器跑。1. 后台运行用Xshel连上服务器之后,想让进程在后台跑,一般有两种 nohu...原创 2019-12-15 21:23:11 · 3403 阅读 · 0 评论 -
Java编译和解释,JIT即时编译
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译(compilation , compile):通俗来讲,编译就是把高级语言变成计算机可以识别的二进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成二进制的。编译型语言写的程序在执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译原创 2020-09-14 10:53:10 · 667 阅读 · 0 评论 -
Java中Stack栈用foreach,迭代器访问的坑
Stack的源码 比较简单,内部是通过数组实现的,执行push时将元素追加到数组末尾;执行peek时返回数组末尾元素(不删除该元素),执行pop时取出数组末尾元素,并将该元素从数组中删除。所以 用foreach或者迭代器访问的时候,是按照数组从索引0开始的方式遍历的!!即:从栈底到栈顶;刚好和弹栈的方式相反!!!所以,只能用pop() 弹出!! public static void main(String[] args) { Stack<Integer> stk = new原创 2020-09-09 10:15:25 · 1760 阅读 · 0 评论