好女绪的博客

前端开发
私信 关注
Fighting_No1
码龄5年
  • 358,346
    被访问量
  • 167
    原创文章
  • 10,685
    作者排名
  • 610
    粉丝数量
  • 于 2016-01-16 加入CSDN
获得成就
  • 获得508次点赞
  • 内容获得114次评论
  • 获得1,405次收藏
荣誉勋章
兴趣领域
  • #人工智能
    #Flink#神经网络#TensorFlow#数据分析#语音识别#PyTorch#Python#自然语言处理#深度学习#机器学习#图像处理#视觉/OpenCV
TA的专栏
  • 爬虫
    11篇
  • 密码学算法
    5篇
  • 文本挖掘
    8篇
  • 文件读写
    10篇
  • 算法
    10篇
  • 数据库
    5篇
  • 操作系统
    6篇
  • web前端
    45篇
  • 开发必备
    5篇
  • angularjs
    22篇
  • ionic
    16篇
  • react
    5篇
  • 网络通信
    8篇
  • 面试题
    11篇
  • android
    4篇
  • 大数据
    14篇
  • 编程语言
    2篇
  • 其他
    1篇
  • 后端开发
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

RxJS笔记

RxJS笔记参考资料:RxJS文档RxJS 快速入门RxJS v6 学习指南Rxjs知识整理RxJS的入门指引和初步应用Rxjs6学习概述简介RxJS 是用于 JavaScript 的 ReactiveX 库。ReactiveX是一种针对异步数据流的编程。简单来说,它将一切数据,包括HTTP请求,DOM事件或者普通数据等包装成流的形式,然后用强大丰富的操作符对流进行处理,使你能以同步编程的方式处理异步数据,并组合不同的操作符来轻松优雅的实现你所需要的功能。ReactiveX 结合了
原创
93阅读
0评论
0点赞
发布博客于 4 月前

Redux-saga笔记

Redux-saga笔记参考资料:redux-saga文档Redux-saga彻彻底底教会你使用Redux-saga(包含样例代码) 一篇文章介绍redux、react-redux、redux-saga总结前端技术栈(三):redux-saga,化异步为同步1. redux-thunk处理副作用的缺点(1)redux的副作用处理redux中的数据流大致是:UI—————>action(plain)—————>reducer——————>state——————>
原创
66阅读
0评论
0点赞
发布博客于 4 月前

react笔记

react笔记state和propsstate 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变。这就是为什么有些容器组件需要定义 state 来更新和修改数据。而子组件只能通过 props 来传递数据。React 非常灵活,但它也有一个严格的规则:所有 React 组件都必须像纯函数一样保护它们的 props 不被更改。任何的 state 总是所属于特定的组件,而且从该 state 派生的任何数据或 UI 只能影响树中“低于”它们的组件。关于 s
原创
68阅读
0评论
0点赞
发布博客于 4 月前

现代前端技术解析读书笔记

思维导图链接:http://v3.processon.com/view/link/5f7ec592762131119546c899取材自《现代前端技术解析》本文只是个人读书笔记,更多详细内容请查看原书。前端技术解析Web前端技术基础 用户界面包括浏览器可见的地址输入框、浏览器前进返回按钮、打开书签、打开历史记录等用户可操作的功能选项。 浏览器引擎可以在用户界面和渲染引擎之间传送指令或在客户端本地缓存中读写数据等,是浏览器中各个部分间相互通信的核心。 浏览器渲..
原创
124阅读
0评论
0点赞
发布博客于 4 月前

高性能网站建设指南读书笔记

思维导图链接:http://v3.processon.com/view/link/5f7ec46b762131119546c87d取材自《高性能网站建设指南》及《高性能网站建设进阶指南》》本文只是个人读书笔记,更多详细内容请查看原书。高性能网站建设指南1. 减少HTTP请求 CSS Sprites:干净的标签,很少的图片和很短的响应时间 Inline Images:data:[<mediatype>][;base64],<data> 由于data:U.
原创
53阅读
0评论
0点赞
发布博客于 4 月前

前端技能图谱笔记

思维导图链接:http://v3.processon.com/view/link/5c5c2794e4b056ae2a04a78e前端体系前端架构项 开发规范 目录规范、编码规范、按内容命名规范 开发模型 模块化方案,优化在模型中实现 开发体系 构建工具和组件化设计 项目部署 开发与部署打通 前端统计 性能统计、访问统计、用户行为统计、错误统计、安全监控 安全测试 安全意识和自动化高效开发测试等 部署流.
原创
185阅读
1评论
0点赞
发布博客于 4 月前

