自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 虚拟机的网络设置

这里写自定义目录标题虚拟机的网络设置NAT桥接模式虚拟机的网络设置尝试NAT转发或桥接模式。NAT根据主机ip的VMnet8网络配的,vi /etc/sysconfig/network-scripts/ifcfg-ens33MAC物理地址可查看桥接模式查看本机的ip编辑虚拟机网络桥接模式中选了仅主机虚拟网络...

2022-03-23 23:21:12 814 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 145 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 1035

原创 双系统踩坑记

一、双系统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 198 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 318

原创 社区网站项目8.4 项目总结

  如果项目上线,一般会做多个服务器的部署,应聘要求:(1)基本素养(数据结构与算法)(2)项目经验(3)钻研能力,比如redis、数据库读写分离、nginx、spring源码、tomcat,挑一个研究透彻。...

2020-08-25 22:05:07 193

原创 社区网站项目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 180

原创 补-社区网站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 99

原创 补-社区网站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 115

原创 补-社区网站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 288

原创 社区网站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 86

原创 社区网站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 177

原创 社区网站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 221 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 174

原创 社区网站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 284

原创 社区网站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 570

原创 社区网站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 157

原创 社区网站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 174

原创 社区网站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 87

原创 社区网站项目7.3置顶、加精、删除

  功能实现(1)点击置顶,修改帖子的类型。(2)点击“加精”、“删除”,修改帖子的状态。  权限管理(1)版主可以执行“置顶”、“加精”操作(2)管理员可以执行“删除”操作。  按钮显示(1)版主可以看到“置顶”、“加精”按钮。(2)管理员可以看到“删除”按钮。  在github中搜索thymeleaf-extras-springsecurity。在mvn库里搜thymeleaf springsecurity5,粘贴到pom.xml。  在DiscussPostMapper接口类里,添

2020-08-17 16:46:54 306

原创 社区网站7.2 权限控制

  登录检查之前采用拦截器实现了登录检查,这是简单的权限管理方案,现在将其废弃。  授权配置对当前系统内包含的所有请求,分配访问权限(普通用户、版主、管理员)。  认证方案绕过Seccurity认证流程,采用系统原来的认证方案。  CSRF配置防止CSRF攻击的基本原理,以及表单、AJAX相关的配置。  导入spring-boot-starter-security包到pom.xml。把WebMvcConfig类里LoginRequiredIntercepter相关配置注释掉。  在Comm

2020-08-16 16:24:56 220

原创 社区网站项目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 160

原创 社区网站项目6.3 开发社区搜索功能

  搜索服务(1)将帖子保存至Elasticsearch服务器。(2)从Elasticsearch服务器删除帖子。(3)从Elasticsearch服务器搜索帖子。  发布事件(1)发布帖子时,将帖子异步地提交到Elasticsearch服务器。(2)增加评论时,将帖子异步地提交到Elasticsearch服务器。(3)在消费组件中增加一个方法,消费帖子发布事件。  显示结果在控制器中处理搜索请求,在HTML上显示搜素结果。  先解决一个小问题,discusspost-mapper.xm

2020-08-10 16:45:06 219

原创 社区网站项目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 272 1

原创 社区网站项目6.1 Elasticsearch入门

  Elasticsearch简介(1)一个分布式的、Restful风格的搜索引擎。(2)支持对各种类型的数据的检索。(3)搜索速度快,可以提供实时的搜索服务。(4)便于水平扩展,每秒可以处理PB级海量数据。  Elasticsearch术语(1)索引、类型、文档、字段。es6逐渐废弃“类型”,“索引”对应表,“文档”对应行,“字段”对应列(2)集群、节点、分片、副本。“集群”指多个服务器,“节点”指单台服务器,“分片”指的是把索引分片存储,“副本"是对分片的备份。  官网https://

2020-08-09 11:36:30 115

原创 社区网站项目5.6 显示系统通知

  通知列表显示评论、点赞、关注三种类型的通知  通知详情分类显示某一类主题所包含的通知  未读消息在页面头部显示所有的未读消息数量  打开MessageMapper,添加// 查询某个主题下最新的通知 Message selectLatestNotice(int userId, String topic); // 查询某个主题所包含的通知数量 int selectNoticeCount(int userId, String topic); // 查询未读的

2020-07-29 23:57:28 244

原创 社区项目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 200

原创 社区网站项目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 130

原创 社区网站项目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 182

原创 社区网站项目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 104

原创 社区网站项目4.6 优化登录模块

  使用Redis存储验证码(1)验证码需要频繁的访问与刷新,对性能要求较高。(2)验证码不需永久保存,通常在很短的时间后就会失效。(3)分布式部署时,存在Session共享的问题。  使用Redis存储登录凭证(1)处理每次请求时,都要查询用户的登录凭证,访问的频率非常高。  使用Redis缓存用户信息(1)处理每次请求时,都要根据凭证查询用户信息,访问的频率非常高。  一、在RedisKeyUtil类里,添加 private static final String PREFIX_KAP

2020-07-06 22:17:38 151

原创 社区网站项目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 241

原创 社区网站项目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 263

原创 社区网站项目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 209

原创 社区网站项目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 150

原创 社区网站项目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 163

原创 社区网站项目4.1 Redis入门

  Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构:字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。  Redis将所有的数据都放在内存中,所以它的读写性能十分惊人。同时,Redis还可以将内存中的数据以快照或日志的形式保存到硬盘上,以保证数据的安全性。  Redis典型的应用场景包括:缓存、排行榜、计数器、社交网络、消息队列等。  它的官网是https://redis.iohttps://git

2020-07-02 21:22:24 141

原创 社区网站项目3.10 统一记录日志

  需求:帖子模块、评论模块、消息模块  AOP的概念:Aspect Oriented Programing,即面向方面(切面)编程。AOP是一种编程思想,是对OOP的补充,可以进一步提高编程的效率。  AOP的术语Target是目标对象(bean),封装业务需求的组件是Aspect。JoinPoint(连接点)是织入位置(可以是属性、构造器、静态块、成员方法)。方面组件(Aspect,额外的bean)里,Pointcut是声明要把代码织入到哪些对象的哪些位置,Advice是通知(具体的系统

2020-07-02 12:05:35 114 2

原创 社区网站项目3.9 统一处理异常

  @ControllerAdvice(1)用于修饰类,表示该类是Controller的全局配置类。(2)在此类中,可以对Controller进行如下三种全局配置:异常处理方案、绑定数据方案、绑定参数方案。  @ExceptionHandler(1)用于修饰方法,该方法会在Controller出现异常后被调用,用于处理捕获到的异常。  @ModelAttribute(1)用于修饰方法,该方法会在Controller方法执行前被调用,用于为Model对象绑定参数。  @DataBinder(

2020-07-02 00:35:37 102

原创 社区网站项目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 203

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除