![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习
菜菜的土豆
所有的焦虑与不安,都来自于自身的不足
展开
-
建造者模式
a原创 2022-08-28 20:27:13 · 111 阅读 · 0 评论 -
A*搜索算法
f原创 2022-06-05 22:08:50 · 114 阅读 · 0 评论 -
计算机启动过程
关于这一个问题,网上有很多答案,但是说法都比效官方:BIOS 按照“启动顺序”,把控制权转交给排在第一位的存储设备:硬盘。然后在硬盘里寻找主引导记录的分区,这个分区告诉电脑操作系统在哪里,并把操作系统被加载到内存中,然后你就能看到经典的启动界面了,这个开机过程也就完成了。看完这一段话,你肯定会有很多疑问:为什么是 BIOS 主导这一切?怎么叫按照启动顺序?这个分区咋就被加载到内存了,有咋告诉电脑操作系统在哪里了?对于以上的官方回答,我们来说说人话。但是在说人话之前,我们得先了解一些前置知识:1、内转载 2022-05-01 09:54:34 · 911 阅读 · 0 评论 -
关于最多能有多少个TCP连接的学习
一、关于tcp连接当一个进程需要与远程建立tcp连接时,需要找os申请,这时,需要4个信息:源ip,源端口,目标ip,目标端口如:123.126.45.68,(),110.242.68.3,80其中源端口由os分配一个可用的数字(0-65535),最后os会返回给进程一个文件描述符,如:5,后面进程与目标进行通信时,对着文件描述符读写就好了。二、端口号一直重复上述过程,直到connect cannot assign requested address,表示端口号不够用了。问题:此时一共创建了6转载 2022-04-24 23:06:56 · 572 阅读 · 0 评论 -
关于数据库锁的自问自答
一、隔离级别能解决什么1、读未提交(ru):啥也不是2、不可重复读(rc):解决了脏读。不会读取到未提交的数据3、可重复读(repeatable-read):解决了不可重复读。使用的是一致性非锁定读,总是读取事务开始后第一次读取的快照版本。可以避免幻读的产生。4、串行化(serializable)二、为什么会出现事务并发问题为什么会出现“脏读”?因为没有“select”操作没有规矩。为什么会出现“不可重复读”?因为“update”操作没有规矩。为什么会出现“幻读”?因为“insert”和“d原创 2022-03-21 22:00:21 · 675 阅读 · 0 评论 -
关于消息未读和已读的学习
企业IM比如企业微信、钉钉里面的群消息的有个已读未读的功能,发送者刚发出消息时,当前群里其他群成员都是未读状态,陆陆续续有人看了这个消息,这时候消息的详情变成x人已读,y人未读,该如何设计呢? 每一条消息,已读未读详情其实就是一个0/1的标记而已,我们可以选择维护一个bitmap来实现。 每个群的信息保存userid到自增mapid的**映射**,这样群成员每加入一个群里,就有mapid<->usreid的双向映射了。 假如群里有5个成员ABCDE, 那就对应mapid 1-5,mess.转载 2022-02-26 18:20:29 · 1077 阅读 · 0 评论 -
关于高可用的认识
一、什么是高可用 高可用(High availability,缩写为 HA),是指系统无中断地执行其功能的能力,代表系统的可用性程度。 高可用的主要目的是为了保障“业务的连续性”,即在用户眼里,业务永远是正常对外提供服务的。二、高可用架构设计 针对架构的高可用,第一步,采用分层的思想把一个大的IT系统拆分成应用层,中间层,数据存储层,每一层再拆分为更细粒度的组件;第二步,让每个组件对外提供服务,毕竟每个组件不是孤立存在的,需要互相协作。 高可用可分为“冗余”和“自动故障转移...原创 2022-02-23 19:10:38 · 9916 阅读 · 0 评论 -
学习笔记2022.2.22
一、延迟与响应时间1、延迟:请求花费在处理上的时间2、响应时间:客户端看到的,除了处理请求时间外,还包括来回网络和排队的延迟二、请求时间即使是反复发送、处理相同的请求,每次都会有不同的响应时间,偶尔还会有异常表示需要更长的时间,原因可能为:上下文切换,进程调度,网络数据包丢失,TCP重传,垃圾回收暂停,缺页中断(访问的页不在内存中,需要通过从外存加载该页到内存中),磁盘I/O,服务器机架的机械振动...原创 2022-02-22 15:11:35 · 568 阅读 · 0 评论 -
关于《数据密集型应用系统设计》-twiiter
一、twitter的两种推送方式1、不做提前运算,每次刷新时,关联表查询数据。优点:不会有额外的时间、空间占用缺点:读负载压力随用户量增加会与日俱增2、提前运算。对每个用户维护一个时间线缓存,当推送一个新tweet时,查询其关注者,并把新tweet插入到每个关注者的时间线缓存中。优点:加速读性能缺点:在发布tweet时增加了大量额外的工作,如:平均75个关注者和每秒4.6k的tweet,则需要每秒4.6*75=345k的速率写入缓存。同时,某些用户有上千万的关注者,意味着在峰值,会出现一个twe原创 2022-02-22 14:10:49 · 162 阅读 · 0 评论 -
关于redis中SDS的细节
一、问题的产生为什么redis速度快?因为他们有独特的数据结构,如String类型的SDS,那么SDS到底是什么样子的,这么设计有什么好处?二、SDS结构SDS是Simple Dynamic String的缩写。struct sdshdr { // 记录buf中已使用的字节数,等于SDS中保存字符串的长度 unsigned int len; // 记录buf中未使用的字节数 unsigned int free; // 用于保存字符串 char buf[];}buf的尾部自动追加一个转载 2022-02-18 14:19:01 · 473 阅读 · 0 评论 -
MySQL的主备同步
一、原理A:主库B:备库1、主库接受到客户端发送的一条update语句,执行内部事务逻辑,同 时写入binlog。2、备库通过 change master 命令,设置主库的IP、端口、用户名和密码,以及要从哪个位置开始请求 binlog。这个位置包含文件名和偏移量。3、在备库上执行start slave命令,启动两个线程 io_thread 和 sql_thread,其中 io_thread 负责与主机进行连接。4、主库校验完用户名和密码,按照接收到的位置去读取binlog,发给备库。5、原创 2022-01-10 14:29:07 · 2174 阅读 · 0 评论 -
jvm参数
-X显示有效的-X选项的帮助信息-Xloggc:filename将GC(garbage collection)信息重定向到filename。当-Xloggc和-verbose:gc同时给出时,-Xloggc将重载-verbose:gc-Xmnsize设置堆中年轻代(young generation)的初始值和最大值大小。单位是bytes,常用K,M,G (不区分大小写)年轻代主要放置新对象,这块区域也是GC执行比较频繁的区域。如果该区域设置较小,可能导致频繁minor GC,如果设置过大,原创 2021-03-29 14:01:52 · 534 阅读 · 0 评论 -
网络编程-Go
Go语言基础之网络编程2017年6月26日 | Golang 本文总阅读量20226次现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网络编程。 关于网络编程其实是一个很庞大的领域,本文只是简单的演示了如何使用net包进行TCP和UDP通信。如需了解更详细的网络编程请自行检索和阅读专业资料。互联网协议介绍互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite)原创 2021-03-11 21:54:27 · 86 阅读 · 0 评论 -
executorService
ExecutorService 的理解和使用前言:我们之前使用线程的时候都是使用new Thread来进行线程的创建,但是这样会有一些问题。如:a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c. 缺乏更多功能,如定时执行、定期执行、线程中断。相比new Thread,Java提供的四种线程池的好处在于:a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。b. 可有效控制最大并发线程数,提原创 2021-01-12 13:43:31 · 215 阅读 · 0 评论 -
url转base64
本地图片转base64编码 private static String ImageToBase64(String imgPath) { // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 InputStream in = null; byte[] data = null; // 读取图片字节数组 try { in = new FileInputStream(imgPath);原创 2020-09-17 16:15:00 · 4759 阅读 · 0 评论 -
位运算
1.异或运算 ^相同为0,相异为1左移高位(左边)丢弃,低位(右边)补0左移n位,将它的值乘以2的n次方右移符号位不变,低位舍弃,高位补上符号位右移n位,将它的值除以2的n次方参与运算:补码参与运算,转换为补码参与运算,再转化为原码,得到结果原码:一个数的二进制表示方式反码:正数:和原码一样负数:符号位不变,其余位按位取反补码:正数:和原码一样负数:符号位不变,在反码的基础上+1...原创 2020-09-15 16:19:23 · 71 阅读 · 0 评论 -
hashMap底层原理
Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap。其中,对于HashMap,有如下认知:HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分(链表>6&数组>=64,转化为红黑树;红黑树节点<6,转化为链表))实现的。HashMap就是使用哈希表来存储的。哈希表为解决冲突,可以采用开放地址法和链地址法等来解决问题,Java中Hash转载 2020-09-15 11:04:59 · 178 阅读 · 0 评论 -
2020-08-10
查找文件find / -name filename.txt或which/where(怎么样,很形象吧)查看一个程序是否运行ps –ef|grep tomcat或deployadmin -s 程序名 -a list如果是running,就是在运行如果是down,则是挂掉了,可以用deployadmin -s 程序名 -a restartall来强制重新启动终止线程kill -9 19979终止线程号为19979的线程查看文件,包含隐藏文件ls -al当前工作目录..原创 2020-08-10 21:45:36 · 109 阅读 · 0 评论 -
关于Optional类一些方法
java 8 引入了Optional类,主要是帮我们解决NPE问题(NullPointException)。话不多说,上源码。一、ofNullable方法,当值为null时,调用empty(),非空调of(value)public static <T> Optional<T> ofNullable(T value) { return value == n...原创 2020-03-11 21:31:09 · 1216 阅读 · 0 评论 -
关于list.stream().map(User::getUserId).collect(Collectors.toList())的写法
今天看同事的代码,见到下面这一段,没看懂,去网上百度了一下,才明白是什么意思List<User> UserList = userMapper.selectAllUser();List<String> userIdList = UserList.stream().map(User::getUserId).collect(Collectors.toList());等价于...原创 2020-03-11 20:38:37 · 6828 阅读 · 3 评论