css实现椭圆、半椭圆

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>css实现椭圆、半椭圆</title> <style> .ellipse { width: 250px; height: 150px; margin: 50px;
原创
253阅读
0评论
0点赞
发布博客于 4 月前

HMTL5离线存储

HMTL5离线存储转载自有趣的HTML5:离线存储随着Web App的发展,越来越多的移动端App使用HTML5的方式来开发,除了一些HybridApp以外,其他一部分Web App还是通过浏览器来访问的,通过浏览器访问就需要联网发送请求,这样就使得用户在离线的状态下无法使用App,同时Web App中一部分资源并不是经常改变,并不需要每次都向服务器发出请求,出于这些原因,HTML5提出的一个新的特性:离线存储。通过离线存储,我们可以通过把需要离线存储在本地的文件列在一个manifest配置文件中,这样
转载
29阅读
0评论
0点赞
发布博客于 4 月前

数据库笔试题

数据库笔试题以下题目来源于阿里云大学的数据库学习路线自测题,我只记录自己做错的和有一定难度的题目。加粗的题目答案不一定正确,解析是我自己分析的。知道正确答案和原因的欢迎在评论中答复。初级难度1、什么是1NF?(B)A. 表的某一列是不可分割的基本数据项B. 表的每一列都是不可分割的基本数据项C. 表的每一列是可分割的基本数据项D. 表的某一列是可分割的基本数据项2、什么是3NF?(...
原创
595阅读
0评论
0点赞
发布博客于 1 年前

MySQL数据库思维导图

MySQL数据库思维导图看完了阿里云大学的SQL基础系列视频,制作了份思维导图,希望帮助大家一起学习数据库知识。思维导图分享链接:https://www.processon.com/view/link/5e14896de4b0698ded31bb92...
原创
400阅读
0评论
2点赞
发布博客于 1 年前

数据库中字符串连接

数据库中字符串连接参考资料:MySQL、SQL Server中字符串拼接SQLite 连接两个字符串一.MySQL中字符串拼接1.使用加号”+”实现在Java、C#等编程语言中字符串的拼接可以通过加号“+”来实现,在MySQL中也可以使用加号”+”来连接两个字符串。例如:SELECT '123'+'123' AS result1;SELECT '123'+'abc' as r...
原创
244阅读
0评论
0点赞
发布博客于 1 年前

Linux思维导图汇总

Linux思维导图汇总收集了下Linux相关的思维导图和知识图片,主要是方便自己找常用的命令,希望对大家也能有用。思维导图浏览链接:https://www.processon.com/view/link/5df0977de4b0e2c298adf2ec...
原创
682阅读
0评论
1点赞
发布博客于 2 年前

微服务笔记

微服务笔记参考资料:漫画:什么是微服务?微服务架构什么是微服务微服务架构设计微服务简介单体架构(Monolithic)的痛点传统的MVC架构,所有业务子模块都集成在一个很重的JVM进程当中。所有的功能打包在一个 WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI等所有逻辑。...
原创
853阅读
1评论
1点赞
发布博客于 2 年前

百度天工笔记

百度天工笔记参考资料:初识百度天工百度产品文档简介百度天工是融合了百度ABC(AI、Big Data、Cloud)的“一站式、全托管”智能物联网平台。 从端到云,从数据采集、传输、计算、存储、展现到分析,天工提供了全面的基础产品和服务。赋能物联网应用开发商和生态合作伙伴从”连接”、”理解”到”唤醒“的各项关键能力,从而轻松构建各类智能物联网应用,促进行业变革。连接:互联互通,让...
原创
377阅读
0评论
0点赞
发布博客于 2 年前

人脸识别笔记

人脸识别笔记参考资料:人脸识别技术看这一篇就够了(附国内人脸识别20强公司)人脸识别的十个关键技术组成及原理人脸识别技术百度百科人脸识别技术及应用,了解一下深度干货!一文读懂人脸识别技术(建议收藏)人脸识别技术及应用概览 全在这里人脸识别 :也叫面部识别,是一种基于人的脸部特征信息进行身份识别的生物识别技术。它用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪...
原创
3199阅读
1评论
9点赞
发布博客于 2 年前

前端书籍分享

前端书籍分享整理了前端的学习书籍,对前端感兴趣的小伙伴可以下载来看。内容包括下载地址链接:https://pan.baidu.com/s/1Mlni6hxX_bEZWOE8JEMH5g
原创
540阅读
2评论
0点赞
发布博客于 2 年前

前端资源汇总.txt

整理了前端的学习书籍,对前端感兴趣的小伙伴可以下载来看。
txt
发布资源于 2 年前

LiquiBase笔记

LiquiBase笔记参考资料:LiquibaseLiquibase的简单使用Spring Boot使用Liquibase最佳实践liquibase使用LiquiBase概述及(spring boot 入门配置)Liquibase小知识简介LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到...
原创
503阅读
0评论
0点赞
发布博客于 2 年前

从Java字节码到ASM实践

从Java字节码到ASM实践参考资料:从 Java 字节码到 ASM 实践Java字节码ASM 库的介绍和使用访问者模式和 ASM关于java字节码框架ASM的学习ASM 3.0 实现javaAOP编程Java 字节码 & 虚拟机1. Java 字节码就像C或C++编译器将源码编译为汇编码,Java编译器会将Java源码编译成字节码。使用 javac 可以将 .ja...
转载
438阅读
0评论
0点赞
发布博客于 2 年前

基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据

基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据参考资料:黑马程序员爬虫教程静觅爬虫教程mac下anaconda安装selenium+PhantomJSscrapy下载中间件结合selenium抓取全国空气质量检测数据使用xpath的轴(Axis)进行元素定位以下内容只用于学习使用,请勿用于商业用途.五一放假看了《复仇者联盟4》,对影片内容不是很懂,所以写个爬虫,...
原创
1051阅读
0评论
0点赞
发布博客于 2 年前

Kafka笔记

Kafka笔记参考资料:百度百科Apache Kafka 教程Kafka【第一篇】Kafka集群搭建震惊了!原来这才是kafka!Kafka史上最详细原理总结 ----看完绝对不后悔kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)简介Kafka是一种 高吞吐量 的 分布式 发布-订阅 消息系统,具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消...
原创
3243阅读
0评论
2点赞
发布博客于 2 年前

RabbitMQ笔记

RabbitMQ笔记参考资料:Spring Boot(八):RabbitMQ 详解我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比RabbitMQ技术详解RabbitMQ 中文文档rabbitmq消息队列的简单入门RabbitMQ教程RabbitMQ核心概念篇前言在大多应用中,我们系统之间需要进行异步通信,即异步消息。异步消息中两个重要概念:消息代理...
原创
160阅读
0评论
0点赞
发布博客于 2 年前

MQTT笔记

MQTT笔记参考资料:百度百科MQTT 入门MQTT介绍与使用MQTT协议中文版MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输)是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,工作在 TCP/IP协议族上。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务...
原创
1305阅读
0评论
7点赞
发布博客于 2 年前

神经网络实战

