squid的简单介绍

当前无法进行代理。原因排查中 翻译文档:http://zyan.cc/book/squid/index.html 特此感谢 squid的概念 squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。 squid代理的作用 通过缓存的方式为用户提供Web访问加速 对用户的Web访问进行过滤控制 工作流程 当代理服务器中有客户端需要的数据时: a. 客户端向代理服务器发送数据请求; b. 代理服务器检查自己的数据缓存; c. 代理服务器在缓存中找到了用户想要的数据,取出数据; d. 代理服务器将从缓存中取得的数据返回给客户端。 当代理服务器中没有客户端需要的数据时: 客户端向代理服务器发送数据请求; 代理服务器检查自己的数据缓存; 代理服务器在缓存中没有找到用户想要的数据; 代理服务器向Internet 上的远端服务器发送数据请求; 远端服务器响应,返回相应的数据; 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。 Squid代理服务器工作在TCP/IP应用层 Squid各种代理的定义 正向代理 标准的代理缓冲服务器 一个标准的代理缓冲服务被用于缓存静态的网页到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指名代理服务器的IP地址和端口号。客户端上网时,每次都把请求发送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发送给客户端浏览器。 透明代理缓冲服务器 透明代理缓冲服务器和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因此不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。 反向代理 反向代理缓冲器 反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发给用户。这种方式通过降低了WEB服务器的请求数从而降低了WEB服务器的负载。 正向代理与反向代理的区别 概念 正向代理:对于原始服务器而言,就是客户端的代言人 反向代理:对于客户端而言,就像是原始服务器 用途 正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。并且适用于目标服务器白名单访问的问题。 反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。 安全性 正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。 反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。 Squid主要组成部分 服务名:squid 主程序:/usr/sbin/squid 配置目录:/etc/squid 主配置文件:/etc/squid/squid.conf 监听tcp端口号:3128 默认访问日志文件:/var/log/squid/access.log squid常用配置选项 […]

WSL2&VMWare

VMWare 16开始两者方能共存。之前需要二选一。同时受影响的还有模拟器 微软官方文档说打开 wsl2 需要执行命令: Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform 所以临时禁用 wsl2 使用 Disable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform 重启之后,vm 满血复活!! 然鹅,wsl2 他死了。。。想用的话再切回去吧。。。 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart wsl –set-default-version 2 看起来只能用虚拟机的时候开这个命令,不用的时候关掉了,这真是个 good idea。

Java Hotspot G1 GC的一些关键技术(转)

转:https://tech.meituan.com/2016/09/23/g1.html 前言 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相信熟悉JVM的同学们都不会对它感到陌生。在JDK 9中,G1被提议设置为默认垃圾收集器(JEP 248)。在官网中,是这样描述G1的: The Garbage-First (G1) collector is a server-style garbage collector, targeted for multi-processor machines with large memories. It meets garbage collection (GC) pause time goals with a high probability, while achieving high throughput. The G1 garbage collector is fully supported in Oracle JDK 7 update 4 […]

Java中9种常见的CMS GC问题分析与解决

转自:美团技术团队 1. 写在前面 | 本文主要针对 Hotspot VM 中“CMS + ParNew”组合的一些使用场景进行总结。重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省略较多。另外,本文专业术语较多,有一定的阅读门槛,如未介绍清楚,还请自行查阅相关材料。 | 本文总字数 2 万左右(不包含代码片段),整体阅读时间约 60min ,文章较长,可以选择你感兴趣的场景进行研究。 **** 1.1 引言 自 Sun 发布 Java 语言以来,开始使用 GC 技术来进行内存自动管理,避免了手动管理带来的悬挂指针(Dangling Pointer)问题,很大程度上提升了开发效率,从此 GC 技术也一举成名。GC 有着非常悠久的历史,1960 年有着“Lisp 之父”和“人工智能之父”之称的 John McCarthy 就在论文中发布了 GC 算法,60 年以来, GC 技术的发展也突飞猛进,但不管是多么前沿的收集器也都是基于三种基本算法的组合或应用,也就是说 GC 要解决的根本问题这么多年一直都没有变过。笔者认为,在不太远的将来, GC 技术依然不会过时,比起日新月异的新技术,GC 这门古典技术更值得我们学习。 那么,GC 问题处理能力能不能系统性掌握?一些影响因素都是互为因果的问题该怎么分析?比如一个服务 RT 突然上涨,有 GC 耗时增大、线程 Block 增多、慢查询增多、CPU 负载高四个表象,到底哪个是诱因?如何判断 GC […]

