- 博客(73)
- 收藏
- 关注
原创 虚拟机的网络设置
这里写自定义目录标题虚拟机的网络设置NAT桥接模式虚拟机的网络设置尝试NAT转发或桥接模式。NAT根据主机ip的VMnet8网络配的,vi /etc/sysconfig/network-scripts/ifcfg-ens33MAC物理地址可查看桥接模式查看本机的ip编辑虚拟机网络桥接模式中选了仅主机虚拟网络...
2022-03-23 23:21:12
865
2
原创 mathtype那些事
初次使用公式编号的时候,可以在第一章、第二章……标题前面放置光标,然后插入章节断点。当mathtype中放置错了章节断点,那么可以Alt+F9显示章节断点,删除,Alt+F9回来。刚开始使用插入公式编号功能的时候,会出现弹窗,可选择从第1章开始对公式进行编号。参考链接:[1]https://www.mathtype.cn/jiqiao/xiugai-zhangjiehao.html[2]http://blog.sina.com.cn/s/blog_3f738ee00102v1wi.html[3]
2021-04-11 20:00:35
211
1
原创 anaconda安装包失败问题——踩坑记录
当使用conda install某包,报错PackagesNotFoundError:The following packages are not available from current channels,百度查询解决方案,最后采用的解决办法是conda config --add channels https://conda.anaconda.org/conda-forge
2020-11-22 14:53:42
1291
原创 双系统踩坑记
一、双系统1.烧录U盘进入中国linux官网https://cn.ubuntu.com/选择Ubuntu桌面系统,之后点击下载Ubuntu,再点击其他下载页,再点击Past releases,选择18.04.5/ubuntu-18.04.5-desktop-amd64.iso进行下载。然后百度软碟通,可在官网下载试用,然后百度它的注册码,打开此软件,点击打开,选择下载好的iso文件,接着点击启动,选择写入硬盘镜像,再选择u盘(一般会自动识别到),点击写入(注意u盘里的内容会被格式化)。2.window
2020-10-05 19:56:28
289
2
原创 社区网站项目8.5 常见面试题
1.MySQL存储引擎、事务、锁、索引 2.Redis数据类型、过期策略、淘汰策略、缓存穿透、缓存击穿、缓存雪崩、分布式锁 SpringSpring IoC、Spring AOP、Spring MVC 存储引擎 事务 锁范围:(1)表级锁:开销小、加锁快,发生锁冲突的概率高、并发度低,不会出现死锁。(2)行级锁:开销大、加锁慢,发送锁冲突的概率低、并发度高,会出现死锁。类型(1)共享锁(S):行级,读取一行;(2)排他锁(X):行级,更新一行;(3)意向共享锁
2020-08-25 23:45:04
365
原创 社区网站项目8.4 项目总结
如果项目上线,一般会做多个服务器的部署,应聘要求:(1)基本素养(数据结构与算法)(2)项目经验(3)钻研能力,比如redis、数据库读写分离、nginx、spring源码、tomcat,挑一个研究透彻。...
2020-08-25 22:05:07
242
原创 社区网站项目8.3 项目部署
需要部署的环境如下图所示 安装putty之后连接centos服务器。其他软件能用yum安装就用yum安装,有些软件在yum这里版本太旧,可以把官网提供的yum库文件下载到服务器,再用yum安装。比如Mysql,可以右键copy链接地址。 有些软件不支持yum,那我们就去官网下载tar.gz的包,比如apache-maven 需要下载这些包 tomcat的官网是tomcat.apache.org,在左侧选版本,然后选择 我们需要向服务器传文件,通过本地的命令行, cd
2020-08-25 20:32:59
215
原创 补-社区网站1.7 版本控制
认识Git(官网https://git-scm.com)(1)Git简介(2)Git的安装与配置 Git常用命令(1)将代码提交至本地仓库(2)将代码上传至远程仓库 IDEA集成Git在IDEA中配置并使用Git 到官网下载git,用命令行git version查看git版本,//查看相关信息git config --list//设置用户名git config --global user.name "yshuqiao"git config --global user.e
2020-08-23 18:52:22
121
原创 补-社区网站1.6 项目调试技巧
响应状态码的含义https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status其中200是成功,302是重定向,404表示资源不存在(往往是路径不正确),500表示服务器在处理中发生了错误(这种情况应该去检查服务器的程序)。 服务端断点调试技巧 客户端断点调试技巧 设置日志级别,并将日志输出到不同的终端,https://logback.qos.ch是官网 至于怎么dubug,例如在HomeController类的getIndexPag
2020-08-23 16:54:41
149
原创 补-社区网站1.5 开发社区首页
开发流程(1)1次请求的执行过程 分步实现(1)开发社区首页,显示前10个帖子(2)开发分页组件,分页显示所有的帖子 新建DiscussPost类, private int id; private int userId; private String title; private String content; private int type; private int status; private Date createTime;
2020-08-23 13:15:11
322
原创 社区网站8.2 项目监控
Spring Boot Actuator(1)Endpoints:监控应用的入口,Spring Boot内置了很多端点,也支持自定义端点。(2)监控方式:HTTP或JMX。(3)访问路径:例如"/actuator/health"。(4)注意事项:按需配置暴露的端点,并对所有端点进行权限控制。 在mvn库里搜spring boot actutor,把这个spring-boot-starter-actutor包粘贴到pom.xml。默认有20多个端点,几乎所有端点都是启用的,只有一个端点是禁用的
2020-08-21 20:02:08
122
原创 社区网站8.1 单元测试
Spring Boot Testing(1)依赖:spring-boot-starter-test(2)包括:Junit、Spring Test、AssertJ Test Case(1)要求:保证测试方法的独立性(2)步骤:初始化数据、执行测试代码、验证测试结果、清理测试数据。(3)常用注解:@BeforeClass(在类初始化之前)、@AfterClass、@Before(每调一个测试方法前)、@After(每调一个测试方法后)。 新建SpringBootTests类,// 对类,
2020-08-21 19:32:29
230
原创 社区网站7.10 优化网站的性能
本地缓存(1)将数据缓存在应用服务器上,性能最好。(2)常用缓存工具:Ehcache、Guava、Caffein等。 分布式缓存(1)将数据缓存在NoSQL数据库上,跨服务器。(2)常用缓存工具:MemCache、Redis等。 多级缓存(1)>一级缓存(本地缓存)>二级缓存(分布式缓存)>DB(2)避免缓存雪崩(缓存失效,大量请求直达DB,提高系统的可用性。 本地缓存和redis缓存的示意图(本地缓存更普适,效率更高) 在github上搜Caffein
2020-08-21 18:46:55
270
1
原创 社区网站 7.9 将文件上传至云服务器
客户端上传(1)客户端将数据提交给云服务器,并等待其响应。(2)用户上传头像时,将表单数据提交给云服务器。 服务器直传(1)应用服务器将数据直接提交给云服务器,并等待其响应。(2)分享时,服务器将自动生成的图片,直接提交给云服务器。 七牛云官网https://www.qiniu.com,看产品手册中的概述、对象存储功能、SDK相关使用方法。 在mvn库里搜qiniu,把包粘贴到pom.xml。再在application-properties里添加# qiniuqiniu.key.
2020-08-21 16:37:14
208
原创 社区网站7.8 生成长图
wkhtmltopdf(1)wkhtmltopdf url file(1)wkhtmltoimage url file java(1)Runtime.getRuntime().exec() 官网https://wkhtmltopdf.org,下载安装,把安装目录添加到环境变量。 新建D:\javing\workspace\data\wk-images和D:\javing\workspace\data\wk-pdfs目录,打开命令窗口,输入wkhtmltopdf https://www
2020-08-21 12:55:35
324
原创 社区网站7.7 热帖排行
Hacker NewsScore = (P-1)/(T+2)^G StackOverflow(log(Qviews)4) + ((QanswersQscore)/5) + sum(Ascores)…(QageInHours+1) - ((AageInHours-Qupdated)/2))^1.5 Nowcoderlog(精华分+评论数 ×10 + 点赞数× 2 + 收藏数× 2) + (发布时间-牛客纪元) 在RedisKeyUtil类里,添加//帖子分数 public
2020-08-19 21:11:58
690
原创 社区网站7.6 任务执行和调度
JDK线程池(1)ExecutorService(2)ScheduledExecutorService Spring线程池(1)ThreadPoolTaskExecutor(2)ThreadPoolTaskSchedular 分布式定时任务Spring Quartz(官网http://www.quartz-schedular.org) JDK的线程池在分布式环境下有问题(因为它数据是存在内存的) 而Quartz用数据库来存数据,适用于分布式环境 新建ThreadPool
2020-08-19 19:10:18
193
原创 社区网站7.5 网站数据统计
UV(Unique Visitor)(1)独立访客,需通过用户IP排重统计数据。(2)每次访问都要进行统计。(3)HyperLogLog,性能好,且存储空间小。 DAU(Daily Active User)(1)日活跃用户,需通过用户ID排重统计数据。(2)访问过一次,则认为其活跃。(3)Bitmap,性能好、且可以统计精确的结果。 在RedisKeyUtil类里,添加 private static final String PREFIX_UV = "uv"; privat
2020-08-19 15:59:02
231
原创 社区网站7.4 Redis高级数据类型
HyperLogLog(1)采用一种基数算法,用于完成独立总数的统计。(2)占据空间小,无论统计多少个数据,只占12k的内存空间。(3)不精确的统计算法,标准误差为0.81%。 Bitmap(1)不是一种独立的数据结构,实际上就是字符串。(2)支持按位存取数据,可以将其看成是byte数组。(3)适合存储索大量的连续的数据的布尔值。//统计20万个重复数据的独立总数 @Test public void testHyperLogLog(){ String r
2020-08-18 23:02:13
140
原创 社区网站项目7.3置顶、加精、删除
功能实现(1)点击置顶,修改帖子的类型。(2)点击“加精”、“删除”,修改帖子的状态。 权限管理(1)版主可以执行“置顶”、“加精”操作(2)管理员可以执行“删除”操作。 按钮显示(1)版主可以看到“置顶”、“加精”按钮。(2)管理员可以看到“删除”按钮。 在github中搜索thymeleaf-extras-springsecurity。在mvn库里搜thymeleaf springsecurity5,粘贴到pom.xml。 在DiscussPostMapper接口类里,添
2020-08-17 16:46:54
387
原创 社区网站7.2 权限控制
登录检查之前采用拦截器实现了登录检查,这是简单的权限管理方案,现在将其废弃。 授权配置对当前系统内包含的所有请求,分配访问权限(普通用户、版主、管理员)。 认证方案绕过Seccurity认证流程,采用系统原来的认证方案。 CSRF配置防止CSRF攻击的基本原理,以及表单、AJAX相关的配置。 导入spring-boot-starter-security包到pom.xml。把WebMvcConfig类里LoginRequiredIntercepter相关配置注释掉。 在Comm
2020-08-16 16:24:56
256
原创 社区网站项目7.1 Spring Security
简介(1)Spring Security是一个专注于为Java应用程序提供身份认证和授权的框架,它的强大之处在于它可以轻松扩展以满足自定义的需求。(2)官网在https://spring.io/projects/spring-security(3)推荐资料:www.spring4all.com 特征(1)对身份的认证和授权提供全面的、可扩展的支持。(2)防止各种攻击,如会话固定攻击、点击劫持、crf攻击等。(3)支持与Service API、Spring MVC等Web技术集成。 原
2020-08-15 12:30:02
197
原创 社区网站项目6.3 开发社区搜索功能
搜索服务(1)将帖子保存至Elasticsearch服务器。(2)从Elasticsearch服务器删除帖子。(3)从Elasticsearch服务器搜索帖子。 发布事件(1)发布帖子时,将帖子异步地提交到Elasticsearch服务器。(2)增加评论时,将帖子异步地提交到Elasticsearch服务器。(3)在消费组件中增加一个方法,消费帖子发布事件。 显示结果在控制器中处理搜索请求,在HTML上显示搜素结果。 先解决一个小问题,discusspost-mapper.xm
2020-08-10 16:45:06
259
原创 社区网站项目6.2 Spring整合ElasticSearch
引入依赖spring-boot-starter-data-elasticsearch 配置Elasticsearch-cluster-name、cluster-nodes Spring Data ElasticsearchElasticsearchTemplateElasticsearchRepository其中ElasticsearchRepository是比较方便的接口,底层依赖于ElasticsearchTemplate;当ElasticsearchRepository不适用时,
2020-08-10 15:29:32
304
1
原创 社区网站项目6.1 Elasticsearch入门
Elasticsearch简介(1)一个分布式的、Restful风格的搜索引擎。(2)支持对各种类型的数据的检索。(3)搜索速度快,可以提供实时的搜索服务。(4)便于水平扩展,每秒可以处理PB级海量数据。 Elasticsearch术语(1)索引、类型、文档、字段。es6逐渐废弃“类型”,“索引”对应表,“文档”对应行,“字段”对应列(2)集群、节点、分片、副本。“集群”指多个服务器,“节点”指单台服务器,“分片”指的是把索引分片存储,“副本"是对分片的备份。 官网https://
2020-08-09 11:36:30
149
原创 社区网站项目5.6 显示系统通知
通知列表显示评论、点赞、关注三种类型的通知 通知详情分类显示某一类主题所包含的通知 未读消息在页面头部显示所有的未读消息数量 打开MessageMapper,添加// 查询某个主题下最新的通知 Message selectLatestNotice(int userId, String topic); // 查询某个主题所包含的通知数量 int selectNoticeCount(int userId, String topic); // 查询未读的
2020-07-29 23:57:28
282
原创 社区项目5.4 发送系统通知
触发事件(1)评论后,发布通知(2)点赞后,发布通知(3)关注后,发布通知 处理事件(1)封装事件对象(2)开发事件的生产者(3)开发事件的消费者 在entity包下新建Event类,private String topic; private int userId; private int entityType; private int entityId; private int entityUserId; private Map<St
2020-07-26 23:42:54
236
原创 社区网站项目5. Spring整合Kafka
引入依赖spring-kafka 配置Kafka配置server、consumer 访问Kafka(1)生产者kafkaTemplate.send(topic,data);(2)消费者@KafkaListener(topics={“test”})public void handleMessage(ConsumerRecord record) 在pom.xml引入依赖后,在application.properties里面添加# KafkaPropertiesspring.ka
2020-07-23 15:39:41
165
原创 社区网站项目5.2 Kafka入门
Kafka简介(官网http://kafka.apache.org)(1)Kafka是一个分布式的流媒体平台。(2)应用:消息系统、日志收集、用户行为追踪、流式处理。 Kafka特点(1)高吞吐量、消息持久化、高可靠性、高扩展性。 Kafka术语(1)Broker、Zookeeper(2)Topic、Partition、Offset(3)Leader Replica、Follow Replica 在安装路径下的config/zookeeper.properties里,修改data
2020-07-12 12:50:40
256
原创 社区网站项目5.1 阻塞队列
BlockingQueue(1)解决线程通信的问题。(2)阻塞方法:put、take。 生产者消费者模式(1)生产者:产生数据的线程。(2)消费者:使用数据的线程。 实现类(1)ArrayBlockingQueue(2)LinkedBloockingQueue(3)PriorityBlockingQueue、SynchronousQueue、DelayQueue等。 在BlockingQueueTests类里,public static void main(String[]
2020-07-12 11:55:29
139
原创 社区网站项目4.6 优化登录模块
使用Redis存储验证码(1)验证码需要频繁的访问与刷新,对性能要求较高。(2)验证码不需永久保存,通常在很短的时间后就会失效。(3)分布式部署时,存在Session共享的问题。 使用Redis存储登录凭证(1)处理每次请求时,都要查询用户的登录凭证,访问的频率非常高。 使用Redis缓存用户信息(1)处理每次请求时,都要根据凭证查询用户信息,访问的频率非常高。 一、在RedisKeyUtil类里,添加 private static final String PREFIX_KAP
2020-07-06 22:17:38
182
原创 社区网站项目4.5 关注列表、粉丝列表
业务层(1)查询某个用户关注的人,支持分页。(2)查询某个用户的粉丝,支持分页。 业务层(1)处理“查询关注的人”、“查询粉丝”请求。(2)编写“查询关注的人”、“查询粉丝”模板。 在FollowService类里,添加//查询某用户关注的人 public List<Map<String, Object>> findFollowees(int userId, int offset, int limit){ String followeeK
2020-07-06 20:43:32
280
原创 社区网站项目4.5 关注、取消关注
需求(1)开发关注、取消关注功能(2)统计用户的关注数、粉丝数。 关键(1)若A关注了B,则A是B的Follower(粉丝),B是A的Followee(目标)。(2)关注的目标可以试试用户、帖子、题目等,在实现时将这些目标抽象为实体。 在RedisKeyUtil类里,添加 private static final String PREFIX_FOLLOWEE = "followee"; private static final String PREFIX_FOLLOWER =
2020-07-06 18:29:05
295
原创 社区网站项目4.4 我收到的赞
重构点赞功能(1)以用户为key,记录点赞数量(2)increment(key),decrement(key) 开发个人主页以用户为key,查询点赞数量 在RedisKeyUtil类里添加 private static final String PREFIX_USER_LIKE = "like:user"; //某个用户的赞 //like:user:userId public static String getUserLikeKey(int userId) {
2020-07-06 16:15:20
242
原创 社区网站项目4.3 点赞
点赞(1)支持对帖子、评论点赞。(2)第1次点赞,第2次取消点赞 首页点赞数量统计帖子的点赞数量 详情页点赞数量(1)统计点赞数量(2)显示点赞状态。 在util包下新建RedisKeyUtil类,添加 private static final String SPLIT = ":"; private static final String PREFIX_ENTITY_LIKE = "like:entity"; //某个实体的赞 //like:entity:
2020-07-06 14:40:31
186
原创 社区网站项目4.2 Spring整合Redis
引入依赖spring-boot-starter-data-redis。 配置Redis(1)配置数据库参数(2)编写配置类,构造RedisTemplate 访问Redis(1)redisTemplate.opsForValue()(2)redisTemplate.opsForHash()(3)redisTemplate.opsForList()(4)redisTemplate.opsForSet()(5)redisTemplate.opsForSet()(6)redisTempl
2020-07-03 20:05:13
201
原创 社区网站项目4.1 Redis入门
Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构:字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。 Redis将所有的数据都放在内存中,所以它的读写性能十分惊人。同时,Redis还可以将内存中的数据以快照或日志的形式保存到硬盘上,以保证数据的安全性。 Redis典型的应用场景包括:缓存、排行榜、计数器、社交网络、消息队列等。 它的官网是https://redis.iohttps://git
2020-07-02 21:22:24
180
原创 社区网站项目3.10 统一记录日志
需求:帖子模块、评论模块、消息模块 AOP的概念:Aspect Oriented Programing,即面向方面(切面)编程。AOP是一种编程思想,是对OOP的补充,可以进一步提高编程的效率。 AOP的术语Target是目标对象(bean),封装业务需求的组件是Aspect。JoinPoint(连接点)是织入位置(可以是属性、构造器、静态块、成员方法)。方面组件(Aspect,额外的bean)里,Pointcut是声明要把代码织入到哪些对象的哪些位置,Advice是通知(具体的系统
2020-07-02 12:05:35
146
2
原创 社区网站项目3.9 统一处理异常
@ControllerAdvice(1)用于修饰类,表示该类是Controller的全局配置类。(2)在此类中,可以对Controller进行如下三种全局配置:异常处理方案、绑定数据方案、绑定参数方案。 @ExceptionHandler(1)用于修饰方法,该方法会在Controller出现异常后被调用,用于处理捕获到的异常。 @ModelAttribute(1)用于修饰方法,该方法会在Controller方法执行前被调用,用于为Model对象绑定参数。 @DataBinder(
2020-07-02 00:35:37
141
原创 社区网站项目3.8 发送私信
发送私信:(1)采用异步的方式发送私信。(2)发送成功后刷新私信列表。 设置已读:(1)访问私信详情时,将显示的私信设置为已读状态。 在MessageMapper接口类里,添加//新增消息 int insertMessage(Message message); //修改消息的状态 int updateStatus(List<Integer> ids,int status); 在message-mapper.xml里,添加 <sql i
2020-07-01 15:38:19
258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人