神经网络实战参考资料:TensorFlow中文社区教程TensorFlow学习 Mnist示例程序完整代码+注释解析机器学习入门MNIST(代码)TensorFlow 从入门到精通TensorFlow——MNIST手写数字识别TensorFlow入门之MNIST样例代码分析TENSORFLOW系列专题(九):常用RNN网络结构及依赖优化问题说明:以下代码示例基于Python3...
原创
1222阅读
1评论
4点赞
发布博客于 2 年前

神经网络

神经网络参考资料:TENSORFLOW系列专题TensorFlow 从入门到精通深度学习的概念是从人工神经网络的研究中发展而来的,早期的感知器模型只能解决简单的线性分类问题,后来发现通过增加网络的层数可以解决类似于“异或问题”的线性不可分问题,这种多层的神经网络又被称为多层感知器。对于多层感知器,我们使用BP算法进行模型的训练,但是我们发现BP算法有着收敛速度慢,以及容易陷入局部最优...
原创
820阅读
0评论
0点赞
发布博客于 2 年前

TensorFlow入门

TensorFlow入门参考资料:TensorFlow中文社区教程TENSORFLOW从入门到精通之——TENSORFLOW基本操作TensorFlow升级到1.0版本的问题Tensorflow save&restore遇到问题及解决应对 NotFoundError: Key Variable_10 not found in checkpointTensorFlow的变量管理...
原创
6148阅读
0评论
29点赞
发布博客于 2 年前

机器学习基础

机器学习基础参考资料:小象学院机器学习课程TENSORFLOW系列专题TensorFlow 从入门到精通机器学习模型评估方法机器学习简介机器学习是一门致力于研究如何通过计算的手段,利用经验来改善系统自身的性能的学科。机器学习要研究的就是一个学习算法,这个学习算法能够从数据中产生模型(model),而模型能够给我们提供相应的判断。机器学习通过大量数据进行训练,从数据学习中推论...
原创
245阅读
0评论
0点赞
发布博客于 2 年前

Akka框架学习

Akka框架学习转载自Spark修炼之道一、并发编程简介多核处理器的出现使并发编程(Concurrent Programming)成为开发人员必备的一项技能,许多现代编程语言都致力于解决并发编程问题。并发编程虽然能够提高程序的性能,但传统并发编程的共享内存通信机制对开发人员的编程技能要求很高,需要开发人员通过自身的专业编程技能去避免死锁、互斥等待及竞争条件(Race Condition)等,...
转载
1139阅读
0评论
1点赞
发布博客于 2 年前

Spark Streaming笔记

Spark Streaming笔记转载自Spark修炼之道1. Spark流式计算简介Hadoop的MapReduce及Spark SQL等只能进行离线计算,无法满足实时性要求较高的业务需求,例如实时推荐、实时网站性能分析等,流式计算可以解决这些问题。目前有三种比较常用的流式计算框架,它们分别是Storm,Spark Streaming和Samza,各个框架的比较及使用情况,可以参见:htt...
转载
174阅读
0评论
0点赞
发布博客于 2 年前

Spark SQL笔记

Spark SQL笔记转载自Spark修炼之道1. Spark SQL简介Spark SQL是Spark的五大核心模块之一,用于在Spark平台之上处理结构化数据,利用Spark SQL可以构建大数据平台上的数据仓库,它具有如下特点:(1)能够无缝地将SQL语句集成到Spark应用程序当中(2)统一的数据访问方式DataFrames and SQL provide a common ...
转载
250阅读
0评论
0点赞
发布博客于 2 年前

Spark笔记

Spark笔记参考资料:Spark中文指南(入门篇)-Spark编程模型(一)适合小白入门Spark的全面教程Spark教程Spark修炼之道spark入门介绍(菜鸟必看)Spark学习总结(一)Spark(一): 基本架构及原理简介Spark是一个用来实现快速而通用的集群计算的平台。扩展了广泛使用的MapReduce计算模型,而且高效地支持更多的计算模式,包括交互式查询和...
原创
239阅读
0评论
0点赞
发布博客于 2 年前

Hive笔记4-Shell操作