Spring 表达式语言 (SpEL)

转: 前言SpEL(Spring Expression Language),即Spring表达式语言,是比JSP的EL更强大的一种表达式语言。为什么要总结SpEL,因为它可以在运行时查询和操作数据,尤其是数组列表型数据,因此可以缩减代码量,优化代码结构。个人认为很有用。 一. 用法SpEL有三种用法,一种是在注解@Value中;一种是XML配置;最后一种是在代码块中使用Expression。 @Value 配置 Expression 二. 表达式语法 字面量赋值 注: 1)字面量赋值必须要和对应的属性类型兼容,否则会报异常。 2)一般情况下我们不会使用 SpEL字面量赋值,因为我们可以直接赋值。 引用Bean、属性和方法(必须是public修饰的) 运算符 3.1算术运算符:+,-,*,/,%,^ 3.2字符串连接符:+ 3.3比较运算符:<(<),>(>),==,<=,>=,lt,gt,eq,le,ge 3.4逻辑运算符:and,or,not,&&(&&),||,! 3.5条件运算符:?true:false 3.6正则表达式:matches 调用静态方法或静态属性通过 T() 调用一个类的静态方法,它将返回一个 Class Object,然后再调用相应的方法或属性: 获取容器内的变量,可以使用“#bean_id”来获取。有两个特殊的变量,可以直接使用。 this 使用当前正在计算的上下文 root 引用容器的root对象 方法调用与Java代码没有什么区别,可见上面的例子可以自定义方法,如下: “registerFunction”和“setVariable”都可以注册自定义函数,但是两个方法的含义不一样,推荐使用“registerFunction”方法注册自定义函数。 Elvis运算符是三目运算符的特殊写法,可以避免null报错的情况 安全保证为了避免操作对象本身可能为null,取属性时报错,定义语法语法: “对象?.变量|方法” 直接使用java代码new/instance of此方法只能是java.lang 下的类才可以省略包名 集合定义使用“{表达式,……}”定义List,如“{1,2,3}” 对于字面量表达式列表,SpEL会使用java.util.Collections.unmodifiableList 方法将列表设置为不可修改。 对于列表中只要有一个不是字面量表达式,将只返回原始List,//不会进行不可修改处理,也就是可以修改 集合访问SpEL目前支持所有集合类型和字典类型的元素访问 集合修改可以使用赋值表达式或Expression接口的setValue方法修改; 集合选择通过一定的规则对及格进行筛选,构造出另一个集合 语法:“(list|map).?[选择表达式]”选择表达式结果必须是boolean类型,如果true则选择的元素将添加到新集合中,false将不添加到新集合中 上面的例子从数字的collection集合中选出数字大于2的值,重新组装成了一个新的集合 根据集合中的元素中通过选择来构造另一个集合,该集合和原集合具有相同数量的元素 语法:“SpEL使用“(list|map).![投影表达式]” Bean引用: SpEL支持使用“@”符号来引用Bean,在引用Bean时需要使用BeanResolver接口实现来查找Bean,Spring提供BeanFactoryResolver实现; […]

Google搜索语法

