highlighter

关于 laravel 分页 seo浅谈

谁都会走 提交于 2020-04-15 16:01:08
【推荐阅读】微服务还能火多久?>>> laravel 的分页是非常简单易用的,但是有一点不是非常理想, 默认的分页生成的链接是 users?page=1    这种形式对seo不是非常友好(理论上) 那么我们可能就需要像 users/page/1    这种形式的分页链接 那么怎么做到呢? 我现在有两种方式实现的方式 第一种是我之前项目中采用的,直接上正则 直接在blade中进行正则替换 {!! preg_replace("~(/?)\?page=~", '/page/', $users->render()) !!}    该正则应该有优化的空间,还望不吝赐教。 当然对应的路由也要相应的配置,很简单,就不展开了。 这种方法效果是实现了,但是真的很没有laravel的风格啊 laravel的风格是什么? composer , package啊 所以来介绍一下第二种方法 laravel-paginateroute    使用方法非常简单,以下摘自readme 第一步 // 要注意对应版本,可到https://packagist.org 方便查看 composer require spatie/laravel-paginateroute    第二步 注册, // config/app.php 'providers' => [ ... 'Spatie\PaginateRoute

十大经典排序算法(动图演示)

£可爱£侵袭症+ 提交于 2020-04-15 14:51:06
【推荐阅读】微服务还能火多久?>>> 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序 :通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序 :不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 0.2 算法复杂度 0.3 相关概念 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定 :如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度 :对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度: 是指算法在计算机 内执行时所需存储空间的度量,它也是数据规模n的函数。 1、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 1.1 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

react前端生成二维码

泄露秘密 提交于 2020-04-15 14:50:02
【推荐阅读】微服务还能火多久?>>> 安装组件: npm install qrcode.react --save   引入组件: import QRCode from 'qrcode.react'; 调用方式: <QRCode value={this.state.qrUrl} //value参数为生成二维码的链接 size={200} //二维码的宽高尺寸 fgColor="#000000" //二维码的颜色 /> 来源: oschina 链接: https://my.oschina.net/u/4262067/blog/3235556

Centos7使用Docker启动elasticsearch服务秒退

亡梦爱人 提交于 2020-04-15 13:26:01
【推荐阅读】微服务还能火多久?>>> 首先查看docker启动日志 docker logs -f 容器id    查看报错信息 OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release. [2019-11-24T11:17:55,311][WARN ][o.e.c.l.LogConfigurator ] [unknown] Some logging configurations have %marker but don't have %node_name. We will automatically add %node_name to the pattern to ease the migration for users who customize log4j2.properties but will stop this behavior in 7.0. You should manually replace `%node_name` with `[%node_name]%marker ` in these locations: /usr/share

ASP.NET Core技术研究-探秘依赖注入框架

本秂侑毒 提交于 2020-04-15 13:03:32
【推荐阅读】微服务还能火多久?>>> ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务、提供服务。依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者。 毫不夸张的说,ASP.NET Core通过依赖注入实现了各种服务对象的注册和创建,同时也实现了面向抽象的编程模式和编程体验,提升了应用程序的扩展性。 今天,我们普及一下ASP.NET Core中依赖注入的一些基本知识。 一、服务的注册 我们通过创建一个ASP.NET Core的项目,可以发现在Startup.cs 类中,有一个方法 ConfigureServices ,这个方法的注释是这样的: This method gets called by the runtime. Use this method to add services to the container. 在ConfigureServices方法中我们可以将通过ASP.NET Core内置的依赖注入框架实现服务的的注册。 这个方法有个参数:IServiceCollection,见名知意,服务集合。 ASP.NET Core内置的依赖注入框架将服务注册信息存储到一个实现了IServiceCollection接口的对象中。默认情况下这个接口的实现类是ServiceCollection,以下是这个类的说明:

ASP.Net MVC——使用 ITextSharp 完美解决HTML转PDF(中文也可以)

孤者浪人 提交于 2020-04-15 12:58:04
【推荐阅读】微服务还能火多久?>>> 前言: 最近在做老师交代的一个在线写实验报告的小项目中,有这么个需求:把学生提交的实验报告(HTML形式)直接转成PDF,方便下载和打印。 以前都是直接用rdlc报表实现的,可这次牵扯到图片,并且更为重要的一点是 PDF的格式得跟学生提交的HMTL页面一样。经过网上查阅资料, 找到了ITextSharp插件。 ITextSharp很强大,但是在处理HMTL中的 img标签时,src中只能是绝对路径。 解决方法我写在了另一篇文章中 正文: ITextSharp就不多介绍了。项目的链接下载链接为 http://files.cnblogs.com/files/zuochengsi-9/H%E8%BD%ACPDF.zip 下开始项目之前得添加 ITextSharp.dll和ITextSharp.xmlworker.dll 后者是解决中文用的 可以从NuGet中下载引用,具体方法就不介绍了。网上很多解决方案。 项目结构图: 下面先说下主要操作: 步骤:1、将本地的某个视图转成字符串。 2、将字符串整合成PDF的文档,并返回byte数组。 3、讲比特流写到HTTP内容主体的二进制流中去。 视图转字符串代码: 首先新建两个类,转字符串的逻辑主要在RenderViewToString方法中。 public class HtmlViewRenderer {