Hive Shell操作参考资料:Hive详细介绍及简单应用Hive基本操作,DDL操作(创建表,修改表,显示命令),DML操作(Load Insert Select),Hive Join,Hive Shell参数(内置运算符、内置函数)等Hive入门及常用指令1、Hive命令行语法结构hive [-hiveconf x=y]* [<-i filename>]* [&...
原创
168阅读
0评论
0点赞
发布博客于 2 年前

Hive笔记3-HQL操作

HQL操作参考资料:Hive详细介绍及简单应用Hive基本操作,DDL操作(创建表,修改表,显示命令),DML操作(Load Insert Select),Hive Join,Hive Shell参数(内置运算符、内置函数)等Hive入门及常用指令Hive分区、分桶操作及其比较函数分类,HIVE CLI命令,简单函数,聚合函数,集合函数,特殊函数(窗口函数,分析函数,混合函数,UDT...
原创
407阅读
0评论
0点赞
发布博客于 2 年前

Hive笔记2-安装部署

二、安装部署环境:macOS High Sierra10.13.6、mysql8.0.15、Hadoop3.1.1、Hive3.1.1。参考资料:学习 Hadoop3.0 一、Hadoop3.0的安装与配置hadoop安装和配置hadoop详细安装及配置Hadoop: Setting up a Single Node Cluster安装hadoop3.0版本踩坑Hadoop _ ...
原创
129阅读
0评论
0点赞
发布博客于 2 年前

Hive笔记1-简介

简介参考资料:Hive详细介绍及简单应用hive核心基本概念Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)Hive入门及常用指令Hive教程Hive学习路线图Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数...
原创
248阅读
0评论
0点赞
发布博客于 2 年前

Hadoop HDFS笔记

Hadoop HDFS笔记参考资料:初步掌握HDFS的架构及原理HDFS知识点总结深入理解HDFS:Hadoop分布式文件系统Hdfs详解深刻理解HDFS工作机制HDFS总结 思维导图一、简介HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的...
原创
399阅读
0评论
2点赞
发布博客于 2 年前

Hybrid App

Hybrid App参考资料:聊聊Web App、Hybrid App与Native App的设计差异8个hybrid app开发工具Hybrid APP混合开发的了解和其他两类app的对比Hybrid App的架构与实现HyBrid App框架介绍使用Appcelerator等跨平台App开发工具的优势及不足了解Web App、Native App与Hybrid App的差异...
原创
1019阅读
0评论
1点赞
发布博客于 2 年前

ios笔记

Wifi 定位原理及 iOS Wifi 列表获取iOS 上获取 Wifi 列表其实有很大限制,在 iOS 9 以前是不能获取Wifi列表的,只能获取当前连接的 Wifi 信息,也就表示只有连接了 Wifi 才能定位。Apple 在 iOS 9 以后,提供了获取Wifi列表的API,但是获取Wifi列表是有门槛的,主要步骤有:1、向 Apple 申请开发 Network Extension...
原创
325阅读
0评论
0点赞
发布博客于 3 年前

Android使用ButterKnife

Android使用ButterKnife参考资料:Android Butterknife使用方法总结Android Studio3.0更新之路(遇坑必入)AndroidStudio3.1.2 报错:Could not get unknown property ‘packageForR’ for task ':app:processDebugResourButterKnife官方文档...
原创
163阅读
0评论
0点赞
发布博客于 3 年前

Android代码规范

代码规范参考资料:这可能是史上最全的Android代码规范前言无论你是个人开发还是团队,一个良好的代码规范,能够在项目当中发挥举足轻重的作用;它不仅能使你们的开发更加高效,而且还会减少BUG产生的几率,增强代码可维护性及稳定性。关于规范,我们分两部分来讲,因为Android主要是用Java语言来写的,所以我们区别对待。JAVA代码规范强制性规范代码中的命名均不能以下划线或美...
转载
109阅读
0评论
0点赞
发布博客于 3 年前

Android的应用组件

Android的应用组件应用组件是 Android 应用的基本构建基块。共有四种不同的应用组件类型。每种类型都服务于不同的目的,并且具有定义组件的创建和销毁方式的不同生命周期。活动Activity服务Service广播接收器(Broadcast Receiver)内容提供程序(Content Provider)Activity、服务和广播接收器 — 通过名为 Intent 的异...
原创
706阅读
0评论
0点赞
发布博客于 3 年前

Android入门

Android入门Android平台架构应用程序这一层是应用层,是Google最开始时在Android系统中捆绑了一些核心应用程序。比如e-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序,等等。这些应用程序都使用Java语言编写。你也可以用自己编写的应用程序来替换Android提供的应用程序,这个替换的机制实际是应用程序框架来保证的。应用程序框架第三层是A...
原创
2611阅读
0评论
1点赞
发布博客于 3 年前

使用elasticsearch建立搜索引擎

使用elasticsearch建立搜索引擎elasticsearch官方网址:https://www.elastic.co/products/elasticsearch1、选择Elasticsearch的原因(1)Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的开源的实时分布式搜索和分析引擎,功能强大:支持全文搜索;分布式实时文件存储,并将每一...
原创
610阅读
0评论
0点赞
发布博客于 3 年前

搜索引擎ElasticSearch命令笔记

搜索引擎ElasticSearch命令笔记一、安装(1)下载ES:curl -L -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-版本号.tar.gz(2)解压:tar -xzvf elasticsearch-1.1.1.tar.gz -C 保存目录(3)修改ES的文件权限为...
原创
164阅读
0评论
0点赞
发布博客于 3 年前

(11)Java爬虫框架webmagic实战

Java爬虫框架webmagic实战本文是我关于webmagic爬虫框架的实战——爬取古诗词网站的诗词数据。此代码只用于爬虫学习,勿用于商业用途。安装webmagicwebmagic使用maven管理依赖,在项目中添加对应的依赖即可使用webmagic:&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;us.codecraft&amp;lt;/groupId&amp;gt; ...
原创
487阅读
0评论
1点赞
发布博客于 3 年前

(10)Java爬虫框架webmagic学习笔记

Java爬虫框架webmagic学习笔记参考自:webmagic文档webmagic的主要特色:完全模块化的设计,强大的可扩展性。核心简单但是涵盖爬虫的全部流程,灵活而强大,也是学习爬虫入门的好材料。提供丰富的抽取页面API。无配置,但是可通过POJO+注解形式实现一个爬虫。支持多线程。支持分布式。支持爬取js动态渲染的页面。无框架依赖,可以灵活的嵌入到项目中去。总体架构...
原创
283阅读
0评论
0点赞
发布博客于 3 年前

解决xcode和App Store报错

解决xcode和App Store报错参考资料:Xcode 10 beta3 Error: Multiple commands produce[App Store提交审核报错 ERROR ITMS-90087解决办法](App Store提交审核报错 ERROR ITMS-90087解决办法)ERROR ITMS-90206:“Invalid Bundle. The bundle at ...
原创
1311阅读
0评论
0点赞
发布博客于 3 年前

TestFlight用法(iOS APP官方测试工具)

TestFlight用法(iOS APP官方测试工具)参考资料:TestFlight用法 包教包会(iOS APP官方测试工具)TestFlight使用之外部测试 包教包会(iOS APP官方测试工具)Missing Compliance in Status when i add built for internal testing in Test Flight.How to solve...
原创
3319阅读
0评论
0点赞
发布博客于 3 年前

使用CryptoJS中的md5和aes加密

使用CryptoJS中的md5和aes加密参考资料:使用CryptoJS中的md5和aes加密CryptoJS实现AES加密// md5function md5encode(word) { return CryptoJS.MD5(word).toString();}//aes加密function encrypt(word) { var key = Crypto...
原创
1489阅读
0评论
1点赞
发布博客于 3 年前

iOS获取并查看数据库

iOS获取并查看数据库参考资料:iOS之真机调试的情况下获取并查看数据库Mac上 iOS模拟器 sqlite数据库文件存放位置获取并查看真机数据库以上六步,在iOS真机调试的时候,查看你的数据库信息。获取iOS模拟器的sqlite数据库文件存放位置IOS8以前版本的路径:/Users/你的用户名/Library/Application Support/iPhone ...
转载
1253阅读
0评论
1点赞
发布博客于 3 年前

Mustache

Mustache参考资料:mustache模板技术Mustache 模板引擎一、简介Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 HTML 文档。当然不同的开发语言有不同模板引擎,如 Javascript 下的 Hogan 、ASP 下的 aspTemplate、以及 PHP 下的 Smarty,这里主要介绍基于 Javasc...
原创
663阅读
1评论
3点赞
发布博客于 3 年前

关于HTML、js加密、混淆、源码保护、代码安全,防止解压直接看源码

关于HTML、js加密、混淆、源码保护、代码安全,防止解压直接看源码我们先理下需求,加密的目的是什么?加密到什么级别?为此我们可以牺牲什么?我们知道这个世界不存在绝对的安全,加密会被破解、混淆会被反混淆。技术小白、开发者、黑客,是完全不同的级别,防范不同级别的人策略都不一样。防范力度越大,投入代价也越大,比如聘请专业的安全公司。除了投入,我们还需要考虑程序的执行性能和用户体验。加密的代...
转载
6844阅读
0评论
2点赞
发布博客于 3 年前

浏览器的渲染机制

浏览器的渲染机制参考资料:浏览器的渲染机制浏览器主要组件结构概念理解(1) DOM:Document Object Model,浏览器将HTML解析成树形的数据结构,简称DOM。(2) CSSOM:CSS Object Model,浏览器将CSS代码解析成树形的数据结构。(3) DOM 和 CSSOM 都是以Bytes → characters → tokens → nodes → ...
原创
113阅读
0评论
1点赞
发布博客于 3 年前

浏览器内核的解析和对比

浏览器内核的解析和对比取材自 浏览器内核的解析和对比浏览器的构成浏览器可以分为两部分:shell+内核。Shell是指浏览器的外壳:例如菜单,工具栏 等。主要是提供给用户界面操作,参数设置等等。它是调用内核来实现各种功能的。内核是基于标记语言显示内容的程序或模块。浏览器内核浏览器内核的组成浏览器内核可以分成两部分:渲染引擎(layout engineer或者Rendering En...
转载
480阅读
0评论
0点赞
发布博客于 3 年前

作为一个前端,可以如何机智地弄坏一台电脑?

作为一个前端,可以如何机智地弄坏一台电脑?转载自作为一个前端,可以如何机智地弄坏一台电脑?无论你触发了多少bug,最多导致浏览器崩溃,对系统影响不到哪去。 这就像二次元各种炫酷的毁灭世界,都不会导致三次元的世界末日。 然而,作为一个前端,我发现是有方式打开次元大门的…这个实验脑洞较大,动机无聊,但某种意义上反映了一些安全问题。 想象一下,有天你在家里上网,吃着火锅还唱着歌,点开一个链接,电脑...
转载
237阅读
0评论
0点赞
发布博客于 3 年前

前端面试题集锦——前言

前端开发面试题参考资料:前端开发面试题前端开发面试题集锦–JavaScript篇web前端开发面试遇到的题目web前端经典面试题【前端】前端面试题整理web前端开发面试题-基础篇2018最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)前端面试题汇总 笔试题2018最新Web前端经典面试试题及答案史上最全前端开发面试问题及答案整理史上最全前端面试题(含答案)-...
原创
18135阅读
7评论
151点赞
发布博客于 3 年前

前端面试题集锦——前言

前端开发面试题参考资料:前端开发面试题前端开发面试题集锦–JavaScript篇web前端开发面试遇到的题目web前端经典面试题【前端】前端面试题整理web前端开发面试题-基础篇2018最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)前端面试题汇总 笔试题2018最新Web前端经典面试试题及答案史上最全前端开发面试问题及答案整理史上最全前端面试题(含答案)-...
原创
18135阅读
7评论
151点赞
发布博客于 3 年前