黑客可能利用Google去搜索精准敏感的信息并占为己有;创业者可能利用Google去搜索更有用的商业信息;产品经理可以利用Google去抓住用户的痛点;销售可能利用Google去搜索客服的基本信息;而我们当熟悉了Google的搜索技巧后,就能在以后的生活中更好的保护自己的隐私。 说了这么多,不知道小伙伴们之前了解过搜索引擎语法吗?如果你做过搜索引擎(Apache Lucene)开发,肯定会很熟悉这些语法知识的,搜索引擎语法实质上是由搜索引擎领域特定语言DSL(Domain Specific Language)所支持的,只是搜索引擎具体语法的实现又对DSL进行了通俗化处理,毕竟使用搜索引擎的不全是程序员;一般来说,每个搜索引擎都有一些它特殊的语法规则,但是大部分语法规则是一样的。 掌握这些语法规则,能帮助我们最快最准确的查找到最有用的信息。 1. 基础知识 在搜索词组和短语时,我们用双引号包裹起来;搜索之前,我们需要提炼出你要搜索的关键字,这样便于搜索引擎能够提供更加准确的信息。 说明:特殊字符与搜索关键之间不能有空格。 AND:用于查询包含多个关键字。 +:强制搜索它后面的词语。 注:如果需要查询包含and的词组,只需把该词组用双引号包裹起来,如“”hot and red””。 NOT: 与AND操作符相反,表示忽略一个词。 –: 与NOT操作符意义一样。 OR:搜索一个或者另外一个关键字。 |: 与OR操作符意义一样。 注:Google对括号并不“感冒”。 2. 搜索语法 基本语法如下: 3. 常见操作符 intitle与allintitle intitle主要用于查询网页顶部显示的文本;allintitle显示的结果更为准确。如:intitle:xxx allintext 在网页内容里查询搜索项。allintext:”xxx” inurl与allinurl 在url中查找关键字。如:inurl:.php?id=xxx site 搜索特定的站点。如:site:www.xxx.com filetype 指定搜索的文件类型。如:filetype:pdf Java编程思想 link 用于搜索链接到一个网站或者URL的链接。如:link:www.xxx.com inanchor 在链接的描述文本中查找文本。inanchor:”忆蓉之心” cache 显示网页的缓存版本。cache:www.xxx.com 注:如果cache传递一个无效的URL或者主机名,google会把它当作一个词组来搜索。 numrange 查找某一范围内的数字。如:numrange:最小数-最大数 daterange 查找某个特定日期范围内发布的网页。如:daterange:公历1-公历2 注:公历计算公式[年(I),月(J),日(K)] info 显示google的摘要信息。如果传递一个无效的主机名或者url,google会把它当作一个词组来搜索。如:info:www.xxx.com related 显示相关站点。如果传递一个无效的主机名或者URL,google会把它当做一个词组来搜索。如:related:www.xxx.com […]

SpringBoot项目打部署Jar,代码依赖分离

转: # 概要说明 随着Spring Boot的流行,大家体验到只需构建输出一个jar文件,然后只需一个java -jar命令就能部署运行应用的爽快。常见一些单体应用随着项目规模的扩展单个jar文件的大小越来越大,动辄两三百MB。如果再引入微服务架构,动辄一二十个微服务,所有模块jar加起来整个系统光部署文件就一两个GB。 一个系统一旦上线运行,无论新需求迭代还是Bug修复,免不了需要做部署更新,尤其对于一些交付类型项目,首次部署或异地更新, 动不动就需要传输几百MB或几个GB的部署文件,确实是一个让人头疼的问题。 可以想象一下,线上系统发现一个紧急严重Bug捅到了主管那里,交代马上紧急修复解决,研发同事火速分析排查分分钟搞定提交代码并完成构建打包并交付给运维。过一会领导着急上火来过问问题更新解决了吗?运维只能很尴尬的回答:还没呢,部署包文件比较大,正在上传有点慢… 一听领导就火了,就改了几行代码,部署更新为啥要上传几百MB的文件呢?难道没有办法优化一下吗? 遇到这样的情况,建议你往下看,或许能找到你想要的答案。 本文内容包括: 如何把一两百MB的单一Spring Boot jar文件,分离为依赖组件lib目录和一个业务jar来进行部署,优化单个jar文件大小到一两百KB。。 如何把一二十个微服务高度重叠的依赖组件合并到单一lib目录和多个一两百KB的业务jar来进行部署,优化整个项目部署文件大小从一两个GB大小到两三百MB。 本文内容不包括: 不包括进行Spring Boot配置文件分离相关,一般简单采用通过指定active profile从外部yaml配置文件覆盖jar文件中配置即可或是采用Nacos等配置服务模式。 不包括Maven最佳实践用法,列入样例工程中出于演示方便的考虑比如把一些本应放到各个Boot模块特定的配置声明直接放到顶层的parent中定义,请注意按实际情况优化调整使用。 不包括可执行jar的运行模式支持参考,文中实现方式主要面向java -jar运行模式。 # 瘦身打怪升级过程 ** ** Level 0:常规的Fat Jar构建 参考项目目录:package-optimize-level0 主要配置: <build>        <finalName>${project.artifactId}</finalName>        <!–   特别注意:   项目仅仅是为了演示配置方便,直接在parent的build部分做了插件配置和运行定义。   但是实际项目中需要把这些定义只放到spring boot模块项目(可优化使用pluginManagement形式),避免干扰其他util、common等模块项目   –>        <plugins>   […]

lWoHvYe 无悔,专一