ASP.NET Core技术研究-探秘依赖注入框架

柔情痞子 提交于 2020-04-15 09:43:54
【推荐阅读】微服务还能火多久?>>> ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务、提供服务。依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者。 毫不夸张的说,ASP.NET Core通过依赖注入实现了各种服务对象的注册和创建,同时也实现了面向抽象的编程模式和编程体验,提升了应用程序的扩展性。 今天,我们普及一下ASP.NET Core中依赖注入的一些基本知识。 一、服务的注册 我们通过创建一个ASP.NET Core的项目,可以发现在Startup.cs 类中,有一个方法 ConfigureServices ,这个方法的注释是这样的: This method gets called by the runtime. Use this method to add services to the container. 在ConfigureServices方法中我们可以将通过ASP.NET Core内置的依赖注入框架实现服务的的注册。 这个方法有个参数:IServiceCollection,见名知意,服务集合。 ASP.NET Core内置的依赖注入框架将服务注册信息存储到一个实现了IServiceCollection接口的对象中。默认情况下这个接口的实现类是ServiceCollection,以下是这个类的说明:

gorm中的关联查询

妖精的绣舞 提交于 2020-04-15 09:39:49
【推荐阅读】微服务还能火多久?>>> 拦路虎,来一个,去一个。 攻克关联查询。 今天问了公司前端,查了gitlab的API规范, 证明昨晚的想法太天真,关联查询时,还是一次搞定比较正规。 于是,找了相关的CASE来作实现。 https://segmentfault.com/a/1190000019331511 https://www.jianshu.com/p/b2de317bfe4a 我使用的是Preload。实现思路如下(由于使用了封装,所以走得比较曲折): 一,数据库的样子 user.go type User struct { gorm.Model CreatedBy string `json:"created_by"` UpdatedBy string `json:"updated_by"` Deleted uint `json:"deteled"` State uint `json:"state" gorm:"default:1"` Username string `json:"username"` Password string `json:"password"` Avatar string `json:"avatar"` UserType uint `json:"user_type"` Application *[]Application }    project

Python基础交互库——os

走远了吗. 提交于 2020-04-15 09:23:07
【推荐阅读】微服务还能火多久?>>> (1).介绍   os库是与操作系统相关的库,它提供了通用的基本的操作系统交互功能。os库是Python的标准库之一,它里面包含几百个处理函数,能够处理与操作系统相关的功能,包括路径操作、进程管理、环境参数设置等几类功能。其中路径操作是利用os.path子库,它用于处理文件以及目录的路径,并获得相关的信息;进程管理指启动系统中的其它程序的功能;环境参数指获得系统软硬件信息等环境参数。   当然os库还包含很多其它功能,这里只介绍这三种。 (2).使用说明  1)os库的路径操作   os库使用os.path子库来进行路径操作,这个子库以path为入口,用于操作和处理文件的路径,这里的path(入口)指的是目录或包含文件名称的文件的路径。具体使用保留字import,调用import os.path或者import os.path as <别名>。常用函数如下 函数 描述 os.path.abspath(path) 返回path在当前文件系统中的绝对路径(path也许是不存在的),例如: >>> import os >>> os.path.abspath("/") 'C:\\' >>> os.path.abspath("a.txt") 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared

App使用pdf.js实现pdf预览

此生再无相见时 提交于 2020-04-14 16:24:07
【推荐阅读】微服务还能火多久?>>> 第一步:下载pdf.js 下载地址: https://www.jsdelivr.com/package/npm/pdfjs-dist 打开后找到pdf.js、pdf.work.js以及cmaps路径下的全部文件,下载到本地或者直接引用其地址 实例代码 //HTML <canvas id="the-canvas"></canvas> //JS引用 <script type="text/javascript" src="../../script/pdf.js"></script> //JS使用pdf.JS代码 var url = 'test.pdf'; PDFJS.cMapUrl = 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.2.228/cmaps/';//字体解析 PDFJS.cMapPacked = true; //加载核心文件 PDFJS.workerSrc = '../../script/pdf.worker.js';//或者https://cdn.jsdelivr.net/npm/pdfjs-dist@2.3.200/build/pdf.worker.js var loadingTask = PDFJS.getDocument(url); loadingTask.promise.then