前端面试题集锦——前端框架相关问题

前端框架相关问题说说MVC和MVVM分别是什么?MVC全名是Model View 。是Controller模型(model)-视图(view)-控制器(controller)的缩写。MVC是比较直观的架构模式,用户操作-&gt;View(负责接收用户的输入操作)-&gt;Controller(业务逻辑处理)-&gt;Model(数据持久化)-&gt;View(将结果反馈给View)。MVVM...
原创
3041阅读
1评论
6点赞
发布博客于 3 年前

有趣的面试题

有趣的面试题现有2个空水壶,容积分别为5升和6升,如何利用这两水壶取出3升水,假设水无限?假设有A,B两只壶,A壶的容积为5升,B壶的容积为6升,第一步:将B壶装满水,倒入A壶中,此时A壶满,B壶还剩一升第二步:将A壶水到掉,将B壶水倒入,此时A壶为一升,B壶空第三步:将B壶装满,倒入A壶中,此时A壶满,B壶还剩两升第四步:重复第二步的操作,此时A壶剩两升,B壶空第五步:重复第三步的...
原创
861阅读
0评论
0点赞
发布博客于 3 年前

前端面试题集锦——项目管理

开发性问题对前端工程师这个职位是怎么样理解的?它的前景会怎么样?前端是最贴近用户的程序员,比后端、数据库、产品经理、运营、安全都近。1、实现界面交互2、提升用户体验3、有了Node.js,前端可以实现服务端的一些事情前端的能力就是能让产品从 90分进化到 100 分,甚至更好,参与项目,快速高质量完成实现效果图,精确到1px;与团队成员,UI设计,产品经理的沟通;做好的页面结构,...
原创
3937阅读
0评论
11点赞
发布博客于 3 年前

