- 博客(11)
- 收藏
- 关注
原创 用python实现统计字符串中字母的个数
用python实现统计字符串中字母的个数txt = input("请输入字符串:")counts = {}for t in txt: counts[t] = counts.get(t,0) + 1ls = list(counts.items())ls.sort(key=lambda x:x[1],reverse=True)for i in range(len(ls)): t,c = ls[i] print("{0:<10}{1:>5}".format(t,c)
2021-04-12 21:37:55
6033
1
原创 用python统计水浒传中的高频词汇
用python统计水浒传中的高频词汇#词频统计.pyimport jiebaexcludes = {"两个","一个","只见","如何","那里","哥哥","说道","军马","头领","众人","这里","兄弟","梁山泊","出来","小人","今日","这个","先锋","三个","因此","人马","问道","起来","便是","妇人","好汉","不是","不知","不曾","只是","如此","次日","我们","不得","如今","看时","不敢","来到","且说","一面","只
2021-04-12 21:29:20
4690
7
原创 用C语言实现学生信息管理系统
用C语言实现学生信息管理系统#include<iostream>#include<string.h>using namespace std;typedef struct{ char no[8]; char name[20]; float score;}Student;typedef struct LNode{ Student data; struct LNode *next;}LNode,*LinkList;void CreatList(LinkList &
2021-04-12 20:56:45
307
原创 java中类加载器的分类
类加载器的分类JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么自定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器无论类加载器的类型如何划分,在程序中我们最常见的类加载器始终只有3个,如下所示:注意: 这里的四者之间的关系是包含关系
2021-04-12 20:32:12
315
原创 java中类的加载过程
类的加载过程1)、Loading加载:1、通过一个类的全限定名获取定义此类的二进制字节流2、将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构3、在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口补充: 加载.class文件的方式2)、Linking验证(Verify)目的在于确保class文件的字节流中包含的信息符合当前虚拟机的要求,保证被加载类的正确性,不会危害虚拟机自身安全主要包括四种验证,文件格式验证,元数据
2021-04-12 20:28:15
73
原创 Java中的Map分析
1、常用实现类结构/----Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y = f(x) /----HashMap:作为Map的主要实现类;线程不安全,效率高;存储null的key和value /----LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历 原因:在原来的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。对于频繁的遍历操作, 此类执行
2021-04-08 11:11:50
188
4
原创 Java中的set分析
1、常用实现类/----Collection接口:单列集合,用来存储一个一个的对象 /----Set接口:存储无序的、不可重复的数据 /----HashSet:作为Set接口的主要实现类;线程不安全的;可以存储null值 /----LinkedHashSet:作为HashSet的子类;遍历其内部数据时,可以按照添加的顺序遍历;在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个数据和后一个数据;对于频繁的遍历操作,LinkedHashSet效率高于HashSet /
2021-04-08 11:05:01
451
3
原创 Java中的List分析
1、常用实现类/----Collection接口:单列接口,用来存储一个一个的对象 /----List接口:存储有序的、可重复的数据 -->“动态”数组,替换原来的数组 /----ArrayList:作为List接口的主要实现类;线程不安全的,效率高;底层使用Object[] elementData存储 /----LinkList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表存储 /----Vector:作为List接口的古老实现类;线程安全
2021-04-08 11:00:01
89
2
原创 双亲委派机制
双亲委派机制Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。工作原理如果一个类加载器收到了类加载的请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行如果分类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器如果父类加载器可以完成类加载任务,就
2021-04-06 20:28:05
80
原创 高并发下缓存失效的问题
1、缓存穿透1)缓存穿透只查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,我们没有将这次查询的null写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。2)风险利用不存在的数据进行攻击,数据库瞬时压力增大,最终导致崩溃。3)解决null结果缓存,并加入短暂过期时间。2、缓存雪崩1)缓存雪崩缓存雪崩是指我们在设置缓存时key采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。2)解决原
2021-04-06 12:21:46
176
2
原创 消息可靠性
1、消息丢失消息发送出去,由于网络问题没有抵达服务器解决做好容错方法(try-catch),发送消息可能会网络失败,失败后要有重试机制,可记录到数据库,采用定期扫描重发的方式做好日志记录,每个消息状态是否被服务器收到都应该记录做好定期重发,如果消息没有发送成功,定期去数据库扫描未成功的消息进行重发消息抵达Broker,Broker要将消息写入磁盘(持久化)才算成功。此时Broker尚未持久化完成,宕机解决publisher必须加入确认回调机制,确认成功的消息,修改数据库消息状态自动
2021-04-06 11:45:42
97
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人