├── .gitignore ├── .vscode └── settings.json ├── Android ├── 2016-07-06-Android权威编程指南1~3.md ├── 2016-07-17-Activity生命周期记录.md ├── 2017-04-27-Android事件处理和拦截.md ├── 2017-05-10-Android-Style和Theme.md ├── 2017-06-26-OkHttp3缓存控制.md ├── 2017-06-29-WebView.md ├── 2017-07-03-Android设置界面.md ├── 2017-07-13-理解Handler.md ├── 2017-07-14-理解Intent和PendingIntent.md ├── 2017-07-15-理解BroadCast.md ├── 2017-08-01-RxJava 1.x 入门.md ├── 2017-08-03-「转」(译)Android-MVP架构必要知识:第1部分.md ├── 2017-08-04-〔译〕Android-MVP架构必要知识:第3部分.md ├── ActionBar.md ├── Activity.md ├── ActivityManagerService介绍.md ├── Android 4 高级编程.md ├── Android Data Binding.md ├── Android Developers.md ├── Android HyBrid开发.md ├── Android 架构之 Architecture Components.md ├── Android 架构之 Clean.md ├── Android 架构之 MVC.md ├── Android 架构之 MVP.md ├── Android 架构之 MVVM.md ├── Android中的依赖注入:Dagger 2.md ├── Android事件机制进阶.md ├── Android动画.md ├── Android单元测试入门.md ├── Android基础入门教程-笔记.md ├── Android学习.md ├── Android定位技术.md ├── Android工具.md ├── Android应用的资源.md ├── Android开源项目开源框架.md ├── Android异步消息处理.md ├── Android控件架构与自定义控件.md ├── Android插件化技术.md ├── Android消息推送.md ├── Android源码查看与编译.md ├── Android疯狂讲义.md ├── Android的一些控件展示.md ├── Android第三方开源库.md ├── Android组件化开发实战.md ├── Android编程技巧和应用场景.md ├── Android错误收集.md ├── App架构简介.md ├── ConstraintLayout布局.md ├── ContentProvider.md ├── Context类.md ├── CoordinatorLayout相关.md ├── Drawable可绘制对象.md ├── DrawerLayout相关.md ├── Fragment.md ├── GestureDetector手势识别.md ├── GreenDao学习.md ├── JobScheduler.md ├── Kotlin.md ├── Material Design.md ├── Menu.md ├── NDK与JIN.md ├── PackageManagerService介绍.md ├── RxJava 2.x 入门.md ├── Service.md ├── SurfaceView.md ├── TODO-List.md ├── android屏幕适配.md ├── 图形与图像处理.md ├── 开发平台.md ├── 深入理解Activity与Fragment.md ├── 深入理解Android系列.md ├── 深入理解Handler.md ├── 滑动控件.md ├── 简单UI组件.md ├── 简单理解Binder.md └── 获取各种资源.md ├── C# ├── C sharp 4.0图解教程.md ├── C#笔记.md ├── dotNet │ ├── ASP.NET.md │ ├── ASP.NET电子商务开发实践.md │ └── WinForm.md └── 面向对象软件开发实践之基本技能训练.md ├── C&C++ ├── C++迭代器 容器操作.md ├── C_C++常用算法手册.md └── C算法.md ├── DataBase ├── 2016-10-25-Linux-install-Oracle-Database -11g.md ├── 2016-11-05-数据库使用中的一些问题和开源工具推荐.md ├── 2016-11-08《Oracle数据库精讲与疑难解析》.md ├── 2016-11-12-Oracle学习笔记.md ├── 2016-11-13-E-R模型.md ├── 2016-11-25-MySQL常用SQL语句.md ├── 2016-12-10-MSSQL-DataBase.md ├── 2016-12-25-Transact-SQL.md ├── Linux install Oracle Database 11g.md ├── Linux-Oracle-11g.md ├── MongoDB.md ├── MySQL必知必会.md ├── Oracle DBA Guide - 01.md ├── Oracle DBA Guide - 02.md ├── Oracle Database 11g Linux安装.md ├── Oracle Database Administrator’s Guide.md ├── Oracle常用操作.md ├── Oracle数据库管理.md ├── Redis.md ├── assets │ ├── 1540642066924.png │ ├── 1540643204975.png │ ├── 1540645518198.png │ ├── 1541324589283.png │ ├── 1541328897023.png │ ├── 1541330443599.png │ ├── 1541334279329.png │ ├── 1541338691175.png │ ├── 1541343177701.png │ ├── 1541345568342.png │ └── 1541345751400.png ├── c.my.cnf ├── jdbc驱动.md ├── my.cnf ├── mysql管理.md ├── 慕课:数据库和sql优化.md └── 数据库基础.md ├── Global.gitignore ├── Hello!.md ├── Java Web ├── 2016-05-04-Java基础知识.md ├── 2017-02-01-Java-Web开发入门.md ├── 2017-02-05-JSP基础-《Tomcat与Java Web开发技术详解(第2版)》.md ├── 2017-02-13-Http会话与管理-《Tomcat与Java Web开发技术详解(第2版)》.md ├── 2017-02-16-JSP访问JavaBean-《Tomcat与Java Web开发技术详解(第2版)》.md ├── 2017-02-18-Web应用中的MVC设计模式.md ├── 2017-02-21-Servlet-《Tomcat与Java Web开发技术详解(第2版)》.md ├── 2017-02-27-JBoss.md ├── 2017-03-02-Hibernate入门学习.md ├── 2017-03-07-软件模型.md ├── 2017-03-22-Spring-MVC入门笔记.md ├── 2017-03-29-Java事件处理.md ├── 2017-04-02-Java虚拟机.md ├── EL表达式语言-《TaJWdt》.md ├── EhCache缓存.md ├── Elasticsearch.md ├── FKJava.md ├── JDK工具.md ├── Jackson.md ├── Java IO.md ├── Java-TODO-List.md ├── JavaEE颠覆者:Spring Boot.md ├── Java多线程.md ├── Java对象持久化技术概述.md ├── Java框架、库.md ├── Java正则表达式.md ├── Java泛型.md ├── Java面试.md ├── Log4J日志.md ├── Logback.md ├── Mock测试框架Mockito.md ├── MyBatis.md ├── SLF4J日志抽象层.md ├── Servlet.md ├── Spring Boot.md ├── Spring MVC mock测试.md ├── Spring MVC.md ├── Spring Security.md ├── Spring.md ├── Swagger.md ├── Web开发入门(Java Web).md ├── assets │ ├── Dubbo核心配置.png │ ├── Dubbo核心配置关系图.jpg │ ├── Dubbo节点角色.png │ ├── JVM体系结构.jpg │ ├── JVM运行时数据区域.jpg │ ├── bean装载到spring应用上下文中的典型生命过程.png │ └── dubbo-architecture.jpg ├── 在Web中访问EJB组件-《TaJWdt》.md ├── 性能监控和优化.md ├── 慕课网:kaptcha实现验证码.md ├── 慕课网:对关键配置信息进行DES加密.md ├── 模板引擎.md ├── 编译错误收集.md ├── 自定义JSP标签-《TaJWdt》.md ├── 设计模式.md ├── 访问数据库-《TaJWdt》.md └── 过滤器-《TaJWdt》.md ├── JavaScript ├── JavaScript学习笔记.md ├── JavaScript筆記.md └── Node.js与npm简介.md ├── Python ├── Dive into Python (version 5.4).md ├── pythonNote.md ├── pythonPVQG_1.md ├── pythonPVQG_2.md ├── 《Python 编程入门》第3版 (上).md └── 《Python 编程入门》第3版 (下).md ├── README.md ├── Web ├── AngularJS.md ├── Bootstrap.md ├── CSS3.md ├── ECMAScript 6.md ├── Gulp任务流工具.md ├── HTML学习.md ├── HTML语言.mkd ├── Html5混合App开发.md ├── JS库.md ├── JavaScript.md ├── Less.md ├── Node.js.md ├── React Native.md ├── React.js.md ├── React.md ├── Sass.md ├── Vue.js.md ├── Web前端框架介紹.md ├── jQuery.md ├── npm包管理器.md ├── webpack打包工具.md ├── 妙味课堂 │ ├── 1.1 GIMP/PhotoShop基础.md │ ├── 1.2 HTML5.md │ ├── HTML5高级.md │ ├── 妙味视频学习计划.md │ ├── 学习首页 - 妙味课堂.pdf │ └── 课程详细大纲-妙味课堂.pdf ├── 常用案例.md ├── 微信小程序.md ├── 微信运营与开发.md └── 浏览器兼容性和测试.md ├── github.css ├── itheima ├── Dubbo.md ├── Lucene.md ├── Solr.md ├── assets │ ├── 01.ServletContext域对象.png │ ├── 01.request的API.png │ ├── 01拆分工程思想.png │ ├── 02.request和response的运行原理-1532078417861.png │ ├── 02.request和response的运行原理.png │ ├── 02工程聚合拆分分析.png │ ├── 03.response的API.png │ ├── 03.请求转发和重定向的区别.png │ ├── 04.案例-登录功能.png │ ├── 04.重定向的原理.png │ └── idea-tomcat01.png ├── spring data jpa.md ├── ssm-spring02.md ├── ssm-spring04事务.md ├── ssm_day02_mybatis.md ├── ssm工程拆分.md ├── ssm整合.md ├── web.xml文件重要.md ├── web14_tomcat和servlet.md ├── web15_response.md ├── web16_request.md ├── web17_cookie、session和jsp.md ├── web18_jsp.md ├── web_pro01.md ├── 品优购11-15.md ├── 品优购16-20.md ├── 品优购1项目搭建.md ├── 品优购2-5.md ├── 品优购6-10.md ├── 异常问题.md ├── 爬虫.md ├── 相关技巧.md └── 面试.md ├── 其它 ├── 001生活相关还是放到其他笔记软件中吧.md ├── 02各种教程搜集.md ├── Android App 开发环境搭建和配置.md ├── Anki相关介绍.md ├── Blender.md ├── Lisp学习资料.md ├── PS.md ├── Qt4 到 Qt5的改变.md ├── SketchUp操作.md ├── ZPL指令学习.md ├── 创作工具.md ├── 初学Go语言.md ├── 各种许可协议.md ├── 字符编码参考.md ├── 学习资料.md ├── 学习资源推荐.md ├── 家电购买.md ├── 开发心得1.md ├── 打印机&打印软件.md ├── 条码知识.md ├── 用户体验.md ├── 计算机专业词汇解释.md ├── 驾校考试科目一:疑难试题详解.md └── 驾校考试科目二.md ├── 开发工具 ├── 2017-04-13-Maven入门.md ├── 2017-07-22-ubuntu安装和切换JDK.md ├── 2017-07-23-Ubuntu安装ruby到opt下的rbenv目录.md ├── 2017-07-25-编译vim8并添加对lua,python,ruby的支持.md ├── 2017-07-31-使用Travis-CI构建Android项目并自动打包部署到GitHub-Release.md ├── Ant.md ├── Cmder.md ├── GCC技术参考大全.md ├── GFM emoji.md ├── GNU Make 项目管理:第 3 版.md ├── GitHub Flavored Markdown.md ├── Gradle.md ├── Lombok.md ├── Markdown语法说明.mkd ├── Maven.md ├── Pandoc与Reveal.js的使用.md ├── assets │ ├── cmder01.png │ ├── cmder02.png │ ├── cmder03.png │ ├── cmder04.png │ ├── cmder05.png │ ├── cmder06.png │ ├── docker_build_flow.png │ ├── idea Java Compiler.png │ ├── idea Live Templates.png │ ├── idea Spring Configuration Check.png │ ├── idea project Scratches and Consoles.png │ ├── idea-maven-add-resources.png │ ├── idea-maven-java.png │ ├── idea-maven-search-dependency.png │ ├── idea-maven-tomcat-web_inf_lib.png │ ├── idea-maven-update-index.png │ ├── idea-svn-01.png │ ├── idea-svn-02.png │ ├── idea-svn-03.1.png │ ├── idea-svn-03.png │ ├── idea-svn-04.png │ ├── idea-svn-05.png │ ├── jib_build_flow.png │ └── maven repository dependencies.png ├── javaAndAndroid.md ├── makefile命令和规则.md ├── opt-java-8-oracle.jinfo ├── orecle-jdk-alternatives.sh ├── 慕课网:远程调试.md ├── 版本控制 │ ├── 2017-02-05-版本控制与代码托管.md │ ├── 2017-07-01-Git常用命令和相关概念的理解.md │ ├── Git中的ssh和https及相关问题.md │ ├── SVN版本控制系统.md │ └── 查看git log.md ├── 离线API文档查询工具Zeal和Velocity.md ├── 科技爱好者周刊中收集的工具.md ├── 程序发布的相关工作.md └── 编辑器与IDE │ ├── 2016-02-01-vim的简单配置.md │ ├── 2017-01-26-Eclipse-使用总结.md │ ├── 2017-01-28-Eclipse-主题等设置.md │ ├── 2017-03-26-Visual-Studio.md │ ├── 2017-05-23-Android-Studio-使用总结.md │ ├── Atom使用与配置.md │ ├── IDEA和Docker.md │ ├── IdeaVim的配置和使用.md │ ├── JetBrains系列IDE.md │ ├── Notion笔记本教程.md │ ├── PlantUML.md │ ├── Typora使用探索.md │ ├── UML工具.md │ ├── VS Code.md │ ├── assets │ ├── Typora_2019-11-08_05-47-29.png │ └── image-20191107210106946.png │ ├── emacsNote │ ├── sublime_text │ ├── vim plugins.md │ ├── vimNote.md │ ├── 《学习GNU Emacs》.md │ ├── 字体收集.md │ ├── 知识库.md │ └── 终极Vim.md ├── 微服务架构相关技术 ├── 理解微服务架构.md ├── 网易Java高级01-缓存失效.md ├── 网易Java高级02-分布式锁应用与实现.md ├── 网易Java高级03-高并发秒杀系统结构.md ├── 网易Java高级04-大型互联网分布式系统架构演进之路.md ├── 网易Java高级05-电商系统和分布式消息中间件.md ├── 网易Java高级06-基于MQ的分布式事务解决方案.md ├── 网易Java高级一.md └── 网易Java高级二.md └── 运维 ├── Linux ├── 2016-01-10-fbterm.md ├── 2016-01-12-使用apt和dpkg安装软件.md ├── 2016-02-05-VirtualBox使用时遇到的问题.md ├── 2016-02-23-Linux使用技巧和问题.md ├── 2016-03-27-Linux常用软件安装.md ├── 2016-08-03-Linux软件编译安装和相关目录介绍.md ├── 2016-08-09-firewall防火墙.md ├── 2016-09-16-Linux终端录制.md ├── 2017-03-02-Linux中gif的制作和图片转换.md ├── 2017-07-20-xfce4设置.md ├── 2017-07-20-系统备份转移记录.md ├── 2017-07-22-update-alternatives.md ├── 2017-08-18-Linux中网页等宽字体显示不正常.md ├── 2017-10-09-Xfce主题配置.md ├── Dia.md ├── FileStru ├── Linux 命令行和Shell脚本编程宝典.md ├── Linux发行版本和桌面环境.md ├── Linux官方Doc.md ├── Linux硬件信息查看和设置.md ├── Linux终端配置.md ├── RedHat 系列.md ├── Shadowsocks.md ├── UNIX操作系统设计.md ├── UbuntuShortcut.md ├── Ubuntu输入法安装.md ├── apt-get-install.sh ├── assets │ └── Linux目录结构.png ├── backuphome.sh ├── base64.md ├── bash.md ├── blkid_uuid ├── config2List ├── config3Llist ├── configlist ├── dd命令.md ├── diff命令详解.md ├── fdisk_mkfs_ ├── file_manager.md ├── find和grep命令.md ├── gem-install.sh ├── init ├── mount ├── npm-install.sh ├── pip-install.sh ├── tmux.md ├── ultimateConfig.md ├── w3m ├── wine.md ├── you-get ├── 各Linux系统和桌面环境的相关操作.md ├── 操作系统设计与实现.md ├── 系统转移,txt └── 设置代理proxy.md ├── SSH相关命令.md ├── Server ├── 2016-01-01-Simple-Texture-Jekyll-Theme-README.md ├── 2016-01-01-quick-kramdown-demo.md ├── 2016-04-23-使用ssh连接VirtualBox虚拟机.md ├── 2016-12-02-Windows-Server-2008-R2-安装与管理.md ├── 2016-12-08-Windows-Server-2008-R2-網絡管理與架站.md ├── 2017-07-07-jekyll安装与部署.md ├── 2017-07-10-jekyll-theme-simple-texture改进.md ├── 2017-07-17-Jekyll维护.md ├── Blog搭建.md ├── DN与DNS.md ├── DevOps.md ├── Docker Compose.md ├── Docker.md ├── Docker网络.md ├── Hugo内容管理.md ├── Hugo安装和部署.md ├── Hugo模板.md ├── Hugo的zzo主题配置.md ├── Json Server.md ├── Kubernetes.md ├── LAMP安装.md ├── Nexus私服.md ├── Nginx.md ├── VPS主机.md ├── assets │ ├── Nexus Manage these formats-1535810126820.png │ └── Nexus Manage these formats.png ├── 个人博客设计.md ├── 个人服务器.md ├── 云计算平台.md ├── 使用Docker安装mysql5和mysql8.md ├── 使用Docker部署开发环境.md ├── 常用服务器相关命令.md ├── 服务器问题.md └── 阿里云ECS(云服务器).md ├── Windows Subsystem for Linux.md ├── Windows ├── Chocolatey包管理工具.md ├── Everything.md ├── MicroSoft 官网分析.md ├── Multi Commander文件管理器.md ├── Scoop包管理工具.md ├── batch.md ├── 新版Windows Terminal.md └── 绘图基础.md ├── puppet.md ├── 安全 ├── 2016-07-10-SSH-key的生成与使用.md ├── 2016-08-08-GPG加密软件的使用.md ├── 儿童hosts过滤.md ├── 虚拟手机号码.md ├── 计算机安全.md └── 隐私相关.md ├── 手机购买.md ├── 操作系统安装之:GRUB2学习.md ├── 操作系统安装之:Mac OS 安装及使用.md ├── 操作系统安装之:PE和Live CD.md ├── 操作系统安装之:Windows相关技巧优化及错误.md ├── 操作系统安装之:Windows系统安装激活.md ├── 操作系统安装之:XUbuntu分区安排.md ├── 操作系统安装之:分区和启动模式.md ├── 操作系统安装之:启动U盘创建.md ├── 操作系统安装之:备份与同步.md ├── 操作系统安装之:系统引导和修复.md ├── 操作系统安装之:系统装机总结.md ├── 浏览器相关.md ├── 硬件选购之:CPU.md ├── 硬件选购之:SSD固态硬盘.md ├── 硬件选购之:内存解析选购.md ├── 硬件选购之:机械硬盘.md ├── 硬件选购之:路由器&固件.md ├── 硬件选购之:鼠标键盘.md ├── 网络 ├── 2017-01-23-Network-command.md ├── 2017-02-20-网络互联设备.md ├── BT种子.md ├── Shadowsocks简介和安装.md ├── TCP-IP协议.md ├── Wireshark学习.md ├── 网络工具.md ├── 翻墙fq一:相关概念的了解.md └── 翻墙fq二:相关工具介绍.md ├── 虚拟机之:Hyper-V .md ├── 虚拟机之:KVM.md ├── 虚拟机之:Vagrant工具.md ├── 虚拟机之:VirtualBox.md ├── 虚拟机之:Vmware Workstation.md ├── 虚拟机之:其它虚拟机.md ├── 虚拟机之:虚拟机格式互转.md ├── 软件推荐.md └── 部署工具.md /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "微服务架构相关技术": true, 4 | "其它": true, 5 | "C&C++": true, 6 | "C#": true, 7 | "Python": true 8 | } 9 | } -------------------------------------------------------------------------------- /Android/Android 4 高级编程.md: -------------------------------------------------------------------------------- 1 | # Android 4 高级编程 2 | 3 | ## Intent和Broadcast Receiver 4 | 5 | 6 | 7 | ## 使用Internet资源 8 | 9 | 在这一章开始创建地震查看器 10 | 11 | ### 使用Download Manager 12 | Download Manager是一个系统提供的Service。它通过处理Http连接,监控连接的变化和系统重启来确保每次下载都能成功完成。 13 | 14 | 可以使用getSystemService方法请求DOWNLOAD_SERVICE来访问Download Manager 15 | 16 | 17 | 18 | ## 文件保存状态和首选项 19 | 20 | 21 | 22 | ## 数据库和Content Provider 23 | 24 | 25 | 26 | Loader加载器 27 | 28 | 29 | 30 | ### 使Content Provider可搜索 31 | 32 | SearchView和Content Provider的结合 33 | 34 | 35 | ### 本地Android Content Provider 36 | 37 | 38 | 39 | ## 后台操作 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Android/Android Data Binding.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | [Android Data Binding实战-入门篇-慕课网](http://www.imooc.com/learn/719 "Android Data Binding实战-入门篇-慕课网") 8 | 9 | [Android Data Binding实战-高级篇-慕课网](http://www.imooc.com/learn/720 "Android Data Binding实战-高级篇-慕课网") 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Android/Android Developers.md: -------------------------------------------------------------------------------- 1 | # Android Developers网站介绍 2 | 3 | 4 | 5 | 分为三个大板块(tab): 设计、开发和分发。 6 | 7 | ## 设计 8 | 9 | 10 | ## 开发 11 | 12 | ### 培训 13 | 14 | ### API指南 15 | 16 | ### 参考 17 | 18 | ### 示例 19 | 20 | ### 库 21 | 22 | 23 | ### Android Studio 24 | 25 | 主要参考: 26 | 27 | Android Studio --> 用户指南 28 | 29 | ### Kotlin 30 | 31 | 32 | ## 分发 33 | 34 | 35 | -------------------------------------------------------------------------------- /Android/Android HyBrid开发.md: -------------------------------------------------------------------------------- 1 | # Hybrid App开发 2 | 3 | > [Android HyBrid App开发实战_Android HyBrid App开发实战职业课程-极客学院](http://www.jikexueyuan.com/zhiye/course/77.html?type=18 ) 4 | > 5 | > 本课程介绍了Android HyBrid App开发中常用的技术,通过本课程的学习将对Android HyBrid App开发有较清楚全面的认识,将学习到WebView的使用技巧以及JSBridge的原理和实现,同时将学习到一个常用混合开发框架的使用。HyBrid App是介于Native App和Web App之间的混合App,由于HyBrid App跨平台型好,开发成本低、升级简单等优点,目前已被很多公司采用,逐渐成为一种App开发趋势。Android开发人员如果掌握了HyBrid App技术无疑将会在职场中增强竞争力。 6 | 7 | 8 | 9 | 10 | 11 | 越来越多的App开始采用Html5+原生混合开发的方式,作为原生开发者。我们需要了解如何与前端人员配合。通过WebView与Html5交互。实现相互之间的交互。 12 | 13 | 14 | 15 | 16 | 17 | 18 | ## Hybrid App开发原生部分需要做什么? 19 | 20 | 1. Html页面部分需要与原生进行数据同步,例如用户token数据,一些页面请求需要的参数等 21 | 2. 部分Html无法实现的功能,如支付,分享,扫描二维码等 22 | 3. 一些在Html端性能消耗比较大。通过原生来实现会使App更加流畅 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ## JSBridge的原理 32 | 33 | 34 | 35 | ## JSBridge的实现 36 | 37 | 38 | 39 | 40 | 41 | ## safe-java-js-webview-bridge 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Android/Android 架构之 Architecture Components.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ## Android 架构组件 7 | 8 | 9 | 10 | [Android架构组件简介](https://code.tutsplus.com/tutorials/introduction-to-android-architecture--cms-28749?_ga=2.12071028.1998131091.1501205919-2091102857.1500428525) 11 | 12 | Android体系结构指南,[Guide to App Architecture - Android Developers](https://developer.android.com/topic/libraries/architecture/guide.html "Guide to App Architecture - Android Developers") 13 | 14 | 15 | 16 | 17 | 18 | Android团队在2017年 I/O大会: 19 | 20 | - Kotlin 21 | - Android 架构组件 22 | - 。。。? 23 | 24 | 25 | 26 | Android团队在2017年 I/O会议上推出的架构组件的四个组成部分: 27 | 28 | - Room 29 | - ViewModel 30 | - LiveData 31 | - Lifecycle 32 | 33 | 34 | 35 | 简化图: 36 | 37 | ![](https://cms-assets.tutsplus.com/uploads/users/1308/posts/28749/image/diagram%2001%20-%20Architecture%20Pattern.jpg) 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Android/Android 架构之 Clean.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Android/Android 架构之 Clean.md -------------------------------------------------------------------------------- /Android/Android 架构之 MVVM.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ## MVVM 7 | 8 | [MVC,MVP 和 MVVM 的图示](http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html) 9 | 10 | 11 | 12 | 13 | 14 | ## MVVM 15 | 16 | 17 | 18 | 一个基于事件的架构 19 | 20 | MVVM代表Model-View-ViewModel。此模式支持视图和视图模式之间的双向数据绑定。这样可以在View视图模式下自动传播更改。通常,视图模型使用观察者模式来通知视图模型中的变化来建模。 21 | 22 | ![](https://cdn-images-1.medium.com/max/800/1*fpTUAtCz8iiWU90WM7Pj4w.png) 23 | 24 | 25 | 26 | ViewModel负责公开方法,命令和其他属性,有助于维护视图的状态,操作模型作为视图上的操作的结果,并触发视图本身中的事件。 27 | 28 | 29 | 30 | MVVM模式的要点: 31 | 32 | - 用户与视图进行交互。 33 | - View与ViewModel之间存在**多对一**关系,意味着许多View可以映射到一个ViewModel。 34 | - View具有对ViewModel的引用,但ViewModel没有关于View的信息。 35 | - 支持View和ViewModel之间的双向数据绑定。 36 | 37 | 38 | 39 | 40 | 41 | 42 | ## 参考 43 | 44 | 45 | Google员工提供的三篇文章: 46 | 47 | - [Android Architecture Patterns Part 1: Model-View-Controller — upday tech blog](https://upday.github.io/blog/model-view-controller/ ) 48 | - [Android Architecture Patterns Part 2: Model-View-Presenter — upday tech blog](https://upday.github.io/blog/model-view-presenter/ ) 49 | - [Android Architecture Patterns Part 3:Model-View-ViewModel — upday tech blog](https://upday.github.io/blog/model-view-viewmodel/ ) 50 | - [MVVM — It’s All In The (Implementation) Details – upday devs – Medium](https://medium.com/upday-devs/mvvm-its-all-in-the-implementation-details-40ed24871a02) 51 | 52 | 并结合的了Google的提供的示例项目 googlesamples/android-architecture 53 | 54 | 作者提供的小示例: 55 | 56 | [florina-muntenescu/MVPvsMVVM: Model-View-Presenter vs Model-View-ViewModel in a "Hello, World!" project](https://github.com/florina-muntenescu/MVPvsMVVM ) 57 | 58 | [florina-muntenescu/DroidconMVVM: "Hello, World!" example of the Model-View-ViewModel pattern](https://github.com/florina-muntenescu/DroidconMVVM ) 59 | 60 | 61 | 62 | 这里介绍了几个架构的关键点: 63 | 64 | [Android Architecture – AndroidPub](https://android.jlelse.eu/android-architecture-2f12e1c7d4db "Android Architecture – AndroidPub") 65 | -------------------------------------------------------------------------------- /Android/Android事件机制进阶.md: -------------------------------------------------------------------------------- 1 | # Android事件机制进阶 2 | 3 | 4 | 5 | [探究 Android 的事件机制 - luojunsheng's blog](http://junshengluo.com/2016/12/14/android-6-%E6%8E%A2%E7%A9%B6%20Android%20%E4%BA%8B%E4%BB%B6%E6%9C%BA%E5%88%B6/ "探究 Android 的事件机制 - luojunsheng's blog") 6 | 7 | -------------------------------------------------------------------------------- /Android/Android动画.md: -------------------------------------------------------------------------------- 1 | # Android动画 2 | 3 | [Animation and Graphics Overview - Android Developers](https://developer.android.com/guide/topics/graphics/overview.html "Animation and Graphics Overview - Android Developers") 4 | 5 | 6 | 7 | 8 | ## Android动画 9 | 10 | 11 | 12 | 13 | 14 | [Android属性动画赏析-慕课网](http://www.imooc.com/learn/263 "Android属性动画赏析-慕课网") 15 | 16 | [浅谈Android动画-慕课网](http://www.imooc.com/learn/379 "浅谈Android动画-慕课网") 17 | 18 | 19 | 20 | 21 | 22 | ### Material Design 动画 23 | 24 | 见 Material Design 25 | 26 | 27 | 28 | 29 | ## ViewDragerHelper 30 | 31 | [ViewDragerHelper(一)认识与简单实现 - 简书](http://www.jianshu.com/p/19f8619b50b6 "ViewDragerHelper(一)认识与简单实现 - 简书") 32 | 33 | [ViewDragerHelper(二)源码简析 - 简书](http://www.jianshu.com/p/fe3e26184f11 "ViewDragerHelper(二)源码简析 - 简书") 34 | 35 | ViewDrager是简化view拖拽操作的帮助类,ViewDragHelper解决了android中手势处理过于复杂的问题。 36 | 37 | 38 | 39 | 40 | 41 | ![](http://upload-images.jianshu.io/upload_images/1605450-ecd9fbba99a110ab.gif?imageMogr2/auto-orient/strip) 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | [Android 堆叠式布局实现(一)简单堆叠式布局 - 简书](http://www.jianshu.com/p/f4e0a261d74d "Android 堆叠式布局实现(一)简单堆叠式布局 - 简书") 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Android/Android学习.md: -------------------------------------------------------------------------------- 1 | [Android学习进阶路线导航线路(Android源码分享) - qinjuning、lets go - CSDN博客](http://blog.csdn.net/qinjuning/article/details/7416208 "Android学习进阶路线导航线路(Android源码分享) - qinjuning、lets go - CSDN博客") 2 | 3 | 一、 基础篇 4 | 需要掌握的技能如下: 5 | 1、熟练掌握基本控件以及容器控件的使用 ; 6 | 常用的基本控件有:Button 、TextView、EditText、ListView等 7 | 常用的容器控件有:FrameLayout、LinearLayout、RelativeLayout等 8 | 2、熟练掌握相关监听器的注册和使用: 9 | 常用监听器有: OnClickListener、OnLongClickListener、OnItemClickListener等 10 | 3、掌握Log的使用以及分析方法 ; 11 | 4、掌握Activity、Service的生命周期和使用方法 ; 12 | 5、掌握BroadcastReceiver(广播)的接受和使用 ; 13 | 6、掌握Intent以及IntentFilter的使用 ; 14 | 7、基本掌握数据库方面知识,包括SQLiteDatabase以及ContentProvider的使用方法 15 | 16 | 17 | 二、 提高篇 18 | 需要掌握的技能如下: 19 | 1、掌握Canvas类的使用-- 如何绘图 20 | 2、掌握消息通信机制---Handler相关类的使用以及原理 21 | 3、掌握Context类以及实现原理 22 | 4、掌握View树的绘制流程 。 View绘制流程很重要,掌握它就基本上掌握了Android核心之一了。 23 | 4.1、掌握触摸事件的分发流程--- onInterceptTouchEvent以及onTouchEvent方法流程 24 | 4.2、掌握相关监听器的调用机制。例如OnClickListener监听时怎么调用的? 25 | 4.3、能够编写自定义View以及ViewGroup 26 | 5、理解Binder机制----Binder机制很重要,Android的进程间通信都是靠它完成的。掌握它,才能够好的完成接下 27 | 来的学习。 28 | 6、基本掌握ActivityManagerService类的使用,主要掌握的知识点包括如下: 29 | 6.1、startActivity()流程,即启动一个Activity的流程 ; 30 | 6.2、startService()流程,即启动一个Service的流程 ; 31 | 7、基本掌握PackageManagerService类的使用,主要掌握的知识点包括如下: 32 | 7.1、开机时如何解析所有已安装应用程序的Apk包的信息 33 | 7.2、Intent以及IntentFilter的匹配规则以及解析过程 34 | 8、基本掌握View添加至窗口的过程---即WindowManagerIml 、WindowManagerService类的用法 35 | 知识渠道: 36 | 网上相关大牛的博客。 (我这一亩三分地也有点货咯。(*^__^*) ) 37 | 38 | 必备书籍: 39 | 40 | 41 | 前面说的博客,在此推荐两个我常去的吧: 42 | 43 | 1、 应用方面,主要是魏祝林的csdn博客 :http://blog.csdn.net/Android_Tutor 。 但他的博客主要是以代码为主, 44 | 需要自己结合源代码揣摩 。 45 | 2、 框架方面,主要是老罗的csdn博客 : http://blog.csdn.net/Luoshengyang/ 。 但他的博客主要是以流程分析 46 | 为主, 而对 流程 需要的前期准备知识介绍不足,初步看起来比较难以理解,因此,买本《Android内核剖析》是必须 47 | 的,可以参考源代码仔细领悟, 强烈推荐该书籍。 48 | -------------------------------------------------------------------------------- /Android/Android工具.md: -------------------------------------------------------------------------------- 1 | # Android工具 2 | 3 | 标签(空格分隔): Android 4 | 5 | --- 6 | 7 | ## adb调试工具 8 | > 参考《Android群英传》 9 | > 10 | > [Android 调试桥 - Android Studio](https://developer.android.com/studio/command-line/adb.html#shellcommands "Android 调试桥 - Android Studio") 11 | 12 | adb (Android Debug Bridge) 13 | 14 | adb是Android SDK自带的调试工具,它位于sdk的`platform-tols`目录下。 15 | 16 | 直接在电脑使用ADB连接手机: 17 | 18 | - 直接使用adb,在Windows系统中还要下载对应的手机驱动,Linux则不用。该驱动可以到手机品牌官网下载。 19 | - 另外还需在手机的"setting"选择"about my phone",再不断点击"内部版本号"来激活开发者选项。进入开发者选项后,选择"USB Debug"。然后将手机连上电脑,此时手机上会显示"是否需要对这台电脑授权" 点击"OK"后,电脑就可以通过ADB连上手机。 20 | 21 | 22 | 23 | 24 | 打开命令行,使用 adb shell,就会进入到设备的控制台。 25 | 26 | 在Android系统目录中,`/system`和`/data`两个目录是开发者非常关心的两个目录。 27 | 28 | - `/system/app`里面放的是一些系统的App 29 | - `/system/bin/`主要放的是Linux自带的组件 30 | - `/system/build.prop`记录系统的属性信息 31 | - `/system/fonts/`存放系统字体,root后可下载TTF格式字体替换原字体。 32 | - `/system/framework/`系统的核心文件、框架层 33 | - `/system/lib/` 存放几乎所有的共享库(.so) 34 | - `/system/media/` 保存系统提示音;其中 audio目录保存系统默认铃声 35 | - `/system/usr/` 保存用户的配置文件;如键盘布局、共享、时区文件 36 | - `/data/app/` 包含用户安装的App 37 | - `/data/data/` 包含了App的数据信息,文件信息,数据库信息;以包名方式来区分 38 | - `/data/system/` 包含了手机的各项系统信息 39 | - `/data/misc/` 保存大部分的wi-fi、vpn信息 40 | 41 | 42 | 43 | ### ADB常用命令 44 | 参考书籍 45 | 46 | 47 | 48 | 49 | 50 | 51 | ## 抓取Http请求 52 | 53 | 54 | 55 | ## 抓取Https请求 56 | 57 | [charles 下抓取 https 请求 (IOS 和 Android 教程)](https://testerhome.com/topics/7925) 58 | 59 | 60 | -------------------------------------------------------------------------------- /Android/Android开源项目开源框架.md: -------------------------------------------------------------------------------- 1 | # Android开源项目 2 | 3 | 标签(空格分隔): Android 4 | 5 | --- 6 | 7 | ## 云阅 8 | 9 | [《云阅》一个仿网易云音乐UI,使用Gank.Io及豆瓣Api开发的开源项目](http://www.jcodecraeer.com/a/anzhuokaifa/2017/0116/7036.html) 10 | 该项目有wiki说明。 11 | 12 | 13 | 14 | ## Github客户端 15 | 16 | [打造一款开源的Android平台的Github客户端](http://www.jianshu.com/p/010545ecf472#) 17 | 18 | 19 | ## 知乎专栏 20 | 21 | [知乎专栏API分析及示例项目源码分享](http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/1125/6805.html) 22 | 23 | 24 | 25 | 26 | ## 新浪微博 Android SDK 27 | 28 | 29 | 30 | 新浪微博第三方客户端[0] [微博1](https://www.zybuluo.com/natsumi/note/408119) 31 | 使用 Android Studio 跑新浪微博SDK Demo遇到的问题及解决 32 | 33 | ## 微博 34 | 35 | 36 | ## 下拉刷新 Ultra Pull To Refresh 37 | 38 | 39 | [ 下拉刷新框架android-Ultra-Pull-To-Refresh导入到Android Studio ](http://blog.csdn.net/jljcslg/article/details/50543548) 40 | 41 | 使用: 42 | 【用户界面:android-Ultra-Pull-To-Refresh】之一:android-Ultra-Pull-To-Refresh开篇 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | ## 开源框架 51 | 52 | 53 | 54 | [Android 中基于物理特性的动画简介 - OPEN 开发经验库](http://www.open-open.com/lib/view/open1501666268791.html "Android 中基于物理特性的动画简介 - OPEN 开发经验库") 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Android/Android控件架构与自定义控件.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Android控件架构 4 | 5 | 6 | 7 | ### View视图树 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ### View的测量 18 | 19 | 前面说过:上层控件负责下层子控件的测量与绘制,并传递交互事件。(只是传递) 20 | 21 | 22 | 23 | 在绘制View前,必须对View进行测量,即告诉系统该画多大的View;这个过程在 `onMeasure()`方法中进行。 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ## 自定义控件 32 | 33 | - 自绘控件 34 | - 组合控件 35 | - 基础控件 36 | 37 | 38 | 39 | ## 自定义控件的步骤 40 | 41 | 自绘控件 42 | 43 | - 自定义属性的声明与获取。[观察控件是否需要某些属性,我们可以将其提取出来] 44 | - 测量onMeasure() :调用requestLayout()即可触发测量 45 | - 布局onLayout(ViewGroup) 「是父控件去决定子View的显示位置」 46 | - 绘制onDraw() 「大多数的ViewGroup都不需要考虑onDraw()」 47 | - onTouchEvent() 「如果需要和用户交互,则还要覆写此方法」 48 | - onInterceptTouchEvent(ViewGroup) 「如果是ViewGroup,还可以去拦截子View的一些事件」 49 | 50 | 51 | 52 | > 带有 ViewGroup的为自定义ViewGroup才需要考虑的方法。 53 | 54 | 55 | 56 | onTouchEvent() ,当要考虑多点触控时,在每个时刻只存在一个 ActivePointer 。当只有一个手指时那么第一个手指为 ActivePointer,此时当按下第二个手指时第个手指成为ActivePointer,当按下第三个手指时第三个手指成为ActivePointer。 57 | 58 | 当ActivePointer被移开时我们需要控制让其它手指成为ActivePointer。一般我们参考系统代码这样实现:当第三个手指移开时第一个手指变为 ActivePointer,如果此时移开的不是ActivePointer则不会改变。 59 | 60 | 61 | 62 | [推荐:GcsSloop/AndroidNote: 安卓学习笔记](https://github.com/GcsSloop/AndroidNote "GcsSloop/AndroidNote: 安卓学习笔记") 63 | 64 | [微信6.0主界面-慕课网](http://www.imooc.com/learn/273 "微信6.0主界面-慕课网") 65 | 66 | [Android自定义任意层级树形控件-慕课网](http://www.imooc.com/learn/303 "Android自定义任意层级树形控件-慕课网") 67 | 68 | [Android面试解密-自定义View-慕课网](http://www.imooc.com/learn/579 "Android面试解密-自定义View-慕课网") 69 | 70 | [Android UI模板设计-慕课网](http://www.imooc.com/learn/247 "Android UI模板设计-慕课网") 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /Android/Android插件化技术.md: -------------------------------------------------------------------------------- 1 | # Android插件化技术 2 | 3 | 4 | 5 | 6 | ## Droidplugin 7 | [Droidplugin by DroidPluginTeam](http://droidpluginteam.github.io/DroidPlugin/ "Droidplugin by DroidPluginTeam") 8 | 9 | A plugin framework on android,Run any third-party apk without installation, modification or repackage。 10 | 11 | 相关文章:[DroidPlugin/DOC](https://github.com/DroidPluginTeam/DroidPlugin/tree/master/DOC ) 必看好文。 12 | 13 | 14 | ## 插件化学习 15 | 16 | [Android插件化原理解析——概要 - Weishu's Notes](http://weishu.me/2016/01/28/understand-plugin-framework-overview/ ) 17 | 18 | 19 | [Android 插件化原理解析——Activity生命周期管理 -| Weishu's Notes](http://weishu.me/2016/03/21/understand-plugin-framework-activity-management/) 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Android/Android消息推送.md: -------------------------------------------------------------------------------- 1 | # Android消息推送 2 | 3 | ## Android推送的方式 4 | 5 | 6 | 7 | [Android-见证消息推送时刻进阶篇-慕课网](http://www.imooc.com/learn/358 "Android-见证消息推送时刻进阶篇-慕课网") 8 | 9 | 10 | 11 | ### Pull 12 | 客户端时隔一段时间向服务端拉取数据,看是否有更新消息,如果有,更新客户端信息,如果没有更新,不做任何操作。 13 | 14 | 15 | 16 | ### Push 17 | 服务端在有新消息的情况下,主动向客户端推送更新消息。 18 | 19 | 20 | ### 异同点 21 | 22 | 1. 实现相同的功能 23 | 2. Pull方式更加耗费流量 24 | 3. Pull方式更加耗费电量 25 | 26 | 27 | 28 | ## Android推送解决方案 29 | 30 | - C2DM云端推送 31 | - MQTT协议 32 | - RSMB实现推送 33 | - XMPP协议 34 | - 第三方推送平台 35 | 36 | 37 | 38 | ### C2DM云端推送 39 | 40 | 1. Google提供; 41 | 2. 提供简单、轻量级服务; 42 | 3. 应用程序直接与服务器进行通信; 43 | 4. 依赖Google官方C2DM服务器。(需FQ) 44 | 45 | 46 | ### MQTT协议 47 | 48 | 1. 使用TCP/IP网络连接; 49 | 2. 更加简约、轻量,而且易于使用; 50 | 3. 但是带宽低、网络延迟高、网络通信不稳定。 51 | 52 | 53 | ### RSMB实现推送 54 | ![RSMB推送,基于MQTT协议](http://www.maiziedu.com/uploads/new_img/kV2gsNqYfR1637X2u7.png) 55 | 56 | 57 | ### XMPP协议 58 | 59 | 1. 基于扩展标记语言(**XML**)的协议; 60 | 2. 开源; 61 | 3. 采用C/S模式通信模式; 62 | 4. XML的数据传输格式; 63 | 5. 客户端的操作非常简单; 64 | 6. 分布式网络特点 65 | 66 | #### XMPP协议工作原理 67 | 68 | 1. 客户端连接到服务器; 69 | 2. 服务器对其进行认证; 70 | 3. 客户端进行某种定制的请求; 71 | 4. 客户端与服务端进行交互。 72 | 73 | #### 基于XMPP协议的开源库Androidpn 74 | 75 | 1. 基于XMPP协议的开源库; 76 | 2. 包含完整的客户端以及服务端; 77 | 3. 基于openfire开源工程。 78 | 79 | 服务端需要自己配: 80 | 81 | ![配置服务端](http://www.maiziedu.com/uploads/new_img/NxCtMdWMA4kfqFUBrm.png) 82 | 83 | 84 | 推送界面: 85 | 86 | ![推送界面](http://www.maiziedu.com/uploads/new_img/87tIPP6FZfNOztC8Vy.png) 87 | 88 | > Androidpn已经过时 89 | > Android客户端程序中需要包含Androidpn的相关代码,并能够与服务器进行通信。 90 | 91 | 92 | 93 | [史上最全解析Android消息推送解决方案 - 简书](http://www.jianshu.com/p/b61a49e0279f "史上最全解析Android消息推送解决方案 - 简书") 94 | 95 | ## 第三方推送 96 | 97 | 98 | 99 | ### 友盟推送、极光推送、云巴(基于MQTT) 100 | 101 | 解决方案没有优劣,要具具体使用场景而定。但一般来说,**个人建议使用第三方平台推送,成本低+抵达率高** 102 | 103 | ## BAT大厂的平台推送 104 | 105 | ### 阿里云移动推送 106 | 107 | 108 | 109 | 110 | 111 | 手机厂商类:小米推送、华为推送。 112 | 第三方平台类:友盟推送、极光推送、云巴(基于MQTT) 113 | BAT大厂的平台推送:阿里云移动推送、腾讯信鸽推送、百度云推送 -------------------------------------------------------------------------------- /Android/Android源码查看与编译.md: -------------------------------------------------------------------------------- 1 | # Android源码查看与编译 2 | 3 | 标签(空格分隔): Android 4 | 5 | --- 6 | 7 | [大牛们是怎么阅读 Android 系统源码的?](https://www.zhihu.com/question/19759722) 8 | [自己动手编译Android源码(超详细)](http://www.jianshu.com/p/367f0886e62b) 9 | 10 | ## 在线阅读Android源码 11 | 几个网站和方法: 12 | 13 | - [GrepCode android](http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/) GrepCode.com 一个专注于几个著名Java项目的在线源码网站,当然也包括Android框架层 14 | - [AndroidRef](http://androidxref.com/) 15 | - 一个chrome内核浏览器插件:[Android SDK Reference Search](https://chrome.google.com/webstore/search/Android%20SDK%20Reference%20Search%20)安装了这个插件之后就可以直接到[android api官方网:](http://developer.android.com/reference/packages.html) 16 | 随便查找一个类:例如[Activity:](http://developer.android.com/reference/android/app/Activity.html) 17 | 然后我们就可以看到在Aitivity后面多了个(**view source**) 18 | - [omapzoom.org 比较乱](http://omapzoom.org/) 19 | 20 | 21 | 22 | ## 离线下载源码 23 | 24 | 上清华镜像站:[清华大学开源软件镜像站 Tsinghua Open Source Mirror](https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ "清华大学开源软件镜像站| Tsinghua Open Source Mirror") 25 | 科大镜像:[AOSP(Android) 镜像使用帮助](https://lug.ustc.edu.cn/wiki/mirrors/help/aosp "AOSP(Android) 镜像使用帮助 ") 26 | 27 | 28 | [史上最简单Android源码编译环境搭建方法 - Weishu's Notes](http://weishu.me/2016/12/30/simple-way-to-compile-android-source/index.html "史上最简单Android源码编译环境搭建方法 - Weishu's Notes") 29 | 30 | [进击的程序员](http://0xcc0xcd.com/p/index.php "进击的程序员") 31 | 32 | 33 | [Android 系统全套源代码分享](https://testerhome.com/topics/2229) 34 | 35 | 36 | 37 | 38 | 39 | 40 | ## 编译源码 41 | 42 | 电脑硬件要求: 43 | 44 | 45 | ## 源码查看工具 46 | 47 | ### vim + ctags + cscope 48 | 49 | [Linux 平台下阅读源码的工具 | ShareHub](http://blog.xiaohansong.com/2015/08/24/Linux%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7%E9%93%BE/# "Linux 平台下阅读源码的工具 | ShareHub") 50 | 51 | ctags的添加: 52 | ``` 53 | set tags=/home/RT288x_SDK/source/linux-2.6.36.x/tags 54 | ``` 55 | 56 | [【转】使用 vim + ctags + cscope + taglist 阅读源码 - 相关文章](https://www.bbsmax.com/R/ZOJPjg7Pdv/ "【转】使用 vim + ctags + cscope + taglist 阅读源码 - 相关文章") 57 | 通过这篇文章来了解Ctags和taglist [vim Ctags 和taglist安装和使用](https://www.bbsmax.com/A/KE5QOWj4zL/ "vim Ctags 和taglist安装和使用") 58 | 59 | 60 | ### Source Insight 61 | 62 | [Android源码阅读工具——在Ubuntu下使用Source Insight-IT大道](http://www.itdadao.com/articles/c15a455979p0.html "Android源码阅读工具——在Ubuntu下使用Source Insight-IT大道") 63 | 64 | 65 | -------------------------------------------------------------------------------- /Android/Android组件化开发实战.md: -------------------------------------------------------------------------------- 1 | # Android组件化开发实战 2 | 3 | 4 | 5 | [Android组件化开发实战_Android组件化开发实战职业课程-极客学院](http://www.jikexueyuan.com/zhiye/course/84.html?type=18 "Android组件化开发实战_Android组件化开发实战职业课程-极客学院") 6 | 7 | 8 | 9 | 本课程通过对组件化架构的深度剖析,让大家更深刻的理解组件化的思想。通过对基础组件、页面组件、业务组件的设计划分,实现高可复用的项目架构,能够更好的提升开发者的开发效率 10 | 11 | 12 | 13 | 可以考虑极客学院的 SVIP用户(超级VIP) , 999 ¥/年。 14 | 15 | 16 | 17 | ## 什么是组件化? 18 | 19 | 组件化是在项目层面上的架构思想,适用于多端产品(如滴滴有司机端,用户端两个端口)。主要通过将多个端口通用的一些基础代码、页面、甚至是业务代码封装成组件的方式,达到只需维护一份组件代码,就可以在多个端的工程中生效共用的效果,达到高效、高复用、易维护的效果,能够大大的提升开发者的开发效率。 20 | 21 | ## 组件化有什么好处? 22 | 23 | 1. 高度解耦,将通用组件都封装起来 24 | 2. 高可复用,可将组件应用于其他任何项目 25 | 3. 方便维护,只需维护一次组件,其他所有引用项目都会生效 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Android/Android编程技巧和应用场景.md: -------------------------------------------------------------------------------- 1 | ## 编程技巧 2 | 3 | ### 巧用取模运算符 % 4 | 5 | - 循环获取某数组内的值 6 | 7 | 8 | 9 | 10 | 11 | ## 应用场景 12 | 13 | 14 | 15 | ### 使用Handle定时更换ImageView中的图片 16 | 17 | 18 | 19 | 关键代码: 20 | 21 | ```java 22 | //包含图片的数组 23 | int images[] = {R.drawable.image1,R.drawable.image2}; 24 | //当前显示的图片的索引 25 | int index; 26 | 27 | //定义一个MyRunnable内部类,在其run()方法中实现如下逻辑 28 | //循环更换索引的方法,巧用取模运算符 % 29 | index++; 30 | index = index % images.length; 31 | imageView.setImageResource(...); 32 | //每隔一秒中发送该myRunnable对象 33 | handler.postDelayed(myRunnable, 1000); 34 | 35 | 36 | //然后在主线程中同样调用该方法 37 | handler.postDelayed(myRunnable, 1000); 38 | ``` 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Android/Android错误收集.md: -------------------------------------------------------------------------------- 1 | # 总结、记录Android编程中出现的错误和一些收获 2 | 3 | 4 | ## 1.错误 5 | 6 | ### List 链表错误 7 | 1. 在循环中向List中添加数据,而该临时数据的定义却也在循环中。导致添加的都是同一个内存空间中,List中的引用都指向了该地址。 8 | 9 | 10 | 11 | 12 | ## 2.总结 13 | 14 | 1. AppCompatActivity中的findViewById通过通过委托类来调用View.findViewById(),而Activity中也是最终调用View.findById()。 15 | 16 | -------------------------------------------------------------------------------- /Android/App架构简介.md: -------------------------------------------------------------------------------- 1 | # App架构简介 2 | 3 | 4 | ## MVC 5 | 6 | Android MVC.md 7 | 8 | 9 | ## MVP 10 | 11 | 12 | 13 | 14 | 15 | 1. [Android官方MVP架构示例项目解析](http://www.infoq.com/cn/articles/android-official-mvp-architecture-sample-project-analysis),官方的github项目仓库中用多个分支进行了演示。 16 | 2. [Android开发中的MVP架构](http://www.jianshu.com/p/7567ed0d1853) 17 | 3. [【译】Android MVP 架构必要知识:第一部分](https://zhuanlan.zhihu.com/p/25272412 "推荐") 18 | 4. [Model-View-Presenter Architecture in Android Applications](http://macoscope.com/blog/model-view-presenter-architecture-in-android-applications/) 19 | 5. [MODEL VIEW PRESENTER (MVP) IN ANDROID, PART 2](http://www.tinmegali.com/en/model-view-presenter-mvp-in-android-part-2/) 20 | 6. [MVP for Android: how to organize the presentation layer](https://antonioleiva.com/mvp-android/) 21 | 7. [Model-View-Presenter: Android guidelines](https://medium.com/@cervonefrancesco/model-view-presenter-android-guidelines-94970b430ddf) 22 | 8. [一步一步实现Android的MVP框架](https://dev.qq.com/topic/5799d7844bef22a823b3ad44) 23 | 9. [Android MVP模式 简单易懂的介绍方式](https://segmentfault.com/a/1190000003927200) 24 | 25 | 26 | 27 | ## MVVM 28 | 29 | 30 | [MVC,MVP 和 MVVM 的图示](http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html) 31 | 32 | ## Clean 33 | 34 | -------------------------------------------------------------------------------- /Android/ConstraintLayout布局.md: -------------------------------------------------------------------------------- 1 | 2 | [Android新特性介绍,ConstraintLayout完全解析 - 郭霖的专栏 - CSDN博客](http://blog.csdn.net/guolin_blog/article/details/53122387 "Android新特性介绍,ConstraintLayout完全解析 - 郭霖的专栏 - CSDN博客") 3 | [深入理解ConstraintLayout之使用姿势 - 简书](http://www.jianshu.com/p/b406ddc8b913 "深入理解ConstraintLayout之使用姿势 - 简书") 4 | 5 | 6 | Android Studio也支持可视化的方式来编写界面,但是操作起来并不方便,而ConstraintLayout就是为了解决这一现状而出现的。ConstraintLayout非常适合使用可视化的方式来编写界面,但并不太适合使用XML的方式来进行编写。另外,ConstraintLayout还有一个优点,它可以有效地解决布局嵌套过多的问题。 7 | 8 | ConstraintLayout的用法很多都是对控件进行拖拽。 9 | 10 | 为了要使用ConstraintLayout,我们需要在app/build.gradle文件中添加ConstraintLayout的依赖,并且使用2.2以上版本的AS。 11 | 12 | ### 添加约束 13 | 14 | 如果一个控件没有添加任何约束的话,它在运行之后会自动位于界面的左上角。每个控件的约束都分为垂直和水平两类,一共可以在四个方向上给控件添加约束。控件上的四个圆点就是用来添加约束的;我们可以将约束添加到ConstraintLayout,也可将约束添加到另一个控件。 15 | 16 | ![](http://img.blog.csdn.net/20170131145556811) 17 | 18 | ![](http://img.blog.csdn.net/20170131150244736) 19 | 20 | ![](http://img.blog.csdn.net/20170131151357987) 21 | 22 | 23 | ### 删除约束 24 | 25 | 第一种用于删除一个单独的约束,将鼠标悬浮在某个约束的圆圈上,然后该圆圈会变成红色,这个时候单击一下就能删除了 26 | ![](http://img.blog.csdn.net/20170131152026400) 27 | 28 | 29 | 第二种用于删除某一个控件的所有约束,选中一个控件,然后它的左下角会出现一个删除约束的图标,点击该图标就能删除当前控件的所有约束了。 30 | ![](http://img.blog.csdn.net/20170131152353011) 31 | 32 | 第三种用于删除当前界面中的所有约束,点击工具栏中的删除约束图标即可 33 | ![](http://img.blog.csdn.net/20170131152641075) 34 | 35 | ![]() 36 | 37 | ![]() 38 | 39 | ![]() 40 | 41 | ![]() 42 | 43 | ![]() 44 | 45 | 46 | -------------------------------------------------------------------------------- /Android/ContentProvider.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 使用ContentProvider 可以将数据共享给其他应用,让除本应用之外的应用也可以访问本应用的数据。 6 | 它的底层是用SQLite 数据库实现的,所以其对数据做的各种操作都是以Sql实现,只是在上层提供的是Uri。 -------------------------------------------------------------------------------- /Android/Context类.md: -------------------------------------------------------------------------------- 1 | # Context类 2 | 3 | 标签(空格分隔): Android 4 | 5 | --- 6 | 7 | public abstract class Context 8 | extends Object 9 | 10 | 11 | java.lang.Object 12 | ↳ android.content.Context 13 | 14 | Known Indirect Subclasses 15 | 16 | - Activity 17 | - Application 18 | - Service 19 | - and 45 others 20 | 21 | 22 | 23 | 24 | >Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc. 25 | 26 | 参考:[Difference between getContext() , getApplicationContext() , getBaseContext() and “this”](http://stackoverflow.com/questions/10641144/difference-between-getcontext-getapplicationcontext-getbasecontext-and) 27 | 28 | 29 | 30 | 31 | 32 | --- 33 | 34 | Android 应用程序会在如下所示的几个时间点创建应用上下文Context: 35 | - 创建Application 36 | - 创建Activity 37 | - 创建Service 38 | 39 | 它们三个都继承了Context。 40 | 41 | Application Context:当应用程序第一次启动时,Android系统都会创建一个Application对象,同时创建Application Context,所有的组件都共同拥有这样一个Context对象,该应用上下文对象贯穿整个应用进程的声明周期。 42 | 43 | Activity实例和Service实例的Context对象:创建Activity和Service组件时,系统也会给它们创建相应的Context对象。 44 | 45 | 46 | 47 | 48 | 49 | 50 | - View.getContext(): Returns the context the view is currently running in. **Usually the currently active Activity.** 51 | - Activity.getApplicationContext(): Returns the context for the entire application (the process all the Activities are running inside of). Use this instead of the current Activity context if you need a context tied to the lifecycle of the entire application, not just the current Activity. 52 | - ContextWrapper.getBaseContext(): If you need access to a Context from within another context, you use a ContextWrapper. The Context referred to from inside that ContextWrapper is accessed via getBaseContext(). 53 | 54 | >注意: 55 | View.getContext() 56 | Activity.getApplicationContext() 57 | ContextWrapper.getBaseContext() 58 | 59 | 60 | 对于 this ,因为 Activity类是Context类的子类。 但是Activity类中没有`getContext()`方法。 61 | 62 | 很多类中都有 `getContext()`方法: 63 | 64 | - View类,其子类应该也都有,如 LinearLayout 65 | - Fragment 66 | - LayoutInflater 67 | - **Adapter 68 | 69 | 70 | 71 | 72 | ---- 73 | 74 | 另参考: 郭霖的博客 75 | -------------------------------------------------------------------------------- /Android/CoordinatorLayout相关.md: -------------------------------------------------------------------------------- 1 | # CoordinatorLayout 2 | 3 | 相关内容见AndroidHive的CardView示例和收藏的笔记。 4 | 5 | [CoordinatorLayout与滚动的处理 【译:codepath】](http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0717/3196.html) 6 | 7 | CoordinatorLayout是用来协调其子view们之间动作的一个父view,而Behavior就是用来给CoordinatorLayout的子view们实现交互的 8 | 9 | 10 | CoordinatorLayout的工作原理是搜索定义了CoordinatorLayout Behavior 的子view,不管是通过在xml中使用`app:layout_behavior`标签还是通过在代码中对view类使用`@DefaultBehavior`修饰符来添加注解。当滚动发生的时候,CoordinatorLayout会尝试触发那些声明了依赖的子view。 11 | 12 | 要自己定义CoordinatorLayout Behavior,你需要实现layoutDependsOn() 和onDependentViewChanged()两个方法。比如AppBarLayout.Behavior 就定义了这两个关键方法。 13 | 理解如何实现这些自定义behavior的最好途径是研究AppBarLayout.Behavior 和 FloatingActionButtion.Behavior。 14 | 15 | [codepath教程:浮动操作按钮详解 \- 泡在网上的日子](http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0718/3197.html) 16 | 17 | 18 | 看下FloatingActionButton的源码就能发现其中有一个Behavior方法继承自CoordinatorLayout.Behavior,并在其中实现了与Snackbar互动时的逻辑。 19 | 20 | 21 | 22 | AppBarLayout -> 可滚动的View互动 (比如RecyclerView、NestedScrollView等但ListView不行) 23 | 24 | FloatingActionButton -> 与Snackbar互动(当snackbar显示时) 25 | 26 | 27 | 28 | > CoordinatorLayout 与 RecyclerView的关系一直搞不懂 29 | 30 | 31 | -------------------------------------------------------------------------------- /Android/DrawerLayout相关.md: -------------------------------------------------------------------------------- 1 | # DrawerLayout相关 2 | 3 | 4 | 5 | 见思维导图: 6 | 7 | 8 | 9 | ![DrawerLayout相关.jpg](https://ooo.0o0.ooo/2017/06/15/5941f8aea6573.jpg "图片删除:https://sm.ms/delete/nbqBISmHPF2Xdfr") 10 | 11 | 12 | 还有一个问题,如何在代码中(引用到)更改抽屉式导航栏头部布局中的图片? 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/Fragment.md: -------------------------------------------------------------------------------- 1 | # Fragment 2 | 3 | [Android - 随笔分类 - 超级Peng - 博客园](http://www.cnblogs.com/PengLee/category/603172.html "Android - 随笔分类 - 超级Peng - 博客园") 4 | 5 | 6 | 7 | ![](http://images.cnitblog.com/blog/641601/201409/201329372531026.png) 8 | 9 | 10 | 11 | 12 | 13 | 1、onAttach(Context context):当该Fragment被添加到Activity时被回调,且这个方法只会被回调一次,这个方法中的参数context就是加载这个Fragment的Activity对象,所以我们可以通过这个方法获得Activity对象 14 | 15 | 2、onCreate(Bundle):创建Fragment的时候被调用,该方法只会被回调一次 16 | 17 | 3、onCreateView():每次创建、绘制Fragment的View组件时回调这个方法,Fragment将会显示该方法返回的View组件 18 | 19 | 4、onActivityCreated():当Fragment所在的Activity被启动完成后回调这个方法 20 | 21 | 5、onStart():启动Fragment的时候被回调 22 | 23 | 6、onResume():恢复Fragment的时候被回调,onStart()方法之后一定会回调这个方法 24 | 25 | 7、onPause():暂停Fragment时被回调 26 | 27 | 8、onDestroyView():销毁该Fragment所包含的View组件时回调 28 | 29 | 9、onDestroy() :销毁Fragment时被回调,只会被回调一次 30 | 31 | 10、onDetach():该方法只会被回调一次 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Android/GestureDetector手势识别.md: -------------------------------------------------------------------------------- 1 | # GestureDetector手势识别 2 | 3 | 参考:(按顺序查看) 4 | 5 | 1. [Android 触摸及手势操作GestureDetector](http://blog.csdn.net/xyz_lmn/article/details/16826669) 6 | 2. [Android手势监听类GestureDetector的使用](http://www.cnblogs.com/sw926/p/3208158.html) 7 | 3. [用户手势检测-GestureDetector使用详解](http://blog.csdn.net/harvic880925/article/details/39520901 "推荐") 8 | 9 | 10 | [打造个性的图片预览与多点触控-慕课网](http://www.imooc.com/learn/239 "打造个性的图片预览与多点触控-慕课网") 11 | 12 | [图形手势识别-慕课网](http://www.imooc.com/learn/131 "图形手势识别-慕课网") 13 | 14 | 15 | 16 | ## GestureDetector类 17 | 18 | GestureDetector类: 19 | 20 | 使用提供的MotionEvents检测各种手势和事件。 GestureDetector.OnGestureListener回调将在特定运动事件发生时通知用户。 该类只能用于通过触摸报告的MotionEvents(不要用于轨迹球事件)。 21 | 22 | 该类主要是通过它的onTouchEvent()方法完成了不同**手势的识别**,但是不同的手势要如何处理是由程序员实现。 23 | 24 | 25 | 26 | 使用该类的注意事项和方法: 27 | 28 | - 为你的View创建一个GestureDetector实例 29 | - 确保调用该类的`onTouchEvent(MotionEvent)`,回调中定义的方法将在事件发生时执行。 30 | 31 | 几个内部成员和方法的介绍: 32 | 33 | 1. `boolean onTouchEvent(MotionEvent ev)`方法: 34 | Analyzes the given motion event and if applicable(可适用) triggers(触发) the appropriate(适当的) callbacks(回调) on the GestureDetector.OnGestureListener supplied(提供的).(分析事件,如果适用则调用相关回调方法) 35 | 2. 内部类(接口)`GestureDetector.OnGestureListener`: The listener that is used to notify(通知) when gestures occur(当产生手势时). 36 | 3. 静态内部类`GestureDetector.SimpleOnGestureListener`: 该类直接继承了GestureDetector类中的所有接口,并实现了所有接口中的所有方法,但是在实现的方法中只是简单的返回false。如果你只想监听手势的一个子集,则只需简单的继承该类即可。 37 | 38 | 39 | 因此实现手势识别有两种方法,一种实现OnGestureListener接口,另一种是使用SimpleOnGestureListener类。 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 另可参考: 48 | 49 | [Android 手势监测GestureDetector - 超级Peng - 博客园](http://www.cnblogs.com/PengLee/p/4149171.html "Android 手势监测GestureDetector - 超级Peng - 博客园") 50 | 51 | 52 | [Gestures(手势) - 菜鸟教程](http://www.runoob.com/w3cnote/android-tutorial-gestures.html "3.8 Gestures(手势) - 菜鸟教程") -------------------------------------------------------------------------------- /Android/JobScheduler.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ## JobScheduler和JobService 5 | 6 | 为了更好的实现后台服务、Android引入了一个叫作JobScheduler的权限API。除了实现常规后台服务之外,JobScheduler还支持按场景、按条件运行后台服务。 7 | 8 | 自Android 5.0发布以来,JobScheduler已成为执行后台工作的首选方式。 9 | 10 | 11 | 12 | > 《Android权威编程指南》 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/Kotlin.md: -------------------------------------------------------------------------------- 1 | ## Kotlin介绍 2 | 3 | [Kotlin 将超越 Java 成为 Android 开发的第一语言?](http://mp.weixin.qq.com/s?timestamp=1508205792&src=3&ver=1&signature=LD5Gs4d3SbEX9*Uh66q0yP2osCg-gh0dU6RUupXH9eJLWdHfXXYy9oueR3dEh3SgbwiwgbNGzXs1u-aaCXOwI9vHdmA2FIm8RJnB0WOqvxjaiSEFYQDa9i*yCD3x1DzV*QSiYq-As54k-fxtKayYgMGuYXWitq-BwxfXGYdLGac= "Kotlin 将超越 Java 成为 Android 开发的第一语言?") 4 | 5 | 6 | 7 | Kotlin 是一门面向 Java 虚拟机(JVM)、Android、JavaScript 和 Native 的开源语言,它于 2011 年由 JetBrains 推出,去年发布 1.0 版本,今年谷歌宣布它成为 Android 领域官方支持的开发语言。 8 | 9 | JetBrains 表示,Kotlin 比 Java 更简洁,所需编写的代码行大概比 Java 少 40%。此外,类型安全方面 Kotlin 也比 Java 好,并支持函数式编程。 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Android/NDK与JIN.md: -------------------------------------------------------------------------------- 1 | # NDK与JIN介绍 2 | 3 | 4 | 5 | ## NDK 6 | 7 | NDK是一系列工具的集合。它提供了一系列的工具,帮助开发者快速开发C/C++的动态库,并能自动将SO和Java一起打包成apk. 8 | 9 | Android 原生开发包(NDK)使用诸如C和C++之类的原生代码语言实现它们的部分应用。通过Google 发布的 Android 手机 NDK(Native Development Kit),应用程序可以非常方便地现 Java 与 C/C++代码的相互沟通。合理地使用 NDK,可以提高应用程序的执行效率。所以,对于 Android 开发人员来说,NDK 是必须掌握的工具。 10 | 11 | 12 | 13 | 《Android C++高级编程 — 使用NDK》内容: 14 | 15 | - 在主要的操作系统上安装 Android 原生开发环境。 16 | - 使用 Eclipse 集成开发环境开发原生代码。 17 | - 使用 Java 原生接口(JNI)将原生代码与 Java 代码连接。 18 | - 用 SWIG 自动生成 JNI 代码。 19 | - 用 POSIX 和 Java 线程开发多线程原生应用。 20 | - 用 POSIX sockets 开发网络原生应用。 21 | - 用 logging、GDB 和 Eclipse 调试器调试原生代码。 22 | - 用 Valgrind 分析内存问题。 23 | - 用 GProf 测试应用性能。 24 | - 用 SIMD/NEON 优化原生代码。 25 | 26 | 27 | 28 | 29 | ## JNI 30 | 31 | JNI是Java本地接口(Java Native Interface)。它是Java平台的一个特性(并不是Android系统特有的)。其实主要是定义了一些JNI函数, 32 | 让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各个语言的特点了。 33 | 34 | JNI标准是Java平台的一部分,JNI是Java语言提供的Java和C/C++相互沟通的机制。 35 | 36 | 37 | 38 | 首先是将写好的C/C++代码编译成对应平台的动态库(windows一般是dll文件,linux一般是so文件等)。 39 | 40 | 41 | [Android JNI编程—JNI基础 - 简书](http://www.jianshu.com/p/aba734d5b5cd ) 42 | 43 | [JNI Tips - Android开发者](https://developer.android.com/training/articles/perf-jni.html) 44 | 45 | [Android NDK - Android Developers](https://developer.android.com/ndk/index.html?hl=zh-cn) 46 | 47 | Android NDK 是一套允许您使用原生代码语言(例如 C 和 C++)实现部分应用的工具集。在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 在SDK Tools中选择安装 LLDB(调试工具) 、CMake 和 NDK。 -------------------------------------------------------------------------------- /Android/RxJava 2.x 入门.md: -------------------------------------------------------------------------------- 1 | # RxJava 2.x 入门 2 | 3 | 4 | 5 | **RxJava 2.x :** 6 | 7 | - [给初学者的RxJava2.0教程(一) - 简书](http://www.jianshu.com/p/464fa025229e "给初学者的RxJava2.0教程(一) - 简书") 系列9篇 8 | - [这可能是最好的RxJava 2.x 教程(完结版)](http://www.apkbus.com/blog-898535-68185.html )系列6篇 9 | 10 | 11 | 12 | 13 | ### fromCallable 14 | 15 | 返回一个Observable,当观察者订阅它时,调用您指定的函数,然后发出从该函数返回的值。 16 | 17 | ```java 18 | public static Observable fromCallable(@NotNull java.util.concurrent.Callable supplier) 19 | ``` 20 | 21 | 22 | 23 | 这允许您推迟您指定的函数的执行,直到观察者订阅ObservableSource。也就是说,它使功能“懒惰”。 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Android/Service.md: -------------------------------------------------------------------------------- 1 | # Android Service 2 | 3 | 官方教程:[服务 - Android Developers](https://developer.android.com/guide/components/services.html "服务 Android Developers") 4 | 5 | 6 | 7 | ## Service生命周期 8 | 9 | 10 | 11 | 启动Service的方式有两种,各自的生命周期也有所不同。 12 | 13 | 一、通过startService启动Service:onCreate、onStartCommand、onDestory。 14 | 15 | 二、通过bindService绑定Service:onCreate、onBind、onUnbind、onDestory。 16 | 17 | 18 | 19 | 20 | 21 | ## Service与Activity通信 22 | 23 | * 通过 Binder 24 | * 通过 Broadcast 25 | 26 | 27 | 28 | 29 | 30 | ## 如何保证Service在后台不被kill 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | ## 系统服务类 39 | 40 | 41 | 42 | [Android Service——系统服务类的使用 - 超级Peng - 博客园](http://www.cnblogs.com/PengLee/p/4092712.html "Android Service——系统服务类的使用 - 超级Peng - 博客园") 43 | 44 | - 网络管理服务——ConnectivityManager 45 | - 电话管理服务类——TelephonyManager 46 | - 短信管理服务——SmsManager 47 | - 音频管理服务类——AudioManager 48 | - 振动器服务类——Vibrator 49 | - 手机闹钟服务类——AlarmManager 50 | - 通知服务类——Notification 51 | 52 | 53 | -------------------------------------------------------------------------------- /Android/SurfaceView.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Android/SurfaceView.md -------------------------------------------------------------------------------- /Android/android屏幕适配.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [支持多种屏幕 - Android Developers](https://developer.android.com/guide/practices/screens_support.html?hl=zh-cn "支持多种屏幕 - Android Developers") 5 | -------------------------------------------------------------------------------- /Android/图形与图像处理.md: -------------------------------------------------------------------------------- 1 | # 图形与图像处理 2 | 3 | 4 | 5 | 6 | 7 | [Android图像处理-变"换"莫测的图像-慕课网](http://www.imooc.com/learn/343 "Android图像处理-变"换"莫测的图像-慕课网") 8 | 9 | [Android图像处理-打造美图秀秀从它开始-慕课网](http://www.imooc.com/learn/302 "Android图像处理-打造美图秀秀从它开始-慕课网") 10 | 11 | [Android图案解锁-慕课网](http://www.imooc.com/learn/308 "Android图案解锁-慕课网") 12 | 13 | [Android美女拼图小游戏-慕课网](http://www.imooc.com/learn/224 "Android美女拼图小游戏-慕课网") 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Android/开发平台.md: -------------------------------------------------------------------------------- 1 | # 开发平台 2 | 3 | ## Firebase 4 | [Firebase - Wikipedia](https://en.wikipedia.org/wiki/Firebase "Firebase - Wikipedia") 5 | 6 | [Firebase](https://firebase.google.com/ "Firebase") 7 | 8 | Firebase是一个移动和Web应用程序开发平台。Firebase的初始产品是一个实时数据库,它提供了一个API,允许开发人员在多个客户端之间存储和同步数据 9 | 10 | Firebase Cloud Messaging 11 | 12 | Firebase Auth 13 | 14 | 实时数据库 15 | 16 | 17 | 18 | 19 | 国内和Firebase类似的产品: 20 | 21 | - 野狗WildDog,有免费版,偏向前端。 22 | - LeanCloud,偏向后端,学习难度更大。 23 | - 百度的 clouda 24 | 25 | 26 | 27 | [==无后端开发--Firebase/Leancloud/野狗/七牛 - 简书](http://www.jianshu.com/p/6553d4f7f326 "==无后端开发--Firebase/Leancloud/野狗/七牛 - 简书") 28 | 29 | meteor是前后端统一的实时框架,End仅仅关注后端数据的实时交互。和 Meteor 相比, Firebase 应用起来简单许多。 30 | 31 | [对标Firebase,“野狗”实时后端云也在提供BaaS服务_36氪](https://36kr.com/p/5046069.html "对标Firebase,“野狗”实时后端云也在提供BaaS服务_36氪") 32 | 33 | 对标Firebase,“野狗”实时后端云也在提供BaaS服务 34 | 35 | IaaS、PaaS、SaaS,基于云计算的服务大多基于这三个层面,但是BaaS(Backend as a Service)后端云却鲜有人提起。   36 | 37 | BaaS为开发者提供整合云后端的服务。开发者无需过多研究服务器端程序,而只需调用云计算平台提供的API,使用相应SDK,就能迅速完成数据存储、账户管理、消息推送、社交网络整合等功能。 38 | 39 | 40 | [TalkingData升级移动观象台,强调大数据的落地_36氪](https://36kr.com/p/5064184.html?from=guess "TalkingData升级移动观象台,强调大数据的落地_36氪") 41 | 42 | 43 | [都想做Okta?“九州云腾”要做国内最像的追随者_36氪](https://36kr.com/p/5081976.html?from=authorlatest "都想做Okta?“九州云腾”要做国内最像的追随者_36氪") 44 | 45 | [Parse死掉,你还能用这些类似服务_移动开发前线_传送门](http://chuansong.me/n/2577480 "Parse死掉,你还能用这些类似服务_移动开发前线_传送门") 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Android/深入理解Activity与Fragment.md: -------------------------------------------------------------------------------- 1 | # 深入理解Activity与Fragment 2 | 3 | > 《疯狂Android讲义》第4章 4 | 5 | 实际上Activity对于Android的作用有点类似与Servlet对于Web应用的作用。 6 | 7 | ## 建立、配置和使用Activity 8 | 9 | ### 用LauncherActivity开发启动Activity的列表 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Android/深入理解Android系列.md: -------------------------------------------------------------------------------- 1 | # 深入理解Android系列 2 | 3 | 标签(空格分隔): Android 4 | 5 | --- 6 | 7 | 《深入理解Android》系列书籍 8 | 《深入理解Android》系列图书作者邓凡平,开设的专栏: 9 | [深入理解Android(一):Gradle详解](http://www.infoq.com/cn/articles/android-in-depth-gradle) 10 | [深入理解Android(二):Java虚拟机Dalvik](http://www.infoq.com/cn/articles/android-in-depth-dalvik) 11 | [深入理解Android(三):Xposed详解](http://www.infoq.com/cn/articles/android-in-depth-xposed) 12 | 13 | 14 | -------------------------------------------------------------------------------- /Android/简单UI组件.md: -------------------------------------------------------------------------------- 1 | # 一些简单的UI组件用法 2 | 3 | 4 | 5 | ## 通用的常见属性 6 | 7 | 8 | 9 | 10 | 11 | ## FrameLayout 12 | 13 | ### android:foreground 14 | 15 | Foreground defines the drawable to draw **over the content** and this may be a color value. 16 | 17 | ### android:foregroundGravity 18 | 19 | It is used to set the gravity of foreground. 20 | 21 | This defines the gravity to apply to the foreground drawable. Default value of gravity is fill 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | ## EditText 30 | 31 | EditText组件最重要的属性是`inputType`,该属性将其设置为指定类型的输入组件。 32 | 。。。 33 | 34 | ** 这种东西还是见 思维导图 吧 ** 35 | 36 | 37 | ## ImageView 38 | 39 | ### ScaleType 40 | 41 | `ScaleType`:决定了图片在View上显示的样子。 42 | 43 | - CENTER: 不进行任何缩放,将图片中心与ImageView中心对齐 44 | - CENTER_CROP:中心对齐;按比例缩放,直至填满ImageView 45 | - FIT_CENTER:中心对齐;按比例缩放,直至有一个方向适应ImageView 46 | - FIT_START:开始位置对齐,直至有一个方向上适应ImageView 47 | - FIT_XY:不按比例缩放;填满整个ImageView 48 | 49 | 50 | 51 | 52 | 代码设置ImageView的src: 53 | 54 | ```java 55 | setImageDrawable(Drawable drawable); 56 | setImageBitmap(Bitmap bm); 57 | setImageResource(int resId); 58 | ``` 59 | 60 | 代码设置ImageView的background: 61 | 62 | ```java 63 | setBackgroundReource(int resid) 64 | setBackground(Drawable background) 65 | setBackgroundColor(int color) 66 | //This method was deprecated in API level 16. use setBackground(Drawable) instead 67 | setBackgroundDrawable(Drawable background) 68 | ``` 69 | 70 | 属性 src 和 background 的区别: 71 | 72 | background 会根据 ImageView 组件给定的长宽进行拉伸来填满ImageView,;而 src 默认存放的是原图的大小, 不会进行拉伸(但可通过scaleType设置)。此外: scaleType 只对 src 起作用;bg 可设置透明度。 73 | 74 | 75 | 76 | 另可参考:[Android中View的各个XML属性汇总](http://www.cnblogs.com/PengLee/p/5279998.html) 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /Android/简单理解Binder.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Android/简单理解Binder.md -------------------------------------------------------------------------------- /Android/获取各种资源.md: -------------------------------------------------------------------------------- 1 | 2 | ## 获取各种资源 3 | 4 | 5 | ## Vector Asset Studio 6 | 7 | [添加多密度矢量图形 - Android Studio](https://developer.android.com/studio/write/vector-asset-studio.html#about "添加多密度矢量图形 - Android Studio") 8 | 9 | 可以选择本地文件:在 Asset Type 处选择"Local file (SVG, PSD)"。 10 | 11 | > 作为 Image Asset Studio 的替代,您还可以使用 Vector Asset Studio 创建操作栏和标签图标。矢量图片非常适合简单图标,并且可以减小您的 APK 大小。 12 | 13 | 14 | 15 | ## Image Asset Studio 16 | [使用 Image Asset Studio 创建应用图标 - Android Studio](https://developer.android.com/studio/write/image-asset-studio.html "使用 Image Asset Studio 创建应用图标 - Android Studio") 17 | 18 | Image Asset Studio 可以帮助您生成以下图标类型: 19 | 20 | - 启动器图标 21 | - 操作栏和标签图标 22 | - 通知图标 23 | 24 | 25 | 你可以导入自己的图像并针对图标类型进行调整。Image Asset Studio 支持以下文件类型:PNG(首选)、JPG(可接受)和 GIF(不鼓励)。 26 | 27 | 28 | 29 | ## 9-Patch 30 | 31 | [创建可调整大小的位图(9-Patch 文件) - Android Studio](https://developer.android.com/studio/write/draw9patch.html "创建可调整大小的位图(9-Patch 文件) - Android Studio") 32 | 33 | 34 | ## 使用Android自带的资源 35 | 36 | [如何使用Android自带的资源 - 简书](http://www.jianshu.com/p/f49a0f6f6224 "如何使用Android自带的资源 - 简书") 37 | 38 | -------------------------------------------------------------------------------- /C&C++/C算法.md: -------------------------------------------------------------------------------- 1 | 2 | 选自《数据结构基础:C语言版》 3 | 4 | 1.5 性能分析 5 | --------- 6 | 7 | 判断程序性能优劣的标准很多,至少包括如下几点: 8 | 9 | 1. 程序是否符合任务的规范说明。 10 | 2. 程序是否正确。 11 | 3. 是否有配套文档,说明程序的用法和原理。 12 | 4. 程序是否根据逻辑关系分解成能有效执行的函数。 13 | 5. 程序代码是否易读。 14 | 6. 程序是否能够高效使用主存和辅存。 15 | 7. 程序的运行时间是否令人满意。 16 | 17 | 以上最后两条判据用来评价程序的性能,可以分成两方面讨论。 18 | 19 | * 第一方面的性能估计与及其无关的空间代价和时间代价,称为**性能分析**。 20 | 21 | * 第二方面称为**性能度量**, 即获取程序在真实环境的实际运行时间。 22 | 23 | 24 | **定义** : *空间复杂度*是程序运行所需的存储空间; *时间复杂度*是程序的运行时间。 25 | 26 | 27 | ####空间复杂度 28 | 29 | 程序运行空间包括两部分: 30 | 31 | 1. **定长空间需求**:即与程序输入、输出无关的空间,包括指令空间(存储代码的空间)、简单变量的存储空间、 32 | 定长结构变量(如结构体)的存储空间、常量存储空间。 33 | 34 | 2. **变长空间的需求**:即与求解的问题实例相关的结构化变量所占空间的大小。如果是递归程序,还应加上 35 | 递归时所需工作空间的大小。 36 | 给定问题实例I,程序 P 的变长空间记为 S~p~(I) 。 S~p~(I)通常为自变量定义在 I 的特征空间之上的一个 37 | 数学函数。这些特征常常表现为关于 I 的输入、输出个数、长度、或取值。 38 | 例如,若输入是长度为 n 的的数组,则 n 是一个实例特性。如果 n 是唯一的实例特征,那么S~p~(I) 可以具体 39 | 化为S~p~(I) 。 40 | 41 | 任何程序所需空间总量是: 42 | 43 | S(P) = c + Sp(I) 44 | 45 | 其中的 c 表示定长空间需求。 46 | 47 | 分析一个程序的空间复杂度,通常仅考虑变长空间需求。 48 | 49 | **实例分析:见原书** 50 | 51 | 52 | ####1.5.2时间复杂度 53 | 54 | 程序 P 的时间开销记为 T(P) ,是**编译时间**和**运行时间**的总和。编译时长与定长空间需求类似,同样 55 | 与实例特征无关;而且,程序经检验确定其正确性之后,编译结果可不断执行。所以时间复杂度仅考虑程序 56 | 的执行时间 T~p~ 。 57 | 58 | 准确计算 T~p~ 需要详细考察编译器的工作属性,即程序源代码到目标代码的翻译过程。 59 | 60 | 。。。 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /DataBase/Linux-Oracle-11g.md: -------------------------------------------------------------------------------- 1 | # 基于UNIX和Linux的操作系统的Oracle数据库管理员参考手册 2 | 3 | 默认监听端口:1521 4 | 5 | ## 1. 安装和管理Oracle数据库 6 | 略 7 | 8 | ## 2 停止和启动Oracle软件 9 | 此章讲解了如何识别 Oracle Database 进程和如何停止(stop)和重启(restart)它们的基本信息。也描述了如何设置自动启动startup和shudown关闭。 10 | 11 | > See Also: 12 | 更多关于`srvctl`命名的信息,见[Database Administrator's Guide](http://docs.oracle.com/cd/E11882_01/server.112/e25494/toc.htm) 和 [Oracle Automatic Storage Management Administrator's Guide ](http://docs.oracle.com/cd/E11882_01/server.112/e18951/toc.htm) 。 13 | 14 | ### 2.1 Oracle重启 Restart 15 | 16 | 脚本`dbstart`和`dbshut`曾经用于自动启动和关闭数据库,启动和关闭的时候如果设置完善可同时启动和关闭监听器,oracle存储管理(Oracle ASM)以及其它一些功能。比如我使用dbstart后的这条信息: 17 | `ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener 18 | ` 19 | 这两个命令只是不建议使用,但还是可以使用的,也有大神一直在用。 20 | 21 | >注意: 22 | 关于Oracle Restart,你可以使用服务控制使用程序(srvctl),该命令用于在命令行来管理Oracle进程(数据库实例,监听,ASM实例);当然他也可以用来管理Oracle Restart配置。 23 | 另见:[Configuring Automatic Restart of an Oracle Database ](http://docs.oracle.com/cd/E11882_01/server.112/e25494/restart.htm#ADMIN12708) 24 | 25 | 26 | ### 2.2 Stoping and Starting Oracle Processes 27 | 本节将介绍如何停止和启动Oracle进程。 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | ##dbac的使用记录 40 | 打算用dbac更改数据库字符集。没有这个选项。 41 | 42 | 如果中文乱码,不能显示则:` LANG=en_US.UTF-8 dbca` 使用这种形式运行。 43 | 44 | 选项页的介绍: 45 | 46 | **select the mode in which you want your database to operate by default:** 47 | 48 | 1. dedicated server mode专用服务器模式: 49 | for each client connection the database will allocate(分配) a resource dedicated to serving only that client. Use this mode when the number of total client connections is expected(预期的) to be small or when clients will be making persistent, long-running requests to the database. 为每个客户端连接的数据库将分配一个专用于只服务客户端资源。当预计总客户端连接数要小的或使用此模式时,客户将作出持久的,长期运行的数据库请求。 50 | 2. shared server mode共享服务器模式: (适用于用户量多的时候) 51 | 只解释几个单词;simultaneously同时,efficiently有效率的,utilizing利用。 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /DataBase/Oracle常用操作.md: -------------------------------------------------------------------------------- 1 | RocBrisa01 2 | 3 | `$ORACLE_HOME/bin` 4 | 5 | - 检查监听器: 通过 netmgr 命令或 netca 配置监听器,lsnrctl 检查监听器状态 6 | 7 | 8 | 9 | 10 | 11 | 使用sqlplus进行连接 : 12 | 13 | 1. 在启动sqlplus时不出现登录界面: `sqlplus /nolog` 14 | 15 | 2. 使用connect 连接到数据库实例: 16 | 17 | ``` 18 | conn username [as sysdba] -- 本地连接 19 | conn / [as sysdba] -- 本地连接(系统身份认证) 20 | conn username@网络连接标识符 -- 远程连接(需配置了网络连接标识符) 21 | conn username@host:port:server 22 | conn username@host:port -- 远程连接,这个简便一点 23 | ``` 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /DataBase/assets/1540642066924.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1540642066924.png -------------------------------------------------------------------------------- /DataBase/assets/1540643204975.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1540643204975.png -------------------------------------------------------------------------------- /DataBase/assets/1540645518198.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1540645518198.png -------------------------------------------------------------------------------- /DataBase/assets/1541324589283.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1541324589283.png -------------------------------------------------------------------------------- /DataBase/assets/1541328897023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1541328897023.png -------------------------------------------------------------------------------- /DataBase/assets/1541330443599.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1541330443599.png -------------------------------------------------------------------------------- /DataBase/assets/1541334279329.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1541334279329.png -------------------------------------------------------------------------------- /DataBase/assets/1541338691175.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1541338691175.png -------------------------------------------------------------------------------- /DataBase/assets/1541343177701.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1541343177701.png -------------------------------------------------------------------------------- /DataBase/assets/1541345568342.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1541345568342.png -------------------------------------------------------------------------------- /DataBase/assets/1541345751400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/DataBase/assets/1541345751400.png -------------------------------------------------------------------------------- /DataBase/c.my.cnf: -------------------------------------------------------------------------------- 1 | [client] 2 | default-character-set=utf8 3 | 4 | [mysql] 5 | default-character-set=utf8 6 | 7 | [mysqld] 8 | #collation-server=utf8_general_ci 9 | #character-set-database=utf8 10 | character-set-server=utf8 11 | 12 | -------------------------------------------------------------------------------- /DataBase/jdbc驱动.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ## MySQL 6 | 7 | 8 | 9 | ```xml 10 | 11 | com.mysql.cj.jdbc.Driver 12 | jdbc:mysql://127.0.0.1:3306/itheima_web28 13 | ``` 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ## Oracle 24 | 25 | 26 | 27 | 28 | 29 | ```xml 30 | 31 | 32 | 33 | 34 | 35 | ``` 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /DataBase/my.cnf: -------------------------------------------------------------------------------- 1 | # For advice on how to change settings please see 2 | # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html 3 | # 本配置文件位于 /etc/mycnf 4 | 5 | [mysqld] 6 | # 7 | # Remove leading # and set to the amount of RAM for the most important data 8 | # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. 9 | # innodb_buffer_pool_size = 128M 10 | # 11 | # Remove leading # to turn on a very important data integrity option: logging 12 | # changes to the binary log between backups. 13 | # log_bin 14 | # 15 | # Remove leading # to set options mainly useful for reporting servers. 16 | # The server defaults are faster for transactions and fast SELECTs. 17 | # Adjust sizes as needed, experiment to find the optimal values. 18 | # join_buffer_size = 128M 19 | # sort_buffer_size = 2M 20 | # read_rnd_buffer_size = 2M 21 | datadir=/var/lib/mysql 22 | socket=/var/lib/mysql/mysql.sock 23 | 24 | # Disabling symbolic-links is recommended to prevent assorted security risks 25 | symbolic-links=0 26 | 27 | log-error=/var/log/mysqld.log 28 | pid-file=/var/run/mysqld/mysqld.pid 29 | 30 | [mysqld] 31 | character-set-server=utf8 32 | 33 | -------------------------------------------------------------------------------- /DataBase/慕课:数据库和sql优化.md: -------------------------------------------------------------------------------- 1 | # SQL语句优化 2 | 3 | 直接删除 4 | 5 | 6 | 7 | 少用update,更新会创建锁 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | # 数据库优化 16 | 17 | 18 | 19 | ## 使用MyCat进行分片 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ## 读写分离 28 | 29 | 30 | 31 | MySql主从分离实现 32 | 33 | 34 | 35 | - 数据库层面的主从配置实现(略,见慕课视频) 36 | - 代码层面的读写分离实现(无需改动现有代码) 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /DataBase/数据库基础.md: -------------------------------------------------------------------------------- 1 | 3、[SQL 命名约定](https://launchbylunch.com/posts/2014/Feb/16/sql-naming-conventions/) 2 | 3 | 数据库的表和字段怎么起名?这也是一门学问。下面是数据库的一些命名原则。 4 | 5 | > - **小写**。标识符应该全部用小写字母来书写,使用`first_name`,不是`"First_Name"或者"FirstName"`。 6 | > - **数据类型不是名称**。避免使用仅为数据类型的名字(如`text`或`timestamp`)。 7 | > - **强调单独的单词**。由多个单词组成的对象名称应该用下划线分隔,例如使用`word_count`或`team_member_id`,而不是`wordcount`或`wordCount`。 8 | > - **完整的单词,而不是缩写**。例如使用`middle_name`,不是`mid_nm`。 9 | > - **使用常用缩写**。对于几个长词而言,缩写词比词本身更为常见,比如`i18n`和`l10n`,这时使用缩写。 10 | 11 | 12 | 13 | 14 | 15 | ## 多表查询 16 | 17 | 18 | 19 | 3个表的嵌套子查询: 20 | 21 | 这里 role 与 user 之间是多对多关系,所以需要一个中间关系表 user_role 。 22 | 23 | ```sql 24 | SELECT 25 | r.id AS rid, 26 | r.role_name, 27 | r.role_desc, 28 | u.* 29 | FROM role r 30 | LEFT JOIN user_role ur ON r.ID = ur.rid 31 | LEFT JOIN USER u ON u.id = ur.uid; 32 | ``` 33 | 34 | 这是mybatis中的语句,关键是 select 中的内容,观察上面的 select 结果是 role 中包含一个userList 35 | 36 | 37 | 38 | 39 | 40 | 5个表嵌套子查询: 41 | 42 | ```sql 43 | select * 44 | from sys_user user2 45 | inner join sys_user_role sur on user2.id = sur.userId 46 | inner join sys_role sr on sur.roleid = sr.id 47 | inner join sys_role_permission srp on sr.id = srp.roleId 48 | inner join sys_permission permission2 on srp.permissionId = permission2.id; 49 | ``` 50 | 51 | 52 | 53 | 54 | 55 | 连接条件可以为多个: 56 | 57 | ```sql 58 | select * from sys_user_role sur,sys_role sr where sur.userid=sr.id and id=2 59 | ``` 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | ## Oracle 68 | 69 | 70 | 71 | Oracle中同时插入多行数据:(Oracle中不能像mysql中那样插入多行数据) 72 | 73 | 74 | 75 | ```sql 76 | INSERT ALL 77 | INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3') 78 | INTO t (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3') 79 | INTO t (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3') 80 | . 81 | . 82 | . 83 | SELECT 1 FROM DUAL; 84 | ``` 85 | 86 | 87 | 88 | 89 | 90 | ## 索引 91 | 92 | 93 | 94 | 当使用 like , is not, 等都是无法使用 数据库索引。 95 | 96 | -------------------------------------------------------------------------------- /Java Web/EL表达式语言-《TaJWdt》.md: -------------------------------------------------------------------------------- 1 | # EL表达式语言-《TaJWdt》 2 | 3 | 标签(空格分隔): JavaEE 4 | 5 | --- 6 | 7 | > 《Tomcat与Java Web开发技术详解(第2版)》.(孙卫琴).pdf 8 | 《Tomcat and Java Web development technology》本书翻译的英文名,将本书简称为 -《TaJWdt》 9 | 10 | 11 | EL(Expression Language)表达式语言是在JSP 2.0版本中引入的新特性,它用于JSP文件中的数据访问。这种表达式语言能简化JSP文件中数据访问的代码,可用来代替传统的基于`<%=`和`%>`形式的Java表达式,以及部分基于`<%`和`%>`形式的Java程序片段。 12 | 13 | 14 | ## 基本语法 15 | EL表达式并不是一种通用的编程语言,它仅仅是一种数据访问语言。 16 | 17 | EL表达式的基本形式为:`${var}`,如果在JSP文件的模板文本(HTML)中使用EL表达式,那么表达式的值会输出到网页上。 18 | 19 | EL表达式和Java表达式一样,既可以直接插入到JSP文件的模板文本中,也可以作为JSP标签的属性的值。例如: 20 | ``` 21 | 22 | 23 | <%-- 把myPageBean的count属性的值加 1 --%> 24 | 25 | 26 | <%-- 打印myPageBean的count属性 --%> 27 | Current count value is : ${myPageBean.count} 28 | ``` 29 | 30 | 31 | ### 访问对象的属性及数组的元素 32 | EL表达式语言可以使用点号运算符`.`来访问对象的属性。也可使用方括号运算符`[]`来访问对象的属性(包含特殊字符时必须使用`[]`)。 33 | 例如:`${customer["name"]}`和`${customer.name}`是等价的。 34 | 35 | 方括号还可用来访问数组中的元素,例如`${customers[0]}`表示访问customers数组中的第一个元素。 36 | 37 | 38 | ### EL运算符 39 | EL语言支持算术运算符、关系运算符和逻辑运算符等。 40 | 41 | 42 | |运算符类型| 范例 | 结果 | 43 | |-------|-------| -------| 44 | |算术运算符| `${16+5}` | 21 | 45 | |关系运算符|`${16==5}`|false| 46 | |逻辑运算符|`${16>5 && 16<18}`|true| 47 | |empty运算符|`${empty var}`|如果变量var为null,就返回true| 48 | |empty运算符|`${! empty var}`|如果变量var不为null,就返回true| 49 | |条件运算符|`${16>5?16:5}`|16| 50 | 51 | 52 | ### 隐含对象 53 | EL语言定义了11个隐含对象,它们**都是** **`java.util.Map`** 类型,网页制作者可以通过它们来便捷的访问Web应用中的特定数据。 54 | 55 | 可以分为以下4种: 56 | 57 | - 表示HTTP请求中的特定数据,包括header、headerValues、param、paramValues和cookie 58 | - 表示特定范围,包括pageScope、requestScope、sessionScope、applicationScope。表示把某范围内的属性名和属性值进行**映射**。 59 | - 表示PageContext对象,为pageContext 60 | - 表示Web应用的初始化参数集合,为 initParam 61 | 62 | 具体映射方式见书。 63 | 64 | > 对于`${header["user-agent"]}`,由于在"user-agent"中包含特殊字符"-"所以此时必须采用"[]"运算符来访问它,而不能使用"."运算符。 65 | 66 | 注意EL表达式中无法直接访问JSP文件中的隐含对象。例如无法使用`${request.requestURL}`,正确的表达式应为`${pageContext.request.requestURL}`。 67 | 68 | 69 | ### 命名变量 70 | EL表达式中的变量称为命名变量,比如`${username}`,它不是JSP文件中的局部变量或实例变量,而是存放在特定范围内的属性,命名变量的名字和属性名对应。 71 | 72 | 未完。。。 73 | 74 | 只有看书中示例才可以理解 75 | 76 | 77 | 78 | ## 定义和使用EL函数 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /Java Web/EhCache缓存.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ehcache 使用起来很简单,是一个 `key/value` 容器,和 Map 很像,只不过功能比 Map 丰富,能够限定缓存中元素的个数,自动删除超时的元素,把元素持久化到硬盘等 6 | 7 | 8 | 9 | EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点。它是Hibernate中的默认缓存框架。 10 | 11 | 12 | 13 | [Spring整合Ehcache管理缓存 - 静默虚空 - 博客园](http://www.cnblogs.com/jingmoxukong/p/5975994.html "Spring整合Ehcache管理缓存 - 静默虚空 - 博客园") 14 | 15 | 16 | 17 | EhCache 与 Redis 对比。 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Java Web/FKJava.md: -------------------------------------------------------------------------------- 1 | 《疯狂Java讲义》学习笔记 2 | ===================================== 3 | 4 | ## 第8章:Java集合 5 | 6 | 7 | ### 8.1 Java 集合概述 8 | 9 | Java提供了集合类,所有的集合类都位于`java.util`包下。Java集合类主要由两个接口派生而出:Collection 和 10 | Map,他们是Java集合框架的根接口,这两个接口又包含了子接口或实现类。 11 | 12 | Set和List接口是Collection接口派生的两个子接口,分别代表了无序集合和有序集合; 13 | Queue是Java提供的队列实现。 14 | 15 | List集合中的元素,可以直接根据元素的索引来访问; 16 | Set集合中的元素,只能根据元素本身来访问(这也是Set集合里的元素不允许重复的原因)。 17 | 18 | Collection接口定义了如下操作集合元素的方法: 19 | 20 | | 方法 | 描述 | 21 | |------------|------------------------| 22 | |boolean add(Object o) | 向集合添加元素,成功返回true| 23 | | 24 | -------------------------------------------------------------------------------- /Java Web/JDK工具.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [每个Java开发者都应该知道的5个JDK工具 - CSDN博客](https://blog.csdn.net/tswc1990/article/details/41344635 "每个Java开发者都应该知道的5个JDK工具 - CSDN博客") 4 | 5 | 6 | 7 | ## Java Mission Control(JMC) 8 | 9 | [Java 性能分析工具 , 第 3 部分: Java Mission Control - aurain - 博客园](https://www.cnblogs.com/aurain/p/6178671.html "Java 性能分析工具 , 第 3 部分: Java Mission Control - aurain - 博客园") 10 | 11 | 12 | 13 | JMC 是源自 JRockit JVM 的一套监控和管理工具,Oracle 在 2013 年发布 JAVA 7u40(Java 7 Update 40) 时**将其包含在 JDK 中,用户不再需要额外下载**。该工具主要由三个组件构成:Java 进程浏览器、JMX 控制台和 Java Flight 记录器。 14 | 15 | - Java 进程浏览器允许用户列出并连接到本地和远程运行的 Java 应用。它能够使用 Java 发现协议(JDP)自动地发现本地和远程运行的 Java 进程。 16 | - JMX 控制台能够通过 JMX 接口管理并监控 JDK 。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息。 17 | - Java Flight 记录器提供了一种从操作系统层、JVM 和 Java 应用程序层收集事件的方式。收集的事件包括线程延时事件,例如休眠(sleep)、等待(wait)、锁竞争、I/O、GC 和方法分析。 18 | 19 | ![img](https://static.oschina.net/uploads/space/2018/0506/204725_YmLu_2896879.png) 20 | 21 | Java Mission Control(JMC)的源代码已正式开源。源码地址:http://hg.openjdk.java.net/jmc 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Java Web/Java IO.md: -------------------------------------------------------------------------------- 1 | # Java IO 2 | 3 | [简介 - Java NIO简明教程](https://java-nio.avenwu.net/ "简介 - Java NIO简明教程") -------------------------------------------------------------------------------- /Java Web/Java-TODO-List.md: -------------------------------------------------------------------------------- 1 | - [ ] Java基础补充: 2 | - [ ] 字符串, 3 | - [ ] 数组, 4 | - [ ] 垃圾处理 5 | - [ ] Java NIO 6 | - [ ] Integer.valueOf(int) ,导致 两个Integer为 1000的值的比较时结果为false 7 | - [ ] 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 疑难知识点 18 | 19 | 20 | 21 | - [Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别 - CSDN博客](https://blog.csdn.net/suifeng3051/article/details/52101411 "Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别 - CSDN博客") 该文章评论说文中有错误,也确实有误: 22 | 23 | ```java 24 | System.out.println(Integer.valueOf(5) == Integer.valueOf(5)); //true 25 | System.out.println(Integer.valueOf(500) == Integer.valueOf(500)); //false 26 | ``` 27 | 28 | 注意:`Integer.valueOf(int)`和`Integer.valueOf(String)`的区别。 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Java Web/JavaEE颠覆者:Spring Boot.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [JavaEE颠覆者:Spring Boot 全面讲解 _视频课程_菜鸟窝](https://www.cniao5.com/course/lessons/10156 "JavaEE颠覆者:Spring Boot 全面讲解 _视频课程_菜鸟窝") 4 | 5 | 6 | 7 | Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 8 | 9 | -------------------------------------------------------------------------------- /Java Web/Java对象持久化技术概述.md: -------------------------------------------------------------------------------- 1 | # Java对象持久化技术概述 2 | 3 | 标签(空格分隔): JavaEE 4 | 5 | --- 6 | 7 | 第二章:Java对象持久化技术概述 8 | 9 | 对象持久化的几种模式: 10 | 11 | - 在业务逻辑层直接通过JDBC API来持久化实体域对象,业务逻辑和数据访问耦合 12 | - 主动域对象模式 13 | - ORM模式 14 | - JDO模式 15 | - CMP模式 16 | 17 | 18 | ## 直接通过JDBC API来持久化实体域对象 19 | java.sql包提供了JDBC API。 20 | 21 | 示例: 22 | 一般可自行提供如下一系列的负责持久化Customer对象的一系列方法: 23 | 24 | - saveCustomer() 25 | - updateCustomer() 26 | - deleteCustomer() 27 | - loadCustomer():根据特定的OID,把一个Customer对象从数据库加载到内存中 28 | - findCustomerByName():根据特定的客户姓名,把符合查询条件的Customer域对象从数据库加载到内存中 29 | 30 | 31 | 使用JDBC API的缺点之一: 32 | 33 | - 在程序代码中嵌入面向关系的SQL语句,使开发人员不能完全运用面向对象的思维来编写程序。例如:当开发人员把一个Customer对象及关联的两个Order对象保存到数据库中时,必须了解存放Customer和Order对象的表分别为Customer表和Orders表,此外还要了解表的具体结构及参照。 34 | 35 | 36 | 37 | ## ORM简介 38 | 对象-关系映射(ORM,即Object-Relation Mapping)模式指在单个组件中负责所有实体域对象的持久化,封装数据访问细节。 39 | 40 | ORM提供了实现持久化层的另一种模式,它采用映射元数据(Mapping Meta Data)来描述对象-关系的映射细节,使得ORM中间件能在任何一个Java应用的业务逻辑层和数据库层之间充当桥梁。 41 | 42 | ![ORM充当业务逻辑层和数据库层之间的桥梁.png](https://ooo.0o0.ooo/2017/02/26/58b2f3c894014.png) 43 | 44 | 45 | 对象-关系的基本映射: 46 | 47 | | 面向对象概念 | 面向关系概念 | 48 | |-------------- |---------------- | 49 | |类 | 表| 50 | |对象|表的行(即记录)| 51 | |属性|表的列(即字段)| 52 | 53 | 54 | 但是域模型与关系数据模型之间还存在许多不匹配之处。比如有时需要将多个类都映射到同一个表中。 55 | 此外,域模型中类之间的多对多关联关系和继承关系都不能直接在关系数据模型中找到对应的等价物。 56 | 在关系数据模型中,表之间只存在外键参照关系,有点类似域模型中多对一或一对一的映射关系。 57 | 58 | 59 | 60 | **ORM中间件的基本使用方法** 61 | 62 | 如果希望把ORM软件集成到自己的Java应用中,用户首先要提供对象-关系映射文件(元数据)。不同的ORM软件的元数据的语法不一样。 63 | 64 | 65 | 在JavaEE 5.0中也引入了ORM框架,它以**JPA**(Java Persistence API,Java持久化接口)作为ORM框架的标准API。 66 | 67 | 68 | > JavaEE 5.0版废除了J2EE 1.4中的重量级的实体EJB,允许应用通过JPA直接对轻量级的基于JavaBean形式的实体域对象进行持久化。 69 | 70 | > 把基于JavaBean形式的实体域对象称为POJO。POJO(Plain Old Java Object)的意思是又普通又古老的Java对象,之所以称它古老,是因为**相对于基于CMP的实体EJB**显得很古老。 71 | 随着各种ORM映射工具的成熟,POJO又重现光彩,它和基于CMP的实体EJB相比,既简单,又有很高的可移植性;因此联合使用ORM映射工具和POJO,已经成为非常受欢迎的并且可用于取代CMP的持久化方案。 72 | > 73 | 所以在使用Hibernate时的持久化类为JavaBean形式。 74 | 75 | 76 | 77 | ## 实体域对象的其他持久化模式 78 | 79 | - 主动域对象:它是实体域对象的一种形式,在它的实现中封装了关系数据模型和数据访问细节。 80 | - JDO模式(Java Data Object):它支持把对象持久化到任意一种存储系统中。 81 | - CMP模式(Container-managed Persistence(持久化)):由EJB容器管理实体EJB的持久化。 82 | 83 | 84 | 85 | ## Hibernate API简介 86 | 见书 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /Java Web/Java框架、库.md: -------------------------------------------------------------------------------- 1 | # Java框架、库 2 | 3 | 标签(空格分隔): JavaEE 4 | 5 | --- 6 | 7 | ## Google Guava 8 | Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库 9 | 10 | 11 | 12 | ## Spring 13 | 14 | 15 | 16 | ## Hibernate 17 | 18 | 19 | 20 | 21 | ## MyBatis 22 | 23 | 24 | 25 | ## Redis 26 | [百度百科:Redis](http://baike.baidu.com/item/Redis?sefr=enterbtn) 27 | [Redis 教程](http://www.runoob.com/redis/redis-tutorial.html "翻译Tutorialspoint") 28 | [Redis教程](http://www.yiibai.com/redis/) 29 | [Redis中文网](http://www.redis.cn/) 30 | 31 | 32 | 33 | ## Nutz 34 | 国内的一个小框架,可用其来了解Web开发中会涉及哪些东西? 35 | [Nutz-book Nutz烹调向导](http://nutzbook.wendal.net/) 36 | 37 | 38 | 39 | 40 | 41 | ## 现成的开源项目 42 | 43 | 下面的链接中介绍了多个现成的 Spring Boot 语言开源项目,涵盖了企业级系统框架、文件文档系统、秒杀系统、微服务化系统、后台管理系统等各个方面 44 | 45 | [快速上手 Spring Boot 看这些就够了!- 开源中国](https://mp.weixin.qq.com/s?__biz=MjM5NzM0MjcyMQ==&mid=2650083196&idx=3&sn=0e5ea043003cfe45396a0e69e9ebe33e&chksm=bedad41289ad5d04c679226a0699fbe9dd1c65ac53343ec0322ee75d152bc433e0e90afc302e&scene=0#rd) 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Java Web/Java泛型.md: -------------------------------------------------------------------------------- 1 | # Java泛型 2 | 3 | 4 | 泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器保证类型的正确性。 5 | 6 | 使用泛型的主要优点是能够在编译时而不是在运行时检测错误。 7 | 8 | 9 | 10 | 11 | 12 | 13 | 泛型类型必须是引用类型,不能是基本类型。 14 | 15 | 16 | 17 | ## 通配泛型类型 18 | 19 | Integer是Number的子类型,但是``GenericStack``并不是``GenericStack``的子类型;所以在某些情况下就会有限制,可以使用通配泛型类型来**放宽限制**。 20 | 21 | 22 | 23 | ## 消除泛型 24 | 25 | 并不存在泛型类;不会生成新的class文件。 26 | 27 | 实际上,泛型对其所有可能的类型参数,都具有同样的行为,从而可以把相同的类当成许多不同的类来处理。与此完全一致的是,类的静态变量和方法在所有的实例间共享,**所以在静态方法、静态初始化块或静态变量的声明和初始化中不允许使用类型形参**(不能将其限制为某种特定类型)。 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Java Web/Mock测试框架Mockito.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [Mock测试框架(Mockito为例) - CSDN博客](https://blog.csdn.net/liminzhi87/article/details/80623329 "Mock测试框架(Mockito为例) - CSDN博客") 4 | 5 | [Mockito:一个强大的开源Java模拟测试框架 - 资源 - 伯乐在线](http://hao.jobbole.com/mockito/ "Mockito:一个强大的开源Java模拟测试框架 - 资源 - 伯乐在线") 6 | 7 | [Mockito教程 - 明-Ming - 博客园](http://www.cnblogs.com/Ming8006/p/6297333.html "Mockito教程 - 明-Ming - 博客园") 推荐 8 | 9 | 10 | 11 | ## 添加依赖 12 | 13 | 14 | 15 | 添加maven依赖: 16 | 17 | 18 | 19 | 方式一:直接使用 mockito-all,但版本在15年后停更了,但网上很多教程是基于此版本。 20 | 21 | ```xml 22 | 23 | 24 | org.mockito 25 | mockito-all 26 | 1.10.19 27 | test 28 | 29 | ``` 30 | 31 | 32 | 33 | 方式二:使用Mockito Core,但有多个依赖,没有教程。 34 | 35 | ```xml 36 | 37 | 38 | org.mockito 39 | mockito-core 40 | 2.21.0 41 | test 42 | 43 | 44 | 45 | 46 | net.bytebuddy 47 | byte-buddy 48 | 1.8.17 49 | 50 | 51 | 52 | 53 | net.bytebuddy 54 | byte-buddy-agent 55 | 1.8.17 56 | test 57 | 58 | 59 | 60 | 61 | org.objenesis 62 | objenesis 63 | 2.6 64 | test 65 | 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | > Spring实战4,里面的mockito =1.9.5 还依赖: 76 | > 77 | > ```xml 78 | > 79 | > 80 | > org.hamcrest 81 | > hamcrest-core 82 | > 1.3 83 | > test 84 | > 85 | > ``` 86 | > 87 | > 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /Java Web/MyBatis.md: -------------------------------------------------------------------------------- 1 | # MyBatis 2 | 3 | 标签(空格分隔): JavaEE 4 | 5 | --- 6 | 7 | 8 | 9 | 10 | > 这两类文件的叫法: 11 | > 12 | > sqlMapConfig.xml文件:映射**配置**文件 13 | > 14 | > accountDao.xml 文件: 映射文件 15 | 16 | 17 | 18 | 19 | 20 | 官网: 21 | 22 | [【深入浅出MyBatis系列一】MyBatis入门](https://my.oschina.net/xianggao/blog/548873) 23 | [麦子学院:Java Web进阶-Mybatis](http://www.maiziedu.com/course/357/) 24 | 25 | 26 | [麦子学院:Java Web开发](http://www.maiziedu.com/course/java/) 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Java Web/SLF4J日志抽象层.md: -------------------------------------------------------------------------------- 1 | # SLF4J日志 2 | 3 | SLF4J(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层( [abstraction layer](http://javarevisited.blogspot.com/2010/10/abstraction-in-java.html)),它允许你在后台使用任意一个日志类库。 4 | 5 | 6 | 7 | SLF4J使你的代码独立于任意一个特定的日志API。 8 | 9 | 10 | 11 | 12 | 13 | [java日志框架log4j详细配置及与slf4j联合使用教程 - ywlaker - 博客园](https://www.cnblogs.com/ywlaker/p/6124067.html "java日志框架log4j详细配置及与slf4j联合使用教程 - ywlaker - 博客园") 14 | 15 | [为什么要使用SLF4J而不是Log4J - ImportNew](http://www.importnew.com/7450.html "为什么要使用SLF4J而不是Log4J - ImportNew") 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Java Web/Servlet.md: -------------------------------------------------------------------------------- 1 | resp:相关原理 2 | 3 | respnse.getWriter() 的作用。 4 | 5 | 6 | 7 | 还原各种响应状态码 8 | 9 | 10 | 11 | 5个常见的响应状态码: 12 | 13 | 200 14 | 15 | - 304 使用缓存 16 | 17 | 18 | 19 | 20 | 21 | - 1XX 信息 22 | - 2XX 成功 23 | - 3XX 重定向 24 | - 4XX 客户端错误 25 | - 5XX 服务器错误 26 | 27 | 28 | 29 | 30 | 31 | [Http status code 状态码 - CSDN博客](https://blog.csdn.net/irwin_chen/article/details/9330505 "Http status code 状态码 - CSDN博客") 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Java Web/Spring Boot.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Spring Boot 提供了命令行工具,可以为Spring应用快速建立原型。可以参照[安装Spring Boot CLI](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started-installing-the-cli)使用命令行。 8 | 9 | 但是推荐使用依赖管理工具(Maven、Gradle等)来使用 spring boot 10 | 11 | 12 | 13 | > 在Windows中可以使用下面的方法安装 Spring Boot CLI 14 | > 15 | > ``` 16 | > scoop bucket add extras 17 | > scoop install springboot 18 | > ``` 19 | 20 | 21 | 22 | 23 | 24 | Spring Boot不是一个web项目,它会被打包成一个jar包,通过java命令(带jar选项)即可运行,其入口是启动类,运行之后他会自动启动内部的web服务器。 25 | 26 | 27 | 28 | 29 | 30 | > 31 | > 32 | > [bz51/SpringBoot-Dubbo-Docker-Jenkins: 基于SpringBoot+Dubbo的微服务框架(借助Docker+Jenkins实现自动化、容器化部署)](https://github.com/bz51/SpringBoot-Dubbo-Docker-Jenkins "bz51/SpringBoot-Dubbo-Docker-Jenkins: 基于SpringBoot+Dubbo的微服务框架(借助Docker+Jenkins实现自动化、容器化部署)") -------------------------------------------------------------------------------- /Java Web/Spring MVC mock测试.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 注意:使用mock测试需要引入spring-test包 4 | 5 | 6 | 7 | [Spring Framework Reference Documentation](https://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#spring-mvc-test-framework "Spring Framework Reference Documentation") 8 | 9 | [12. Spring MVC Test Integration](https://docs.spring.io/spring-security/site/docs/current/reference/html/test-mockmvc.html "12. Spring MVC Test Integration") 10 | 11 | [Spring MVC如何测试Controller(使用springmvc mock测试) - java_lover - 博客园](http://www.cnblogs.com/haha12/p/srpingmvc-mock-test.html "Spring MVC如何测试Controller(使用springmvc mock测试) - java_lover - 博客园") 12 | 13 | [使用MockMvc测试Spring mvc Controller - CSDN博客](https://blog.csdn.net/zhang289202241/article/details/62042842 "使用MockMvc测试Spring mvc Controller - CSDN博客") 14 | 15 | [测试Spring MVC应用-spring,springboot,spring-mvc,java 相关文章-天码营](https://www.tianmaying.com/tutorial/spring-mvc-testing "测试Spring MVC应用-spring,springboot,spring-mvc,java 相关文章-天码营") 16 | 17 | -------------------------------------------------------------------------------- /Java Web/Swagger.md: -------------------------------------------------------------------------------- 1 | # Swagger 2 | 3 | 4 | 5 | 6 | 7 | 百度网盘》慕课网》后端》慕课网理财系统Spring boot 》第4章 Swagger 8 | 9 | 10 | 11 | 12 | 13 | ## Swagger 14 | 15 | [使用 Swagger 文档化和定义 RESTful API](http://www.ibm.com/developerworks/cn/web/wa-use-swagger-to-document-and-define-restful-apis/index.html "使用 Swagger 文档化和定义 RESTful API") 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Java Web/assets/Dubbo核心配置.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Java Web/assets/Dubbo核心配置.png -------------------------------------------------------------------------------- /Java Web/assets/Dubbo核心配置关系图.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Java Web/assets/Dubbo核心配置关系图.jpg -------------------------------------------------------------------------------- /Java Web/assets/Dubbo节点角色.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Java Web/assets/Dubbo节点角色.png -------------------------------------------------------------------------------- /Java Web/assets/JVM体系结构.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Java Web/assets/JVM体系结构.jpg -------------------------------------------------------------------------------- /Java Web/assets/JVM运行时数据区域.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Java Web/assets/JVM运行时数据区域.jpg -------------------------------------------------------------------------------- /Java Web/assets/bean装载到spring应用上下文中的典型生命过程.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Java Web/assets/bean装载到spring应用上下文中的典型生命过程.png -------------------------------------------------------------------------------- /Java Web/assets/dubbo-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Java Web/assets/dubbo-architecture.jpg -------------------------------------------------------------------------------- /Java Web/在Web中访问EJB组件-《TaJWdt》.md: -------------------------------------------------------------------------------- 1 | # 在Web中访问EJB组件-《Tomcat与Java Web开发技术详解(第2版)》 2 | 3 | 4 | 5 | > 《Tomcat与Java Web开发技术详解(第2版)》.(孙卫琴) 6 | 7 | 8 | 9 | 10 | ## JavaEE体系结构简介 11 | JavaEE:Java Platform,Enterprise Edition技术**提供了**以组件为基础来设计、开发、组装和发布企业应用的**方法**,它能够有效降低开发软件的成本,并且提高开发速度。JavaEE平台提供了多层次的分布式的应用模型,其应用逻辑根据不同的功能由不同的组件来实现。一个JavaEE应用由多种组件组合而成,并且这些组件安装在不同的机器上。 12 | 13 | 14 | 15 | JavaEE 是一种多层次的分布式的软件体系结构,其业务逻辑由EJB组件来实现。 16 | 17 | > JavaEE最初叫J2EE,后来SUN公司将它更名为JavaEE 18 | 19 | 20 | 21 | 22 | 23 | 一个多层次的JavaEE应用结构,包含如下4个层次: 24 | 25 | - 客户层:运行在客户机器上。客户层可以是**普通的应用程序**,直接访问业务层的EJB组件;也可是**浏览器程序**,访问Web层的JSP和Servlet组件。 26 | - Web层:运行在JavaEE服务器上。**Web层的组件主要包含JSP和Servlet**,用于生成HTML页面。Web层的组件会访问业务层的EJB组件。 27 | - 业务层: 运行在JavaEE服务器上。主要组件为EJB,负责实现业务逻辑 28 | - Enterprise Information System(EIS)层:运行在数据库服务器上,用于存储业务数据 29 | 30 | 31 | 32 | 33 | > [JavaEE体系结构](http://blog.csdn.net/l2show/article/details/7358282) JavaEE只是一组以服务器为中心的企业级应用的一个规范,用于规范化和标准化以Java为开发语言的企业级软件的开发,部署,管理等。 34 | 35 | >JavaEE的规范结构: ![](http://hi.csdn.net/attachment/201203/15/0_1331810827AhcE.gif) 36 | 37 | > With the Java Platform, Enterprise Edition (Java EE), development of Java enterprise applications has never been easier or faster. The aim of the Java EE platform is to provide developers with a powerful set of APIs while shortening development time, reducing application complexity, and improving application performance. 38 | 39 | > The Java EE platform is developed through the Java Community Process (JCP), which is responsible for all Java technologies. Expert groups, composed of interested parties, have created Java Specification Requests (JSRs) to define the various Java EE technologies. The work of the Java Community under the JCP program helps to ensure Java technology’s standard of stability and cross-platform compatibility. 40 | 41 | 42 | 43 | JavaEE服务器也称为应用服务器。 44 | Enterprise Java Bean(简称EJB) 45 | 46 | 47 | EJB组件分为两种类型: 48 | 49 | - 会话Bean:实现会话中的业务逻辑 50 | > - 有状态会话Bean:该Bean实例始终与一个特定的客户关联,它的实例变量可以代表特定客户的状态。 51 | > - 无状态会话Bean: 52 | 53 | - 实体Bean:实现一个业务实体 54 | 55 | 56 | -------------------------------------------------------------------------------- /Java Web/性能监控和优化.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | > 另还需补充JVM调优工具 4 | 5 | 6 | 7 | - [性能指标有哪些](http://www.funtl.com/2018/04/11/interview/Java-%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8-%E6%80%A7%E8%83%BD%E6%8C%87%E6%A0%87%E6%9C%89%E5%93%AA%E4%BA%9B/) 8 | - [如何发现性能瓶颈](http://www.funtl.com/2018/04/11/interview/Java-%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8-%E5%A6%82%E4%BD%95%E5%8F%91%E7%8E%B0%E6%80%A7%E8%83%BD%E7%93%B6%E9%A2%88/) 9 | - [性能调优的常见手段](http://www.funtl.com/2018/04/11/interview/Java-%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8-%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E7%9A%84%E5%B8%B8%E8%A7%81%E6%89%8B%E6%AE%B5/) 10 | - 说说你在项目中如何进行性能调优 11 | 12 | 13 | 14 | 15 | 16 | ## 相关工具 17 | 18 | 19 | 20 | ### Java Melody 21 | 22 | 用于监控, 23 | 24 | JavaMelody用于对Java应用或者应用服务器的QA以及开发环境的监控。它并不是一个模拟请求类似JMeter的压力测试工具,而是一个衡量并且计算在应用上的操作信息的工具,也就是说,**它只负责对行为进行监控,而不负责触发操作**。JavaMelody基于请求统计生成模拟图表,并为我们的应用程序在QA或者开发上提供帮助 25 | 26 | 27 | 28 | ### Apache JMeter 29 | 30 | 用于压力测试 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | > 十次方项目中也讲到了几个(现代化的)工具 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Java Web/慕课网:kaptcha实现验证码.md: -------------------------------------------------------------------------------- 1 | 是一个小众,久未更新的项目 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Java Web/慕课网:对关键配置信息进行DES加密.md: -------------------------------------------------------------------------------- 1 | 比如数据库配置文件中的用户和密码 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Java Web/模板引擎.md: -------------------------------------------------------------------------------- 1 | # 模板引擎 2 | 3 | 4 | 5 | Thymeleaf模板引擎:新一代Java模板引擎。(spring boot相关书籍介绍的都是这个模板引擎) 6 | 7 | 8 | 9 | - [Thymeleaf](https://www.thymeleaf.org/ "Thymeleaf") 10 | 11 | - [Apache Velocity Engine - User Guide](http://velocity.apache.org/engine/devel/user-guide.html "Apache Velocity Engine - User Guide") 12 | - [FreeMarker Java Template Engine](https://freemarker.apache.org/index.html "FreeMarker Java Template Engine") ([什么是 FreeMarker? - FreeMarker 中文官方参考手册](http://freemarker.foofun.cn/ "什么是 FreeMarker? - FreeMarker 中文官方参考手册")) 13 | 14 | 15 | 16 | >在java领域,表现层技术主要有三种:jsp、freemarker、velocity。 () 17 | >jsp是大家最熟悉的技术 18 | >优点: 19 | >1、功能强大,可以写java代码 20 | >2、支持jsp标签(jsp tag) 21 | >3、支持表达式语言(el) 22 | >4、官方标准,用户群广,丰富的第三方jsp标签库 23 | >5、性能良好。jsp编译成class文件执行,有很好的性能表现 24 | >缺点:没有明显缺点,非要挑点骨头就是,由于可编写java代码,如使用不当容易破坏mvc结构。 25 | > 26 | >velocity是较早出现的用于代替jsp的模板语言 27 | >优点: 28 | >1、不能编写java代码,可以实现严格的mvc分离 29 | >2、性能良好,据说比jsp性能还要好些 30 | >3、使用表达式语言,据说jsp的表达式语言就是学velocity的 31 | >缺点: 32 | >1、不是官方标准 2、用户群体和第三方标签库没有jsp多 3、对jsp标签支持不够好 33 | > 34 | >freemarker 也是一种模版引擎语言 35 | >优点: 36 | >1、不能编写java代码,可以实现严格的mvc分离 37 | >2、性能非常不错 38 | >3、对jsp标签支持良好 39 | >4、内置大量常用功能,使用非常方便 40 | >5、宏定义(类似jsp标签)非常方便 41 | >6、使用表达式语言 42 | >缺点: 43 | >1、不是官方标准 2、用户群体和第三方标签库没有jsp多 44 | > 45 | >综合对比: 46 | >1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。 47 | >2、freemarker宏定义比jsp tag方便,内置大量常用功能,比如html过滤,日期金额格式化等等,支持jsp标签。且freemarker和velovity一样,作为模版语言,都可以实现严格的mvc分离。 48 | > 49 | >**这里的评价只是我网上随便摘抄的**。 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /Java Web/自定义JSP标签-《TaJWdt》.md: -------------------------------------------------------------------------------- 1 | # 自定义JSP标签-《TaJWdt》 2 | 3 | 标签(空格分隔): JavaEE 4 | 5 | --- 6 | 7 | > 《Tomcat与Java Web开发技术详解(第2版)》.(孙卫琴).pdf 8 | 《Tomcat and Java Web development technology》本书翻译的英文名,将本书简称为 -《TaJWdt》 9 | 10 | 11 | 12 | ## 自定义JSP标签简介 13 | 14 | JSP标签包含以下几种形式: 15 | ``` 16 | 17 | 18 | ``` 19 | 20 | ``` 21 | 22 | ``` 23 | 24 | ``` 25 | How are you. 26 | ``` 27 | 28 | ``` 29 | 30 | How are you. 31 | ``` 32 | 33 | ``` 34 | 35 | 36 | 37 | ``` 38 | 39 | 40 | 开发包含**自定义标签**的标签库包括以下**步骤**: 41 | 42 | 1. 创建自定义标签的处理类(Tag Handler Class) 43 | 2. 创建TLD标签库描述文件(Tag Library Descriptor) 44 | 45 | 46 | 在Web应用中**使用标签库的步骤**: 47 | 48 | 1. 把标签处理类及相关类的.class文件存放在WEB-INF/classes目录 49 | 2. 把TLD标签描述文件存放在WEB-INF目录或其自定义子目录下 50 | 3. 在web.xml文件中声明所使用的标签库 51 | 4. 在JSP文件中使用标签库中的标签 52 | 53 | 54 | 55 | 56 | ## JSP Tag API 57 | Servlet容器会调用自定义标签的处理类(Tag Handler Class)的相关方法。标签处理类可以继承JSP Tag API中的**TagSupport类**或者**BodyTagSupport类**。 58 | 59 | 60 | ![JavaWeb.png](https://ooo.0o0.ooo/2017/03/07/58be1c7f1445b.png"`图片删除链接https://sm.ms/api/delete/e9rxG4KJtRiWhaD`") 61 | 62 | 63 | JSP 2.0之前,实现Tag接口的标签称为传统标签。JSP 2.0之后,实现SimpleTag接口称为简单标签。 64 | 65 | 66 | ### Tag接口 67 | Tag接口定义了所有传统标签处理类都要实现的基本方法,包括以下几种: 68 | 69 | - *setPageContext(PageContext pc)*:传递当前PageContext对象 70 | - *setParent(Tag t)*:传递父标签的Tag对象 71 | - getParent(): 72 | - *release()*:释放Tag对象占用的资源 73 | - *doStartTag()*:当遇到开始标志时执行;并根据返回值决定后续流程 74 | - *doEndTag()*:当遇到结束标志时执行;并根据返回值决定后续流程 75 | 76 | > 斜体方法由servlet容器调用 77 | 78 | 标签处理类的对象(Tag对象)由Servlet容器负责创建。Servlet容器在执行JSP文件时,如果遇到JSP文件中的自定义标签,就会寻找缓存中的相关的Tag对象,如果还不存在,就创建一个Tag对象,把它放在缓存中以便重复使用。知道Web终止时,Servlet容器调用所有Tag对象的release()方法,然后销毁这些Tag对象。 79 | 80 | 81 | 82 | 当servlet容器得到Tag对象后按照如下顺序调用Tag对象的方法: 83 | 84 | ![ScreenHunter_02 Mar. 07 11.27.gif](https://ooo.0o0.ooo/2017/03/07/58be28ccad1a5.gif "删除链接:`https://sm.ms/api/delete/KnpgAJ5tFkPbEz6`") 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /Java Web/设计模式.md: -------------------------------------------------------------------------------- 1 | ## 包装类 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ## 代理模式 10 | 11 | 12 | 13 | > 包装类和代理类很相似,两者区别是:包装类重在增强目标类,代理类重在控制目标类。 14 | 15 | 16 | 17 | 静态代理 18 | 19 | 动态代理 20 | 21 | 22 | 23 | 24 | 25 | ## 适配器模式 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Java Web/访问数据库-《TaJWdt》.md: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | # 访问数据库-《Tomcat与Java Web开发技术详解(第2版)》 5 | 6 | 7 | 8 | > 《Tomcat与Java Web开发技术详解(第2版)》.(孙卫琴).pdf 9 | 《Tomcat and Java Web development technology》本书翻译的英文名,将本书简称为 TaJWdt 10 | 11 | ## JDBC简介 12 | 13 | 有些驱动器的Driver类在被加载的时候,能自动创建本身的实例,然后调用DriverManager.registerDriver()注册自身;所以注册步骤可以省略。 14 | ``` 15 | //加载Mysql Driver类 16 | Class.forName(); 17 | //注册MySQL Driver 18 | java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //不是必要步骤 19 | ``` 20 | 21 | JDBC URL的一般形式: 22 | ``` 23 | jdbc:drivertype:driversubtype://parameters 24 | ``` 25 | 26 | 27 | 28 | ## 数据源(DataSource)简介 29 | 30 | 31 | ## 配置数据源 32 | 33 | 34 | ## 程序中访问数据源 35 | 36 | 37 | ## 处理中文编码 38 | 39 | 40 | 41 | ## 分页显示批量数据 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Java Web/过滤器-《TaJWdt》.md: -------------------------------------------------------------------------------- 1 | # 过滤器-《TaJWdt》 2 | 3 | 标签(空格分隔): JavaEE 4 | 5 | --- 6 | 7 | > 《Tomcat与Java Web开发技术详解(第2版)》.(孙卫琴).pdf 8 | 《Tomcat and Java Web development technology》本书翻译的英文名,将本书简称为 -《TaJWdt》 9 | 10 | 过滤器能够对一部分客户请求先进行预处理操作,然后再把请求转发给相应的Web组件,等到Web组件生成了响应后,过滤器还能对响应结果进行检查和修改,然后再把修改后的响应发送给客户。各个Web组件中的相同操作可以放到同一个过滤器中来完成,这样就能减少重复编码。 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /JavaScript/JavaScript学习笔记.md: -------------------------------------------------------------------------------- 1 | # JavaScript各种使用场景 2 | 3 | ```javascript 4 | document.write('

以下是JavaScript的输出

'); 5 | alert('警示框! document.write()用于向HTML文档中输入文本。'); 6 | document.write('document.write()用于向HTML文档中输入文本。'); 7 | document.write("使用alert()弹出警示框。"); 8 | var name = prompt('what is your name?', ''); 9 | document.write('

使用prompt()方法采集到的信息: Welcome ' + name + '

'); 10 | 11 | if(confirm('确认对话框confirm()')){ 12 | document.write('你点击了"是"'); 13 | }else{ 14 | document.write('你点击了"否"按钮'); 15 | } 16 | ``` 17 | 18 | #### 选择页面元素 19 | JavaScript与页面节点通信的方法: 20 | 21 | - getElementById(): 通过id获取一个元素 22 | - getElementByTagName(): 获取一个元素的列表,比如获取所有链接元素a 23 | `var pageLinks = document.getElementsByTagName('a');` 24 | 25 | 26 | 27 | 28 | 29 | ## A标签中href=""的几种用法 30 | 31 | 强烈推荐:[详解A标签中href=""的几种用法_javascript技巧_脚本之家](https://www.jb51.net/article/121630.htm?utm_medium=referral "详解A标签中href=""的几种用法_javascript技巧_脚本之家") 32 | 33 | 34 | 35 | `javascript: `是一个伪协议,其他的伪协议还有 `mail:` `tel:` `file:` 等等。 36 | 37 | `javascript:`是表示在触发``默认动作时,执行一段JavaScript代码,而 `javascript:;` 表示什么都不执行,这样点击``时就没有任何反应。 38 | 39 | 一般在这种情况下,会给``绑定一个事件回调,来执行业务,如: 40 | 41 | ```javascript 42 | document.getElementById('jsPswEdit').addEventListener('click', function(e) { 43 | e.preventDefault(); 44 | // 当触发click时,处理业务 45 | }, false); 46 | ``` 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /JavaScript/JavaScript筆記.md: -------------------------------------------------------------------------------- 1 | # JavaScript筆記 2 | 3 | 标签(空格分隔): JavaScript 4 | 5 | --- 6 | 7 | ### eval()方法 8 | [eval() 函数的注意事項](http://www.w3school.com.cn/jsref/jsref_eval.asp) 9 | [eval() 函数的使用情形](http://www.cnblogs.com/scy251147/archive/2010/10/12/1849253.html "重要") 10 | 11 | [廖雪峰:JavaScript教程](http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000) 12 | 13 | eval可以将字符串生成语句执行 14 | 15 | 16 | 17 | 18 | ### 序列化 19 | [序列化和反序列化](http://kb.cnblogs.com/page/515982/) 20 | 21 | 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 22 | 23 | image Serialize: 24 | 25 | 表單序列化為Json。 26 | 27 | > GP表單、Zebra中的圖片 28 | 29 | 30 | 31 | 我们学web前端的都说要学好html,js,css,但是这些都是做静态网页的,当我们要做网站时肯定要和后端进行数据绑定,那我们怎么和后端进行连接绑定? 32 | 33 | 前端可以通过请求后端的接口,获取后端的数据。 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /JavaScript/Node.js与npm简介.md: -------------------------------------------------------------------------------- 1 | # Node.js与npm简介 2 | 3 | 标签(空格分隔): 4 | 5 | --- 6 | 7 | 后端开发 8 | 9 | [Node.js](https://zh.wikipedia.org/zh-cn/Node.js) 10 | [npm](https://zh.wikipedia.org/zh-cn/Npm) 11 | 12 | 13 | 14 | Node.js是一个开放源代码、跨平台的、可用于服务器端和网络应用的运行环境。 15 | Node.js是一个Javascript运行环境(runtime)。 16 | Node.js的大部分基本模块都是用JavaScript写成的。Node.js含有一系列内置模块,使得程序可以作为独立服务器运行,从而脱离Apache HTTP Server或IIS运行。 17 | 18 | 19 | npm(全称Node Package Manager,即node包管理器)是Node.js默认的、以JavaScript编写的软件包管理系统。 20 | 21 | 22 | 23 | 24 | 25 | [Linux 有问必答:如何在 Linux 上安装 Node.js-技术 ◆ 学习|Linux.中国-开源社区](https://linux.cn/article-7174-1.html "Linux 有问必答:如何在 Linux 上安装 Node.js-技术 ◆ 学习|Linux.中国-开源社区") 26 | 27 | [Node.js 教程 | 菜鸟教程](http://www.runoob.com/nodejs/nodejs-tutorial.html "Node.js 教程 | 菜鸟教程") 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Python/Dive into Python (version 5.4).md: -------------------------------------------------------------------------------- 1 |
《Dive into Python3 》version 5.4
2 | ============================================ 3 | 4 | 5 | Mark Pilgrim 著 2009 6 | 免费在线阅读 7 | 中文在线版[《深入 Python3》](http://www.woodpecker.org.cn/obp/diveintopython3/index.html) 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # README 2 | 3 | 感觉Jekyll静态网站维护起来比较麻烦;再次回到此项目更新笔记。 4 | 5 | -------------------------------------------------------------------------------- /Web/Gulp任务流工具.md: -------------------------------------------------------------------------------- 1 | 任务流工具(Task Runner) 2 | 3 | 现在(2016)最流行也是最完善的工具分别是 Grunt 和 Gulp。 4 | 5 | Gulp是后起之秀,它吸取了 Grunt 的优点,并且推出了很多全新的特性。 6 | 7 | 8 | 9 | [印记中文 - 最权威的中文开发文档](https://docschina.org/ "印记中文 - 最权威的中文开发文档") -------------------------------------------------------------------------------- /Web/Html5混合App开发.md: -------------------------------------------------------------------------------- 1 | ## Html5混合App开发 2 | 3 | 4 | 5 | > 这里是Html5混合App,它与 Android HyBrid App有些许不同 6 | 7 | 8 | 9 | 10 | 11 | ## HBuilder 12 | 13 | 14 | 15 | [大前端系列-Html5混合跨平台App开发实战体验课程_腾讯课堂](https://ke.qq.com/course/80126 "大前端系列-Html5混合跨平台App开发实战体验课程_腾讯课堂") 16 | 17 | 开发环境: 18 | 19 | 20 | 21 | HBuilder:Html5 IDE。 22 | 23 | 5+Runtime:Html5强化引擎能力,性能接近原生。 24 | 25 | MUI:Html5前端框架。轻巧、漂亮、开源。 26 | 27 | **流应用**-让应用边用边下,类似流媒体,实现5秒内启动应用 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | ## WeX5 36 | 37 | [H5 App开发 WeX5入门课程《3.5》_腾讯课堂](https://ke.qq.com/course/144247 "H5 App开发 WeX5入门课程《3.5》_腾讯课堂") 38 | 39 | -------------------------------------------------------------------------------- /Web/JS库.md: -------------------------------------------------------------------------------- 1 | ## 如何寻找开源库? 2 | 3 | - 可以上这里寻找:[开源项目大全 - 开源中国社区](http://www.oschina.net/project "开源项目大全 - 开源中国社区") 4 | 5 | 6 | 7 | 8 | [可能是国内最火的开源项目 —— JavaScript 篇](https://zhuanlan.zhihu.com/p/29816092 "可能是国内最火的开源项目 —— JavaScript 篇") 9 | 10 | 11 | 12 | 移动混合应用开发框架: 13 | 14 | * 微软的Xamarin (C#) 15 | * Apache的Cordova (JavaScript) 16 | * Ionic (JavaScript) 17 | * 。。。 18 | 19 | 20 | 21 | 22 | 23 | ## 跨平台的库 24 | 25 | 26 | 27 | ### Lottie 28 | 29 | Lottie for Android, iOS, React Native, and Web。 30 | 31 | [airbnb/lottie: Lottie documentation.](https://github.com/airbnb/lottie "airbnb/lottie: Lottie documentation.") 32 | 33 | 34 | 35 | ## JS库 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | ## Vue.js库 46 | 47 | 48 | 49 | ### Vant 50 | 51 | 基于Vue 2.0的Mobile组件库。 52 | 53 | [Vant首页、文档和下载 - 基于 Vue 2.0 的 Mobile 组件库 - 开源中国社区](https://www.oschina.net/p/vant?utm_source=tuicool&utm_medium=referral "Vant首页、文档和下载 - 基于 Vue 2.0 的 Mobile 组件库 - 开源中国社区") 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /Web/React.js.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ## 学习资料 8 | 9 | 10 | 11 | [ReactJS从入门到实战-ReactJS从入门到实战教程-麦子学院](http://www.maiziedu.com/course/783/ "ReactJS从入门到实战-ReactJS从入门到实战教程-麦子学院") 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Web/妙味课堂/妙味视频学习计划.md: -------------------------------------------------------------------------------- 1 | ## 妙味视频学习计划 2 | 3 | 4 | 5 | 关键不在于看的视频的多少,而在于能够在项目中使用相关技能(实际应用) 6 | 7 | 已学习:边框,背景,文字,行高 8 | 9 | 重要的练习:网易产品模块练习 10 | 11 | 今天是 3.15 12 | 13 | HTML5基础就此结束。 14 | 15 | 16 | 17 | ## HTML5高级 18 | 19 | 看了下这部分内容,看来这些视频都是干货,必须全部看,全部练手。 20 | 21 | 22 | 23 | 24 | 25 | ### 内联块讲解+浮动 26 | 27 | 一天 28 | 29 | 实际用了两天,并且作业都没有做,作业有很多 30 | 31 | 32 | 33 | ### 定位+表格表单 34 | 35 | 一天 36 | 37 | 38 | 39 | ### 兼容性问题讲解 40 | 41 | 一 ~ 两天 42 | 43 | 44 | 45 | ### 经典布局方案 46 | 47 | 一天 48 | 49 | 50 | 51 | ### HTML+CSS - 实战开发视频 52 | 53 | 3~5天 54 | 55 | 56 | 57 | ### 电子商务网站 + 模块化布局实战 58 | 59 | 10天以上 60 | 61 | 62 | 63 | ### VIP公开课:A部落 - HTML+CSS 64 | 65 | 1~2天 66 | 67 | 68 | 69 | 70 | 71 | ## js基础部分 72 | 73 | 74 | 75 | ## DOM详解 76 | 77 | 78 | 79 | ## CSS3详解 80 | 81 | 82 | 83 | ## JS中级课程 BOM\Event 84 | 85 | 86 | 87 | ## AJAX课程 88 | 89 | 90 | 91 | ## JavaScript中的正则表达式 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /Web/妙味课堂/学习首页 - 妙味课堂.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Web/妙味课堂/学习首页 - 妙味课堂.pdf -------------------------------------------------------------------------------- /Web/妙味课堂/课程详细大纲-妙味课堂.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/Web/妙味课堂/课程详细大纲-妙味课堂.pdf -------------------------------------------------------------------------------- /Web/常用案例.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### a标签中href的几种用法: 4 | 5 | 见 javascript 笔记中的 `void`运算符。 6 | 7 | 8 | 9 | [详解a标签中href=""的几种用法_javascript技巧_脚本之家](https://www.jb51.net/article/121630.htm?utm_medium=referral "详解A标签中href=""的几种用法_javascript技巧_脚本之家") 10 | 11 | 12 | 13 | 14 | 15 | **a标签没有disabled属性:** 所以如何让a标签不可点击? 16 | 17 | 需要利用 `pointer-events  `属性, 18 | 19 | ```css 20 | pointer-events:none 21 | ``` 22 | 23 | 作用:屏蔽所有鼠标事件。比如:可以在上传的时候赋值为`none`,上传流程完毕设置为`auto` 24 | 25 | 26 | 27 | ### 添加class 28 | 29 | 30 | 31 | ```js 32 | // 可以使用 class = "+ newClassName" 的方式添加 33 | pageNavHtml += `
  • ${i}
  • `; 34 | ``` 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | ## Html5表单校验 43 | 44 | 45 | 46 | [html5表单自带的验证学习_慕课手记](https://www.imooc.com/article/17449 "html5表单自带的验证学习_慕课手记") 47 | 48 | [HTML5中表单验证的8种方法 - CSDN博客](https://blog.csdn.net/qq395537505/article/details/53066187 "HTML5中表单验证的8种方法 - CSDN博客") 49 | 50 | 51 | 52 | - [ ] 确认密码的校验(如何在html5中校验两个文本框的内容是否一致)能否/如何使用 `data-val-equalto-other=""` 53 | 54 | 55 | 56 | 推荐:[H5利用pattern属性和oninvalid属性验证表单 - CSDN博客](https://blog.csdn.net/qq_21707807/article/details/53035977 "H5利用pattern属性和oninvalid属性验证表单 - CSDN博客") 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | ## JS 表单验证 67 | 68 | 69 | 70 | 手写或利用各种表单验证插件 71 | 72 | 73 | 74 | [imbrn/v8n: JavaScript fluent validation library.](https://github.com/imbrn/v8n "imbrn/v8n: JavaScript fluent validation library.") 75 | 76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /Web/微信小程序.md: -------------------------------------------------------------------------------- 1 | ## 微信小程序 2 | 3 | 4 | 5 | 小程序不是HTML5, 6 | 7 | 8 | 9 | wxml 编写界面 10 | 11 | 12 | 13 | wxss 应用样式 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | [ 微信实战项目-新闻小程序开发_腾讯课堂](https://ke.qq.com/course/221834 "[番茄课堂] 微信实战项目-新闻小程序开发_腾讯课堂") 22 | 23 | 24 | 25 | ## 微信开发者工具 26 | 27 | 28 | [微信小程序开发工具教程_百度经验](https://jingyan.baidu.com/article/b87fe19e4dccaa521935686c.html "微信小程序开发工具教程_百度经验") 29 | -------------------------------------------------------------------------------- /Web/浏览器兼容性和测试.md: -------------------------------------------------------------------------------- 1 | # 浏览器兼容问题 2 | 3 | 如果没有合适的数据,那么我会按照一个简单粗暴的逻辑来决定是否开发某个特定平台/浏 4 | 览器的版本:如果支持浏览器X的开发成本超过了浏览器X的用户创造的收益,那么就不为该浏览器开发特殊的版本。 5 | 6 | 在确定哪些平台和浏览器版本支持什么特性时,建议参考这个网站: 。这个网站的界面简洁,查询方便。 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ## 参考资料 17 | 18 | 《HTML5与CSS3基础教程》第11章,第20章 19 | 20 | 《web开发权威指南》第1章 ... 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /itheima/Dubbo.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 面向服务编程 4 | 5 | 6 | 7 | 分布式服务架构,可以实现各功能之间的互联互调功能。 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | [Dubbo文档](http://dubbo.incubator.apache.org/zh-cn/docs/user/quick-start.html "快速启动") 20 | 21 | - [服务治理框架dubbo上手指南 | 懒程序员改变世界](http://qinghua.github.io/dubbo-1/ "服务治理框架dubbo上手指南 | 懒程序员改变世界") 22 | 23 | - [Zookeeper应用介绍与安装部署 - 简书](https://www.jianshu.com/p/4c13132ce49f "Zookeeper应用介绍与安装部署 - 简书") 24 | 25 | - [☆聊聊Dubbo(一):为何选择 - 简书](https://www.jianshu.com/p/0b6e2c920014 "☆聊聊Dubbo(一):为何选择 - 简书") 系列 26 | 27 | - [监控与管理dubbo服务 | 懒程序员改变世界](http://qinghua.github.io/dubbo-3/ "监控与管理dubbo服务 | 懒程序员改变世界") 推荐 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /itheima/Solr.md: -------------------------------------------------------------------------------- 1 | # Solr 2 | 3 | 4 | 5 | 6 | 7 | Solr 是一个开源搜索平台,用于构建搜索应用程序。 不仅限于搜索, Solr 也可以用于存储目的。像其他 NoSQL 数据库一样,它是一种非关系数据存储和处理技术 。 8 | 9 | 10 | 11 | 12 | 13 | ## 部署 Solr (war包) 14 | 15 | 16 | 17 | - 下载 solr 压缩包,解压 18 | 19 | - 复制压缩包中 `solr-4.10.3/example/webapps/solr.war` 到 tomcat 下的webapps目录下,重启tomcat 20 | 21 | - 复制 `solr-4.10.3/example/lib/ext/` 下所有 jar包到 tomcat 中 webapps 下的 `solr/WEB-INF/lib` 中 22 | 23 | - 创建索引库,这里选择复制现有索引库及其配置:复制 `solr-4.10.3/example/solr/` 目录下的**所有内容**(索引库collection1及其配置)到 `/opt/Solr/SolrHome`下 24 | 25 | - 为 solr指定索引库位置: 编辑tomcat中的`webapps/solr/WEB-INF/web.xml` 26 | 27 | ```xml 28 | 29 | solr/home 30 | /opt/Solr/SolrHome 31 | java.lang.String 32 | 33 | ``` 34 | - 重启 Tomcat ,在浏览器中访问 solr 项目 35 | 36 | - Solr的Logging中会有相关警告,可以选择忽略,也可以动手解决 略。 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 如何添加一个索引库? 45 | 46 | - 请确保已经 复制 `solr-4.10.3/example/solr/` 目录下的**所有内容**(索引库collection1及其配置)到 `/opt/Solr/SolrHome`下,并检查SolrHome下是否存在 solr.xml zoo.cfg两个配置文件 47 | 48 | - 重新复制 SolrHome 下的 collection1 目录,并命名为 item 49 | - 修改 item下的 core.properties 配置文件,将 name 的值改为 item 50 | - 重启 tomcat 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /itheima/assets/01.ServletContext域对象.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/01.ServletContext域对象.png -------------------------------------------------------------------------------- /itheima/assets/01.request的API.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/01.request的API.png -------------------------------------------------------------------------------- /itheima/assets/01拆分工程思想.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/01拆分工程思想.png -------------------------------------------------------------------------------- /itheima/assets/02.request和response的运行原理-1532078417861.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/02.request和response的运行原理-1532078417861.png -------------------------------------------------------------------------------- /itheima/assets/02.request和response的运行原理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/02.request和response的运行原理.png -------------------------------------------------------------------------------- /itheima/assets/02工程聚合拆分分析.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/02工程聚合拆分分析.png -------------------------------------------------------------------------------- /itheima/assets/03.response的API.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/03.response的API.png -------------------------------------------------------------------------------- /itheima/assets/03.请求转发和重定向的区别.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/03.请求转发和重定向的区别.png -------------------------------------------------------------------------------- /itheima/assets/04.案例-登录功能.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/04.案例-登录功能.png -------------------------------------------------------------------------------- /itheima/assets/04.重定向的原理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/04.重定向的原理.png -------------------------------------------------------------------------------- /itheima/assets/idea-tomcat01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/itheima/assets/idea-tomcat01.png -------------------------------------------------------------------------------- /itheima/ssm-spring04事务.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ## Spring 中事务的传播行为 10 | 11 | Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,**它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播**。 12 | 13 | 14 | 15 | 事务方法之间发生嵌套时,事务如何进行传播。 16 | 17 | 18 | 19 | > [Transaction事务传播行为种类PROPAGATION_REQUIRED - 彼岸辰星 - 博客园](https://www.cnblogs.com/originate918/p/6226342.html "Transaction事务传播行为种类PROPAGATION_REQUIRED - 彼岸辰星 - 博客园") 20 | > 21 | > [深入理解事务--Spring事务的传播机制 - yuanlaishini2010的专栏 - CSDN博客](https://blog.csdn.net/yuanlaishini2010/article/details/45792069 "深入理解事务--Spring事务的传播机制 - yuanlaishini2010的专栏 - CSDN博客") 22 | > 23 | > [事务的传播行为(讲得比较好) - IT小小鸟~~ - CSDN博客](https://blog.csdn.net/wwh578867817/article/details/51736723 "事务的传播行为(讲得比较好) - IT小小鸟~~ - CSDN博客") 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /itheima/ssm_day02_mybatis.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ```xml 4 | 5 | 6 | 7 | 11 | 12 | select last_insert_id(); 13 | 14 | 15 | insert into user(username,birthday,sex,address) value (#{username},#{birthday},#{sex},#{address}) 16 | 17 | 18 | ``` 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /itheima/web14_tomcat和servlet.md: -------------------------------------------------------------------------------- 1 | ## tomcat 2 | 3 | 4 | 5 | 16412-95A3-57F8-84E0-48A0 6 | 7 | 8 | 9 | 10 | 11 | ## servlet 12 | 13 | 14 | 15 | servlet生命周期: 16 | 17 | 18 | 19 | 20 | 21 | 过滤器: 22 | 23 | 1. 24 | 25 | 2.拦截目录匹配的请求 26 | 27 | ``` 28 | urlPatterns = "/*" 29 | ``` 30 | 31 | ``` 32 | urlPatterns = "/admin/*" 33 | ``` 34 | 35 | 3.扩展名匹配 36 | 37 | ``` 38 | urlPaterns = "*.jsp" 39 | ``` 40 | 41 | 注意:不允许出现下面的格式: 42 | 43 | ``` 44 | urlPatterns = "/admin/*.jsp" 45 | ``` 46 | 47 | 48 | 49 | 50 | 51 | 过滤器执行顺序 52 | 53 | 54 | 55 | WEB-INF目录不允许在客户端进行访问,所以可以在该目录存放一些资源文件 56 | 57 | 58 | 59 | classLoader获取流: 60 | 61 | 62 | 63 | sevletContent 获取流: 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /itheima/web18_jsp.md: -------------------------------------------------------------------------------- 1 | # jsp 2 | 3 | 4 | 5 | web文件夹中的变动,只需让 tomcat 进行 update resources即可,那么 jsp 也是位于web目录,所以... 6 | 7 | 8 | 9 | 使用idea生成的webapp路径: 10 | 11 | `C:\Users\Fan\.IntelliJIdea2018.1\system\tomca\**\work\**` 12 | 13 | 如果不清除是哪个文件夹,我们可以将tomcat* 相关文件夹删除,然后再通过idea重新生成。 14 | 15 | 16 | 17 | 对应servlet的成员变量和方法: 18 | 19 | ```html 20 | <%! %> 21 | ``` 22 | 23 | 24 | 25 | 现在只在JSP显示,不涉及任何逻辑业务,基本上只在jsp中使用 EL和 jstl 26 | 27 | 在教学和演示过程中为了方便,我们才会使用 `<% %>`, 28 | 29 | 30 | 31 | - `<%=Java 表达式 %>` 把 Java 表达式的结果输出显示到页面上。会被转换成 service 方法里 `out.print(Java 表达式);` 32 | - `<% Java 代码块 %>` 把代码块的内容原封不动的拷贝到 service 方法里。(service方法是做什么的?与doGet(),doPost()的关系是?) 33 | - `<%! Java 声明 %>` Java 声明的代码,会被原封不动的拷贝成为 Servlet 的成员内容。 34 | 35 | 36 | 37 | 38 | 39 | spring不属于任何一层,他是一个粘合剂,在每层都有用,其作用是解耦。 40 | 41 | 42 | 43 | 44 | 45 | ## EL表达式 46 | 47 | 如果只是使用EL表达式,不需要引用任何jar包。只要jsp/servlet容器实现了相关规范就可以了。 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | ## JSTL 58 | 59 | 60 | 61 | 相关jar包: 62 | 63 | 1. [Apache Standard Taglib: JSP(tm) Standard Tag Library (JSTL) implementations](http://tomcat.apache.org/taglibs/standard/ ) Taglib是什么? 64 | 2. [Maven Repository: javax.servlet.jsp.jstl » jstl » 1.2](https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl/1.2 "Maven Repository: javax.servlet.jsp.jstl " jstl " 1.2") 那这个包又是干什么的? 65 | 66 | 67 | 68 | jar包解释: 69 | 70 | 后者(2) 是 jstl-api, 前者(1)是 jstl 的实现。 71 | 72 | 实现主要有两个版本: 73 | 74 | - 一个是 glassfish 的jstl-impl 75 | - 另一个是 apache 的 taglibs-standard-impl 76 | 77 | [正确配置Jstl的Maven依赖 - CSDN博客](https://blog.csdn.net/yq2017/article/details/78886280 "正确配置Jstl的Maven依赖 - CSDN博客") 78 | 79 | 80 | 81 | 82 | 83 | taglib实现: 84 | 85 | [https://www.apache.org/dist/tomcat/taglibs/taglibs-standard-1.2.5/README_bin.txt](https://www.apache.org/dist/tomcat/taglibs/taglibs-standard-1.2.5/README_bin.txt "https://www.apache.org/dist/tomcat/taglibs/taglibs-standard-1.2.5/README_bin.txt") 86 | 87 | 88 | 89 | ``` 90 | CORE LIBRARY 91 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 92 | ``` 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 修改功能的实现: 103 | 104 | 数据来源需要从数据库查询获取最新数据,避免使用内存中的数据,多人访问时数据可能已经改变。 105 | 106 | 107 | 108 | 109 | 110 | 首次进入: 111 | 112 | 参数为null 113 | 114 | 获取第一页,并计算总共有多少页码 totalPage 115 | 116 | 117 | 118 | 119 | 120 | 点击索引,获取对应页面的数据 121 | 122 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /itheima/web_pro01.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BeanUtils 6 | 7 | 将数据库查询中一行数据,封装为 `map<字段名, 字段值>`,然后将该map传递给BeanUtils,他会根据此map,并利用反射来调用 Bean的setter方法来构造一个 bean 对象。 8 | 9 | 可以将 10 | 11 | 12 | 13 | ### 项目中参数的作用 14 | 15 | 在此项目中客户端在从 页面1 跳转到 页面2 时在浏览器地址栏中传递的参数,仅仅是为了传递给页面2 使用,页面2 获取这些参数后再添加 action 参数,最后通过 ajax 发送给服务端,并获取和处理服务端返回的数据。 16 | 17 | get参数: 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /itheima/异常问题.md: -------------------------------------------------------------------------------- 1 | ### Error:java: 无效的源发行版: 10 2 | 3 | 4 | 5 | Project Structure > 某模块 > Dependencies 更改为 jdk 10 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 5个常见的响应状态码: 14 | 15 | 200 16 | 17 | - 304 使用缓存 18 | 19 | 20 | 21 | 22 | 23 | 400 bad requset: 似乎是请求参数不符合服务端的要求 24 | 25 | 26 | 27 | 404 28 | 29 | 30 | 31 | 5 -------------------------------------------------------------------------------- /itheima/爬虫.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 爬虫使用方式 6 | 7 | - 爬取网页 8 | - 如果网站没有提供相关API,可以利用httpclient和爬虫技术,模拟浏览器操作和获取页面信息。比如避开有道词典收费的api而使用爬虫技术。 9 | 10 | 11 | 12 | 13 | 14 | ## Java爬虫框架 15 | 16 | [jsoup: Java HTML Parser, with best of DOM, CSS, and jquery](https://github.com/jhy/jsoup "jhy/jsoup: jsoup: Java HTML Parser, with best of DOM, CSS, and jquery") 是一款Java 的HTML解析器 17 | 18 | 19 | 20 | - [WebMagic](https://github.com/code4craft/webmagic) 其底层用到了我们上一天课程所使用的HttpClient和Jsoup,让我们能够更方便的开发爬虫。(还没有正式版) ,[Introduction · WebMagic Documents](http://webmagic.io/docs/zh/ "Introduction · WebMagic Documents") 21 | 22 | 23 | 24 | ![](https://pic3.zhimg.com/a0204c24bfd0da5cdda01df77509de8a_r.jpg) 25 | 26 | 27 | 28 | 29 | 30 | [推荐一些优秀的开源Java爬虫项目 - 知乎](https://zhuanlan.zhihu.com/p/24844250 "推荐一些优秀的开源Java爬虫项目 - 知乎") 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 爬虫分类(按照系统结构和实现技术): 39 | 40 | - 通用网络爬虫 41 | - 聚焦网络爬虫 42 | - 增量式网络爬虫 43 | - 深层网络爬虫 44 | 45 | 而实际的网络爬虫系统通常是**几种爬虫技术相结合**实现的 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /itheima/相关技巧.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ### 硬编码 6 | 7 | 在需要检测用户输入内容是否和数据库中内容是否一致时,在开发中我们可以先暂时硬编码一个字符串,只有用户输入的内容与此硬编码的字符串一致时才通过,来避开数据库查询,进而先实现当前页面内容。 -------------------------------------------------------------------------------- /itheima/面试.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | - [ ] 自动包装 6 | 7 | - [ ] 多线程 8 | 9 | - [ ] 异常 10 | 11 | - [ ] 基本类型转换 12 | 13 | - [ ] HashMap(线程不安全) 和 ConcurrentHashMap(线程安全,现在开始淘汰HashTable转而使用 ConcurrentHashMap) 14 | 15 | - [ ] HashMap和 HashTable 的区别 16 | 17 | 18 | 19 | 20 | 21 | 数据结构 22 | 23 | SQL优化 24 | 25 | 26 | 27 | ## 多线程 28 | 29 | 30 | 31 | 推荐使用 lock 来加锁。 32 | 33 | -------------------------------------------------------------------------------- /其它/001生活相关还是放到其他笔记软件中吧.md: -------------------------------------------------------------------------------- 1 | 其他笔记软件: 2 | 3 | - 印象笔记(现(2019)已经支Markdown编辑) 4 | - Notion(功能强悍,入手难度高) 5 | 6 | 7 | 8 | **作业部落**上的笔记还是迁往印象笔记吧 9 | 10 | -------------------------------------------------------------------------------- /其它/02各种教程搜集.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ## 慕课网 6 | 7 | 8 | 9 | php:链接:https://pan.baidu.com/s/1zFOC7p_S85gQbrYHWd47Ig 密码:mj3v 10 | python:链接:https://pan.baidu.com/s/1G0V2R_kzztKcmJjQ7Wt13g 密码:vg3z 11 | 安卓:链接:https://pan.baidu.com/s/1XXwF0q5w510D1VL10-rosQ 密码:rx9v 12 | 测试:链接:https://pan.baidu.com/s/1kTWVmFfL1vHb-ShaQ59hXA 密码:ljwx 13 | 大数据:链接:https://pan.baidu.com/s/1pSZJDAaBca35YRzlVcR9MQ 密码:6to4 14 | 后端:链接:https://pan.baidu.com/s/1xmo6GaohuxgHnnG0pIb63Q 密码:91v0 15 | 前段:链接:https://pan.baidu.com/s/106eF9J4u435O9UTdXZ13nw 密码:kkit 16 | 算法:链接:https://pan.baidu.com/s/1b7OLpqcxXnQ9SKHr5AA7hg 密码:r1t9 17 | 微信:链接:https://pan.baidu.com/s/1xS0IQdTvHSJfkvWimVDMeQ 密码:9m0r 18 | 如果发现链接失效,麻烦通过第二、三条消息加我微信好友或者进群,直接分享给你。带来的不便还请谅解。 19 | 20 | 21 | 22 | 23 | 24 | 来源:该简书用户文章后给的微信公众号中获取,回复"慕课"即可获取上面的链接,回复其它内容可获取对应的资源 25 | 26 | - [JAVA面试核心教程 | 第一篇:Java面试基础知识点总结 - 简书](https://www.jianshu.com/p/da4f2e675be9 "JAVA面试核心教程 | 第一篇:Java面试基础知识点总结 - 简书") 27 | - [JAVA面试核心教程 | 第二篇:Java面试框架知识点总结 - 简书](https://www.jianshu.com/p/421c9625859a "JAVA面试核心教程 | 第二篇:Java面试框架知识点总结 - 简书") 28 | - [JAVA面试核心教程 | 第三篇:Java面试微服务知识点总结 - 简书](https://www.jianshu.com/p/7558e3fe5103 "JAVA面试核心教程 | 第三篇:Java面试微服务知识点总结 - 简书") 29 | 30 | 31 | 32 | [1,300 Free Online Courses from Top Universities | Open Culture](http://www.openculture.com/freeonlinecourses) 顶尖大学的免费在线课程。 33 | 34 | ## 爬虫 35 | 36 | 37 | 38 | [静觅丨崔庆才的个人博客](https://cuiqingcai.com/) 39 | 40 | -------------------------------------------------------------------------------- /其它/Android App 开发环境搭建和配置.md: -------------------------------------------------------------------------------- 1 | Android App 开发环境搭建和配置 2 | ================================================= 3 | 4 | > **Android App 开发环境的历史:** 5 | > 最初:JDK + Android SDK + ADT插件 + Eclipse 6 | > 之后:JDK + ADT Bundle (其中ADT Bundle包含SDK,ADT插件,Eclipse) 7 | > 最后: Android Studio 现已成为 Android 的官方 IDE,集成了其它所需程序, 只需另外下载安装 JDK 即可 8 | 9 | 10 | 1.JDK的安装 11 | ------------------- 12 | 13 | 进入官网 --> [oracle](http://www.oracle.com/) --> Downloads --> Java SE --> 如果要下载旧版本进入最底部的 “Java Archive” --> 选择“Java SE Development Kit”的一个版本 14 | 15 | 但是下载旧版本要注册有 oracle 的帐号,直接下新版本则不用。 16 | 17 | 18 | 19 | 20 | 21 | 22 | >如果要在命令行下使用Java的相关命令则需配置环境变量;如果直接使用eclipse等IDE,则它们具有足够的智能而无需配置。 23 | 24 | 25 | **环境变量配置:** (新建3个环境变量) 26 | 27 | | 环境变量名 | 描述 | 值 | 28 | | --------- | ------------------- | ---------------------------------------- | 29 | | JAVA_HOME | 指定JDK安装的根目录 | 略 | 30 | | PATH | 指定JDK安装目录下的bin目录, | %JAVA_HOME%\bin | 31 | | CLASSPATH | 指定从什么位置取查找 class 文件 | .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib | 32 | 33 | 配置好环境变量后需重新启动一个cmd,并在里面测试配置是否正确。 34 | 35 | 36 | 37 | 38 | 39 | 2.Android Studio安装 40 | -------------------------- 41 | 42 | **国内下载:** [android studio 中文组](http://tools.android-studio.org/) 43 | 44 | 45 | 46 | windows 64 版本下载 2016.4 47 | 48 | 49 | 50 | 51 | Linux 52 | 53 | https://dl.google.com/dl/android/studio/ide-zips/1.5.1.0/android-studio-ide-141.2456560-linux.zip 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /其它/Blender.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## 安装Blender 4 | 5 | Ubuntu可以通过ppa安装。 6 | 7 | **安装后更改界面语言为中文:** File -> User Preferences -> System -> 勾选 International Fonts -> 就会多出来个 Language 下拉列表 -> 选择简体中文 -> 再选中下方的 Translate 下的Interface界面之后界面才会变成简体中文 -> 最后保存用户设置 8 | 9 | 10 | 11 | [Blender 繁體中文介面設定](http://druid-lab.blogspot.hk/2014/11/blender.html) 12 | 13 | 14 | 15 | ## 视频编辑功能 16 | 17 | 18 | 19 | - 许可协议: GNU GPL v3+ 20 | - 跨平台(Linux, BSD, MacOS X, Windows) 21 | - 专门用于于 3D 建模和动画 22 | - 支持图像/视频合成 23 | - 视音频特效和转场 24 | 25 | 26 | 27 | 28 | 29 | 相关软件: 30 | 31 | Linux平台下有什么适合个人视频制作的软件? 32 | 33 | 之前用过lightworks但只有限时试用,补充有免费版 34 | Kdenlive 不错 35 | blender似乎有点太难了 36 | Openshot可以剪辑但似乎不能加字幕 37 | 而且在Ubuntu 14.10 64位下除了pitivi之外渲染的视频都没声音 38 | 39 | 40 | 41 | ## 学习资料 42 | 43 | 44 | 45 | [Blender入门 — Blender Manual](https://docs.blender.org/manual/zh-hans/dev/getting_started/index.html "Blender入门 — Blender Manual"),都有中文手册了 46 | 47 | [Blender2.5x-2.6完全教程 - Ubuntu中文](http://wiki.ubuntu.org.cn/Blender2.5x-2.6%E5%AE%8C%E5%85%A8%E6%95%99%E7%A8%8B "Blender2.5x-2.6完全教程 - Ubuntu中文") 48 | 49 | [tutor4u - YouTube](https://www.youtube.com/user/tutor4u "tutor4u - YouTube") 入门教程 50 | 51 | [台湾大神的blender教程全集__bilibili_哔哩哔哩](https://www.bilibili.com/video/av909518/ "台湾大神的blender教程全集_野生技术协会_科技_bilibili_哔哩哔哩") 52 | 53 | [25个Blender教程 · conanxin/conanxin.github.com Wiki](https://github.com/conanxin/conanxin.github.com/wiki/25%E4%B8%AABlender%E6%95%99%E7%A8%8B "25个Blender教程 · conanxin/conanxin.github.com Wiki") 54 | 55 | [Gleb Alexandrov - YouTube](https://www.youtube.com/user/GlebAlexandrov "Gleb Alexandrov - YouTube") 56 | 57 | 58 | 59 | 60 | 61 | Blender视频编辑: 62 | 63 | [blender视频编辑入门_百度经验](http://jingyan.baidu.com/article/0eb457e5c5d69603f1a90593.html "blender视频编辑入门_百度经验") 64 | 65 | [视频序列编辑器 — Blender Manual](https://docs.blender.org/manual/zh-hans/dev/editors/vse/index.html "视频序列编辑器 — Blender Manual") 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /其它/Lisp学习资料.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | - [为什么Lisp语言如此先进?(译文)](http://www.ruanyifeng.com/blog/2010/10/why_lisp_is_superior.html) 6 | 7 | - [ANSI Common Lisp 中文翻譯版](http://acl.readthedocs.io/en/latest/) 8 | - [ANSI Common Lisp 中文版](http://acl.readthedocs.io/en/latest/zhCN/) 9 | 10 | - [《On Lisp》](http://www.ituring.com.cn/article/52934) 11 | 12 | [看云上也有](http://www.kancloud.cn/ituring/on-lisp) 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /其它/PS.md: -------------------------------------------------------------------------------- 1 | overmind1980的PS教程笔记 2 | ============================== 3 | 4 | ##02.分辨率(resolution) 5 | 单位:ppi 6 | 如:300ppi 7 | 8 | ###分辨率的由来: 9 | 10 | 图片是由一个一个像素组成。在新建图片时的选项: 11 | 像素大小:由宽度多少像素,和高度多少像素确定。单位为像素。 12 | 文档大小:指打印时页面的宽度和高度。单位为里面。 13 | 分辨率(R):指每英寸包含多少像素,像素/英寸。 14 | 15 | 像素:指显示器对应的像素 16 | 17 | (猜测) 18 | 屏幕原始显示的图片大小,应该与像素大小和分辨率两者都相关。 19 | 在像素确定时;分辨率越高,图片显示越小。 20 | 在分辨率确定时:像素越高,图片显示越大。 21 | 是否与显示器本身的显示有关? 22 | 思考了一下,应该是与显示器本身无关,不管在哪个显示器都是一样。 23 | 算了不思考这个问题。 24 | 新建时选择的像素大小就是直接表示了图片在该软件一开始时显示的大小,不管分辨率什么事。 25 | 26 | 27 | 1 inch = 25.4mm 28 | 1平方英寸 = 约娃哈哈纯净水瓶盖大小 29 | 30 | 其单位 ppi 表示:每 p 像素 p 英寸 i; 每英寸里面由多少个像素。 31 | 32 | PPI:指图像分辨率,Pixels Per Inch,用于印前设计上,图像常用的分辨率是300PPI和350PPI。 33 | LPI:指印刷的挂网网线数,Line/Inch,网线越多则表示网线越密集,印刷层次表现力更丰富和清晰。 34 | DPI:是点每英寸,扫描仪和激光照排机的分辨率,Dot Per Inch;表示每英寸可采集多少个点或像素。 35 | 36 | 分辨率为什么是 Resolution? 37 | solve 解决 38 | Solution 解决方案 39 | resolution 重新解决,物理大小和显示器大小之间的关系。 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /其它/Qt4 到 Qt5的改变.md: -------------------------------------------------------------------------------- 1 | # Qt 2 | 3 | ## Qt安装 4 | 5 | [ubuntu安装QT5的笔记和简单配置](http://cstriker1407.info/blog/ubuntu-qt5/ "ubuntu安装QT5的笔记和简单配置") 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | ## Qt4 到 Qt5的改变 14 | 15 | 16 | 参考:[Qt 4迁移至Qt 5](http://blog.qt.io/cn/2012/07/09/porting-from-qt-4-to-qt-5/) 17 | 18 | [Transition from Qt 4.x to Qt5](http://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5 "建议阅读") 19 | 20 | [Qt4下载地址](http://download.qt.io/static/mirrorlist/) 21 | 22 | 23 | -------------------------------------------------------------------------------- /其它/SketchUp操作.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | SketchUp基本操作 4 | 5 | 6 | >在设计过程中,我们通常习惯从不十分精确的尺度、比例开始整体的思考,随着思路的进展不断添加细节。当然,如果你需要,你可以方便快速进行精确的绘制。 7 | 8 | SketchUp Make 为免费版,它比SketchUp Pro缺少一些功能。 9 | 10 | 先设置单位,默认为"打开软件选择的模板中的设置值": "窗口" --> 模型信息 --> 单位 ;每次打开后都需设置, 11 | 可做好所有设置后保存成模板,避免每次都要更改。 12 | 13 | 窗口 --> 系统设置 --> 文件 --> 文件位置 14 | 来修改软件自动保存的位置,默认保存在 ”文档“ ,不好,会把文档文件夹搞乱。 15 | 16 | 17 | 工具栏添加常用工具图标,在工具栏右击,选择上"大工具集"、"标准"、"样式"、"视图",几个工具栏。 18 | 19 | 使用"移动"功能时,指定基点后,若按住Ctrl键,则变为复制图元。复制一个图元后,输入x3就可使用上次复制的使用到的参数重复3次操作(相当于乘以3),若输入/3则在第一次复制的图元与原图元之间再产生2个图元(相当于除以3)。 20 | 使用移动功能时,也可移动立方体中的点线面等,可产生一些意想不到的效果。 21 | 22 | 在多种功能中可同时按住Ctrl键可实现复制功能。 23 | 24 | 在软件捕捉到一个参考时按住shift键可进一步限制在该参考中(如移动时当捕捉到其与某轴线平行时按住shift键,可限制在该平行线上来确定另一个定位点) 25 | 26 | 红、绿、蓝分别代表X、Y、Z轴。当捕捉到与其中一条轴平行时,自动产生的辅助线颜色与其相同。(当与任一条非轴线平行时,显示的是洋红色) 27 | 28 | 29 | 一些常用快捷键: 30 | --------------------------- 31 | 32 | |-----------------------|------------------------------| 33 | | 操作 | 描述 | 34 | | ---------- | ------------------ | 35 | | 空格键 | 直接跳到"选择"工具 | 36 | | 推拉时双击 | 对此平面应用上次推拉参数 | 37 | | 推拉时按住Ctrl | 能够复制(堆叠)推拉 | 38 | | 鼠标中键 | 绕蓝轴旋转 | 39 | | 单击图元 | 选择该图元 | 40 | | 双击图元 | 选择与该图元相交的面,和该图元本身 | 41 | | 三击图元 | 选择该 | 42 | | 框选 | 与CAD类似 | 43 | | 选择时按住Ctrl键 | 可实现多选,此时箭头上会出现一个加号 | 44 | | 座标的输入 | 格式 19,21 中间用逗号分隔 | 45 | 46 | 47 | "卷尺" 工具可以生成辅助线条。 48 | 用法1: 用来测量两点间距离。在某种情况可产生辅助线(消除的方式是按住Ctrl键) 49 | 用法2: 绘制辅助线;通过 50 | 用法3: 场景缩放。用法在测量两点时,选则两点后直接输入要改变成的距离值即可实现整个场景等比例缩放,该文件中的所有图形。若只想改变单个图形,可先将其成组,再双击进入组内。 51 | 52 | "擦除" 工具擦除图元。 53 | 54 | 使用"圆" "多边形"工具时可以指定边数,默认的边数见状态栏中的数值框。 55 | 56 | 选中一条直线后,点击右键选择"拆分"可将其等分成多段,也可在数值框中输入段数。 57 | 58 | 59 | 破面 : 产生破面后可再绘制平面补上。理解破面这个术语。 60 | 立方体是由面构成,这些面是可以删除的。 61 | 62 | 材质 是需要下载材质库才能使用。 63 | 64 | 65 | 66 | 更多操作见”SketchUp8基础教程板书“ 在OneDrive中。 67 | 68 | 69 | -------------------------------------------------------------------------------- /其它/创作工具.md: -------------------------------------------------------------------------------- 1 | ## 创作 2 | 3 | 4 | 5 | ## 翻译 6 | 7 | [18 个开源的项目本地化翻译工具](https://linux.cn/article-8901-1.html) 8 | 9 | 10 | 11 | * 计算机辅助翻译工具(CAT) 12 | * 机器翻译引擎(MT) 13 | * 翻译管理系统(TMS) 14 | * 术语管理工具 15 | * 自动本地化工具 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ## 写书 24 | 25 | 26 | 27 | GitBook 28 | 29 | 30 | 31 | LaTex 32 | 33 | 34 | 35 | 在《CSS解密》中见到有一个 O'Reilly的HTMLBook标准。在该书中看到的每一样东西都是CSS渲染出来的HTML。O'Reilly专门为这件事搭建了一个叫作 **Atlas** 的系统,并且该系统对公众也开放。 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /其它/各种许可协议.md: -------------------------------------------------------------------------------- 1 | # 各种许可协议 2 | 3 | 4 | 5 | ## 知识共享许可协议 6 | 7 | ### CC许可协议 8 | 知识共享署名 4.0 国际许可协议。简称CC协议或CC许可协议。 9 | CC BY-NC-SA 10 | 11 | CC代表:Creative Commons;知识共享 12 | [Creative Commons](https://creativecommons.org/licenses/by/4.0/deed.zh) 13 | 14 | 知识共享署名4.0国际公共许可证 15 | [将这个授权协议使用在您自己的作品中](https://creativecommons.org/choose/results-one?license_code=by&jurisdiction=&version=4.0&lang=zh) 16 | 17 | 两种图标格式: 18 | ![](https://i.creativecommons.org/l/by/4.0/88x31.png) 19 | ![](https://i.creativecommons.org/l/by/4.0/88x15.png) 20 | 21 | 22 | 23 | 24 | 25 | 常见开源协议: 26 | 27 | ![](http://tektea-img.b0.upaiyun.com/blog/2016/06/26.png) 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | [开源许可证教程 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2017/10/open-source-license-tutorial.html "开源许可证教程 - 阮一峰的网络日志") 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /其它/字符编码参考.md: -------------------------------------------------------------------------------- 1 | # 字符编码参考 2 | 3 | 标签(空格分隔): 字符编码 4 | 5 | [TOC] 6 | 7 | --- 8 | 9 | 本文记录一些有关字符编码的参考网页、资料 10 | 11 | 12 | 13 | |Unicode符号 范围 (十六进制)| UTF-8编码方式(二进制) | 14 | |----------------------|------------------------------------| 15 | |0000 0000 ~ 0000 007F | 0xxxxxxx | 16 | |0000 0080 ~ 0000 07FF | 110xxxxx 10xxxxxx | 17 | |0000 0800 ~ 0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx | 18 | |0001 0000 ~ 0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx| 19 | 20 | >Unicode只是一个符号集,UTF-8是Unicode的实现方式之一。 21 | 22 | 23 | 24 | 25 | 1.《Linux C 编程一站式学习》附录A:字符编码 26 | ------------------------------------------- 27 | 28 | 相关讲解: 29 | 30 | 1. ASCII码 31 | 32 | 2. Unicode和UTF-8 33 | 34 | 3. 在Linux C编程中使用Unicode和UTF-8 35 | 36 | 37 | 书籍在线网址 38 | 39 | 40 | 41 | 2.《字符编码笔记:ASCII,Unicode和UTF-8》阮一峰 42 | --------------------------------------------------- 43 | 44 | 45 | 46 | **通俗易懂,推荐。** 47 | 48 | 还讲解了 `Little endian` 和 `Big endian` 49 | 50 | >Unicode规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做"零宽度非换行空格"(ZERO WIDTH NO-BREAK SPACE),用FEFF表示。这正好是两个字节,而且FF比FE大1。 51 | 52 | >如果一个文本文件的头两个字节是FEFF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式。 53 | 54 | 3. UTF-8 and Unicode FAQ for Unix/Linux 55 | -------------------------------------- 56 | 57 | 原文地址 58 | 59 | 60 | 作者 Markus Kuhn 61 | 62 | 63 | 64 | 译文地址: 65 | 66 | 67 | 译者:Love.Katherine,2007-8-30 68 | 69 | 70 | 71 | 4. UTF-8 and Unicode FAQ 72 | ------------------------- 73 | 74 | 译文: 75 | 76 | 77 | 中国LINUX论坛翻译小组 xLoneStar[译] 2000年2月 78 | 79 | 80 | 5.《java语言程序设计-基础篇》第19章 二进制I/O:中介绍的UTF-8 81 | ------------------------------------------ 82 | 书中介绍了文本I/O与二进制I/O的区别;同时介绍了文本编码问题。 83 | -------------------------------------------------------------------------------- /其它/学习资料.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 学习一门新技术时建议先查找比较好的视频教程,先对其有个基本的了解,然后自己深入学习就不会那么困难和无聊。 4 | 5 | ## 视频资料 6 | 7 | ### 腾讯课堂 8 | 腾讯课堂上有10人以上评分的课程一般都还不错;如果这十几个人中大部分都评价非常好,那么该视频绝对值得一看。 9 | 10 | 下载录播视频的方法:下载腾讯课堂App。发现有些视频在观看时在右上角有显示下载的图标,点击可以下载该视频。但有些录播的视频则没有,原因是你并没有报名参加这些课程,点击参加课程(或者在网页上操作,可以免去验证手机的步骤)即可下载该视频。 11 | 12 | 也可通过进入App中的课程表,进入该系列课程,然后左下角会有个下载图标,点击该图标即可下载所有该系列课程。 13 | 14 | 在 "我的" -> "设置" -> "优先下载清晰度" 选择为 "高清"。 15 | 16 | 超清 文件太大;标清 视频太模糊。 17 | 18 | ## 文档资料 19 | 20 | 21 | 22 | 23 | 24 | ## Git 25 | 26 | [Git Community Book 中文版](http://gitbook.liuhui998.com/ "Git Community Book 中文版") 27 | 28 | [phodal/github-roam: GitHub 漫游指南- a Chinese ebook on how to build a good build on Github. Explore the users' behavior. Find some thing interest.](https://github.com/phodal/github-roam "phodal/github-roam: GitHub 漫游指南- a Chinese ebook on how to build a good build on Github. Explore the users' behavior. Find some thing interest.") 29 | 30 | 31 | 32 | 33 | 34 | ## 全栈 35 | 36 | [phodal/growth-ebook: Growth Engineering: The Definitive Guide。全栈增长工程师指南](https://github.com/phodal/growth-ebook "phodal/growth-ebook: Growth Engineering: The Definitive Guide。全栈增长工程师指南") 37 | 38 | [phodal/growth-in-action: 全栈增长工程师实战](https://github.com/phodal/growth-in-action "phodal/growth-in-action: 全栈增长工程师实战") 39 | 40 | [phodal/ideabook: 一个全栈增长工程师的练手项目集. A Growth Engineering Idea in Action.](https://github.com/phodal/ideabook "phodal/ideabook: 一个全栈增长工程师的练手项目集. A Growth Engineering Idea in Action.") 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /其它/家电购买.md: -------------------------------------------------------------------------------- 1 | # 家电购买 2 | 3 | 4 | 5 | ## 电饭煲 6 | 7 | 使用寿命长,考虑买好点的 8 | 9 | 硬性要求: 10 | 11 | - 容量4-5L,(家庭用) 12 | - 不占锅 13 | - 防溢出 14 | - 易清洗 15 | 16 | 条件二: 17 | 18 | - IH电磁加热 19 | - 低糖电饭煲 20 | - 双胆 21 | 22 | 23 | 24 | 加热方式: 25 | 26 | - 底盘加热 27 | - **球**釜,立体加热 28 | - IH电磁加热 29 | 30 | 31 | 32 | - 内胆材质:铁合金内胆、 33 | 34 | - 能效等级:二级能效、 35 | 36 | 37 | 38 | 压力锅煮饭可能会有锅巴,看差评区。 39 | 40 | 41 | 42 | 苏泊尔CFXB30HC37-80 低糖电饭煲 43 | 44 | 虹吸沥米低糖 45 | 46 | 47 | 48 | 20191111初步选中: 49 | 50 | - **美的(Midea)电饭煲电饭锅4L智能预约IH电磁加热触摸操控一键柴火饭功能MB-FB40Star301(李现同款)** 400 51 | - **美的(Midea)电压力锅5升双胆家用精控火候电压力煲 快速煮电高压锅YL50E507(李现推荐)** 400 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /其它/开发心得1.md: -------------------------------------------------------------------------------- 1 | # 开发心得1 2 | 3 | 标签(空格分隔): 开发心得 4 | 5 | --- 6 | 7 | 8 | ### 许令波 DeveloperWorks上的博客与书籍 9 | 读《[七年阿里老人谈新人成长](http://geek.csdn.net/news/detail/65891)》 10 | 11 | **《深入分析Java Web技术内幕》**修订版 2014.7: 12 | 序言:IT行业的知识变化很快,需要不断地学习新东西,所以学习知识的能力比掌握知识本身更重要。学习的过程中需要克服许多难题,在克服这些难题的过程中积累起来的就是你无形的宝贵财富;从发现问题、分析问题再到解决问题的过程远比这个问题本身更有价值。将复杂的问题简单化,发现问题背后的本质,找到解决问题背后的一些通用逻辑,按照这种思路来解决问题可能会让你事半功倍。 13 | 该书同时介绍了如何让学习知识的过程事半功倍。 14 | 如何阅读源码,很多同学不知道从哪里入手。其实,当你掌握了一些技巧,加上你的一点耐心,这并不是很难。 15 | 16 | 17 | 从《深入分析Java Web技术内幕》的目录就可知该书是Java进阶必看的书籍。 18 | 19 | 20 | 公司代码太过简单,可以利用这些开源项目的源码来学习高级技术。 21 | 22 | 23 | ### 陶邦仁的oschina博客 24 | 25 | [编程从业五年的十四条经验,句句朴实](https://my.oschina.net/xianggao/blog/527987) 26 | 27 | 28 | 29 | [面试、入职、离职的那些事儿](https://my.oschina.net/xianggao/blog/513385) 赞。 30 | 31 | 32 | 33 | 34 | Google Java编程风格指南 35 | 36 | 37 | 38 | 同时打开两个窗口进行打印,导致流水号滞留,导致流水号重复,进而导致了二维码重复现象。 39 | 40 | 1. 在数据表中新增一列,保存二维码字符串,并为其添加唯一约束。问题:可能导致其它使用此表的程序无法使用。 41 | 2. 同时添加组成二维码字符串的多列为唯一约束。问题:检查的列太多,影响效率。 42 | 3. 通过限制每个机种在每条线别上的窗口在全厂内同时只有处在打开状态;通过利用服务器中的全局数据库表中保存已经打开的窗口;如果表中没有保存,则可以打开该窗口。问题:客户端在打开窗口后突然断网或突发异常退出,就不会修改数据表中相关行,导致一直占用此窗口。 43 | 4. 打印时实时获取数据库中保存的流水号,而不是控件中滞留的流水号。(分析数据的插入信息,可能是发生了脏读;) 44 | 45 | 46 | [.NET:脏读、不可重复读和幻读测试](http://www.cnblogs.com/happyframework/p/3284154.html) 47 | [什么是脏读,不可重复读,幻读](http://www.cnblogs.com/phoebus0501/archive/2011/02/28/1966709.html) 48 | 49 | 50 | 51 | ### 邓凡平 52 | [深入理解Android系列书籍资源分享更新](http://blog.csdn.net/innost/article/details/43342087) 53 | 54 | 他是该系列书籍的作者,他在博客中连载了书中的内容,所以可以直接在他的博客中看。 55 | 56 | 他的博客[阿拉神龙](http://blog.csdn.net/Innost) 57 | 58 | 59 | 60 | 61 | 62 | ### 学习 63 | 64 | 在观看视频教程时发现,有些东西不需要事先了解其方法的含义,比如jquery,只需要知道它有哪些作用,然后看到老师在视频中是如何使用它的,大概就能明白代码的含义,在视频中看得多了也就会了。 65 | 66 | 67 | 68 | 69 | 70 | 71 | ## 不属于这里 72 | ### 创建方法 73 | 假如我要创建在一个工具类中创建一个方法"AnimationUtils.rotateOutAnim();",先在要用的地方写下该段代码;然后通过快捷键"Alt+Enter"让Android Studio帮我去创建这个方法。 74 | 然后在实现该方法时,方法所需要的参数也不必急着添加,在需要用的时候,再考虑添加参数。 75 | 76 | 77 | -------------------------------------------------------------------------------- /其它/打印机&打印软件.md: -------------------------------------------------------------------------------- 1 | # 打印机&打印软件 2 | 3 | 标签(空格分隔): 打印 4 | 5 | --- 6 | 7 | 8 | [Symbol DS6708怎么才能扫描反绿的二维条码?(反白二维码)](http://www.chongshang.com.cn/news/view.asp?id=427) 9 | [条码打印机产品应用下载等](http://www.chongshang.com.cn/) 10 | [斑马打印机常见故障及解决办法](http://www.chongshang.com.cn/news/view.asp?id=71) 11 | [斑马条码打印机为什么每次打印都回纸](http://www.chongshang.com.cn/news/view.asp?id=167) 12 | []() 13 | []() 14 | []() 15 | []() 16 | []() 17 | []() 18 | 19 | 20 | 21 | 条码打印设备 22 | 条码扫描设备(扫描与采集 23 | 条码打印软件 24 | 耗 材 25 | 26 | 27 | 28 | [Zebra中国](http://www.cnzebra.com/) 29 | 30 | 31 | [如何加载或传输文件到斑马条码打印机上](http://www.ivysun.net/arc-jingyan/5190.html) 32 | [斑马条码机的测纸方法](http://www.cnzebra.com/viewnews_60.html) 33 | [斑马标签打印机的打印头的寿命与保养](http://www.ivysun.net/arc-jingyan/5191.html) 34 | 35 | 36 | 37 | [斑马110 XI4 条码打印机网络打印设置方法](http://www.lvscan.cn/Xw_1-624.html) 38 | 按下SETUP/EXIT键,提示“保存更改——永久”(該鍵的Exit功能) 39 | 再按下 NEXT/SAVE键保存设置,即可设置IP地址(該鍵的Save功能)。 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /其它/条码知识.md: -------------------------------------------------------------------------------- 1 | # 条码知识 2 | 3 | 标签(空格分隔): 打印 4 | 5 | --- 6 | 7 | 8 | 二维码扫描: 9 | 10 | 上海敏用数码科技有限公司是专业从事条码产品、射频技术产品及相关标签耗材销售与售后服务的专业化公司。**可以通过该公司网站了解相关条码知识**。 11 | 12 | [Symbol DS6708怎么才能扫描反绿的二维条码?(反白二维码)](http://www.chongshang.com.cn/news/view.asp?id=427) 13 | 14 | 15 | 16 | ### 草料二维码网站学习 17 | [草料二维码](http://cli.im/):在线二维码生成器、提供相关解决方案、活码管理系统;可在该网站上学习码制相关知识。 18 | [什么是码制?](http://cli.im/news/22552) 19 | [二维码技术标准有哪些?](http://cli.im/news/11311) 20 | [常用二维码对比\(QR、PDF417、DM、汉信码\)](http://cli.im/news/22429) 可了解各二维码的解码速度、中文支持、识别方向等信息 21 | [二维码扫描数据分析用户行为?](http://cli.im/news/10956) 22 | [同样的内容做出来的二维码为什么都不一样,什么是容错率](http://cli.im/news/21072)同样的内容,不做任何修改,反复生成的二维码图案都不一样。这是由于,这些特定的几何图形按照一定规律,然后**随机的分布在平面上**。 23 | 打个比方,一个句子,你从左到右写,和从上到下写,表达的都是同一个意思。二维码也是一样。 24 | [二维码的基础原理是什么?](http://cli.im/news/10601 "必看")一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。 25 | 26 | 容错率: 容错率也叫纠错率,就是指二维码可以被遮挡后仍能被正常扫描,而这个能被遮挡的最大面积就是容错率。并有相关纠错级别。 27 | [什么是二维码、静态码、活码?](http://cli.im/news/7086) 28 | 静态码 29 | 活码 30 | 31 | 32 | 二维码开发包 33 | 34 | ... 35 | 36 | 还有大量学习文章。 37 | 38 | > 解决微信屏蔽淘宝网址二维码的变相解决方法,使用草料提供的淘宝二维码生成器,扫描后会直接提示用户在浏览器打开。 39 | 40 | 41 | ### 扫描软件 42 | 43 | 1. [萬能QR碼掃描](http://www.funcode-tech.com/Fun2D_QRCode_Reader_for_SmartPhone_tw.html) Google Play上有该软件,支持的码制**多**(推荐),但软件兼容性有待改进。对于PDF417码制不会出现中文乱码(中文支持强)。 44 | > 台湾公司出品;提供[QR Code 二維條碼掃描解碼](http://www.funcode-tech.com/Download.html)支持,和[Logo QR 產生器](http://www.funcode-tech.com/QR_Encoder.aspx)对于除微信之外的国外社交网站的支持要好。 45 | 2. QR码扫描: ![](http://img.wdjimg.com/mms/icon/v1/6/93/377774bf38daf84f0de584b01d6c7936_256_256.png)功能强,支持**条码生成**,**速度快**,支持的码制**较多**,识别**反白条码**的能力比1强,另可在该软件的开源许可查看其使用到的开源库。对于一般的条码不会出现中文乱码,但对于PDF417码制会中文乱码。不能识别汉信码(Chiness Sensible Code) 46 | 47 | > 很多软件采用了基于开源的ZXing库。 48 | 49 | 50 | 51 | ### 开发库 52 | 53 | [条形码/二维码 程序开发](http://www.oschina.net/project/tag/238/barcode) 54 | 55 | - 开源的ZXing库(解码) 56 | 57 | -------------------------------------------------------------------------------- /其它/用户体验.md: -------------------------------------------------------------------------------- 1 | ## 记录一些用户体验的问题 2 | 3 | 4 | 5 | 6 | 7 | ## 网页视频播放 8 | 9 | 当我们在浏览器中播放视频时,顶部和底部的那些视频控制总是要等个几秒中才自动隐藏,但有时候自己特别希望全屏观看,或者有时候这些界面总是挡住了视频的字幕,每次都很烦。我就奇怪为什么不弄个向下的箭头我们点击一些就可以**手动收起**这些界面呢??? 要是还有像手机视频app中的锁定按钮该多好。 10 | 11 | -------------------------------------------------------------------------------- /其它/计算机专业词汇解释.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ## dump 5 | 6 | 非常常见的一个单词: 7 | 8 | core dump: 又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中。 9 | 核心文件(core file),也称核心转储(core dump),是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试。 10 | 11 | mysqldump:用于备份MySQL数据库。 12 | 13 | tcpdump命令:linux下的抓包、嗅探工具。 14 | 15 | dump命令: 16 | 17 | hexdump:查看二进制文件内容。 18 | 19 | 20 | dump:在某个特定时刻,把一个存储设备中的全部或部分的内容转录进另一个存储 21 | 设备之中。转储的目的通常是用于排除故障。"因此,dump作为动词,宜译为"转储";相应的动 22 | 名词,或作为名词来看 ,则译为"转储(过程、动作…)"。同时,ISO把后者定义为"Data that 23 | as been dumped。"译文如下:"经转储而产生的那些数据"。 24 | 技术资料中把这个"卸出"的过程叫dump;有时把卸出的"内容"也叫dump。 25 | 26 | dump:转储;信息转存;有时dump就是copy(复制)的意思。 27 | 28 | 29 | 30 | **dump原意为:** 31 | 32 | vt.倾倒; 丢下,卸下; 摆脱,扔弃; 倾销 33 | 34 | vi.突然跌倒或落下; 卸货; 转嫁(责任等) 35 | 36 | n.垃圾场; 仓库; 无秩序地累积 37 | 38 | **dump作为计算机词汇意思为:** 39 | 40 | (1) 在特定时刻,将整个储存装置或储存装置之某部分的内容记录在另一储存装置中。倾出的目的通常是为了除错。 41 | 42 | (2) 将具备可读格式的数据从主要或辅助储存体复制至外部媒体,如磁带、磁盘或打印机等媒体。 43 | 44 | (3) 为收集错误信息而复制整个虚拟储存体或虚拟储存体之某部分的内容。 45 | 46 | 说简单一点,其实就是转储和复制出来的意思。 47 | 48 | 49 | 50 | 51 | 52 | 53 | [计算机中Dump的含义 - 王自强 - 博客园](http://www.cnblogs.com/wangziqiang/p/5191738.html "计算机中Dump的含义 - 王自强 - 博客园") 54 | 55 | [dump作为计算机或者IT英语词汇是什么意思_计算机百科](http://www.itjsxx.com/baike/dump__computer_english.html "dump作为计算机或者IT英语词汇是什么意思_计算机百科") 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /开发工具/GCC技术参考大全.md: -------------------------------------------------------------------------------- 1 | GCC技术参考大全 2 | ============== 3 | 4 | 5 | GCC: The Complete Reference 6 | Arthur Griffith 著 2002 7 | 8 | 9 | 10 | 11 | 12 | ## Gcc命令 13 | 14 | | command | description | 15 | |-----------|-------------| 16 | | -Wall | W 能够对源代码进行检测并显示可能存在的错误,即使能够编译通过| 17 | | -I*dir* | -I dir 寻找头文件的路径 | 18 | | -L*dir* | -L dir 搜索库文件的路径 | 19 | | -l*NAME* | 链接库文件。可直接使用路径;或-lNAME (name来自libNAME) | 20 | | -v | | 21 | | -D*NAME* 或者 -D*NAME=VALUE* | 通过命令行选项,定义c文件中的某个宏变量 | 22 | | $cpp -dM /dev/null | 查看系统定义的宏(以双下划线开头),通过预处理器cpp | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 第一部分 自由软件编译程序 30 | ================= 31 | 32 | 33 | 第一章 GCC简介 34 | ------------------- 35 | 略 36 | 37 | 第二章 查询与安装编译程序 38 | ------------------------------ 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 第二部分 使用编译程序集合 47 | ================= 48 | 49 | 50 | 第三章 预处理程序 51 | --------------------- 52 | 53 | 54 | 第4章 编译C程序 55 | ------------------ 56 | 57 | 58 | 第5章 编译C++程序 59 | ------------------------ 60 | 61 | 62 | 第8章 编译 Java 63 | ------------------- 64 | 65 | 66 | 第10章 混合语言 67 | ------------------- 68 | 69 | 70 | 第11章 国际化 71 | ---------------- 72 | 73 | 74 | 75 | 76 | 第3部分 外设和内设 77 | ============== 78 | 79 | 80 | 81 | 第12章 连接和库 82 | ------------------- 83 | 84 | 85 | 86 | 第13章 使用GNU调试器 87 | --------------------------- 88 | 89 | 90 | 第14章 make 和 Autoconf 91 | --------------------------------- 92 | 93 | 94 | 95 | 第15章 GUN汇编器 96 | ----------------------- 97 | 98 | 99 | 100 | 101 | 第16章 交叉编译及窗体端口 102 | -------------------------------- 103 | 104 | 105 | 106 | 107 | 108 | 第17章 嵌入式系统 109 | ---------------------- 110 | 111 | 112 | 113 | 第18章 编译程序输出 114 | ------------------------- 115 | 116 | 117 | 118 | 第19章 实现一种语言 119 | ------------------------- 120 | 121 | 122 | 123 | 第20章 寄存器传送语言 124 | --------------------------- 125 | 126 | 127 | 128 | 129 | 第21章 机器相关的编译程序选项 130 | -------------------------------------- 131 | 132 | -------------------------------------------------------------------------------- /开发工具/assets/cmder01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/cmder01.png -------------------------------------------------------------------------------- /开发工具/assets/cmder02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/cmder02.png -------------------------------------------------------------------------------- /开发工具/assets/cmder03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/cmder03.png -------------------------------------------------------------------------------- /开发工具/assets/cmder04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/cmder04.png -------------------------------------------------------------------------------- /开发工具/assets/cmder05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/cmder05.png -------------------------------------------------------------------------------- /开发工具/assets/cmder06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/cmder06.png -------------------------------------------------------------------------------- /开发工具/assets/docker_build_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/docker_build_flow.png -------------------------------------------------------------------------------- /开发工具/assets/idea Java Compiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea Java Compiler.png -------------------------------------------------------------------------------- /开发工具/assets/idea Live Templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea Live Templates.png -------------------------------------------------------------------------------- /开发工具/assets/idea Spring Configuration Check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea Spring Configuration Check.png -------------------------------------------------------------------------------- /开发工具/assets/idea project Scratches and Consoles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea project Scratches and Consoles.png -------------------------------------------------------------------------------- /开发工具/assets/idea-maven-add-resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-maven-add-resources.png -------------------------------------------------------------------------------- /开发工具/assets/idea-maven-java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-maven-java.png -------------------------------------------------------------------------------- /开发工具/assets/idea-maven-search-dependency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-maven-search-dependency.png -------------------------------------------------------------------------------- /开发工具/assets/idea-maven-tomcat-web_inf_lib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-maven-tomcat-web_inf_lib.png -------------------------------------------------------------------------------- /开发工具/assets/idea-maven-update-index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-maven-update-index.png -------------------------------------------------------------------------------- /开发工具/assets/idea-svn-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-svn-01.png -------------------------------------------------------------------------------- /开发工具/assets/idea-svn-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-svn-02.png -------------------------------------------------------------------------------- /开发工具/assets/idea-svn-03.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-svn-03.1.png -------------------------------------------------------------------------------- /开发工具/assets/idea-svn-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-svn-03.png -------------------------------------------------------------------------------- /开发工具/assets/idea-svn-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-svn-04.png -------------------------------------------------------------------------------- /开发工具/assets/idea-svn-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/idea-svn-05.png -------------------------------------------------------------------------------- /开发工具/assets/jib_build_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/jib_build_flow.png -------------------------------------------------------------------------------- /开发工具/assets/maven repository dependencies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/assets/maven repository dependencies.png -------------------------------------------------------------------------------- /开发工具/opt-java-8-oracle.jinfo: -------------------------------------------------------------------------------- 1 | name=opt-java-8-oracle 2 | alias=opt-java-8-oracle 3 | priority=300 4 | section=non-free 5 | 6 | jre ControlPanel /opt/jdk1.8.0_91/jre/bin/ControlPanel 7 | jre java /opt/jdk1.8.0_91/jre/bin/java 8 | jre javaws /opt/jdk1.8.0_91/jre/bin/javaws 9 | jre jcontrol /opt/jdk1.8.0_91/jre/bin/jcontrol 10 | jre jjs /opt/jdk1.8.0_91/jre/bin/jjs 11 | jre keytool /opt/jdk1.8.0_91/jre/bin/keytool 12 | jre orbd /opt/jdk1.8.0_91/jre/bin/orbd 13 | jre pack200 /opt/jdk1.8.0_91/jre/bin/pack200 14 | jre policytool /opt/jdk1.8.0_91/jre/bin/policytool 15 | jre rmid /opt/jdk1.8.0_91/jre/bin/rmid 16 | jre rmiregistry /opt/jdk1.8.0_91/jre/bin/rmiregistry 17 | jre servertool /opt/jdk1.8.0_91/jre/bin/servertool 18 | jre tnameserv /opt/jdk1.8.0_91/jre/bin/tnameserv 19 | jre unpack200 /opt/jdk1.8.0_91/jre/bin/unpack200 20 | jre jexec /opt/jdk1.8.0_91/jre/lib/jexec 21 | 22 | jdk appletviewer /opt/jdk1.8.0_91/bin/appletviewer 23 | jdk extcheck /opt/jdk1.8.0_91/bin/extcheck 24 | jdk idlj /opt/jdk1.8.0_91/bin/idlj 25 | jdk jar /opt/jdk1.8.0_91/bin/jar 26 | jdk jarsigner /opt/jdk1.8.0_91/bin/jarsigner 27 | jdk javac /opt/jdk1.8.0_91/bin/javac 28 | jdk javadoc /opt/jdk1.8.0_91/bin/javadoc 29 | jdk javafxpackager /opt/jdk1.8.0_91/bin/javafxpackager 30 | jdk javah /opt/jdk1.8.0_91/bin/javah 31 | jdk javap /opt/jdk1.8.0_91/bin/javap 32 | jdk javapackager /opt/jdk1.8.0_91/bin/javapackager 33 | jdk jcmd /opt/jdk1.8.0_91/bin/jcmd 34 | jdk jconsole /opt/jdk1.8.0_91/bin/jconsole 35 | jdk jdb /opt/jdk1.8.0_91/bin/jdb 36 | jdk jdeps /opt/jdk1.8.0_91/bin/jdeps 37 | jdk jhat /opt/jdk1.8.0_91/bin/jhat 38 | jdk jinfo /opt/jdk1.8.0_91/bin/jinfo 39 | jdk jmap /opt/jdk1.8.0_91/bin/jmap 40 | jdk jmc /opt/jdk1.8.0_91/bin/jmc 41 | jdk jps /opt/jdk1.8.0_91/bin/jps 42 | jdk jrunscript /opt/jdk1.8.0_91/bin/jrunscript 43 | jdk jsadebugd /opt/jdk1.8.0_91/bin/jsadebugd 44 | jdk jstack /opt/jdk1.8.0_91/bin/jstack 45 | jdk jstat /opt/jdk1.8.0_91/bin/jstat 46 | jdk jstatd /opt/jdk1.8.0_91/bin/jstatd 47 | jdk jvisualvm /opt/jdk1.8.0_91/bin/jvisualvm 48 | jdk native2ascii /opt/jdk1.8.0_91/bin/native2ascii 49 | jdk rmic /opt/jdk1.8.0_91/bin/rmic 50 | jdk schemagen /opt/jdk1.8.0_91/bin/schemagen 51 | jdk serialver /opt/jdk1.8.0_91/bin/serialver 52 | jdk wsgen /opt/jdk1.8.0_91/bin/wsgen 53 | jdk wsimport /opt/jdk1.8.0_91/bin/wsimport 54 | jdk xjc /opt/jdk1.8.0_91/bin/xjc 55 | 56 | plugin mozilla-javaplugin.so /opt/jdk1.8.0_91/jre/lib/amd64/libnpjp2.so 57 | -------------------------------------------------------------------------------- /开发工具/慕课网:远程调试.md: -------------------------------------------------------------------------------- 1 | # 远程调试 2 | 3 | 4 | 5 | root用户不允许远程调试,所以需要新建一个普通用户,并且以该普通用户的身份安装并配置tomcat。 6 | 7 | > 这些权限限制是在阿里云主机上操作时的限制,在自己的虚拟机中不知是否也有同样的限制? 8 | 9 | 创建一个 work 用户 10 | 11 | ``` 12 | add user work 13 | passwd work 14 | su work 15 | 上传tomcat到 ~ 16 | 修改tomcat配置,server.xml文件(注意非root用户的程序端口不能低于1000,否则会报错,所以端口保持为 8080) 17 | 上传war包 18 | 服务器开放 8080端口 19 | (如果有些第三方接口无法设置端口,只认默认的80端口,那么我们可以在服务端做端口转发,将发往80端口的信息转发到8080端口,在Centos7上可以利用 防火墙或nginx做转发) 20 | 修改tomcat中的 catalina.sh 文件,添加debug选项:CATALINA_OPTS="好长记不住";该选项中会指定一个用户调试的端口,比如这里是 8888 21 | 配置服务器开放8888端口 22 | 以work用户启动tomcat 23 | 在Eclipse中为代码打上断点,配置Eclipse的远程调试 24 | 25 | ``` 26 | 27 | 28 | 29 | > 远程调试内容在: 慕课网SSM到Spring Bootxxx 》 第10章 阿里云部署xxx 30 | 31 | 32 | 33 | 34 | 35 | ## Eclipse远程调试 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | ## Idea远程调试 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /开发工具/版本控制/查看git log.md: -------------------------------------------------------------------------------- 1 | # 查看 git log 2 | 3 | ## 使用 Gitg 查看 4 | 5 | Gitg 查看 log 非常不错。 6 | 7 | 8 | ![](https://faner.gitlab.io/assets/images/post-images/2017-08-01-gitg-git-log.png) 9 | 10 | 可以查看所有提交、本地分支、远程分支、标签。 11 | 12 | 看 git 的 log 要根据颜色来区分;由于布局显示的原因分叉的地方不一定非要是在图形中的某个节点上。 13 | 根据以上提示对于新手来说仔细观看几个log就明白了。 14 | 15 | 16 | ## 使用命令 + 别名 17 | 18 | 以下使用的基本都是 Bash shell 19 | 20 | ```shell 21 | git log --graph --full-history --all --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s" 22 | ``` 23 | 24 | 25 | 添加别名的方法: 26 | 27 | 在 `~/.gitconfig`文件中添加 28 | 29 | ``` 30 | [ailas] 31 | lg0 = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m" 32 | ``` 33 | 34 | 35 | ``` 36 | [ailas] 37 | lg = !"git lg1" 38 | lg1 = !"git lg1-specific --all" 39 | lg2 = !"git lg2-specific --all" 40 | lg3 = !"git lg3-specific --all" 41 | 42 | lg1-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)' 43 | lg2-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' 44 | lg3-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n'' %C(white)%s%C(reset)%n'' %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)' 45 | ``` 46 | 47 | ### 推荐的两个别名 48 | 49 | ``` 50 | [Alias] 51 | lg = log --graph --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short 52 | hist = log --graph --full-history --all --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short 53 | ``` 54 | 55 | - git lg will see the current(当前) branch history 56 | - git hist will see the whole(整个) branch history 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /开发工具/离线API文档查询工具Zeal和Velocity.md: -------------------------------------------------------------------------------- 1 | # 离线API查询工具 Zeal 和 Velocity 2 | 3 | 4 | 5 | [Zeal与velocity: Windows与Linux下与Mac中Dash类似的API离线查询工具 - CSDN博客](https://blog.csdn.net/sy373466062/article/details/49903469 "Zeal与velocity: Windows与Linux下与Mac中Dash类似的API离线查询工具 - CSDN博客") 6 | 7 | 8 | 9 | 10 | 11 | ## Zeal 12 | 13 | [Zeal - Offline Documentation Browser](https://zealdocs.org/ "Zeal - Offline Documentation Browser") 14 | 15 | 跨平台。 16 | 17 | 18 | 19 | 通过 Scoop 安装: 20 | 21 | [Scoop](http://scoop.sh/) is a command-line installer for Windows. 22 | 23 | First you need to enable Scoop's [extras](https://github.com/lukesampson/scoop-extras/) bucket, if that wasn't done before: 24 | 25 | ``` 26 | > scoop bucket add extras 27 | ``` 28 | 29 | To install Zeal run the following command: 30 | 31 | ``` 32 | > scoop install zeal 33 | ``` 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | ## Velocity 42 | 43 | 查询效果可能更好,但是免费版可能体验不好。 44 | 45 | (**provided by Dash for OS X**).[https://velocity.silverlakesoftware.com](https://velocity.silverlakesoftware.com/) 46 | 47 | 48 | 49 | ## 与其它IDE或Editor集成使用 50 | 51 | 52 | 53 | ### Dash 54 | 55 | 安装名叫 Dash 的 插件: 56 | 57 | A smart and simple plugin that provides keyboard shortcut access for Dash, **Velocity** or **Zeal** in IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm, DataGrip, CLion, GoLand and Android Studio. 58 | 59 | 60 | 61 | **Supported API Documentation Browsers** 62 | 63 | - Kapeli Dash (Mac OS X) 64 | Dash is an API Documentation Browser and Code Snippet Manager. Dash stores snippets of code and instantly searches offline documentation sets for 150+ APIs (for a full list, see below). You can even generate your own docsets or request docsets to be included. 65 | 66 | - Velocity (Windows) 67 | Velocity gives your Windows desktop offline access to over 150 API documentation sets (**provided by Dash for OS X**).[https://velocity.silverlakesoftware.com](https://velocity.silverlakesoftware.com/) 68 | 69 | - Zeal (Linux & Windows) 70 | Zeal is a simple offline API documentation browser inspired by Dash (OS X app). [http://zealdocs.org](http://zealdocs.org/) 71 | 72 | 73 | 74 | **可能存在的错误:** 75 | 76 | On Windows, when using Zeal the IDE shows Failed to open dash-plugin://... in the Event Log 77 | 78 | It looks like the URL handler has not been registered for Zeal. Please run `zeal.exe --register`. -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/IdeaVim的配置和使用.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## 切换Vim模拟器状态 4 | 5 | 6 | 7 | 这个插件允许设置一个快捷键一键开启或关闭,在切换模式时会同时自动切换keymap,十分方便。默认键位是Ctrl+Alt+V,但这个键位覆盖了很常用的“抽取局部变量”功能,建议重设,在setting->keymap中查找VIM Emulator即可。 8 | 9 | 10 | 11 | > 下面所说的两套keymap是指: 12 | > 13 | > - Idea默认的KeyMap : Default keymap 14 | > - 开启IdeaVim时使用的 : Vim keymap (因为vim快捷键会和现有keymap有冲突,所以当启用ideavim后会自动切换到ideavim为你配置的keymap中) 15 | 16 | 17 | 18 | 由于开启和关闭状态分别使用两套keymap,因此两套都需要设定。可以把两套keymap下的都设为一样的键,也就是用同一个键切换。但个人建议设为不同的键,这样能清楚知道当前处于那种模式中。并且,如果在开启Vim的插入模式下关闭Vim模拟器,下次进入时仍然是插入模式,比较混乱(因为你关闭模拟器就是为了使用默认keymap输入大段代码,重新开启Vim模拟器就是为了使用普通模式下的命令)。因此建议把Vim keymap中的Exit Insert Mode设为与另一个keymap的Vim Emulator相同的键(也就是进入Vim模拟器的快捷键)。例如,我使用的设定是: 19 | 20 | - Default keymap -> Vim Emulator : Ctrl+; (用Ctrl+分号开启Vim模拟器) 21 | - Vim keymap -> Vim Emulator : Ctrl+, (用Ctrl+逗号关闭Vim模拟器) 22 | - Vim keymap -> Vim Emulator : Ctrl+; (用Ctrl+分号退出插入模式,进入普通模式) 23 | 24 | 25 | 这样,在任何时候只要连按两下`ctrl+;`分号,就能保证必定在Vim模拟器的普通模式中。 26 | 27 | 28 | 29 | **修改快捷键的实际操作:** 30 | 31 | settings > Keymap > Default 中 搜索(按) `Ctrl+Alt+V`; 更改掉 Vim Emulator对应的 `Ctrl+Alt+V` 为 `ctrl + ;` 32 | 33 | 然后再展开 Plug-ins 找到 Idea Vim 。。。 34 | 35 | 发现无法按照作者的方式进行修改;所以这里我就只是将其更改为`ctrl + ;` 36 | 37 | 38 | 39 | > 针对“1. 切换Vim模拟器状态 ”这一章节说说我的理解,您看对不对: 40 | > 41 | > 如果我当前的keymaps为Eclipse,然后我启用了Vim模拟器,那么我当前的keymaps变为Vim,这时如果我关闭Vim模拟器,我的keymaps又自动变为Eclipse。 42 | > 43 | > 对么? 44 | > 45 | > 是的,关闭Vim模拟器时会自动返回到进入Vim模式前的keymaps 46 | 47 | 48 | 49 | 50 | 51 | - [IdeaVim插件使用技巧 - - ITeye博客 ](http://kidneyball.iteye.com/blog/1828427 "IdeaVim插件使用技巧 - - ITeye博客") 更多使用技巧见这里。 52 | - [IdeaVim 进阶配置 - 简书](https://www.jianshu.com/p/ddd56ceeb83d "IdeaVim 进阶配置 - 简书") -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/Notion笔记本教程.md: -------------------------------------------------------------------------------- 1 | # Notion 2 | 3 | 4 | 5 | 看完下面的文章基本也就入门Notion了。 6 | 7 | 本人的Notion上也有一篇入门文章。 8 | 9 | 10 | 11 | - [Notion 使用详解:来自未来的笔记协作工具 - 少数派](https://sspai.com/post/52176) 12 | 13 | - [待办、笔记、协作样样精通,这个七合一全能型 App 究竟有多好用? | 爱范儿](https://www.ifanr.com/app/1157944) 14 | 15 | - [Notion:重新定义数字笔记 - 少数派](https://sspai.com/post/39694) 16 | 17 | - [Notion完全手册 - 知乎](https://zhuanlan.zhihu.com/c_1109472766285398016) 18 | 19 | - [加入表格、看板和日历,更全能的数字笔记工具:Notion 2.0 - 少数派](https://sspai.com/post/43774) 20 | 21 | - [高效工作必备,手把手教你玩转 Notion 模板(附下载) | 爱范儿](https://www.ifanr.com/app/1168845) 22 | 23 | 24 | 25 | [5 款 Notion 模板推荐 & Notion 团队专访 - 少数派](https://sspai.com/post/57092) 26 | 27 | [三个场景,带你学会使用 Notion 分栏 - 少数派](https://sspai.com/post/57110) 免费 28 | 29 | 30 | 31 | > [Notion会员 无限Block 个人 团队 制定-淘宝网](https://item.taobao.com/item.htm?id=585421128964) 32 | > 33 | > Notion会员4年128元,https://notionservice.taobao.com/ 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/PlantUML.md: -------------------------------------------------------------------------------- 1 | # PlantUML 2 | 3 | 标签(空格分隔): 开发工具 4 | 5 | --- 6 | 7 | ## PlantUML 8 | 9 | [PlantUML](http://plantuml.com/) 10 | 11 | [PlantUML Language Reference Guide中文版](http://translate.plantuml.com/zh/PlantUML_Language_Reference_Guide_ZH.pdf) 12 | 13 | 14 | 15 | 一些教程和示例: 16 | 17 | - [PlantUML · 语雀](https://www.yuque.com/yuque/help/editor-puml) 18 | 19 | 20 | 21 | ## 在线PlantUML 22 | Codeuml 是一个基于Web的UML设计工具,Codeuml 使用开源的 plantuml 引擎来将文本转成 UML图例 。 23 | 24 | 25 | - [plantuml](http://www.plantuml.com/plantuml/uml/) 26 | 27 | 28 | 更多在线PlantUML 29 | 30 | 31 | 32 | 33 | 34 | ## UML工具 35 | [UML工具列表](http://www.cnblogs.com/tmeily/p/4464251.html) 36 | 37 | 38 | - [Astah Community](http://astah.net/editions/community),旧名称JUDE – community 39 | - AndroMDA 3.4 40 | 41 | -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/UML工具.md: -------------------------------------------------------------------------------- 1 | # UML工具 2 | 3 | 4 | 5 | ## revese code Java to UML 6 | 7 | 8 | 9 | ## StarUML revese code Java to UML 10 | 11 | 从Java Code 中生成UML图 12 | 13 | 1. 先安装插件:Tools -> Extension Manager -> Java 。插件描述:Java code generation and reverse engineering. 14 | 2. 打开插件: Tools -> Java -> Reverse code 15 | 3. 在Model Explorer中双击 Package Structure 或 Type Hierarchy 或 ... 进行查看 16 | 17 | 18 | ## Bouml 19 | 20 | 另外两个工具 : Bouml、 21 | 22 | [Starting with Bouml - YouTube](https://www.youtube.com/watch?v=nG_aPqkEkdQ "Starting with Bouml - YouTube") 23 | 24 | 25 | [Reverse Engineering using BOUML tutorial - Showmedo video - YouTube](https://www.youtube.com/results?search_query=bouml+reverse) 26 | 27 | 1. 新建工程: 点击 Project -> New -> 新建一个文件夹 28 | 2. 选择编程语言: Languages -> 这里选择 Java .... (可以选择多种语言) 29 | 3. 右键工程名称 -> Reverse -> Java Catalog -> 接下来扫描Scan Java源码所在工程 -> 点击保存 -> 保存 Java Catalog 文件 30 | 4. The main goal of Java catalog is to send a class or all the classes under a package and its sub-packages to BOUML, using the menu appearing with a right mouse button click on a class or a package into the Java catalog browser 31 | 5. 右键点击发送 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | ## Umbrello UML Modeller 40 | 41 | 42 | 43 | 在windows上体验了一下感觉不错。 44 | 45 | 46 | 47 | 48 | 49 | ## PlantUML 50 | 51 | 在AndroidStudio中使用PlantUML 52 | 53 | [AndroidNote/HowToUsePlantUMLInAS.md at master · GcsSloop/AndroidNote](https://github.com/GcsSloop/AndroidNote/blob/master/Course/HowToUsePlantUMLInAS.md "AndroidNote/HowToUsePlantUMLInAS.md at master · GcsSloop/AndroidNote") 54 | 55 | 56 | 57 | 58 | 59 | ## Visual Paradigm 60 | 61 | Visual Paradigm这个很大400M 但功能强,而且收费。 62 | 有社区版:[Download Visual Paradigm Community Edition](https://www.visual-paradigm.com/download/community.jsp) 63 | 64 | 65 | Integrate Visual Paradigm with Android Studio 集成到AS 66 | 67 | Linux和Mac用户可以简单地将VP与Android Studio集成,无需额外的配置 68 | 69 | ![](https://i.stack.imgur.com/Ndk78.png) 70 | ![](https://i.stack.imgur.com/xi6eu.png) 71 | 72 | 由于 VP 需要向 AS程序目录中添加文件,确保该程序是否有这个权限(尝试一下便知)。 73 | 74 | 75 | 76 | 一些功能社区版不行,要标准版才支持。 77 | 78 | 79 | 80 | [Reverse Java Classes to Class and Sequence Diagram - YouTube](https://www.youtube.com/watch?v=udfjekpEDak "Reverse Java Classes to Class and Sequence Diagram - YouTube") 81 | 82 | 83 | 84 | 85 | ## ArgoUML 86 | 87 | -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/assets/Typora_2019-11-08_05-47-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/编辑器与IDE/assets/Typora_2019-11-08_05-47-29.png -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/assets/image-20191107210106946.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/开发工具/编辑器与IDE/assets/image-20191107210106946.png -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/emacsNote: -------------------------------------------------------------------------------- 1 | 快速简单的使用 emacs 2 | emacs 中使用 fcitx 方法: 3 | http://blog.csdn.net/pcliuguangtao/article/details/6264832 4 | 5 | 6 | www.cbi.pku.edu.cn/chinese/documents/csdoc/emacs/ 7 | 8 | 9 | 10 | 11 | 快捷键: 12 | ======= 13 | 掌握emacs的快捷键是基本功, Emacs的快捷键都是绑定于 Ctrl和alt(或称meta)上的。 14 | 在表述时 15 | c 代表ctrl 16 | m 代表alt 17 | 18 | 19 | 帮助: 20 | ------ 21 | c-h r 打开emacs手册 22 | c-h f 查找一个函数的用法 23 | c-h k 查找快捷键的用途 24 | c-h a 查找匹配的命令 25 | c-h ? 显示帮助的帮助,说明帮助的用法 26 | 27 | 28 | 文件操作: 29 | --------- 30 | c-x c-f 打开一个文件 31 | c-x c-v 打开一个文件取代当前缓冲区 32 | c-x c-s 保存文件 33 | c-x c-w 存为新文件 34 | c-x i 插入文件 35 | c-x c-q 切换为只读或者读写模式 36 | c-x c-c 退出emacs,另见shell模式,此即为Bash下的C-z 37 | 38 | 39 | 编辑操作: 40 | --------- 41 | C-f 前进一个字符 42 | C-b 后退一个字符 43 | C-p 后退一行 44 | C-n 前进一行 45 | 46 | M-f 前进一个单词 47 | M-b 后退一个单词 48 | 49 | C-a 移动到行首 50 | C-e 移动到行尾 51 | M-a 移动到句首 52 | M-e 移动到句尾 53 | 54 | 55 | C-v 向下翻页 56 | M-v 向上翻页 57 | 58 | 59 | M-x goto-line 跳到指定行 60 | 61 | 62 | 63 | C-d 删除一个字符 delete 64 | M-d 删除一个单词 65 | C-k 删除一行 kill 66 | M-k 删除一句 67 | C-y 粘贴删除的内容 68 | C-w 删除标记区域 69 | ..... 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/sublime_text: -------------------------------------------------------------------------------- 1 | 解决Ubuntu中 sublime text 使用 fcitx 无法输入中文的问题 2 | 3 | 4 | 参考: 5 | 6 | 7 | 8 | 不适用 9 | 10 | ![](assets/123-1573133970196.png) -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/字体收集.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "字体收集" 3 | date: 2019-11-26 4 | description: "收集一些自己喜欢的字体" 5 | keywords: [""] 6 | toc: true 7 | draft: true 8 | comments: true 9 | tags: 10 | - 11 | series: 12 | - 13 | categories: 14 | - 15 | --- 16 | 17 | 18 | 19 | ## 字体下载 20 | 21 | 这里使用 scoop 下载,下载前需要先添加 `nerd-fonts` bucket 22 | 23 | ```shell 24 | scoop bucket add nerd-fonts 25 | ``` 26 | 27 | 并且需要使用管理员权限进行全局安装 28 | 29 | 使用 scoop 搜索字体时,会发现很多字体有多个版本,比如有些带有 `-NF` 后缀 30 | 31 | ```shell 32 | $ scoop search Fira 33 | 'nerd-fonts' bucket: 34 | FiraCode-NF (2.0.0) 35 | FiraCode (2) 36 | FiraMono-NF (2.0.0) 37 | ``` 38 | 39 | 40 | 41 | > NF:Nerd Fonts ,注意 bucket 的名字也叫 nerd-fonts 42 | > 43 | > [Nerd Fonts](https://www.nerdfonts.com/) 是一个使用大量字体图标来解决程序员在开发过程中缺少合适字体的问题的项目 [nerd-fonts](https://gitee.com/mirrors/nerd-fonts) ,为现有字体打了补丁。 44 | 45 | 46 | 47 | 48 | 49 | 安装字体: 50 | 51 | ```shell 52 | scoop install sudo 53 | sudo scoop install FiraCode-NF --global 54 | ``` 55 | 56 | 57 | 58 | 59 | 60 | ## 编程字体 61 | 62 | 63 | 64 | [Programming Fonts - Test Drive](https://app.programmingfonts.org/#firacode) :编程字体在线测试 65 | 66 | 67 | 68 | - mononoki :[mononoki](http://madmalik.github.io/mononoki/) 69 | 70 | - Fira Code :[FiraCode](https://github.com/tonsky/FiraCode)(用的人很多) 71 | 72 | - **Cascadia Code**(微软最新2019打造,并具有编程连字显示功能,还在不断更新中) 73 | 74 | - Consolas 75 | 76 | - SpaceMono 77 | 78 | - OpenDyslexic :感觉这个字体很有趣 79 | 80 | - Monoid 81 | 82 | - Hurmit 83 | 84 | 85 | 86 | 87 | 88 | 测试文字: 89 | 90 | ```python 91 | ABCDEFGHIJKLMNOPQRSTUVWYXZ 92 | abcdefghiJklmnopqrstuvwxyz 93 | !@#$%^&*()_+-=./?<>{}[]\| 94 | 1234567890 95 | oO08 iIlL1 {} g9qCGQ sS5fj ~-+=> 96 | 97 | #This is a comment 98 | def expenses 99 | @expenses ||= user.expenses.find(:all, 100 | :conditions => conditions, 101 | :order => "created_at ASC") 102 | end 103 | ``` 104 | 105 | 106 | 107 | ## 中文字体 108 | 109 | 110 | 111 | - 思源宋体、思源黑体 112 | - 更纱黑体 113 | - 方正稚艺简体(不可商用) 114 | - 苹方 115 | - 站酷文艺体 116 | - [Hybrid-fonts | Monospaced fonts patched with Chinese characters and extra glyphs from Nerd Fonts](https://m8524769.github.io/Hybrid-fonts/) 117 | 118 | -------------------------------------------------------------------------------- /开发工具/编辑器与IDE/知识库.md: -------------------------------------------------------------------------------- 1 | # 知识库 2 | 3 | 4 | 5 | 随着笔记文件越来越多,使用Typora管理起来似乎也越来越麻烦,但好在Typora的新版本中已经具备文件名和文件内容的查找功能。 6 | 7 | 8 | 9 | 同时也了解到了 [语雀 - 专业的云端知识库](https://www.yuque.com/) 这款产品,并且个人免费。 10 | 11 | 12 | 13 | 但是由于个人情节,还是不肯放弃将笔记存放在Github,所以这里还需要考虑如何同步语雀中的内容,以及之前笔记中的图片链接问题?阮大侠又是如何同步的? 14 | 15 | 16 | 17 | 如果语雀会将文中图片链接进行和简书类似的转换,那么将来导出文章时会出现问题。 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /微服务架构相关技术/网易Java高级06-基于MQ的分布式事务解决方案.md: -------------------------------------------------------------------------------- 1 | # 基于MQ的分布式事务解决方案 2 | 3 | RabbitMQ:Spring同一公司开发(Rabbit:兔子) 4 | 5 | RocketMQ:阿里开源 (Rocket:火箭) 6 | 7 | 8 | 9 | 10 | 11 | 分布式事务的几种解决方案:图 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ## 介绍RabbitMQ用于解决分布式事务必须掌握的5个核心概念 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | ## 分布式事务是一个业务问题,不能脱离具体场景 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | ## 通过MQ解决分布式事务的5个步骤和注意事项 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | ## MQ方案的优点和缺点 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | > ### TCC分布式事务(补充) 54 | > 55 | > -------------------------------------------------------------------------------- /微服务架构相关技术/网易Java高级二.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 并发编程之 volatile 关键字 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | # 高并发订单号生成策略 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | # MySQL数据库优化和SQL优化 22 | 23 | 24 | 25 | 26 | 27 | 前半部分介绍索引 28 | 29 | 30 | 31 | 32 | 33 | ## Mysql执行计划 34 | 35 | 其它数据库都有执行计划。 36 | 37 | 38 | 39 | 分库分表 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /运维/Linux/2016-09-16-Linux终端录制.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Linux终端录制" 4 | description: "Linux终端录制的相关软件" 5 | date: 2016-09-16 6 | tags: [Linux软件] 7 | category: Linux 8 | last_updated: 2017-07-23 9 | comments: true 10 | share: true 11 | --- 12 | 13 | 14 | * Kramdown table of contents 15 | {:toc .toc} 16 | 17 | 18 | # Linux终端录制 19 | 20 | ## Script 21 | 参考: [Linux终端录屏与播放 script 命令](http://zhang789.blog.51cto.com/11045979/1840257) 22 | 23 | 简单说下命令的参数: 24 | 25 | - -t 是把时间数据输出到标准错误(standard error), 所以要用 2>/tmp/time.txt 把数据重定向到文件中, 一些情况下不需要重放,只要记录操作和输入输出,就可以不指定这个参数 26 | - -a 追加内容到文件,不会覆盖之前的记录 27 | - -q 安静模式,不会提示用户script在运行 28 | - -f 在每次写入后清屏,在配合管道使用时很有用 29 | - -c 这些非交互式的运行命令或脚本 在一些程序或脚本在后台运行时很有用 30 | 31 | 32 | 33 | ### 使用script录制 34 | ``` 35 | # 直接使用script命令,使用默认文件typescript来保存录制内容 36 | script 37 | # 指定文件名test 38 | script test 39 | ``` 40 | 41 | 只有同时保存时间文件才可以用scriptreplay进行回放。 42 | 43 | 使用如下命令同时输出时间文件: 44 | 45 | ``` 46 | script -t timingfile -a scriptfile 47 | ``` 48 | 49 | 50 | ### 使用scriptreplay回放 51 | ``` 52 | script timingfile scriptfile 53 | ``` 54 | 55 | 56 | 57 | ## asciinema 58 | 优点: 59 | 60 | - 可以上传到网站,进行分享 61 | - 可以直接复制,录制影像中的命令 62 | 63 | 缺点: 64 | 65 | - 不能快进 66 | 67 | 68 | 参考:[asciinema.org录制终端演示,支持实时复制代码](http://51.ruyo.net/p/3705.html) 69 | 70 | 71 | 72 | ### Ubuntu 16.04安装asciinema 73 | 一定通过如下方式安装最新版: 74 | 75 | ``` 76 | sudo apt-add-repository ppa:zanchey/asciinema 77 | sudo apt-get update 78 | sudo apt-get install asciinema 79 | ``` 80 | 81 | 如果使用`sudo apt install asciinema`安装的只是0.9版本,功能不全,不能保存到本地。 82 | 83 | ### 将录制文件保存在本地 84 | 指定文件名: 85 | ``` 86 | asciinema rec test.json 87 | ``` 88 | 89 | **注意:**录制前请先调整好终端的大小因为最终播放窗口的大小是由它决定的。 90 | 91 | ### 上传到网站 92 | 93 | - 先在网站上注册asciinema用户:直接填写邮箱名称,然后点击邮箱接收到的链接即可。(保持登录状态) 94 | - 关联asciinema用户:在本地电脑运行:`asciinema auth`会产生一个链接,在浏览器中打开此链接,即可关联用户。 95 | - 上传本地已经录制好的文件: `asciinema upload testFile.json` 96 | - 或者直接上传本次录制:`asciinema rec -t "My First ..."`,`-t`选项用于设置上传到asciinema网站时使用的标题。 97 | 98 | 99 | ### 播放录制内容 100 | 101 | 播放本地录制文件中的内容: 102 | ``` 103 | asciinema play test.json 104 | ``` 105 | 106 | 播放asciinema网站上的录制内容: 107 | ``` 108 | asciinema play https://.... 109 | ``` 110 | 111 | 112 | 113 | 114 | 115 | ## termtosvg 116 | 117 | 118 | 119 | https://github.com/nbedos/termtosvg 120 | 121 | termtosvg是一个用Python编写的Linux终端记录器,它能够将命令行会话呈现为独立的SVG动画。 122 | 123 | -------------------------------------------------------------------------------- /运维/Linux/2017-08-18-Linux中网页等宽字体显示不正常.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Linux的浏览器中等宽字体显示不正常的问题" 4 | description: "在Ubuntu下查看简书、掘金和自己的个人博客时代码总是不能正常显示为等宽字体" 5 | date: 2017-08-18 6 | tags: [字体] 7 | category: Linux 8 | last_updated: 2017-08-18 9 | comments: true 10 | chare: true 11 | --- 12 | 13 | * Kramdown table of contents 14 | {:toc .toc} 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 在Ubuntu下查看简书、掘金和自己的个人博客时代码总是不能正常显示为等宽字体,让人感觉不爽。甚至让我产生了如下想法:为什么在简书中浏览代码时的体验明明如此之差,但还是有这么多人在上面发布技术博客?要是我就绝不在简书上发布博客。 24 | 25 | 直到某次在手机上查看自己的博客时发现等宽字体可以正常显示。 26 | 27 | 28 | 29 | 最后发现只需要修改各浏览器的最小字体即可解决该问题。 30 | 31 | 32 | 33 | 34 | ## 修改前 35 | 36 | 观察下面的图片可以发现,网页中代码设置的默认字体就是13px 。 37 | 38 | 简书: 39 | 40 | ![](https://faner.gitlab.io/assets/images/post-images/简书-Chrome-等宽字体-调整前.png) 41 | 42 | 掘金: 43 | 44 | ![](https://faner.gitlab.io/assets/images/post-images/掘金-等宽字体-14.png) 45 | 46 | 47 | 48 | ## 更改浏览器的最小字体为13 49 | 50 | 设置Chrome的最小字体为13 51 | 52 | ![](https://faner.gitlab.io/assets/images/post-images/Chrome设置最小字体为13.png) 53 | 54 | 55 | 设置Firefox的最小字体为13 56 | 57 | ![](https://faner.gitlab.io/assets/images/post-images/Firefox设置最小字体为13.png) 58 | 59 | 60 | ## 修改后 61 | 62 | 简书: 63 | 64 | ![](https://faner.gitlab.io/assets/images/post-images/简书-等宽字体-13.png) 65 | 66 | 掘金: 67 | 68 | ![](https://faner.gitlab.io/assets/images/post-images/掘金-等宽字体-13.png) 69 | 70 | 71 | 72 | 73 | 74 | > 附:个人感觉较好的Chrome字体设置(对比过多个网站的) 75 | > 76 | > Chrome自定义字体页面: 77 | > 78 | > 字号:18(拖动到18) 79 | > 80 | > 最小字体: 13 81 | > 82 | > 标准字体: 方正黑体简体 83 | > 84 | > Serif字体: Time New Roman 85 | > 86 | > Sans-serif字体:Noto Sans CJK SC 87 | > 88 | > 固定宽度的字体: Monospace -------------------------------------------------------------------------------- /运维/Linux/Dia.md: -------------------------------------------------------------------------------- 1 | dia 2 | ===================== 3 | sudo apt-get install dia -y 4 | 5 | ##解决Ubuntu下Dia中文输入问题(不能输入中文) 6 | 7 | ``` 8 | sudo vim /usr/bin/dia 9 | ``` 10 | 11 | 修改:`dia-normal --integrated "$@"` 为 `dia-normal "$@"` 12 | 即删除 --integrated 13 | 14 | 再打开Dia,在其菜单栏中选择“输入法” --> “选择系统默认”即可输入中文。 15 | 16 | 其中系统输入法是fcitx输入法 17 | 18 | ##Windows中输入中文只需修改,“输入法” --> 选择“简单”或“无” 19 | 20 | 21 | Dia的一些用法总结 22 | ---------------------------- 23 | **参考Dia帮助文档** 24 | 25 | ###1. 多选 26 | 按住shift键选择对象可以多选,或直接框选也可进行多选。多选之后可以通过“对象”-->“对齐”中选择对齐方式。 27 | 28 | ###2. 对齐网格按钮 29 | 可对齐网格功能。在“文件”-->“图表属性”中设置网格线(比如使用六角网格,网格大小) 30 | 31 | ###3. 对象捕捉 32 | 开启对象捕捉。(开启对象捕捉可上对象捕捉更加方便,它能快速捕捉到连接点)详情见后面的连接对象部分。 33 | 34 | ###4. 修改绘图对象的方式 35 | 是通过修改其属性来完成的,可双击该对象或右键选择修改属性。 36 | 37 | ###5. 鼠标中键可移动视图区。 38 | 39 | ###6. 管理图层(Canvas)。 40 | 41 | 42 | 43 | Dia工具箱概述: 44 | ------------------------ 45 | 46 | ###7. Dia Toolbox(工具箱) 47 | 中包含基础对象和特殊对象(如UML、流程图) 48 | 49 | ###8. 选择控制(及箭头图标) 50 | 在选择了一个对象并放置在图层之后,默认又回到选择控制。如果想再次插入同样的对象可以直接按下Space键(空格键)。 51 | 52 | ###9. 颜色、线宽、线样式 53 | 颜色部分包含“颜色修改”“反转颜色”“恢复默认颜色”三个小图标。 54 | 55 | 56 | 使用对象 57 | ---------------------- 58 | ###1. 添加对象 59 | 点击图标,选择插入点。按空格键快速插入同一个对象。通过复制非默认设置的对象,可以加快编辑速度。 60 | 即别忘了复制粘贴功能的使用。 61 | 62 | ###2. 移动对象 63 | 点击对象非连接点的位置,连接点(对象句柄,正方形的点) 64 | 65 | ###3.调整对象大小 66 | 通过对象句柄来控制。 67 | 68 | ###4.连接对象 69 | **对象上的连接点是只对象上带x的点。连接对象只能连接到这些点上。** 70 | 对于基本对象,可以通过右键菜单为对象添加连接点。 71 | (见4.2.5Connecting Objects With Lines),如果连接到对象者句柄显示红色,未连接则显示绿色。 72 | **连接分成两种状况:1.连接到对象的边框上的某个固定点(在捕捉时显示对象边框高亮变红)。2.连接到对象的中心点(在捕捉时对象高亮变成橙色)** 73 | **这两种连接情况将导致被连接对象位置发生移动时产生不同效果。** 74 | 75 | 开启对象捕捉对连接对象的帮助: 76 | 能快速捕捉到连接点。 77 | 78 | ###5.对象对齐 79 | 在“对象”-->“对齐”中分了三种对齐方式:第一种表示垂直方向;第二种表示水平方向。3略。 80 | 81 | 82 | 83 | 84 | 85 | 注意事项 86 | ----------------------- 87 | 标尺:默认单位为厘米。但是不同的电脑屏幕显示时是不一样的;如果希望屏幕显示与实际尺寸相同,则需调整缩放比。 88 | 默认图层非常大,其中每一个蓝色线框表示一个A4纸张中除去设置的页边距后可绘制图形的大小,缩放其到实际A4纸张差不多时其尺寸就与实际尺寸也有70%相同了。 89 | 华硕X45V 14寸 放大到 230%就差不多了(可能还要小一点) 90 | 91 | 其中“文件”-->“页面设置”处设置页边距(这里也有**蓝色边框**)。 92 | 93 | 94 | -------------------------------------------------------------------------------- /运维/Linux/Linux官方Doc.md: -------------------------------------------------------------------------------- 1 | # 各Linux发行版的官方文档地址和使用指南 2 | 3 | ## Red_Hat_Enterprise_Linux Documentation 4 | 个人目前见过的最好的文档,有中文支持,可下载,整理的较好。 5 | 6 | 示例:[1](https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Security_Guide/index.html) 7 | 8 | 9 | ## Fedora Documentation 10 | 网站[Fedora Documentation](docs.fedoraproject.org) 11 | 不习惯;可下载。 12 | 它按不同的版本区分,然而每个版本下却不会包含全部内容。 13 | 比如你要找 Security Guide ,你需要到19下面去找,而最新版的24下面却没有。其它方面的内容就好一点。 14 | 15 | > Fedora wiki : 还不错可以进行搜索,文章也不错,[网站](https://fedoraproject.org/wiki/Fedora_Project_Wiki) 16 | >注意它的搜索框放在了左下角的位置,有点不大好找。 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /运维/Linux/Linux终端配置.md: -------------------------------------------------------------------------------- 1 | # Linux下的终端配置 2 | 3 | 4 | 5 | ## Powerline字体安装 6 | 7 | 先配置主题 8 | 9 | - 打开 [Powerline](https://github.com/powerline/fonts) ,并参照上面的安装方法进行安装 10 | 11 | 12 | 13 | ## shell选择 14 | 15 | 16 | 17 | ### bash 18 | 19 | 略 20 | 21 | 22 | 23 | ### zsh 或 Oh My Zsh 24 | 25 | Zsh 兼容 Bash,据传说 99% 的 Bash 操作 和 Zsh 是相同的。 26 | 27 | 安装方法,需要 git 28 | 29 | ``` 30 | wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh 31 | ``` 32 | 33 | 34 | 35 | ```shell 36 | # 查看当前有哪些shell 37 | cat /etc/shells 38 | # 当前使用的shell 39 | echo $SHELL 40 | # 当前可用主题(一大把) 41 | ls ~/.oh-my-zsh/themes 42 | # 插件目录 ~/.oh-my-zsh/plugins 43 | 44 | # 安装autojump(还需要配置见链接,windows中居然有个Clink见autojump的github页面) 45 | yum install autojump-zsh 46 | ``` 47 | 48 | 49 | 50 | - 在以 **root 用户为前提**下,oh-my-zsh 的安装目录:/root/.oh-my-zsh 51 | - 在以 root 用户为前提下,Zsh 的配置文件位置:/root/.zshrc 52 | - 为 root 用户设置 zsh 为系统默认 shell:`chsh -s /bin/zsh root` 53 | - 如果你要重新恢复到 bash:chsh -s /bin/bash root 54 | 55 | 56 | 57 | zshrc的配置: 58 | 59 | ```shell 60 | # 从上到下,尽量把这些配置放在相应位置 61 | 62 | # zhs的主题,需要终端配置为 256 ... 63 | ZSH_THEME="ys" 64 | # 使用随机主题 65 | ZSH_THEME="random" 66 | 67 | # 插件需要提前下载 68 | # z命令快速跳转目录 x命令解压一切文件 命令行可以直接google 69 | plugins=( 70 | git z zsh-autosuggestions extract web-search zsh-syntax-highlighting 71 | ) 72 | 73 | # 自动更新的时间间隔,单位是天,这里设置 30 天更新一次 74 | export UPDATE_ZSH_DAYS=30 75 | ``` 76 | 77 | 78 | 79 | [Linux | zsh+on-my-zsh 配置 | 醉渔小站](https://zuiyu1818.cn/posts/zsh.html) 80 | 81 | ### fish shell 82 | 83 | 可以通过输入`fish_config` 命令会启动web管理界面,比如可以在该配置界面选择主题 84 | 85 | 优势: 86 | 87 | - 语法高亮:错误命令显示红色 88 | - 通配符:集成find命令,搜索方便。比如 `ls **.json` 同时会搜索非本目录 89 | - 智能建议:选择建议的方法是 按 右箭头 90 | - set赋值:通过set代替 = 对应变量赋值。没有`export`需要用`set -x`代替 91 | 92 | 缺点: 93 | 94 | - 对 bash 脚本兼容性差。 95 | 96 | > 靠不想用 97 | 98 | 其配置文件位于 `~/.config/fish` 目录下,其配置方式和 bash 不同。 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /运维/Linux/Shadowsocks.md: -------------------------------------------------------------------------------- 1 | # Shadowsocks 2 | 2016.09.13 获得小康赠送的一个帐号。他自己买的。 3 | 4 | [Shadowsocks download](https://shadowsocks.org/en/download/clients.html) 5 | [Shadowsocks Quick Guide](https://shadowsocks.org/en/config/quick-guide.html) 6 | [Shadowsocks GitHub wiki](https://github.com/shadowsocks/shadowsocks-qt5/wiki/Installation "参考这个") 7 | 8 | 他发给我的是一张二维码,扫描后得到类似如下形式的字符: 9 | ``` 10 | ss://1jZmI6c3Bhcmt2cHNANDUuMzluMTI4LjI1Mzo4Mzg4YWVzLTI1Ni 11 | ``` 12 | 13 | 这是使用BASE64编码过的URI,而其解码后得到如下的格式的一串字符: 14 | 15 | 解码方法: 16 | echo ss://1jZmI6c3Bhcmt2cHNANDUuMzluMTI4LjI1Mzo4Mzg4YWVzLTI1Ni | base64 -d 17 | 解码后得到如下格式的字符串(只是一个示例): 18 | ss://method[-auth]:password@hostname:port 19 | 20 | 例如: 21 | 22 | ss://bf-cfb-auth:test@192.168.100.1:8888 23 | 24 | 那么它在图形配置窗口中代表的意思: bf-cfb 代表加密方式;auth代表可选的一次验证;test为密码;192.168.100.1为服务器地址;8888为服务器端口。 25 | 26 | 27 | ## Shadowsocks的安装 28 | 29 | ### Command-line Client 30 | 31 | - pip install shadowsocks 32 | - apt-get install shadowsocks-libev 33 | 34 | 好吧在Ubuntu 16中并没有发现shadowsocks-libev,但发现了 shadowsocks 。 35 | 36 | ### GUI Client 37 | 38 | 1. Ubuntu 16 39 | 40 | ``` 41 | sudo add-apt-repository ppa:hzwhuang/ss-qt5 42 | sudo apt-get update 43 | sudo apt-get install shadowsocks-qt5 44 | ``` 45 | 46 | 安装Shadowsocks-Qt5后点击 "连接" --> "添加" --> "URI" 然后直接将扫描出来的字符串粘贴上它会自动进行解码并进行设置。 47 | 48 | 49 | 默认 50 | 本地地址为: 127.0.0.1 51 | 本地端口为: 1080 52 | 53 | 为了与XX-Net的一致,我将本地端口改为 8087 54 | 更改的是 .profile文件 55 | 56 | 57 | ### SwitchyOmega配置 58 | 之前使用XX-Net的配置都下载备份到 Download 目录,它使用的规则列表网址为: 59 | https://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt 60 | 61 | 然后参考了[此处](https://aitanlu.com/ubuntu-shadowsocks-ke-hu-duan-pei-zhi.html) 62 | 新增了一个情景模式:Shadowsocks-qt5 63 | 规则列表网址改为: 64 | https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt 65 | -------------------------------------------------------------------------------- /运维/Linux/UNIX操作系统设计.md: -------------------------------------------------------------------------------- 1 | 《UNIX操作系统设计》 2 | ======================== 3 | 4 | 5 | The Design of the UNIX Operating System 6 | [美]Maurice J. Bach 著 7 | Copyright © 1986 by Bell Telephone Laboratories, Incorporated. 8 | Copyright © 1990 by Prentice Hall PTR. 9 | Copyright © 2000 by China Machine Press. 10 | 机械工业出版社,2000.4 11 | 12 | 13 | 14 | 15 | [toc] 16 | 17 | 18 | 19 | 20 | 时间 2015.8.3 21 | 22 | 第1章 系统概貌 23 | ---------------- 24 | 25 | ###系统结构 26 | 27 | 28 | 29 | ###用户看法 30 | 31 | 路径名是一个分量名序列,各分量名之间用斜杠隔开。分量是一个字符序列。 32 | 33 | 34 | 在UNIX系统中,程序不了解核心按怎样的内部格式存储文件,而把数据作为无格式的字节流看待。 35 | 程序可以按自己的意愿去介绍字节流,但这种解释与操作系统如何存储数据无关。 36 | 因此,对文件中数据进行存取的语法是由系统决定,并且对于所有的程序都相同;但是数据的语义是由程序加上去的。 37 | 38 | 39 | 思考以下命令: 40 | 41 | ``` 42 | cp /dev/tty terminalread 43 | cp /dev/tty /dev/tty 44 | ``` 45 | 46 | 47 | 48 | 49 | 50 | 51 | shell的内部命令不仅使shell是命令解释程序,而且是一种程序设计 52 | 语言,它包括用于循环的命令(for-in-do-done和while-do-done),用于条件执行的命令 53 | (if-then-else-fi),一个选择(case)语句命令,cd命令和其他一些命令。 54 | 55 | 56 | 通常shell 是同步的执行一个命令,要等候一个命令执行完毕再去读下一个命令。 57 | 它也允许异步执行,当它不等待前一个命令执行完毕就去读下一个命令行;异步执行的命令 58 | 被说成是在后台执行的。 59 | 60 | 61 | 62 | 63 | 64 | ###操作系统服务 65 | 66 | 67 | 68 | 69 | ###关于硬件的假设 70 | 71 | 72 | 73 | 74 | 第2章 内核导言 75 | ----------------- 76 | 77 | 78 | 79 | ###UNIX操作系统的体系结构 80 | 81 | 82 | 83 | 84 | 85 | ###系统概念介绍 86 | 87 | 88 | 89 | ###内核数据结构 90 | 91 | 92 | 93 | 94 | 95 | ###系统管理 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 第3章 数据缓冲区高速缓冲 105 | ----------------------- 106 | 107 | ###缓冲头部 108 | 109 | 110 | 111 | 112 | ###缓冲池的结构 113 | 114 | 115 | 116 | 117 | ###缓冲区的检索 118 | 119 | 120 | 121 | 122 | ###读磁盘块与写磁盘块 123 | 124 | 125 | 126 | 127 | ###高速缓冲的优点与缺点 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /运维/Linux/UbuntuShortcut.md: -------------------------------------------------------------------------------- 1 | Ubuntu 系统快捷键 2 | =============== 3 | 4 | 时间 2015.8.4 5 | 6 | 7 | 窗口 8 | ======= 9 | 10 | | 操作 | 快捷键 | 11 | |-------------|--------------------| 12 | |激活窗口菜单 | Alt + 空格 | 13 | | 切换最大化状态 | Ctrl + Alt + 5 | 14 | |最大化窗口 | Ctrl+Super+上 | 15 | |恢复窗口 | Ctrl+Super+下| 16 | |切换阴影状态 | Ctrl+Alt+S | 17 | |关闭窗口 | Alt+F4 | 18 | |最小化窗口 | Ctrl+Alt+0 | 19 | |移动窗口 | Alt+F7 | 20 | |调整窗口大小 | Alt+F8 | 21 | | 将窗口左移一个工作区 | Shift+Ctrl+Alt+左 | 22 | | 将窗口右移一个工作区 | Shift+Ctrl+Alt+右 | 23 | |隐藏全部正常窗口 | Ctrl+Super+D | 24 | |切换至工作区1 | Ctrl+1 | 25 | |切换至工作区2 | Ctrl+2 | 26 | |切换至左侧工作区 |Ctrl+Alt+左 | 27 | |切换至右侧工作区| Ctrl+Alt+右 | -------------------------------------------------------------------------------- /运维/Linux/assets/Linux目录结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/运维/Linux/assets/Linux目录结构.png -------------------------------------------------------------------------------- /运维/Linux/backuphome.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | echo "备份home中必要的文件夹" 4 | 5 | cd ~ 6 | 7 | basedir = "/home/fan/" 8 | 9 | # 由于home空间较大,建议分类分别归档 10 | 11 | # 坑人的选项顺序: f 选项必须放在最后,然后接文件名 12 | 13 | # .AndroidStudio* 只保留一个版本 14 | 15 | tar -cvpf homebackup.tar Anki apktool .aria2 .asciinema .backup .bash_history .bashrc .bundle Desktop Documents .dia .eclipse .emacs .emacs.d .fbtermrc .filezilla .fonts .freemind FreeMind .gem .gemrc .Genymobile .gitconfig .git-credentials .gitignore_global .gnupg .goldendict history.db .icons .java .m2 .mirror .mozilla .mplayer .my.cnf .mysql_history Pictures .profile .putty .sogouinput .sqlsecrets .sqlworkbench .squirrel-sql .ssh .sunpinyin .thumbnails .thunderbird .tmux.conf .vim .viminfo .vimrc .vscode 16 | 17 | tar -cvpf android.tar .android 18 | 19 | tar -cvpf Android.tar Android 20 | 21 | tar -cvpf AndroidStudio.tar .AndroidStudio* 22 | 23 | tar -cvpf gradle.tar .gradle 24 | 25 | tar -cvpf workspace.tar workspace 26 | 27 | tar -cvpf ~/vbox/tmp/configbackup.tar ~/.config/ 28 | 29 | # .cache还是必须归档 30 | tar -cvfp ~/vbox/tmp/cachebackup.tar ~/.cache 31 | 32 | # .tmux.conf .vim .viminfo .vimrc .vscode 33 | -------------------------------------------------------------------------------- /运维/Linux/base64.md: -------------------------------------------------------------------------------- 1 | # base64 2 | 3 | 在GitHub上看到有人这样写自己的联系方式: 4 | 5 | `echo aXp6eWxpYW5nQGdtYWlsLmNvbQo= | base64 --decode` 6 | 7 | 于是查询了一下`base64`这个命令的用法. 8 | 9 | 编码自己的邮箱如: 10 | 11 | `echo fan@gmail.com | base64` 12 | 13 | 得到如下结果: 14 | 15 | ZmFuQGdtYWlsLmNvbQo= 16 | 17 | 解码方法: 18 | 19 | `echo ZmFuQGdtYWlsLmNvbQo= | base64 -d` 20 | 21 | 22 | -------------------------------------------------------------------------------- /运维/Linux/blkid_uuid: -------------------------------------------------------------------------------- 1 | UUID : 通用唯一识别码 Universally Unique Identifiler 2 | 是一种软件建构的标准。 3 | 目的:是让分散式系统中的所有元素都能有唯一的辨识信息,而不需要通过中央控制端来做识别信息的指定。 4 | 应用:微软的 全局唯一标识符 GUID 、 Linux的ext3等文件系统、GNOME等 5 | 格式有所不同,有长有短。 6 | 随机UUID的重复率非常非常低 7 | 8 | ---------------------------------------------------------------------- 9 | 命令blkid 10 | 11 | blkid 打印块设备属性的命令行工具 12 | 语法: 13 | blkid -L label_name 查询此label的设备信息 14 | blkid -U uuid 类似上 15 | blkid -o 使用指定格式来显示输出 16 | list 输出格式对用户最友好 17 | full 默认格式 18 | value 对用户不友好 19 | -------------------------------------------------------------------------------- /运维/Linux/dd命令.md: -------------------------------------------------------------------------------- 1 | # dd命令 2 | 3 | dd 的其他作用 4 | 5 | 6 | 7 | 使用 Linux中 的 dd 命令 创建启动U盘 8 | 9 | **1.查看U盘设备号:**这里U盘为 `/dev/sdb` 10 | 11 | ```shell 12 | $ sudo fdisk -l 13 | 14 | Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors 15 | Units: sectors of 1 * 512 = 512 bytes 16 | Sector size (logical/physical): 512 bytes / 4096 bytes 17 | I/O size (minimum/optimal): 4096 bytes / 4096 bytes 18 | Disklabel type: dos 19 | Disk identifier: 0x69b53599 20 | 21 | 22 | Disk /dev/sdb: 7.4 GiB, 7948206080 bytes, 15523840 sectors 23 | Units: sectors of 1 * 512 = 512 bytes 24 | Sector size (logical/physical): 512 bytes / 512 bytes 25 | I/O size (minimum/optimal): 512 bytes / 512 bytes 26 | Disklabel type: dos 27 | Disk identifier: 0x0975cb23 28 | ``` 29 | 30 | 或者使用下面的命令查看: 31 | 32 | ```shell 33 | sudo parted -l 34 | ``` 35 | 36 | 37 | **2.卸载U盘:**(如果U盘被自动挂载) 38 | 39 | ```shell 40 | sudo umount /dev/sdb* 41 | ``` 42 | 43 | **3.格式化U盘[可选步骤]** 44 | 45 | 再格式化U盘:格式化为 FAT格式(Windows也能识别) 46 | 47 | ```shell 48 | sudo mkfs.vfat /dev/sdb –I 49 | ``` 50 | 51 | > 或许在格式化之前你还想先对U盘进行分区,这时可以先使用fdisk进行分区,之后再进行格式化。 52 | > 53 | > ```shell 54 | > $ sudo fdisk /dev/sdb 55 | > ... 56 | > # 进行一系列分区操作 57 | > 58 | > # 卸载U盘 59 | > $ sudo umount /dev/sdb* 60 | > # 格式化某分区 61 | > $ sudo mkfs.fat /dev/sdb1 62 | > ``` 63 | > 64 | > 65 | 66 | **4.制作启动U盘:** 67 | 68 | ```shell 69 | sudo dd if=~/Ubuntu_15_10_64.iso of=/dev/sdb 70 | ``` 71 | 72 | if 表示 input file(输入文件),if后面是输入的文件。 73 | 74 | of 表示 output file(输出文件),of后面是输出文件的位置。 75 | 76 | 经过一段时间(大约5~15分钟)的等待(dd没有任何输出提示),即可将 iso 文件写入 U盘。 77 | 78 | 79 | 80 | 因为是使用dd命令直接将将iso文件数据写入U盘,所以U盘不包含一个标准的分区表,从而导致系统无法正常的识别其大小,也无法正常使用。 81 | 82 | dd命令直接将Linux的iso写入U盘就能开机引导的原因是,这些Linux的iso自带了引导文件 83 | 84 | 85 | 86 | > **让 dd 显示进度:** 87 | > 88 | > 使用pv命令行工具(Pipe Viewer管道查看器),它可以检测Linux管道中数据流通的进度。 89 | > 90 | > 使用`sudo apt install pv`安装pv。用法: 91 | > 92 | > ```shell 93 | > pv ~/Ubuntu_15_10_64.iso | sudo dd of=/dev/sdb 94 | > ``` 95 | > 96 | > dd 从管道左边读取输入文件,所以这里不用写 if 97 | 98 | -------------------------------------------------------------------------------- /运维/Linux/fdisk_mkfs_: -------------------------------------------------------------------------------- 1 | # fdisk mkfs swap 2 | 3 | ## fdisk 分区 4 | fdisk: 5 | 语法: sudo fdisk 设备 6 | 如 sudo fdisk /dev/sda 7 | 8 | sudo fdisk -l 9 | 10 | 更改分区类型 ID 11 | t 12 | 后还需用 mkfs 命令格式化 13 | 14 | 保存分区表 15 | w 16 | 17 | 18 | 19 | ## mkfs 创建文件系统 20 | 21 | mkfs 是几个特定命令的前端 可通过 ls /sbin/mk* 查看 22 | 23 | /sbin/mkdosfs /sbin/mke2fs /sbin/mkfs /sbin/mkfs.bfs 24 | /sbin/mkfs.cramfs /sbin/mkfs.ext2 /sbin/mkfs.ext3 /sbin/mkfs.ext4 25 | /sbin/mkfs.ext4dev /sbin/mkfs.fat /sbin/mkfs.minix /sbin/mkfs.msdos 26 | /sbin/mkfs.ntfs /sbin/mkfs.vfat /sbin/mkhomedir_helper /sbin/mkntfs 27 | /sbin/mkswap 28 | 29 | 使用时用 mkfs -t type 效果一样如 30 | mkfs -t ext4 /dev/sda5 mkfs.ext4 /dev/sda5 一样 31 | 32 | -L 指定文件系统的 Label 33 | 但使用命令 e2label 来指定更好 34 | 35 | 36 | 37 | ## 添加 swap 38 | ### 添加文件,并挂载为swap 39 | [参考1](https://support.rackspace.com/how-to/create-a-linux-swap-file/) 40 | [参考2](http://www.cyberciti.biz/faq/linux-add-a-swap-file-howto/) 41 | 42 | 43 | ### 添加分区,作为swap 44 | [参考1](http://www.howtogeek.com/106873/how-to-use-fdisk-to-manage-partitions-on-linux/) 45 | 46 | 1. 在fdisk中使用 n 创建分区(在此假设为/dev/sdb2)后,使用 p 查看,新的分区默认为linux类型;更改分区类型使用 t 命令,然后使用 L 命令列出各类型id,然后再输入你想要的id,比如swap类型为 82 。 使用 w 命令写入并退出fdisk。 47 | 2. 然后格式化该分区: mkswap /dev/sdb2 48 | 3. 之后在 /etc/fstab 中加入如下语句即可,每次开机自动挂载: 49 | 50 | /dev/sdb2 none swap sw 0 0 51 | 52 | 其语法格式如下: 53 | ``` 54 | #device mountpoint fstype options dump fsck 55 | 56 | /dev/sdb1 /home/yourname/mydata ext4 defaults 0 1 57 | ``` 58 | 59 | 60 | 61 | ## blkid 显示UUID 62 | 63 | 示例: blkid /dev/sda1 64 | 65 | 66 | 67 | 68 | ## 其它分区工具: 69 | cfdisk 图形化工具 70 | sfdisk 命令面向程序员,可被脚本化。 71 | 72 | 处理分区表的另一个流行工具是 parted 73 | 该命令能对许多类型的分区执行大小重置、格式化、创建 等操作. 74 | 但其不能重置ntfs分区大小, 而工具 ntfsresize 可以;qtpared 工具使用Qt工具提供一个图形界面,包含了以上两者的功能。 75 | 76 | gparted 是另一个图形分区工具,主要用在GNOME桌面,它使用GTK-GUI库 77 | 78 | -------------------------------------------------- 79 | 对于GPT 磁盘应该使用 gdisk 命令 80 | 而对于 MBR 布局 ,应该使用 fdisk 命令 81 | 82 | 转载: 83 | http://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-104-1/#ibm-pcon 84 | 85 | 86 | >亲历: 使用Linux的分区工具 在Windows的扩展分区 上建立逻辑分区后 无法正常挂载 87 | ,挂载后只能用与root用户。然而安装Ubuntu时划分的逻辑分区却可使用。 88 | 89 | >可能是进行分区时还应该添加必要的参数,或者是fdisk对其不支持。 90 | 91 | 92 | -------------------------------------------------------------------------------- /运维/Linux/find和grep命令.md: -------------------------------------------------------------------------------- 1 | # find和grep命令 2 | 3 | 4 | 5 | ## find命令 6 | 7 | ``` 8 | # 基本命令形式 9 | find 路径 比较准则 搜索词 10 | 11 | # 基本示例 12 | find ./test -name "abc.txt" 13 | 14 | # 忽略某文件 15 | find ./test -iname "*.Php" 16 | 17 | # 指定搜索的目录深度 18 | find ./test -maxdepth 2 -name "*.php" 19 | ``` 20 | 21 | 22 | 参考: 23 | 24 | - [25 simple examples of Linux find command](http://www.binarytides.com/linux-find-command-examples/) 25 | - [35 Practical Examples of Linux Find Command](https://www.tecmint.com/35-practical-examples-of-linux-find-command/) 26 | 27 | 28 | 29 | ## grep命令 30 | 31 | 参考: 32 | 33 | - [15 Practical Grep Command Examples In Linux / UNIX](http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples) 34 | - [12 Practical Examples of Linux grep Command](https://www.tecmint.com/12-practical-examples-of-linux-grep-command/) 35 | - [11 Advanced Linux ‘Grep’ Commands on Character Classes and Bracket Expressions](https://www.tecmint.com/linux-grep-commands-character-classes-bracket-expressions/) 36 | 37 | 38 | ``` 39 | # 在文件中查找 40 | grep "string" FILE_PATTERN 41 | 42 | # 通过管道,其中 -i 表示忽略大小写 43 | dpkg -l | grep -i python 44 | ``` 45 | 46 | -------------------------------------------------------------------------------- /运维/Linux/gem-install.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/运维/Linux/gem-install.sh -------------------------------------------------------------------------------- /运维/Linux/init: -------------------------------------------------------------------------------- 1 | # 设置Grub开机等待时间 2 | 3 | ubuntu:编辑: /etc/default/grub ;设置GRUB_TIMEOUT的值;然后运行 sudo update-grub 4 | 5 | centos 7 中编辑: /boot/grub2/gurb.cfg;设置(第一个)timeout的值,就可以了。或建议更改的是 /etc/default/grub文件 6 | 7 | 8 | 9 | # 各系统开机进入字符界面的方法 10 | 11 | Ubuntu 无 /etc/inittab 文件的原因另行查找 12 | 13 | 修改Ubuntu默认运行级别,启动字符界面: 14 | 转载: ://blog.csdn.net/heqiyu34/article/details/18793885 15 | 16 | 第一种方法:(内核级别的) 17 | 18 | Sudo vi /etc/default/grub 19 | 修改GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 20 | 为:GRUB_CMDLINE_LINUX_DEFAULT=” text” 21 | 然后运行下sudo update-grub就可了 22 | ------------ 23 | xxx 此法在我的电脑上重启后不行 24 | xxx 另参考: 25 | ------------ 26 | 出现这种情况的原因是修改文件后没有执行 : sudo update-grub 27 | 不像其它配置重启后就可以生效,必须执行该命令 28 | 29 | 30 | ################################################## 31 | 32 | 开机进入字符界面后 33 | 使用命令 startx 进入图形界面 34 | 在ubuntu 14.04 中 startx 进入后可能没有侧边栏和顶栏,可试试 sudo start lightdm 35 | 需要先修改 ~/.Xauthority 的权限, 36 | 或者 sudo mv .Xauthority .Xauthority.backup 即将其备份后删除; 37 | 38 | 39 | 40 | 41 | 42 | ### xxx 修改文件 /boot/default/grub/grup.cfg 43 | 44 | 问题是我修改后没有运行 sudo update-grub 45 | 46 | 47 | 48 | ## Fedora 开机进入字符界面 49 | 50 | 进入字符界面: systemctl set-default multi-user.target 51 | 进入桌面环境: systemctl set-default graphical.target 52 | -------------------------------------------------------------------------------- /运维/Linux/mount: -------------------------------------------------------------------------------- 1 | # mount使用说明 2 | 3 | >[参考](http://www.cnblogs.com/52linux/archive/2012/03/07/2384400.html) 4 | 5 | 6 | 语法: mount [-afFhnrvVw] [L] [-o options] [-t vfstype] device mount_point 7 | 自动挂载配置文件: /etc/ftab 8 | 已加载设备信息记录文件: /etc/mtab 9 | mount 命令列出当前所有文件系统相关状态信息 (可能要用root权限) 10 | 可能用到额外命令:blkid 打印块设备属性 11 | 12 | ### 常用参数及选项: 13 | -a 加载文件/etc/fstab/中设置的所有设备 14 | -L 利用partition的表头名称(Lable)来进行挂载 15 | 16 | -o options 主要用来描述设备或档案的挂接方式,有些文件也可在 /etc/fstab 中使用;这些选项包括: 17 | auto 在开机后自动挂载这个文件系统 18 | atime 19 | async 在写入数据时先写到数据缓冲区再写入硬盘,效率较高;异地同步asynchronously. 20 | defaults 使用默认选项 : rw suid dev exec auto nouser async 21 | dev 允许挂载的文件系统建立设备文件,如/dev/sda1。 22 | 可读文件系统上的字符设备或块设备;取消为nodev。 23 | exec 允许挂载文件系统挂载后可以执行其中的可执行文件,取消为noexec 24 | loop 用来挂载loopback的设备,如光驱;用来把一个文件当成硬盘分区挂接 25 | iocharset 指定访问文件系统所用字符集 26 | noatime 每次存取时不更新inode的存取时间 27 | ro 以只读模式加载 28 | rw 以可读模式加载 29 | suid 启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位,取消nosuid 30 | sync 以同步方式执行文件系统的输入输出动作 31 | user 可以让一般用户加载设备 32 | nousr 只允许超级用户挂载 33 | 34 | -r 以只读方式加载设备 35 | -w 以可读写模式加载设备 36 | 37 | -t vfstype 指定设备的文件系统类型;其常用的选项说明有: 38 | nfs UNIX网络文件系统 39 | iso9660 CD-ROM光盘的标准文件系统 40 | auto 自动检测文件系统 41 | vfat Windows 9x FAT32 文件系统 42 | 43 | 44 | ## /etc/fstab 文件: 45 | 应用1: 如文件中有 dev/hdc /media/cdrom auto pamconsole,exec,noauto,managed 0 0 #用来挂载光盘 46 | 则在手动挂载时可简化命令 mount /dev/hdc 或 mount /media/cdrom 47 | 系统会根据/etc/fstab 文件中的设定可以自动将这个命令转换成 mount /dev/hdc /media/cdrom 48 | 49 | 修改完/etc/fstab文件后,执行 mount -a 的另一个用法是,可以变相模拟开机时的情况。 50 | 51 | 52 | 53 | ## 挂载windows 的 NTFS 文件系统: 54 | 55 | 1.NTFS-3G : 为Linux提供NTFS分区的驱动程序,能够安全快速的对NTFS文件系统进行读写。 56 | 参见:https://wiki.archlinux.org/index.php/NTFS-3G_(简体中文) 57 | 58 | Ubuntu系统默认安装了ntfs-3g 59 | 60 | /dev/sdb1 /u01 ext4 rw,seclabel,relatime,data=ordered 0 0 61 | 62 | -------------------------------------------------------------------------------- /运维/Linux/npm-install.sh: -------------------------------------------------------------------------------- 1 | # 使用 npm install -g 安装的包(全局安装) 2 | 3 | # 这里 node 是直接下载node.js安装包并解压到/opt目录进行安装的, 4 | # 所以运行使用npm进行全局安装时无需使用管理员权限。 5 | # 你也可以在 ~/.npmrc 文件中更改全局安装目录 6 | 7 | node --version 8 | npm --version 9 | 10 | # 更新现有node 11 | 12 | # 升级现有npm 13 | npm install npm -g 14 | 15 | 16 | # Gitmoji is an emoji guide for GitHub commit messages. 17 | # 安装后的命令为:gitmoji ,用法见其帮助。 18 | npm i gitmoji-cli -g 19 | 20 | 21 | # 安装CSS预编译器 Less 22 | npm i less -g 23 | 24 | 25 | -------------------------------------------------------------------------------- /运维/Linux/pip-install.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/运维/Linux/pip-install.sh -------------------------------------------------------------------------------- /运维/Linux/ultimateConfig.md: -------------------------------------------------------------------------------- 1 | 终极配置 2 | ============================= 3 | 4 | 5 | 两者的配置见 github 中的 readme.md , 不在这啰嗦了! 6 | 7 | 8 | 1. Ultimate Vim Config 9 | ----------------------------------- 10 | 11 | **spf13-vim** 是vim的终极配置 12 | 13 | 网站: http://spf13.com/post/ultimate-vim-config 14 | GitHub : https://github.com/spf13/spf13-vim 15 | 16 | ###安装 17 | 18 | 依赖: 19 | 1. vim 20 | 2. curl 21 | 3. git 22 | 23 | 安装命令: 24 | curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh 25 | 26 | 27 | 28 | 29 | 30 | shell终极配置 31 | ------------------------------------- 32 | 33 | 名称: oh-my-zsh 34 | 使用的是: zsh 35 | GitHub : https://github.com/robbyrussell/oh-my-zsh 36 | 37 | 依赖: 38 | git 39 | 40 | ###下载安装: 41 | sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 42 | 43 | 44 | 45 | ###配置文件: 46 | ~/.zshrc 47 | 48 | ###Getting Updates 更新: 49 | 配置文件中写入 50 | 自动更新: `DISABLE_UPDATE_PROMPT=true` 51 | 不自动更新: `DISABLE_AUTO_UPDATE=true` 52 | 53 | 54 | 55 | 56 | 57 | ###更改默认shell 58 | 59 | chsh -s /bin/zsh 60 | 61 | 62 | ### Uninstalling Oh My Zsh 63 | 输入: 64 | `uninstall_oh_my_zsh` 65 | 66 | 67 | ###Themes 主题 68 | 在文件 .zshrc 中设置 69 | 如: 70 | ZSH_THEME="robbyrussell" 71 | ZSH_THEME="agnoster" 72 | ZSH_THEME="random" 73 | -------------------------------------------------------------------------------- /运维/Linux/you-get: -------------------------------------------------------------------------------- 1 | you-get 2 | ============================== 3 | 4 | 安装见.all.sh文件 5 | ------------------------- 6 | 7 | 使用方法 8 | -------------------------- 9 | 10 | [参考此处](https://www.qingsword.com/qing/1348.html) 11 | 12 | 1. 浏览器中播放此视频,复制地址(称该地址为"播放地址") 13 | 2. 输入命令: `you-get -i 播放地址` 列出视频信息,如清晰度(它包括hd3 超清、hd2高清、mp4 等) 14 | 3. 输入命令: `you-get --format=hd3 播放地址` 下载hd3清晰度的视频,清晰度在第二步列出。 15 | 4. 命令:`you-get -p mplayer 播放地址` 边下边播,使用mplayer播放器。但是好像不行。 16 | 17 | 18 | 19 | **其它you-get命令选项:** 20 | 21 | * -o 指定下载目录 22 | * -u 查看视频真实地址 23 | * -h 显示帮助 24 | 25 | 26 | -------------------------------------------------------------------------------- /运维/Linux/操作系统设计与实现.md: -------------------------------------------------------------------------------- 1 | 操作系统设计与实现.上册:第3版 2 | =============================== 3 | 4 | Operating Systems:Design and Implementation,Third Edition 5 | [美] Andrew S. Tanenbaum & Albert S. Woodhull 著 6 | 陈渝 等译 2006 7 | 8 | 9 | 10 | 11 | 时间 2015.8.5 12 | 13 | 第1章 引言 14 | ---------- 15 | 16 | 17 | ###MINIX3的历史 18 | 19 | UNIX的Version6 时期,源代码开放。但到Version7 时,规定可以使用但不能研究其源代码。 20 | 因此许多大学,只能在课程中略去UNIX的内容而只讲操作系统理论。 21 | 22 | 但如果只讲理论,会使学生对实际的操作系统产生一种片面的认识。例如,在书本中作为重点来讲的内容,如进程 23 | 调度算法,在实际中其实没那么重要。而在实际系统中非常重要的内容,如I/O系统和文件系统,又因缺乏理论性而 24 | 被忽略。 25 | 26 | 为了扭转局面,Tanenbaum决定从头开始编写一个与UNIX兼容,但内核实现与UNIX完全不同;同时与POSIX标准靠拢。 27 | MINIX3 内核只有不到 4000 行的可执行代码, 设备驱动程序分配在用户态下运行。 28 | 29 | 30 | 31 | ###操作系统概念 32 | 33 | 操作系统与用户程序之间的接口由操作系统提供的“扩展指令“ 集来定义。这些扩展指令传统上被称为系统调用。 34 | 35 | 进程(process): 36 | 37 | 从本质上来说,一个进程就是一个正在执行的程序。 38 | 每个进程都有自己的**地址空间**, 也就是一组内存地址,从某个最小值到到某个最大值,进程可以读写其中的内容。 39 | 地址空间中包括可执行程序、程序的数据和它的栈。每个进程相关的还包括一组寄存器,如程序计数器、栈指针和其他 40 | 硬件寄存器,以及运行该程所需要的所有其他信息。 41 | 42 | 43 | 括 44 | 45 | -------------------------------------------------------------------------------- /运维/Linux/系统转移,txt: -------------------------------------------------------------------------------- 1 | 需要排除的软件: 2 | 3 | fcitx 重装, 但保留基本设置,保留搜狗词汇记录,删除其他所有 4 | 5 | 6 | 锁屏界面被变更。 7 | 8 | 9 | 10 | 分区: 11 | 12 | /tmp 3G 13 | /var 3G 14 | /usr 15 | /usr/local 16 | 17 | 删除电源,网络,日期的面板设置 18 | 19 | node.js 20 | 21 | 安装:google-chrome: 22 | ``` 23 | wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 24 | 25 | sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' 26 | 27 | sudo apt-get update 28 | sudo apt-get install google-chrome-stable 29 | ``` 30 | 31 | 安装:vscode 32 | ``` 33 | curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg 34 | sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg 35 | sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' 36 | sudo apt-get update 37 | sudo apt-get install code 38 | ``` 39 | 40 | 41 | /etc/apt/trusted.gpg.d 42 | /etc/apt/sources.list.d/vscode.list 43 | 44 | 看来可以备份 /etc/apt/ 文件夹, 45 | 46 | 如果在更新时出现: 47 | ``` 48 | W: GPG 错误:http://archive.ubuntukylin.com:10006/ubuntukylin xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY D259B7555E1D3C58 49 | E: 仓库 “http://archive.ubuntukylin.com:10006/ubuntukylin xenial InRelease” 没有数字签名。 50 | N: 无法安全地用该源进行更新,所以默认禁用该源。 51 | ``` 52 | 可以通过软件更新器的设置打开软件和更新界面,在其它软件列表中取消勾选上面的软件源。 53 | 54 | 55 | 软件源建议使用中科大的软件源,它使用https协议,更加安全。 56 | 57 | 58 | -------------------------------------------------------------------------------- /运维/Linux/设置代理proxy.md: -------------------------------------------------------------------------------- 1 | # Linux设置全局代理 2 | 3 | >总体来说就是在某处添加下面的两行(或在前面添加 export ): 4 | http_proxy="http://127.0.0.1:8087" 5 | https_proxy="http://127.0.0.1:8087" 6 | 7 | 前提是你已经有了代理软件,并设置好了地址和接口... 8 | 9 | 10 | 11 | ## 方法1 12 | "系统设置" --> "网络" --> "网络代理" --> "手动" 进行相关设置。 13 | 14 | 重新打开应用(如浏览器)才会生效。 15 | 16 | ## 方法2 17 | /etc/environment中添加,上面的内容,可以为系统定制全局的http代理。 18 | 重启生效。 19 | [参考](http://blog.csdn.net/u012198502/article/details/17206419) 20 | 21 | 22 | 23 | ## 方法3 24 | ``` 25 | export http_proxy=127.0.0.1:8087 26 | ... 27 | 28 | ``` 29 | 至于 /etc/profile (系统全局) 或 ~/.bashrc 中(当前用户)。 30 | 31 | 32 | -------------------------------------------------------------------------------- /运维/Server/2017-07-10-jekyll-theme-simple-texture改进.md: -------------------------------------------------------------------------------- 1 | # 改进simple texture主题 2 | 3 | ## 收集改进点 4 | 5 | - 支持在配置文件_config.yml中指定`lang=zh`,作者已经回复,改为`lang=cn`即可。但还是需要更正。最好在配置后能够同时更改网页头部的lang属性,不然每次在移动端Google翻译提示此网站为英文网站,是否需要翻译。 6 | - 支持在配置文件中直接为 disqus 指定 id 即可添加评论功能。 7 | - ~~在文章开头添加:本篇文章的更新时间。原作者的中文版blog [Yi Zeng 的中文版个人网站](http://cn.yizeng.me/ "Yi Zeng 的中文版个人网站"),中有此功能。(默认就有无需添加)~~ 8 | - 支持自定义的addthis分享按钮样式。 9 | - 404页面修复。 10 | - 添加更多图标,比如GitLab。 11 | - 尝试修复点击"Show Comments"后Disqus评论有时无法出现的问题;Chrome提示"此网站试图从未验证的来源加载脚本"阻止了Disqus评论的加载。如果强行加载Chrome会提示不安全。 12 | - 添加可直接显示 Disqus评论 的配置项。 13 | - 尝试为首页添加分页功能。 14 | - ~~更改代码字体~~。已解决,只需调整浏览器最小字体大小即可。 15 | - 使网站图标能够适配各平台,特别是移动端。比如在安卓的chrome中使用“将网站发送到主屏幕”功能时能够正常使用网站提供的图标。(可参考极客公园的效果)。可查找一下jekyll是否有相关的插件。 16 | - 添加博客文章访问量的功能。 17 | - 可以自行选择 Back to Top 的显示形式。 18 | 19 | > 可以通过向源GitHub仓库提出... 的方式,学习与他人合作。 20 | 21 | 22 | 可参考的文章: 23 | 24 | [Favicon 站点图标的各平台适配与移动端优化](https://www.null17.com/blog/coding/HTML/20160126-favicon/ "Favicon 站点图标的各平台适配与移动端优化 十七的空指针 - 陈十七的技术博客, Blog of Sykie Chen or HKEY_C17") 25 | [HTML5 移动端 head 头标签生成器](http://mr-why.com/frontend/gen_h5_head "HTML5 移动端 head 头标签生成器") 26 | [移动前端不得不了解的 HTML5 head 头标签(2016 最新版) - 前端 - 掘金](https://juejin.im/entry/58085b3267f3560057a0053a "移动前端不得不了解的 HTML5 head 头标签(2016 最新版) - 前端 - 掘金") 27 | 28 | -------------------------------------------------------------------------------- /运维/Server/DevOps.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # DevOps 4 | 5 | 6 | 7 | **DevOps**(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 8 | 9 | 10 | 11 | DevOps是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。在DevOps的整个流程中,使用一些开源工具可以促进开发与运维之间的沟通,有利于项目的管理,甚至可以达到事半功倍的效果。 12 | 13 | 14 | 15 | [DevOps - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/DevOps "DevOps - 维基百科,自由的百科全书") 16 | 17 | 18 | 19 | 敏捷软件开发已经打破了需求分析、测试、开发之间的壁垒。在软件开发流程中,开发与运维之间面临着相同的隔离问题。**DevOps运动的目标就是打破开发与运维之间的壁垒,鼓励开发与运维之间的协作。** 20 | 21 | 22 | -------------------------------------------------------------------------------- /运维/Server/Docker Compose.md: -------------------------------------------------------------------------------- 1 | # Docker Compose 2 | 3 | 4 | 5 | ## Docker Compose 介绍 6 | 7 | > compose:组成, 构成 8 | 9 | Define and run multi-container applications with Docker. 10 | 11 | 12 | 13 | 然而, 在日常工作中, 经常会碰到需要多个容器相互配合来完成某 项任务的情况。 例如要实现一个 Web 项目, 除了 Web 服务容器本身, 往往还需要再加上后 端的数据库服务容器, 甚至还包括负载均衡容器等。 14 | 15 | Compose 恰好满足了这样的需求。 它允许用户通过一个单独的 docker-compose.yml 模板文件 ( YAML 格式) 来定义一组相关联的应用容器为一个项目( project) 。 16 | 17 | 18 | 19 | **Compose 中有两个重要的概念:** 20 | 21 | - 服务 ( service ): 一个应用的容器, 实际上可以包括若干运行**相同镜像**的容器实例。 22 | - 项目 ( project ): 由一组关联的应用容器组成的一个完整业务单元, 在 dockercompose.yml 文件中定义。 23 | 24 | 可见, 一个项目可以由多个服务( 容器) 关联而成, Compose 面向项目进行管理。 25 | 26 | 27 | 28 | 注意每个服务都必须通过 image 指令指定镜像 **或** build 指令( 需要 Dockerfile) 等来自动 构建生成镜像。 29 | 30 | 31 | 32 | ## 安装 33 | 34 | 35 | 36 | 安装:直接在此[Releases · docker/compose](https://github.com/docker/compose/releases "Releases · docker/compose")下载安装包安装 37 | 38 | 39 | 40 | 41 | 42 | ## 入门示例 43 | 44 | 45 | 46 | 参考:[Docker Compose Tutorial: Orchestrate Containers for Development](https://blog.codeship.com/orchestrate-containers-for-development-with-docker-compose/ ) 47 | 48 | 49 | 50 | ### Docker Compose Workflow 51 | 52 | There are three steps to using Docker Compose: 53 | 54 | 1. Define each service in a **Dockerfile**. 55 | 2. Define the *services* and their *relation to each other* in the **docker-compose.yml** file. 56 | 3. Use **docker-compose up** to start the system. 57 | 58 | 59 | 60 | ### 示例一:基本结构 61 | 62 | 63 | 64 | docker-compose.yml文件的语法紧密反映了底层的Docker操作。为了证明这一点,我将从Redis Commander源构建一个容器并将其连接到Redis数据库。 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | > 运维大神 [docker:编排与部署小神器Compose-DevOps(甘兵)-51CTO博客](http://blog.51cto.com/ganbing/2083806 "docker:编排与部署小神器Compose-DevOps(甘兵)-51CTO博客") 75 | > 76 | > 官方示例解析:[A Practical Introduction to Docker Compose – Hacker Noon](https://hackernoon.com/practical-introduction-to-docker-compose-d34e79c4c2b6 "A Practical Introduction to Docker Compose – Hacker Noon") 文章中有到github资源的链接。 77 | 78 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /运维/Server/Docker网络.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [docker 使用网桥实现跨主机容器链接 - CSDN博客](https://blog.csdn.net/sfdst/article/details/69459092 "docker 使用网桥实现跨主机容器链接 - CSDN博客") 10 | 11 | [Docker容器与宿主机同网段互相通信 | LouisvV's Blog](http://www.louisvv.com/archives/695.html "Docker容器与宿主机同网段互相通信 | LouisvV's Blog") 12 | 13 | [docker 实战---多台物理主机的联网,容器桥接到物理网络(三) - CSDN博客](https://blog.csdn.net/smallfish1983/article/details/38820441 "docker 实战---多台物理主机的联网,容器桥接到物理网络(三) - CSDN博客") 14 | 15 | [十、Docker网络以及跨宿主机通信 - CSDN博客](https://blog.csdn.net/qq_15800363/article/details/78712262 "十、Docker网络以及跨宿主机通信 - CSDN博客") 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /运维/Server/Hugo模板.md: -------------------------------------------------------------------------------- 1 | # Hugo Templating 2 | 3 | 4 | 5 | Hugo 使用 Go语言的`html/template` 和`text/template` 库作为其模板基础。 6 | 7 | > [Introduction to Hugo Templating | Hugo](https://gohugo.io/templates/introduction/) 8 | 9 | 10 | 11 | ## 基本语法 12 | 13 | Go模板是带有变量和函数的HTML文件 , Go模板的变量和函数可在`{{ }}`中访问。 14 | 15 | 菜单 16 | 17 | 访问预定义变量 18 | 19 | ```html 20 | 21 | {{ .Title }} 22 | 23 | {{ $address }} 24 | ``` 25 | 26 | 函数的参数使用空格分隔。通用语法为: 27 | 28 | ```go 29 | {{ FUNCTION ARG1 ARG2 .. }} 30 | ``` 31 | 32 | 使用add函数来计算 1+2 33 | ```go 34 | {{ add 1 2 }} 35 | ``` 36 | 37 | 方法和字段可以通过`.`来进行访问。 38 | 39 | 示例访问 Page 字段 bar,它定义在文章的 front matter中 40 | 41 | ```go 42 | {{ .Params.bar }} 43 | ``` 44 | 45 | 可用 小括号将项目分组在一起 46 | 47 | ```go 48 | {{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }} 49 | ``` 50 | 51 | 52 | 53 | ## 变量 54 | 55 | 每个Go模板都会获取一个数据对象 , 在Hugo中,每个模板都会传递一个`Page`。 在下面的示例中 `.Title`是 `Page`变量中可以访问的的元素之一。 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /运维/Server/Json Server.md: -------------------------------------------------------------------------------- 1 | ## 本地搭建 Json Server 2 | 3 | 4 | 5 | [typicode/json-server](https://github.com/typicode/json-server "typicode/json-server: Get a full fake REST API with zero coding in less than 30 seconds (seriously)") 6 | 7 | 搭建方法见上面的GitHub页面。 8 | 9 | 10 | 11 | [用JSON-server模拟REST API(一) 安装运行 - 猎巫 - 博客园](http://www.cnblogs.com/lewo/p/mock-json-server-install.html "用JSON-server模拟REST API(一) 安装运行 - 猎巫 - 博客园") 12 | 13 | 14 | 15 | > [kuitos/json-mock-server](https://github.com/kuitos/json-mock-server "kuitos/json-mock-server: json server base on nodejs and rest api,extension of https://github.com/therebelbeta/json-mock & https://github.com/typicode/json-server") 16 | > 17 | > mock是啥? 18 | > 19 | > 20 | > 21 | > 相关的一个网站:[JSONPlaceholder - Fake online REST API for developers](http://jsonplaceholder.typicode.com/ "JSONPlaceholder - Fake online REST API for developers") 22 | > 23 | > JSONPlaceholder is a free online REST service that you can use whenever you need some fake data. 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /运维/Server/Kubernetes.md: -------------------------------------------------------------------------------- 1 | # Kubernetes 2 | 3 | 4 | 5 | [Kubernetes是什么 _ k8s中文文档_Kubernetes中文社区](http://docs.kubernetes.org.cn/227.html "Kubernetes是什么 _ k8s中文文档_Kubernetes中文社区") 6 | 7 | 8 | 9 | 学习Kubernetes的硬件要求,至少8GB内存,能够同时开启3个虚拟机。 10 | 11 | 12 | 13 | 百度云上有一套 《实战 Docker到Kuberneter技术系列视频教程》在该系列课程的第一集的最后提到,学习Kubernetes的硬件要求,至少8GB内存,能够同时开启3个虚拟机。 14 | 15 | -------------------------------------------------------------------------------- /运维/Server/Nexus私服.md: -------------------------------------------------------------------------------- 1 | # Nexus Repository Manager OSS 2 | 3 | Nexus Open Source还是Nexus Professional,他们只有一个先决条件就是必须有一个Java Runtime Environment 4 | 5 | 6 | 7 | 开源版和收费版: 8 | 9 | - NEXUS OSS (OSS = Open Source Software,开源软件——免费) [Nexus Repository OSS - Software Component Management -Sonatype](https://www.sonatype.com/nexus-repository-oss) 10 | 11 | - NEXUS PROFESSIONAL -FREE TRIAL (专业版本——收费)。 12 | 13 | Nexus 有两个版本;有完整版,有war版。前者可以单独运行为一个基于jetty的服务,后者是运行在Servlet Constainer的Web应用。 14 | 15 | 16 | 17 | nexus里面有2个文件夹,第一个文件夹是核心文件,第二个文件夹用来存储下载下来的jar 18 | 19 | 20 | 21 | ## 安装和配置 22 | 23 | 24 | 25 | 26 | 27 | 使用docker安装,有两个版本(比较大有200M-300M): 28 | 29 | - [sonatype/nexus - Docker Hub](https://hub.docker.com/r/sonatype/nexus/ "sonatype/nexus - Docker Hub") 30 | 31 | ``` 32 | docker pull sonatype/nexus 33 | ``` 34 | 35 | - [sonatype/nexus3 - Docker Hub](https://hub.docker.com/r/sonatype/nexus3/ "sonatype/nexus3 - Docker Hub") 36 | 37 | ``` 38 | docker pull sonatype/nexus3 39 | ``` 40 | 41 | Nexus Image由 Sonatype 官方管理,而非Docker官方管理。 42 | 43 | 44 | 45 | 运行容器:(只做测试) 46 | 47 | ```shell 48 | docker run -d -p 8081:8081 --name nexus3 -e MAX_HEAP=768m sonatype/nexus3 49 | ``` 50 | 51 | Default credentials are: `admin` / `admin123` 52 | 53 | 测试连接:启动容器后大约过15分钟后测试(我电脑比较慢) 54 | 55 | ```shell 56 | curl -u admin:admin123 http://localhost:8081/service/metrics/ping 57 | curl: (7) Failed to connect to localhost port 8081: Connection refused # 有错误 58 | curl: (52) Empty reply from server # 表示还未启动成功 59 | pong # 返回 pong 表示已经启动成功 60 | ``` 61 | 62 | 在浏览器中管理: 63 | 64 | ``` 65 | # nexus3 直接输入下面的路径 66 | http://localhost:8081/ 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 下载安装包见: 78 | 79 | 80 | 81 | > [【Maven】Nexus(Maven仓库私服)下载与安装 - H__D - 博客园](http://www.cnblogs.com/h--d/p/5717920.html "[Maven]Nexus(Maven仓库私服)下载与安装 - H__D - 博客园") 82 | > 83 | > [Nexus的下载和安装 - 东苑草根 - 博客园](http://www.cnblogs.com/dycg/archive/2013/05/29/3105927.html "Nexus的下载和安装 - 东苑草根 - 博客园") 84 | > 85 | > [Maven使用笔记(五)Sonatype Nexus 搭建Maven 私服-博客-云栖社区-阿里云](https://yq.aliyun.com/articles/388201 "Maven使用笔记(五)Sonatype Nexus 搭建Maven 私服-博客-云栖社区-阿里云") 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | Nexus Repository Manager OSS 3.x: 94 | 95 | 该版本可管理如下仓库: 96 | 97 | ![Nexus Repository Manager OSS 3.x](assets/Nexus Manage these formats-1535810126820.png) 98 | 99 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /运维/Server/assets/Nexus Manage these formats-1535810126820.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/运维/Server/assets/Nexus Manage these formats-1535810126820.png -------------------------------------------------------------------------------- /运维/Server/assets/Nexus Manage these formats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/运维/Server/assets/Nexus Manage these formats.png -------------------------------------------------------------------------------- /运维/Server/常用服务器相关命令.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 检查端口是否开启 4 | 5 | CentOS7 采用了 `firewalld` 防火墙 6 | 7 | ##### 查看80端口是否开启 8 | 9 | ``` 10 | firewall-cmd --query-port=80/tcp 11 | ``` 12 | 13 | ##### 开启80端口 14 | 15 | ``` 16 | firewall-cmd --add-port=80/tcp --permanent # --permanent 永久生效,没有此参数重启后失效 17 | ``` 18 | 19 | ##### 关闭80端口 20 | 21 | ``` 22 | firewall-cmd --remove-port=80/tcp --permanent # --permanent 永久生效,没有此参数重启后失效 23 | ``` 24 | 25 | 26 | 27 | **firewalld 基本使用** 28 | 29 | - 启动: `systemctl start firewalld` 30 | - 查看状态: `systemctl status firewalld` 31 | - 停止: `systemctl disable firewalld` 32 | - 禁用: `systemctl stop firewalld` 33 | 34 | 35 | 36 | 列出所有端口: 37 | 38 | netstat -ntlp 39 | 40 | 41 | 42 | scp命令 43 | 44 | 45 | 46 | ## Mysql 47 | 48 | 49 | 50 | ```shell 51 | # 启动mysql 默认开机启动 52 | # service mysql restart 53 | 54 | # 启动 zookeeper 55 | sh /opt/pinyougou/zookeeper/bin/zkServer.sh stop 56 | sh /opt/pinyougou/zookeeper/bin/zkServer.sh start 57 | sh /opt/pinyougou/zookeeper/bin/zkServer.sh status 58 | 59 | # 启动tomcat 60 | sh /opt/pinyougou/apache-tomcat/bin/startup.sh 61 | 62 | # 最后启动 Redis 63 | redis-server ~/redis.conf 64 | ``` 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | ## Zookeeper 73 | 74 | 75 | 76 | 77 | 78 | ```shell 79 | sh /opt/pinyougou/zookeeper/bin/zkServer.sh stop 80 | sh /opt/pinyougou/zookeeper/bin/zkServer.sh start 81 | sh /opt/pinyougou/zookeeper/bin/zkServer.sh status 82 | ``` 83 | 84 | 85 | 86 | 87 | 88 | > dubbo-admin :如果它与zokeeper不在同一服务器则需要修改其 WEB-INF 下的 dubbo.properties中的`dubbo.registry.address`对应的主机ip和端口。 89 | > 90 | > 用户名和密码都是: root 91 | 92 | 93 | 94 | 95 | 96 | ## Tomcat 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | ## Redis 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | ## Nginx 113 | 114 | 115 | 116 | - 启动命令:./nginx 117 | 118 | - 停止Nginx:./nginx -s stop 119 | - 重新加载Nginx:./nginx -s reload 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | ## Solr 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /运维/Windows/Chocolatey包管理工具.md: -------------------------------------------------------------------------------- 1 | 由于Scoop更容易配置(相比于Chocolatey),这里选择 Scoop 2 | 3 | 4 | 5 | 在下载node时发现了两款用于Windows的包管理工具: 6 | 7 | - [Chocolatey - The package manager for Windows](https://chocolatey.org/ "Chocolatey - The package manager for Windows") 8 | - [Scoop](https://scoop.sh/ "Scoop") 9 | 10 | 11 | 12 | 13 | 14 | ## PortableApp 15 | 16 | 之前我一直使用PortableApp来安装一些简单的程序,主要优势是可以 17 | 18 | - **操作简单** 19 | - 可以自定义安装路径(安装到C盘之外)。 20 | - 绿色软件,当重装系统后可以更方便的迁移。 21 | 22 | 23 | 24 | 安装列表: 25 | 26 | ``` 27 | GeekUninstaller 28 | Potplayer 29 | Sumatra PDF 30 | 7-Zip 31 | GIMP 32 | LiberOffice 33 | Notepad2 34 | WinMerge 35 | ZoomIt 36 | Foxit Reader 37 | Rufus 38 | TeamViewer 39 | ``` 40 | 41 | 42 | 43 | 44 | 45 | > 现在有了cmder、WSL、Docker又多了更多选择 46 | 47 | 48 | 49 | 50 | 51 | ## Chocolatey 52 | 53 | Chocolatey有 Open Source、Pro(Personal)和Business(C4B)三个版本,其中Open Source是免费的。 54 | 55 | 另外需要说明的是, Chocolatey 只是把官方下载路径封装到了 Chocolatey 中,所以下载源都是其官方路径(这个可能会变更) 。 56 | 57 | [Installation](https://chocolatey.org/install "Installation") Chocolatey自身安装在默认位置即可。 58 | 59 | 60 | 61 | 更改使用Chocolatey安装的软件的安装目录: 62 | 63 | **chocolatey免费版本**,本人已验证过可行: 64 | 65 | ``` 66 | choco install jdk10 -ia "INSTALLDIR=""D:\DevPrograms\Java\JDK\jdk10.0.1-x64""" 67 | ``` 68 | 69 | 参考官方文档: 70 | 71 | 72 | 如果是pro或business版本,可以使用`--install-directory`参数,参见文档: 73 | `--dir, --directory, --installdir, --installdirectory, --install-dir, --install-directory=VALUE` 74 | 75 | 76 | 77 | > [Windows 神器 Cmder Scoop Chocolatey Listary Seer - CSDN博客](https://blog.csdn.net/u013205877/article/details/78993311 "Windows 神器 Cmder Scoop Chocolatey Listary Seer - CSDN博客") 78 | 79 | -------------------------------------------------------------------------------- /运维/Windows/MicroSoft 官网分析.md: -------------------------------------------------------------------------------- 1 | # MicroSoft 官网分析 2 | 3 | 标签(空格分隔): Windows 4 | 5 | --- 6 | 7 | 8 | 9 | ## [TechNet](https://technet.microsoft.com/zh-cn/ms376608) 10 | 11 | 通过网站顶部的下拉列表框**TechNet** 可查看更多资源。 12 | 13 | 14 | [TechNet 技术资源库](https://technet.microsoft.com/zh-cn/library/aa991542) 15 | 16 | Windows Server文档比如: 17 | [Web 服务器 (IIS) 管理](https://technet.microsoft.com/zh-cn/library/cc754281\(v=ws.11\).aspx) 18 | 19 | 20 | 21 | 要访问其他技术资源,请在[此处](https://technet.microsoft.com/zh-cn/library/bb421517.aspx)查找适当的技术中心。 22 | 23 | [面向 IT 专业人员的产品和技术](https://technet.microsoft.com/zh-cn/library/bb421517.aspx) 24 | 25 | [下载试用版(评估中心)](https://technet.microsoft.com/evalcenter/) 26 | 27 | [TechNet 下载](https://technet.microsoft.com/zh-cn/bb403698) 28 | 29 | 30 | 31 | ## MSDN 32 | [MSDN](https://msdn.microsoft.com/zh-cn) 33 | 34 | 35 | [MSDN Library](https://msdn.microsoft.com/zh-cn/library/ms310241) 库目录视图。 36 | 37 | 38 | -------------------------------------------------------------------------------- /运维/Windows/batch.md: -------------------------------------------------------------------------------- 1 | # batch 2 | 3 | 标签(空格分隔): Windows 4 | 5 | --- 6 | 7 | [批处理常用命令总结 - 批处理命令简介](http://xstarcd.github.io/wiki/windows/windows_cmd_summary_commands.html) 8 | [Windows批处理(cmd/bat)使用小记](https://www.zybuluo.com/yangfch3/note/338252) 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /运维/puppet.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | puppet:配置管理工具,自动化运维管理工具。类似的还有 ansible等。 4 | 5 | 6 | 7 | 相关学习可见, [朱双印博客 | Linux运维从业者](http://www.zsythink.net/ "朱双印博客 | Linux运维从业者") -------------------------------------------------------------------------------- /运维/安全/儿童hosts过滤.md: -------------------------------------------------------------------------------- 1 | ##hosts文件是不支持通配符的 2 | 3 | ##可以使用其他工具实现类似的功能,比如 Acrylic DNS Proxy 4 | 5 | ##[支持通配符和正则表达式的hosts文件(本地dns缓存及代理)](https://blog.tianqitu.net/2014/11/22/hosts-that-support-wildcards-and-regular-expressions/) 6 | 7 | 0.0.0.0 www.hao123.com 8 | 127.0.0.1 www.example.com 9 | 10 | ## 游戏 11 | 12 | 13 | 14 | ## 视频 15 | 16 | 0.0.0.0 www.ixigua.com 17 | 18 | 19 | 20 | ## 小说 21 | 22 | 23 | 24 | ## 迷信 25 | 26 | 0.0.0.0 www.hao123.com 27 | 28 | ## 360系列 29 | 0.0.0.0 www.360.cn 30 | 0.0.0.0 www.360.com 31 | 0.0.0.0 hao.360.cn 32 | 0.0.0.0 hao.360.com 33 | 0.0.0.0 gouwu.360.cn 34 | 0.0.0.0 cdn-daikuan.360jie.com.cn 35 | 0.0.0.0 www.360kan.com 36 | 0.0.0.0 go.360.cn 37 | 0.0.0.0 auto.360.cn 38 | 0.0.0.0 g.360.cn 39 | 0.0.0.0 xiaoyouxi.360.cn 40 | 0.0.0.0 so.com 41 | 0.0.0.0 wan.360.cn 42 | 43 | ## video 44 | 0.0.0.0 www.youku.com 45 | 0.0.0.0 www.iqiyi.com 46 | 0.0.0.0 v.laifeng.com 47 | 0.0.0.0 game.youku.com 48 | 0.0.0.0 fashion.youku.com 49 | 0.0.0.0 live.iqiyi.com 50 | 0.0.0.0 vr.iqiyi.com 51 | 0.0.0.0 v.qq.com 52 | 0.0.0.0 www.bilibili.com 53 | 0.0.0.0 tv.sohu.com 54 | 0.0.0.0 video.sina.com.cn 55 | 0.0.0.0 www.6.cn 56 | 0.0.0.0 www.ixigua.com 57 | 58 | ## game 59 | 0.0.0.0 www.4399.com 60 | 0.0.0.0 lol.qq.com 61 | 0.0.0.0 dn.qq.com 62 | 0.0.0.0 www.wowchina.com 63 | 0.0.0.0 wot.kongzhong.com 64 | 0.0.0.0 cf.qq.com 65 | 0.0.0.0 www.7k7k.com 66 | 0.0.0.0 www.duowan.com 67 | 0.0.0.0 game.163.com 68 | 0.0.0.0 d.163.com 69 | 0.0.0.0 game.qq.com 70 | 0.0.0.0 www.tgbus.com 71 | 0.0.0.0 www.ali213.net 72 | 0.0.0.0 game.61.com 73 | 0.0.0.0 www.kaifu.com 74 | 0.0.0.0 www.37.com 75 | 0.0.0.0 www.2144.cn 76 | 0.0.0.0 www.ewoka.com 77 | 0.0.0.0 www.91wan.com 78 | 0.0.0.0 www.51wan.com 79 | 0.0.0.0 www.07073.com 80 | 0.0.0.0 news.4399.com 81 | 82 | ## sex 83 | 0.0.0.0 www.ugirls.com 84 | 0.0.0.0 huaban.com 85 | 0.0.0.0 www.2717.com 86 | 0.0.0.0 www.meinvtieba.com 87 | 0.0.0.0 www.520mojing.com 88 | 0.0.0.0 www.2s5s.com -------------------------------------------------------------------------------- /运维/安全/虚拟手机号码.md: -------------------------------------------------------------------------------- 1 | # 虚拟手机号码 2 | 3 | 4 | 5 | [易博通_在线接收中国虚拟手机号码短信验证码平台_免费试用7天_陈沩亮博客](https://www.chenweiliang.com/cwl-558.html) 这里给出了一个优惠码。 6 | 7 | [免费手机短信验证码接收平台大全 14个国外1个国内_陈沩亮博客](https://www.chenweiliang.com/cwl-1590.html) 8 | 9 | [一个付费的短信验证码接收平台-VPS大玩家](https://www.vpsdawanjia.com/sms) 10 | 11 | 12 | 13 | 安全性问题: 14 | 15 | 密码被别人找回,确实非常不安全。作者推荐了一个相对安全并且收费的服务"易博通" 。 16 | 17 | 18 | 19 | 国内的网站,自己无意中发现过一个[云短信 - 在线短信接收](https://www.pdflibr.com/) 安全性肯定不行。 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /运维/安全/隐私相关.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 建议下载 AdGuard的手机版。 4 | 5 | 6 | 7 | [配置好 AdGuard,给你更全面的网络隐私保护 - 少数派](https://sspai.com/post/57021) 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /运维/手机购买.md: -------------------------------------------------------------------------------- 1 | # 手机 2 | 3 | 标签(空格分隔): 硬件_软件维护 4 | 5 | --- 6 | 7 | > woshigeqionggui 8 | 9 | 2019 硬性要求: 10 | 11 | - 存储容量至少 128G,会被挤爆 12 | - 电池容量至少4000mA 13 | - 快充 > 14 | - CPU骁龙625以上 15 | - 运行内存4GB及以上 16 | - 全网通 17 | 18 | 条件二: 19 | 20 | - 支持扩容/双卡 21 | - 隐私安全 22 | - 价格实惠 23 | 24 | 25 | 26 | 要求1: 快充3.0, 全功能NFC,全网通3.0 双卡,可ROOT,电池容量> ~~3000~~ ,USB Typc-C,前置指纹解锁 27 | 要求2: 4G+ 网络,,新一代闪存技术UFS 2.0, 骁龙™821(MSM8996-AC) 28 | 29 | 30 | 31 | 32 | ## 小米 33 | 34 | ### 小米5s 35 | 5.15 inch 36 | 1200w + 400w 37 | 4GB + 32GB 1899元 38 | 3GB + 64GB 1999元 39 | 4GB + 64GB 2299元 40 | 41 | ### 小米5s Plus 42 | 5.7 inch 43 | 3800mAh 44 | 1300w + 400w 45 | 4GB + 64GB 2299元 46 | 47 | 48 | ### 小米Note 2 49 | 5.7 inch 50 | 双曲面 51 | 2256万 + 800 52 | 4070mAh 53 | 54 | 快充3.0 55 | NFC 56 | 57 | 4GB + 64GB 2799元 58 | 6 128 3299 59 | 60 | 61 | 62 | ## OnePlus 63 | 64 | 65 | 66 | ### OnePlus 3 67 | 68 | NFC 69 | Dash 闪充 70 | 71 | 72 | ### OnePlus 3T 73 | 5.5 inch 74 | 1600 + 1600 75 | 3400mAh 76 | 骁龙™821(MSM8996-AC) 77 | 78 | 6 + 64 2699元 79 | 6 + 128 2999 80 | 81 | 钢化膜 89元 82 | 83 | 84 | 85 | 86 | 87 | 88 | ## Smartisan 89 | 90 | ### Smartisan M1 91 | 5.15 inch 92 | 3050 93 | 3.0快充 94 | NFC 95 | 4G网络 96 | 像素: 2300 + 400 97 | 4 + 32 2499 98 | 99 | 100 | ### Smartisan M1L 101 | 5.7 102 | 4080 103 | 4 + 32 2799元 104 | 6 + 64 2999 105 | 106 | 107 | 108 | ## 华为 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /运维/操作系统安装之:XUbuntu分区安排.md: -------------------------------------------------------------------------------- 1 | 2019.11更新: 2 | 3 | - WSL的加入,已经没必要再安装双系统了,以后直接用Windows就行。 4 | - 系统分区分配的大小至少提升到150G 5 | 6 | 7 | 8 | 两个系统还需要考虑Docker镜像的存放 9 | 10 | 11 | 12 | Windows分区 13 | 14 | 15 | 16 | Ubuntu系统分区 17 | 18 | | 节点 | 分区大小 | 描述 | 实际用量 | 19 | | -------- | -------- | ------------------------------------------------------------ | -------- | 20 | | /boot | 1G | 引导分区:1G吧,之前400M好像不够用(没有即使清理旧内核) | 227M | 21 | | / | 30G | 根目录:不必太大,因为基本上大容量的节点会被单独设置分区 | 18G | 22 | | /home | 100G以上 | home目录应该是最大的。 | 40G | 23 | | /swap | 8G | 交换分区:多年前,网上说其大小设置为内存的2倍,现在应该不用那么大(现在内存都有8G、16G、32G了)。 | | 24 | | /usr | 20G | | 7.6G | 25 | | /snap | 5G | | 700M | 26 | | /opt | 30G | | 7G | 27 | | /lib | | 是否需要备份? | 700M | 28 | | /etc/apt | | | | 29 | 30 | 31 | 32 | 1 + 30 + 100 + 8 + 20 + 5 + 30 + 100 = 294 33 | 34 | 剩 430G 35 | 36 | 源码盘:200GB 37 | 38 | 资料:100GB 39 | 40 | 41 | 42 | 新安装的XUbuntu 16: 43 | 44 | 根目录占用 3.6G , usr就占用了3.1G;另显示 /dev 占用3.7G,/dev并未单独分区。 45 | 46 | 日后补充详细版。 47 | 48 | 49 | 50 | /etc/apt/trusted.gpg.d 51 | /etc/apt/sources.list.d/vscode.list 52 | 53 | 54 | 55 | apt-get: /var/cache/apt/archives/ and /var/cache/apt/archives/partial/ 56 | 57 | 58 | 59 | 源码盘:200GB 60 | 61 | 资料:100GB -------------------------------------------------------------------------------- /运维/浏览器相关.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 自定义Chrome快捷键: 4 | 5 | 为扩展程序添加快捷键的方法,打开此链接: `chrome://extensions/shortcuts` 6 | 7 | 8 | 9 | | 快捷键 | 操作 | 10 | | --------------------- | ------------------------------------ | 11 | | Ctrl+H | 查看”历史记录”页 | 12 | | Ctrl+J | 查看”下载”页 | 13 | | Shift+Escape | 查看任务管理器 | 14 | | Ctrl+Shift+I 或者 F12 | 打开开发者工具 | 15 | | Ctrl+Shift+T | 重新打开上次关闭的标签页(对多10个) | 16 | | Ctrl+U | 查看源代码 | 17 | | Ctrl+D | 将当前网页加入书签 | 18 | | | | 19 | | | | 20 | 21 | 22 | 23 | 由于需要频繁的使用Chrome中的以markdown的形式 复制当前链接到剪贴板 的插件,一直使用鼠标感觉有点麻烦;只好选择其他更方便的插件: 24 | 25 | - mUrl :功能就只有一个,只需点击一下图标即复制成功。也是我最开始用的。 26 | - Copy as Markdown:使用比较方便,功能不错,自定义后的快捷键为 Alt + M 27 | - 复制链接到剪切板:之前一直在用的;但是需要一个个层级去展开选择很麻烦。抛弃 28 | 29 | 30 | 31 | 插件 32 | 33 | - **midnight Lizard**:效果最好,最好用的更改网页配色的插件。感觉苹果薄荷、宇宙尘不错,更多配色[Color schemes - Midnight Lizard](https://midnight-lizard.org/schemes/index/full/) 34 | - Copy as Markdown:使用比较方便,功能不错,自定义后的快捷键为 Alt + M 35 | - 掘金:为程序员、设计师、产品经理每日发现优质内容。收获很多 36 | - Country Flags & IP WHOIS 37 | Displays a country flag depicting the location of the current website's server 38 | 39 | 40 | 41 | 42 | 43 | ### firetray插件:Firefox 44 | 可将 firefox和雷鸟最小化到系统托盘。效果不错。 45 | 46 | ### 火狐FoxyProxy配置简单笔记 47 | 48 | [火狐FoxyProxy配置简单笔记 ](http://cstriker1407.info/blog/firefox-foxyproxy/ "火狐FoxyProxy配置简单笔记 ") 49 | 50 | 51 | 52 | [最佳(與最糟)的廣告阻擋器](https://zh.vpnmentor.com/blog/%e6%9c%80%e4%bd%b3%ef%bc%88%e8%88%87%e6%9c%80%e7%b3%9f%ef%bc%89%e7%9a%84%e5%bb%a3%e5%91%8a%e9%98%bb%e6%93%8b%e5%99%a8/) 53 | 54 | 首选Adblock 它比Adblock Plus更好 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /运维/硬件选购之:内存解析选购.md: -------------------------------------------------------------------------------- 1 | # 笔记本内存解析 2 | 3 | 4 | 5 | 6 | 7 | ## 电脑内存插槽左边写着“DIMM1”和“DIMM2”的字样,请问是什么意思? 8 | 9 | >问题回答时间:2008-8-17 10 | 11 | DIMM(Dual Inline Memory Module,双列直插内存模块)与SIMM相当类似,不同的只是DIMM的金手指两端不像SIMM那样是互通的,它们各自独立传输信号,因此可以满足更多数据信号的传送需要。同样采用DIMM,SDRAM 的接口与DDR内存的接口也略有不同,SDRAM DIMM为168Pin DIMM结构,金手指每面为84Pin,金手指上有两个卡口,用来避免插入插槽时,错误将内存反向插入而导致烧毁;DDR DIMM则采用184Pin DIMM结构,金手指每面有92Pin,金手指上只有一个卡口。卡口数量的不同,是二者最为明显的区别。DDR2 DIMM为240pin DIMM结构,金手指每面有120Pin,与DDR DIMM一样金手指上也只有一个卡口,但是卡口的位置与DDR DIMM稍微有一些不同,因此DDR内存是插不进DDR2 DIMM的,同理DDR2内存也是插不进DDR DIMM的,因此在一些同时具有DDR DIMM和DDR2 DIMM的主板上,不会出现将内存插错插槽的问题。 12 | 13 | ## 笔记本内存兼容问题 14 | [笔记本内存可以通用吗?](http://www.pc841.com/wenda/15370.html "2013-07-11") 15 | 对于内存条是否通用包含两种情况,一种的内存与内存之间的兼容问题,另外一种是主板与内存的兼容问题。 16 | 17 | 1、两条笔记本内存通用问题 18 | 如果是给笔记本再增加一条内存,则最好的保证购买的内存条在内存品牌、内存频率、内存类型(DDR2或者DDR3)以及内存容量大小必须相同,这样才可以做到最好的两条内存相兼容。当然有些时候不同品牌相同规格内存也可以做到兼容,但也有意外,因此如果是组建双内存的话,最好是保证每个内存参数都相同最佳。 19 | 20 | 2、内存与主板的兼容问题--也就是将老的小内存换成新的大内存 21 | 如果是为笔记本打算换一条新内存条,那么需要注意的是笔记本主板支持最大内存容量、内存类型(DDR2或者DDR3)支持的内存最高频率是多少,对于品牌则基本无关紧要。 22 | 23 | 如何组建双通道内存 怎么看内存双通道 、内存频率怎么看? 24 | 25 | 26 | [内存兼容](http://ask.zol.com.cn/q/34473.html "2012-12-28") 27 | 笔记本通常都是有两条内存卡槽的,插上两条相同的的内存或者兼容的内存后是可以自动组建双通道模式的。 28 | 组建双通道内存的时候容量问题已经不算什么大问题了,两条一样的内存放在一起就是对称双通道模式,两条不一样的内存也可以组建非对称双通道模式的内存。 29 | 30 | [什么是非对称双通道模式](http://ask.zol.com.cn/q/20651.html "2012-03-05") 31 | 保留现在笔记本上的2GB内存,添加一条4GB的内存,组建非对称双通道模式(弹性双通道),这样也是双通道的一样,其中2GB的内存条全部工作在双通道模式下,4GB的内存条容量中有2GB工作在双通道模式下,另外的工作在普通模式。这样是考虑在不浪费原装的2GB内存条的情况下,达到的容量最大话,同时使用双通道模式的方案。 32 | 33 | ![](http://imgk.zol.com.cn/ask/18/17561_39c675b878a53ad9bcb1585da00110a9.jpg) 34 | ![667MHz×2=1333MHz](http://imgk.zol.com.cn/ask/18/17559_b8628f337c79e9db7b87f7358cbfddc6.jpg) 35 | 36 | 37 | [如何组建双通道内存](http://ask.zol.com.cn/q/11220.html "2011") 38 | 39 | 40 | 几乎都是频率相同的 41 | 42 | 43 | 44 | ## DDR3 45 | [DDR3](http://baike.baidu.com/view/529890.htm) 46 | DDR3是一种计算机内存规格。它属于SDRAM家族的内存产品 47 | 48 | 49 | ## DDR4 50 | [DDR4](http://baike.baidu.com/view/1372008.htm) 51 | >**DDR4与以前的内存接口不兼容,需要主板支持DDR4内存类型!** 52 | 53 | DDR,又称双倍速率SDRAM (Double Data Rate SDRAM )。 DDR SDRAM 是一种高速CMOS动态随机访问的内存。美国JEDEC 的固态技术协会于2000 年6 月公布了双数据速率同步动态存储器(DDR SDRAM)规范。 54 | 55 | 最新消息显示,DDR4内存会于2014年首先用于服务器领域,然后再过一年半左右才进入桌面。 56 | 57 | 58 | -------------------------------------------------------------------------------- /运维/硬件选购之:鼠标键盘.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ## 鼠标键盘 6 | 7 | 大小:我的有线双飞燕:包装体积: 150*110*45mm 8 | 坑人的清华同方无线充电鼠标,大小: 98*60*27 9 | 10 | [罗技优联技术](http://www.logitech.com.cn/zh-cn/promotions/6072) 11 | [罗技 优联无线鼠标键盘接收器](https://detail.tmall.com/item.htm?spm=a230r.1.14.9.86mxzO&id=45274372101&cm_id=140105335569ed55e27b&abbucket=14&skuId=85091498150),单通道和6通道优联接收器。支持优联的鼠标键盘...。可能还需要安装相关软件。 12 | 13 | 静音、无线、便携、布局、系统兼容。充电电池。 14 | 15 | 分辨率:1000DPI以上; 不会出现移位现象。移动卡、抖动、跳标、不适应鼠标垫、突慢、突快。 16 | 17 | 抗干扰的5G无线传输 18 | 无线技术:5GHZ,能够避免2.4G无线信道,避免wifi蓝牙的干扰。 19 | 5.8Ghz(简称5G)频道进行信号传输,它工作在比2.4G高的频道上,不会受到2.4G频道信号的干扰,这样可以让您的鼠标远离2.4G鼠标、路由器、微波炉等信号的干扰。为您提供稳定、完整的信号。 20 | 21 | 22 | NANO迷你接收器。 23 | 4D滚轮(上下左右四个方向) 24 | 25 | 26 | 传统光孔: --> 激光光孔: --> 针光光孔 27 | 28 | 29 | ![](https://img.alicdn.com/imgextra/i2/682232656/TB2o12ViFXXXXafXpXXXXXXXXXX_!!682232656.jpg) 30 | ![](https://img.alicdn.com/imgextra/i3/682232656/TB2spfQcCBjpuFjSsplXXa5MVXa_!!682232656.jpg) 31 | 32 | 鼠标托,键盘托。 33 | 34 | 35 | 36 | 37 | 双飞燕: 38 | 39 | 等待双飞燕的5G无线技术产品 -------------------------------------------------------------------------------- /运维/网络/BT种子.md: -------------------------------------------------------------------------------- 1 | # BT种子 2 | 3 | 4 | 5 | 看到几篇介绍BT种子的文章写的挺好,所以想记录一下。 6 | 7 | 8 | 9 | 如何添加 Trackers 来加速下载? 10 | 11 | 什么是DHT? 12 | 13 | 14 | 15 | [TrackersListCollection/README-ZH.md at master · XIU2/TrackersListCollection](https://github.com/XIU2/TrackersListCollection/blob/master/README-ZH.md) 16 | 17 | [XIU2/TrackersListCollection: 🎈Updated daily! A list of popular public BitTorrent trackers. / 每天更新!全网热门公共 BitTorrent Tracker 列表!](https://github.com/XIU2/TrackersListCollection) 18 | 19 | [【回形针PaperClip】别再问我什么是 BT 种子_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili](https://www.bilibili.com/video/av57748098/) 20 | 21 | [ngosang/trackerslist: Updated list of public BitTorrent trackers](https://github.com/ngosang/trackerslist) 22 | 23 | -------------------------------------------------------------------------------- /运维/网络/TCP-IP协议.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | IP地址 12 | 13 | [网络地址为172.16.0.0,采用子网掩码255.255.224.0 .以下说法正确的是()_网络基础专项练习_牛客网](https://www.nowcoder.com/test/question/done?tid=10072039&qid=44637#summary) 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /运维/网络/网络工具.md: -------------------------------------------------------------------------------- 1 | # 网络工具 2 | 3 | 4 | ## 开源的网络封包嗅探和分析工具 Wireshark 5 | 主要用途: 截取网络数据并提供数据包详细分析结果。使用者可以在数据包里查询其它程序收发的内容。 6 | 7 | ```shell 8 | sudo apt-get install wireshark 9 | ``` 10 | 11 | 但是建议编译最新版。 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /运维/网络/翻墙fq二:相关工具介绍.md: -------------------------------------------------------------------------------- 1 | # 相关工具介绍和收录 2 | 3 | 4 | 5 | - Clash:[Dreamacro/clash: A rule-based tunnel in Go.](https://github.com/Dreamacro/clash) Clash Windows版本 [Clash for Windows · Clash for Windows](https://docs.cfw.lbyczf.com/) 6 | 7 | - v2ray:[v2ray/v2ray-core: A platform for building proxies to bypass network restrictions.](https://github.com/v2ray/v2ray-core) V2Ray 的使用手册 [Project V · Project V 官方网站](https://www.v2ray.com/) 8 | 9 | 10 | 11 | ss 12 | 13 | 14 | 15 | w* 16 | 17 | -------------------------------------------------------------------------------- /运维/虚拟机之:KVM.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fandean/notes/78bdc7db6ed90e3db802c185bee65d5378254a8f/运维/虚拟机之:KVM.md -------------------------------------------------------------------------------- /运维/虚拟机之:Vagrant工具.md: -------------------------------------------------------------------------------- 1 | ## Vagrant虚拟机管理工具 2 | 3 | 4 | 5 | > 各种虚拟机: [4 Free Virtualization Software Solutions For Windows](https://www.maketecheasier.com/4-free-virtualization-software-solutions-for-windows/ "4 Free Virtualization Software Solutions For Windows") 6 | 7 | Vagrant虚拟机管理工具 8 | 9 | 简单地说,Vagrant让我们可以通过代码的方式快速地、可重复地创建针对不同虚拟环境的虚拟机,包括Virtualbox、AWS、Docker等。它使得我们可以一次性地、自动创建多个环境相同的虚拟机,对于软件开发和测试尤其有用。 10 | 11 | 12 | 13 | 14 | 15 | 这有两套视频:无需登录 16 | 17 | - [Vagrant:虚拟机管理 - 宁皓网](https://ninghao.net/course/1569) 18 | - [使用 Ansible - 宁皓网](https://ninghao.net/course/2580) 19 | - [Ansible:自动化配置 - 宁皓网](https://ninghao.net/course/4032) 20 | 21 | 22 | 23 | [Vagrant入门 - 无知者云 - 博客园](http://www.cnblogs.com/davenkin/p/vagrant-virtualbox.html "Vagrant入门 - 无知者云 - 博客园") 24 | 25 | [Vagrant介绍-从使用到放弃再到掌握完全指南 - 宋净超的博客|Developer Advocate on Cloud Native|jimmysong.io](https://jimmysong.io/posts/vagrant-intro/ "Vagrant介绍-从使用到放弃再到掌握完全指南 - 宋净超的博客|Developer Advocate on Cloud Native|jimmysong.io") 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /运维/虚拟机之:其它虚拟机.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | > 来源: 4 | > 5 | > 你可以在任何 PC 模拟器中启动 FreeDOS,包括 VirtualBox、QEMU、GNOME Boxes、PCem 和 Bochs。但我喜欢 [QEMU](https://www.qemu.org/) 的简单性。QEMU 控制台允许你以 PPM 格式转储屏幕,这非常适合抓取截图来包含在书中。 6 | > 7 | > [6 个用于写书的开源工具](https://linux.cn/article-10187-1.html "分享|6 个用于写书的开源工具") 8 | 9 | 10 | 11 | 12 | 13 | ## QEMU 14 | 15 | [QEMU](https://www.qemu.org/ "QEMU") 16 | 17 | 18 | 19 | 20 | 21 | ## GNOME Boxs 22 | 23 | 24 | 25 | Boxes是一个应用程序,可让您访问本地或远程运行的虚拟机。它还允许您连接到远程计算机的显示器。 26 | 27 | 28 | 29 | [Boxes](https://help.gnome.org/users/gnome-boxes/stable/ "Boxes") 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /运维/虚拟机之:虚拟机格式互转.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | [利用VBoxManage对虚拟机格式vdi、vmdk、vhd进行互转 - - ITeye博客](http://maincoolbo.iteye.com/blog/2264748 "利用VBoxManage对虚拟机格式vdi、vmdk、vhd进行互转 - - ITeye博客") 8 | 9 | [从VMware迁移到Hyper-V平台解决方案(2)-挥墨的书童-51CTO博客](http://blog.51cto.com/shutong/1561815 "从VMware迁移到Hyper-V平台解决方案(2)-挥墨的书童-51CTO博客") 10 | 11 | [利用VBoxManage对虚拟机格式vdi、vmdk、vhd进行互转 - - ITeye博客](http://maincoolbo.iteye.com/blog/2264748 "利用VBoxManage对虚拟机格式vdi、vmdk、vhd进行互转 - - ITeye博客") 12 | 13 | 14 | 15 | 微软虚拟机转换器 (MVMC) ,此方案不支持转换非Windows系统。 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /运维/部署工具.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ## 部署Server 6 | 7 | >用 Docker 来部署 server 的工程师鄙视用 Ansible 或 Puppet 来部署 server 的工程师,用 Ansible 或 Puppet 来部署 server 的工程师鄙视用 Fabric 来部署 server 的工程师,用 Fabric 来部署 server 的工程师鄙视手动 SSH 的工程师。 8 | 9 | 10 | ### Docker 11 | 12 | Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 13 | 14 | docker的典型场景: 15 | 16 | - 使应用的打包与部署自动化 17 | - 创建轻量、私密的PAAS环境 18 | - 使连续的集成/部署、测试自动化 19 | - 部署、衡量网页app、数据库和后台服务 20 | 21 | > 只能運行于Linux 64 bit 22 | 23 | 24 | ### Puppet 25 | [Puppet使用方法总结](http://dongxicheng.org/cluster-managemant/puppet/) 26 | [Puppet中文wiki](http://puppet.wikidot.com/) 27 | puppet是一个开源的软件自动化配置和部署工具,它使用简单且功能强大 28 | 29 | 30 | 31 | ### Ansible 32 | [Ansible中文权威指南](http://www.ansible.com.cn/) 33 | 34 | 35 | 36 | ### Fabric 37 | [python fabric实现远程操作和部署](http://blog.csdn.net/wklken/article/details/8719541/) 38 | 39 | 40 | --------------------------------------------------------------------------------