前端面试题集锦——程序题

程序题1、看下列代码输出为何?解释原因。var a;alert(typeof a); // undefinedalert(b); // 报错解释:Undefined是一个只有一个值的数据类型,这个值就是“undefined”,在使用var声明变量但并未对其赋值进行初始化时,这个变量的值就是undefined。而b由于未声明将报错。注意未申明的变量和声明了未赋值的是不一样的。2、看下列...
原创
6042阅读
18评论
29点赞
发布博客于 3 年前

前端面试题集锦——前端综合问题

前端综合问题前端页面有哪三层构成,分别是什么?作用是什么?1)结构层(html)structural layer由HTML或者XHTML之类的标记语言负责创建,即:标签;2)表示层(css)presentation layer解决结构层如何显示的问题。3)行为层(js)behavior layer内容如何对事件作出反应一类的问题解决。常见的浏览器内核有哪些?Trident内核:...
原创
8233阅读
5评论
52点赞
发布博客于 3 年前

面试题集锦——网络相关问题

网络相关问题进程和线程的区别一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。线程是独立调度的基本单位, 进程是拥有资源的基本单位另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能...
原创
1028阅读
0评论
0点赞
发布博客于 3 年前

前端面试题集锦——JavaScript

JavaScript栈和队列的区别?栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的。队列先进先出,栈先进后出。栈只允许在表尾一端进行插入和删除,而队列只允许在表尾一端进行插入,在表头一端进行删除栈和堆的区别?栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。堆区(heap) — 一般由程序员分配释放, 若程序员不释放...
原创
7695阅读
9评论
57点赞
发布博客于 3 年前

前端面试题集锦——CSS

CSS选择符有哪些?哪些属性可以继承?CSS选择符id选择器( #myid)类选择器(.myclassname)标签选择器(div, h1, p)相邻选择器(h1 + p)子选择器(ul &gt; li)后代选择器(li a)通配符选择器( * )属性选择器(a[rel = "external"])伪类选择器(a:hover, li:nth-child)可继承的样...
原创
1786阅读
1评论
15点赞
发布博客于 3 年前

前端面试题集锦——HTML

对WEB标准以及W3C的理解与认识标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性。xhtml和html有什么区别HTML是一种基本的WEB网页设计语言,XHTM...
原创
2813阅读
0评论
21点赞
发布博客于 3 年前

mariadb的主从复制、主主复制、半同步复制配置详解

mariadb的主从复制、主主复制、半同步复制配置详解转载自:mariadb的主从复制、主主复制、半同步复制配置详解主从服务器的时间要同步,数据库版本最好是一致的,以免造成函数处理、日志读取、日志解析等发生异常。以下三个主从复制的设置是独立的。注意防火墙和selinux的影响。1、简单主从复制的实现(1)主服务器的配置1)安装mariadb-server[root@localhos...
转载
1823阅读
0评论
0点赞
发布博客于 3 年前

Mac安装MariaDB数据库

Mac安装MariaDB数据库参考资料:Mac中MariaDB数据库的安装步骤使用Homebrew在Mac OS X上安装MariaDB 10.1.16如果你是Mac上的开发者,你可以在OS X上通过Homebrew来简单的获取安装最新稳定版本的MariaDB,接下来我们将一步步的来指导安装MariaDB数据库,如果你的Mac中已经安装好了Xcode和Homebrew的话,则直接跳到第四步...
转载
7116阅读
0评论
1点赞
发布博客于 3 年前

常见开源协议

常见开源协议参考资料:重要开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理开发人员必知的5种开源协议(BSD,Apache,GPL,LGPL,MIT)什么是软件许可协议?通俗来讲,许可协议是指用来授权其他人具有某种使用你的作品的权利。依靠许可协议将你的作品对外开源或者对你的作品的各个方面逐一进行授权,是一个不错的方法(WordPress, Drupal 和许多...
转载
127阅读
0评论
0点赞
发布博客于 3 年前

(5)HTTPS加密协议详解

HTTPS加密协议详解本文大部分内容来自沃通技术一、HTTPS基础知识HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。HTTP协议采用明文传输信息,...
原创
352阅读
0评论
0点赞
发布博客于 3 年前

(3)传输层UDP和TCP协议

传输层UDP和TCP协议简介两个主机进行通信实际上就是两个主机中的应用进程互相通信。 应用进程之间的通信又称为端到端的通信。网络层是为主机之间提供逻辑通信,而传输层为应用进程之间提供端到端的逻辑通信。传输层还要对收到的报文进行差错检测。传输层需要有两种不同的传输协议,即面向连接的 传输控制协议TCP(Transmission Control Protocol) 和无连接的 用户数据报协议U...
原创
256阅读
0评论
0点赞
发布博客于 3 年前

(2)网络层IP协议

网络层IP协议网络层上层为传输层,下层为数据链路层,它通过路由选择算法,为IP分组从源主机到目的主机选择一条合适的传输路径,为传输层端—端数据传输提供服务。网络层的特点:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺。即所传...
原创
159阅读
0评论
0点赞
发布博客于 3 年前

(1)计算机网络笔记

计算机网络笔记计算机网络向用户提供的最重要的功能:连通性、资源共享。网络边缘的端系统中程序之间的通信方式划分为两大类:客户服务器方式(C/S 方式),即Client/Server方式对等方式(P2P 方式),即 Peer-to-Peer方式计算机网络体系计算机网络的体系结构(architecture)是计算机网络的各层及其协议的集合。体系结构就是这个计算机网络及其部件所应完成的功...
原创
327阅读
0评论
0点赞
发布博客于 3 年前

ionic3入门

ionic3入门ionic简介ionic 是一个强大的HTML5应用程序开发框架(HTML5 Hybrid Mobile App Framework),可以帮助您使用Web技术,比如HTML、CSS和Javascript构建接近原生体验的移动应用程序。ionic3特点:基于Angular语法。清晰的项目结构:应用是模块化的,每个页面的控制层代码、模板、样式都放在一起。提供了漂亮的设计...
原创
246阅读
0评论
0点赞
发布博客于 3 年前

(4)正则表达式——Python

Python中正则表达式的一些匹配规则:正则表达式相关注解(1)数量词的贪婪模式与非贪婪模式正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式”ab*”如果用于查找”abbbc”,将找到”abbb”。而如果使用非贪婪的数量词”ab*?”,将找到”a”。注:我们...
原创
136阅读
0评论
0点赞
发布博客于 3 年前

(2)获取网页源代码——Python

Python版:超级简短#!/usr/bin/python#-*- coding: utf-8 -*-import urllib2response = urllib2.urlopen("http://www.baidu.com")print response.read()POST方式:#!/usr/bin/python#-*- coding: utf-8 -*-impor...
原创
621阅读
0评论
0点赞
发布博客于 3 年前

react native笔记

react native笔记参考资料:react native中文教程https://www.jb51.net/article/92931.htm【React Native入门系列文章 六】实战写一个电影列表页React NavigationAndroid环境搭建开发依赖安装Node:^6.0、React Native 命令行工具、Python2Java SE ...
原创
410阅读
0评论
0点赞
发布博客于 3 年前

HTML5 Boilerplate浅析

HTML5 Boilerplate浅析简介HTML5 Boilerplate——最流行的web开发前端模版,帮你构建 快速, 健壮, 并且 适应力强 的web app或网站。 其特点如下:一个干净、移动终端友好的HTML模版优化过的Google统计代码包含了 Normalize.css v1 版本 — 一个先进的、支持HTML5的CSS reset — 和基础样式、辅助功能、...
原创
6359阅读
0评论
7点赞
发布博客于 3 年前

webpack笔记

webpack笔记参考自: 1. WebPack 简明学习教程 2. webpack之傻瓜式教程及前端自动化入门 3. https://www.jianshu.com/p/42e11515c10f 4. webpack官方文档Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。从图中我们可以看出,...
原创
124阅读
0评论
0点赞
发布博客于 3 年前

Angular4笔记

Angular4笔记参考资料:Angular 4.0 架构详解Angular 4.0 内置指令全攻略Angular 4.x 修仙之路入门&nbsp;Angular&nbsp;与&nbsp;AngularJS&nbsp;有什么区别*&nbsp;&nbsp;&nbsp;不再有Controller和&nbsp;Scope *&nbsp;&nbsp;&nbsp;更好的...
原创
181阅读
0评论
0点赞
发布博客于 3 年前

Redux笔记

Redux笔记React 入门实例教程 React 渲染机制解析 Redux 入门教程 在React中使用Redux React性能优化 – 利用React-Redux 对于react-redux的理解梳理 react-redux流程与实现分析 跟着例子一步步学习redux+react-redux React高级篇(一)从Flux到Redux,react-redux环境...
原创
257阅读
0评论
0点赞
发布博客于 3 年前

vue、vuex、vue-router、vue-i18n、vue-http实践

vue、vuex、vue-router、vue-i18n、vue-http实践参考资料:Vue.js 教程Vue.js 官方文档Vuex 文档震惊!喝个茶的时间就学会了vuex使用vue-i18n实现多语言Vuex的Getter学习Vue-自带vue-resource插件实现http请求专门写了个demo来做vue框架笔记,demo是基于VuexExplanation项...
原创
1309阅读
0评论
0点赞
发布博客于 3 年前

前端代码检查

前端代码检查参考自:说一说前端代码检查前端代码检查front-end-code-checklist程序员必备的代码审查(Code Review)清单代码检查很重要,原因有三:避免低级bug:一些常见代码问题,如果在编译或运行前不能及时发现,代码中的语法问题会直接导致编译或运行时错误,影响开发效率和代码质量;统一代码习惯:每一个团队或个人都会有一些代码规范或者代码习惯,为...
原创
1835阅读
0评论
1点赞
发布博客于 3 年前

ionic使用cordova插件跳转第三方APP

ionic使用cordova插件跳转第三方APP参考自:ionic开发——检测是否安装某APP,如果安装打开该APPionic项目中使用cordova插件跳转第三方地图APP(百度、高德)第一步,安装cordova插件cordova plugin add https://github.com/lampaa/com.lampa.startapp.git //打开第三方APPc...
原创
2342阅读
0评论
0点赞
发布博客于 3 年前

ionic配置极光推送

ionic配置极光推送项目使用极光推送来实现消息推送,使用的极光推送是基于ionic的。下面将详细介绍如何创建应用,配置极光插件,为用户打标签,处理极光推送的消息和通知。创建极光推送应用首先,注册一个极光推送的账号。注册地址:https://www.jiguang.cn/accounts/register/form注册成功后,创建一个应用。创建应用成功后,我们可以获取到应用...
原创
1690阅读
0评论
0点赞
发布博客于 3 年前

ios打包和调试

ios打包Mac系统安装XCode方便调试在App Store下载并安装Xcode。注意,xcode版本低的话,也会影响打包的。推荐使用XCode9.如果你的OS版本不满足安装xcode的版本要求,你可以寻找对应版本的xcode下载链接,然后在safari打开链接,就可以下载xcode了。xcode下载列表地址:https://developer.apple.com/downl...
原创
1161阅读
0评论
0点赞
发布博客于 3 年前

cordova项目适配iPhoneX

cordova项目适配iPhoneX参考自:Web App适配iPhoneXiPhone X的缺口和CSS更新Cordova插件首先确认使用的cordova插件有是否包含针对iPhone X的release,例如cordova-plugin-splashscreen, cordova-plugin-statusbar等.在项目目录下打开终端,输入命令:cordov...
原创
5140阅读
1评论
0点赞
发布博客于 3 年前

IOS证书申请和打包流程

IOS证书申请和打包流程参考资料:iOS 证书申请和使用详解iOS完整的证书申请和打包过程iOS开发证书与配置文件的使用iOS 证书详解证书申请step1:生成钥匙串CSR文件1)打开 -&amp;amp;gt;钥匙串访问2)打开右上方钥匙串访问栏-&amp;amp;gt;证书助理-&amp;amp;gt;从证书颁发机构请求证书…3)填写一个邮箱地址,选择“存储到磁盘”,点击继续。4)保...
原创
2189阅读
0评论
0点赞
发布博客于 3 年前

android打包加固和调试

android打包安装Android StudioWindows系统安装Android Studio 方便调试,注意根据 第一次使用Android Studio时你应该知道的一切配置 配置Android Studio的SDK添加Android平台以下命令都是在项目目录下通过终端执行的:ionic platform remove android(移除android平台,如...
原创
1625阅读
0评论
0点赞
发布博客于 3 年前

ionic解决启动白屏问题

ionic解决启动白屏问题参考资料:cordova启动页面和图标的设置ionic2常见问题-启动后白屏问题app启动后大概有几秒白屏,才会显示首页,下面介绍如何通过设置启动页来解决启动白屏问题:config.xml配置 在cordova5.0版本以后,需要安装cordova-plugin-splashscreen插件以后才能修改和设置App的启动页面。安装s...
原创
3481阅读
0评论
0点赞
发布博客于 3 年前

路由ui-router

路由ui-routerAngular ngRoute针对于单视图,而ui-router可用于多视图(这里说的视图是指在页面内我们可控制的,可变化的区域)。比如我们点击了一个link,我们需要在视图中跳转到指定的一个页面,那么ngRoute已经满足了我们的需求,而当我们点击的时候,需要分别在不同的地方跳转两个不同的页面的时候,ngRoute就不够用了,我们就需要用到ui-router。在ui...
原创
138阅读
0评论
0点赞
发布博客于 3 年前

ionic1入门

ionic1入门参考自:Ionic开发实战Ionic1与Ionic2的区别ionic创建项目遇到的各种问题简介ionic 是一个强大的HTML5应用程序开发框架(HTML5 Hybrid Mobile App Framework),可以帮助您使用Web技术,比如HTML、CSS和Javascript构建接近原生体验的移动应用程序。ionic特点:ionic 基...
原创
701阅读
0评论
0点赞
发布博客于 3 年前

20 ocLazyLoad使用

ocLazyLoad使用参考自http://dreamapple.leanapp.cn/gitbook/oclazyload-doc/quick-start/quick-start.html安装npm install oclazyload添加oc.lazyLoad模块将这个模块添加到你的应用中var myApp = angular.module("MyApp", [...
原创
377阅读
0评论
0点赞
发布博客于 3 年前

19 端对端测试

端对端测试方案测试(scenario tests)使用Javascript写的,你在其中描述在某一个状态的某一个交互中你的应用应该运作。一个方案包括一个或多个it代码块(你可以把这些当成你应用的需求),代码块它由命令和期望结果组成。命令告诉Runner让应用执行某个操作(比如翻页或者点击按钮),期望告诉Runner验证执行后的应用状态(比如字段的值或者当前URL)。如果某个期望不符合,那么Ru...
原创
475阅读
0评论
0点赞
发布博客于 3 年前

18 国际化

国际化什么是i18n和l10n?国际化,简写为i18,指的是使产品快速适应不同语言和文化。本地化,简称l10n,是指使产品在特定文化和语言市场中可用。对开发者来说,国际化一个应用意味着将所有的文字和其他因地区而异的数据从应用中抽离出来。本地化意味着为这些抽离的数据和文字提供翻译和转变成本地的格式。什么是地区 id一个地区(locale)是指一个按地理上,政治上,文化上划分的区域...
原创
131阅读
0评论
0点赞
发布博客于 3 年前

17 多重视图和路由

多重视图和路由相关概念理解路由的作用,简单的概括就是基于View和Url的对应关系,处理跳转页面。AngularJS 路由允许我们通过不同的 URL 访问不同的内容。通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA)。通常我们的URL形式为 http://runoob.com/first/page ,但...
原创
267阅读
0评论
0点赞
发布博客于 3 年前

16 自定义服务

自定义服务angularjs 中可通过三种($provider,$factory,$service)方式自定义服务,以下是不同的实现形式:// 定义module , module中注入$providevar starterApp = angular.module('starter.controllers', [],function($provide){// 第一种方式:使用provid...
原创
162阅读
0评论
0点赞
发布博客于 3 年前

15 内置服务2

内置服务2$http$http是对Ajax(XHR)的封装。使用:$http(config);$http({method: 'GET', url: '/someUrl'}).success(function(data, status, headers, config) {// this callback will be called asynchronously// wh...
原创
122阅读
0评论
0点赞
发布博客于 3 年前

14 内置服务1

内置服务1在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器)才会被清除。而controllers在不需要的时候就会被销毁了。Angular部分内置服务概览在 AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用。 名称 描述 $window 封装windo...
原创
207阅读
0评论
0点赞
发布博客于 3 年前

13 表单验证

表单验证内置表单验证指令Angular提供了一些常用的html5输入控件的验证实现:(text, number, url, email, radio, checkbox), 以及一些用于验证的指令 (required, pattern, minlength, maxlength, min, max)。这里只介绍模式匹配ng-pattern指令。使用ng-pattern="/PATTER...
原创
128阅读
0评论
0点赞
发布博客于 3 年前